├── .github └── workflows │ ├── build.yml │ └── deploy.yml ├── .gitignore ├── DETAILS.md ├── README.md ├── package-lock.json ├── package.json └── spec.html /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build spec 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v2 15 | - uses: actions/setup-node@v3 16 | with: 17 | node-version: 16 18 | - run: npm ci 19 | - run: npm run build 20 | - run: npm run check-format 21 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy gh-pages 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - uses: actions/checkout@v2 14 | - uses: actions/setup-node@v3 15 | with: 16 | node-version: 16 17 | - run: npm ci 18 | - run: npm run build 19 | - uses: JamesIves/github-pages-deploy-action@v4.3.3 20 | with: 21 | branch: gh-pages 22 | folder: dist 23 | clean: true 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | 4 | .DS_Store 5 | Desktop.ini 6 | ._* 7 | Thumbs.db 8 | .Spotlight-V100 9 | .Trashes 10 | -------------------------------------------------------------------------------- /DETAILS.md: -------------------------------------------------------------------------------- 1 | # Details 2 | 3 | There are number of decisions which could be made differently. This document attempts to catalog them along with the rationales for the choices currently made. 4 | 5 | ## Getting an iterator record from `this` 6 | 7 | The added methods on `%IteratorPrototype%` assume that `this` is an iterator, 8 | and therefore use a new `GetIteratorDirect` method to acquire an iterator 9 | record. This means that code like `Iterator.syncPrototype.map.call([1, 2, 3], ...)` 10 | will not work. 11 | 12 | ## Passing the protocol 13 | 14 | All added methods attempt to pass the values and calls they receive to whatever 15 | iterator they are wrapping. For example, `it.map(fn).next(5)` will call 16 | `it.next(5)` instead of `it.next()`. Additionally, calls like 17 | `it.map(fn).return()` will call upwards as well, to `it.return()`. 18 | 19 | ## Interface constraints 20 | 21 | - The interface used to expose these methods must not clash with existing APIs. 22 | For example: `Array.prototype.map` or `Map.prototype.forEach` denying access 23 | to the interface. 24 | - It must work with everywhere an iteration can occur. 25 | For example: `%GeneratorFunction%.prototype.map` will not work because the 26 | interface has to be obtained from an explicit function call. 27 | `%GeneratorFunction%.prototype` has no symbolic API to get the iterator. 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Iterator Helpers 2 | 3 | > [!IMPORTANT] 4 | > This proposal is now a Stage 4 and will be merged into ECMA-262 as part of https://github.com/tc39/ecma262/pull/3395. This repo is no longer active. 5 | 6 | A proposal for several interfaces that will help with general usage and 7 | consumption of iterators in ECMAScript. 8 | 9 | ## Status 10 | 11 | Authors: Gus Caplan, Michael Ficarra, Adam Vandolder, Jason Orendorff, Kevin Gibbons 12 | 13 | Champions: Michael Ficarra, Yulia Startsev 14 | 15 | This proposal is at Stage 4 of [The TC39 Process](https://tc39.es/process-document/). 16 | 17 | This proposal formerly contained async as well as sync helpers. The async helpers have been split out to [a separate proposal](https://github.com/tc39/proposal-async-iterator-helpers). 18 | 19 | ## Motivation 20 | 21 | Iterators are a useful way to represent large or possibly infinite enumerable data sets. However, 22 | they lack helpers which make them as easy to use as Arrays and other finite data structures, which 23 | results in certain problems that could be better represented by iterators being expressed in Arrays, 24 | or using libraries to introduce the necessary helpers. Many [libraries and languages](#prior-art--userland-implementations) already provide these interfaces. 25 | 26 | ## Proposal 27 | 28 | The proposal introduces a collection of new methods on the Iterator prototype, to allow general usage and consumption of iterators. For specifics on the implemented methods, please refer to the specification. 29 | 30 | See [DETAILS.md](./DETAILS.md) for details on semantics decisions. 31 | 32 | See this proposal rendered [here](https://tc39.es/proposal-iterator-helpers) 33 | 34 | ## Added Methods 35 | 36 | For Iterators we add the following methods: 37 | 38 | ### `.map(mapperFn)` 39 | 40 | `map` takes a function as an argument. It allows users to apply a function to every element returned from an iterator. 41 | 42 | Returns an iterator of the values with the map function applied. 43 | 44 | #### Example 45 | 46 | ```JavaScript 47 | function* naturals() { 48 | let i = 0; 49 | while (true) { 50 | yield i; 51 | i += 1; 52 | } 53 | } 54 | 55 | const result = naturals() 56 | .map(value => { 57 | return value * value; 58 | }); 59 | result.next(); // {value: 0, done: false}; 60 | result.next(); // {value: 1, done: false}; 61 | result.next(); // {value: 4, done: false}; 62 | ``` 63 | 64 | ### `.filter(filtererFn)` 65 | 66 | `filter` takes a function as an argument. It allows users to skip values from an iterator which do not pass a filter function. 67 | 68 | Returns an iterator of values from the original iterator that pass the filter. 69 | 70 | #### Example 71 | 72 | ```JavaScript 73 | function* naturals() { 74 | let i = 0; 75 | while (true) { 76 | yield i; 77 | i += 1; 78 | } 79 | } 80 | 81 | const result = naturals() 82 | .filter(value => { 83 | return value % 2 == 0; 84 | }); 85 | result.next(); // {value: 0, done: false}; 86 | result.next(); // {value: 2, done: false}; 87 | result.next(); // {value: 4, done: false}; 88 | ``` 89 | 90 | ### `.take(limit)` 91 | 92 | `take` takes an integer as an argument. It returns an iterator that produces, at most, the given number of elements produced by the underlying iterator. 93 | 94 | Returns an iterator with items from the original iterator from 0 until the limit. 95 | 96 | #### Example 97 | 98 | ```JavaScript 99 | function* naturals() { 100 | let i = 0; 101 | while (true) { 102 | yield i; 103 | i += 1; 104 | } 105 | } 106 | 107 | const result = naturals() 108 | .take(3); 109 | result.next(); // {value: 0, done: false}; 110 | result.next(); // {value: 1, done: false}; 111 | result.next(); // {value: 2, done: false}; 112 | result.next(); // {value: undefined, done: true}; 113 | ``` 114 | 115 | ### `.drop(limit)` 116 | 117 | `drop` takes an integer as an argument. It skips the given number of elements produced by the underlying iterator before itself producing any remaining elements. 118 | 119 | Returns an iterator of items after the limit. 120 | 121 | #### Example 122 | 123 | ```JavaScript 124 | function* naturals() { 125 | let i = 0; 126 | while (true) { 127 | yield i; 128 | i += 1; 129 | } 130 | } 131 | 132 | const result = naturals() 133 | .drop(3); 134 | result.next(); // {value: 3, done: false}; 135 | result.next(); // {value: 4, done: false}; 136 | result.next(); // {value: 5, done: false}; 137 | ``` 138 | 139 | ### `.flatMap(mapperFn)` 140 | 141 | `.flatMap` takes a mapping function as an argument. It returns an iterator that produces all elements of the iterators produced by applying the mapping function to the elements produced by the underlying iterator. 142 | 143 | Returns an iterator of flat values. 144 | 145 | #### Example 146 | 147 | ```JavaScript 148 | const sunny = ["It's Sunny in", "", "California"].values(); 149 | 150 | const result = sunny 151 | .flatMap(value => value.split(" ").values()); 152 | result.next(); // {value: "It's", done: false}; 153 | result.next(); // {value: "Sunny", done: false}; 154 | result.next(); // {value: "in", done: false}; 155 | result.next(); // {value: "", done: false}; 156 | result.next(); // {value: "California", done: false}; 157 | result.next(); // {value: undefined, done: true}; 158 | ``` 159 | 160 | ### `.reduce(reducer [, initialValue ])` 161 | 162 | `reduce` takes a function and an optional initial value as an argument. It allows users to apply a function to every element returned from an iterator, while keeping track of the most recent result of the reducer (the memo). For the first element, the given initial value is used as the memo. 163 | 164 | Returns a value (in the example, a number) of the type returned to the reducer function. 165 | 166 | #### Example 167 | 168 | ```JavaScript 169 | function* naturals() { 170 | let i = 0; 171 | while (true) { 172 | yield i; 173 | i += 1; 174 | } 175 | } 176 | 177 | const result = naturals() 178 | .take(5) 179 | .reduce((sum, value) => { 180 | return sum + value; 181 | }, 3); 182 | 183 | result // 13 184 | ``` 185 | 186 | ### `.toArray()` 187 | 188 | When you have a non-infinite iterator which you wish to transform into an array, you can do so with 189 | the builtin `toArray` method. 190 | 191 | Returns an Array containing the values from the iterator. 192 | 193 | #### Example 194 | 195 | ```JavaScript 196 | function* naturals() { 197 | let i = 0; 198 | while (true) { 199 | yield i; 200 | i += 1; 201 | } 202 | } 203 | 204 | const result = naturals() 205 | .take(5) 206 | .toArray(); 207 | 208 | result // [0, 1, 2, 3, 4] 209 | ``` 210 | 211 | ### `.forEach(fn)` 212 | 213 | For using side effects with an iterator, you can use the `.forEach` builtin method, which takes as 214 | an argument a function. 215 | 216 | Returns undefined. 217 | 218 | #### Example 219 | 220 | ```JavaScript 221 | const log = []; 222 | const fn = (value) => log.push(value); 223 | const iter = [1, 2, 3].values(); 224 | 225 | iter.forEach(fn); 226 | console.log(log.join(", ")) // "1, 2, 3" 227 | ``` 228 | 229 | ### `.some(fn)` 230 | 231 | To check if any value in the iterator matches a given predicate, `.some` can be used. It takes as an argument a function which returns true or false. 232 | 233 | 234 | Returns a boolean which is true if any element returned true when `fn` was called on it. The 235 | iterator is consumed when some is called. 236 | 237 | #### Example 238 | 239 | ```JavaScript 240 | function* naturals() { 241 | let i = 0; 242 | while (true) { 243 | yield i; 244 | i += 1; 245 | } 246 | } 247 | 248 | const iter = naturals().take(4); 249 | 250 | iter.some(v => v > 1); // true 251 | iter.some(v => true); // false, iterator is already consumed. 252 | 253 | naturals().take(4).some(v => v > 1); // true 254 | naturals().take(4).some(v => v == 1); // true, acting on a new iterator 255 | ``` 256 | 257 | ### `.every(fn)` 258 | 259 | `.every` takes a function which returns a boolean as an argument. It is used to check if every 260 | value generated by the iterator passes the test function. 261 | 262 | Returns a boolean. 263 | 264 | ```JavaScript 265 | function* naturals() { 266 | let i = 0; 267 | while (true) { 268 | yield i; 269 | i += 1; 270 | } 271 | } 272 | 273 | const iter = naturals().take(10); 274 | 275 | iter.every(v => v >= 0); // true 276 | iter.every(v => false); // true, iterator is already consumed. 277 | 278 | naturals().take(4).every(v => v > 0); // false, first value is 0 279 | naturals().take(4).every(v => v >= 0); // true, acting on a new iterator 280 | ``` 281 | 282 | ### `.find(fn)` 283 | 284 | `.find` takes a function as an argument. It is used to find the first element in an iterator that matches. 285 | 286 | Can be used without `take` on infinite iterators. 287 | 288 | Returns the found element, or *undefined* if no element matches `fn`. 289 | 290 | ```JavaScript 291 | function* naturals() { 292 | let i = 0; 293 | while (true) { 294 | yield i; 295 | i += 1; 296 | } 297 | } 298 | 299 | naturals().find(v => v > 1); // 2 300 | ``` 301 | 302 | ### `Iterator.from(object)` 303 | 304 | `.from` is a _static_ method (unlike the others listed above) which takes an object as an argument. This method allows wrapping "iterator-like" objects with an iterator. 305 | 306 | Returns the object if it is already an iterator, returns a wrapping iterator if the passed object 307 | implements a callable @@iterator property. 308 | 309 | ```JavaScript 310 | class Iter { 311 | next() { 312 | return { done: false, value: 1 }; 313 | } 314 | } 315 | 316 | const iter = new Iter(); 317 | const wrapper = Iterator.from(iter); 318 | 319 | wrapper.next() // { value: 1, done: false } 320 | ``` 321 | 322 | ## Iterator helpers and the generator protocol 323 | 324 | The generator protocol facilitates coordination between a producer and a 325 | consumer, which is necessarily broken by iteration-based transforms. There is 326 | no way to properly preserve or re-establish this coordination. We've taken the 327 | philosophy that any iterators produced by the helpers this proposal adds only 328 | implement the iterator protocol and make no attempt to support generators which 329 | use the remainder of the generator protocol. Specifically, such iterators do 330 | not implement `.throw` and do not forward the parameter of `.next` or `.return` 331 | to an underlying or "source" iterator. 332 | 333 | 334 | #### Extending Iterator Prototype 335 | 336 | With this proposal, it will be easier to extend the IteratorPrototype for a custom class. See the 337 | below example for the previous implementation compared to the new one. 338 | 339 | ```js 340 | const MyIteratorPrototype = { 341 | next() {}, 342 | throw() {}, 343 | return() {}, 344 | 345 | // but we don't properly implement %IteratorPrototype%!!! 346 | }; 347 | 348 | // Previously... 349 | // Object.setPrototypeOf(MyIteratorPrototype, 350 | // Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); 351 | 352 | Object.setPrototypeOf(MyIteratorPrototype, Iterator.prototype); 353 | ``` 354 | 355 | ## Q & A 356 | 357 | ### Why not use Array.from + Array.prototype methods? 358 | 359 | All of the iterator-producing methods in this proposal are **lazy**. They will 360 | only consume the iterator when they need the next item from it. Especially 361 | for iterators that never end, this is key. Without generic support for 362 | any form of iterator, different iterators have to be handled differently. 363 | 364 | ### How can I access the new intrinsics? 365 | 366 | ```js 367 | const IteratorHelperPrototype = Object.getPrototypeOf(Iterator.from([]).take(0)); 368 | const WrapForValidIteratorPrototype = Object.getPrototypeOf(Iterator.from({ next(){} })); 369 | ``` 370 | 371 | ## Prior Art & Userland implementations 372 | 373 | - https://www.npmjs.com/package/itertools 374 | - https://www.npmjs.com/package/lodash 375 | - https://docs.python.org/3/library/itertools.html 376 | - https://github.com/more-itertools/more-itertools 377 | - https://docs.rs/itertools/ 378 | - https://doc.rust-lang.org/std/iter/trait.Iterator.html 379 | - https://www.boost.org/doc/libs/1_66_0/libs/iterator/doc/index.html 380 | - https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable 381 | - https://github.com/ReactiveX/IxJS 382 | - https://www.npmjs.com/package/ballvalve 383 | - https://github.com/zloirock/core-js#iterator-helpers 384 | - Node.js [Readable](https://nodejs.org/api/stream.html#readable-streams) streams implement this proposal in its entirety. 385 | 386 | 387 | | Method | Rust | Python | npm Itertools | C# | 388 | | --------------------------- | ---- | ------ | --------------| -- | 389 | | all | ☑ | ☑ | ☑ | ☑ | 390 | | any | ☑ | ☑ | ☑ | ☑ | 391 | | chain | ☑ | ☑ | ☑ | ☑ | 392 | | collect | ☑ | ☐ | ☐ | ☐ | 393 | | count | ☑ | ☑ | ☑ | ☑ | 394 | | cycle | ☑ | ☑ | ☑ | ☐ | 395 | | enumerate | ☑ | ☑ | ☑ | ☐ | 396 | | filter | ☑ | ☑ | ☑ | ☑ | 397 | | filterMap | ☑ | ☐ | ☐ | ☐ | 398 | | find | ☑ | ☐ | ☑ | ☑ | 399 | | findMap | ☑ | ☐ | ☐ | ☐ | 400 | | flatMap | ☑ | ☐ | ☑ | ☑ | 401 | | flatten | ☑ | ☐ | ☐ | ☐ | 402 | | forEach | ☑ | ☐ | ☐ | ☐ | 403 | | last | ☑ | ☐ | ☐ | ☑ | 404 | | map | ☑ | ☑ | ☑ | ☑ | 405 | | max | ☑ | ☑ | ☑ | ☑ | 406 | | min | ☑ | ☑ | ☑ | ☑ | 407 | | nth | ☑ | ☐ | ☐ | ☑ | 408 | | partition | ☑ | ☐ | ☐ | ☑ | 409 | | peekable | ☑ | ☐ | ☐ | ☐ | 410 | | position | ☑ | ☐ | ☐ | ☐ | 411 | | product | ☑ | ☑ | ☐ | ☐ | 412 | | reverse | ☑ | ☑ | ☐ | ☑ | 413 | | scan | ☑ | ☐ | ☐ | ☐ | 414 | | skip | ☑ | ☐ | ☐ | ☑ | 415 | | skipWhile | ☑ | ☑ | ☐ | ☑ | 416 | | stepBy | ☑ | ☐ | ☐ | ☐ | 417 | | sum | ☑ | ☑ | ☑ | ☑ | 418 | | take | ☑ | ☐ | ☑ | ☑ | 419 | | takeWhile | ☑ | ☑ | ☐ | ☑ | 420 | | unzip | ☑ | ☑ | ☑ | ☐ | 421 | | zip | ☑ | ☑ | ☑ | ☑ | 422 | | compress | ☐ | ☑ | ☑ | ☐ | 423 | | permutations | ☐ | ☑ | ☑ | ☐ | 424 | | repeat | ☑ | ☑ | ☑ | ☑ | 425 | | slice | ☐ | ☑ | ☑ | ☐ | 426 | | starmap | ☐ | ☑ | ☐ | ☐ | 427 | | tee | ☐ | ☑ | ☐ | ☐ | 428 | | compact | ☐ | ☐ | ☑ | ☐ | 429 | | contains | ☐ | ☑ | ☑ | ☑ | 430 | | range | ☑ | ☑ | ☑ | ☑ | 431 | | reduce | ☑ | ☑ | ☑ | ☑ | 432 | | sorted | ☐ | ☑ | ☑ | ☐ | 433 | | unique | ☐ | ☐ | ☑ | ☑ | 434 | | average | ☐ | ☐ | ☐ | ☑ | 435 | | empty | ☑ | ☐ | ☐ | ☑ | 436 | | except | ☐ | ☐ | ☐ | ☑ | 437 | | intersect | ☐ | ☐ | ☐ | ☑ | 438 | | prepend | ☐ | ☐ | ☐ | ☑ | 439 | | append | ☐ | ☐ | ☐ | ☑ | 440 | 441 | Note: The method names are combined, such as `toArray` and `collect`. 442 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "proposal-iterator-helpers", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "devDependencies": { 8 | "@tc39/ecma262-biblio": "2.1.2678", 9 | "ecmarkup": "^15.0.0" 10 | } 11 | }, 12 | "node_modules/@babel/code-frame": { 13 | "version": "7.12.11", 14 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 15 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 16 | "dev": true, 17 | "dependencies": { 18 | "@babel/highlight": "^7.10.4" 19 | } 20 | }, 21 | "node_modules/@babel/helper-validator-identifier": { 22 | "version": "7.19.1", 23 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 24 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 25 | "dev": true, 26 | "engines": { 27 | "node": ">=6.9.0" 28 | } 29 | }, 30 | "node_modules/@babel/highlight": { 31 | "version": "7.18.6", 32 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 33 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 34 | "dev": true, 35 | "dependencies": { 36 | "@babel/helper-validator-identifier": "^7.18.6", 37 | "chalk": "^2.0.0", 38 | "js-tokens": "^4.0.0" 39 | }, 40 | "engines": { 41 | "node": ">=6.9.0" 42 | } 43 | }, 44 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 45 | "version": "3.2.1", 46 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 47 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 48 | "dev": true, 49 | "dependencies": { 50 | "color-convert": "^1.9.0" 51 | }, 52 | "engines": { 53 | "node": ">=4" 54 | } 55 | }, 56 | "node_modules/@babel/highlight/node_modules/chalk": { 57 | "version": "2.4.2", 58 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 59 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 60 | "dev": true, 61 | "dependencies": { 62 | "ansi-styles": "^3.2.1", 63 | "escape-string-regexp": "^1.0.5", 64 | "supports-color": "^5.3.0" 65 | }, 66 | "engines": { 67 | "node": ">=4" 68 | } 69 | }, 70 | "node_modules/@babel/highlight/node_modules/color-convert": { 71 | "version": "1.9.3", 72 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 73 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 74 | "dev": true, 75 | "dependencies": { 76 | "color-name": "1.1.3" 77 | } 78 | }, 79 | "node_modules/@babel/highlight/node_modules/color-name": { 80 | "version": "1.1.3", 81 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 82 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 83 | "dev": true 84 | }, 85 | "node_modules/@babel/highlight/node_modules/has-flag": { 86 | "version": "3.0.0", 87 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 88 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 89 | "dev": true, 90 | "engines": { 91 | "node": ">=4" 92 | } 93 | }, 94 | "node_modules/@babel/highlight/node_modules/supports-color": { 95 | "version": "5.5.0", 96 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 97 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 98 | "dev": true, 99 | "dependencies": { 100 | "has-flag": "^3.0.0" 101 | }, 102 | "engines": { 103 | "node": ">=4" 104 | } 105 | }, 106 | "node_modules/@esfx/async-canceltoken": { 107 | "version": "1.0.0-pre.37", 108 | "resolved": "https://registry.npmjs.org/@esfx/async-canceltoken/-/async-canceltoken-1.0.0-pre.37.tgz", 109 | "integrity": "sha512-uzHRgDNU4hbpsJ9iBkxB/4iejJQaZFzEmKmwQhXVQ5LgKiIDoZjQ5ctPwXoFruurAc6V54YeyKNynhERcn5dsQ==", 110 | "dev": true, 111 | "dependencies": { 112 | "@esfx/cancelable": "^1.0.0-pre.37", 113 | "@esfx/canceltoken": "^1.0.0-pre.37", 114 | "@esfx/disposable": "^1.0.0-pre.37", 115 | "tslib": "^2.3.1" 116 | } 117 | }, 118 | "node_modules/@esfx/cancelable": { 119 | "version": "1.0.0-pre.37", 120 | "resolved": "https://registry.npmjs.org/@esfx/cancelable/-/cancelable-1.0.0-pre.37.tgz", 121 | "integrity": "sha512-1gZz5RwnrnGQq9LRqcBrNwtV5xPAFATo3D9quUY9NXKTOIZE1z/dXp3siSVtVtLkvedd1+gc4JCbI01wEddBDQ==", 122 | "dev": true, 123 | "dependencies": { 124 | "@esfx/disposable": "^1.0.0-pre.37" 125 | } 126 | }, 127 | "node_modules/@esfx/canceltoken": { 128 | "version": "1.0.0-pre.37", 129 | "resolved": "https://registry.npmjs.org/@esfx/canceltoken/-/canceltoken-1.0.0-pre.37.tgz", 130 | "integrity": "sha512-t1OGWY0QUu6ESRYrjL/gl40rzRGconS0RLJhS+ATRvhWcJzAricEpx82UsOBIZjxDeJFsUOmKakd1QznwWtCsw==", 131 | "dev": true, 132 | "dependencies": { 133 | "@esfx/cancelable": "^1.0.0-pre.37", 134 | "@esfx/disposable": "^1.0.0-pre.37", 135 | "tslib": "^2.3.1" 136 | } 137 | }, 138 | "node_modules/@esfx/disposable": { 139 | "version": "1.0.0-pre.37", 140 | "resolved": "https://registry.npmjs.org/@esfx/disposable/-/disposable-1.0.0-pre.37.tgz", 141 | "integrity": "sha512-kXiWgXdfzOdgiS9LPnHFzz5jf36cDBZVOkVh6YdNf1gO6tAoC0Bu1lQxLtvle398ySUk8Bunrwubd2jFs2w50g==", 142 | "dev": true 143 | }, 144 | "node_modules/@nodelib/fs.scandir": { 145 | "version": "2.1.5", 146 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 147 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 148 | "dev": true, 149 | "dependencies": { 150 | "@nodelib/fs.stat": "2.0.5", 151 | "run-parallel": "^1.1.9" 152 | }, 153 | "engines": { 154 | "node": ">= 8" 155 | } 156 | }, 157 | "node_modules/@nodelib/fs.stat": { 158 | "version": "2.0.5", 159 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 160 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 161 | "dev": true, 162 | "engines": { 163 | "node": ">= 8" 164 | } 165 | }, 166 | "node_modules/@nodelib/fs.walk": { 167 | "version": "1.2.8", 168 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 169 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 170 | "dev": true, 171 | "dependencies": { 172 | "@nodelib/fs.scandir": "2.1.5", 173 | "fastq": "^1.6.0" 174 | }, 175 | "engines": { 176 | "node": ">= 8" 177 | } 178 | }, 179 | "node_modules/@tc39/ecma262-biblio": { 180 | "version": "2.1.2678", 181 | "resolved": "https://registry.npmjs.org/@tc39/ecma262-biblio/-/ecma262-biblio-2.1.2678.tgz", 182 | "integrity": "sha512-3I6m+wpNSHuQsJjeH3UgfqUaet1aM/9ReeWJH8H1H+DKLHfQafWK+OHQLgUbpd5ruJveC2AbyKuUVsXrtMV3Bw==", 183 | "dev": true 184 | }, 185 | "node_modules/@tootallnate/once": { 186 | "version": "2.0.0", 187 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", 188 | "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", 189 | "dev": true, 190 | "engines": { 191 | "node": ">= 10" 192 | } 193 | }, 194 | "node_modules/abab": { 195 | "version": "2.0.6", 196 | "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", 197 | "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", 198 | "dev": true 199 | }, 200 | "node_modules/acorn": { 201 | "version": "8.8.0", 202 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", 203 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", 204 | "dev": true, 205 | "bin": { 206 | "acorn": "bin/acorn" 207 | }, 208 | "engines": { 209 | "node": ">=0.4.0" 210 | } 211 | }, 212 | "node_modules/acorn-globals": { 213 | "version": "6.0.0", 214 | "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", 215 | "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", 216 | "dev": true, 217 | "dependencies": { 218 | "acorn": "^7.1.1", 219 | "acorn-walk": "^7.1.1" 220 | } 221 | }, 222 | "node_modules/acorn-globals/node_modules/acorn": { 223 | "version": "7.4.1", 224 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 225 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 226 | "dev": true, 227 | "bin": { 228 | "acorn": "bin/acorn" 229 | }, 230 | "engines": { 231 | "node": ">=0.4.0" 232 | } 233 | }, 234 | "node_modules/acorn-walk": { 235 | "version": "7.2.0", 236 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 237 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", 238 | "dev": true, 239 | "engines": { 240 | "node": ">=0.4.0" 241 | } 242 | }, 243 | "node_modules/agent-base": { 244 | "version": "6.0.2", 245 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 246 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 247 | "dev": true, 248 | "dependencies": { 249 | "debug": "4" 250 | }, 251 | "engines": { 252 | "node": ">= 6.0.0" 253 | } 254 | }, 255 | "node_modules/ansi-styles": { 256 | "version": "4.3.0", 257 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 258 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 259 | "dev": true, 260 | "dependencies": { 261 | "color-convert": "^2.0.1" 262 | }, 263 | "engines": { 264 | "node": ">=8" 265 | }, 266 | "funding": { 267 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 268 | } 269 | }, 270 | "node_modules/argparse": { 271 | "version": "1.0.10", 272 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 273 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 274 | "dev": true, 275 | "dependencies": { 276 | "sprintf-js": "~1.0.2" 277 | } 278 | }, 279 | "node_modules/array-back": { 280 | "version": "3.1.0", 281 | "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", 282 | "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", 283 | "dev": true, 284 | "engines": { 285 | "node": ">=6" 286 | } 287 | }, 288 | "node_modules/asynckit": { 289 | "version": "0.4.0", 290 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 291 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 292 | "dev": true 293 | }, 294 | "node_modules/braces": { 295 | "version": "3.0.2", 296 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 297 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 298 | "dev": true, 299 | "dependencies": { 300 | "fill-range": "^7.0.1" 301 | }, 302 | "engines": { 303 | "node": ">=8" 304 | } 305 | }, 306 | "node_modules/browser-process-hrtime": { 307 | "version": "1.0.0", 308 | "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", 309 | "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", 310 | "dev": true 311 | }, 312 | "node_modules/chalk": { 313 | "version": "4.1.2", 314 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 315 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 316 | "dev": true, 317 | "dependencies": { 318 | "ansi-styles": "^4.1.0", 319 | "supports-color": "^7.1.0" 320 | }, 321 | "engines": { 322 | "node": ">=10" 323 | }, 324 | "funding": { 325 | "url": "https://github.com/chalk/chalk?sponsor=1" 326 | } 327 | }, 328 | "node_modules/color-convert": { 329 | "version": "2.0.1", 330 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 331 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 332 | "dev": true, 333 | "dependencies": { 334 | "color-name": "~1.1.4" 335 | }, 336 | "engines": { 337 | "node": ">=7.0.0" 338 | } 339 | }, 340 | "node_modules/color-name": { 341 | "version": "1.1.4", 342 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 343 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 344 | "dev": true 345 | }, 346 | "node_modules/combined-stream": { 347 | "version": "1.0.8", 348 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 349 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 350 | "dev": true, 351 | "dependencies": { 352 | "delayed-stream": "~1.0.0" 353 | }, 354 | "engines": { 355 | "node": ">= 0.8" 356 | } 357 | }, 358 | "node_modules/command-line-args": { 359 | "version": "5.2.1", 360 | "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", 361 | "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", 362 | "dev": true, 363 | "dependencies": { 364 | "array-back": "^3.1.0", 365 | "find-replace": "^3.0.0", 366 | "lodash.camelcase": "^4.3.0", 367 | "typical": "^4.0.0" 368 | }, 369 | "engines": { 370 | "node": ">=4.0.0" 371 | } 372 | }, 373 | "node_modules/command-line-usage": { 374 | "version": "6.1.3", 375 | "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", 376 | "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", 377 | "dev": true, 378 | "dependencies": { 379 | "array-back": "^4.0.2", 380 | "chalk": "^2.4.2", 381 | "table-layout": "^1.0.2", 382 | "typical": "^5.2.0" 383 | }, 384 | "engines": { 385 | "node": ">=8.0.0" 386 | } 387 | }, 388 | "node_modules/command-line-usage/node_modules/ansi-styles": { 389 | "version": "3.2.1", 390 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 391 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 392 | "dev": true, 393 | "dependencies": { 394 | "color-convert": "^1.9.0" 395 | }, 396 | "engines": { 397 | "node": ">=4" 398 | } 399 | }, 400 | "node_modules/command-line-usage/node_modules/array-back": { 401 | "version": "4.0.2", 402 | "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", 403 | "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", 404 | "dev": true, 405 | "engines": { 406 | "node": ">=8" 407 | } 408 | }, 409 | "node_modules/command-line-usage/node_modules/chalk": { 410 | "version": "2.4.2", 411 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 412 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 413 | "dev": true, 414 | "dependencies": { 415 | "ansi-styles": "^3.2.1", 416 | "escape-string-regexp": "^1.0.5", 417 | "supports-color": "^5.3.0" 418 | }, 419 | "engines": { 420 | "node": ">=4" 421 | } 422 | }, 423 | "node_modules/command-line-usage/node_modules/color-convert": { 424 | "version": "1.9.3", 425 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 426 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 427 | "dev": true, 428 | "dependencies": { 429 | "color-name": "1.1.3" 430 | } 431 | }, 432 | "node_modules/command-line-usage/node_modules/color-name": { 433 | "version": "1.1.3", 434 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 435 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 436 | "dev": true 437 | }, 438 | "node_modules/command-line-usage/node_modules/has-flag": { 439 | "version": "3.0.0", 440 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 441 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 442 | "dev": true, 443 | "engines": { 444 | "node": ">=4" 445 | } 446 | }, 447 | "node_modules/command-line-usage/node_modules/supports-color": { 448 | "version": "5.5.0", 449 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 450 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 451 | "dev": true, 452 | "dependencies": { 453 | "has-flag": "^3.0.0" 454 | }, 455 | "engines": { 456 | "node": ">=4" 457 | } 458 | }, 459 | "node_modules/command-line-usage/node_modules/typical": { 460 | "version": "5.2.0", 461 | "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", 462 | "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", 463 | "dev": true, 464 | "engines": { 465 | "node": ">=8" 466 | } 467 | }, 468 | "node_modules/cssom": { 469 | "version": "0.5.0", 470 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", 471 | "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", 472 | "dev": true 473 | }, 474 | "node_modules/cssstyle": { 475 | "version": "2.3.0", 476 | "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", 477 | "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", 478 | "dev": true, 479 | "dependencies": { 480 | "cssom": "~0.3.6" 481 | }, 482 | "engines": { 483 | "node": ">=8" 484 | } 485 | }, 486 | "node_modules/cssstyle/node_modules/cssom": { 487 | "version": "0.3.8", 488 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", 489 | "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", 490 | "dev": true 491 | }, 492 | "node_modules/data-urls": { 493 | "version": "3.0.2", 494 | "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", 495 | "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", 496 | "dev": true, 497 | "dependencies": { 498 | "abab": "^2.0.6", 499 | "whatwg-mimetype": "^3.0.0", 500 | "whatwg-url": "^11.0.0" 501 | }, 502 | "engines": { 503 | "node": ">=12" 504 | } 505 | }, 506 | "node_modules/data-urls/node_modules/whatwg-url": { 507 | "version": "11.0.0", 508 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", 509 | "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", 510 | "dev": true, 511 | "dependencies": { 512 | "tr46": "^3.0.0", 513 | "webidl-conversions": "^7.0.0" 514 | }, 515 | "engines": { 516 | "node": ">=12" 517 | } 518 | }, 519 | "node_modules/debug": { 520 | "version": "4.3.4", 521 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 522 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 523 | "dev": true, 524 | "dependencies": { 525 | "ms": "2.1.2" 526 | }, 527 | "engines": { 528 | "node": ">=6.0" 529 | }, 530 | "peerDependenciesMeta": { 531 | "supports-color": { 532 | "optional": true 533 | } 534 | } 535 | }, 536 | "node_modules/decimal.js": { 537 | "version": "10.4.0", 538 | "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", 539 | "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==", 540 | "dev": true 541 | }, 542 | "node_modules/dedent-js": { 543 | "version": "1.0.1", 544 | "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", 545 | "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", 546 | "dev": true 547 | }, 548 | "node_modules/deep-extend": { 549 | "version": "0.6.0", 550 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 551 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 552 | "dev": true, 553 | "engines": { 554 | "node": ">=4.0.0" 555 | } 556 | }, 557 | "node_modules/deep-is": { 558 | "version": "0.1.4", 559 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 560 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 561 | "dev": true 562 | }, 563 | "node_modules/delayed-stream": { 564 | "version": "1.0.0", 565 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 566 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 567 | "dev": true, 568 | "engines": { 569 | "node": ">=0.4.0" 570 | } 571 | }, 572 | "node_modules/domexception": { 573 | "version": "4.0.0", 574 | "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", 575 | "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", 576 | "dev": true, 577 | "dependencies": { 578 | "webidl-conversions": "^7.0.0" 579 | }, 580 | "engines": { 581 | "node": ">=12" 582 | } 583 | }, 584 | "node_modules/ecmarkdown": { 585 | "version": "7.2.0", 586 | "resolved": "https://registry.npmjs.org/ecmarkdown/-/ecmarkdown-7.2.0.tgz", 587 | "integrity": "sha512-p0C4SJCvnvtm0y9gPhXBb5DlNbHsNS44ihVKBw3MXviZG2QQpZNH4z/3PbkpgECOjKOeZI+m84ISHVV9WLECFQ==", 588 | "dev": true, 589 | "dependencies": { 590 | "escape-html": "^1.0.1" 591 | } 592 | }, 593 | "node_modules/ecmarkup": { 594 | "version": "15.0.0", 595 | "resolved": "https://registry.npmjs.org/ecmarkup/-/ecmarkup-15.0.0.tgz", 596 | "integrity": "sha512-gKmfqwRqw1uNPwkftEOpVIH3VVV0O99IL2cRmnrBduvTE2szOvDytOk74dIOaAwqmhx/lonQuRZ64G7R2ZCUDQ==", 597 | "dev": true, 598 | "dependencies": { 599 | "chalk": "^4.1.2", 600 | "command-line-args": "^5.2.0", 601 | "command-line-usage": "^6.1.1", 602 | "dedent-js": "^1.0.1", 603 | "ecmarkdown": "^7.2.0", 604 | "eslint-formatter-codeframe": "^7.32.1", 605 | "fast-glob": "^3.2.7", 606 | "grammarkdown": "^3.2.0", 607 | "highlight.js": "11.0.1", 608 | "html-escape": "^1.0.2", 609 | "js-yaml": "^3.13.1", 610 | "jsdom": "^19.0.0", 611 | "nwsapi": "2.2.0", 612 | "parse5": "^6.0.1", 613 | "prex": "^0.4.7", 614 | "promise-debounce": "^1.0.1" 615 | }, 616 | "bin": { 617 | "ecmarkup": "bin/ecmarkup.js", 618 | "emu-format": "bin/emu-format.js" 619 | }, 620 | "engines": { 621 | "node": ">= 12 || ^11.10.1 || ^10.13 || ^8.10" 622 | } 623 | }, 624 | "node_modules/escape-html": { 625 | "version": "1.0.3", 626 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 627 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", 628 | "dev": true 629 | }, 630 | "node_modules/escape-string-regexp": { 631 | "version": "1.0.5", 632 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 633 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 634 | "dev": true, 635 | "engines": { 636 | "node": ">=0.8.0" 637 | } 638 | }, 639 | "node_modules/escodegen": { 640 | "version": "2.0.0", 641 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", 642 | "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", 643 | "dev": true, 644 | "dependencies": { 645 | "esprima": "^4.0.1", 646 | "estraverse": "^5.2.0", 647 | "esutils": "^2.0.2", 648 | "optionator": "^0.8.1" 649 | }, 650 | "bin": { 651 | "escodegen": "bin/escodegen.js", 652 | "esgenerate": "bin/esgenerate.js" 653 | }, 654 | "engines": { 655 | "node": ">=6.0" 656 | }, 657 | "optionalDependencies": { 658 | "source-map": "~0.6.1" 659 | } 660 | }, 661 | "node_modules/eslint-formatter-codeframe": { 662 | "version": "7.32.1", 663 | "resolved": "https://registry.npmjs.org/eslint-formatter-codeframe/-/eslint-formatter-codeframe-7.32.1.tgz", 664 | "integrity": "sha512-DK/3Q3+zVKq/7PdSYiCxPrsDF8H/TRMK5n8Hziwr4IMkMy+XiKSwbpj25AdajS63I/B61Snetq4uVvX9fOLyAg==", 665 | "dev": true, 666 | "dependencies": { 667 | "@babel/code-frame": "7.12.11", 668 | "chalk": "^4.0.0" 669 | }, 670 | "engines": { 671 | "node": "^10.12.0 || >=12.0.0" 672 | } 673 | }, 674 | "node_modules/esprima": { 675 | "version": "4.0.1", 676 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 677 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 678 | "dev": true, 679 | "bin": { 680 | "esparse": "bin/esparse.js", 681 | "esvalidate": "bin/esvalidate.js" 682 | }, 683 | "engines": { 684 | "node": ">=4" 685 | } 686 | }, 687 | "node_modules/estraverse": { 688 | "version": "5.3.0", 689 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 690 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 691 | "dev": true, 692 | "engines": { 693 | "node": ">=4.0" 694 | } 695 | }, 696 | "node_modules/esutils": { 697 | "version": "2.0.3", 698 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 699 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 700 | "dev": true, 701 | "engines": { 702 | "node": ">=0.10.0" 703 | } 704 | }, 705 | "node_modules/fast-glob": { 706 | "version": "3.2.12", 707 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", 708 | "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", 709 | "dev": true, 710 | "dependencies": { 711 | "@nodelib/fs.stat": "^2.0.2", 712 | "@nodelib/fs.walk": "^1.2.3", 713 | "glob-parent": "^5.1.2", 714 | "merge2": "^1.3.0", 715 | "micromatch": "^4.0.4" 716 | }, 717 | "engines": { 718 | "node": ">=8.6.0" 719 | } 720 | }, 721 | "node_modules/fast-levenshtein": { 722 | "version": "2.0.6", 723 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 724 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 725 | "dev": true 726 | }, 727 | "node_modules/fastq": { 728 | "version": "1.13.0", 729 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 730 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 731 | "dev": true, 732 | "dependencies": { 733 | "reusify": "^1.0.4" 734 | } 735 | }, 736 | "node_modules/fill-range": { 737 | "version": "7.0.1", 738 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 739 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 740 | "dev": true, 741 | "dependencies": { 742 | "to-regex-range": "^5.0.1" 743 | }, 744 | "engines": { 745 | "node": ">=8" 746 | } 747 | }, 748 | "node_modules/find-replace": { 749 | "version": "3.0.0", 750 | "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", 751 | "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", 752 | "dev": true, 753 | "dependencies": { 754 | "array-back": "^3.0.1" 755 | }, 756 | "engines": { 757 | "node": ">=4.0.0" 758 | } 759 | }, 760 | "node_modules/form-data": { 761 | "version": "4.0.0", 762 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 763 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 764 | "dev": true, 765 | "dependencies": { 766 | "asynckit": "^0.4.0", 767 | "combined-stream": "^1.0.8", 768 | "mime-types": "^2.1.12" 769 | }, 770 | "engines": { 771 | "node": ">= 6" 772 | } 773 | }, 774 | "node_modules/glob-parent": { 775 | "version": "5.1.2", 776 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 777 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 778 | "dev": true, 779 | "dependencies": { 780 | "is-glob": "^4.0.1" 781 | }, 782 | "engines": { 783 | "node": ">= 6" 784 | } 785 | }, 786 | "node_modules/grammarkdown": { 787 | "version": "3.2.0", 788 | "resolved": "https://registry.npmjs.org/grammarkdown/-/grammarkdown-3.2.0.tgz", 789 | "integrity": "sha512-pEVUvG2Kxv/PwM3Dm3kFEU1/GHRkNcFWmk/zkqN/y0uoQtPaZ+5VaBacMQAaFOIL9WGYjHXtqpkT5YRvySsISQ==", 790 | "dev": true, 791 | "dependencies": { 792 | "@esfx/async-canceltoken": "^1.0.0-pre.13", 793 | "@esfx/cancelable": "^1.0.0-pre.13" 794 | }, 795 | "bin": { 796 | "grammarkdown": "bin/grammarkdown" 797 | } 798 | }, 799 | "node_modules/has-flag": { 800 | "version": "4.0.0", 801 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 802 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 803 | "dev": true, 804 | "engines": { 805 | "node": ">=8" 806 | } 807 | }, 808 | "node_modules/highlight.js": { 809 | "version": "11.0.1", 810 | "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.0.1.tgz", 811 | "integrity": "sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==", 812 | "dev": true, 813 | "engines": { 814 | "node": ">=12.0.0" 815 | } 816 | }, 817 | "node_modules/html-encoding-sniffer": { 818 | "version": "3.0.0", 819 | "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", 820 | "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", 821 | "dev": true, 822 | "dependencies": { 823 | "whatwg-encoding": "^2.0.0" 824 | }, 825 | "engines": { 826 | "node": ">=12" 827 | } 828 | }, 829 | "node_modules/html-escape": { 830 | "version": "1.0.2", 831 | "resolved": "https://registry.npmjs.org/html-escape/-/html-escape-1.0.2.tgz", 832 | "integrity": "sha512-r4cqVc7QAX1/jpPsW9OJNsTTtFhcf+ZBqoA3rWOddMg/y+n6ElKfz+IGKbvV2RTeECDzyrQXa2rpo3IFFrANWg==", 833 | "dev": true 834 | }, 835 | "node_modules/http-proxy-agent": { 836 | "version": "5.0.0", 837 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", 838 | "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", 839 | "dev": true, 840 | "dependencies": { 841 | "@tootallnate/once": "2", 842 | "agent-base": "6", 843 | "debug": "4" 844 | }, 845 | "engines": { 846 | "node": ">= 6" 847 | } 848 | }, 849 | "node_modules/https-proxy-agent": { 850 | "version": "5.0.1", 851 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 852 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 853 | "dev": true, 854 | "dependencies": { 855 | "agent-base": "6", 856 | "debug": "4" 857 | }, 858 | "engines": { 859 | "node": ">= 6" 860 | } 861 | }, 862 | "node_modules/iconv-lite": { 863 | "version": "0.6.3", 864 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 865 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 866 | "dev": true, 867 | "dependencies": { 868 | "safer-buffer": ">= 2.1.2 < 3.0.0" 869 | }, 870 | "engines": { 871 | "node": ">=0.10.0" 872 | } 873 | }, 874 | "node_modules/is-extglob": { 875 | "version": "2.1.1", 876 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 877 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 878 | "dev": true, 879 | "engines": { 880 | "node": ">=0.10.0" 881 | } 882 | }, 883 | "node_modules/is-glob": { 884 | "version": "4.0.3", 885 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 886 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 887 | "dev": true, 888 | "dependencies": { 889 | "is-extglob": "^2.1.1" 890 | }, 891 | "engines": { 892 | "node": ">=0.10.0" 893 | } 894 | }, 895 | "node_modules/is-number": { 896 | "version": "7.0.0", 897 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 898 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 899 | "dev": true, 900 | "engines": { 901 | "node": ">=0.12.0" 902 | } 903 | }, 904 | "node_modules/is-potential-custom-element-name": { 905 | "version": "1.0.1", 906 | "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", 907 | "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", 908 | "dev": true 909 | }, 910 | "node_modules/js-tokens": { 911 | "version": "4.0.0", 912 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 913 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 914 | "dev": true 915 | }, 916 | "node_modules/js-yaml": { 917 | "version": "3.14.1", 918 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 919 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 920 | "dev": true, 921 | "dependencies": { 922 | "argparse": "^1.0.7", 923 | "esprima": "^4.0.0" 924 | }, 925 | "bin": { 926 | "js-yaml": "bin/js-yaml.js" 927 | } 928 | }, 929 | "node_modules/jsdom": { 930 | "version": "19.0.0", 931 | "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", 932 | "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", 933 | "dev": true, 934 | "dependencies": { 935 | "abab": "^2.0.5", 936 | "acorn": "^8.5.0", 937 | "acorn-globals": "^6.0.0", 938 | "cssom": "^0.5.0", 939 | "cssstyle": "^2.3.0", 940 | "data-urls": "^3.0.1", 941 | "decimal.js": "^10.3.1", 942 | "domexception": "^4.0.0", 943 | "escodegen": "^2.0.0", 944 | "form-data": "^4.0.0", 945 | "html-encoding-sniffer": "^3.0.0", 946 | "http-proxy-agent": "^5.0.0", 947 | "https-proxy-agent": "^5.0.0", 948 | "is-potential-custom-element-name": "^1.0.1", 949 | "nwsapi": "^2.2.0", 950 | "parse5": "6.0.1", 951 | "saxes": "^5.0.1", 952 | "symbol-tree": "^3.2.4", 953 | "tough-cookie": "^4.0.0", 954 | "w3c-hr-time": "^1.0.2", 955 | "w3c-xmlserializer": "^3.0.0", 956 | "webidl-conversions": "^7.0.0", 957 | "whatwg-encoding": "^2.0.0", 958 | "whatwg-mimetype": "^3.0.0", 959 | "whatwg-url": "^10.0.0", 960 | "ws": "^8.2.3", 961 | "xml-name-validator": "^4.0.0" 962 | }, 963 | "engines": { 964 | "node": ">=12" 965 | }, 966 | "peerDependencies": { 967 | "canvas": "^2.5.0" 968 | }, 969 | "peerDependenciesMeta": { 970 | "canvas": { 971 | "optional": true 972 | } 973 | } 974 | }, 975 | "node_modules/levn": { 976 | "version": "0.3.0", 977 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 978 | "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", 979 | "dev": true, 980 | "dependencies": { 981 | "prelude-ls": "~1.1.2", 982 | "type-check": "~0.3.2" 983 | }, 984 | "engines": { 985 | "node": ">= 0.8.0" 986 | } 987 | }, 988 | "node_modules/lodash.camelcase": { 989 | "version": "4.3.0", 990 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 991 | "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", 992 | "dev": true 993 | }, 994 | "node_modules/merge2": { 995 | "version": "1.4.1", 996 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 997 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 998 | "dev": true, 999 | "engines": { 1000 | "node": ">= 8" 1001 | } 1002 | }, 1003 | "node_modules/micromatch": { 1004 | "version": "4.0.5", 1005 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1006 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1007 | "dev": true, 1008 | "dependencies": { 1009 | "braces": "^3.0.2", 1010 | "picomatch": "^2.3.1" 1011 | }, 1012 | "engines": { 1013 | "node": ">=8.6" 1014 | } 1015 | }, 1016 | "node_modules/mime-db": { 1017 | "version": "1.52.0", 1018 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1019 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1020 | "dev": true, 1021 | "engines": { 1022 | "node": ">= 0.6" 1023 | } 1024 | }, 1025 | "node_modules/mime-types": { 1026 | "version": "2.1.35", 1027 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1028 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1029 | "dev": true, 1030 | "dependencies": { 1031 | "mime-db": "1.52.0" 1032 | }, 1033 | "engines": { 1034 | "node": ">= 0.6" 1035 | } 1036 | }, 1037 | "node_modules/ms": { 1038 | "version": "2.1.2", 1039 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1040 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1041 | "dev": true 1042 | }, 1043 | "node_modules/nwsapi": { 1044 | "version": "2.2.0", 1045 | "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", 1046 | "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", 1047 | "dev": true 1048 | }, 1049 | "node_modules/optionator": { 1050 | "version": "0.8.3", 1051 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1052 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 1053 | "dev": true, 1054 | "dependencies": { 1055 | "deep-is": "~0.1.3", 1056 | "fast-levenshtein": "~2.0.6", 1057 | "levn": "~0.3.0", 1058 | "prelude-ls": "~1.1.2", 1059 | "type-check": "~0.3.2", 1060 | "word-wrap": "~1.2.3" 1061 | }, 1062 | "engines": { 1063 | "node": ">= 0.8.0" 1064 | } 1065 | }, 1066 | "node_modules/parse5": { 1067 | "version": "6.0.1", 1068 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", 1069 | "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", 1070 | "dev": true 1071 | }, 1072 | "node_modules/picomatch": { 1073 | "version": "2.3.1", 1074 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1075 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1076 | "dev": true, 1077 | "engines": { 1078 | "node": ">=8.6" 1079 | }, 1080 | "funding": { 1081 | "url": "https://github.com/sponsors/jonschlinkert" 1082 | } 1083 | }, 1084 | "node_modules/prelude-ls": { 1085 | "version": "1.1.2", 1086 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1087 | "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", 1088 | "dev": true, 1089 | "engines": { 1090 | "node": ">= 0.8.0" 1091 | } 1092 | }, 1093 | "node_modules/prex": { 1094 | "version": "0.4.9", 1095 | "resolved": "https://registry.npmjs.org/prex/-/prex-0.4.9.tgz", 1096 | "integrity": "sha512-pQCB9AH8MXQRBaelDkhnTkqY6GRiXt1xWlx2hBReZYZwVA0m7EQcnF/K55zr87cCADDHmdD+qq7G6a8Pu+BRFA==", 1097 | "deprecated": "This package has been deprecated in favor of several '@esfx/*' packages that replace it. Please see the README for more information", 1098 | "dev": true, 1099 | "dependencies": { 1100 | "@esfx/cancelable": "^1.0.0 || >=1.0.0-pre.13", 1101 | "@esfx/disposable": "^1.0.0 || >=1.0.0-pre.13" 1102 | } 1103 | }, 1104 | "node_modules/promise-debounce": { 1105 | "version": "1.0.1", 1106 | "resolved": "https://registry.npmjs.org/promise-debounce/-/promise-debounce-1.0.1.tgz", 1107 | "integrity": "sha512-jq3Crngf1DaaOXQIOUkPr7LsW4UsWyn0KW1MJ+yMn5njTJ+F1AuHmjjwJhod9HuoNSSMspSLS9PS3V7BrexwjQ==", 1108 | "dev": true 1109 | }, 1110 | "node_modules/psl": { 1111 | "version": "1.9.0", 1112 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 1113 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", 1114 | "dev": true 1115 | }, 1116 | "node_modules/punycode": { 1117 | "version": "2.1.1", 1118 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1119 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1120 | "dev": true, 1121 | "engines": { 1122 | "node": ">=6" 1123 | } 1124 | }, 1125 | "node_modules/querystringify": { 1126 | "version": "2.2.0", 1127 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 1128 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", 1129 | "dev": true 1130 | }, 1131 | "node_modules/queue-microtask": { 1132 | "version": "1.2.3", 1133 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1134 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1135 | "dev": true, 1136 | "funding": [ 1137 | { 1138 | "type": "github", 1139 | "url": "https://github.com/sponsors/feross" 1140 | }, 1141 | { 1142 | "type": "patreon", 1143 | "url": "https://www.patreon.com/feross" 1144 | }, 1145 | { 1146 | "type": "consulting", 1147 | "url": "https://feross.org/support" 1148 | } 1149 | ] 1150 | }, 1151 | "node_modules/reduce-flatten": { 1152 | "version": "2.0.0", 1153 | "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", 1154 | "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", 1155 | "dev": true, 1156 | "engines": { 1157 | "node": ">=6" 1158 | } 1159 | }, 1160 | "node_modules/requires-port": { 1161 | "version": "1.0.0", 1162 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1163 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", 1164 | "dev": true 1165 | }, 1166 | "node_modules/reusify": { 1167 | "version": "1.0.4", 1168 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1169 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1170 | "dev": true, 1171 | "engines": { 1172 | "iojs": ">=1.0.0", 1173 | "node": ">=0.10.0" 1174 | } 1175 | }, 1176 | "node_modules/run-parallel": { 1177 | "version": "1.2.0", 1178 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1179 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1180 | "dev": true, 1181 | "funding": [ 1182 | { 1183 | "type": "github", 1184 | "url": "https://github.com/sponsors/feross" 1185 | }, 1186 | { 1187 | "type": "patreon", 1188 | "url": "https://www.patreon.com/feross" 1189 | }, 1190 | { 1191 | "type": "consulting", 1192 | "url": "https://feross.org/support" 1193 | } 1194 | ], 1195 | "dependencies": { 1196 | "queue-microtask": "^1.2.2" 1197 | } 1198 | }, 1199 | "node_modules/safer-buffer": { 1200 | "version": "2.1.2", 1201 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1202 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1203 | "dev": true 1204 | }, 1205 | "node_modules/saxes": { 1206 | "version": "5.0.1", 1207 | "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", 1208 | "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", 1209 | "dev": true, 1210 | "dependencies": { 1211 | "xmlchars": "^2.2.0" 1212 | }, 1213 | "engines": { 1214 | "node": ">=10" 1215 | } 1216 | }, 1217 | "node_modules/source-map": { 1218 | "version": "0.6.1", 1219 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1220 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1221 | "dev": true, 1222 | "optional": true, 1223 | "engines": { 1224 | "node": ">=0.10.0" 1225 | } 1226 | }, 1227 | "node_modules/sprintf-js": { 1228 | "version": "1.0.3", 1229 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1230 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 1231 | "dev": true 1232 | }, 1233 | "node_modules/supports-color": { 1234 | "version": "7.2.0", 1235 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1236 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1237 | "dev": true, 1238 | "dependencies": { 1239 | "has-flag": "^4.0.0" 1240 | }, 1241 | "engines": { 1242 | "node": ">=8" 1243 | } 1244 | }, 1245 | "node_modules/symbol-tree": { 1246 | "version": "3.2.4", 1247 | "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", 1248 | "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", 1249 | "dev": true 1250 | }, 1251 | "node_modules/table-layout": { 1252 | "version": "1.0.2", 1253 | "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", 1254 | "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", 1255 | "dev": true, 1256 | "dependencies": { 1257 | "array-back": "^4.0.1", 1258 | "deep-extend": "~0.6.0", 1259 | "typical": "^5.2.0", 1260 | "wordwrapjs": "^4.0.0" 1261 | }, 1262 | "engines": { 1263 | "node": ">=8.0.0" 1264 | } 1265 | }, 1266 | "node_modules/table-layout/node_modules/array-back": { 1267 | "version": "4.0.2", 1268 | "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", 1269 | "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", 1270 | "dev": true, 1271 | "engines": { 1272 | "node": ">=8" 1273 | } 1274 | }, 1275 | "node_modules/table-layout/node_modules/typical": { 1276 | "version": "5.2.0", 1277 | "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", 1278 | "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", 1279 | "dev": true, 1280 | "engines": { 1281 | "node": ">=8" 1282 | } 1283 | }, 1284 | "node_modules/to-regex-range": { 1285 | "version": "5.0.1", 1286 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1287 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1288 | "dev": true, 1289 | "dependencies": { 1290 | "is-number": "^7.0.0" 1291 | }, 1292 | "engines": { 1293 | "node": ">=8.0" 1294 | } 1295 | }, 1296 | "node_modules/tough-cookie": { 1297 | "version": "4.1.2", 1298 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", 1299 | "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", 1300 | "dev": true, 1301 | "dependencies": { 1302 | "psl": "^1.1.33", 1303 | "punycode": "^2.1.1", 1304 | "universalify": "^0.2.0", 1305 | "url-parse": "^1.5.3" 1306 | }, 1307 | "engines": { 1308 | "node": ">=6" 1309 | } 1310 | }, 1311 | "node_modules/tr46": { 1312 | "version": "3.0.0", 1313 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", 1314 | "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", 1315 | "dev": true, 1316 | "dependencies": { 1317 | "punycode": "^2.1.1" 1318 | }, 1319 | "engines": { 1320 | "node": ">=12" 1321 | } 1322 | }, 1323 | "node_modules/tslib": { 1324 | "version": "2.4.0", 1325 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 1326 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 1327 | "dev": true 1328 | }, 1329 | "node_modules/type-check": { 1330 | "version": "0.3.2", 1331 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1332 | "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", 1333 | "dev": true, 1334 | "dependencies": { 1335 | "prelude-ls": "~1.1.2" 1336 | }, 1337 | "engines": { 1338 | "node": ">= 0.8.0" 1339 | } 1340 | }, 1341 | "node_modules/typical": { 1342 | "version": "4.0.0", 1343 | "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", 1344 | "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", 1345 | "dev": true, 1346 | "engines": { 1347 | "node": ">=8" 1348 | } 1349 | }, 1350 | "node_modules/universalify": { 1351 | "version": "0.2.0", 1352 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", 1353 | "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", 1354 | "dev": true, 1355 | "engines": { 1356 | "node": ">= 4.0.0" 1357 | } 1358 | }, 1359 | "node_modules/url-parse": { 1360 | "version": "1.5.10", 1361 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 1362 | "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 1363 | "dev": true, 1364 | "dependencies": { 1365 | "querystringify": "^2.1.1", 1366 | "requires-port": "^1.0.0" 1367 | } 1368 | }, 1369 | "node_modules/w3c-hr-time": { 1370 | "version": "1.0.2", 1371 | "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", 1372 | "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", 1373 | "dev": true, 1374 | "dependencies": { 1375 | "browser-process-hrtime": "^1.0.0" 1376 | } 1377 | }, 1378 | "node_modules/w3c-xmlserializer": { 1379 | "version": "3.0.0", 1380 | "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", 1381 | "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", 1382 | "dev": true, 1383 | "dependencies": { 1384 | "xml-name-validator": "^4.0.0" 1385 | }, 1386 | "engines": { 1387 | "node": ">=12" 1388 | } 1389 | }, 1390 | "node_modules/webidl-conversions": { 1391 | "version": "7.0.0", 1392 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", 1393 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", 1394 | "dev": true, 1395 | "engines": { 1396 | "node": ">=12" 1397 | } 1398 | }, 1399 | "node_modules/whatwg-encoding": { 1400 | "version": "2.0.0", 1401 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", 1402 | "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", 1403 | "dev": true, 1404 | "dependencies": { 1405 | "iconv-lite": "0.6.3" 1406 | }, 1407 | "engines": { 1408 | "node": ">=12" 1409 | } 1410 | }, 1411 | "node_modules/whatwg-mimetype": { 1412 | "version": "3.0.0", 1413 | "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", 1414 | "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", 1415 | "dev": true, 1416 | "engines": { 1417 | "node": ">=12" 1418 | } 1419 | }, 1420 | "node_modules/whatwg-url": { 1421 | "version": "10.0.0", 1422 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", 1423 | "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", 1424 | "dev": true, 1425 | "dependencies": { 1426 | "tr46": "^3.0.0", 1427 | "webidl-conversions": "^7.0.0" 1428 | }, 1429 | "engines": { 1430 | "node": ">=12" 1431 | } 1432 | }, 1433 | "node_modules/word-wrap": { 1434 | "version": "1.2.3", 1435 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1436 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1437 | "dev": true, 1438 | "engines": { 1439 | "node": ">=0.10.0" 1440 | } 1441 | }, 1442 | "node_modules/wordwrapjs": { 1443 | "version": "4.0.1", 1444 | "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", 1445 | "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", 1446 | "dev": true, 1447 | "dependencies": { 1448 | "reduce-flatten": "^2.0.0", 1449 | "typical": "^5.2.0" 1450 | }, 1451 | "engines": { 1452 | "node": ">=8.0.0" 1453 | } 1454 | }, 1455 | "node_modules/wordwrapjs/node_modules/typical": { 1456 | "version": "5.2.0", 1457 | "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", 1458 | "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", 1459 | "dev": true, 1460 | "engines": { 1461 | "node": ">=8" 1462 | } 1463 | }, 1464 | "node_modules/ws": { 1465 | "version": "8.8.1", 1466 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", 1467 | "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", 1468 | "dev": true, 1469 | "engines": { 1470 | "node": ">=10.0.0" 1471 | }, 1472 | "peerDependencies": { 1473 | "bufferutil": "^4.0.1", 1474 | "utf-8-validate": "^5.0.2" 1475 | }, 1476 | "peerDependenciesMeta": { 1477 | "bufferutil": { 1478 | "optional": true 1479 | }, 1480 | "utf-8-validate": { 1481 | "optional": true 1482 | } 1483 | } 1484 | }, 1485 | "node_modules/xml-name-validator": { 1486 | "version": "4.0.0", 1487 | "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", 1488 | "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", 1489 | "dev": true, 1490 | "engines": { 1491 | "node": ">=12" 1492 | } 1493 | }, 1494 | "node_modules/xmlchars": { 1495 | "version": "2.2.0", 1496 | "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", 1497 | "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", 1498 | "dev": true 1499 | } 1500 | }, 1501 | "dependencies": { 1502 | "@babel/code-frame": { 1503 | "version": "7.12.11", 1504 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 1505 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 1506 | "dev": true, 1507 | "requires": { 1508 | "@babel/highlight": "^7.10.4" 1509 | } 1510 | }, 1511 | "@babel/helper-validator-identifier": { 1512 | "version": "7.19.1", 1513 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 1514 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 1515 | "dev": true 1516 | }, 1517 | "@babel/highlight": { 1518 | "version": "7.18.6", 1519 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 1520 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 1521 | "dev": true, 1522 | "requires": { 1523 | "@babel/helper-validator-identifier": "^7.18.6", 1524 | "chalk": "^2.0.0", 1525 | "js-tokens": "^4.0.0" 1526 | }, 1527 | "dependencies": { 1528 | "ansi-styles": { 1529 | "version": "3.2.1", 1530 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1531 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1532 | "dev": true, 1533 | "requires": { 1534 | "color-convert": "^1.9.0" 1535 | } 1536 | }, 1537 | "chalk": { 1538 | "version": "2.4.2", 1539 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1540 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1541 | "dev": true, 1542 | "requires": { 1543 | "ansi-styles": "^3.2.1", 1544 | "escape-string-regexp": "^1.0.5", 1545 | "supports-color": "^5.3.0" 1546 | } 1547 | }, 1548 | "color-convert": { 1549 | "version": "1.9.3", 1550 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1551 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1552 | "dev": true, 1553 | "requires": { 1554 | "color-name": "1.1.3" 1555 | } 1556 | }, 1557 | "color-name": { 1558 | "version": "1.1.3", 1559 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1560 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1561 | "dev": true 1562 | }, 1563 | "has-flag": { 1564 | "version": "3.0.0", 1565 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1566 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1567 | "dev": true 1568 | }, 1569 | "supports-color": { 1570 | "version": "5.5.0", 1571 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1572 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1573 | "dev": true, 1574 | "requires": { 1575 | "has-flag": "^3.0.0" 1576 | } 1577 | } 1578 | } 1579 | }, 1580 | "@esfx/async-canceltoken": { 1581 | "version": "1.0.0-pre.37", 1582 | "resolved": "https://registry.npmjs.org/@esfx/async-canceltoken/-/async-canceltoken-1.0.0-pre.37.tgz", 1583 | "integrity": "sha512-uzHRgDNU4hbpsJ9iBkxB/4iejJQaZFzEmKmwQhXVQ5LgKiIDoZjQ5ctPwXoFruurAc6V54YeyKNynhERcn5dsQ==", 1584 | "dev": true, 1585 | "requires": { 1586 | "@esfx/cancelable": "^1.0.0-pre.37", 1587 | "@esfx/canceltoken": "^1.0.0-pre.37", 1588 | "@esfx/disposable": "^1.0.0-pre.37", 1589 | "tslib": "^2.3.1" 1590 | } 1591 | }, 1592 | "@esfx/cancelable": { 1593 | "version": "1.0.0-pre.37", 1594 | "resolved": "https://registry.npmjs.org/@esfx/cancelable/-/cancelable-1.0.0-pre.37.tgz", 1595 | "integrity": "sha512-1gZz5RwnrnGQq9LRqcBrNwtV5xPAFATo3D9quUY9NXKTOIZE1z/dXp3siSVtVtLkvedd1+gc4JCbI01wEddBDQ==", 1596 | "dev": true, 1597 | "requires": { 1598 | "@esfx/disposable": "^1.0.0-pre.37" 1599 | } 1600 | }, 1601 | "@esfx/canceltoken": { 1602 | "version": "1.0.0-pre.37", 1603 | "resolved": "https://registry.npmjs.org/@esfx/canceltoken/-/canceltoken-1.0.0-pre.37.tgz", 1604 | "integrity": "sha512-t1OGWY0QUu6ESRYrjL/gl40rzRGconS0RLJhS+ATRvhWcJzAricEpx82UsOBIZjxDeJFsUOmKakd1QznwWtCsw==", 1605 | "dev": true, 1606 | "requires": { 1607 | "@esfx/cancelable": "^1.0.0-pre.37", 1608 | "@esfx/disposable": "^1.0.0-pre.37", 1609 | "tslib": "^2.3.1" 1610 | } 1611 | }, 1612 | "@esfx/disposable": { 1613 | "version": "1.0.0-pre.37", 1614 | "resolved": "https://registry.npmjs.org/@esfx/disposable/-/disposable-1.0.0-pre.37.tgz", 1615 | "integrity": "sha512-kXiWgXdfzOdgiS9LPnHFzz5jf36cDBZVOkVh6YdNf1gO6tAoC0Bu1lQxLtvle398ySUk8Bunrwubd2jFs2w50g==", 1616 | "dev": true 1617 | }, 1618 | "@nodelib/fs.scandir": { 1619 | "version": "2.1.5", 1620 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 1621 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 1622 | "dev": true, 1623 | "requires": { 1624 | "@nodelib/fs.stat": "2.0.5", 1625 | "run-parallel": "^1.1.9" 1626 | } 1627 | }, 1628 | "@nodelib/fs.stat": { 1629 | "version": "2.0.5", 1630 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 1631 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 1632 | "dev": true 1633 | }, 1634 | "@nodelib/fs.walk": { 1635 | "version": "1.2.8", 1636 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 1637 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 1638 | "dev": true, 1639 | "requires": { 1640 | "@nodelib/fs.scandir": "2.1.5", 1641 | "fastq": "^1.6.0" 1642 | } 1643 | }, 1644 | "@tc39/ecma262-biblio": { 1645 | "version": "2.1.2678", 1646 | "resolved": "https://registry.npmjs.org/@tc39/ecma262-biblio/-/ecma262-biblio-2.1.2678.tgz", 1647 | "integrity": "sha512-3I6m+wpNSHuQsJjeH3UgfqUaet1aM/9ReeWJH8H1H+DKLHfQafWK+OHQLgUbpd5ruJveC2AbyKuUVsXrtMV3Bw==", 1648 | "dev": true 1649 | }, 1650 | "@tootallnate/once": { 1651 | "version": "2.0.0", 1652 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", 1653 | "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", 1654 | "dev": true 1655 | }, 1656 | "abab": { 1657 | "version": "2.0.6", 1658 | "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", 1659 | "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", 1660 | "dev": true 1661 | }, 1662 | "acorn": { 1663 | "version": "8.8.0", 1664 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", 1665 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", 1666 | "dev": true 1667 | }, 1668 | "acorn-globals": { 1669 | "version": "6.0.0", 1670 | "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", 1671 | "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", 1672 | "dev": true, 1673 | "requires": { 1674 | "acorn": "^7.1.1", 1675 | "acorn-walk": "^7.1.1" 1676 | }, 1677 | "dependencies": { 1678 | "acorn": { 1679 | "version": "7.4.1", 1680 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 1681 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 1682 | "dev": true 1683 | } 1684 | } 1685 | }, 1686 | "acorn-walk": { 1687 | "version": "7.2.0", 1688 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 1689 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", 1690 | "dev": true 1691 | }, 1692 | "agent-base": { 1693 | "version": "6.0.2", 1694 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 1695 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 1696 | "dev": true, 1697 | "requires": { 1698 | "debug": "4" 1699 | } 1700 | }, 1701 | "ansi-styles": { 1702 | "version": "4.3.0", 1703 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1704 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1705 | "dev": true, 1706 | "requires": { 1707 | "color-convert": "^2.0.1" 1708 | } 1709 | }, 1710 | "argparse": { 1711 | "version": "1.0.10", 1712 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 1713 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 1714 | "dev": true, 1715 | "requires": { 1716 | "sprintf-js": "~1.0.2" 1717 | } 1718 | }, 1719 | "array-back": { 1720 | "version": "3.1.0", 1721 | "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", 1722 | "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", 1723 | "dev": true 1724 | }, 1725 | "asynckit": { 1726 | "version": "0.4.0", 1727 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 1728 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 1729 | "dev": true 1730 | }, 1731 | "braces": { 1732 | "version": "3.0.2", 1733 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1734 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1735 | "dev": true, 1736 | "requires": { 1737 | "fill-range": "^7.0.1" 1738 | } 1739 | }, 1740 | "browser-process-hrtime": { 1741 | "version": "1.0.0", 1742 | "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", 1743 | "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", 1744 | "dev": true 1745 | }, 1746 | "chalk": { 1747 | "version": "4.1.2", 1748 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1749 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1750 | "dev": true, 1751 | "requires": { 1752 | "ansi-styles": "^4.1.0", 1753 | "supports-color": "^7.1.0" 1754 | } 1755 | }, 1756 | "color-convert": { 1757 | "version": "2.0.1", 1758 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1759 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1760 | "dev": true, 1761 | "requires": { 1762 | "color-name": "~1.1.4" 1763 | } 1764 | }, 1765 | "color-name": { 1766 | "version": "1.1.4", 1767 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1768 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1769 | "dev": true 1770 | }, 1771 | "combined-stream": { 1772 | "version": "1.0.8", 1773 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 1774 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 1775 | "dev": true, 1776 | "requires": { 1777 | "delayed-stream": "~1.0.0" 1778 | } 1779 | }, 1780 | "command-line-args": { 1781 | "version": "5.2.1", 1782 | "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", 1783 | "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", 1784 | "dev": true, 1785 | "requires": { 1786 | "array-back": "^3.1.0", 1787 | "find-replace": "^3.0.0", 1788 | "lodash.camelcase": "^4.3.0", 1789 | "typical": "^4.0.0" 1790 | } 1791 | }, 1792 | "command-line-usage": { 1793 | "version": "6.1.3", 1794 | "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", 1795 | "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", 1796 | "dev": true, 1797 | "requires": { 1798 | "array-back": "^4.0.2", 1799 | "chalk": "^2.4.2", 1800 | "table-layout": "^1.0.2", 1801 | "typical": "^5.2.0" 1802 | }, 1803 | "dependencies": { 1804 | "ansi-styles": { 1805 | "version": "3.2.1", 1806 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1807 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1808 | "dev": true, 1809 | "requires": { 1810 | "color-convert": "^1.9.0" 1811 | } 1812 | }, 1813 | "array-back": { 1814 | "version": "4.0.2", 1815 | "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", 1816 | "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", 1817 | "dev": true 1818 | }, 1819 | "chalk": { 1820 | "version": "2.4.2", 1821 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1822 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1823 | "dev": true, 1824 | "requires": { 1825 | "ansi-styles": "^3.2.1", 1826 | "escape-string-regexp": "^1.0.5", 1827 | "supports-color": "^5.3.0" 1828 | } 1829 | }, 1830 | "color-convert": { 1831 | "version": "1.9.3", 1832 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1833 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1834 | "dev": true, 1835 | "requires": { 1836 | "color-name": "1.1.3" 1837 | } 1838 | }, 1839 | "color-name": { 1840 | "version": "1.1.3", 1841 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1842 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1843 | "dev": true 1844 | }, 1845 | "has-flag": { 1846 | "version": "3.0.0", 1847 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1848 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1849 | "dev": true 1850 | }, 1851 | "supports-color": { 1852 | "version": "5.5.0", 1853 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1854 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1855 | "dev": true, 1856 | "requires": { 1857 | "has-flag": "^3.0.0" 1858 | } 1859 | }, 1860 | "typical": { 1861 | "version": "5.2.0", 1862 | "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", 1863 | "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", 1864 | "dev": true 1865 | } 1866 | } 1867 | }, 1868 | "cssom": { 1869 | "version": "0.5.0", 1870 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", 1871 | "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", 1872 | "dev": true 1873 | }, 1874 | "cssstyle": { 1875 | "version": "2.3.0", 1876 | "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", 1877 | "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", 1878 | "dev": true, 1879 | "requires": { 1880 | "cssom": "~0.3.6" 1881 | }, 1882 | "dependencies": { 1883 | "cssom": { 1884 | "version": "0.3.8", 1885 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", 1886 | "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", 1887 | "dev": true 1888 | } 1889 | } 1890 | }, 1891 | "data-urls": { 1892 | "version": "3.0.2", 1893 | "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", 1894 | "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", 1895 | "dev": true, 1896 | "requires": { 1897 | "abab": "^2.0.6", 1898 | "whatwg-mimetype": "^3.0.0", 1899 | "whatwg-url": "^11.0.0" 1900 | }, 1901 | "dependencies": { 1902 | "whatwg-url": { 1903 | "version": "11.0.0", 1904 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", 1905 | "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", 1906 | "dev": true, 1907 | "requires": { 1908 | "tr46": "^3.0.0", 1909 | "webidl-conversions": "^7.0.0" 1910 | } 1911 | } 1912 | } 1913 | }, 1914 | "debug": { 1915 | "version": "4.3.4", 1916 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1917 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1918 | "dev": true, 1919 | "requires": { 1920 | "ms": "2.1.2" 1921 | } 1922 | }, 1923 | "decimal.js": { 1924 | "version": "10.4.0", 1925 | "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.0.tgz", 1926 | "integrity": "sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==", 1927 | "dev": true 1928 | }, 1929 | "dedent-js": { 1930 | "version": "1.0.1", 1931 | "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", 1932 | "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", 1933 | "dev": true 1934 | }, 1935 | "deep-extend": { 1936 | "version": "0.6.0", 1937 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 1938 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 1939 | "dev": true 1940 | }, 1941 | "deep-is": { 1942 | "version": "0.1.4", 1943 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1944 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1945 | "dev": true 1946 | }, 1947 | "delayed-stream": { 1948 | "version": "1.0.0", 1949 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1950 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 1951 | "dev": true 1952 | }, 1953 | "domexception": { 1954 | "version": "4.0.0", 1955 | "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", 1956 | "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", 1957 | "dev": true, 1958 | "requires": { 1959 | "webidl-conversions": "^7.0.0" 1960 | } 1961 | }, 1962 | "ecmarkdown": { 1963 | "version": "7.2.0", 1964 | "resolved": "https://registry.npmjs.org/ecmarkdown/-/ecmarkdown-7.2.0.tgz", 1965 | "integrity": "sha512-p0C4SJCvnvtm0y9gPhXBb5DlNbHsNS44ihVKBw3MXviZG2QQpZNH4z/3PbkpgECOjKOeZI+m84ISHVV9WLECFQ==", 1966 | "dev": true, 1967 | "requires": { 1968 | "escape-html": "^1.0.1" 1969 | } 1970 | }, 1971 | "ecmarkup": { 1972 | "version": "15.0.0", 1973 | "resolved": "https://registry.npmjs.org/ecmarkup/-/ecmarkup-15.0.0.tgz", 1974 | "integrity": "sha512-gKmfqwRqw1uNPwkftEOpVIH3VVV0O99IL2cRmnrBduvTE2szOvDytOk74dIOaAwqmhx/lonQuRZ64G7R2ZCUDQ==", 1975 | "dev": true, 1976 | "requires": { 1977 | "chalk": "^4.1.2", 1978 | "command-line-args": "^5.2.0", 1979 | "command-line-usage": "^6.1.1", 1980 | "dedent-js": "^1.0.1", 1981 | "ecmarkdown": "^7.2.0", 1982 | "eslint-formatter-codeframe": "^7.32.1", 1983 | "fast-glob": "^3.2.7", 1984 | "grammarkdown": "^3.2.0", 1985 | "highlight.js": "11.0.1", 1986 | "html-escape": "^1.0.2", 1987 | "js-yaml": "^3.13.1", 1988 | "jsdom": "^19.0.0", 1989 | "nwsapi": "2.2.0", 1990 | "parse5": "^6.0.1", 1991 | "prex": "^0.4.7", 1992 | "promise-debounce": "^1.0.1" 1993 | } 1994 | }, 1995 | "escape-html": { 1996 | "version": "1.0.3", 1997 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1998 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", 1999 | "dev": true 2000 | }, 2001 | "escape-string-regexp": { 2002 | "version": "1.0.5", 2003 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2004 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2005 | "dev": true 2006 | }, 2007 | "escodegen": { 2008 | "version": "2.0.0", 2009 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", 2010 | "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", 2011 | "dev": true, 2012 | "requires": { 2013 | "esprima": "^4.0.1", 2014 | "estraverse": "^5.2.0", 2015 | "esutils": "^2.0.2", 2016 | "optionator": "^0.8.1", 2017 | "source-map": "~0.6.1" 2018 | } 2019 | }, 2020 | "eslint-formatter-codeframe": { 2021 | "version": "7.32.1", 2022 | "resolved": "https://registry.npmjs.org/eslint-formatter-codeframe/-/eslint-formatter-codeframe-7.32.1.tgz", 2023 | "integrity": "sha512-DK/3Q3+zVKq/7PdSYiCxPrsDF8H/TRMK5n8Hziwr4IMkMy+XiKSwbpj25AdajS63I/B61Snetq4uVvX9fOLyAg==", 2024 | "dev": true, 2025 | "requires": { 2026 | "@babel/code-frame": "7.12.11", 2027 | "chalk": "^4.0.0" 2028 | } 2029 | }, 2030 | "esprima": { 2031 | "version": "4.0.1", 2032 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 2033 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 2034 | "dev": true 2035 | }, 2036 | "estraverse": { 2037 | "version": "5.3.0", 2038 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2039 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2040 | "dev": true 2041 | }, 2042 | "esutils": { 2043 | "version": "2.0.3", 2044 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 2045 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2046 | "dev": true 2047 | }, 2048 | "fast-glob": { 2049 | "version": "3.2.12", 2050 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", 2051 | "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", 2052 | "dev": true, 2053 | "requires": { 2054 | "@nodelib/fs.stat": "^2.0.2", 2055 | "@nodelib/fs.walk": "^1.2.3", 2056 | "glob-parent": "^5.1.2", 2057 | "merge2": "^1.3.0", 2058 | "micromatch": "^4.0.4" 2059 | } 2060 | }, 2061 | "fast-levenshtein": { 2062 | "version": "2.0.6", 2063 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2064 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 2065 | "dev": true 2066 | }, 2067 | "fastq": { 2068 | "version": "1.13.0", 2069 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 2070 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 2071 | "dev": true, 2072 | "requires": { 2073 | "reusify": "^1.0.4" 2074 | } 2075 | }, 2076 | "fill-range": { 2077 | "version": "7.0.1", 2078 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2079 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2080 | "dev": true, 2081 | "requires": { 2082 | "to-regex-range": "^5.0.1" 2083 | } 2084 | }, 2085 | "find-replace": { 2086 | "version": "3.0.0", 2087 | "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", 2088 | "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", 2089 | "dev": true, 2090 | "requires": { 2091 | "array-back": "^3.0.1" 2092 | } 2093 | }, 2094 | "form-data": { 2095 | "version": "4.0.0", 2096 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 2097 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 2098 | "dev": true, 2099 | "requires": { 2100 | "asynckit": "^0.4.0", 2101 | "combined-stream": "^1.0.8", 2102 | "mime-types": "^2.1.12" 2103 | } 2104 | }, 2105 | "glob-parent": { 2106 | "version": "5.1.2", 2107 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2108 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2109 | "dev": true, 2110 | "requires": { 2111 | "is-glob": "^4.0.1" 2112 | } 2113 | }, 2114 | "grammarkdown": { 2115 | "version": "3.2.0", 2116 | "resolved": "https://registry.npmjs.org/grammarkdown/-/grammarkdown-3.2.0.tgz", 2117 | "integrity": "sha512-pEVUvG2Kxv/PwM3Dm3kFEU1/GHRkNcFWmk/zkqN/y0uoQtPaZ+5VaBacMQAaFOIL9WGYjHXtqpkT5YRvySsISQ==", 2118 | "dev": true, 2119 | "requires": { 2120 | "@esfx/async-canceltoken": "^1.0.0-pre.13", 2121 | "@esfx/cancelable": "^1.0.0-pre.13" 2122 | } 2123 | }, 2124 | "has-flag": { 2125 | "version": "4.0.0", 2126 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2127 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2128 | "dev": true 2129 | }, 2130 | "highlight.js": { 2131 | "version": "11.0.1", 2132 | "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.0.1.tgz", 2133 | "integrity": "sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==", 2134 | "dev": true 2135 | }, 2136 | "html-encoding-sniffer": { 2137 | "version": "3.0.0", 2138 | "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", 2139 | "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", 2140 | "dev": true, 2141 | "requires": { 2142 | "whatwg-encoding": "^2.0.0" 2143 | } 2144 | }, 2145 | "html-escape": { 2146 | "version": "1.0.2", 2147 | "resolved": "https://registry.npmjs.org/html-escape/-/html-escape-1.0.2.tgz", 2148 | "integrity": "sha512-r4cqVc7QAX1/jpPsW9OJNsTTtFhcf+ZBqoA3rWOddMg/y+n6ElKfz+IGKbvV2RTeECDzyrQXa2rpo3IFFrANWg==", 2149 | "dev": true 2150 | }, 2151 | "http-proxy-agent": { 2152 | "version": "5.0.0", 2153 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", 2154 | "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", 2155 | "dev": true, 2156 | "requires": { 2157 | "@tootallnate/once": "2", 2158 | "agent-base": "6", 2159 | "debug": "4" 2160 | } 2161 | }, 2162 | "https-proxy-agent": { 2163 | "version": "5.0.1", 2164 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 2165 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 2166 | "dev": true, 2167 | "requires": { 2168 | "agent-base": "6", 2169 | "debug": "4" 2170 | } 2171 | }, 2172 | "iconv-lite": { 2173 | "version": "0.6.3", 2174 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 2175 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 2176 | "dev": true, 2177 | "requires": { 2178 | "safer-buffer": ">= 2.1.2 < 3.0.0" 2179 | } 2180 | }, 2181 | "is-extglob": { 2182 | "version": "2.1.1", 2183 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2184 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2185 | "dev": true 2186 | }, 2187 | "is-glob": { 2188 | "version": "4.0.3", 2189 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2190 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2191 | "dev": true, 2192 | "requires": { 2193 | "is-extglob": "^2.1.1" 2194 | } 2195 | }, 2196 | "is-number": { 2197 | "version": "7.0.0", 2198 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2199 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2200 | "dev": true 2201 | }, 2202 | "is-potential-custom-element-name": { 2203 | "version": "1.0.1", 2204 | "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", 2205 | "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", 2206 | "dev": true 2207 | }, 2208 | "js-tokens": { 2209 | "version": "4.0.0", 2210 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2211 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2212 | "dev": true 2213 | }, 2214 | "js-yaml": { 2215 | "version": "3.14.1", 2216 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 2217 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 2218 | "dev": true, 2219 | "requires": { 2220 | "argparse": "^1.0.7", 2221 | "esprima": "^4.0.0" 2222 | } 2223 | }, 2224 | "jsdom": { 2225 | "version": "19.0.0", 2226 | "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", 2227 | "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", 2228 | "dev": true, 2229 | "requires": { 2230 | "abab": "^2.0.5", 2231 | "acorn": "^8.5.0", 2232 | "acorn-globals": "^6.0.0", 2233 | "cssom": "^0.5.0", 2234 | "cssstyle": "^2.3.0", 2235 | "data-urls": "^3.0.1", 2236 | "decimal.js": "^10.3.1", 2237 | "domexception": "^4.0.0", 2238 | "escodegen": "^2.0.0", 2239 | "form-data": "^4.0.0", 2240 | "html-encoding-sniffer": "^3.0.0", 2241 | "http-proxy-agent": "^5.0.0", 2242 | "https-proxy-agent": "^5.0.0", 2243 | "is-potential-custom-element-name": "^1.0.1", 2244 | "nwsapi": "^2.2.0", 2245 | "parse5": "6.0.1", 2246 | "saxes": "^5.0.1", 2247 | "symbol-tree": "^3.2.4", 2248 | "tough-cookie": "^4.0.0", 2249 | "w3c-hr-time": "^1.0.2", 2250 | "w3c-xmlserializer": "^3.0.0", 2251 | "webidl-conversions": "^7.0.0", 2252 | "whatwg-encoding": "^2.0.0", 2253 | "whatwg-mimetype": "^3.0.0", 2254 | "whatwg-url": "^10.0.0", 2255 | "ws": "^8.2.3", 2256 | "xml-name-validator": "^4.0.0" 2257 | } 2258 | }, 2259 | "levn": { 2260 | "version": "0.3.0", 2261 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 2262 | "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", 2263 | "dev": true, 2264 | "requires": { 2265 | "prelude-ls": "~1.1.2", 2266 | "type-check": "~0.3.2" 2267 | } 2268 | }, 2269 | "lodash.camelcase": { 2270 | "version": "4.3.0", 2271 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 2272 | "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", 2273 | "dev": true 2274 | }, 2275 | "merge2": { 2276 | "version": "1.4.1", 2277 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2278 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2279 | "dev": true 2280 | }, 2281 | "micromatch": { 2282 | "version": "4.0.5", 2283 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2284 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2285 | "dev": true, 2286 | "requires": { 2287 | "braces": "^3.0.2", 2288 | "picomatch": "^2.3.1" 2289 | } 2290 | }, 2291 | "mime-db": { 2292 | "version": "1.52.0", 2293 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2294 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 2295 | "dev": true 2296 | }, 2297 | "mime-types": { 2298 | "version": "2.1.35", 2299 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2300 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2301 | "dev": true, 2302 | "requires": { 2303 | "mime-db": "1.52.0" 2304 | } 2305 | }, 2306 | "ms": { 2307 | "version": "2.1.2", 2308 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2309 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2310 | "dev": true 2311 | }, 2312 | "nwsapi": { 2313 | "version": "2.2.0", 2314 | "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", 2315 | "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", 2316 | "dev": true 2317 | }, 2318 | "optionator": { 2319 | "version": "0.8.3", 2320 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 2321 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 2322 | "dev": true, 2323 | "requires": { 2324 | "deep-is": "~0.1.3", 2325 | "fast-levenshtein": "~2.0.6", 2326 | "levn": "~0.3.0", 2327 | "prelude-ls": "~1.1.2", 2328 | "type-check": "~0.3.2", 2329 | "word-wrap": "~1.2.3" 2330 | } 2331 | }, 2332 | "parse5": { 2333 | "version": "6.0.1", 2334 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", 2335 | "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", 2336 | "dev": true 2337 | }, 2338 | "picomatch": { 2339 | "version": "2.3.1", 2340 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2341 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2342 | "dev": true 2343 | }, 2344 | "prelude-ls": { 2345 | "version": "1.1.2", 2346 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2347 | "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", 2348 | "dev": true 2349 | }, 2350 | "prex": { 2351 | "version": "0.4.9", 2352 | "resolved": "https://registry.npmjs.org/prex/-/prex-0.4.9.tgz", 2353 | "integrity": "sha512-pQCB9AH8MXQRBaelDkhnTkqY6GRiXt1xWlx2hBReZYZwVA0m7EQcnF/K55zr87cCADDHmdD+qq7G6a8Pu+BRFA==", 2354 | "dev": true, 2355 | "requires": { 2356 | "@esfx/cancelable": "^1.0.0 || >=1.0.0-pre.13", 2357 | "@esfx/disposable": "^1.0.0 || >=1.0.0-pre.13" 2358 | } 2359 | }, 2360 | "promise-debounce": { 2361 | "version": "1.0.1", 2362 | "resolved": "https://registry.npmjs.org/promise-debounce/-/promise-debounce-1.0.1.tgz", 2363 | "integrity": "sha512-jq3Crngf1DaaOXQIOUkPr7LsW4UsWyn0KW1MJ+yMn5njTJ+F1AuHmjjwJhod9HuoNSSMspSLS9PS3V7BrexwjQ==", 2364 | "dev": true 2365 | }, 2366 | "psl": { 2367 | "version": "1.9.0", 2368 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", 2369 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", 2370 | "dev": true 2371 | }, 2372 | "punycode": { 2373 | "version": "2.1.1", 2374 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2375 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2376 | "dev": true 2377 | }, 2378 | "querystringify": { 2379 | "version": "2.2.0", 2380 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 2381 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", 2382 | "dev": true 2383 | }, 2384 | "queue-microtask": { 2385 | "version": "1.2.3", 2386 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2387 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2388 | "dev": true 2389 | }, 2390 | "reduce-flatten": { 2391 | "version": "2.0.0", 2392 | "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", 2393 | "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", 2394 | "dev": true 2395 | }, 2396 | "requires-port": { 2397 | "version": "1.0.0", 2398 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 2399 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", 2400 | "dev": true 2401 | }, 2402 | "reusify": { 2403 | "version": "1.0.4", 2404 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2405 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2406 | "dev": true 2407 | }, 2408 | "run-parallel": { 2409 | "version": "1.2.0", 2410 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2411 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2412 | "dev": true, 2413 | "requires": { 2414 | "queue-microtask": "^1.2.2" 2415 | } 2416 | }, 2417 | "safer-buffer": { 2418 | "version": "2.1.2", 2419 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2420 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2421 | "dev": true 2422 | }, 2423 | "saxes": { 2424 | "version": "5.0.1", 2425 | "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", 2426 | "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", 2427 | "dev": true, 2428 | "requires": { 2429 | "xmlchars": "^2.2.0" 2430 | } 2431 | }, 2432 | "source-map": { 2433 | "version": "0.6.1", 2434 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2435 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2436 | "dev": true, 2437 | "optional": true 2438 | }, 2439 | "sprintf-js": { 2440 | "version": "1.0.3", 2441 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2442 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 2443 | "dev": true 2444 | }, 2445 | "supports-color": { 2446 | "version": "7.2.0", 2447 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2448 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2449 | "dev": true, 2450 | "requires": { 2451 | "has-flag": "^4.0.0" 2452 | } 2453 | }, 2454 | "symbol-tree": { 2455 | "version": "3.2.4", 2456 | "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", 2457 | "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", 2458 | "dev": true 2459 | }, 2460 | "table-layout": { 2461 | "version": "1.0.2", 2462 | "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", 2463 | "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", 2464 | "dev": true, 2465 | "requires": { 2466 | "array-back": "^4.0.1", 2467 | "deep-extend": "~0.6.0", 2468 | "typical": "^5.2.0", 2469 | "wordwrapjs": "^4.0.0" 2470 | }, 2471 | "dependencies": { 2472 | "array-back": { 2473 | "version": "4.0.2", 2474 | "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", 2475 | "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", 2476 | "dev": true 2477 | }, 2478 | "typical": { 2479 | "version": "5.2.0", 2480 | "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", 2481 | "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", 2482 | "dev": true 2483 | } 2484 | } 2485 | }, 2486 | "to-regex-range": { 2487 | "version": "5.0.1", 2488 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2489 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2490 | "dev": true, 2491 | "requires": { 2492 | "is-number": "^7.0.0" 2493 | } 2494 | }, 2495 | "tough-cookie": { 2496 | "version": "4.1.2", 2497 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", 2498 | "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", 2499 | "dev": true, 2500 | "requires": { 2501 | "psl": "^1.1.33", 2502 | "punycode": "^2.1.1", 2503 | "universalify": "^0.2.0", 2504 | "url-parse": "^1.5.3" 2505 | } 2506 | }, 2507 | "tr46": { 2508 | "version": "3.0.0", 2509 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", 2510 | "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", 2511 | "dev": true, 2512 | "requires": { 2513 | "punycode": "^2.1.1" 2514 | } 2515 | }, 2516 | "tslib": { 2517 | "version": "2.4.0", 2518 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 2519 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 2520 | "dev": true 2521 | }, 2522 | "type-check": { 2523 | "version": "0.3.2", 2524 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 2525 | "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", 2526 | "dev": true, 2527 | "requires": { 2528 | "prelude-ls": "~1.1.2" 2529 | } 2530 | }, 2531 | "typical": { 2532 | "version": "4.0.0", 2533 | "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", 2534 | "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", 2535 | "dev": true 2536 | }, 2537 | "universalify": { 2538 | "version": "0.2.0", 2539 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", 2540 | "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", 2541 | "dev": true 2542 | }, 2543 | "url-parse": { 2544 | "version": "1.5.10", 2545 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 2546 | "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 2547 | "dev": true, 2548 | "requires": { 2549 | "querystringify": "^2.1.1", 2550 | "requires-port": "^1.0.0" 2551 | } 2552 | }, 2553 | "w3c-hr-time": { 2554 | "version": "1.0.2", 2555 | "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", 2556 | "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", 2557 | "dev": true, 2558 | "requires": { 2559 | "browser-process-hrtime": "^1.0.0" 2560 | } 2561 | }, 2562 | "w3c-xmlserializer": { 2563 | "version": "3.0.0", 2564 | "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", 2565 | "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", 2566 | "dev": true, 2567 | "requires": { 2568 | "xml-name-validator": "^4.0.0" 2569 | } 2570 | }, 2571 | "webidl-conversions": { 2572 | "version": "7.0.0", 2573 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", 2574 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", 2575 | "dev": true 2576 | }, 2577 | "whatwg-encoding": { 2578 | "version": "2.0.0", 2579 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", 2580 | "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", 2581 | "dev": true, 2582 | "requires": { 2583 | "iconv-lite": "0.6.3" 2584 | } 2585 | }, 2586 | "whatwg-mimetype": { 2587 | "version": "3.0.0", 2588 | "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", 2589 | "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", 2590 | "dev": true 2591 | }, 2592 | "whatwg-url": { 2593 | "version": "10.0.0", 2594 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", 2595 | "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", 2596 | "dev": true, 2597 | "requires": { 2598 | "tr46": "^3.0.0", 2599 | "webidl-conversions": "^7.0.0" 2600 | } 2601 | }, 2602 | "word-wrap": { 2603 | "version": "1.2.3", 2604 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2605 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 2606 | "dev": true 2607 | }, 2608 | "wordwrapjs": { 2609 | "version": "4.0.1", 2610 | "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", 2611 | "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", 2612 | "dev": true, 2613 | "requires": { 2614 | "reduce-flatten": "^2.0.0", 2615 | "typical": "^5.2.0" 2616 | }, 2617 | "dependencies": { 2618 | "typical": { 2619 | "version": "5.2.0", 2620 | "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", 2621 | "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", 2622 | "dev": true 2623 | } 2624 | } 2625 | }, 2626 | "ws": { 2627 | "version": "8.8.1", 2628 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", 2629 | "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", 2630 | "dev": true, 2631 | "requires": {} 2632 | }, 2633 | "xml-name-validator": { 2634 | "version": "4.0.0", 2635 | "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", 2636 | "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", 2637 | "dev": true 2638 | }, 2639 | "xmlchars": { 2640 | "version": "2.2.0", 2641 | "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", 2642 | "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", 2643 | "dev": true 2644 | } 2645 | } 2646 | } 2647 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "build": "mkdir -p dist && ecmarkup --lint-spec --strict --load-biblio @tc39/ecma262-biblio --verbose --js-out dist/ecmarkup.js --css-out dist/ecmarkup.css spec.html dist/index.html", 5 | "build-biblio": "ecmarkup --write-biblio proposal-iterator-helpers-biblio.json --lint-spec --strict --load-biblio @tc39/ecma262-biblio --verbose spec.html /dev/null", 6 | "format": "emu-format --write spec.html", 7 | "check-format": "emu-format --check spec.html" 8 | }, 9 | "devDependencies": { 10 | "@tc39/ecma262-biblio": "2.1.2678", 11 | "ecmarkup": "^15.0.0" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spec.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
  4 | title: Iterator Helpers
  5 | status: proposal
  6 | stage: 3
  7 | location: https://tc39.es/proposal-iterator-helpers
  8 | copyright: false
  9 | contributors: Gus Caplan
 10 | 
