├── .editorconfig ├── .github └── workflows │ └── test.yml ├── .gitignore ├── .npmignore ├── CREDITS.md ├── README.md ├── package-lock.json ├── package.json ├── src └── memoize-decorator.ts ├── test ├── karma.config.js └── specs │ └── memoize-decorator.spec.ts ├── tsconfig.json └── tslint.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = tab 7 | indent_size = 4 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.md] 13 | max_line_length = 0 14 | trim_trailing_whitespace = false 15 | 16 | [package.json] 17 | indent_style = space 18 | indent_size = 2 19 | 20 | [*.yml] 21 | indent_style = space 22 | indent_size = 2 23 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: Test 4 | 5 | # Controls when the action will run. 6 | on: 7 | # Triggers the workflow on push or pull request events but only for the master branch 8 | push: 9 | branches: [ master ] 10 | pull_request: 11 | branches: [ master ] 12 | 13 | # Allows you to run this workflow manually from the Actions tab 14 | workflow_dispatch: 15 | 16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 17 | jobs: 18 | # This workflow contains a single job called "build" 19 | build: 20 | # The type of runner that the job will run on 21 | runs-on: ubuntu-latest 22 | 23 | strategy: 24 | matrix: 25 | node-version: [14.x, 16.x, 18.x] 26 | 27 | # Steps represent a sequence of tasks that will be executed as part of the job 28 | steps: 29 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 30 | - uses: actions/checkout@v2 31 | - name: Use Node.js ${{ matrix.node-version }} 32 | uses: actions/setup-node@v1 33 | with: 34 | node-version: ${{ matrix.node-version }} 35 | - run: npm install 36 | - run: npm run build --if-present 37 | - run: npm run eslint --if-present 38 | - run: npm test 39 | env: 40 | CI: true 41 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | npm-debug.log 4 | coverage 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darrylhodgins/typescript-memoize/59711602aad22327edcf038f862c2acf1e6e1f83/.npmignore -------------------------------------------------------------------------------- /CREDITS.md: -------------------------------------------------------------------------------- 1 | # Credits 2 | 3 | * `typescript-memoize` builds upon [David Sherret](https://github.com/dsherret)'s [memoize-decorator Gist](https://gist.github.com/dsherret/cbe661faf7e3cfad8397). 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # typescript-memoize 2 | 3 | [![npm](https://img.shields.io/npm/v/typescript-memoize.svg)](https://www.npmjs.com/package/typescript-memoize) 4 | [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/darrylhodgins/typescript-memoize/master/LICENSE) 5 | ![Test](https://github.com/darrylhodgins/typescript-memoize/workflows/Test/badge.svg) 6 | 7 | A memoize decorator for Typescript. 8 | 9 | ## Installation 10 | 11 | ``` 12 | npm install --save typescript-memoize 13 | ``` 14 | 15 | ## Usage: 16 | 17 | ```typescript 18 | @Memoize(hashFunction?: (...args: any[]) => any) 19 | ``` 20 | 21 | You can use it in four ways: 22 | 23 | * Memoize a `get` accessor, 24 | * Memoize a method which takes no parameters, 25 | * Memoize a method which varies based on its first parameter only, 26 | * Memoize a method which varies based on some combination of parameters 27 | 28 | You can call memoized methods *within* the same class, too. This could be useful if you want to memoize the return value for an entire data set, and also a filtered or mapped version of that same set. 29 | 30 | ## Memoize a `get` accessor, or a method which takes no parameters 31 | 32 | These both work the same way. Subsequent calls to a memoized method without parameters, or to a `get` accessor, always return the same value. 33 | 34 | I generally consider it an anti-pattern for a call to a `get` accessor to trigger an expensive operation. Simply adding `Memoize()` to a `get` allows for seamless lazy-loading. 35 | 36 | ```typescript 37 | import {Memoize,MemoizeExpiring} from 'typescript-memoize'; 38 | 39 | class SimpleFoo { 40 | 41 | // Memoize a method without parameters 42 | @Memoize() 43 | public getAllTheData() { 44 | // do some expensive operation to get data 45 | return data; 46 | } 47 | 48 | // Memoize a method and expire the value after some time in milliseconds 49 | @MemoizeExpiring(5000) 50 | public getDataForSomeTime() { 51 | // do some expensive operation to get data 52 | return data; 53 | } 54 | 55 | // Memoize a getter 56 | @Memoize() 57 | public get someValue() { 58 | // do some expensive operation to calculate value 59 | return value; 60 | } 61 | 62 | } 63 | ``` 64 | 65 | And then we call them from somewhere else in our code: 66 | 67 | ```typescript 68 | let simpleFoo = new SimpleFoo(); 69 | 70 | // Memoizes a calculated value and returns it: 71 | let methodVal1 = simpleFoo.getAllTheData(); 72 | 73 | // Returns memoized value 74 | let methodVal2 = simpleFoo.getAllTheData(); 75 | 76 | // Memoizes (lazy-loads) a calculated value and returns it: 77 | let getterVal1 = simpleFoo.someValue; 78 | 79 | // Returns memoized value 80 | let getterVal2 = simpleFoo.someValue; 81 | 82 | ``` 83 | 84 | ## Memoize a method which varies based on its first parameter only 85 | 86 | Subsequent calls to this style of memoized method will always return the same value. 87 | 88 | I'm not really sure why anyone would use this approach to memoize a method with *more* than one parameter, but it's possible. 89 | 90 | ```typescript 91 | import {Memoize} from 'typescript-memoize'; 92 | 93 | class ComplicatedFoo { 94 | 95 | // Memoize a method without parameters (just like the first example) 96 | @Memoize() 97 | public getAllTheData() { 98 | // do some expensive operation to get data 99 | return data; 100 | } 101 | 102 | // Memoize a method with one parameter 103 | @Memoize() 104 | public getSomeOfTheData(id: number) { 105 | let allTheData = this.getAllTheData(); // if you want to! 106 | // do some expensive operation to get data 107 | return data; 108 | } 109 | 110 | // Memoize a method with multiple parameters 111 | // Only the first parameter will be used for memoization 112 | @Memoize() 113 | public getGreeting(name: string, planet: string) { 114 | return 'Hello, ' + name + '! Welcome to ' + planet; 115 | } 116 | 117 | } 118 | ``` 119 | 120 | We call these methods from somewhere else in our code: 121 | 122 | ```typescript 123 | let complicatedFoo = new ComplicatedFoo(); 124 | 125 | // Returns calculated value and memoizes it: 126 | let oneParam1 = complicatedFoo.getSomeOfTheData(); 127 | 128 | // Returns memoized value 129 | let oneParam2 = complicatedFoo.getSomeOfTheData(); 130 | 131 | // Memoizes a calculated value and returns it: 132 | // 'Hello, Darryl! Welcome to Earth' 133 | let greeterVal1 = complicatedFoo.getGreeting('Darryl', 'Earth'); 134 | 135 | // Ignores the second parameter, and returns memoized value 136 | // 'Hello, Darryl! Welcome to Earth' 137 | let greeterVal2 = complicatedFoo.getGreeting('Darryl', 'Mars'); 138 | ``` 139 | 140 | ## Memoize a method which varies based on some combination of parameters 141 | 142 | Pass in a `hashFunction` which takes the same parameters as your target method, to memoize values based on all parameters, or some other custom logic 143 | 144 | ```typescript 145 | import {Memoize} from 'typescript-memoize'; 146 | 147 | class MoreComplicatedFoo { 148 | 149 | // Memoize a method with multiple parameters 150 | // Memoize will remember values based on keys like: 'name;planet' 151 | @Memoize((name: string, planet: string) => { 152 | return name + ';' + planet; 153 | }) 154 | public getBetterGreeting(name: string, planet: string) { 155 | return 'Hello, ' + name + '! Welcome to ' + planet; 156 | } 157 | 158 | // Memoize based on some other logic 159 | @Memoize(() => { 160 | return new Date(); 161 | }) 162 | public memoryLeak(greeting: string) { 163 | return greeting + '!!!!!'; 164 | } 165 | 166 | // Memoize also accepts parameters via a single object argument 167 | @Memoize({ 168 | expiring: 10000, // milliseconds 169 | hashFunction: (name: string, planet: string) => { 170 | return name + ';' + planet; 171 | } 172 | }) 173 | public getSameBetterGreeting(name: string, planet: string) { 174 | return 'Hello, ' + name + '! Welcome to ' + planet; 175 | } 176 | 177 | } 178 | ``` 179 | 180 | We call these methods from somewhere else in our code. By now you should be getting the idea: 181 | 182 | ```typescript 183 | let moreComplicatedFoo = new MoreComplicatedFoo(); 184 | 185 | // 'Hello, Darryl! Welcome to Earth' 186 | let greeterVal1 = moreComplicatedFoo.getBetterGreeting('Darryl', 'Earth'); 187 | 188 | // 'Hello, Darryl! Welcome to Mars' 189 | let greeterVal2 = moreComplicatedFoo.getBetterGreeting('Darryl', 'Mars'); 190 | 191 | // Fill up the computer with useless greetings: 192 | let greeting = moreComplicatedFoo.memoryLeak('Hello'); 193 | 194 | ``` 195 | 196 | ## Memoize accepts one or more "tag" strings that allow the cache to be invalidated on command 197 | 198 | Passing an array with one or more "tag" strings these will allow you to later clear the cache of results associated with methods or the `get`accessors using the `clear()` function. 199 | 200 | The `clear()` function also requires an array of "tag" strings. 201 | 202 | ```typescript 203 | import {Memoize} from 'typescript-memoize'; 204 | 205 | class ClearableFoo { 206 | 207 | // Memoize accepts tags 208 | @Memoize({ tags: ["foo", "bar"] }) 209 | public getClearableGreeting(name: string, planet: string) { 210 | return 'Hello, ' + name + '! Welcome to ' + planet; 211 | } 212 | 213 | 214 | // Memoize accepts tags 215 | @Memoize({ tags: ["bar"] }) 216 | public getClearableSum(a: number, b: number) { 217 | return a + b; 218 | } 219 | 220 | } 221 | ``` 222 | 223 | We call these methods from somewhere else in our code. 224 | 225 | ```typescript 226 | import {clear} from 'typescript-memoize'; 227 | 228 | let clearableFoo = new ClearableFoo(); 229 | 230 | // 'Hello, Darryl! Welcome to Earth' 231 | let greeterVal1 = clearableFoo.getClearableGreeting('Darryl', 'Earth'); 232 | 233 | // Ignores the second parameter, and returns memoized value 234 | // 'Hello, Darryl! Welcome to Earth' 235 | let greeterVal2 = clearableFoo.getClearableGreeting('Darryl', 'Mars'); 236 | 237 | // '3' 238 | let sum1 = clearableFoo.getClearableSum(2, 1); 239 | 240 | // Ignores the second parameter, and returns memoized value 241 | // '3' 242 | let sum2 = clearableFoo.getClearableSum(2, 2); 243 | 244 | clear(["foo"]); 245 | 246 | // The memoized values are cleared, return a new value 247 | // 'Hello, Darryl! Welcome to Mars' 248 | let greeterVal3 = clearableFoo.getClearableGreeting('Darryl', 'Mars'); 249 | 250 | 251 | // The memoized value is not associated with 'foo' tag, returns memoized value 252 | // '3' 253 | let sum3 = clearableFoo.getClearableSum(2, 2); 254 | 255 | clear(["bar"]); 256 | 257 | // The memoized values are cleared, return a new value 258 | // 'Hello, Darryl! Welcome to Earth' 259 | let greeterVal4 = clearableFoo.getClearableGreeting('Darryl', 'Earth'); 260 | 261 | 262 | // The memoized values are cleared, return a new value 263 | // '4' 264 | let sum4 = clearableFoo.getClearableSum(2, 2); 265 | 266 | ``` 267 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typescript-memoize", 3 | "version": "1.1.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.10.4", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", 10 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.10.4" 14 | } 15 | }, 16 | "@babel/core": { 17 | "version": "7.12.3", 18 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", 19 | "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", 20 | "dev": true, 21 | "requires": { 22 | "@babel/code-frame": "^7.10.4", 23 | "@babel/generator": "^7.12.1", 24 | "@babel/helper-module-transforms": "^7.12.1", 25 | "@babel/helpers": "^7.12.1", 26 | "@babel/parser": "^7.12.3", 27 | "@babel/template": "^7.10.4", 28 | "@babel/traverse": "^7.12.1", 29 | "@babel/types": "^7.12.1", 30 | "convert-source-map": "^1.7.0", 31 | "debug": "^4.1.0", 32 | "gensync": "^1.0.0-beta.1", 33 | "json5": "^2.1.2", 34 | "lodash": "^4.17.19", 35 | "resolve": "^1.3.2", 36 | "semver": "^5.4.1", 37 | "source-map": "^0.5.0" 38 | }, 39 | "dependencies": { 40 | "debug": { 41 | "version": "4.3.1", 42 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 43 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 44 | "dev": true, 45 | "requires": { 46 | "ms": "2.1.2" 47 | } 48 | }, 49 | "json5": { 50 | "version": "2.1.3", 51 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", 52 | "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", 53 | "dev": true, 54 | "requires": { 55 | "minimist": "^1.2.5" 56 | } 57 | }, 58 | "ms": { 59 | "version": "2.1.2", 60 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 61 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 62 | "dev": true 63 | }, 64 | "resolve": { 65 | "version": "1.19.0", 66 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", 67 | "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", 68 | "dev": true, 69 | "requires": { 70 | "is-core-module": "^2.1.0", 71 | "path-parse": "^1.0.6" 72 | } 73 | }, 74 | "semver": { 75 | "version": "5.7.1", 76 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 77 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 78 | "dev": true 79 | } 80 | } 81 | }, 82 | "@babel/generator": { 83 | "version": "7.12.5", 84 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", 85 | "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", 86 | "dev": true, 87 | "requires": { 88 | "@babel/types": "^7.12.5", 89 | "jsesc": "^2.5.1", 90 | "source-map": "^0.5.0" 91 | } 92 | }, 93 | "@babel/helper-function-name": { 94 | "version": "7.10.4", 95 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", 96 | "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", 97 | "dev": true, 98 | "requires": { 99 | "@babel/helper-get-function-arity": "^7.10.4", 100 | "@babel/template": "^7.10.4", 101 | "@babel/types": "^7.10.4" 102 | } 103 | }, 104 | "@babel/helper-get-function-arity": { 105 | "version": "7.10.4", 106 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", 107 | "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", 108 | "dev": true, 109 | "requires": { 110 | "@babel/types": "^7.10.4" 111 | } 112 | }, 113 | "@babel/helper-member-expression-to-functions": { 114 | "version": "7.12.1", 115 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", 116 | "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", 117 | "dev": true, 118 | "requires": { 119 | "@babel/types": "^7.12.1" 120 | } 121 | }, 122 | "@babel/helper-module-imports": { 123 | "version": "7.12.5", 124 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", 125 | "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", 126 | "dev": true, 127 | "requires": { 128 | "@babel/types": "^7.12.5" 129 | } 130 | }, 131 | "@babel/helper-module-transforms": { 132 | "version": "7.12.1", 133 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", 134 | "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", 135 | "dev": true, 136 | "requires": { 137 | "@babel/helper-module-imports": "^7.12.1", 138 | "@babel/helper-replace-supers": "^7.12.1", 139 | "@babel/helper-simple-access": "^7.12.1", 140 | "@babel/helper-split-export-declaration": "^7.11.0", 141 | "@babel/helper-validator-identifier": "^7.10.4", 142 | "@babel/template": "^7.10.4", 143 | "@babel/traverse": "^7.12.1", 144 | "@babel/types": "^7.12.1", 145 | "lodash": "^4.17.19" 146 | } 147 | }, 148 | "@babel/helper-optimise-call-expression": { 149 | "version": "7.10.4", 150 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", 151 | "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", 152 | "dev": true, 153 | "requires": { 154 | "@babel/types": "^7.10.4" 155 | } 156 | }, 157 | "@babel/helper-replace-supers": { 158 | "version": "7.12.5", 159 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", 160 | "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", 161 | "dev": true, 162 | "requires": { 163 | "@babel/helper-member-expression-to-functions": "^7.12.1", 164 | "@babel/helper-optimise-call-expression": "^7.10.4", 165 | "@babel/traverse": "^7.12.5", 166 | "@babel/types": "^7.12.5" 167 | } 168 | }, 169 | "@babel/helper-simple-access": { 170 | "version": "7.12.1", 171 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", 172 | "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", 173 | "dev": true, 174 | "requires": { 175 | "@babel/types": "^7.12.1" 176 | } 177 | }, 178 | "@babel/helper-split-export-declaration": { 179 | "version": "7.11.0", 180 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", 181 | "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", 182 | "dev": true, 183 | "requires": { 184 | "@babel/types": "^7.11.0" 185 | } 186 | }, 187 | "@babel/helper-validator-identifier": { 188 | "version": "7.10.4", 189 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", 190 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", 191 | "dev": true 192 | }, 193 | "@babel/helpers": { 194 | "version": "7.12.5", 195 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", 196 | "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", 197 | "dev": true, 198 | "requires": { 199 | "@babel/template": "^7.10.4", 200 | "@babel/traverse": "^7.12.5", 201 | "@babel/types": "^7.12.5" 202 | } 203 | }, 204 | "@babel/highlight": { 205 | "version": "7.10.4", 206 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", 207 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", 208 | "dev": true, 209 | "requires": { 210 | "@babel/helper-validator-identifier": "^7.10.4", 211 | "chalk": "^2.0.0", 212 | "js-tokens": "^4.0.0" 213 | } 214 | }, 215 | "@babel/parser": { 216 | "version": "7.12.5", 217 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", 218 | "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", 219 | "dev": true 220 | }, 221 | "@babel/template": { 222 | "version": "7.10.4", 223 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", 224 | "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", 225 | "dev": true, 226 | "requires": { 227 | "@babel/code-frame": "^7.10.4", 228 | "@babel/parser": "^7.10.4", 229 | "@babel/types": "^7.10.4" 230 | } 231 | }, 232 | "@babel/traverse": { 233 | "version": "7.12.5", 234 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", 235 | "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", 236 | "dev": true, 237 | "requires": { 238 | "@babel/code-frame": "^7.10.4", 239 | "@babel/generator": "^7.12.5", 240 | "@babel/helper-function-name": "^7.10.4", 241 | "@babel/helper-split-export-declaration": "^7.11.0", 242 | "@babel/parser": "^7.12.5", 243 | "@babel/types": "^7.12.5", 244 | "debug": "^4.1.0", 245 | "globals": "^11.1.0", 246 | "lodash": "^4.17.19" 247 | }, 248 | "dependencies": { 249 | "debug": { 250 | "version": "4.3.1", 251 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 252 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 253 | "dev": true, 254 | "requires": { 255 | "ms": "2.1.2" 256 | } 257 | }, 258 | "ms": { 259 | "version": "2.1.2", 260 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 261 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 262 | "dev": true 263 | } 264 | } 265 | }, 266 | "@babel/types": { 267 | "version": "7.12.6", 268 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", 269 | "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", 270 | "dev": true, 271 | "requires": { 272 | "@babel/helper-validator-identifier": "^7.10.4", 273 | "lodash": "^4.17.19", 274 | "to-fast-properties": "^2.0.0" 275 | } 276 | }, 277 | "@istanbuljs/schema": { 278 | "version": "0.1.2", 279 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", 280 | "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", 281 | "dev": true 282 | }, 283 | "@socket.io/base64-arraybuffer": { 284 | "version": "1.0.2", 285 | "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", 286 | "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", 287 | "dev": true 288 | }, 289 | "@types/component-emitter": { 290 | "version": "1.2.11", 291 | "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", 292 | "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", 293 | "dev": true 294 | }, 295 | "@types/cookie": { 296 | "version": "0.4.1", 297 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", 298 | "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", 299 | "dev": true 300 | }, 301 | "@types/cors": { 302 | "version": "2.8.12", 303 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", 304 | "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", 305 | "dev": true 306 | }, 307 | "@types/jasmine": { 308 | "version": "3.6.2", 309 | "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.2.tgz", 310 | "integrity": "sha512-AzfesNFLvOs6Q1mHzIsVJXSeUnqVh4ZHG8ngygKJfbkcSLwzrBVm/LKa+mR8KrOfnWtUL47112gde1MC0IXqpQ==", 311 | "dev": true 312 | }, 313 | "@types/json-schema": { 314 | "version": "7.0.6", 315 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", 316 | "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", 317 | "dev": true 318 | }, 319 | "@types/node": { 320 | "version": "14.14.9", 321 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.9.tgz", 322 | "integrity": "sha512-JsoLXFppG62tWTklIoO4knA+oDTYsmqWxHRvd4lpmfQRNhX6osheUOWETP2jMoV/2bEHuMra8Pp3Dmo/stBFcw==", 323 | "dev": true 324 | }, 325 | "abab": { 326 | "version": "2.0.5", 327 | "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", 328 | "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", 329 | "dev": true 330 | }, 331 | "abbrev": { 332 | "version": "1.0.9", 333 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", 334 | "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", 335 | "dev": true 336 | }, 337 | "accepts": { 338 | "version": "1.3.8", 339 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 340 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 341 | "dev": true, 342 | "requires": { 343 | "mime-types": "~2.1.34", 344 | "negotiator": "0.6.3" 345 | } 346 | }, 347 | "acorn": { 348 | "version": "8.0.4", 349 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", 350 | "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", 351 | "dev": true 352 | }, 353 | "acorn-walk": { 354 | "version": "8.0.0", 355 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.0.0.tgz", 356 | "integrity": "sha512-oZRad/3SMOI/pxbbmqyurIx7jHw1wZDcR9G44L8pUVFEomX/0dH89SrM1KaDXuv1NpzAXz6Op/Xu/Qd5XXzdEA==", 357 | "dev": true 358 | }, 359 | "ajv": { 360 | "version": "6.12.6", 361 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 362 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 363 | "dev": true, 364 | "requires": { 365 | "fast-deep-equal": "^3.1.1", 366 | "fast-json-stable-stringify": "^2.0.0", 367 | "json-schema-traverse": "^0.4.1", 368 | "uri-js": "^4.2.2" 369 | } 370 | }, 371 | "ajv-keywords": { 372 | "version": "3.5.2", 373 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 374 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 375 | "dev": true 376 | }, 377 | "amdefine": { 378 | "version": "1.0.1", 379 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", 380 | "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", 381 | "dev": true, 382 | "optional": true 383 | }, 384 | "ansi-regex": { 385 | "version": "5.0.1", 386 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 387 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 388 | "dev": true 389 | }, 390 | "ansi-styles": { 391 | "version": "3.2.1", 392 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 393 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 394 | "dev": true, 395 | "requires": { 396 | "color-convert": "^1.9.0" 397 | } 398 | }, 399 | "anymatch": { 400 | "version": "3.1.2", 401 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 402 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 403 | "dev": true, 404 | "requires": { 405 | "normalize-path": "^3.0.0", 406 | "picomatch": "^2.0.4" 407 | } 408 | }, 409 | "argparse": { 410 | "version": "1.0.10", 411 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 412 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 413 | "dev": true, 414 | "requires": { 415 | "sprintf-js": "~1.0.2" 416 | } 417 | }, 418 | "arr-diff": { 419 | "version": "4.0.0", 420 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 421 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 422 | "dev": true 423 | }, 424 | "arr-flatten": { 425 | "version": "1.1.0", 426 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 427 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 428 | "dev": true 429 | }, 430 | "arr-union": { 431 | "version": "3.1.0", 432 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 433 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", 434 | "dev": true 435 | }, 436 | "array-filter": { 437 | "version": "1.0.0", 438 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", 439 | "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", 440 | "dev": true 441 | }, 442 | "array-unique": { 443 | "version": "0.3.2", 444 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 445 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 446 | "dev": true 447 | }, 448 | "asn1.js": { 449 | "version": "5.4.1", 450 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", 451 | "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", 452 | "dev": true, 453 | "requires": { 454 | "bn.js": "^4.0.0", 455 | "inherits": "^2.0.1", 456 | "minimalistic-assert": "^1.0.0", 457 | "safer-buffer": "^2.1.0" 458 | }, 459 | "dependencies": { 460 | "bn.js": { 461 | "version": "4.11.9", 462 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 463 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 464 | "dev": true 465 | } 466 | } 467 | }, 468 | "assert": { 469 | "version": "2.0.0", 470 | "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", 471 | "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", 472 | "dev": true, 473 | "requires": { 474 | "es6-object-assign": "^1.1.0", 475 | "is-nan": "^1.2.1", 476 | "object-is": "^1.0.1", 477 | "util": "^0.12.0" 478 | } 479 | }, 480 | "assign-symbols": { 481 | "version": "1.0.0", 482 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 483 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 484 | "dev": true 485 | }, 486 | "async": { 487 | "version": "1.5.2", 488 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 489 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", 490 | "dev": true 491 | }, 492 | "atob": { 493 | "version": "2.1.2", 494 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 495 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", 496 | "dev": true 497 | }, 498 | "available-typed-arrays": { 499 | "version": "1.0.2", 500 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", 501 | "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", 502 | "dev": true, 503 | "requires": { 504 | "array-filter": "^1.0.0" 505 | } 506 | }, 507 | "awesome-typescript-loader": { 508 | "version": "5.2.1", 509 | "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.2.1.tgz", 510 | "integrity": "sha512-slv66OAJB8orL+UUaTI3pKlLorwIvS4ARZzYR9iJJyGsEgOqueMfOMdKySWzZ73vIkEe3fcwFgsKMg4d8zyb1g==", 511 | "dev": true, 512 | "requires": { 513 | "chalk": "^2.4.1", 514 | "enhanced-resolve": "^4.0.0", 515 | "loader-utils": "^1.1.0", 516 | "lodash": "^4.17.5", 517 | "micromatch": "^3.1.9", 518 | "mkdirp": "^0.5.1", 519 | "source-map-support": "^0.5.3", 520 | "webpack-log": "^1.2.0" 521 | } 522 | }, 523 | "balanced-match": { 524 | "version": "1.0.0", 525 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 526 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 527 | "dev": true 528 | }, 529 | "base": { 530 | "version": "0.11.2", 531 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 532 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 533 | "dev": true, 534 | "requires": { 535 | "cache-base": "^1.0.1", 536 | "class-utils": "^0.3.5", 537 | "component-emitter": "^1.2.1", 538 | "define-property": "^1.0.0", 539 | "isobject": "^3.0.1", 540 | "mixin-deep": "^1.2.0", 541 | "pascalcase": "^0.1.1" 542 | }, 543 | "dependencies": { 544 | "define-property": { 545 | "version": "1.0.0", 546 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 547 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 548 | "dev": true, 549 | "requires": { 550 | "is-descriptor": "^1.0.0" 551 | } 552 | }, 553 | "is-accessor-descriptor": { 554 | "version": "1.0.0", 555 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 556 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 557 | "dev": true, 558 | "requires": { 559 | "kind-of": "^6.0.0" 560 | } 561 | }, 562 | "is-data-descriptor": { 563 | "version": "1.0.0", 564 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 565 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 566 | "dev": true, 567 | "requires": { 568 | "kind-of": "^6.0.0" 569 | } 570 | }, 571 | "is-descriptor": { 572 | "version": "1.0.2", 573 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 574 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 575 | "dev": true, 576 | "requires": { 577 | "is-accessor-descriptor": "^1.0.0", 578 | "is-data-descriptor": "^1.0.0", 579 | "kind-of": "^6.0.2" 580 | } 581 | } 582 | } 583 | }, 584 | "base64-js": { 585 | "version": "1.5.1", 586 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 587 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 588 | "dev": true 589 | }, 590 | "base64id": { 591 | "version": "2.0.0", 592 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", 593 | "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", 594 | "dev": true 595 | }, 596 | "big.js": { 597 | "version": "5.2.2", 598 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 599 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 600 | "dev": true 601 | }, 602 | "binary-extensions": { 603 | "version": "2.2.0", 604 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 605 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 606 | "dev": true 607 | }, 608 | "bn.js": { 609 | "version": "5.1.3", 610 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", 611 | "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", 612 | "dev": true 613 | }, 614 | "body-parser": { 615 | "version": "1.19.2", 616 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", 617 | "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", 618 | "dev": true, 619 | "requires": { 620 | "bytes": "3.1.2", 621 | "content-type": "~1.0.4", 622 | "debug": "2.6.9", 623 | "depd": "~1.1.2", 624 | "http-errors": "1.8.1", 625 | "iconv-lite": "0.4.24", 626 | "on-finished": "~2.3.0", 627 | "qs": "6.9.7", 628 | "raw-body": "2.4.3", 629 | "type-is": "~1.6.18" 630 | } 631 | }, 632 | "brace-expansion": { 633 | "version": "1.1.11", 634 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 635 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 636 | "dev": true, 637 | "requires": { 638 | "balanced-match": "^1.0.0", 639 | "concat-map": "0.0.1" 640 | } 641 | }, 642 | "braces": { 643 | "version": "2.3.2", 644 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 645 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 646 | "dev": true, 647 | "requires": { 648 | "arr-flatten": "^1.1.0", 649 | "array-unique": "^0.3.2", 650 | "extend-shallow": "^2.0.1", 651 | "fill-range": "^4.0.0", 652 | "isobject": "^3.0.1", 653 | "repeat-element": "^1.1.2", 654 | "snapdragon": "^0.8.1", 655 | "snapdragon-node": "^2.0.1", 656 | "split-string": "^3.0.2", 657 | "to-regex": "^3.0.1" 658 | }, 659 | "dependencies": { 660 | "extend-shallow": { 661 | "version": "2.0.1", 662 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 663 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 664 | "dev": true, 665 | "requires": { 666 | "is-extendable": "^0.1.0" 667 | } 668 | } 669 | } 670 | }, 671 | "brorand": { 672 | "version": "1.1.0", 673 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 674 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", 675 | "dev": true 676 | }, 677 | "browser-resolve": { 678 | "version": "2.0.0", 679 | "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", 680 | "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", 681 | "dev": true, 682 | "requires": { 683 | "resolve": "^1.17.0" 684 | }, 685 | "dependencies": { 686 | "resolve": { 687 | "version": "1.19.0", 688 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", 689 | "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", 690 | "dev": true, 691 | "requires": { 692 | "is-core-module": "^2.1.0", 693 | "path-parse": "^1.0.6" 694 | } 695 | } 696 | } 697 | }, 698 | "browserify-aes": { 699 | "version": "1.2.0", 700 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 701 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 702 | "dev": true, 703 | "requires": { 704 | "buffer-xor": "^1.0.3", 705 | "cipher-base": "^1.0.0", 706 | "create-hash": "^1.1.0", 707 | "evp_bytestokey": "^1.0.3", 708 | "inherits": "^2.0.1", 709 | "safe-buffer": "^5.0.1" 710 | } 711 | }, 712 | "browserify-cipher": { 713 | "version": "1.0.1", 714 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 715 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 716 | "dev": true, 717 | "requires": { 718 | "browserify-aes": "^1.0.4", 719 | "browserify-des": "^1.0.0", 720 | "evp_bytestokey": "^1.0.0" 721 | } 722 | }, 723 | "browserify-des": { 724 | "version": "1.0.2", 725 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 726 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 727 | "dev": true, 728 | "requires": { 729 | "cipher-base": "^1.0.1", 730 | "des.js": "^1.0.0", 731 | "inherits": "^2.0.1", 732 | "safe-buffer": "^5.1.2" 733 | } 734 | }, 735 | "browserify-rsa": { 736 | "version": "4.1.0", 737 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", 738 | "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", 739 | "dev": true, 740 | "requires": { 741 | "bn.js": "^5.0.0", 742 | "randombytes": "^2.0.1" 743 | } 744 | }, 745 | "browserify-sign": { 746 | "version": "4.2.1", 747 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", 748 | "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", 749 | "dev": true, 750 | "requires": { 751 | "bn.js": "^5.1.1", 752 | "browserify-rsa": "^4.0.1", 753 | "create-hash": "^1.2.0", 754 | "create-hmac": "^1.1.7", 755 | "elliptic": "^6.5.3", 756 | "inherits": "^2.0.4", 757 | "parse-asn1": "^5.1.5", 758 | "readable-stream": "^3.6.0", 759 | "safe-buffer": "^5.2.0" 760 | }, 761 | "dependencies": { 762 | "readable-stream": { 763 | "version": "3.6.0", 764 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 765 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 766 | "dev": true, 767 | "requires": { 768 | "inherits": "^2.0.3", 769 | "string_decoder": "^1.1.1", 770 | "util-deprecate": "^1.0.1" 771 | } 772 | }, 773 | "safe-buffer": { 774 | "version": "5.2.1", 775 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 776 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 777 | "dev": true 778 | } 779 | } 780 | }, 781 | "browserify-zlib": { 782 | "version": "0.2.0", 783 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 784 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 785 | "dev": true, 786 | "requires": { 787 | "pako": "~1.0.5" 788 | } 789 | }, 790 | "buffer": { 791 | "version": "5.7.1", 792 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 793 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 794 | "dev": true, 795 | "requires": { 796 | "base64-js": "^1.3.1", 797 | "ieee754": "^1.1.13" 798 | } 799 | }, 800 | "buffer-from": { 801 | "version": "1.1.1", 802 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 803 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 804 | "dev": true 805 | }, 806 | "buffer-xor": { 807 | "version": "1.0.3", 808 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 809 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", 810 | "dev": true 811 | }, 812 | "builtin-modules": { 813 | "version": "1.1.1", 814 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 815 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 816 | "dev": true 817 | }, 818 | "builtin-status-codes": { 819 | "version": "3.0.0", 820 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 821 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", 822 | "dev": true 823 | }, 824 | "bytes": { 825 | "version": "3.1.2", 826 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 827 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 828 | "dev": true 829 | }, 830 | "cache-base": { 831 | "version": "1.0.1", 832 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 833 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 834 | "dev": true, 835 | "requires": { 836 | "collection-visit": "^1.0.0", 837 | "component-emitter": "^1.2.1", 838 | "get-value": "^2.0.6", 839 | "has-value": "^1.0.0", 840 | "isobject": "^3.0.1", 841 | "set-value": "^2.0.0", 842 | "to-object-path": "^0.3.0", 843 | "union-value": "^1.0.0", 844 | "unset-value": "^1.0.0" 845 | } 846 | }, 847 | "call-bind": { 848 | "version": "1.0.0", 849 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", 850 | "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", 851 | "dev": true, 852 | "requires": { 853 | "function-bind": "^1.1.1", 854 | "get-intrinsic": "^1.0.0" 855 | } 856 | }, 857 | "chalk": { 858 | "version": "2.4.2", 859 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 860 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 861 | "dev": true, 862 | "requires": { 863 | "ansi-styles": "^3.2.1", 864 | "escape-string-regexp": "^1.0.5", 865 | "supports-color": "^5.3.0" 866 | }, 867 | "dependencies": { 868 | "has-flag": { 869 | "version": "3.0.0", 870 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 871 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 872 | "dev": true 873 | }, 874 | "supports-color": { 875 | "version": "5.5.0", 876 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 877 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 878 | "dev": true, 879 | "requires": { 880 | "has-flag": "^3.0.0" 881 | } 882 | } 883 | } 884 | }, 885 | "chokidar": { 886 | "version": "3.5.3", 887 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 888 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 889 | "dev": true, 890 | "requires": { 891 | "anymatch": "~3.1.2", 892 | "braces": "~3.0.2", 893 | "fsevents": "~2.3.2", 894 | "glob-parent": "~5.1.2", 895 | "is-binary-path": "~2.1.0", 896 | "is-glob": "~4.0.1", 897 | "normalize-path": "~3.0.0", 898 | "readdirp": "~3.6.0" 899 | }, 900 | "dependencies": { 901 | "braces": { 902 | "version": "3.0.2", 903 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 904 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 905 | "dev": true, 906 | "requires": { 907 | "fill-range": "^7.0.1" 908 | } 909 | }, 910 | "fill-range": { 911 | "version": "7.0.1", 912 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 913 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 914 | "dev": true, 915 | "requires": { 916 | "to-regex-range": "^5.0.1" 917 | } 918 | }, 919 | "is-number": { 920 | "version": "7.0.0", 921 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 922 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 923 | "dev": true 924 | }, 925 | "to-regex-range": { 926 | "version": "5.0.1", 927 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 928 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 929 | "dev": true, 930 | "requires": { 931 | "is-number": "^7.0.0" 932 | } 933 | } 934 | } 935 | }, 936 | "cipher-base": { 937 | "version": "1.0.4", 938 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 939 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 940 | "dev": true, 941 | "requires": { 942 | "inherits": "^2.0.1", 943 | "safe-buffer": "^5.0.1" 944 | } 945 | }, 946 | "class-utils": { 947 | "version": "0.3.6", 948 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 949 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 950 | "dev": true, 951 | "requires": { 952 | "arr-union": "^3.1.0", 953 | "define-property": "^0.2.5", 954 | "isobject": "^3.0.0", 955 | "static-extend": "^0.1.1" 956 | }, 957 | "dependencies": { 958 | "define-property": { 959 | "version": "0.2.5", 960 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 961 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 962 | "dev": true, 963 | "requires": { 964 | "is-descriptor": "^0.1.0" 965 | } 966 | } 967 | } 968 | }, 969 | "cliui": { 970 | "version": "7.0.4", 971 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 972 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 973 | "dev": true, 974 | "requires": { 975 | "string-width": "^4.2.0", 976 | "strip-ansi": "^6.0.0", 977 | "wrap-ansi": "^7.0.0" 978 | } 979 | }, 980 | "clone": { 981 | "version": "1.0.4", 982 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 983 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", 984 | "dev": true 985 | }, 986 | "collection-visit": { 987 | "version": "1.0.0", 988 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 989 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 990 | "dev": true, 991 | "requires": { 992 | "map-visit": "^1.0.0", 993 | "object-visit": "^1.0.0" 994 | } 995 | }, 996 | "color-convert": { 997 | "version": "1.9.3", 998 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 999 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1000 | "dev": true, 1001 | "requires": { 1002 | "color-name": "1.1.3" 1003 | } 1004 | }, 1005 | "color-name": { 1006 | "version": "1.1.3", 1007 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1008 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1009 | "dev": true 1010 | }, 1011 | "colors": { 1012 | "version": "1.4.0", 1013 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 1014 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 1015 | "dev": true 1016 | }, 1017 | "combine-source-map": { 1018 | "version": "0.8.0", 1019 | "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", 1020 | "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", 1021 | "dev": true, 1022 | "requires": { 1023 | "convert-source-map": "~1.1.0", 1024 | "inline-source-map": "~0.6.0", 1025 | "lodash.memoize": "~3.0.3", 1026 | "source-map": "~0.5.3" 1027 | }, 1028 | "dependencies": { 1029 | "convert-source-map": { 1030 | "version": "1.1.3", 1031 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", 1032 | "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", 1033 | "dev": true 1034 | } 1035 | } 1036 | }, 1037 | "commander": { 1038 | "version": "2.20.3", 1039 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1040 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1041 | "dev": true 1042 | }, 1043 | "component-emitter": { 1044 | "version": "1.3.0", 1045 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 1046 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", 1047 | "dev": true 1048 | }, 1049 | "concat-map": { 1050 | "version": "0.0.1", 1051 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1052 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1053 | "dev": true 1054 | }, 1055 | "connect": { 1056 | "version": "3.7.0", 1057 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", 1058 | "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", 1059 | "dev": true, 1060 | "requires": { 1061 | "debug": "2.6.9", 1062 | "finalhandler": "1.1.2", 1063 | "parseurl": "~1.3.3", 1064 | "utils-merge": "1.0.1" 1065 | } 1066 | }, 1067 | "console-browserify": { 1068 | "version": "1.2.0", 1069 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", 1070 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", 1071 | "dev": true 1072 | }, 1073 | "constants-browserify": { 1074 | "version": "1.0.0", 1075 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 1076 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", 1077 | "dev": true 1078 | }, 1079 | "content-type": { 1080 | "version": "1.0.4", 1081 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 1082 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 1083 | "dev": true 1084 | }, 1085 | "convert-source-map": { 1086 | "version": "1.7.0", 1087 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 1088 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 1089 | "dev": true, 1090 | "requires": { 1091 | "safe-buffer": "~5.1.1" 1092 | } 1093 | }, 1094 | "cookie": { 1095 | "version": "0.4.2", 1096 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", 1097 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", 1098 | "dev": true 1099 | }, 1100 | "copy-descriptor": { 1101 | "version": "0.1.1", 1102 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 1103 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 1104 | "dev": true 1105 | }, 1106 | "core-util-is": { 1107 | "version": "1.0.2", 1108 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1109 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1110 | "dev": true 1111 | }, 1112 | "cors": { 1113 | "version": "2.8.5", 1114 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 1115 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 1116 | "dev": true, 1117 | "requires": { 1118 | "object-assign": "^4", 1119 | "vary": "^1" 1120 | } 1121 | }, 1122 | "create-ecdh": { 1123 | "version": "4.0.4", 1124 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", 1125 | "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", 1126 | "dev": true, 1127 | "requires": { 1128 | "bn.js": "^4.1.0", 1129 | "elliptic": "^6.5.3" 1130 | }, 1131 | "dependencies": { 1132 | "bn.js": { 1133 | "version": "4.11.9", 1134 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 1135 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 1136 | "dev": true 1137 | } 1138 | } 1139 | }, 1140 | "create-hash": { 1141 | "version": "1.2.0", 1142 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 1143 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 1144 | "dev": true, 1145 | "requires": { 1146 | "cipher-base": "^1.0.1", 1147 | "inherits": "^2.0.1", 1148 | "md5.js": "^1.3.4", 1149 | "ripemd160": "^2.0.1", 1150 | "sha.js": "^2.4.0" 1151 | } 1152 | }, 1153 | "create-hmac": { 1154 | "version": "1.1.7", 1155 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 1156 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 1157 | "dev": true, 1158 | "requires": { 1159 | "cipher-base": "^1.0.3", 1160 | "create-hash": "^1.1.0", 1161 | "inherits": "^2.0.1", 1162 | "ripemd160": "^2.0.0", 1163 | "safe-buffer": "^5.0.1", 1164 | "sha.js": "^2.4.8" 1165 | } 1166 | }, 1167 | "crypto-browserify": { 1168 | "version": "3.12.0", 1169 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 1170 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 1171 | "dev": true, 1172 | "requires": { 1173 | "browserify-cipher": "^1.0.0", 1174 | "browserify-sign": "^4.0.0", 1175 | "create-ecdh": "^4.0.0", 1176 | "create-hash": "^1.1.0", 1177 | "create-hmac": "^1.1.0", 1178 | "diffie-hellman": "^5.0.0", 1179 | "inherits": "^2.0.1", 1180 | "pbkdf2": "^3.0.3", 1181 | "public-encrypt": "^4.0.0", 1182 | "randombytes": "^2.0.0", 1183 | "randomfill": "^1.0.3" 1184 | } 1185 | }, 1186 | "custom-event": { 1187 | "version": "1.0.1", 1188 | "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", 1189 | "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", 1190 | "dev": true 1191 | }, 1192 | "d": { 1193 | "version": "1.0.1", 1194 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", 1195 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", 1196 | "dev": true, 1197 | "requires": { 1198 | "es5-ext": "^0.10.50", 1199 | "type": "^1.0.1" 1200 | } 1201 | }, 1202 | "debug": { 1203 | "version": "2.6.9", 1204 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1205 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1206 | "dev": true, 1207 | "requires": { 1208 | "ms": "2.0.0" 1209 | } 1210 | }, 1211 | "decode-uri-component": { 1212 | "version": "0.2.0", 1213 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 1214 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 1215 | "dev": true 1216 | }, 1217 | "deep-is": { 1218 | "version": "0.1.3", 1219 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 1220 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 1221 | "dev": true 1222 | }, 1223 | "defaults": { 1224 | "version": "1.0.3", 1225 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 1226 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 1227 | "dev": true, 1228 | "requires": { 1229 | "clone": "^1.0.2" 1230 | } 1231 | }, 1232 | "define-properties": { 1233 | "version": "1.1.3", 1234 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1235 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1236 | "dev": true, 1237 | "requires": { 1238 | "object-keys": "^1.0.12" 1239 | } 1240 | }, 1241 | "define-property": { 1242 | "version": "2.0.2", 1243 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 1244 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 1245 | "dev": true, 1246 | "requires": { 1247 | "is-descriptor": "^1.0.2", 1248 | "isobject": "^3.0.1" 1249 | }, 1250 | "dependencies": { 1251 | "is-accessor-descriptor": { 1252 | "version": "1.0.0", 1253 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1254 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1255 | "dev": true, 1256 | "requires": { 1257 | "kind-of": "^6.0.0" 1258 | } 1259 | }, 1260 | "is-data-descriptor": { 1261 | "version": "1.0.0", 1262 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1263 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1264 | "dev": true, 1265 | "requires": { 1266 | "kind-of": "^6.0.0" 1267 | } 1268 | }, 1269 | "is-descriptor": { 1270 | "version": "1.0.2", 1271 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1272 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1273 | "dev": true, 1274 | "requires": { 1275 | "is-accessor-descriptor": "^1.0.0", 1276 | "is-data-descriptor": "^1.0.0", 1277 | "kind-of": "^6.0.2" 1278 | } 1279 | } 1280 | } 1281 | }, 1282 | "depd": { 1283 | "version": "1.1.2", 1284 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 1285 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 1286 | "dev": true 1287 | }, 1288 | "des.js": { 1289 | "version": "1.0.1", 1290 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", 1291 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", 1292 | "dev": true, 1293 | "requires": { 1294 | "inherits": "^2.0.1", 1295 | "minimalistic-assert": "^1.0.0" 1296 | } 1297 | }, 1298 | "di": { 1299 | "version": "0.0.1", 1300 | "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", 1301 | "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", 1302 | "dev": true 1303 | }, 1304 | "diff": { 1305 | "version": "4.0.2", 1306 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 1307 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 1308 | "dev": true 1309 | }, 1310 | "diffie-hellman": { 1311 | "version": "5.0.3", 1312 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 1313 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 1314 | "dev": true, 1315 | "requires": { 1316 | "bn.js": "^4.1.0", 1317 | "miller-rabin": "^4.0.0", 1318 | "randombytes": "^2.0.0" 1319 | }, 1320 | "dependencies": { 1321 | "bn.js": { 1322 | "version": "4.11.9", 1323 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 1324 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 1325 | "dev": true 1326 | } 1327 | } 1328 | }, 1329 | "dom-serialize": { 1330 | "version": "2.2.1", 1331 | "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", 1332 | "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", 1333 | "dev": true, 1334 | "requires": { 1335 | "custom-event": "~1.0.0", 1336 | "ent": "~2.2.0", 1337 | "extend": "^3.0.0", 1338 | "void-elements": "^2.0.0" 1339 | } 1340 | }, 1341 | "domain-browser": { 1342 | "version": "4.19.0", 1343 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.19.0.tgz", 1344 | "integrity": "sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==", 1345 | "dev": true 1346 | }, 1347 | "ee-first": { 1348 | "version": "1.1.1", 1349 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1350 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 1351 | "dev": true 1352 | }, 1353 | "elliptic": { 1354 | "version": "6.5.4", 1355 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", 1356 | "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", 1357 | "dev": true, 1358 | "requires": { 1359 | "bn.js": "^4.11.9", 1360 | "brorand": "^1.1.0", 1361 | "hash.js": "^1.0.0", 1362 | "hmac-drbg": "^1.0.1", 1363 | "inherits": "^2.0.4", 1364 | "minimalistic-assert": "^1.0.1", 1365 | "minimalistic-crypto-utils": "^1.0.1" 1366 | }, 1367 | "dependencies": { 1368 | "bn.js": { 1369 | "version": "4.12.0", 1370 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1371 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", 1372 | "dev": true 1373 | } 1374 | } 1375 | }, 1376 | "emoji-regex": { 1377 | "version": "8.0.0", 1378 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1379 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1380 | "dev": true 1381 | }, 1382 | "emojis-list": { 1383 | "version": "3.0.0", 1384 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", 1385 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", 1386 | "dev": true 1387 | }, 1388 | "encodeurl": { 1389 | "version": "1.0.2", 1390 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1391 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 1392 | "dev": true 1393 | }, 1394 | "engine.io": { 1395 | "version": "6.1.3", 1396 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", 1397 | "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", 1398 | "dev": true, 1399 | "requires": { 1400 | "@types/cookie": "^0.4.1", 1401 | "@types/cors": "^2.8.12", 1402 | "@types/node": ">=10.0.0", 1403 | "accepts": "~1.3.4", 1404 | "base64id": "2.0.0", 1405 | "cookie": "~0.4.1", 1406 | "cors": "~2.8.5", 1407 | "debug": "~4.3.1", 1408 | "engine.io-parser": "~5.0.3", 1409 | "ws": "~8.2.3" 1410 | }, 1411 | "dependencies": { 1412 | "debug": { 1413 | "version": "4.3.3", 1414 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1415 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1416 | "dev": true, 1417 | "requires": { 1418 | "ms": "2.1.2" 1419 | } 1420 | }, 1421 | "ms": { 1422 | "version": "2.1.2", 1423 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1424 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1425 | "dev": true 1426 | } 1427 | } 1428 | }, 1429 | "engine.io-parser": { 1430 | "version": "5.0.3", 1431 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", 1432 | "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", 1433 | "dev": true, 1434 | "requires": { 1435 | "@socket.io/base64-arraybuffer": "~1.0.2" 1436 | } 1437 | }, 1438 | "enhanced-resolve": { 1439 | "version": "4.3.0", 1440 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", 1441 | "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", 1442 | "dev": true, 1443 | "requires": { 1444 | "graceful-fs": "^4.1.2", 1445 | "memory-fs": "^0.5.0", 1446 | "tapable": "^1.0.0" 1447 | } 1448 | }, 1449 | "ent": { 1450 | "version": "2.2.0", 1451 | "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", 1452 | "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", 1453 | "dev": true 1454 | }, 1455 | "errno": { 1456 | "version": "0.1.7", 1457 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", 1458 | "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", 1459 | "dev": true, 1460 | "requires": { 1461 | "prr": "~1.0.1" 1462 | } 1463 | }, 1464 | "es-abstract": { 1465 | "version": "1.18.0-next.1", 1466 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", 1467 | "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", 1468 | "dev": true, 1469 | "requires": { 1470 | "es-to-primitive": "^1.2.1", 1471 | "function-bind": "^1.1.1", 1472 | "has": "^1.0.3", 1473 | "has-symbols": "^1.0.1", 1474 | "is-callable": "^1.2.2", 1475 | "is-negative-zero": "^2.0.0", 1476 | "is-regex": "^1.1.1", 1477 | "object-inspect": "^1.8.0", 1478 | "object-keys": "^1.1.1", 1479 | "object.assign": "^4.1.1", 1480 | "string.prototype.trimend": "^1.0.1", 1481 | "string.prototype.trimstart": "^1.0.1" 1482 | } 1483 | }, 1484 | "es-to-primitive": { 1485 | "version": "1.2.1", 1486 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 1487 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 1488 | "dev": true, 1489 | "requires": { 1490 | "is-callable": "^1.1.4", 1491 | "is-date-object": "^1.0.1", 1492 | "is-symbol": "^1.0.2" 1493 | } 1494 | }, 1495 | "es5-ext": { 1496 | "version": "0.10.53", 1497 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", 1498 | "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", 1499 | "dev": true, 1500 | "requires": { 1501 | "es6-iterator": "~2.0.3", 1502 | "es6-symbol": "~3.1.3", 1503 | "next-tick": "~1.0.0" 1504 | } 1505 | }, 1506 | "es5-shim": { 1507 | "version": "4.5.14", 1508 | "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.14.tgz", 1509 | "integrity": "sha512-7SwlpL+2JpymWTt8sNLuC2zdhhc+wrfe5cMPI2j0o6WsPdfAiPwmFy2f0AocPB4RQVBOZ9kNTgi5YF7TdhkvEg==", 1510 | "dev": true 1511 | }, 1512 | "es6-iterator": { 1513 | "version": "2.0.3", 1514 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 1515 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 1516 | "dev": true, 1517 | "requires": { 1518 | "d": "1", 1519 | "es5-ext": "^0.10.35", 1520 | "es6-symbol": "^3.1.1" 1521 | } 1522 | }, 1523 | "es6-object-assign": { 1524 | "version": "1.1.0", 1525 | "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", 1526 | "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", 1527 | "dev": true 1528 | }, 1529 | "es6-shim": { 1530 | "version": "0.35.6", 1531 | "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.6.tgz", 1532 | "integrity": "sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA==", 1533 | "dev": true 1534 | }, 1535 | "es6-symbol": { 1536 | "version": "3.1.3", 1537 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", 1538 | "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", 1539 | "dev": true, 1540 | "requires": { 1541 | "d": "^1.0.1", 1542 | "ext": "^1.1.2" 1543 | } 1544 | }, 1545 | "escalade": { 1546 | "version": "3.1.1", 1547 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1548 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1549 | "dev": true 1550 | }, 1551 | "escape-html": { 1552 | "version": "1.0.3", 1553 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1554 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 1555 | "dev": true 1556 | }, 1557 | "escape-string-regexp": { 1558 | "version": "1.0.5", 1559 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1560 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1561 | "dev": true 1562 | }, 1563 | "escodegen": { 1564 | "version": "1.7.1", 1565 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.7.1.tgz", 1566 | "integrity": "sha1-MOz89mypjcZ80v0WKr626vqM5vw=", 1567 | "dev": true, 1568 | "requires": { 1569 | "esprima": "^1.2.2", 1570 | "estraverse": "^1.9.1", 1571 | "esutils": "^2.0.2", 1572 | "optionator": "^0.5.0", 1573 | "source-map": "~0.2.0" 1574 | }, 1575 | "dependencies": { 1576 | "esprima": { 1577 | "version": "1.2.5", 1578 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", 1579 | "integrity": "sha1-CZNQL+r2aBODJXVvMPmlH+7sEek=", 1580 | "dev": true 1581 | }, 1582 | "source-map": { 1583 | "version": "0.2.0", 1584 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", 1585 | "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", 1586 | "dev": true, 1587 | "optional": true, 1588 | "requires": { 1589 | "amdefine": ">=0.0.4" 1590 | } 1591 | } 1592 | } 1593 | }, 1594 | "esprima": { 1595 | "version": "2.5.0", 1596 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.5.0.tgz", 1597 | "integrity": "sha1-84ekb9NEwbGjm6+MIL+0O20AWMw=", 1598 | "dev": true 1599 | }, 1600 | "estraverse": { 1601 | "version": "1.9.3", 1602 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", 1603 | "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", 1604 | "dev": true 1605 | }, 1606 | "esutils": { 1607 | "version": "2.0.3", 1608 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1609 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1610 | "dev": true 1611 | }, 1612 | "eventemitter3": { 1613 | "version": "4.0.7", 1614 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 1615 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 1616 | "dev": true 1617 | }, 1618 | "events": { 1619 | "version": "3.2.0", 1620 | "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", 1621 | "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", 1622 | "dev": true 1623 | }, 1624 | "evp_bytestokey": { 1625 | "version": "1.0.3", 1626 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 1627 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 1628 | "dev": true, 1629 | "requires": { 1630 | "md5.js": "^1.3.4", 1631 | "safe-buffer": "^5.1.1" 1632 | } 1633 | }, 1634 | "expand-brackets": { 1635 | "version": "2.1.4", 1636 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 1637 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 1638 | "dev": true, 1639 | "requires": { 1640 | "debug": "^2.3.3", 1641 | "define-property": "^0.2.5", 1642 | "extend-shallow": "^2.0.1", 1643 | "posix-character-classes": "^0.1.0", 1644 | "regex-not": "^1.0.0", 1645 | "snapdragon": "^0.8.1", 1646 | "to-regex": "^3.0.1" 1647 | }, 1648 | "dependencies": { 1649 | "define-property": { 1650 | "version": "0.2.5", 1651 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1652 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1653 | "dev": true, 1654 | "requires": { 1655 | "is-descriptor": "^0.1.0" 1656 | } 1657 | }, 1658 | "extend-shallow": { 1659 | "version": "2.0.1", 1660 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1661 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1662 | "dev": true, 1663 | "requires": { 1664 | "is-extendable": "^0.1.0" 1665 | } 1666 | } 1667 | } 1668 | }, 1669 | "ext": { 1670 | "version": "1.4.0", 1671 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", 1672 | "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", 1673 | "dev": true, 1674 | "requires": { 1675 | "type": "^2.0.0" 1676 | }, 1677 | "dependencies": { 1678 | "type": { 1679 | "version": "2.1.0", 1680 | "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", 1681 | "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", 1682 | "dev": true 1683 | } 1684 | } 1685 | }, 1686 | "extend": { 1687 | "version": "3.0.2", 1688 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1689 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 1690 | "dev": true 1691 | }, 1692 | "extend-shallow": { 1693 | "version": "3.0.2", 1694 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 1695 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 1696 | "dev": true, 1697 | "requires": { 1698 | "assign-symbols": "^1.0.0", 1699 | "is-extendable": "^1.0.1" 1700 | }, 1701 | "dependencies": { 1702 | "is-extendable": { 1703 | "version": "1.0.1", 1704 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1705 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1706 | "dev": true, 1707 | "requires": { 1708 | "is-plain-object": "^2.0.4" 1709 | } 1710 | } 1711 | } 1712 | }, 1713 | "extglob": { 1714 | "version": "2.0.4", 1715 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 1716 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 1717 | "dev": true, 1718 | "requires": { 1719 | "array-unique": "^0.3.2", 1720 | "define-property": "^1.0.0", 1721 | "expand-brackets": "^2.1.4", 1722 | "extend-shallow": "^2.0.1", 1723 | "fragment-cache": "^0.2.1", 1724 | "regex-not": "^1.0.0", 1725 | "snapdragon": "^0.8.1", 1726 | "to-regex": "^3.0.1" 1727 | }, 1728 | "dependencies": { 1729 | "define-property": { 1730 | "version": "1.0.0", 1731 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 1732 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 1733 | "dev": true, 1734 | "requires": { 1735 | "is-descriptor": "^1.0.0" 1736 | } 1737 | }, 1738 | "extend-shallow": { 1739 | "version": "2.0.1", 1740 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1741 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1742 | "dev": true, 1743 | "requires": { 1744 | "is-extendable": "^0.1.0" 1745 | } 1746 | }, 1747 | "is-accessor-descriptor": { 1748 | "version": "1.0.0", 1749 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1750 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1751 | "dev": true, 1752 | "requires": { 1753 | "kind-of": "^6.0.0" 1754 | } 1755 | }, 1756 | "is-data-descriptor": { 1757 | "version": "1.0.0", 1758 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1759 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1760 | "dev": true, 1761 | "requires": { 1762 | "kind-of": "^6.0.0" 1763 | } 1764 | }, 1765 | "is-descriptor": { 1766 | "version": "1.0.2", 1767 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1768 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1769 | "dev": true, 1770 | "requires": { 1771 | "is-accessor-descriptor": "^1.0.0", 1772 | "is-data-descriptor": "^1.0.0", 1773 | "kind-of": "^6.0.2" 1774 | } 1775 | } 1776 | } 1777 | }, 1778 | "fast-deep-equal": { 1779 | "version": "3.1.3", 1780 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1781 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1782 | "dev": true 1783 | }, 1784 | "fast-json-stable-stringify": { 1785 | "version": "2.1.0", 1786 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1787 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1788 | "dev": true 1789 | }, 1790 | "fast-levenshtein": { 1791 | "version": "1.0.7", 1792 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz", 1793 | "integrity": "sha1-AXjc3uAjuSkFGTrwlZ6KdjnP3Lk=", 1794 | "dev": true 1795 | }, 1796 | "fileset": { 1797 | "version": "0.2.1", 1798 | "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.2.1.tgz", 1799 | "integrity": "sha1-WI74lzxmI7KnbfRlEFaWuWqsgGc=", 1800 | "dev": true, 1801 | "requires": { 1802 | "glob": "5.x", 1803 | "minimatch": "2.x" 1804 | }, 1805 | "dependencies": { 1806 | "glob": { 1807 | "version": "5.0.15", 1808 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 1809 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 1810 | "dev": true, 1811 | "requires": { 1812 | "inflight": "^1.0.4", 1813 | "inherits": "2", 1814 | "minimatch": "2 || 3", 1815 | "once": "^1.3.0", 1816 | "path-is-absolute": "^1.0.0" 1817 | } 1818 | }, 1819 | "minimatch": { 1820 | "version": "2.0.10", 1821 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 1822 | "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", 1823 | "dev": true, 1824 | "requires": { 1825 | "brace-expansion": "^1.0.0" 1826 | } 1827 | } 1828 | } 1829 | }, 1830 | "fill-range": { 1831 | "version": "4.0.0", 1832 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 1833 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 1834 | "dev": true, 1835 | "requires": { 1836 | "extend-shallow": "^2.0.1", 1837 | "is-number": "^3.0.0", 1838 | "repeat-string": "^1.6.1", 1839 | "to-regex-range": "^2.1.0" 1840 | }, 1841 | "dependencies": { 1842 | "extend-shallow": { 1843 | "version": "2.0.1", 1844 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1845 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1846 | "dev": true, 1847 | "requires": { 1848 | "is-extendable": "^0.1.0" 1849 | } 1850 | } 1851 | } 1852 | }, 1853 | "finalhandler": { 1854 | "version": "1.1.2", 1855 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1856 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1857 | "dev": true, 1858 | "requires": { 1859 | "debug": "2.6.9", 1860 | "encodeurl": "~1.0.2", 1861 | "escape-html": "~1.0.3", 1862 | "on-finished": "~2.3.0", 1863 | "parseurl": "~1.3.3", 1864 | "statuses": "~1.5.0", 1865 | "unpipe": "~1.0.0" 1866 | } 1867 | }, 1868 | "follow-redirects": { 1869 | "version": "1.14.9", 1870 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", 1871 | "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", 1872 | "dev": true 1873 | }, 1874 | "for-in": { 1875 | "version": "1.0.2", 1876 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1877 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1878 | "dev": true 1879 | }, 1880 | "foreach": { 1881 | "version": "2.0.5", 1882 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 1883 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", 1884 | "dev": true 1885 | }, 1886 | "fragment-cache": { 1887 | "version": "0.2.1", 1888 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 1889 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 1890 | "dev": true, 1891 | "requires": { 1892 | "map-cache": "^0.2.2" 1893 | } 1894 | }, 1895 | "fs-extra": { 1896 | "version": "10.0.1", 1897 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", 1898 | "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", 1899 | "requires": { 1900 | "graceful-fs": "^4.2.0", 1901 | "jsonfile": "^6.0.1", 1902 | "universalify": "^2.0.0" 1903 | }, 1904 | "dependencies": { 1905 | "universalify": { 1906 | "version": "2.0.0", 1907 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 1908 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" 1909 | } 1910 | } 1911 | }, 1912 | "fs.realpath": { 1913 | "version": "1.0.0", 1914 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1915 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1916 | "dev": true 1917 | }, 1918 | "fsevents": { 1919 | "version": "2.3.2", 1920 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1921 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1922 | "dev": true, 1923 | "optional": true 1924 | }, 1925 | "function-bind": { 1926 | "version": "1.1.1", 1927 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1928 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1929 | "dev": true 1930 | }, 1931 | "gensync": { 1932 | "version": "1.0.0-beta.2", 1933 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1934 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1935 | "dev": true 1936 | }, 1937 | "get-caller-file": { 1938 | "version": "2.0.5", 1939 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1940 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1941 | "dev": true 1942 | }, 1943 | "get-intrinsic": { 1944 | "version": "1.0.1", 1945 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", 1946 | "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", 1947 | "dev": true, 1948 | "requires": { 1949 | "function-bind": "^1.1.1", 1950 | "has": "^1.0.3", 1951 | "has-symbols": "^1.0.1" 1952 | } 1953 | }, 1954 | "get-value": { 1955 | "version": "2.0.6", 1956 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 1957 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 1958 | "dev": true 1959 | }, 1960 | "glob": { 1961 | "version": "7.1.6", 1962 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1963 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1964 | "dev": true, 1965 | "requires": { 1966 | "fs.realpath": "^1.0.0", 1967 | "inflight": "^1.0.4", 1968 | "inherits": "2", 1969 | "minimatch": "^3.0.4", 1970 | "once": "^1.3.0", 1971 | "path-is-absolute": "^1.0.0" 1972 | } 1973 | }, 1974 | "glob-parent": { 1975 | "version": "5.1.2", 1976 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1977 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1978 | "dev": true, 1979 | "requires": { 1980 | "is-glob": "^4.0.1" 1981 | } 1982 | }, 1983 | "globals": { 1984 | "version": "11.12.0", 1985 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1986 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1987 | "dev": true 1988 | }, 1989 | "graceful-fs": { 1990 | "version": "4.2.4", 1991 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 1992 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" 1993 | }, 1994 | "handlebars": { 1995 | "version": "4.7.7", 1996 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", 1997 | "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", 1998 | "dev": true, 1999 | "requires": { 2000 | "minimist": "^1.2.5", 2001 | "neo-async": "^2.6.0", 2002 | "source-map": "^0.6.1", 2003 | "uglify-js": "^3.1.4", 2004 | "wordwrap": "^1.0.0" 2005 | }, 2006 | "dependencies": { 2007 | "source-map": { 2008 | "version": "0.6.1", 2009 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2010 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2011 | "dev": true 2012 | }, 2013 | "wordwrap": { 2014 | "version": "1.0.0", 2015 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 2016 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 2017 | "dev": true 2018 | } 2019 | } 2020 | }, 2021 | "has": { 2022 | "version": "1.0.3", 2023 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2024 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2025 | "dev": true, 2026 | "requires": { 2027 | "function-bind": "^1.1.1" 2028 | } 2029 | }, 2030 | "has-flag": { 2031 | "version": "1.0.0", 2032 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 2033 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 2034 | "dev": true 2035 | }, 2036 | "has-symbols": { 2037 | "version": "1.0.1", 2038 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 2039 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 2040 | "dev": true 2041 | }, 2042 | "has-value": { 2043 | "version": "1.0.0", 2044 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 2045 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 2046 | "dev": true, 2047 | "requires": { 2048 | "get-value": "^2.0.6", 2049 | "has-values": "^1.0.0", 2050 | "isobject": "^3.0.0" 2051 | } 2052 | }, 2053 | "has-values": { 2054 | "version": "1.0.0", 2055 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 2056 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 2057 | "dev": true, 2058 | "requires": { 2059 | "is-number": "^3.0.0", 2060 | "kind-of": "^4.0.0" 2061 | }, 2062 | "dependencies": { 2063 | "kind-of": { 2064 | "version": "4.0.0", 2065 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 2066 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 2067 | "dev": true, 2068 | "requires": { 2069 | "is-buffer": "^1.1.5" 2070 | } 2071 | } 2072 | } 2073 | }, 2074 | "hash-base": { 2075 | "version": "3.1.0", 2076 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 2077 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 2078 | "dev": true, 2079 | "requires": { 2080 | "inherits": "^2.0.4", 2081 | "readable-stream": "^3.6.0", 2082 | "safe-buffer": "^5.2.0" 2083 | }, 2084 | "dependencies": { 2085 | "readable-stream": { 2086 | "version": "3.6.0", 2087 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 2088 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 2089 | "dev": true, 2090 | "requires": { 2091 | "inherits": "^2.0.3", 2092 | "string_decoder": "^1.1.1", 2093 | "util-deprecate": "^1.0.1" 2094 | } 2095 | }, 2096 | "safe-buffer": { 2097 | "version": "5.2.1", 2098 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2099 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2100 | "dev": true 2101 | } 2102 | } 2103 | }, 2104 | "hash.js": { 2105 | "version": "1.1.7", 2106 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 2107 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 2108 | "dev": true, 2109 | "requires": { 2110 | "inherits": "^2.0.3", 2111 | "minimalistic-assert": "^1.0.1" 2112 | } 2113 | }, 2114 | "hmac-drbg": { 2115 | "version": "1.0.1", 2116 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 2117 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 2118 | "dev": true, 2119 | "requires": { 2120 | "hash.js": "^1.0.3", 2121 | "minimalistic-assert": "^1.0.0", 2122 | "minimalistic-crypto-utils": "^1.0.1" 2123 | } 2124 | }, 2125 | "html-escaper": { 2126 | "version": "2.0.2", 2127 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 2128 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 2129 | "dev": true 2130 | }, 2131 | "http-errors": { 2132 | "version": "1.8.1", 2133 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 2134 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 2135 | "dev": true, 2136 | "requires": { 2137 | "depd": "~1.1.2", 2138 | "inherits": "2.0.4", 2139 | "setprototypeof": "1.2.0", 2140 | "statuses": ">= 1.5.0 < 2", 2141 | "toidentifier": "1.0.1" 2142 | } 2143 | }, 2144 | "http-proxy": { 2145 | "version": "1.18.1", 2146 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 2147 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 2148 | "dev": true, 2149 | "requires": { 2150 | "eventemitter3": "^4.0.0", 2151 | "follow-redirects": "^1.0.0", 2152 | "requires-port": "^1.0.0" 2153 | } 2154 | }, 2155 | "https-browserify": { 2156 | "version": "1.0.0", 2157 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 2158 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", 2159 | "dev": true 2160 | }, 2161 | "iconv-lite": { 2162 | "version": "0.4.24", 2163 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 2164 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 2165 | "dev": true, 2166 | "requires": { 2167 | "safer-buffer": ">= 2.1.2 < 3" 2168 | } 2169 | }, 2170 | "ieee754": { 2171 | "version": "1.2.1", 2172 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 2173 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 2174 | "dev": true 2175 | }, 2176 | "inflight": { 2177 | "version": "1.0.6", 2178 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2179 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2180 | "dev": true, 2181 | "requires": { 2182 | "once": "^1.3.0", 2183 | "wrappy": "1" 2184 | } 2185 | }, 2186 | "inherits": { 2187 | "version": "2.0.4", 2188 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2189 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2190 | "dev": true 2191 | }, 2192 | "inline-source-map": { 2193 | "version": "0.6.2", 2194 | "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", 2195 | "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", 2196 | "dev": true, 2197 | "requires": { 2198 | "source-map": "~0.5.3" 2199 | } 2200 | }, 2201 | "is-accessor-descriptor": { 2202 | "version": "0.1.6", 2203 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 2204 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 2205 | "dev": true, 2206 | "requires": { 2207 | "kind-of": "^3.0.2" 2208 | }, 2209 | "dependencies": { 2210 | "kind-of": { 2211 | "version": "3.2.2", 2212 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2213 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2214 | "dev": true, 2215 | "requires": { 2216 | "is-buffer": "^1.1.5" 2217 | } 2218 | } 2219 | } 2220 | }, 2221 | "is-arguments": { 2222 | "version": "1.0.4", 2223 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", 2224 | "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", 2225 | "dev": true 2226 | }, 2227 | "is-binary-path": { 2228 | "version": "2.1.0", 2229 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 2230 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 2231 | "dev": true, 2232 | "requires": { 2233 | "binary-extensions": "^2.0.0" 2234 | } 2235 | }, 2236 | "is-buffer": { 2237 | "version": "1.1.6", 2238 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 2239 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 2240 | "dev": true 2241 | }, 2242 | "is-callable": { 2243 | "version": "1.2.2", 2244 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", 2245 | "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", 2246 | "dev": true 2247 | }, 2248 | "is-core-module": { 2249 | "version": "2.1.0", 2250 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", 2251 | "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", 2252 | "dev": true, 2253 | "requires": { 2254 | "has": "^1.0.3" 2255 | } 2256 | }, 2257 | "is-data-descriptor": { 2258 | "version": "0.1.4", 2259 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 2260 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 2261 | "dev": true, 2262 | "requires": { 2263 | "kind-of": "^3.0.2" 2264 | }, 2265 | "dependencies": { 2266 | "kind-of": { 2267 | "version": "3.2.2", 2268 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2269 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2270 | "dev": true, 2271 | "requires": { 2272 | "is-buffer": "^1.1.5" 2273 | } 2274 | } 2275 | } 2276 | }, 2277 | "is-date-object": { 2278 | "version": "1.0.2", 2279 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 2280 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 2281 | "dev": true 2282 | }, 2283 | "is-descriptor": { 2284 | "version": "0.1.6", 2285 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 2286 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 2287 | "dev": true, 2288 | "requires": { 2289 | "is-accessor-descriptor": "^0.1.6", 2290 | "is-data-descriptor": "^0.1.4", 2291 | "kind-of": "^5.0.0" 2292 | }, 2293 | "dependencies": { 2294 | "kind-of": { 2295 | "version": "5.1.0", 2296 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 2297 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 2298 | "dev": true 2299 | } 2300 | } 2301 | }, 2302 | "is-extendable": { 2303 | "version": "0.1.1", 2304 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 2305 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2306 | "dev": true 2307 | }, 2308 | "is-extglob": { 2309 | "version": "2.1.1", 2310 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2311 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2312 | "dev": true 2313 | }, 2314 | "is-fullwidth-code-point": { 2315 | "version": "3.0.0", 2316 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2317 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2318 | "dev": true 2319 | }, 2320 | "is-generator-function": { 2321 | "version": "1.0.7", 2322 | "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", 2323 | "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==", 2324 | "dev": true 2325 | }, 2326 | "is-glob": { 2327 | "version": "4.0.3", 2328 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2329 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2330 | "dev": true, 2331 | "requires": { 2332 | "is-extglob": "^2.1.1" 2333 | } 2334 | }, 2335 | "is-nan": { 2336 | "version": "1.3.0", 2337 | "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.0.tgz", 2338 | "integrity": "sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==", 2339 | "dev": true, 2340 | "requires": { 2341 | "define-properties": "^1.1.3" 2342 | } 2343 | }, 2344 | "is-negative-zero": { 2345 | "version": "2.0.0", 2346 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", 2347 | "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", 2348 | "dev": true 2349 | }, 2350 | "is-number": { 2351 | "version": "3.0.0", 2352 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 2353 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2354 | "dev": true, 2355 | "requires": { 2356 | "kind-of": "^3.0.2" 2357 | }, 2358 | "dependencies": { 2359 | "kind-of": { 2360 | "version": "3.2.2", 2361 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2362 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2363 | "dev": true, 2364 | "requires": { 2365 | "is-buffer": "^1.1.5" 2366 | } 2367 | } 2368 | } 2369 | }, 2370 | "is-plain-object": { 2371 | "version": "2.0.4", 2372 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 2373 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 2374 | "dev": true, 2375 | "requires": { 2376 | "isobject": "^3.0.1" 2377 | } 2378 | }, 2379 | "is-regex": { 2380 | "version": "1.1.1", 2381 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", 2382 | "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", 2383 | "dev": true, 2384 | "requires": { 2385 | "has-symbols": "^1.0.1" 2386 | } 2387 | }, 2388 | "is-symbol": { 2389 | "version": "1.0.3", 2390 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 2391 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 2392 | "dev": true, 2393 | "requires": { 2394 | "has-symbols": "^1.0.1" 2395 | } 2396 | }, 2397 | "is-typed-array": { 2398 | "version": "1.1.3", 2399 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", 2400 | "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", 2401 | "dev": true, 2402 | "requires": { 2403 | "available-typed-arrays": "^1.0.0", 2404 | "es-abstract": "^1.17.4", 2405 | "foreach": "^2.0.5", 2406 | "has-symbols": "^1.0.1" 2407 | }, 2408 | "dependencies": { 2409 | "es-abstract": { 2410 | "version": "1.17.7", 2411 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", 2412 | "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", 2413 | "dev": true, 2414 | "requires": { 2415 | "es-to-primitive": "^1.2.1", 2416 | "function-bind": "^1.1.1", 2417 | "has": "^1.0.3", 2418 | "has-symbols": "^1.0.1", 2419 | "is-callable": "^1.2.2", 2420 | "is-regex": "^1.1.1", 2421 | "object-inspect": "^1.8.0", 2422 | "object-keys": "^1.1.1", 2423 | "object.assign": "^4.1.1", 2424 | "string.prototype.trimend": "^1.0.1", 2425 | "string.prototype.trimstart": "^1.0.1" 2426 | } 2427 | } 2428 | } 2429 | }, 2430 | "is-windows": { 2431 | "version": "1.0.2", 2432 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 2433 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 2434 | "dev": true 2435 | }, 2436 | "isarray": { 2437 | "version": "1.0.0", 2438 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2439 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2440 | "dev": true 2441 | }, 2442 | "isbinaryfile": { 2443 | "version": "4.0.8", 2444 | "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", 2445 | "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", 2446 | "dev": true 2447 | }, 2448 | "isexe": { 2449 | "version": "2.0.0", 2450 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2451 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2452 | "dev": true 2453 | }, 2454 | "isobject": { 2455 | "version": "3.0.1", 2456 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2457 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2458 | "dev": true 2459 | }, 2460 | "istanbul": { 2461 | "version": "0.3.22", 2462 | "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.3.22.tgz", 2463 | "integrity": "sha1-PhZNhQIf4ZyYXR8OfvDD4i0BLrY=", 2464 | "dev": true, 2465 | "requires": { 2466 | "abbrev": "1.0.x", 2467 | "async": "1.x", 2468 | "escodegen": "1.7.x", 2469 | "esprima": "2.5.x", 2470 | "fileset": "0.2.x", 2471 | "handlebars": "^4.0.1", 2472 | "js-yaml": "3.x", 2473 | "mkdirp": "0.5.x", 2474 | "nopt": "3.x", 2475 | "once": "1.x", 2476 | "resolve": "1.1.x", 2477 | "supports-color": "^3.1.0", 2478 | "which": "^1.1.1", 2479 | "wordwrap": "^1.0.0" 2480 | }, 2481 | "dependencies": { 2482 | "wordwrap": { 2483 | "version": "1.0.0", 2484 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 2485 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 2486 | "dev": true 2487 | } 2488 | } 2489 | }, 2490 | "istanbul-lib-coverage": { 2491 | "version": "3.0.0", 2492 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", 2493 | "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", 2494 | "dev": true 2495 | }, 2496 | "istanbul-lib-instrument": { 2497 | "version": "4.0.3", 2498 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", 2499 | "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", 2500 | "dev": true, 2501 | "requires": { 2502 | "@babel/core": "^7.7.5", 2503 | "@istanbuljs/schema": "^0.1.2", 2504 | "istanbul-lib-coverage": "^3.0.0", 2505 | "semver": "^6.3.0" 2506 | } 2507 | }, 2508 | "istanbul-lib-report": { 2509 | "version": "3.0.0", 2510 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", 2511 | "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", 2512 | "dev": true, 2513 | "requires": { 2514 | "istanbul-lib-coverage": "^3.0.0", 2515 | "make-dir": "^3.0.0", 2516 | "supports-color": "^7.1.0" 2517 | }, 2518 | "dependencies": { 2519 | "has-flag": { 2520 | "version": "4.0.0", 2521 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2522 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2523 | "dev": true 2524 | }, 2525 | "supports-color": { 2526 | "version": "7.2.0", 2527 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2528 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2529 | "dev": true, 2530 | "requires": { 2531 | "has-flag": "^4.0.0" 2532 | } 2533 | } 2534 | } 2535 | }, 2536 | "istanbul-lib-source-maps": { 2537 | "version": "4.0.0", 2538 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", 2539 | "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", 2540 | "dev": true, 2541 | "requires": { 2542 | "debug": "^4.1.1", 2543 | "istanbul-lib-coverage": "^3.0.0", 2544 | "source-map": "^0.6.1" 2545 | }, 2546 | "dependencies": { 2547 | "debug": { 2548 | "version": "4.3.1", 2549 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 2550 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 2551 | "dev": true, 2552 | "requires": { 2553 | "ms": "2.1.2" 2554 | } 2555 | }, 2556 | "ms": { 2557 | "version": "2.1.2", 2558 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2559 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2560 | "dev": true 2561 | }, 2562 | "source-map": { 2563 | "version": "0.6.1", 2564 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2565 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2566 | "dev": true 2567 | } 2568 | } 2569 | }, 2570 | "istanbul-reports": { 2571 | "version": "3.0.2", 2572 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", 2573 | "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", 2574 | "dev": true, 2575 | "requires": { 2576 | "html-escaper": "^2.0.0", 2577 | "istanbul-lib-report": "^3.0.0" 2578 | } 2579 | }, 2580 | "jasmine-core": { 2581 | "version": "3.6.0", 2582 | "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", 2583 | "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", 2584 | "dev": true 2585 | }, 2586 | "js-tokens": { 2587 | "version": "4.0.0", 2588 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2589 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2590 | "dev": true 2591 | }, 2592 | "js-yaml": { 2593 | "version": "3.14.0", 2594 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", 2595 | "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", 2596 | "dev": true, 2597 | "requires": { 2598 | "argparse": "^1.0.7", 2599 | "esprima": "^4.0.0" 2600 | }, 2601 | "dependencies": { 2602 | "esprima": { 2603 | "version": "4.0.1", 2604 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 2605 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 2606 | "dev": true 2607 | } 2608 | } 2609 | }, 2610 | "jsesc": { 2611 | "version": "2.5.2", 2612 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2613 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2614 | "dev": true 2615 | }, 2616 | "json-schema-traverse": { 2617 | "version": "0.4.1", 2618 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2619 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2620 | "dev": true 2621 | }, 2622 | "json-stringify-safe": { 2623 | "version": "5.0.1", 2624 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 2625 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 2626 | "dev": true 2627 | }, 2628 | "json5": { 2629 | "version": "1.0.1", 2630 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 2631 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 2632 | "dev": true, 2633 | "requires": { 2634 | "minimist": "^1.2.0" 2635 | } 2636 | }, 2637 | "jsonfile": { 2638 | "version": "6.1.0", 2639 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 2640 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 2641 | "requires": { 2642 | "graceful-fs": "^4.1.6", 2643 | "universalify": "^2.0.0" 2644 | }, 2645 | "dependencies": { 2646 | "universalify": { 2647 | "version": "2.0.0", 2648 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 2649 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" 2650 | } 2651 | } 2652 | }, 2653 | "karma": { 2654 | "version": "6.3.16", 2655 | "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.16.tgz", 2656 | "integrity": "sha512-nEU50jLvDe5yvXqkEJRf8IuvddUkOY2x5Xc4WXHz6dxINgGDrgD2uqQWeVrJs4hbfNaotn+HQ1LZJ4yOXrL7xQ==", 2657 | "dev": true, 2658 | "requires": { 2659 | "body-parser": "^1.19.0", 2660 | "braces": "^3.0.2", 2661 | "chokidar": "^3.5.1", 2662 | "colors": "1.4.0", 2663 | "connect": "^3.7.0", 2664 | "di": "^0.0.1", 2665 | "dom-serialize": "^2.2.1", 2666 | "glob": "^7.1.7", 2667 | "graceful-fs": "^4.2.6", 2668 | "http-proxy": "^1.18.1", 2669 | "isbinaryfile": "^4.0.8", 2670 | "lodash": "^4.17.21", 2671 | "log4js": "^6.4.1", 2672 | "mime": "^2.5.2", 2673 | "minimatch": "^3.0.4", 2674 | "mkdirp": "^0.5.5", 2675 | "qjobs": "^1.2.0", 2676 | "range-parser": "^1.2.1", 2677 | "rimraf": "^3.0.2", 2678 | "socket.io": "^4.2.0", 2679 | "source-map": "^0.6.1", 2680 | "tmp": "^0.2.1", 2681 | "ua-parser-js": "^0.7.30", 2682 | "yargs": "^16.1.1" 2683 | }, 2684 | "dependencies": { 2685 | "braces": { 2686 | "version": "3.0.2", 2687 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 2688 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 2689 | "dev": true, 2690 | "requires": { 2691 | "fill-range": "^7.0.1" 2692 | } 2693 | }, 2694 | "date-format": { 2695 | "version": "4.0.3", 2696 | "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz", 2697 | "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==" 2698 | }, 2699 | "debug": { 2700 | "version": "4.3.3", 2701 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 2702 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 2703 | "requires": { 2704 | "ms": "2.1.2" 2705 | } 2706 | }, 2707 | "fill-range": { 2708 | "version": "7.0.1", 2709 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2710 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2711 | "dev": true, 2712 | "requires": { 2713 | "to-regex-range": "^5.0.1" 2714 | } 2715 | }, 2716 | "flatted": { 2717 | "version": "3.2.5", 2718 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", 2719 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" 2720 | }, 2721 | "glob": { 2722 | "version": "7.2.0", 2723 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 2724 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 2725 | "dev": true, 2726 | "requires": { 2727 | "fs.realpath": "^1.0.0", 2728 | "inflight": "^1.0.4", 2729 | "inherits": "2", 2730 | "minimatch": "^3.0.4", 2731 | "once": "^1.3.0", 2732 | "path-is-absolute": "^1.0.0" 2733 | } 2734 | }, 2735 | "graceful-fs": { 2736 | "version": "4.2.9", 2737 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", 2738 | "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", 2739 | "dev": true 2740 | }, 2741 | "is-number": { 2742 | "version": "7.0.0", 2743 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2744 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2745 | "dev": true 2746 | }, 2747 | "ms": { 2748 | "version": "2.1.2", 2749 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2750 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2751 | }, 2752 | "rfdc": { 2753 | "version": "1.3.0", 2754 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", 2755 | "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" 2756 | }, 2757 | "source-map": { 2758 | "version": "0.6.1", 2759 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2760 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2761 | "dev": true 2762 | }, 2763 | "streamroller": { 2764 | "version": "3.0.2", 2765 | "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.2.tgz", 2766 | "integrity": "sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA==", 2767 | "requires": { 2768 | "date-format": "^4.0.3", 2769 | "debug": "^4.1.1", 2770 | "fs-extra": "^10.0.0" 2771 | } 2772 | }, 2773 | "to-regex-range": { 2774 | "version": "5.0.1", 2775 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2776 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2777 | "dev": true, 2778 | "requires": { 2779 | "is-number": "^7.0.0" 2780 | } 2781 | } 2782 | } 2783 | }, 2784 | "karma-chrome-launcher": { 2785 | "version": "3.1.0", 2786 | "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", 2787 | "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", 2788 | "dev": true, 2789 | "requires": { 2790 | "which": "^1.2.1" 2791 | } 2792 | }, 2793 | "karma-es6-shim": { 2794 | "version": "1.0.0", 2795 | "resolved": "https://registry.npmjs.org/karma-es6-shim/-/karma-es6-shim-1.0.0.tgz", 2796 | "integrity": "sha1-qutTCGK895NA69WI9PnlfehCtHk=", 2797 | "dev": true, 2798 | "requires": { 2799 | "es5-shim": "~4.5.8", 2800 | "es6-shim": "~0.35.0" 2801 | } 2802 | }, 2803 | "karma-jasmine": { 2804 | "version": "4.0.1", 2805 | "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", 2806 | "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", 2807 | "dev": true, 2808 | "requires": { 2809 | "jasmine-core": "^3.6.0" 2810 | } 2811 | }, 2812 | "karma-jasmine-html-reporter": { 2813 | "version": "1.5.4", 2814 | "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", 2815 | "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", 2816 | "dev": true 2817 | }, 2818 | "karma-junit-reporter": { 2819 | "version": "2.0.1", 2820 | "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-2.0.1.tgz", 2821 | "integrity": "sha512-VtcGfE0JE4OE1wn0LK8xxDKaTP7slN8DO3I+4xg6gAi1IoAHAXOJ1V9G/y45Xg6sxdxPOR3THCFtDlAfBo9Afw==", 2822 | "dev": true, 2823 | "requires": { 2824 | "path-is-absolute": "^1.0.0", 2825 | "xmlbuilder": "12.0.0" 2826 | } 2827 | }, 2828 | "karma-sourcemap-loader": { 2829 | "version": "0.3.8", 2830 | "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz", 2831 | "integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==", 2832 | "dev": true, 2833 | "requires": { 2834 | "graceful-fs": "^4.1.2" 2835 | } 2836 | }, 2837 | "karma-spec-reporter": { 2838 | "version": "0.0.32", 2839 | "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.32.tgz", 2840 | "integrity": "sha1-LpxyB+pyZ3EmAln4K+y1QyCeRAo=", 2841 | "dev": true, 2842 | "requires": { 2843 | "colors": "^1.1.2" 2844 | } 2845 | }, 2846 | "karma-threshold-reporter": { 2847 | "version": "0.1.15", 2848 | "resolved": "https://registry.npmjs.org/karma-threshold-reporter/-/karma-threshold-reporter-0.1.15.tgz", 2849 | "integrity": "sha1-tLnz8Go+Aj0qE2BwP5Dwm5sE4PE=", 2850 | "dev": true, 2851 | "requires": { 2852 | "istanbul": "~0.3.2" 2853 | } 2854 | }, 2855 | "karma-typescript": { 2856 | "version": "5.2.0", 2857 | "resolved": "https://registry.npmjs.org/karma-typescript/-/karma-typescript-5.2.0.tgz", 2858 | "integrity": "sha512-idMJ0SKPLYudNiPaRw+GyOu0RQPJFpyUfrSN6/uFTzPLnJ7sLDd6xPMcxB+pNBHpL6s4fQfC5W9OlNblRvt2Dg==", 2859 | "dev": true, 2860 | "requires": { 2861 | "acorn": "^8.0.1", 2862 | "acorn-walk": "^8.0.0", 2863 | "assert": "^2.0.0", 2864 | "async": "^3.0.1", 2865 | "browser-resolve": "^2.0.0", 2866 | "browserify-zlib": "^0.2.0", 2867 | "buffer": "^5.4.3", 2868 | "combine-source-map": "^0.8.0", 2869 | "console-browserify": "^1.2.0", 2870 | "constants-browserify": "^1.0.0", 2871 | "convert-source-map": "^1.7.0", 2872 | "crypto-browserify": "^3.12.0", 2873 | "diff": "^4.0.1", 2874 | "domain-browser": "^4.16.0", 2875 | "events": "^3.2.0", 2876 | "glob": "^7.1.6", 2877 | "https-browserify": "^1.0.0", 2878 | "istanbul-lib-coverage": "^3.0.0", 2879 | "istanbul-lib-instrument": "^4.0.0", 2880 | "istanbul-lib-report": "^3.0.0", 2881 | "istanbul-lib-source-maps": "^4.0.0", 2882 | "istanbul-reports": "^3.0.0", 2883 | "json-stringify-safe": "^5.0.1", 2884 | "lodash": "^4.17.19", 2885 | "log4js": "^6.3.0", 2886 | "minimatch": "^3.0.4", 2887 | "os-browserify": "^0.3.0", 2888 | "pad": "^3.2.0", 2889 | "path-browserify": "^1.0.0", 2890 | "process": "^0.11.10", 2891 | "punycode": "^2.1.1", 2892 | "querystring-es3": "^0.2.1", 2893 | "readable-stream": "^3.1.1", 2894 | "source-map": "^0.7.3", 2895 | "stream-browserify": "^3.0.0", 2896 | "stream-http": "^3.1.0", 2897 | "string_decoder": "^1.3.0", 2898 | "timers-browserify": "^2.0.11", 2899 | "tmp": "^0.2.1", 2900 | "tty-browserify": "^0.0.1", 2901 | "url": "^0.11.0", 2902 | "util": "^0.12.1", 2903 | "vm-browserify": "^1.1.2" 2904 | }, 2905 | "dependencies": { 2906 | "async": { 2907 | "version": "3.2.0", 2908 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", 2909 | "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", 2910 | "dev": true 2911 | }, 2912 | "readable-stream": { 2913 | "version": "3.6.0", 2914 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 2915 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 2916 | "dev": true, 2917 | "requires": { 2918 | "inherits": "^2.0.3", 2919 | "string_decoder": "^1.1.1", 2920 | "util-deprecate": "^1.0.1" 2921 | } 2922 | }, 2923 | "safe-buffer": { 2924 | "version": "5.2.1", 2925 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2926 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2927 | "dev": true 2928 | }, 2929 | "source-map": { 2930 | "version": "0.7.3", 2931 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 2932 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", 2933 | "dev": true 2934 | }, 2935 | "string_decoder": { 2936 | "version": "1.3.0", 2937 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2938 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2939 | "dev": true, 2940 | "requires": { 2941 | "safe-buffer": "~5.2.0" 2942 | } 2943 | } 2944 | } 2945 | }, 2946 | "kind-of": { 2947 | "version": "6.0.3", 2948 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 2949 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 2950 | "dev": true 2951 | }, 2952 | "levn": { 2953 | "version": "0.2.5", 2954 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.2.5.tgz", 2955 | "integrity": "sha1-uo0znQykphDjo/FFucr0iAcVUFQ=", 2956 | "dev": true, 2957 | "requires": { 2958 | "prelude-ls": "~1.1.0", 2959 | "type-check": "~0.3.1" 2960 | } 2961 | }, 2962 | "loader-utils": { 2963 | "version": "1.4.0", 2964 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", 2965 | "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", 2966 | "dev": true, 2967 | "requires": { 2968 | "big.js": "^5.2.2", 2969 | "emojis-list": "^3.0.0", 2970 | "json5": "^1.0.1" 2971 | } 2972 | }, 2973 | "lodash": { 2974 | "version": "4.17.21", 2975 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2976 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 2977 | "dev": true 2978 | }, 2979 | "lodash.memoize": { 2980 | "version": "3.0.4", 2981 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", 2982 | "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", 2983 | "dev": true 2984 | }, 2985 | "log-symbols": { 2986 | "version": "2.2.0", 2987 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 2988 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 2989 | "dev": true, 2990 | "requires": { 2991 | "chalk": "^2.0.1" 2992 | } 2993 | }, 2994 | "log4js": { 2995 | "version": "6.4.2", 2996 | "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.2.tgz", 2997 | "integrity": "sha512-k80cggS2sZQLBwllpT1p06GtfvzMmSdUCkW96f0Hj83rKGJDAu2vZjt9B9ag2vx8Zz1IXzxoLgqvRJCdMKybGg==", 2998 | "dev": true, 2999 | "requires": { 3000 | "date-format": "^4.0.4", 3001 | "debug": "^4.3.3", 3002 | "flatted": "^3.2.5", 3003 | "rfdc": "^1.3.0", 3004 | "streamroller": "^3.0.4" 3005 | }, 3006 | "dependencies": { 3007 | "date-format": { 3008 | "version": "4.0.4", 3009 | "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.4.tgz", 3010 | "integrity": "sha512-/jyf4rhB17ge328HJuJjAcmRtCsGd+NDeAtahRBTaK6vSPR6MO5HlrAit3Nn7dVjaa6sowW0WXt8yQtLyZQFRg==", 3011 | "dev": true 3012 | }, 3013 | "debug": { 3014 | "version": "4.3.3", 3015 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 3016 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 3017 | "dev": true, 3018 | "requires": { 3019 | "ms": "2.1.2" 3020 | } 3021 | }, 3022 | "flatted": { 3023 | "version": "3.2.5", 3024 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", 3025 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 3026 | "dev": true 3027 | }, 3028 | "ms": { 3029 | "version": "2.1.2", 3030 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3031 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3032 | "dev": true 3033 | }, 3034 | "rfdc": { 3035 | "version": "1.3.0", 3036 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", 3037 | "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", 3038 | "dev": true 3039 | }, 3040 | "streamroller": { 3041 | "version": "3.0.4", 3042 | "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.4.tgz", 3043 | "integrity": "sha512-GI9NzeD+D88UFuIlJkKNDH/IsuR+qIN7Qh8EsmhoRZr9bQoehTraRgwtLUkZbpcAw+hLPfHOypmppz8YyGK68w==", 3044 | "dev": true, 3045 | "requires": { 3046 | "date-format": "^4.0.4", 3047 | "debug": "^4.3.3", 3048 | "fs-extra": "^10.0.1" 3049 | } 3050 | } 3051 | } 3052 | }, 3053 | "loglevelnext": { 3054 | "version": "1.0.5", 3055 | "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", 3056 | "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", 3057 | "dev": true, 3058 | "requires": { 3059 | "es6-symbol": "^3.1.1", 3060 | "object.assign": "^4.1.0" 3061 | } 3062 | }, 3063 | "make-dir": { 3064 | "version": "3.1.0", 3065 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 3066 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 3067 | "dev": true, 3068 | "requires": { 3069 | "semver": "^6.0.0" 3070 | } 3071 | }, 3072 | "map-cache": { 3073 | "version": "0.2.2", 3074 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 3075 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 3076 | "dev": true 3077 | }, 3078 | "map-visit": { 3079 | "version": "1.0.0", 3080 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 3081 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 3082 | "dev": true, 3083 | "requires": { 3084 | "object-visit": "^1.0.0" 3085 | } 3086 | }, 3087 | "md5.js": { 3088 | "version": "1.3.5", 3089 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 3090 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 3091 | "dev": true, 3092 | "requires": { 3093 | "hash-base": "^3.0.0", 3094 | "inherits": "^2.0.1", 3095 | "safe-buffer": "^5.1.2" 3096 | } 3097 | }, 3098 | "media-typer": { 3099 | "version": "0.3.0", 3100 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 3101 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 3102 | "dev": true 3103 | }, 3104 | "memory-fs": { 3105 | "version": "0.5.0", 3106 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", 3107 | "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", 3108 | "dev": true, 3109 | "requires": { 3110 | "errno": "^0.1.3", 3111 | "readable-stream": "^2.0.1" 3112 | } 3113 | }, 3114 | "micromatch": { 3115 | "version": "3.1.10", 3116 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 3117 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 3118 | "dev": true, 3119 | "requires": { 3120 | "arr-diff": "^4.0.0", 3121 | "array-unique": "^0.3.2", 3122 | "braces": "^2.3.1", 3123 | "define-property": "^2.0.2", 3124 | "extend-shallow": "^3.0.2", 3125 | "extglob": "^2.0.4", 3126 | "fragment-cache": "^0.2.1", 3127 | "kind-of": "^6.0.2", 3128 | "nanomatch": "^1.2.9", 3129 | "object.pick": "^1.3.0", 3130 | "regex-not": "^1.0.0", 3131 | "snapdragon": "^0.8.1", 3132 | "to-regex": "^3.0.2" 3133 | } 3134 | }, 3135 | "miller-rabin": { 3136 | "version": "4.0.1", 3137 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 3138 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 3139 | "dev": true, 3140 | "requires": { 3141 | "bn.js": "^4.0.0", 3142 | "brorand": "^1.0.1" 3143 | }, 3144 | "dependencies": { 3145 | "bn.js": { 3146 | "version": "4.11.9", 3147 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 3148 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 3149 | "dev": true 3150 | } 3151 | } 3152 | }, 3153 | "mime": { 3154 | "version": "2.6.0", 3155 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", 3156 | "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", 3157 | "dev": true 3158 | }, 3159 | "mime-db": { 3160 | "version": "1.51.0", 3161 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", 3162 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", 3163 | "dev": true 3164 | }, 3165 | "mime-types": { 3166 | "version": "2.1.34", 3167 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", 3168 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 3169 | "dev": true, 3170 | "requires": { 3171 | "mime-db": "1.51.0" 3172 | } 3173 | }, 3174 | "minimalistic-assert": { 3175 | "version": "1.0.1", 3176 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 3177 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 3178 | "dev": true 3179 | }, 3180 | "minimalistic-crypto-utils": { 3181 | "version": "1.0.1", 3182 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 3183 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", 3184 | "dev": true 3185 | }, 3186 | "minimatch": { 3187 | "version": "3.0.4", 3188 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 3189 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 3190 | "dev": true, 3191 | "requires": { 3192 | "brace-expansion": "^1.1.7" 3193 | } 3194 | }, 3195 | "minimist": { 3196 | "version": "1.2.6", 3197 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 3198 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 3199 | "dev": true 3200 | }, 3201 | "mixin-deep": { 3202 | "version": "1.3.2", 3203 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", 3204 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", 3205 | "dev": true, 3206 | "requires": { 3207 | "for-in": "^1.0.2", 3208 | "is-extendable": "^1.0.1" 3209 | }, 3210 | "dependencies": { 3211 | "is-extendable": { 3212 | "version": "1.0.1", 3213 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 3214 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 3215 | "dev": true, 3216 | "requires": { 3217 | "is-plain-object": "^2.0.4" 3218 | } 3219 | } 3220 | } 3221 | }, 3222 | "mkdirp": { 3223 | "version": "0.5.5", 3224 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 3225 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 3226 | "dev": true, 3227 | "requires": { 3228 | "minimist": "^1.2.5" 3229 | } 3230 | }, 3231 | "ms": { 3232 | "version": "2.0.0", 3233 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3234 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 3235 | "dev": true 3236 | }, 3237 | "nanomatch": { 3238 | "version": "1.2.13", 3239 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 3240 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 3241 | "dev": true, 3242 | "requires": { 3243 | "arr-diff": "^4.0.0", 3244 | "array-unique": "^0.3.2", 3245 | "define-property": "^2.0.2", 3246 | "extend-shallow": "^3.0.2", 3247 | "fragment-cache": "^0.2.1", 3248 | "is-windows": "^1.0.2", 3249 | "kind-of": "^6.0.2", 3250 | "object.pick": "^1.3.0", 3251 | "regex-not": "^1.0.0", 3252 | "snapdragon": "^0.8.1", 3253 | "to-regex": "^3.0.1" 3254 | } 3255 | }, 3256 | "negotiator": { 3257 | "version": "0.6.3", 3258 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 3259 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 3260 | "dev": true 3261 | }, 3262 | "neo-async": { 3263 | "version": "2.6.2", 3264 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 3265 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 3266 | "dev": true 3267 | }, 3268 | "next-tick": { 3269 | "version": "1.0.0", 3270 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", 3271 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", 3272 | "dev": true 3273 | }, 3274 | "nopt": { 3275 | "version": "3.0.6", 3276 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", 3277 | "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", 3278 | "dev": true, 3279 | "requires": { 3280 | "abbrev": "1" 3281 | } 3282 | }, 3283 | "normalize-path": { 3284 | "version": "3.0.0", 3285 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3286 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3287 | "dev": true 3288 | }, 3289 | "object-assign": { 3290 | "version": "4.1.1", 3291 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 3292 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 3293 | "dev": true 3294 | }, 3295 | "object-copy": { 3296 | "version": "0.1.0", 3297 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 3298 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 3299 | "dev": true, 3300 | "requires": { 3301 | "copy-descriptor": "^0.1.0", 3302 | "define-property": "^0.2.5", 3303 | "kind-of": "^3.0.3" 3304 | }, 3305 | "dependencies": { 3306 | "define-property": { 3307 | "version": "0.2.5", 3308 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3309 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3310 | "dev": true, 3311 | "requires": { 3312 | "is-descriptor": "^0.1.0" 3313 | } 3314 | }, 3315 | "kind-of": { 3316 | "version": "3.2.2", 3317 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3318 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3319 | "dev": true, 3320 | "requires": { 3321 | "is-buffer": "^1.1.5" 3322 | } 3323 | } 3324 | } 3325 | }, 3326 | "object-inspect": { 3327 | "version": "1.8.0", 3328 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", 3329 | "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", 3330 | "dev": true 3331 | }, 3332 | "object-is": { 3333 | "version": "1.1.3", 3334 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", 3335 | "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", 3336 | "dev": true, 3337 | "requires": { 3338 | "define-properties": "^1.1.3", 3339 | "es-abstract": "^1.18.0-next.1" 3340 | } 3341 | }, 3342 | "object-keys": { 3343 | "version": "1.1.1", 3344 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 3345 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 3346 | "dev": true 3347 | }, 3348 | "object-visit": { 3349 | "version": "1.0.1", 3350 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 3351 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 3352 | "dev": true, 3353 | "requires": { 3354 | "isobject": "^3.0.0" 3355 | } 3356 | }, 3357 | "object.assign": { 3358 | "version": "4.1.2", 3359 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 3360 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 3361 | "dev": true, 3362 | "requires": { 3363 | "call-bind": "^1.0.0", 3364 | "define-properties": "^1.1.3", 3365 | "has-symbols": "^1.0.1", 3366 | "object-keys": "^1.1.1" 3367 | } 3368 | }, 3369 | "object.pick": { 3370 | "version": "1.3.0", 3371 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 3372 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 3373 | "dev": true, 3374 | "requires": { 3375 | "isobject": "^3.0.1" 3376 | } 3377 | }, 3378 | "on-finished": { 3379 | "version": "2.3.0", 3380 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 3381 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 3382 | "dev": true, 3383 | "requires": { 3384 | "ee-first": "1.1.1" 3385 | } 3386 | }, 3387 | "once": { 3388 | "version": "1.4.0", 3389 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3390 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3391 | "dev": true, 3392 | "requires": { 3393 | "wrappy": "1" 3394 | } 3395 | }, 3396 | "optionator": { 3397 | "version": "0.5.0", 3398 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.5.0.tgz", 3399 | "integrity": "sha1-t1qJlaLUF98ltuTjhi9QqohlE2g=", 3400 | "dev": true, 3401 | "requires": { 3402 | "deep-is": "~0.1.2", 3403 | "fast-levenshtein": "~1.0.0", 3404 | "levn": "~0.2.5", 3405 | "prelude-ls": "~1.1.1", 3406 | "type-check": "~0.3.1", 3407 | "wordwrap": "~0.0.2" 3408 | } 3409 | }, 3410 | "os-browserify": { 3411 | "version": "0.3.0", 3412 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 3413 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", 3414 | "dev": true 3415 | }, 3416 | "pad": { 3417 | "version": "3.2.0", 3418 | "resolved": "https://registry.npmjs.org/pad/-/pad-3.2.0.tgz", 3419 | "integrity": "sha512-2u0TrjcGbOjBTJpyewEl4hBO3OeX5wWue7eIFPzQTg6wFSvoaHcBTTUY5m+n0hd04gmTCPuY0kCpVIVuw5etwg==", 3420 | "dev": true, 3421 | "requires": { 3422 | "wcwidth": "^1.0.1" 3423 | } 3424 | }, 3425 | "pako": { 3426 | "version": "1.0.11", 3427 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 3428 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 3429 | "dev": true 3430 | }, 3431 | "parse-asn1": { 3432 | "version": "5.1.6", 3433 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", 3434 | "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", 3435 | "dev": true, 3436 | "requires": { 3437 | "asn1.js": "^5.2.0", 3438 | "browserify-aes": "^1.0.0", 3439 | "evp_bytestokey": "^1.0.0", 3440 | "pbkdf2": "^3.0.3", 3441 | "safe-buffer": "^5.1.1" 3442 | } 3443 | }, 3444 | "parseurl": { 3445 | "version": "1.3.3", 3446 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 3447 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 3448 | "dev": true 3449 | }, 3450 | "pascalcase": { 3451 | "version": "0.1.1", 3452 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 3453 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 3454 | "dev": true 3455 | }, 3456 | "path-browserify": { 3457 | "version": "1.0.1", 3458 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", 3459 | "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", 3460 | "dev": true 3461 | }, 3462 | "path-is-absolute": { 3463 | "version": "1.0.1", 3464 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3465 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3466 | "dev": true 3467 | }, 3468 | "path-parse": { 3469 | "version": "1.0.7", 3470 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3471 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3472 | "dev": true 3473 | }, 3474 | "pbkdf2": { 3475 | "version": "3.1.1", 3476 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", 3477 | "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", 3478 | "dev": true, 3479 | "requires": { 3480 | "create-hash": "^1.1.2", 3481 | "create-hmac": "^1.1.4", 3482 | "ripemd160": "^2.0.1", 3483 | "safe-buffer": "^5.0.1", 3484 | "sha.js": "^2.4.8" 3485 | } 3486 | }, 3487 | "picomatch": { 3488 | "version": "2.3.1", 3489 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3490 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3491 | "dev": true 3492 | }, 3493 | "posix-character-classes": { 3494 | "version": "0.1.1", 3495 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 3496 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 3497 | "dev": true 3498 | }, 3499 | "prelude-ls": { 3500 | "version": "1.1.2", 3501 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 3502 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 3503 | "dev": true 3504 | }, 3505 | "process": { 3506 | "version": "0.11.10", 3507 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 3508 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", 3509 | "dev": true 3510 | }, 3511 | "process-nextick-args": { 3512 | "version": "2.0.1", 3513 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 3514 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 3515 | "dev": true 3516 | }, 3517 | "prr": { 3518 | "version": "1.0.1", 3519 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 3520 | "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", 3521 | "dev": true 3522 | }, 3523 | "public-encrypt": { 3524 | "version": "4.0.3", 3525 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 3526 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 3527 | "dev": true, 3528 | "requires": { 3529 | "bn.js": "^4.1.0", 3530 | "browserify-rsa": "^4.0.0", 3531 | "create-hash": "^1.1.0", 3532 | "parse-asn1": "^5.0.0", 3533 | "randombytes": "^2.0.1", 3534 | "safe-buffer": "^5.1.2" 3535 | }, 3536 | "dependencies": { 3537 | "bn.js": { 3538 | "version": "4.11.9", 3539 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 3540 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 3541 | "dev": true 3542 | } 3543 | } 3544 | }, 3545 | "punycode": { 3546 | "version": "2.1.1", 3547 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3548 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 3549 | "dev": true 3550 | }, 3551 | "qjobs": { 3552 | "version": "1.2.0", 3553 | "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", 3554 | "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", 3555 | "dev": true 3556 | }, 3557 | "qs": { 3558 | "version": "6.9.7", 3559 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", 3560 | "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", 3561 | "dev": true 3562 | }, 3563 | "querystring": { 3564 | "version": "0.2.0", 3565 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 3566 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", 3567 | "dev": true 3568 | }, 3569 | "querystring-es3": { 3570 | "version": "0.2.1", 3571 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 3572 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", 3573 | "dev": true 3574 | }, 3575 | "randombytes": { 3576 | "version": "2.1.0", 3577 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 3578 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 3579 | "dev": true, 3580 | "requires": { 3581 | "safe-buffer": "^5.1.0" 3582 | } 3583 | }, 3584 | "randomfill": { 3585 | "version": "1.0.4", 3586 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 3587 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 3588 | "dev": true, 3589 | "requires": { 3590 | "randombytes": "^2.0.5", 3591 | "safe-buffer": "^5.1.0" 3592 | } 3593 | }, 3594 | "range-parser": { 3595 | "version": "1.2.1", 3596 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 3597 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 3598 | "dev": true 3599 | }, 3600 | "raw-body": { 3601 | "version": "2.4.3", 3602 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", 3603 | "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", 3604 | "dev": true, 3605 | "requires": { 3606 | "bytes": "3.1.2", 3607 | "http-errors": "1.8.1", 3608 | "iconv-lite": "0.4.24", 3609 | "unpipe": "1.0.0" 3610 | } 3611 | }, 3612 | "readable-stream": { 3613 | "version": "2.3.7", 3614 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 3615 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 3616 | "dev": true, 3617 | "requires": { 3618 | "core-util-is": "~1.0.0", 3619 | "inherits": "~2.0.3", 3620 | "isarray": "~1.0.0", 3621 | "process-nextick-args": "~2.0.0", 3622 | "safe-buffer": "~5.1.1", 3623 | "string_decoder": "~1.1.1", 3624 | "util-deprecate": "~1.0.1" 3625 | } 3626 | }, 3627 | "readdirp": { 3628 | "version": "3.6.0", 3629 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3630 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3631 | "dev": true, 3632 | "requires": { 3633 | "picomatch": "^2.2.1" 3634 | } 3635 | }, 3636 | "regex-not": { 3637 | "version": "1.0.2", 3638 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 3639 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 3640 | "dev": true, 3641 | "requires": { 3642 | "extend-shallow": "^3.0.2", 3643 | "safe-regex": "^1.1.0" 3644 | } 3645 | }, 3646 | "repeat-element": { 3647 | "version": "1.1.3", 3648 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 3649 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", 3650 | "dev": true 3651 | }, 3652 | "repeat-string": { 3653 | "version": "1.6.1", 3654 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 3655 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 3656 | "dev": true 3657 | }, 3658 | "require-directory": { 3659 | "version": "2.1.1", 3660 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3661 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 3662 | "dev": true 3663 | }, 3664 | "requires-port": { 3665 | "version": "1.0.0", 3666 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 3667 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", 3668 | "dev": true 3669 | }, 3670 | "resolve": { 3671 | "version": "1.1.7", 3672 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", 3673 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", 3674 | "dev": true 3675 | }, 3676 | "resolve-url": { 3677 | "version": "0.2.1", 3678 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 3679 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 3680 | "dev": true 3681 | }, 3682 | "ret": { 3683 | "version": "0.1.15", 3684 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 3685 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 3686 | "dev": true 3687 | }, 3688 | "rimraf": { 3689 | "version": "3.0.2", 3690 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 3691 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3692 | "dev": true, 3693 | "requires": { 3694 | "glob": "^7.1.3" 3695 | } 3696 | }, 3697 | "ripemd160": { 3698 | "version": "2.0.2", 3699 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 3700 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 3701 | "dev": true, 3702 | "requires": { 3703 | "hash-base": "^3.0.0", 3704 | "inherits": "^2.0.1" 3705 | } 3706 | }, 3707 | "safe-buffer": { 3708 | "version": "5.1.2", 3709 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3710 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3711 | "dev": true 3712 | }, 3713 | "safe-regex": { 3714 | "version": "1.1.0", 3715 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 3716 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 3717 | "dev": true, 3718 | "requires": { 3719 | "ret": "~0.1.10" 3720 | } 3721 | }, 3722 | "safer-buffer": { 3723 | "version": "2.1.2", 3724 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3725 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3726 | "dev": true 3727 | }, 3728 | "schema-utils": { 3729 | "version": "3.0.0", 3730 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", 3731 | "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", 3732 | "dev": true, 3733 | "requires": { 3734 | "@types/json-schema": "^7.0.6", 3735 | "ajv": "^6.12.5", 3736 | "ajv-keywords": "^3.5.2" 3737 | } 3738 | }, 3739 | "semver": { 3740 | "version": "6.3.0", 3741 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 3742 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 3743 | "dev": true 3744 | }, 3745 | "set-value": { 3746 | "version": "2.0.1", 3747 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", 3748 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", 3749 | "dev": true, 3750 | "requires": { 3751 | "extend-shallow": "^2.0.1", 3752 | "is-extendable": "^0.1.1", 3753 | "is-plain-object": "^2.0.3", 3754 | "split-string": "^3.0.1" 3755 | }, 3756 | "dependencies": { 3757 | "extend-shallow": { 3758 | "version": "2.0.1", 3759 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3760 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3761 | "dev": true, 3762 | "requires": { 3763 | "is-extendable": "^0.1.0" 3764 | } 3765 | } 3766 | } 3767 | }, 3768 | "setimmediate": { 3769 | "version": "1.0.5", 3770 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 3771 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 3772 | "dev": true 3773 | }, 3774 | "setprototypeof": { 3775 | "version": "1.2.0", 3776 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 3777 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", 3778 | "dev": true 3779 | }, 3780 | "sha.js": { 3781 | "version": "2.4.11", 3782 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 3783 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 3784 | "dev": true, 3785 | "requires": { 3786 | "inherits": "^2.0.1", 3787 | "safe-buffer": "^5.0.1" 3788 | } 3789 | }, 3790 | "snapdragon": { 3791 | "version": "0.8.2", 3792 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 3793 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 3794 | "dev": true, 3795 | "requires": { 3796 | "base": "^0.11.1", 3797 | "debug": "^2.2.0", 3798 | "define-property": "^0.2.5", 3799 | "extend-shallow": "^2.0.1", 3800 | "map-cache": "^0.2.2", 3801 | "source-map": "^0.5.6", 3802 | "source-map-resolve": "^0.5.0", 3803 | "use": "^3.1.0" 3804 | }, 3805 | "dependencies": { 3806 | "define-property": { 3807 | "version": "0.2.5", 3808 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3809 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3810 | "dev": true, 3811 | "requires": { 3812 | "is-descriptor": "^0.1.0" 3813 | } 3814 | }, 3815 | "extend-shallow": { 3816 | "version": "2.0.1", 3817 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3818 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3819 | "dev": true, 3820 | "requires": { 3821 | "is-extendable": "^0.1.0" 3822 | } 3823 | } 3824 | } 3825 | }, 3826 | "snapdragon-node": { 3827 | "version": "2.1.1", 3828 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 3829 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 3830 | "dev": true, 3831 | "requires": { 3832 | "define-property": "^1.0.0", 3833 | "isobject": "^3.0.0", 3834 | "snapdragon-util": "^3.0.1" 3835 | }, 3836 | "dependencies": { 3837 | "define-property": { 3838 | "version": "1.0.0", 3839 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 3840 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 3841 | "dev": true, 3842 | "requires": { 3843 | "is-descriptor": "^1.0.0" 3844 | } 3845 | }, 3846 | "is-accessor-descriptor": { 3847 | "version": "1.0.0", 3848 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 3849 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 3850 | "dev": true, 3851 | "requires": { 3852 | "kind-of": "^6.0.0" 3853 | } 3854 | }, 3855 | "is-data-descriptor": { 3856 | "version": "1.0.0", 3857 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 3858 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 3859 | "dev": true, 3860 | "requires": { 3861 | "kind-of": "^6.0.0" 3862 | } 3863 | }, 3864 | "is-descriptor": { 3865 | "version": "1.0.2", 3866 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 3867 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 3868 | "dev": true, 3869 | "requires": { 3870 | "is-accessor-descriptor": "^1.0.0", 3871 | "is-data-descriptor": "^1.0.0", 3872 | "kind-of": "^6.0.2" 3873 | } 3874 | } 3875 | } 3876 | }, 3877 | "snapdragon-util": { 3878 | "version": "3.0.1", 3879 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 3880 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 3881 | "dev": true, 3882 | "requires": { 3883 | "kind-of": "^3.2.0" 3884 | }, 3885 | "dependencies": { 3886 | "kind-of": { 3887 | "version": "3.2.2", 3888 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3889 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3890 | "dev": true, 3891 | "requires": { 3892 | "is-buffer": "^1.1.5" 3893 | } 3894 | } 3895 | } 3896 | }, 3897 | "socket.io": { 3898 | "version": "4.4.1", 3899 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", 3900 | "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", 3901 | "dev": true, 3902 | "requires": { 3903 | "accepts": "~1.3.4", 3904 | "base64id": "~2.0.0", 3905 | "debug": "~4.3.2", 3906 | "engine.io": "~6.1.0", 3907 | "socket.io-adapter": "~2.3.3", 3908 | "socket.io-parser": "~4.0.4" 3909 | }, 3910 | "dependencies": { 3911 | "debug": { 3912 | "version": "4.3.3", 3913 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 3914 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 3915 | "dev": true, 3916 | "requires": { 3917 | "ms": "2.1.2" 3918 | } 3919 | }, 3920 | "ms": { 3921 | "version": "2.1.2", 3922 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3923 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3924 | "dev": true 3925 | } 3926 | } 3927 | }, 3928 | "socket.io-adapter": { 3929 | "version": "2.3.3", 3930 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", 3931 | "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", 3932 | "dev": true 3933 | }, 3934 | "socket.io-parser": { 3935 | "version": "4.0.4", 3936 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", 3937 | "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", 3938 | "dev": true, 3939 | "requires": { 3940 | "@types/component-emitter": "^1.2.10", 3941 | "component-emitter": "~1.3.0", 3942 | "debug": "~4.3.1" 3943 | }, 3944 | "dependencies": { 3945 | "debug": { 3946 | "version": "4.3.3", 3947 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 3948 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 3949 | "dev": true, 3950 | "requires": { 3951 | "ms": "2.1.2" 3952 | } 3953 | }, 3954 | "ms": { 3955 | "version": "2.1.2", 3956 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3957 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3958 | "dev": true 3959 | } 3960 | } 3961 | }, 3962 | "source-map": { 3963 | "version": "0.5.7", 3964 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3965 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3966 | "dev": true 3967 | }, 3968 | "source-map-loader": { 3969 | "version": "1.1.2", 3970 | "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.2.tgz", 3971 | "integrity": "sha512-bjf6eSENOYBX4JZDfl9vVLNsGAQ6Uz90fLmOazcmMcyDYOBFsGxPNn83jXezWLY9bJsVAo1ObztxPcV8HAbjVA==", 3972 | "dev": true, 3973 | "requires": { 3974 | "abab": "^2.0.5", 3975 | "iconv-lite": "^0.6.2", 3976 | "loader-utils": "^2.0.0", 3977 | "schema-utils": "^3.0.0", 3978 | "source-map": "^0.6.1", 3979 | "whatwg-mimetype": "^2.3.0" 3980 | }, 3981 | "dependencies": { 3982 | "iconv-lite": { 3983 | "version": "0.6.2", 3984 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", 3985 | "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", 3986 | "dev": true, 3987 | "requires": { 3988 | "safer-buffer": ">= 2.1.2 < 3.0.0" 3989 | } 3990 | }, 3991 | "json5": { 3992 | "version": "2.1.3", 3993 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", 3994 | "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", 3995 | "dev": true, 3996 | "requires": { 3997 | "minimist": "^1.2.5" 3998 | } 3999 | }, 4000 | "loader-utils": { 4001 | "version": "2.0.0", 4002 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", 4003 | "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", 4004 | "dev": true, 4005 | "requires": { 4006 | "big.js": "^5.2.2", 4007 | "emojis-list": "^3.0.0", 4008 | "json5": "^2.1.2" 4009 | } 4010 | }, 4011 | "source-map": { 4012 | "version": "0.6.1", 4013 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 4014 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 4015 | "dev": true 4016 | } 4017 | } 4018 | }, 4019 | "source-map-resolve": { 4020 | "version": "0.5.3", 4021 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", 4022 | "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", 4023 | "dev": true, 4024 | "requires": { 4025 | "atob": "^2.1.2", 4026 | "decode-uri-component": "^0.2.0", 4027 | "resolve-url": "^0.2.1", 4028 | "source-map-url": "^0.4.0", 4029 | "urix": "^0.1.0" 4030 | } 4031 | }, 4032 | "source-map-support": { 4033 | "version": "0.5.19", 4034 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 4035 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 4036 | "dev": true, 4037 | "requires": { 4038 | "buffer-from": "^1.0.0", 4039 | "source-map": "^0.6.0" 4040 | }, 4041 | "dependencies": { 4042 | "source-map": { 4043 | "version": "0.6.1", 4044 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 4045 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 4046 | "dev": true 4047 | } 4048 | } 4049 | }, 4050 | "source-map-url": { 4051 | "version": "0.4.0", 4052 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 4053 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 4054 | "dev": true 4055 | }, 4056 | "split-string": { 4057 | "version": "3.1.0", 4058 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 4059 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 4060 | "dev": true, 4061 | "requires": { 4062 | "extend-shallow": "^3.0.0" 4063 | } 4064 | }, 4065 | "sprintf-js": { 4066 | "version": "1.0.3", 4067 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 4068 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 4069 | "dev": true 4070 | }, 4071 | "static-extend": { 4072 | "version": "0.1.2", 4073 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 4074 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 4075 | "dev": true, 4076 | "requires": { 4077 | "define-property": "^0.2.5", 4078 | "object-copy": "^0.1.0" 4079 | }, 4080 | "dependencies": { 4081 | "define-property": { 4082 | "version": "0.2.5", 4083 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 4084 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 4085 | "dev": true, 4086 | "requires": { 4087 | "is-descriptor": "^0.1.0" 4088 | } 4089 | } 4090 | } 4091 | }, 4092 | "statuses": { 4093 | "version": "1.5.0", 4094 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 4095 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 4096 | "dev": true 4097 | }, 4098 | "stream-browserify": { 4099 | "version": "3.0.0", 4100 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", 4101 | "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", 4102 | "dev": true, 4103 | "requires": { 4104 | "inherits": "~2.0.4", 4105 | "readable-stream": "^3.5.0" 4106 | }, 4107 | "dependencies": { 4108 | "readable-stream": { 4109 | "version": "3.6.0", 4110 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 4111 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 4112 | "dev": true, 4113 | "requires": { 4114 | "inherits": "^2.0.3", 4115 | "string_decoder": "^1.1.1", 4116 | "util-deprecate": "^1.0.1" 4117 | } 4118 | } 4119 | } 4120 | }, 4121 | "stream-http": { 4122 | "version": "3.1.1", 4123 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.1.tgz", 4124 | "integrity": "sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==", 4125 | "dev": true, 4126 | "requires": { 4127 | "builtin-status-codes": "^3.0.0", 4128 | "inherits": "^2.0.4", 4129 | "readable-stream": "^3.6.0", 4130 | "xtend": "^4.0.2" 4131 | }, 4132 | "dependencies": { 4133 | "readable-stream": { 4134 | "version": "3.6.0", 4135 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 4136 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 4137 | "dev": true, 4138 | "requires": { 4139 | "inherits": "^2.0.3", 4140 | "string_decoder": "^1.1.1", 4141 | "util-deprecate": "^1.0.1" 4142 | } 4143 | } 4144 | } 4145 | }, 4146 | "string-width": { 4147 | "version": "4.2.3", 4148 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 4149 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 4150 | "dev": true, 4151 | "requires": { 4152 | "emoji-regex": "^8.0.0", 4153 | "is-fullwidth-code-point": "^3.0.0", 4154 | "strip-ansi": "^6.0.1" 4155 | } 4156 | }, 4157 | "string.prototype.trimend": { 4158 | "version": "1.0.2", 4159 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", 4160 | "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", 4161 | "dev": true, 4162 | "requires": { 4163 | "define-properties": "^1.1.3", 4164 | "es-abstract": "^1.18.0-next.1" 4165 | } 4166 | }, 4167 | "string.prototype.trimstart": { 4168 | "version": "1.0.2", 4169 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", 4170 | "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", 4171 | "dev": true, 4172 | "requires": { 4173 | "define-properties": "^1.1.3", 4174 | "es-abstract": "^1.18.0-next.1" 4175 | } 4176 | }, 4177 | "string_decoder": { 4178 | "version": "1.1.1", 4179 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 4180 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 4181 | "dev": true, 4182 | "requires": { 4183 | "safe-buffer": "~5.1.0" 4184 | } 4185 | }, 4186 | "strip-ansi": { 4187 | "version": "6.0.1", 4188 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4189 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4190 | "dev": true, 4191 | "requires": { 4192 | "ansi-regex": "^5.0.1" 4193 | } 4194 | }, 4195 | "supports-color": { 4196 | "version": "3.2.3", 4197 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", 4198 | "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", 4199 | "dev": true, 4200 | "requires": { 4201 | "has-flag": "^1.0.0" 4202 | } 4203 | }, 4204 | "tapable": { 4205 | "version": "1.1.3", 4206 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", 4207 | "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", 4208 | "dev": true 4209 | }, 4210 | "timers-browserify": { 4211 | "version": "2.0.12", 4212 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", 4213 | "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", 4214 | "dev": true, 4215 | "requires": { 4216 | "setimmediate": "^1.0.4" 4217 | } 4218 | }, 4219 | "tmp": { 4220 | "version": "0.2.1", 4221 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", 4222 | "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", 4223 | "dev": true, 4224 | "requires": { 4225 | "rimraf": "^3.0.0" 4226 | } 4227 | }, 4228 | "to-fast-properties": { 4229 | "version": "2.0.0", 4230 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 4231 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 4232 | "dev": true 4233 | }, 4234 | "to-object-path": { 4235 | "version": "0.3.0", 4236 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 4237 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 4238 | "dev": true, 4239 | "requires": { 4240 | "kind-of": "^3.0.2" 4241 | }, 4242 | "dependencies": { 4243 | "kind-of": { 4244 | "version": "3.2.2", 4245 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 4246 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 4247 | "dev": true, 4248 | "requires": { 4249 | "is-buffer": "^1.1.5" 4250 | } 4251 | } 4252 | } 4253 | }, 4254 | "to-regex": { 4255 | "version": "3.0.2", 4256 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 4257 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 4258 | "dev": true, 4259 | "requires": { 4260 | "define-property": "^2.0.2", 4261 | "extend-shallow": "^3.0.2", 4262 | "regex-not": "^1.0.2", 4263 | "safe-regex": "^1.1.0" 4264 | } 4265 | }, 4266 | "to-regex-range": { 4267 | "version": "2.1.1", 4268 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 4269 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 4270 | "dev": true, 4271 | "requires": { 4272 | "is-number": "^3.0.0", 4273 | "repeat-string": "^1.6.1" 4274 | } 4275 | }, 4276 | "toidentifier": { 4277 | "version": "1.0.1", 4278 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 4279 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 4280 | "dev": true 4281 | }, 4282 | "tslib": { 4283 | "version": "2.0.3", 4284 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", 4285 | "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", 4286 | "dev": true 4287 | }, 4288 | "tslint": { 4289 | "version": "6.1.3", 4290 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", 4291 | "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", 4292 | "dev": true, 4293 | "requires": { 4294 | "@babel/code-frame": "^7.0.0", 4295 | "builtin-modules": "^1.1.1", 4296 | "chalk": "^2.3.0", 4297 | "commander": "^2.12.1", 4298 | "diff": "^4.0.1", 4299 | "glob": "^7.1.1", 4300 | "js-yaml": "^3.13.1", 4301 | "minimatch": "^3.0.4", 4302 | "mkdirp": "^0.5.3", 4303 | "resolve": "^1.3.2", 4304 | "semver": "^5.3.0", 4305 | "tslib": "^1.13.0", 4306 | "tsutils": "^2.29.0" 4307 | }, 4308 | "dependencies": { 4309 | "resolve": { 4310 | "version": "1.19.0", 4311 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", 4312 | "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", 4313 | "dev": true, 4314 | "requires": { 4315 | "is-core-module": "^2.1.0", 4316 | "path-parse": "^1.0.6" 4317 | } 4318 | }, 4319 | "semver": { 4320 | "version": "5.7.1", 4321 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 4322 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 4323 | "dev": true 4324 | }, 4325 | "tslib": { 4326 | "version": "1.14.1", 4327 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 4328 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 4329 | "dev": true 4330 | } 4331 | } 4332 | }, 4333 | "tsutils": { 4334 | "version": "2.29.0", 4335 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", 4336 | "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", 4337 | "dev": true, 4338 | "requires": { 4339 | "tslib": "^1.8.1" 4340 | }, 4341 | "dependencies": { 4342 | "tslib": { 4343 | "version": "1.14.1", 4344 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 4345 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 4346 | "dev": true 4347 | } 4348 | } 4349 | }, 4350 | "tty-browserify": { 4351 | "version": "0.0.1", 4352 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", 4353 | "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", 4354 | "dev": true 4355 | }, 4356 | "type": { 4357 | "version": "1.2.0", 4358 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", 4359 | "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", 4360 | "dev": true 4361 | }, 4362 | "type-check": { 4363 | "version": "0.3.2", 4364 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 4365 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 4366 | "dev": true, 4367 | "requires": { 4368 | "prelude-ls": "~1.1.2" 4369 | } 4370 | }, 4371 | "type-is": { 4372 | "version": "1.6.18", 4373 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 4374 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 4375 | "dev": true, 4376 | "requires": { 4377 | "media-typer": "0.3.0", 4378 | "mime-types": "~2.1.24" 4379 | } 4380 | }, 4381 | "typescript": { 4382 | "version": "4.1.2", 4383 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", 4384 | "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", 4385 | "dev": true 4386 | }, 4387 | "ua-parser-js": { 4388 | "version": "0.7.31", 4389 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", 4390 | "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", 4391 | "dev": true 4392 | }, 4393 | "uglify-js": { 4394 | "version": "3.11.6", 4395 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.6.tgz", 4396 | "integrity": "sha512-oASI1FOJ7BBFkSCNDZ446EgkSuHkOZBuqRFrwXIKWCoXw8ZXQETooTQjkAcBS03Acab7ubCKsXnwuV2svy061g==", 4397 | "dev": true, 4398 | "optional": true 4399 | }, 4400 | "union-value": { 4401 | "version": "1.0.1", 4402 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", 4403 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", 4404 | "dev": true, 4405 | "requires": { 4406 | "arr-union": "^3.1.0", 4407 | "get-value": "^2.0.6", 4408 | "is-extendable": "^0.1.1", 4409 | "set-value": "^2.0.1" 4410 | } 4411 | }, 4412 | "unpipe": { 4413 | "version": "1.0.0", 4414 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 4415 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 4416 | "dev": true 4417 | }, 4418 | "unset-value": { 4419 | "version": "1.0.0", 4420 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 4421 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 4422 | "dev": true, 4423 | "requires": { 4424 | "has-value": "^0.3.1", 4425 | "isobject": "^3.0.0" 4426 | }, 4427 | "dependencies": { 4428 | "has-value": { 4429 | "version": "0.3.1", 4430 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 4431 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 4432 | "dev": true, 4433 | "requires": { 4434 | "get-value": "^2.0.3", 4435 | "has-values": "^0.1.4", 4436 | "isobject": "^2.0.0" 4437 | }, 4438 | "dependencies": { 4439 | "isobject": { 4440 | "version": "2.1.0", 4441 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 4442 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 4443 | "dev": true, 4444 | "requires": { 4445 | "isarray": "1.0.0" 4446 | } 4447 | } 4448 | } 4449 | }, 4450 | "has-values": { 4451 | "version": "0.1.4", 4452 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 4453 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 4454 | "dev": true 4455 | } 4456 | } 4457 | }, 4458 | "uri-js": { 4459 | "version": "4.4.0", 4460 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", 4461 | "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", 4462 | "dev": true, 4463 | "requires": { 4464 | "punycode": "^2.1.0" 4465 | } 4466 | }, 4467 | "urix": { 4468 | "version": "0.1.0", 4469 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 4470 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 4471 | "dev": true 4472 | }, 4473 | "url": { 4474 | "version": "0.11.0", 4475 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 4476 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 4477 | "dev": true, 4478 | "requires": { 4479 | "punycode": "1.3.2", 4480 | "querystring": "0.2.0" 4481 | }, 4482 | "dependencies": { 4483 | "punycode": { 4484 | "version": "1.3.2", 4485 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 4486 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", 4487 | "dev": true 4488 | } 4489 | } 4490 | }, 4491 | "use": { 4492 | "version": "3.1.1", 4493 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 4494 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", 4495 | "dev": true 4496 | }, 4497 | "util": { 4498 | "version": "0.12.3", 4499 | "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", 4500 | "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", 4501 | "dev": true, 4502 | "requires": { 4503 | "inherits": "^2.0.3", 4504 | "is-arguments": "^1.0.4", 4505 | "is-generator-function": "^1.0.7", 4506 | "is-typed-array": "^1.1.3", 4507 | "safe-buffer": "^5.1.2", 4508 | "which-typed-array": "^1.1.2" 4509 | } 4510 | }, 4511 | "util-deprecate": { 4512 | "version": "1.0.2", 4513 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 4514 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 4515 | "dev": true 4516 | }, 4517 | "utils-merge": { 4518 | "version": "1.0.1", 4519 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 4520 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 4521 | "dev": true 4522 | }, 4523 | "uuid": { 4524 | "version": "3.4.0", 4525 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 4526 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 4527 | "dev": true 4528 | }, 4529 | "vary": { 4530 | "version": "1.1.2", 4531 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 4532 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 4533 | "dev": true 4534 | }, 4535 | "vm-browserify": { 4536 | "version": "1.1.2", 4537 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 4538 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", 4539 | "dev": true 4540 | }, 4541 | "void-elements": { 4542 | "version": "2.0.1", 4543 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 4544 | "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", 4545 | "dev": true 4546 | }, 4547 | "wcwidth": { 4548 | "version": "1.0.1", 4549 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 4550 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", 4551 | "dev": true, 4552 | "requires": { 4553 | "defaults": "^1.0.3" 4554 | } 4555 | }, 4556 | "webpack-log": { 4557 | "version": "1.2.0", 4558 | "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", 4559 | "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", 4560 | "dev": true, 4561 | "requires": { 4562 | "chalk": "^2.1.0", 4563 | "log-symbols": "^2.1.0", 4564 | "loglevelnext": "^1.0.1", 4565 | "uuid": "^3.1.0" 4566 | } 4567 | }, 4568 | "whatwg-mimetype": { 4569 | "version": "2.3.0", 4570 | "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", 4571 | "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", 4572 | "dev": true 4573 | }, 4574 | "which": { 4575 | "version": "1.3.1", 4576 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 4577 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 4578 | "dev": true, 4579 | "requires": { 4580 | "isexe": "^2.0.0" 4581 | } 4582 | }, 4583 | "which-typed-array": { 4584 | "version": "1.1.2", 4585 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", 4586 | "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", 4587 | "dev": true, 4588 | "requires": { 4589 | "available-typed-arrays": "^1.0.2", 4590 | "es-abstract": "^1.17.5", 4591 | "foreach": "^2.0.5", 4592 | "function-bind": "^1.1.1", 4593 | "has-symbols": "^1.0.1", 4594 | "is-typed-array": "^1.1.3" 4595 | }, 4596 | "dependencies": { 4597 | "es-abstract": { 4598 | "version": "1.17.7", 4599 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", 4600 | "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", 4601 | "dev": true, 4602 | "requires": { 4603 | "es-to-primitive": "^1.2.1", 4604 | "function-bind": "^1.1.1", 4605 | "has": "^1.0.3", 4606 | "has-symbols": "^1.0.1", 4607 | "is-callable": "^1.2.2", 4608 | "is-regex": "^1.1.1", 4609 | "object-inspect": "^1.8.0", 4610 | "object-keys": "^1.1.1", 4611 | "object.assign": "^4.1.1", 4612 | "string.prototype.trimend": "^1.0.1", 4613 | "string.prototype.trimstart": "^1.0.1" 4614 | } 4615 | } 4616 | } 4617 | }, 4618 | "wordwrap": { 4619 | "version": "0.0.3", 4620 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 4621 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", 4622 | "dev": true 4623 | }, 4624 | "wrap-ansi": { 4625 | "version": "7.0.0", 4626 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 4627 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 4628 | "dev": true, 4629 | "requires": { 4630 | "ansi-styles": "^4.0.0", 4631 | "string-width": "^4.1.0", 4632 | "strip-ansi": "^6.0.0" 4633 | }, 4634 | "dependencies": { 4635 | "ansi-styles": { 4636 | "version": "4.3.0", 4637 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 4638 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 4639 | "dev": true, 4640 | "requires": { 4641 | "color-convert": "^2.0.1" 4642 | } 4643 | }, 4644 | "color-convert": { 4645 | "version": "2.0.1", 4646 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 4647 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 4648 | "dev": true, 4649 | "requires": { 4650 | "color-name": "~1.1.4" 4651 | } 4652 | }, 4653 | "color-name": { 4654 | "version": "1.1.4", 4655 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 4656 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 4657 | "dev": true 4658 | } 4659 | } 4660 | }, 4661 | "wrappy": { 4662 | "version": "1.0.2", 4663 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4664 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 4665 | "dev": true 4666 | }, 4667 | "ws": { 4668 | "version": "8.2.3", 4669 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", 4670 | "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", 4671 | "dev": true 4672 | }, 4673 | "xmlbuilder": { 4674 | "version": "12.0.0", 4675 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-12.0.0.tgz", 4676 | "integrity": "sha512-lMo8DJ8u6JRWp0/Y4XLa/atVDr75H9litKlb2E5j3V3MesoL50EBgZDWoLT3F/LztVnG67GjPXLZpqcky/UMnQ==", 4677 | "dev": true 4678 | }, 4679 | "xtend": { 4680 | "version": "4.0.2", 4681 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 4682 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 4683 | "dev": true 4684 | }, 4685 | "y18n": { 4686 | "version": "5.0.8", 4687 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 4688 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 4689 | "dev": true 4690 | }, 4691 | "yargs": { 4692 | "version": "16.2.0", 4693 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 4694 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 4695 | "dev": true, 4696 | "requires": { 4697 | "cliui": "^7.0.2", 4698 | "escalade": "^3.1.1", 4699 | "get-caller-file": "^2.0.5", 4700 | "require-directory": "^2.1.1", 4701 | "string-width": "^4.2.0", 4702 | "y18n": "^5.0.5", 4703 | "yargs-parser": "^20.2.2" 4704 | } 4705 | }, 4706 | "yargs-parser": { 4707 | "version": "20.2.9", 4708 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 4709 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 4710 | "dev": true 4711 | } 4712 | } 4713 | } 4714 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typescript-memoize", 3 | "version": "1.1.1", 4 | "description": "Memoize decorator for Typescript", 5 | "main": "./dist/memoize-decorator.js", 6 | "module": "./dist/es2015/memoize-decorator.js", 7 | "typings": "./dist/memoize-decorator.d.ts", 8 | "scripts": { 9 | "test": "karma start test/karma.config.js --single-run", 10 | "prepublish": "npm run build && npm run build:es2015", 11 | "clean": "rm -rf ./dist", 12 | "build": "tsc", 13 | "build:es2015": "tsc --module es2015 --target es2015 --outDir dist/es2015", 14 | "tslint": "tslint --project .", 15 | "eslint": "npm run tslint" 16 | }, 17 | "files": [ 18 | "dist", 19 | "src" 20 | ], 21 | "repository": { 22 | "type": "git", 23 | "url": "git+https://github.com/darrylhodgins/typescript-memoize.git" 24 | }, 25 | "keywords": [ 26 | "typescript", 27 | "memoize", 28 | "functional", 29 | "decorator" 30 | ], 31 | "author": "Darryl Hodgins ", 32 | "license": "MIT", 33 | "bugs": { 34 | "url": "https://github.com/darrylhodgins/typescript-memoize/issues" 35 | }, 36 | "homepage": "https://github.com/darrylhodgins/typescript-memoize#readme", 37 | "devDependencies": { 38 | "@types/jasmine": "3.6.2", 39 | "@types/node": "14.14.9", 40 | "awesome-typescript-loader": "5.2.1", 41 | "es6-shim": "0.35.6", 42 | "jasmine-core": "3.6.0", 43 | "karma": "6.3.16", 44 | "karma-chrome-launcher": "3.1.0", 45 | "karma-es6-shim": "1.0.0", 46 | "karma-jasmine": "4.0.1", 47 | "karma-jasmine-html-reporter": "1.5.4", 48 | "karma-junit-reporter": "2.0.1", 49 | "karma-sourcemap-loader": "0.3.8", 50 | "karma-spec-reporter": "0.0.32", 51 | "karma-threshold-reporter": "0.1.15", 52 | "karma-typescript": "5.2.0", 53 | "source-map-loader": "1.1.2", 54 | "tslib": "2.0.3", 55 | "tslint": "6.1.3", 56 | "typescript": "4.1.2" 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/memoize-decorator.ts: -------------------------------------------------------------------------------- 1 | interface MemoizeArgs { 2 | expiring?: number; 3 | hashFunction?: boolean | ((...args: any[]) => any); 4 | tags?: string[]; 5 | } 6 | 7 | export function Memoize(args?: MemoizeArgs | MemoizeArgs['hashFunction']) { 8 | let hashFunction: MemoizeArgs['hashFunction']; 9 | let duration: MemoizeArgs['expiring']; 10 | let tags: MemoizeArgs['tags']; 11 | 12 | if (typeof args === 'object') { 13 | hashFunction = args.hashFunction; 14 | duration = args.expiring; 15 | tags = args.tags; 16 | } else { 17 | hashFunction = args; 18 | } 19 | 20 | return (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor) => { 21 | if (descriptor.value != null) { 22 | descriptor.value = getNewFunction(descriptor.value, hashFunction, duration, tags); 23 | } else if (descriptor.get != null) { 24 | descriptor.get = getNewFunction(descriptor.get, hashFunction, duration, tags); 25 | } else { 26 | throw 'Only put a Memoize() decorator on a method or get accessor.'; 27 | } 28 | }; 29 | } 30 | 31 | export function MemoizeExpiring(expiring: number, hashFunction?: MemoizeArgs['hashFunction']) { 32 | return Memoize({ 33 | expiring, 34 | hashFunction 35 | }); 36 | } 37 | 38 | const clearCacheTagsMap: Map[]> = new Map(); 39 | 40 | export function clear (tags: string[]): number { 41 | const cleared: Set> = new Set(); 42 | for (const tag of tags) { 43 | const maps = clearCacheTagsMap.get(tag); 44 | if (maps) { 45 | for (const mp of maps) { 46 | if (!cleared.has(mp)) { 47 | mp.clear(); 48 | cleared.add(mp); 49 | } 50 | } 51 | } 52 | } 53 | return cleared.size; 54 | } 55 | 56 | function getNewFunction(originalMethod: () => void, hashFunction?: MemoizeArgs['hashFunction'], duration: number = 0, tags?: MemoizeArgs['tags']) { 57 | const propMapName = Symbol(`__memoized_map__`); 58 | 59 | // The function returned here gets called instead of originalMethod. 60 | return function (...args: any[]) { 61 | let returnedValue: any; 62 | 63 | // Get or create map 64 | if (!this.hasOwnProperty(propMapName)) { 65 | Object.defineProperty(this, propMapName, { 66 | configurable: false, 67 | enumerable: false, 68 | writable: false, 69 | value: new Map() 70 | }); 71 | } 72 | let myMap: Map = this[propMapName]; 73 | 74 | if (Array.isArray(tags)) { 75 | for (const tag of tags) { 76 | if (clearCacheTagsMap.has(tag)) { 77 | clearCacheTagsMap.get(tag).push(myMap); 78 | } else { 79 | clearCacheTagsMap.set(tag, [myMap]); 80 | } 81 | } 82 | } 83 | 84 | if (hashFunction || args.length > 0 || duration > 0) { 85 | let hashKey: any; 86 | 87 | // If true is passed as first parameter, will automatically use every argument, passed to string 88 | if (hashFunction === true) { 89 | hashKey = args.map(a => a.toString()).join('!'); 90 | } else if (hashFunction) { 91 | hashKey = hashFunction.apply(this, args); 92 | } else { 93 | hashKey = args[0]; 94 | } 95 | 96 | const timestampKey = `${hashKey}__timestamp`; 97 | let isExpired: boolean = false; 98 | if (duration > 0) { 99 | if (!myMap.has(timestampKey)) { 100 | // "Expired" since it was never called before 101 | isExpired = true; 102 | } else { 103 | let timestamp = myMap.get(timestampKey); 104 | isExpired = (Date.now() - timestamp) > duration; 105 | } 106 | } 107 | 108 | if (myMap.has(hashKey) && !isExpired) { 109 | returnedValue = myMap.get(hashKey); 110 | } else { 111 | returnedValue = originalMethod.apply(this, args); 112 | myMap.set(hashKey, returnedValue); 113 | if (duration > 0) { 114 | myMap.set(timestampKey, Date.now()); 115 | } 116 | } 117 | 118 | } else { 119 | const hashKey = this; 120 | if (myMap.has(hashKey)) { 121 | returnedValue = myMap.get(hashKey); 122 | } else { 123 | returnedValue = originalMethod.apply(this, args); 124 | myMap.set(hashKey, returnedValue); 125 | } 126 | } 127 | 128 | return returnedValue; 129 | }; 130 | } 131 | -------------------------------------------------------------------------------- /test/karma.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(config){ 2 | config.set({ 3 | basePath: './', 4 | frameworks: ['jasmine', 'es6-shim', 'karma-typescript'], 5 | files: [ 6 | { pattern: '../src/**/*.ts' }, 7 | { pattern: './specs/**/*.ts' } 8 | ], 9 | exclude: [], 10 | preprocessors: { 11 | '../src/**/*.ts': ['karma-typescript', 'sourcemap'], 12 | './specs/**/*.ts': ['karma-typescript', 'sourcemap'] 13 | }, 14 | karmaTypescriptConfig: { 15 | compilerOptions: { 16 | noEmitHelpers: false, 17 | importHelpers: true, 18 | lib: ["es2016"] 19 | }, 20 | reports: { 21 | html: { 22 | directory: './coverage/typescript-memoize', 23 | subdirectory: '.', 24 | filename: 'report' 25 | }, 26 | lcovonly: { 27 | directory: './coverage/typescript-memoize', 28 | subdirectory: '.', 29 | filename: 'lcov.info' 30 | } 31 | } 32 | }, 33 | reporters: ['spec', 'karma-typescript', 'junit', 'threshold'], 34 | junitReporter: { 35 | outputDir: './coverage/typescript-memoize', 36 | outputFile: 'junit-results.xml', 37 | suite: 'typescript-memoize', 38 | useBrowserName: false 39 | }, 40 | thresholdReporter: { 41 | statements: 90, 42 | branches: 75, 43 | functions: 90, 44 | lines: 90 45 | }, 46 | port: 9876, 47 | colors: true, 48 | autoWatch: false, 49 | browsers: ['ChromeHeadless'], 50 | singleRun: true 51 | }); 52 | }; 53 | -------------------------------------------------------------------------------- /test/specs/memoize-decorator.spec.ts: -------------------------------------------------------------------------------- 1 | import { clear, Memoize, MemoizeExpiring } from '../../src/memoize-decorator'; 2 | import exp = require('constants'); 3 | 4 | describe('Memoize()', () => { 5 | 6 | // Doing spies a little unusually because the decorator under test does things 7 | // to the originl methods below. I figure it's better to be explicit here… 8 | let getNumberSpy = jasmine.createSpy('getNumberSpy'); 9 | let valueSpy = jasmine.createSpy('valueSpy'); 10 | let getGreetingSpy = jasmine.createSpy('getGreetingSpy'); 11 | let multiplySpy = jasmine.createSpy('multiplySpy'); 12 | 13 | let a: MyClass; 14 | let b: MyClass; 15 | 16 | beforeEach(() => { 17 | a = new MyClass(); 18 | b = new MyClass(); 19 | 20 | getNumberSpy.calls.reset(); 21 | valueSpy.calls.reset(); 22 | getGreetingSpy.calls.reset(); 23 | multiplySpy.calls.reset(); 24 | }); 25 | class MyClass { 26 | @Memoize() 27 | public getNumber(): number { 28 | getNumberSpy(); 29 | return Math.random(); 30 | } 31 | 32 | @Memoize() 33 | public get value(): number { 34 | //valueSpy(); 35 | return Math.random(); 36 | } 37 | 38 | @Memoize() 39 | public getGreeting(greeting: string, planet: string): string { 40 | getGreetingSpy.apply(this, arguments); 41 | return greeting + ', ' + planet; 42 | } 43 | 44 | @Memoize((a: number, b: number) => { 45 | return a + ';' + b; 46 | }) 47 | public multiply(a: number, b: number) { 48 | multiplySpy.apply(this, arguments); 49 | return a * b; 50 | } 51 | 52 | @Memoize(true) 53 | public multiply2(a: number, b: number) { 54 | multiplySpy.apply(this, arguments); 55 | return a * b; 56 | } 57 | 58 | @Memoize(true) 59 | public getGreeting2(greeting: string, planet: string): string { 60 | getGreetingSpy.apply(this, arguments); 61 | return greeting + ', ' + planet; 62 | } 63 | 64 | @Memoize({ 65 | hashFunction: (a: number, b: number) => { 66 | return a + ';' + b; 67 | } 68 | }) 69 | public multiply3(a: number, b: number) { 70 | multiplySpy.apply(this, arguments); 71 | return a * b; 72 | } 73 | 74 | @Memoize({ 75 | hashFunction: true 76 | }) 77 | public getGreeting3(greeting: string, planet: string): string { 78 | getGreetingSpy.apply(this, arguments); 79 | return greeting + ', ' + planet; 80 | } 81 | 82 | @Memoize({ 83 | hashFunction: true, 84 | tags: ["foo", "bar"] 85 | }) 86 | public getGreeting4(greeting: string, planet: string): string { 87 | getGreetingSpy.apply(this, arguments); 88 | return greeting + ', ' + planet; 89 | } 90 | } 91 | 92 | describe('when it is used in a bad way', () => { 93 | it("method throw an exception", () => { 94 | let err: Error; 95 | try { 96 | const fn = Memoize(true) as any; 97 | fn(); 98 | } catch(e) { 99 | err = e; 100 | } 101 | expect(err).toBeInstanceOf(Error); 102 | }); 103 | }); 104 | 105 | describe('when decorating a method', () => { 106 | it("method should be memoized", () => { 107 | expect(a.getNumber()).toEqual(a.getNumber()); 108 | }); 109 | 110 | it("multiple instances shouldn't share values for methods", () => { 111 | expect(a.getNumber()).not.toEqual(b.getNumber()); 112 | }); 113 | }); 114 | 115 | describe('when decorating a get accessor', () => { 116 | it("accessor should be memoized", () => { 117 | expect(a.value).toEqual(a.value); 118 | }); 119 | 120 | it("multiple instances shouldn't share values for accessors", () => { 121 | expect(a.value).not.toEqual(b.value); 122 | }); 123 | }); 124 | 125 | describe('when decorating a method, which takes some parameters', () => { 126 | it('should call the original method with the original arguments', () => { 127 | let val1 = a.getGreeting('Halló', 'heimur'); // In Icelandic 128 | expect(val1).toEqual('Halló, heimur'); 129 | expect(getGreetingSpy).toHaveBeenCalledWith('Halló', 'heimur'); 130 | }); 131 | 132 | it('should call the original method once', () => { 133 | let val1 = a.getGreeting('Ciao', 'mondo'); // In Italian 134 | let val2 = a.getGreeting('Ciao', 'mondo'); 135 | 136 | expect(val1).toEqual('Ciao, mondo'); 137 | expect(val2).toEqual('Ciao, mondo'); 138 | 139 | expect(getGreetingSpy).toHaveBeenCalledTimes(1); 140 | }); 141 | 142 | it('should not share between two instances of the same class', () => { 143 | let val1 = a.getGreeting('Hej', 'världen'); // In Swedish 144 | let val2 = b.getGreeting('Hej', 'världen'); 145 | 146 | expect(val1).toEqual('Hej, världen'); 147 | expect(val2).toEqual('Hej, världen'); 148 | 149 | expect(getGreetingSpy).toHaveBeenCalledTimes(2); 150 | }) 151 | 152 | it('should call the original method once, even if the second parameter is different', () => { 153 | let val1 = a.getGreeting('Hola', 'Mundo'); // Spanish, even 154 | let val2 = a.getGreeting('Hola', 'Mars'); 155 | 156 | expect(val1).toEqual('Hola, Mundo'); 157 | expect(val2).toEqual('Hola, Mundo'); 158 | 159 | expect(getGreetingSpy).toHaveBeenCalledTimes(1); 160 | }); 161 | 162 | it('should call the original method once', () => { 163 | let val1 = a.getGreeting('Bonjour', 'le monde'); 164 | let val2 = a.getGreeting('Hello', 'World'); 165 | 166 | expect(val1).toEqual('Bonjour, le monde'); 167 | expect(val2).toEqual('Hello, World'); 168 | 169 | expect(getGreetingSpy).toHaveBeenCalledTimes(2); 170 | }); 171 | }); 172 | 173 | 174 | describe('when decorating a method using a hashFunction', () => { 175 | 176 | it('should call the original method with the original arguments', () => { 177 | let val1 = a.multiply(5, 7); 178 | expect(multiplySpy).toHaveBeenCalledWith(5, 7); 179 | }); 180 | 181 | it('should only call the original method once', () => { 182 | let val1 = a.multiply(4, 6); 183 | let val2 = a.multiply(4, 6); 184 | expect(val1).toEqual(24); 185 | expect(val2).toEqual(24); 186 | expect(multiplySpy.calls.count()).toEqual(1); 187 | }); 188 | 189 | it('should not simply memoize based on the first parameter', () => { 190 | let val1 = a.multiply(4, 7); 191 | let val2 = a.multiply(4, 9); 192 | expect(val1).toEqual(28); 193 | expect(val2).toEqual(36); 194 | expect(multiplySpy.calls.count()).toEqual(2); 195 | }); 196 | }); 197 | 198 | describe('when passing true to memoize as a hashFunction', () => { 199 | it('should call the original method with the original arguments', () => { 200 | let val1 = a.multiply2(5, 7); 201 | expect(multiplySpy).toHaveBeenCalledWith(5, 7); 202 | }); 203 | 204 | it('should only call the original method once', () => { 205 | let val1 = a.multiply2(4, 6); 206 | let val2 = a.multiply2(4, 6); 207 | expect(val1).toEqual(24); 208 | expect(val2).toEqual(24); 209 | expect(multiplySpy.calls.count()).toEqual(1); 210 | }); 211 | 212 | 213 | it('should take into consideration every parameter', () => { 214 | let val1 = a.getGreeting2('Hello', 'World'); 215 | let val2 = a.getGreeting2('Hello', 'Moon'); 216 | 217 | expect(val1).toEqual('Hello, World'); 218 | expect(val2).toEqual('Hello, Moon'); 219 | 220 | expect(getGreetingSpy).toHaveBeenCalledTimes(2); 221 | }); 222 | 223 | }); 224 | 225 | describe('when passing arguments as arguments object', () => { 226 | it('should call the original method with the original arguments', () => { 227 | let val1 = a.multiply3(5, 7); 228 | expect(multiplySpy).toHaveBeenCalledWith(5, 7); 229 | }); 230 | 231 | it('should only call the original method once', () => { 232 | let val1 = a.multiply3(4, 6); 233 | let val2 = a.multiply3(4, 6); 234 | expect(val1).toEqual(24); 235 | expect(val2).toEqual(24); 236 | expect(multiplySpy.calls.count()).toEqual(1); 237 | }); 238 | 239 | it('should take into consideration every parameter', () => { 240 | let val1 = a.getGreeting3('Hello', 'World'); 241 | let val2 = a.getGreeting3('Hello', 'Moon'); 242 | 243 | expect(val1).toEqual('Hello, World'); 244 | expect(val2).toEqual('Hello, Moon'); 245 | 246 | expect(getGreetingSpy).toHaveBeenCalledTimes(2); 247 | }); 248 | 249 | it('should be cleared ', () => { 250 | let val1 = a.getGreeting4('Hello', 'World'); 251 | let val2 = a.getGreeting4('Hello', 'Moon'); 252 | let val3 = a.getGreeting4('Hello', 'World'); 253 | clear(["foo"]); 254 | let val4 = a.getGreeting4('Hello', 'Moon'); 255 | let val5 = a.getGreeting4('Hello', 'World'); 256 | clear(["bar"]); 257 | let val6 = a.getGreeting4('Hello', 'World'); 258 | 259 | clear(["unknown"]); 260 | 261 | expect(val1).toEqual('Hello, World'); 262 | expect(val2).toEqual('Hello, Moon'); 263 | expect(val3).toEqual('Hello, World'); 264 | expect(val4).toEqual('Hello, Moon'); 265 | expect(val5).toEqual('Hello, World'); 266 | expect(val6).toEqual('Hello, World'); 267 | 268 | expect(getGreetingSpy).toHaveBeenCalledTimes(5); 269 | }); 270 | 271 | }); 272 | 273 | }); 274 | 275 | 276 | describe('MemoizeExpiring()', () => { 277 | 278 | let getNumberSpy = jasmine.createSpy('getNumberSpy'); 279 | let valueSpy = jasmine.createSpy('valueSpy'); 280 | 281 | let a: MyClass; 282 | let b: MyClass; 283 | 284 | beforeEach(() => { 285 | a = new MyClass(); 286 | b = new MyClass(); 287 | 288 | getNumberSpy.calls.reset(); 289 | valueSpy.calls.reset(); 290 | }); 291 | 292 | class MyClass { 293 | @MemoizeExpiring(100) 294 | public getNumber(): number { 295 | getNumberSpy(); 296 | return Math.random(); 297 | } 298 | 299 | @MemoizeExpiring(100) 300 | public get value(): number { 301 | //valueSpy(); 302 | return Math.random(); 303 | } 304 | } 305 | 306 | 307 | describe('when decorating a method', () => { 308 | it("method should be memoized", () => { 309 | expect(a.getNumber()).toEqual(a.getNumber()); 310 | }); 311 | 312 | it("multiple instances shouldn't share values for methods", () => { 313 | expect(a.getNumber()).not.toEqual(b.getNumber()); 314 | }); 315 | 316 | it("should expire memoized values after 100ms", (done) => { 317 | let an0 = a.getNumber(); 318 | setTimeout(() => { 319 | let an1 = a.getNumber(); 320 | expect(an0).toEqual(an1); 321 | }, 20); 322 | setTimeout(() => { 323 | let an2 = a.getNumber(); 324 | expect(an0).not.toEqual(an2); 325 | done(); 326 | }, 120); 327 | }); 328 | }); 329 | 330 | describe('when decorating a get accessor', () => { 331 | it("accessor should be memoized", () => { 332 | expect(a.value).toEqual(a.value); 333 | }); 334 | 335 | it("multiple instances shouldn't share values for accessors", () => { 336 | expect(a.value).not.toEqual(b.value); 337 | }); 338 | }); 339 | 340 | 341 | }); 342 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "umd", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "noImplicitAny": true, 10 | "noUnusedParameters": false, 11 | "noUnusedLocals": false, 12 | "forceConsistentCasingInFileNames": true, 13 | "removeComments": true, 14 | "baseUrl": "./src", 15 | "outDir": "./dist", 16 | "declaration": true, 17 | "lib": ["es2016"], 18 | "importHelpers": true, 19 | "noEmitHelpers": true, 20 | "allowJs": false, 21 | "types": [ 22 | "node", 23 | "jasmine" 24 | ] 25 | }, 26 | "files": [ 27 | "src/memoize-decorator.ts" 28 | ], 29 | "exclude": [ 30 | "coverage", 31 | "dist", 32 | "doc", 33 | "node_modules", 34 | "test" 35 | ], 36 | "formatCodeOptions": { 37 | "indentSize": 4, 38 | "tabSize": 4, 39 | "insertSpaceAfterCommaDelimiter": true, 40 | "insertSpaceAfterSemicolonInForStatements": true, 41 | "insertSpaceBeforeAndAfterBinaryOperators": true, 42 | "insertSpaceAfterKeywordsInControlFlowStatements": true, 43 | "insertSpaceAfterFunctionKeywordForAnonymousFunctions": false, 44 | "insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": false, 45 | "placeOpenBraceOnNewLineForFunctions": false, 46 | "placeOpenBraceOnNewLineForControlBlocks": false 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "align": [ 4 | true, 5 | "parameters", 6 | "statements" 7 | ], 8 | "ban": [ 9 | true, 10 | [ 11 | "_", 12 | "forEach" 13 | ], 14 | [ 15 | "_", 16 | "each" 17 | ], 18 | [ 19 | "$", 20 | "each" 21 | ], 22 | [ 23 | "angular", 24 | "forEach" 25 | ] 26 | ], 27 | "class-name": true, 28 | "comment-format": [ 29 | true, 30 | "check-space" 31 | ], 32 | "curly": true, 33 | "eofline": true, 34 | "forin": true, 35 | "indent": [ 36 | true, 37 | "tabs" 38 | ], 39 | "interface-name": [ 40 | true, 41 | "never-prefix" 42 | ], 43 | "jsdoc-format": true, 44 | "label-position": true, 45 | "max-line-length": [ 46 | true, 47 | 180 48 | ], 49 | "member-access": true, 50 | "member-ordering": [ 51 | true, 52 | { 53 | "order": [ 54 | "private-static-field", 55 | "private-static-method", 56 | "public-static-field", 57 | "protected-static-field", 58 | "private-instance-field", 59 | "private-instance-method", 60 | "public-instance-field", 61 | "protected-instance-field", 62 | "constructor", 63 | "public-static-method", 64 | "protected-static-method", 65 | "public-instance-method", 66 | "protected-instance-method" 67 | ] 68 | } 69 | ], 70 | "new-parens": true, 71 | "no-angle-bracket-type-assertion": true, 72 | "no-any": false, 73 | "no-arg": true, 74 | "no-bitwise": true, 75 | "no-conditional-assignment": true, 76 | "no-consecutive-blank-lines": false, 77 | "no-console": [ 78 | true, 79 | "debug", 80 | "info", 81 | "time", 82 | "timeEnd", 83 | "trace" 84 | ], 85 | "no-construct": true, 86 | "no-debugger": true, 87 | "no-default-export": true, 88 | "no-duplicate-variable": true, 89 | "no-empty": false, 90 | "no-eval": true, 91 | "no-inferrable-types": false, 92 | "no-internal-module": true, 93 | "no-invalid-this": [ 94 | false, 95 | "check-function-in-method" 96 | ], 97 | "no-null-keyword": false, 98 | "no-parameter-properties": false, 99 | "no-reference": true, 100 | "no-require-imports": false, 101 | "no-shadowed-variable": true, 102 | "no-string-literal": true, 103 | "no-switch-case-fall-through": true, 104 | "no-trailing-whitespace": true, 105 | "no-unused-expression": true, 106 | "no-use-before-declare": true, 107 | "no-var-keyword": true, 108 | "no-var-requires": true, 109 | "object-literal-sort-keys": false, 110 | "one-line": [ 111 | true, 112 | "check-open-brace", 113 | "check-catch", 114 | "check-else", 115 | "check-finally", 116 | "check-whitespace" 117 | ], 118 | "one-variable-per-declaration": [ 119 | true, 120 | "ignore-for-loop" 121 | ], 122 | "quotemark": [ 123 | true, 124 | "single", 125 | "avoid-escape" 126 | ], 127 | "radix": true, 128 | "semicolon": [ 129 | true, 130 | "always" 131 | ], 132 | "whitespace": [ 133 | true, 134 | "check-branch", 135 | "check-decl", 136 | "check-operator", 137 | "check-module", 138 | "check-separator", 139 | "check-type" 140 | ] 141 | } 142 | } 143 | --------------------------------------------------------------------------------