11 | 45 | 46 |
47 |

Contributing to this Proposal

48 |

This proposal is developed on GitHub with the help of the ECMAScript community. There are a number of ways to contribute to the development of this specification:

49 | 62 |
63 | 64 | 65 |

Well-Known Intrinsic Objects

66 | 67 | 68 | 69 | 70 | 73 | 76 | 79 | 80 | 81 | 84 | 87 | 90 | 91 | 92 | 95 | 98 | 102 | 103 |
71 | Intrinsic Name 72 | 74 | Global Name 75 | 77 | ECMAScript Language Association 78 |
82 | %Iterator% 83 | 85 | `Iterator` 86 | 88 | The `Iterator` constructor () 89 |
93 | %IteratorPrototype% 94 | 96 | `Iterator.prototype` 97 | 99 | An object that all standard built-in iterator objects indirectly inherit from 100 |

The initial value of the *"prototype"* data property of %Iterator%; i.e., %Iterator.prototype%

101 |
104 |
105 |
106 | 107 | 108 |

Abstract Operations

109 | 110 | 111 |

112 | SetterThatIgnoresPrototypeProperties ( 113 | _this_: an ECMAScript language value, 114 | _home_: an Object, 115 | _p_: a property key, 116 | _v_: an ECMAScript language value, 117 | ): either a normal completion containing ~unused~ or a throw completion 118 |

119 |
120 |
121 | 122 | 1. If _this_ is not an Object, then 123 | 1. Throw a *TypeError* exception. 124 | 1. If _this_ is _home_, then 125 | 1. NOTE: Throwing here emulates assignment to a non-writable data property on the _home_ object in strict mode code. 126 | 1. Throw a *TypeError* exception. 127 | 1. Let _desc_ be ? _this_.[[GetOwnProperty]](_p_). 128 | 1. If _desc_ is *undefined*, then 129 | 1. Perform ? CreateDataPropertyOrThrow(_this_, _p_, _v_). 130 | 1. Else, 131 | 1. Perform ? Set(_this_, _p_, _v_, *true*). 132 | 1. Return ~unused~. 133 | 134 |
135 | 136 | 137 |

Operations on Iterator Objects

138 | 139 | 140 |

141 | GetIteratorDirect ( 142 | _obj_: an Object, 143 | ): either a normal completion containing an Iterator Record or a throw completion 144 |

145 |
146 |
147 | 148 | 1. Let _nextMethod_ be ? Get(_obj_, `"next"`). 149 | 1. Let _iteratorRecord_ be Record { [[Iterator]]: _obj_, [[NextMethod]]: _nextMethod_, [[Done]]: *false* }. 150 | 1. Return _iteratorRecord_. 151 | 152 |
153 | 154 | 155 |

156 | GetIteratorFlattenable ( 157 | _obj_: an ECMAScript language value, 158 | _stringHandling_: ~iterate-strings~ or ~reject-strings~, 159 | ): either a normal completion containing an Iterator Record or a throw completion 160 |

161 |
162 |
163 | 164 | 1. If _obj_ is not an Object, then 165 | 1. If _stringHandling_ is ~reject-strings~ or _obj_ is not a String, throw a *TypeError* exception. 166 | 1. Let _method_ be ? GetMethod(_obj_, @@iterator). 167 | 1. If _method_ is *undefined*, then 168 | 1. Let _iterator_ be _obj_. 169 | 1. Else, 170 | 1. Let _iterator_ be ? Call(_method_, _obj_). 171 | 1. If _iterator_ is not an Object, throw a *TypeError* exception. 172 | 1. Return ? GetIteratorDirect(_iterator_). 173 | 174 |
175 |
176 |
177 | 178 | 179 |

Control Abstraction Objects

180 | 181 | 182 |

Iteration

183 | 184 | 185 |

Iterator Objects

186 | 187 | 188 |

The Iterator Constructor

189 |

The Iterator constructor:

190 |
    191 |
  • is %Iterator%.
  • 192 |
  • is the initial value of the *"Iterator"* property of the global object.
  • 193 |
  • is designed to be subclassable. It may be used as the value of an *extends* clause of a class definition.
  • 194 |
195 | 196 | 197 |

Iterator ( )

198 |

When the `Iterator` function is called, the following steps are taken:

199 | 200 | 1. If NewTarget is *undefined* or the active function object, throw a *TypeError* exception. 201 | 1. Return ? OrdinaryCreateFromConstructor(NewTarget, *"%Iterator.prototype%"*). 202 | 203 |
204 |
205 | 206 | 207 |

Properties of the Iterator Constructor

208 | 209 | 210 |

Iterator.prototype

211 |

The initial value of Iterator.prototype is %Iterator.prototype%.

212 |

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

213 |
214 | 215 | 216 |

Iterator.from ( _O_ )

217 | 218 | 1. Let _iteratorRecord_ be ? GetIteratorFlattenable(_O_, ~iterate-strings~). 219 | 1. Let _hasInstance_ be ? OrdinaryHasInstance(%Iterator%, _iteratorRecord_.[[Iterator]]). 220 | 1. If _hasInstance_ is *true*, then 221 | 1. Return _iteratorRecord_.[[Iterator]]. 222 | 1. Let _wrapper_ be OrdinaryObjectCreate(%WrapForValidIteratorPrototype%, « [[Iterated]] »). 223 | 1. Set _wrapper_.[[Iterated]] to _iteratorRecord_. 224 | 1. Return _wrapper_. 225 | 226 | 227 | 228 |

The %WrapForValidIteratorPrototype% Object

229 |

The %WrapForValidIteratorPrototype% object:

230 |
    231 |
  • has a [[Prototype]] internal slot whose value is %Iterator.prototype%.
  • 232 |
233 | 234 | 235 |

%WrapForValidIteratorPrototype%.next ( )

236 | 237 | 1. Let _O_ be *this* value. 238 | 1. Perform ? RequireInternalSlot(_O_, [[Iterated]]). 239 | 1. Let _iteratorRecord_ be _O_.[[Iterated]]. 240 | 1. Return ? Call(_iteratorRecord_.[[NextMethod]], _iteratorRecord_.[[Iterator]]). 241 | 242 |
243 | 244 | 245 |

%WrapForValidIteratorPrototype%.return ( )

246 | 247 | 1. Let _O_ be *this* value. 248 | 1. Perform ? RequireInternalSlot(_O_, [[Iterated]]). 249 | 1. Let _iterator_ be _O_.[[Iterated]].[[Iterator]]. 250 | 1. Assert: _iterator_ is an Object. 251 | 1. Let _returnMethod_ be ? GetMethod(_iterator_, *"return"*). 252 | 1. If _returnMethod_ is *undefined*, then 253 | 1. Return CreateIterResultObject(*undefined*, *true*). 254 | 1. Return ? Call(_returnMethod_, _iterator_). 255 | 256 |
257 |
258 |
259 |
260 |
261 | 262 | 263 |

Iterator Helper Objects

264 |

An Iterator Helper object is an ordinary object that represents a lazy transformation of some specific source iterator object. There is not a named constructor for Iterator Helper objects. Instead, Iterator Helper objects are created by calling certain methods of Iterator instance objects.

265 | 266 | 267 |

The %IteratorHelperPrototype% Object

268 |

The %IteratorHelperPrototype% object:

269 |
    270 |
  • has properties that are inherited by all Iterator Helper Objects.
  • 271 |
  • is an ordinary object.
  • 272 |
  • has a [[Prototype]] internal slot whose value is %Iterator.prototype%.
  • 273 |
  • has the following properties:
  • 274 |
275 | 276 | 277 |

%IteratorHelperPrototype%.next ( )

278 | 279 | 1. Return ? GeneratorResume(*this* value, *undefined*, *"Iterator Helper"*). 280 | 281 |
282 | 283 | 284 |

%IteratorHelperPrototype%.return ( )

285 | 286 | 1. Let _O_ be *this* value. 287 | 1. Perform ? RequireInternalSlot(_O_, [[UnderlyingIterator]]). 288 | 1. Assert: _O_ has a [[GeneratorState]] slot. 289 | 1. If _O_.[[GeneratorState]] is ~suspended-start~, then 290 | 1. Set _O_.[[GeneratorState]] to ~completed~. 291 | 1. NOTE: Once a generator enters the completed state it never leaves it and its associated execution context is never resumed. Any execution state associated with _O_ can be discarded at this point. 292 | 1. Perform ? IteratorClose(_O_.[[UnderlyingIterator]], NormalCompletion(~unused~)). 293 | 1. Return CreateIterResultObject(*undefined*, *true*). 294 | 1. Let _C_ be Completion { [[Type]]: ~return~, [[Value]]: *undefined*, [[Target]]: ~empty~ }. 295 | 1. Return ? GeneratorResumeAbrupt(_O_, _C_, *"Iterator Helper"*). 296 | 297 |
298 | 299 | 300 |

%IteratorHelperPrototype% [ @@toStringTag ]

301 |

The initial value of the @@toStringTag property is the String value *"Iterator Helper"*.

302 |

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

303 |
304 |
305 |
306 | 307 | 308 |

Iterator.prototype

309 |

The Iterator prototype object:

310 |
    311 |
  • is %Iterator.prototype%.
  • 312 |
  • has a [[Prototype]] internal slot whose value is %Object.prototype%.
  • 313 |
  • is an ordinary object.
  • 314 |
315 | 316 | 317 |

Iterator.prototype.constructor

318 |

`Iterator.prototype.constructor` is an accessor property with attributes { [[Enumerable]]: *false*, [[Configurable]]: *true* }. The [[Get]] and [[Set]] attributes are defined as follows:

319 | 320 | 321 |

get Iterator.prototype.constructor

322 |

The value of the [[Get]] attribute is a built-in function that requires no arguments. It performs the following steps when called:

323 | 324 | 1. Return %Iterator%. 325 | 326 |
327 | 328 | 329 |

set Iterator.prototype.constructor

330 |

The value of the [[Set]] attribute is a built-in function that takes an argument _v_. It performs the following steps when called:

331 | 332 | 1. Perform ? SetterThatIgnoresPrototypeProperties(*this* value, %Iterator.prototype%, *"constructor"*, _v_). 333 | 1. Return *undefined*. 334 | 335 |
336 | 337 | 338 |

Unlike the *"constructor"* property on most built-in prototypes, for web-compatibility reasons this property must be an accessor.

339 |
340 |
341 | 342 | 343 |

Iterator.prototype.map ( _mapper_ )

344 |

This method performs the following steps when called:

345 | 346 | 1. Let _O_ be the *this* value. 347 | 1. If _O_ is not an Object, throw a *TypeError* exception. 348 | 1. If IsCallable(_mapper_) is *false*, throw a *TypeError* exception. 349 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 350 | 1. Let _closure_ be a new Abstract Closure with no parameters that captures _iterated_ and _mapper_ and performs the following steps when called: 351 | 1. Let _counter_ be 0. 352 | 1. Repeat, 353 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 354 | 1. If _value_ is ~done~, return *undefined*. 355 | 1. Let _mapped_ be Completion(Call(_mapper_, *undefined*, « _value_, 𝔽(_counter_) »)). 356 | 1. IfAbruptCloseIterator(_mapped_, _iterated_). 357 | 1. Let _completion_ be Completion(Yield(_mapped_)). 358 | 1. IfAbruptCloseIterator(_completion_, _iterated_). 359 | 1. Set _counter_ to _counter_ + 1. 360 | 1. Let _result_ be CreateIteratorFromClosure(_closure_, *"Iterator Helper"*, %IteratorHelperPrototype%, « [[UnderlyingIterator]] »). 361 | 1. Set _result_.[[UnderlyingIterator]] to _iterated_. 362 | 1. Return _result_. 363 | 364 |
365 | 366 | 367 |

Iterator.prototype.filter ( _predicate_ )

368 |

This method performs the following steps when called:

369 | 370 | 1. Let _O_ be the *this* value. 371 | 1. If _O_ is not an Object, throw a *TypeError* exception. 372 | 1. If IsCallable(_predicate_) is *false*, throw a *TypeError* exception. 373 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 374 | 1. Let _closure_ be a new Abstract Closure with no parameters that captures _iterated_ and _predicate_ and performs the following steps when called: 375 | 1. Let _counter_ be 0. 376 | 1. Repeat, 377 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 378 | 1. If _value_ is ~done~, return *undefined*. 379 | 1. Let _selected_ be Completion(Call(_predicate_, *undefined*, « _value_, 𝔽(_counter_) »)). 380 | 1. IfAbruptCloseIterator(_selected_, _iterated_). 381 | 1. If ToBoolean(_selected_) is *true*, then 382 | 1. Let _completion_ be Completion(Yield(_value_)). 383 | 1. IfAbruptCloseIterator(_completion_, _iterated_). 384 | 1. Set _counter_ to _counter_ + 1. 385 | 1. Let _result_ be CreateIteratorFromClosure(_closure_, *"Iterator Helper"*, %IteratorHelperPrototype%, « [[UnderlyingIterator]] »). 386 | 1. Set _result_.[[UnderlyingIterator]] to _iterated_. 387 | 1. Return _result_. 388 | 389 |
390 | 391 | 392 |

Iterator.prototype.take ( _limit_ )

393 |

This method performs the following steps when called:

394 | 395 | 1. Let _O_ be the *this* value. 396 | 1. If _O_ is not an Object, throw a *TypeError* exception. 397 | 1. Let _numLimit_ be ? ToNumber(_limit_). 398 | 1. If _numLimit_ is *NaN*, throw a *RangeError* exception. 399 | 1. Let _integerLimit_ be ! ToIntegerOrInfinity(_numLimit_). 400 | 1. If _integerLimit_ < 0, throw a *RangeError* exception. 401 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 402 | 1. Let _closure_ be a new Abstract Closure with no parameters that captures _iterated_ and _integerLimit_ and performs the following steps when called: 403 | 1. Let _remaining_ be _integerLimit_. 404 | 1. Repeat, 405 | 1. If _remaining_ is 0, then 406 | 1. Return ? IteratorClose(_iterated_, NormalCompletion(*undefined*)). 407 | 1. If _remaining_ is not +∞, then 408 | 1. Set _remaining_ to _remaining_ - 1. 409 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 410 | 1. If _value_ is ~done~, return *undefined*. 411 | 1. Let _completion_ be Completion(Yield(_value_)). 412 | 1. IfAbruptCloseIterator(_completion_, _iterated_). 413 | 1. Let _result_ be CreateIteratorFromClosure(_closure_, *"Iterator Helper"*, %IteratorHelperPrototype%, « [[UnderlyingIterator]] »). 414 | 1. Set _result_.[[UnderlyingIterator]] to _iterated_. 415 | 1. Return _result_. 416 | 417 |
418 | 419 | 420 |

Iterator.prototype.drop ( _limit_ )

421 |

This method performs the following steps when called:

422 | 423 | 1. Let _O_ be the *this* value. 424 | 1. If _O_ is not an Object, throw a *TypeError* exception. 425 | 1. Let _numLimit_ be ? ToNumber(_limit_). 426 | 1. If _numLimit_ is *NaN*, throw a *RangeError* exception. 427 | 1. Let _integerLimit_ be ! ToIntegerOrInfinity(_numLimit_). 428 | 1. If _integerLimit_ < 0, throw a *RangeError* exception. 429 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 430 | 1. Let _closure_ be a new Abstract Closure with no parameters that captures _iterated_ and _integerLimit_ and performs the following steps when called: 431 | 1. Let _remaining_ be _integerLimit_. 432 | 1. Repeat, while _remaining_ > 0, 433 | 1. If _remaining_ is not +∞, then 434 | 1. Set _remaining_ to _remaining_ - 1. 435 | 1. Let _next_ be ? IteratorStep(_iterated_). 436 | 1. If _next_ is *false*, return *undefined*. 437 | 1. Repeat, 438 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 439 | 1. If _value_ is ~done~, return *undefined*. 440 | 1. Let _completion_ be Completion(Yield(_value_)). 441 | 1. IfAbruptCloseIterator(_completion_, _iterated_). 442 | 1. Let _result_ be CreateIteratorFromClosure(_closure_, *"Iterator Helper"*, %IteratorHelperPrototype%, « [[UnderlyingIterator]] »). 443 | 1. Set _result_.[[UnderlyingIterator]] to _iterated_. 444 | 1. Return _result_. 445 | 446 |
447 | 448 | 449 |

Iterator.prototype.flatMap ( _mapper_ )

450 |

This method performs the following steps when called:

451 | 452 | 1. Let _O_ be the *this* value. 453 | 1. If _O_ is not an Object, throw a *TypeError* exception. 454 | 1. If IsCallable(_mapper_) is *false*, throw a *TypeError* exception. 455 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 456 | 1. Let _closure_ be a new Abstract Closure with no parameters that captures _iterated_ and _mapper_ and performs the following steps when called: 457 | 1. Let _counter_ be 0. 458 | 1. Repeat, 459 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 460 | 1. If _value_ is ~done~, return *undefined*. 461 | 1. Let _mapped_ be Completion(Call(_mapper_, *undefined*, « _value_, 𝔽(_counter_) »)). 462 | 1. IfAbruptCloseIterator(_mapped_, _iterated_). 463 | 1. Let _innerIterator_ be Completion(GetIteratorFlattenable(_mapped_, ~reject-strings~)). 464 | 1. IfAbruptCloseIterator(_innerIterator_, _iterated_). 465 | 1. Let _innerAlive_ be *true*. 466 | 1. Repeat, while _innerAlive_ is *true*, 467 | 1. Let _innerValue_ be Completion(IteratorStepValue(_innerIterator_)). 468 | 1. IfAbruptCloseIterator(_innerValue_, _iterated_). 469 | 1. If _innerValue_ is ~done~, then 470 | 1. Set _innerAlive_ to *false*. 471 | 1. Else, 472 | 1. Let _completion_ be Completion(Yield(_innerValue_)). 473 | 1. If _completion_ is an abrupt completion, then 474 | 1. Let _backupCompletion_ be Completion(IteratorClose(_innerIterator_, _completion_)). 475 | 1. IfAbruptCloseIterator(_backupCompletion_, _iterated_). 476 | 1. Return ? IteratorClose(_completion_, _iterated_). 477 | 1. Set _counter_ to _counter_ + 1. 478 | 1. Let _result_ be CreateIteratorFromClosure(_closure_, *"Iterator Helper"*, %IteratorHelperPrototype%, « [[UnderlyingIterator]] »). 479 | 1. Set _result_.[[UnderlyingIterator]] to _iterated_. 480 | 1. Return _result_. 481 | 482 |
483 | 484 | 485 |

Iterator.prototype.reduce ( _reducer_ [ , _initialValue_ ] )

486 |

This method performs the following steps when called:

487 | 488 | 1. Let _O_ be the *this* value. 489 | 1. If _O_ is not an Object, throw a *TypeError* exception. 490 | 1. If IsCallable(_reducer_) is *false*, throw a *TypeError* exception. 491 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 492 | 1. If _initialValue_ is not present, then 493 | 1. Let _accumulator_ be ? IteratorStepValue(_iterated_). 494 | 1. If _accumulator_ is ~done~, throw a *TypeError* exception. 495 | 1. Let _counter_ be 1. 496 | 1. Else, 497 | 1. Let _accumulator_ be _initialValue_. 498 | 1. Let _counter_ be 0. 499 | 1. Repeat, 500 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 501 | 1. If _value_ is ~done~, return _accumulator_. 502 | 1. Let _result_ be Completion(Call(_reducer_, *undefined*, « _accumulator_, _value_, 𝔽(_counter_) »)). 503 | 1. IfAbruptCloseIterator(_result_, _iterated_). 504 | 1. Set _accumulator_ to _result_.[[Value]]. 505 | 1. Set _counter_ to _counter_ + 1. 506 | 507 |
508 | 509 | 510 |

Iterator.prototype.toArray ( )

511 |

This method performs the following steps when called:

512 | 513 | 1. Let _O_ be the *this* value. 514 | 1. If _O_ is not an Object, throw a *TypeError* exception. 515 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 516 | 1. Let _items_ be a new empty List. 517 | 1. Repeat, 518 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 519 | 1. If _value_ is ~done~, return CreateArrayFromList(_items_). 520 | 1. Append _value_ to _items_. 521 | 522 |
523 | 524 | 525 |

Iterator.prototype.forEach ( _fn_ )

526 |

This method performs the following steps when called:

527 | 528 | 1. Let _O_ be the *this* value. 529 | 1. If _O_ is not an Object, throw a *TypeError* exception. 530 | 1. If IsCallable(_fn_) is *false*, throw a *TypeError* exception. 531 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 532 | 1. Let _counter_ be 0. 533 | 1. Repeat, 534 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 535 | 1. If _value_ is ~done~, return *undefined*. 536 | 1. Let _result_ be Completion(Call(_fn_, *undefined*, « _value_, 𝔽(_counter_) »)). 537 | 1. IfAbruptCloseIterator(_result_, _iterated_). 538 | 1. Set _counter_ to _counter_ + 1. 539 | 540 |
541 | 542 | 543 |

Iterator.prototype.some ( _predicate_ )

544 |

This method performs the following steps when called:

545 | 546 | 1. Let _O_ be the *this* value. 547 | 1. If _O_ is not an Object, throw a *TypeError* exception. 548 | 1. If IsCallable(_predicate_) is *false*, throw a *TypeError* exception. 549 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 550 | 1. Let _counter_ be 0. 551 | 1. Repeat, 552 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 553 | 1. If _value_ is ~done~, return *false*. 554 | 1. Let _result_ be Completion(Call(_predicate_, *undefined*, « _value_, 𝔽(_counter_) »)). 555 | 1. IfAbruptCloseIterator(_result_, _iterated_). 556 | 1. If ToBoolean(_result_) is *true*, return ? IteratorClose(_iterated_, NormalCompletion(*true*)). 557 | 1. Set _counter_ to _counter_ + 1. 558 | 559 |
560 | 561 | 562 |

Iterator.prototype.every ( _predicate_ )

563 |

This method performs the following steps when called:

564 | 565 | 1. Let _O_ be the *this* value. 566 | 1. If _O_ is not an Object, throw a *TypeError* exception. 567 | 1. If IsCallable(_predicate_) is *false*, throw a *TypeError* exception. 568 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 569 | 1. Let _counter_ be 0. 570 | 1. Repeat, 571 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 572 | 1. If _value_ is ~done~, return *true*. 573 | 1. Let _result_ be Completion(Call(_predicate_, *undefined*, « _value_, 𝔽(_counter_) »)). 574 | 1. IfAbruptCloseIterator(_result_, _iterated_). 575 | 1. If ToBoolean(_result_) is *false*, return ? IteratorClose(_iterated_, NormalCompletion(*false*)). 576 | 1. Set _counter_ to _counter_ + 1. 577 | 578 |
579 | 580 | 581 |

Iterator.prototype.find ( _predicate_ )

582 |

This method performs the following steps when called:

583 | 584 | 1. Let _O_ be the *this* value. 585 | 1. If _O_ is not an Object, throw a *TypeError* exception. 586 | 1. If IsCallable(_predicate_) is *false*, throw a *TypeError* exception. 587 | 1. Let _iterated_ be ? GetIteratorDirect(_O_). 588 | 1. Let _counter_ be 0. 589 | 1. Repeat, 590 | 1. Let _value_ be ? IteratorStepValue(_iterated_). 591 | 1. If _value_ is ~done~, return *undefined*. 592 | 1. Let _result_ be Completion(Call(_predicate_, *undefined*, « _value_, 𝔽(_counter_) »)). 593 | 1. IfAbruptCloseIterator(_result_, _iterated_). 594 | 1. If ToBoolean(_result_) is *true*, return ? IteratorClose(_iterated_, NormalCompletion(_value_)). 595 | 1. Set _counter_ to _counter_ + 1. 596 | 597 |
598 | 599 | 600 |

Iterator.prototype [ @@toStringTag ]

601 |

`Iterator.prototype[@@toStringTag]` is an accessor property with attributes { [[Enumerable]]: *false*, [[Configurable]]: *true* }. The [[Get]] and [[Set]] attributes are defined as follows:

602 | 603 | 604 |

get Iterator.prototype [ @@toStringTag ]

605 |

The value of the [[Get]] attribute is a built-in function that requires no arguments. It performs the following steps when called:

606 | 607 | 1. Return *"Iterator"*. 608 | 609 |
610 | 611 | 612 |

set Iterator.prototype [ @@toStringTag ]

613 |

The value of the [[Set]] attribute is a built-in function that takes an argument _v_. It performs the following steps when called:

614 | 615 | 1. Perform ? SetterThatIgnoresPrototypeProperties(*this* value, %Iterator.prototype%, %Symbol.toStringTag%, _v_). 616 | 1. Return *undefined*. 617 | 618 |
619 | 620 | 621 |

Unlike the @@toStringTag property on most built-in prototypes, for web-compatibility reasons this property must be an accessor.

622 |
623 |
624 |
625 |
626 |
627 | 628 | 629 |

Updated Abstract Operations

630 | 631 | 632 |

633 | CreateIteratorFromClosure ( 634 | _closure_: an Abstract Closure with no parameters, 635 | _generatorBrand_: a String or ~empty~, 636 | _generatorPrototype_: an Object, 637 | optional _extraSlots_: a List of names of internal slots, 638 | ): a Generator 639 |

640 |
641 |
642 | 643 | 1. NOTE: _closure_ can contain uses of the Yield operation to yield an IteratorResult object. 644 | 1. If _extraSlots_ is not present, set _extraSlots_ to a new empty List. 645 | 1. Let _internalSlotsList_ be the list-concatenation of _extraSlots_ and « [[GeneratorState]], [[GeneratorContext]], [[GeneratorBrand]] ». 646 | 1. Let _generator_ be OrdinaryObjectCreate(_generatorPrototype_, _internalSlotsList_). 647 | 1. Set _generator_.[[GeneratorBrand]] to _generatorBrand_. 648 | 1. Set _generator_.[[GeneratorState]] to *undefined*. 649 | 1. Let _callerContext_ be the running execution context. 650 | 1. Let _calleeContext_ be a new execution context. 651 | 1. Set the Function of _calleeContext_ to *null*. 652 | 1. Set the Realm of _calleeContext_ to the current Realm Record. 653 | 1. Set the ScriptOrModule of _calleeContext_ to _callerContext_'s ScriptOrModule. 654 | 1. If _callerContext_ is not already suspended, suspend _callerContext_. 655 | 1. Push _calleeContext_ onto the execution context stack; _calleeContext_ is now the running execution context. 656 | 1. Perform GeneratorStart(_generator_, _closure_). 657 | 1. Remove _calleeContext_ from the execution context stack and restore _callerContext_ as the running execution context. 658 | 1. Return _generator_. 659 | 660 |
661 |
662 | --------------------------------------------------------------------------------