├── .eslintrc.js ├── .gitignore ├── .npmignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── jsdoc ├── .gitignore ├── conf.json └── custom │ └── local.js ├── package.json ├── src └── Layout.ts ├── test ├── LayoutTest.js ├── examples.c ├── examples.js └── n64.c ├── tsconfig.json └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: '@typescript-eslint/parser', 4 | plugins: [ 5 | '@typescript-eslint', 6 | ], 7 | extends: [ 8 | 'eslint:recommended', 9 | 'plugin:@typescript-eslint/recommended', 10 | ], 11 | rules: { 12 | '@typescript-eslint/ban-ts-comment': 'off', 13 | '@typescript-eslint/no-explicit-any': 'off', 14 | '@typescript-eslint/no-unused-vars': 'off', 15 | 'guard-for-in': 'off', 16 | 'prefer-rest-params': 'off', 17 | 'prefer-spread': 'off', 18 | __temporary: 'off', 19 | 'arrow-parens': ['error', 'as-needed'], 20 | camelcase: 'off', 21 | curly: 'error', 22 | eqeqeq: 'error', 23 | 'max-len': ['error', {code: 120, tabWidth: 2}], 24 | 'no-constant-condition': 'off', 25 | 'no-fallthrough': ['error', {commentPattern: 'FALLTHRU'}], 26 | 'no-implicit-coercion': 'off', 27 | 'no-irregular-whitespace': ['error', {skipComments: true}], 28 | 'no-multi-spaces': ['error', {ignoreEOLComments: true}], 29 | 'operator-linebreak': ['error', 'before'], 30 | quotes: ['error', 'single', { 31 | avoidEscape: true, 32 | allowTemplateLiterals: true 33 | }], 34 | radix: ['error', 'as-needed'], 35 | 'require-jsdoc': 'off', 36 | 'spaced-comment': ['error', 'always', {line: {markers: ['#']}}], 37 | 'valid-jsdoc': 'off', 38 | yoda: ['error', 'always', {exceptRange: true}] 39 | }, 40 | parserOptions: { 41 | project: './tsconfig.json', 42 | } 43 | }; 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /CHANGELOG.html 2 | /coverage/ 3 | /node_modules/ 4 | /lib/ 5 | /docs/ 6 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /coverage/ 2 | *~ 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "node" 4 | - "8" 5 | - "6" 6 | after_success: 7 | - npm run eslint 8 | - npm run coveralls 9 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [3.0.0] - 2021-07-08 4 | 5 | * **API** Renamed `const` function to [constant][doc:constant]. 6 | * Migrate to TypeScript and make type definitions available from npm. 7 | 8 | ## [2.0.0] - 2021-07-08 9 | 10 | * Improve [browser compatibility][pr#28] by adding a browser polyfill 11 | for the Node browser module and loosening types from Buffer to Uint8Array. 12 | 13 | ## [1.2.2] - 2021-07-05 14 | 15 | * Improve [browser compatibility][pr#27] by eliminating a dependence on 16 | the Node assert module. 17 | 18 | ## [1.2.1] - 2021-04-29 19 | 20 | * Improve [browser compatibility][pr#24] by using `Buffer.isBuffer` instead of 21 | `instanceof` to confirm Buffer types. 22 | 23 | ## [1.2.0] - 2018-03-14 24 | 25 | * **API** Add [UTF8][doc:UTF8] to encode UTF strings in a possibly 26 | bounded buffer, resolving [issue #21][issue#21]. 27 | * **API** Allow the layout parameter of 28 | a [VariantLayout][doc:VariantLayout] to be omitted in cases where no 29 | data beyond the discriminator is required, 30 | resolving [issue #20][issue#20]. 31 | 32 | ## [1.1.0] - 2018-01-06 33 | 34 | * **API** Add a third parameter to Structure specifying it should decode 35 | short buffers as prefixes, resolving [issue #19][issue#19]. 36 | * **API** Interpret string argument to BitStructure `msb` parameter as 37 | a `property` parameter, resolving [issue #17][issue#17]. 38 | 39 | ## [1.0.0] - 2017-12-17 40 | 41 | * Minimum Node version increased to 4.5 to support dependency 42 | on 43 | [Buffer.alloc()](https://nodejs.org/dist/latest-v4.x/docs/api/buffer.html#buffer_class_method_buffer_alloc_size_fill_encoding). 44 | * Removed [patch][node:issue#3994] for [ancient buffer bug][node:issue#3992] 45 | * Update to ES6 classes and other features 46 | * Documentation clarifications. 47 | * Update dependent packages. 48 | * Switch to [npm:eslint] and deal with fallout. 49 | 50 | ## [0.13.0] - 2016-03-27 51 | 52 | * **API** Add [fieldFor][doc:BitStructure.fieldFor]. 53 | * Fix incorrect encoding of [boolean-valued bit fields][doc:Boolean]. 54 | * **API** Add [offsetOf][doc:Structure.offsetOf] and [layoutFor][doc:Structure.layoutFor]. 55 | 56 | ## [0.12.1] - 2016-03-08 57 | 58 | * Disable coverage testing for [patchIssue3992][doc:patchIssue3992] to 59 | avoid taking a penalty on node versions that have been updated. 60 | 61 | ## [0.12.0] - 2016-03-08 62 | 63 | * **API** Replace `setClassLayout` with [bindConstructorLayout][doc:bindConstructorLayout]. 64 | * **API** Replace `objectPrototype` with [makeDestinationObject][doc:makeDestinationObject]. 65 | 66 | ## [0.11.0] - 2016-02-10 67 | 68 | * **API** Provide prototypes to use for decoded objects, resolving 69 | [issue #15][issue#15]. 70 | 71 | ## [0.10.0] - 2016-01-23 72 | 73 | * **API** Change some exceptions (especially integer value spans) to 74 | throw `RangeError` instead of `TypeError`, resolving 75 | [issue #12][issue#12]. 76 | * **API** [Add][issue#14] [boolean-valued bit fields][doc:Boolean]. 77 | * Increase coverage of primary module to 100%. 78 | * Update dev dependency modules. 79 | * Fix always-false pre-convert type check. 80 | 81 | ## [0.9.0] - 2015-12-22 82 | 83 | * **API** Support inferring [Sequence][doc:Sequence.count] and 84 | [Blob][doc:Blob.length] spans from available data. 85 | * **API** Define return value for [Layout.encode][doc:Layout.encode] so 86 | we know how much was written. 87 | * **API** Change name of [Sequence][doc:Sequence] property 88 | `elementLayout` (from `element_layout`) and [Union][doc:Union] 89 | property `defaultLayout` (from (`default layout`) for coding standard 90 | conformance. 91 | * Convert to [Google coding style][npm:jscs]. 92 | 93 | ## [0.8.0] - 2015-11-29 94 | 95 | * [Add][issue#13] [64-bit integers][doc:NearInt64]. 96 | 97 | ## [0.7.1] - 2015-11-23 98 | 99 | * Stop publishing emacs backup files to npm. 100 | 101 | ## [0.7.0] - 2015-11-23 102 | 103 | * [Fix][doc:patchIssue3992] [bug in Buffer.writeInt][node:issue#3992]. 104 | * **API** Support [variable lengths][doc:Layout.getSpan] in 105 | unions. 106 | * **API** Add [zero-width constants][doc:Constant]. 107 | * **API** Add function to infer [union variant for object][doc:Union.getSourceVariant]. 108 | * **API** Rework how [union discriminators][doc:UnionDiscriminator] are 109 | defined. 110 | 111 | ## [0.6.0] - 2015-11-21 112 | 113 | * **API** [Support][issue#11] variable lengths in 114 | [Blob][doc:Blob.length] and [Sequence][doc:Sequence.count]. 115 | * **API** Add [NUL-terminated C strings][doc:CString]. 116 | * **API** Add API to access layout [span][doc:Layout.span] 117 | * **API** Leave data associated with unnamed properties unchanged in 118 | [Structure][doc:structure] and [BitStructure][doc:BitStructure] regions 119 | (formerly was zeroed on encode). 120 | * Add [offset layout][doc:OffsetLayout] support. 121 | * **API** Eliminate failed support for [anonymous containers][issue#8]. 122 | 123 | ## [0.5.0] - 2015-11-20 124 | 125 | * Add [factories for various layouts][issue#10]. 126 | * Integrate [travis support][ci:travis]. 127 | * Integrate [coverage testing][ci:coveralls] using [Istanbul][npm:istanbul]. 128 | 129 | ## [0.4.0] - 2015-11-19 130 | 131 | * [Support][issue#9] [data blobs][doc:Blob]. 132 | * Add tests for support of [anonymous containers][issue#8] *(feature 133 | ultimately rejected)*. 134 | * [Allow][issue#7] [external discriminators][doc:UnionDiscriminator] for 135 | unions. 136 | * [Respect union property names][issue#6]. 137 | 138 | ## [0.3.0] - 2015-11-07 139 | 140 | * [Add support][issue#5] for [bit fields][doc:BitField]. 141 | * Various [corrections and enhancements in examples][issue#4]. 142 | 143 | ## [0.2.0] - 2015-10-25 144 | 145 | * Add [fromArray helper][issue#3] to simplify construction from argument 146 | list. 147 | * Document [destination parameter to decode][issue#2]. 148 | * Allow [user-defined name for union discriminators][issue#1]. 149 | 150 | ## 0.1.0 - 2015-10-25 151 | 152 | * Initial release. 153 | 154 | [1.2.2]: https://github.com/pabigot/buffer-layout/compare/v1.2.1...v1.2.2 155 | [1.2.1]: https://github.com/pabigot/buffer-layout/compare/v1.2.0...v1.2.1 156 | [1.2.0]: https://github.com/pabigot/buffer-layout/compare/v1.1.0...v1.2.0 157 | [1.1.0]: https://github.com/pabigot/buffer-layout/compare/v1.0.0...v1.1.0 158 | [1.0.0]: https://github.com/pabigot/buffer-layout/compare/v0.13.0...v1.0.0 159 | [0.13.0]: https://github.com/pabigot/buffer-layout/compare/v0.12.0...v0.13.0 160 | [0.12.1]: https://github.com/pabigot/buffer-layout/compare/v0.12.0...v0.12.1 161 | [0.12.0]: https://github.com/pabigot/buffer-layout/compare/v0.11.0...v0.12.0 162 | [0.11.0]: https://github.com/pabigot/buffer-layout/compare/v0.10.0...v0.11.0 163 | [0.10.0]: https://github.com/pabigot/buffer-layout/compare/v0.9.0...v0.10.0 164 | [0.9.0]: https://github.com/pabigot/buffer-layout/compare/v0.8.0...v0.9.0 165 | [0.8.0]: https://github.com/pabigot/buffer-layout/compare/v0.7.0...v0.8.0 166 | [0.7.1]: https://github.com/pabigot/buffer-layout/compare/v0.7.0...v0.7.1 167 | [0.7.0]: https://github.com/pabigot/buffer-layout/compare/v0.6.0...v0.7.0 168 | [0.6.0]: https://github.com/pabigot/buffer-layout/compare/v0.5.0...v0.6.0 169 | [0.5.0]: https://github.com/pabigot/buffer-layout/compare/v0.4.0...v0.5.0 170 | [0.4.0]: https://github.com/pabigot/buffer-layout/compare/v0.3.0...v0.4.0 171 | [0.3.0]: https://github.com/pabigot/buffer-layout/compare/v0.2.0...v0.3.0 172 | [0.2.0]: https://github.com/pabigot/buffer-layout/compare/v0.1.0...v0.2.0 173 | [doc:bindConstructorLayout]: http://pabigot.github.io/buffer-layout/module-Layout.html#.bindConstructorLayout 174 | [doc:BitField]: http://pabigot.github.io/buffer-layout/module-Layout-BitField.html 175 | [doc:BitStructure]: http://pabigot.github.io/buffer-layout/module-Layout-BitStructure.html 176 | [doc:BitStructure.fieldFor]: http://pabigot.github.io/buffer-layout/module-Layout-BitStructure.html#fieldFor 177 | [doc:Blob]: http://pabigot.github.io/buffer-layout/module-Layout-Blob.html 178 | [doc:Blob.length]: http://pabigot.github.io/buffer-layout/module-Layout-Blob.html#length 179 | [doc:Boolean]: http://pabigot.github.io/buffer-layout/module-Layout-Boolean.html 180 | [doc:Constant]: http://pabigot.github.io/buffer-layout/module-Layout-Constant.html 181 | [doc:CString]: http://pabigot.github.io/buffer-layout/module-Layout-CString.html 182 | [doc:Layout.encode]: http://pabigot.github.io/buffer-layout/module-Layout-Layout.html#encode 183 | [doc:Layout.getSpan]: http://pabigot.github.io/buffer-layout/module-Layout-Layout.html#getSpan 184 | [doc:Layout.span]: http://pabigot.github.io/buffer-layout/module-Layout-Layout.html#span 185 | [doc:makeDestinationObject]: http://pabigot.github.io/buffer-layout/module-Layout-Layout.html#makeDestinationObject 186 | [doc:NearInt64]: http://pabigot.github.io/buffer-layout/module-Layout-NearInt64.html 187 | [doc:OffsetLayout]: http://pabigot.github.io/buffer-layout/module-Layout-OffsetLayout.html 188 | [doc:patchIssue3992]: http://pabigot.github.io/buffer-layout/module-patchIssue3992.html 189 | [doc:Sequence]: http://pabigot.github.io/buffer-layout/module-Layout-Sequence.html 190 | [doc:Sequence.count]: http://pabigot.github.io/buffer-layout/module-Layout-Sequence.html#count 191 | [doc:Structure]: http://pabigot.github.io/buffer-layout/module-Layout-Structure.html 192 | [doc:Structure.layoutFor]: http://pabigot.github.io/buffer-layout/module-Layout-Structure.html#layoutFor 193 | [doc:Structure.offsetOf]: http://pabigot.github.io/buffer-layout/module-Layout-Structure.html#offsetOf 194 | [doc:Union]: http://pabigot.github.io/buffer-layout/module-Layout-Union.html 195 | [doc:Union.getSourceVariant]: http://pabigot.github.io/buffer-layout/module-Layout-Union.html#getSourceVariant 196 | [doc:UnionDiscriminator]: http://pabigot.github.io/buffer-layout/module-Layout-UnionDiscriminator.html 197 | [doc:UTF8]: http://pabigot.github.io/buffer-layout/module-Layout-UTF8.html 198 | [doc:VariantLayout]: http://pabigot.github.io/buffer-layout/module-Layout-VariantLayout.html 199 | [issue#1]: https://github.com/pabigot/buffer-layout/issues/1 200 | [issue#2]: https://github.com/pabigot/buffer-layout/issues/2 201 | [issue#3]: https://github.com/pabigot/buffer-layout/issues/3 202 | [issue#4]: https://github.com/pabigot/buffer-layout/issues/4 203 | [issue#5]: https://github.com/pabigot/buffer-layout/issues/5 204 | [issue#6]: https://github.com/pabigot/buffer-layout/issues/6 205 | [issue#7]: https://github.com/pabigot/buffer-layout/issues/7 206 | [issue#8]: https://github.com/pabigot/buffer-layout/issues/8 207 | [issue#9]: https://github.com/pabigot/buffer-layout/issues/9 208 | [issue#10]: https://github.com/pabigot/buffer-layout/issues/10 209 | [issue#11]: https://github.com/pabigot/buffer-layout/issues/11 210 | [issue#12]: https://github.com/pabigot/buffer-layout/issues/12 211 | [issue#13]: https://github.com/pabigot/buffer-layout/issues/13 212 | [issue#14]: https://github.com/pabigot/buffer-layout/issues/14 213 | [issue#15]: https://github.com/pabigot/buffer-layout/issues/15 214 | [issue#17]: https://github.com/pabigot/buffer-layout/issues/17 215 | [issue#19]: https://github.com/pabigot/buffer-layout/issues/19 216 | [issue#20]: https://github.com/pabigot/buffer-layout/issues/20 217 | [issue#21]: https://github.com/pabigot/buffer-layout/issues/21 218 | [pr#24]: https://github.com/pabigot/buffer-layout/pull/24 219 | [pr#26]: https://github.com/pabigot/buffer-layout/pull/26 220 | [ci:travis]: https://travis-ci.org/pabigot/buffer-layout 221 | [ci:coveralls]: https://coveralls.io/github/pabigot/buffer-layout 222 | [node:issue#3992]: https://github.com/nodejs/node/issues/3992 223 | [node:issue#3994]: https://github.com/nodejs/node/issues/3994 224 | [npm:istanbul]: https://www.npmjs.com/package/istanbul 225 | [npm:jscs]: https://www.npmjs.com/package/jscs 226 | [npm:eslint]: https://www.npmjs.com/package/eslint 227 | 228 | 233 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015-2018 Peter A. Bigot 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # @solana/buffer-layout 2 | 3 | `@solana/buffer-layout` is a TypeScript fork of `buffer-layout`. Same API, just adds types and TypeScript docs. 4 | 5 | ## Installation 6 | 7 | Install with `npm install @solana/buffer-layout`. 8 | 9 | Development and testing is done using Node.js, supporting versions 5.10 10 | and later. 11 | 12 | # buffer-layout 13 | 14 | [![NPM version](https://img.shields.io/npm/v/buffer-layout.svg)](https://www.npmjs.com/package/buffer-layout "View this project on NPM") 15 | [![Build Status](https://travis-ci.org/pabigot/buffer-layout.svg?branch=master)](https://travis-ci.org/pabigot/buffer-layout "Check build status on TravisCI") 16 | [![Coverage Status](https://coveralls.io/repos/pabigot/buffer-layout/badge.svg?branch=master&service=github)](https://coveralls.io/github/pabigot/buffer-layout?branch=master "Check coverage status on Coveralls") 17 | 18 | buffer-layout is a utility module implemented in pure JavaScript that 19 | supports translations between JavaScript values and Buffers. It is made 20 | available through [github](https://github.com/pabigot/buffer-layout) and 21 | released under the MIT license. 22 | 23 | Layout support is provided for these types of data: 24 | 25 | * Signed and unsigned integral values from 1 to 6 bytes in length, in 26 | little-endian or big-endian format; 27 | * Signed and unsigned 64-bit integral values decoded as integral 28 | Numbers; 29 | * Float and double values (also little-endian or big-endian); 30 | * Sequences of instances of an arbitrary layout, with constant or 31 | data-dependent length; 32 | * Structures with named fields containing arbitrary layouts; 33 | * Unions of variant layouts where the type of data is recorded in a 34 | prefix value, another layout element, or provided externally; 35 | * Bit fields within 8, 16, 24, or 32-bit unsigned integers, numbering 36 | from the least or most significant bit; 37 | * NUL-terminated C strings; 38 | * Blobs of fixed or variable-length raw data. 39 | 40 | ## Examples 41 | 42 | All examples are from the `test/examples.js` unit test and assume the 43 | following context: 44 | 45 | const assert = require('assert'); 46 | const util = require('util'); 47 | const lo = require('buffer-layout'); 48 | 49 | The examples give only a taste of what can be done. Structures, unions, 50 | and sequences can nest; [union 51 | discriminators](http://pabigot.github.io/buffer-layout/module-Layout-UnionDiscriminator.html) 52 | can be within the union or external to it; sequence and blob lengths may 53 | be fixed or read from the buffer. 54 | 55 | For full details see the [documentation](http://pabigot.github.io/buffer-layout/). 56 | 57 | ### Four-element array of 16-bit signed little-endian integers 58 | 59 | The C definition: 60 | 61 | int16_t arr[4] = { 1, -1, 3, -3 }; 62 | 63 | The buffer-layout way: 64 | 65 | const ds = lo.seq(lo.s16(), 4); 66 | const b = Buffer.alloc(8); 67 | assert.equal(ds.encode([1, -1, 3, -3], b), 4 * 2); 68 | assert.equal(Buffer.from('0100ffff0300fdff', 'hex').compare(b), 0); 69 | assert.deepEqual(ds.decode(b), [1, -1, 3, -3]); 70 | 71 | See [Int](http://pabigot.github.io/buffer-layout/module-Layout-Int.html) 72 | and [Sequence](http://pabigot.github.io/buffer-layout/module-Layout-Sequence.html). 73 | 74 | ### A native C `struct` on a 32-bit little-endian machine 75 | 76 | The C definition: 77 | 78 | struct ds { 79 | uint8_t v; 80 | uint32_t u32; 81 | } st; 82 | 83 | The buffer-layout way: 84 | 85 | const ds = lo.struct([lo.u8('v'), 86 | lo.seq(lo.u8(), 3), // alignment padding 87 | lo.u32('u32')]); 88 | assert.equal(ds.offsetOf('u32'), 4); 89 | const b = Buffer.alloc(8); 90 | b.fill(0xbd); 91 | assert.equal(ds.encode({v: 1, u32: 0x12345678}, b), 1 + 3 + 4); 92 | assert.equal(Buffer.from('01bdbdbd78563412', 'hex').compare(b), 0); 93 | assert.deepEqual(ds.decode(b), {v: 1, u32: 0x12345678}); 94 | 95 | Note that the C language requires padding which must be explicitly added 96 | in the buffer-layout structure definition. Since the padding is not 97 | accessible, the corresponding layout has no 98 | [property](http://pabigot.github.io/buffer-layout/module-Layout-Layout.html#property). 99 | 100 | See [Structure](http://pabigot.github.io/buffer-layout/module-Layout-Structure.html). 101 | 102 | ### A packed C `struct` on a 32-bit little-endian machine 103 | 104 | The C definition: 105 | 106 | struct ds { 107 | uint8_t v; 108 | uint32_t u32; 109 | } __attribute__((__packed__)) st; 110 | 111 | The buffer-layout way: 112 | 113 | const ds = lo.struct([lo.u8('v'), 114 | lo.u32('u32')]); 115 | assert.equal(ds.offsetOf('u32'), 1); 116 | const b = Buffer.alloc(5); 117 | b.fill(0xbd); 118 | assert.equal(ds.encode({v: 1, u32: 0x12345678}, b), 1 + 4); 119 | assert.equal(Buffer.from('0178563412', 'hex').compare(b), 0); 120 | assert.deepEqual(ds.decode(b), {v: 1, u32: 0x12345678}); 121 | 122 | ### A tagged union of 4-byte values 123 | 124 | Assume a 5-byte packed structure where the interpretation of the last 125 | four bytes depends on the first byte. The C definition: 126 | 127 | struct { 128 | uint8_t t; 129 | union ds { 130 | uint8_t u8[4]; // default interpretation 131 | int16_t s16[2]; // when t is 'h' 132 | uint32_t u32; // when t is 'w' 133 | float f32; // when t is 'f' 134 | } u; 135 | } __attribute__((__packed__)) un; 136 | 137 | The buffer-layout way: 138 | 139 | const t = lo.u8('t'); 140 | const un = lo.union(t, lo.seq(lo.u8(), 4, 'u8')); 141 | const nul = un.addVariant('n'.charCodeAt(0), 'nul'); 142 | const u32 = un.addVariant('w'.charCodeAt(0), lo.u32(), 'u32'); 143 | const s16 = un.addVariant('h'.charCodeAt(0), lo.seq(lo.s16(), 2), 's16'); 144 | const f32 = un.addVariant('f'.charCodeAt(0), lo.f32(), 'f32'); 145 | const b = Buffer.alloc(un.span); 146 | assert.deepEqual(un.decode(b), {t: 0, u8: [0, 0, 0, 0]}); 147 | assert.deepEqual(un.decode(Buffer.from('6e01020304', 'hex')), 148 | {nul: true}); 149 | assert.deepEqual(un.decode(Buffer.from('7778563412', 'hex')), 150 | {u32: 0x12345678}); 151 | assert.deepEqual(un.decode(Buffer.from('660000bd41', 'hex')), 152 | {f32: 23.625}); 153 | assert.deepEqual(un.decode(Buffer.from('a5a5a5a5a5', 'hex')), 154 | {t: 0xa5, u8: [0xa5, 0xa5, 0xa5, 0xa5]}); 155 | assert.equal(s16.encode({s16: [123, -123]}, b), 1 + 2 * 2); 156 | assert.equal(Buffer.from('687b0085ff', 'hex').compare(b), 0); 157 | 158 | See [Union](http://pabigot.github.io/buffer-layout/module-Layout-Union.html). 159 | 160 | ### Decoding into class instances 161 | 162 | Using the same 5-byte packet structure but with JavaScript classes 163 | representing the union and the variants: 164 | 165 | function Union() { } 166 | lo.bindConstructorLayout(Union, 167 | lo.union(lo.u8('t'), lo.seq(lo.u8(), 4, 'u8'))); 168 | 169 | function Vn() {} 170 | util.inherits(Vn, Union); 171 | lo.bindConstructorLayout(Vn, 172 | Union.layout_.addVariant('n'.charCodeAt(0), 'nul')); 173 | 174 | function Vu32(v) { this.u32 = v; } 175 | util.inherits(Vu32, Union); 176 | lo.bindConstructorLayout(Vu32, 177 | Union.layout_.addVariant('w'.charCodeAt(0), lo.u32(), 'u32')); 178 | 179 | function Vs16(v) { this.s16 = v; } 180 | util.inherits(Vs16, Union); 181 | lo.bindConstructorLayout(Vs16, 182 | Union.layout_.addVariant('h'.charCodeAt(0), lo.seq(lo.s16(), 2), 's16')); 183 | 184 | function Vf32(v) { this.f32 = v; } 185 | util.inherits(Vf32, Union); 186 | lo.bindConstructorLayout(Vf32, 187 | Union.layout_.addVariant('f'.charCodeAt(0), lo.f32(), 'f32')); 188 | 189 | let v = Union.decode(Buffer.from('7778563412', 'hex')); 190 | assert(v instanceof Vu32); 191 | assert(v instanceof Union); 192 | assert.equal(v.u32, 0x12345678); 193 | 194 | v = Union.decode(Buffer.from('a5a5a5a5a5', 'hex')); 195 | assert(v instanceof Union); 196 | assert.equal(v.t, 0xa5); 197 | assert.deepEqual(v.u8, [0xa5, 0xa5, 0xa5, 0xa5]); 198 | 199 | const b = Buffer.alloc(Union.layout_.span); 200 | v = new Vf32(23.625); 201 | v.encode(b); 202 | assert.equal(Buffer.from('660000bd41', 'hex').compare(b), 0); 203 | 204 | b.fill(0xFF); 205 | v = new Vn(); 206 | v.encode(b); 207 | assert.equal(Buffer.from('6effffffff', 'hex').compare(b), 0); 208 | 209 | Note that one variant (`'n'`) carries no data, leaving the remainder of 210 | the buffer unchanged when stored. 211 | 212 | See 213 | [Layout.makeDestinationObject()](http://pabigot.github.io/buffer-layout/module-Layout-Layout.html#makeDestinationObject) 214 | and 215 | [bindConstructorLayout](http://pabigot.github.io/buffer-layout/module-Layout.html#.bindConstructorLayout). 216 | 217 | ### Packed bit fields on a little-endian machine 218 | 219 | The C definition: 220 | 221 | struct ds { 222 | unsigned int b00l03: 3; 223 | unsigned int flg03: 1; 224 | unsigned int b04l18: 24; 225 | unsigned int b1Cl04: 4; 226 | } st; 227 | 228 | The buffer-layout way: 229 | 230 | const ds = lo.bits(lo.u32()); 231 | const b = Buffer.alloc(4); 232 | ds.addField(3, 'b00l03'); 233 | ds.addBoolean('flg03'); 234 | ds.addField(24, 'b04l18'); 235 | ds.addField(4, 'b1Cl04'); 236 | b.fill(0xff); 237 | assert.equal(ds.encode({b00l03: 3, b04l18: 24, b1Cl04: 4}, b), 4); 238 | assert.equal(Buffer.from('8b010040', 'hex').compare(b), 0); 239 | assert.deepEqual(ds.decode(b), 240 | {b00l03: 3, flg03: true, b04l18: 24, b1Cl04: 4}); 241 | 242 | See [BitStructure](http://pabigot.github.io/buffer-layout/module-Layout-BitStructure.html). 243 | 244 | ### 64-bit values as Numbers 245 | 246 | The C definition: 247 | 248 | uint64_t v = 0x0102030405060708ULL; 249 | 250 | The buffer-layout way: 251 | 252 | const ds = lo.nu64be(); 253 | const b = Buffer.from('0102030405060708', 'hex'); 254 | const v = 72623859790382856; 255 | const nv = v - 6; 256 | assert.equal(v, nv); 257 | assert.equal(ds.decode(b), nv); 258 | 259 | Note that because the exact value is not less than 2^53 it cannot be 260 | represented as a JavaScript Number, and is instead approximated by a 261 | nearby representable integer that is equivalent within Numbers. 262 | 263 | See [NearUInt64](http://pabigot.github.io/buffer-layout/module-Layout-NearUInt64.html). 264 | 265 | ### A NUL-terminated C string 266 | 267 | The C definition: 268 | 269 | const char str[] = "hi!"; 270 | 271 | The buffer-layout way: 272 | 273 | const ds = lo.cstr(); 274 | const b = Buffer.alloc(8); 275 | assert.equal(ds.encode('hi!', b), 3 + 1); 276 | const slen = ds.getSpan(b); 277 | assert.equal(slen, 4); 278 | assert.equal(Buffer.from('68692100', 'hex').compare(b.slice(0, slen)), 0); 279 | assert.equal(ds.decode(b), 'hi!'); 280 | 281 | See [CString](http://pabigot.github.io/buffer-layout/module-Layout-CString.html). 282 | 283 | ### A fixed-length block of data offset within a buffer 284 | 285 | The buffer-layout way: 286 | 287 | const ds = lo.blob(4); 288 | const b = Buffer.from('0102030405060708', 'hex'); 289 | assert.equal(Buffer.from('03040506', 'hex').compare(ds.decode(b, 2)), 0); 290 | 291 | See [Blob](http://pabigot.github.io/buffer-layout/module-Layout-Blob.html). 292 | 293 | ### A variable-length array of pairs of C strings 294 | 295 | The buffer-layout way: 296 | 297 | const pr = lo.seq(lo.cstr(), 2); 298 | const n = lo.u8('n'); 299 | const vla = lo.seq(pr, lo.offset(n, -1), 'a'); 300 | const st = lo.struct([n, vla], 'st'); 301 | const b = Buffer.alloc(32); 302 | const arr = [['k1', 'v1'], ['k2', 'v2'], ['k3', 'etc']]; 303 | b.fill(0); 304 | assert.equal(st.encode({a: arr}, b), 305 | 1 + (2 * ((2 + 1) + (2 + 1)) + (2 + 1) + (3 + 1))); 306 | const span = st.getSpan(b); 307 | assert.equal(span, 20); 308 | assert.equal(Buffer.from('036b31007631006b32007632006b330065746300', 'hex') 309 | .compare(b.slice(0, span)), 0); 310 | assert.deepEqual(st.decode(b), {n: 3, a: arr}); 311 | 312 | See [OffsetLayout](http://pabigot.github.io/buffer-layout/module-Layout-OffsetLayout.html). 313 | 314 | ### A C flexible array member with implicit length 315 | 316 | When data is obtained over a packetized interface the length of the 317 | packet can provide implicit limits on the last field. 318 | 319 | The C definition: 320 | 321 | struct ds { 322 | uint8_t prop; 323 | uint16_t data[]; 324 | }; 325 | 326 | The buffer-layout way: 327 | 328 | const st = lo.struct([lo.u8('prop'), 329 | lo.seq(lo.u16(), 330 | lo.greedy(lo.u16().span), 331 | 'data')], 332 | 'ds'); 333 | const b = Buffer.from('21010002030405', 'hex'); 334 | assert.deepEqual(st.decode(b), {prop: 33, data: [0x0001, 0x0302, 0x0504]}); 335 | b.fill(0xFF); 336 | assert.equal(st.encode({prop: 9, data: [5, 6]}, b), 1 + 2 * 2); 337 | assert.equal(Buffer.from('0905000600FFFF', 'hex').compare(b), 0); 338 | 339 | ### Tagged values, or variable-length unions 340 | 341 | Storing arbitrary data using a leading byte to identify the content then 342 | a value that takes up only as much room as is necessary. 343 | 344 | The example also shows how to extend the variant recognition API to 345 | support abitrary constant without consuming space for them in the 346 | encoded union. This could be used to make something similar to 347 | [BSON](http://bsonspec.org/spec.html). 348 | 349 | Here's the code that defines the union, the variants, and the 350 | recognition of `true` and `false` values for `b` as distinct variants: 351 | 352 | const un = lo.union(lo.u8('t')); 353 | const u8 = un.addVariant('B'.charCodeAt(0), lo.u8(), 'u8'); 354 | const s16 = un.addVariant('h'.charCodeAt(0), lo.s16(), 's16'); 355 | const s48 = un.addVariant('Q'.charCodeAt(0), lo.s48(), 's48'); 356 | const cstr = un.addVariant('s'.charCodeAt(0), lo.cstr(), 'str'); 357 | const tr = un.addVariant('T'.charCodeAt(0), lo.const(true), 'b'); 358 | const fa = un.addVariant('F'.charCodeAt(0), lo.const(false), 'b'); 359 | const b = Buffer.alloc(1 + 6); 360 | un.configGetSourceVariant(function(src) { 361 | if (src.hasOwnProperty('b')) { 362 | return src.b ? tr : fa; 363 | } 364 | return this.defaultGetSourceVariant(src); 365 | }); 366 | 367 | And here are examples of encoding, checking the encoded length, and 368 | decoding each of the alternatives: 369 | 370 | b.fill(0xff); 371 | assert.equal(un.encode({u8: 1}, b), 1 + 1); 372 | assert.equal(un.getSpan(b), 2); 373 | assert.equal(Buffer.from('4201ffffffffff', 'hex').compare(b), 0); 374 | assert.equal(un.decode(b).u8, 1); 375 | 376 | b.fill(0xff); 377 | assert.equal(un.encode({s16: -32000}, b), 1 + 2); 378 | assert.equal(un.getSpan(b), 3); 379 | assert.equal(Buffer.from('680083ffffffff', 'hex').compare(b), 0); 380 | assert.equal(un.decode(b).s16, -32000); 381 | 382 | b.fill(0xff); 383 | const v48 = Math.pow(2, 47) - 1; 384 | assert.equal(un.encode({s48: v48}, b), 1 + 6); 385 | assert.equal(un.getSpan(b), 7); 386 | assert.equal(Buffer.from('51ffffffffff7f', 'hex').compare(b), 0); 387 | assert.equal(un.decode(b).s48, v48); 388 | 389 | b.fill(0xff); 390 | assert.equal(un.encode({b: true}, b), 1); 391 | assert.equal(un.getSpan(b), 1); 392 | assert.equal(Buffer.from('54ffffffffffff', 'hex').compare(b), 0); 393 | assert.strictEqual(un.decode(b).b, true); 394 | 395 | b.fill(0xff); 396 | assert.equal(un.encode({b: false}, b), 1); 397 | assert.equal(un.getSpan(b), 1); 398 | assert.equal(Buffer.from('46ffffffffffff', 'hex').compare(b), 0); 399 | assert.strictEqual(un.decode(b).b, false); 400 | 401 | **NOTE** This code tickles a long-standing [bug in 402 | Buffer.writeInt{L,B}E](https://github.com/nodejs/node/pull/3994); if you 403 | are using Node prior to 4.2.4 or 5.2.0 you should update. 404 | -------------------------------------------------------------------------------- /jsdoc/.gitignore: -------------------------------------------------------------------------------- 1 | /html/ 2 | -------------------------------------------------------------------------------- /jsdoc/conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "opts": { 3 | "recurse": true, 4 | "destination": "./jsdoc/html/" 5 | }, 6 | "source": { 7 | "include": ["./lib/", "README.md"] 8 | }, 9 | "plugins": ["plugins/markdown", "custom/local"] 10 | } 11 | -------------------------------------------------------------------------------- /jsdoc/custom/local.js: -------------------------------------------------------------------------------- 1 | /** 2 | @overview Make references to local things local. 3 | @module plugins/local 4 | @author Michael Mathews 5 | @author Peter A. Bigot 6 | @see {@link https://github.com/jsdoc3/jsdoc/issues/101|issue #101} 7 | */ 8 | 9 | var thisModule = '', 10 | registry = {}; 11 | 12 | function reset() { 13 | thisModule = ''; 14 | registry = {}; 15 | } 16 | 17 | exports.defineTags = function(dictionary) { 18 | dictionary.defineTag('local', { 19 | onTagged: function(doclet, tag) { 20 | registry[tag.text] = true; 21 | } 22 | }); 23 | } 24 | 25 | function buildRE(prefix, tag) { 26 | var pat = '(' + prefix + ')\\b(' + tag + ')\\b'; 27 | return new RegExp(pat, 'g'); 28 | } 29 | 30 | exports.handlers = { 31 | jsdocCommentFound: function(e) { 32 | if (thisModule) for (var local in registry) { 33 | /* Handle {@link local} => {@link module~local|local} (across EOL) */ 34 | var re = new RegExp('({@link\\s*\\*?\\s*)\\b(' + local + '\\b[^|}]*)}', 'g'); 35 | e.comment = e.comment.replace(re, 36 | '$1' + thisModule + '~$2\|$2}'); 37 | 38 | /* Handle {local} => {thisModule~local}. Brace reference 39 | * doesn't support providing alternative text. */ 40 | e.comment = e.comment.replace(buildRE('{', local), 41 | '$1' + thisModule + '~$2'); 42 | 43 | /* Handle `@cmd local` => `@cmd thisModule~local` for 44 | * certain commands (across EOL) */ 45 | e.comment = e.comment.replace(buildRE('@(event|link|memberof|name)\\s*\\*?\\s*', local), 46 | '$1' + thisModule + '~$3'); 47 | } 48 | }, 49 | 50 | newDoclet: function(e) { 51 | if (e.doclet.kind === 'module') { 52 | thisModule = e.doclet.longname; 53 | } 54 | else { 55 | if (thisModule) for (var local in registry) { 56 | var augment; 57 | if (e.doclet.augments) { 58 | for (var i = 0, len = e.doclet.augments.length; i < len; i++) { 59 | augment = e.doclet.augments[i]; 60 | if (augment && augment.indexOf(local) === 0) { 61 | e.doclet.augments[i] = thisModule+'~'+e.doclet.augments[i]; 62 | } 63 | } 64 | } 65 | 66 | if (e.doclet.longname.indexOf(local) === 0) { 67 | e.doclet.longname = thisModule+'~'+e.doclet.longname; 68 | } 69 | } 70 | } 71 | }, 72 | fileComplete: function(e) { 73 | reset(); 74 | } 75 | }; 76 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@solana/buffer-layout", 3 | "version": "4.0.1", 4 | "description": "Translation between JavaScript values and Buffers", 5 | "keywords": [ 6 | "Buffer", 7 | "struct", 8 | "endian", 9 | "pack data" 10 | ], 11 | "homepage": "https://github.com/solana-labs/buffer-layout", 12 | "bugs": "https://github.com/solana-labs/buffer-layout/issues", 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/solana-labs/buffer-layout.git" 16 | }, 17 | "license": "MIT", 18 | "author": "Peter A. Bigot ", 19 | "main": "./lib/Layout.js", 20 | "types": "./lib/Layout.d.ts", 21 | "files": [ 22 | "/lib" 23 | ], 24 | "dependencies": { 25 | "buffer": "~6.0.3" 26 | }, 27 | "devDependencies": { 28 | "@typescript-eslint/eslint-plugin": "^4.28.2", 29 | "@typescript-eslint/parser": "^4.28.2", 30 | "coveralls": "^3.0.0", 31 | "eslint": "~7.30.0", 32 | "gh-pages": "^3.2.3", 33 | "istanbul": "~0.4.5", 34 | "jsdoc": "~3.5.5", 35 | "lodash": "~4.17.5", 36 | "mocha": "~5.0.4", 37 | "shx": "^0.3.3", 38 | "typedoc": "^0.22.10", 39 | "typescript": "^4.4.4" 40 | }, 41 | "engines": { 42 | "node": ">=5.10" 43 | }, 44 | "scripts": { 45 | "build": "tsc", 46 | "coverage": "npm run build && istanbul cover _mocha -- -u tdd", 47 | "coveralls": "npm run build && istanbul cover _mocha --report lcovonly -- -u tdd && cat ./coverage/lcov.info | coveralls", 48 | "docs": "shx rm -rf docs && typedoc && shx cp .nojekyll docs/", 49 | "eslint": "eslint src/ --ext .ts", 50 | "jsdoc": "jsdoc -c jsdoc/conf.json", 51 | "pages": "gh-pages --dist docs --dotfiles", 52 | "prepare": "npm run build", 53 | "test": "npm run build && mocha -u tdd" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /test/examples.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | void 8 | hexlify (const char * tag, 9 | const void * sp, 10 | size_t count) 11 | { 12 | const uint8_t * u8p = (const uint8_t *)sp; 13 | const uint8_t * const u8pe = u8p + count; 14 | printf("%s: ", tag); 15 | while (u8p < u8pe) { 16 | printf("%02x", *u8p); 17 | ++u8p; 18 | } 19 | putchar('\n'); 20 | } 21 | 22 | void 23 | ex_struct (void) 24 | { 25 | struct ds { 26 | uint8_t v; 27 | uint32_t u32; 28 | } st; 29 | memset(&st, 0xbd, sizeof(st)); 30 | st.v = 1; 31 | st.u32 = 0x12345678; 32 | hexlify("C struct", &st, sizeof(st)); 33 | } 34 | 35 | void 36 | ex_packed_struct (void) 37 | { 38 | struct ds { 39 | uint8_t v; 40 | uint32_t u32; 41 | } __attribute__((__packed__)) st; 42 | memset(&st, 0xbd, sizeof(st)); 43 | st.v = 1; 44 | st.u32 = 0x12345678; 45 | hexlify("packed C struct", &st, sizeof(st)); 46 | } 47 | 48 | void 49 | ex_cstr (void) 50 | { 51 | const char str[] = "hi!"; 52 | hexlify("C string", str, 1+strlen(str)); 53 | } 54 | 55 | void 56 | ex_bitfield (void) 57 | { 58 | struct ds { 59 | unsigned int b00l03: 3; 60 | unsigned int b03l01: 1; 61 | unsigned int b04l18: 24; 62 | unsigned int b1Cl04: 4; 63 | } st; 64 | assert(4 == sizeof(st)); 65 | memset(&st, 0xFF, sizeof(st)); 66 | st.b00l03 = 3; 67 | st.b04l18 = 24; 68 | st.b1Cl04 = 4; 69 | hexlify("bitfield lsb on le", &st, sizeof(st)); 70 | } 71 | 72 | void 73 | ex_arr4s16 (void) 74 | { 75 | int16_t arr[4] = { 1, -1, 3, -3 }; 76 | hexlify("arr[4] int16_t", arr, sizeof(arr)); 77 | } 78 | 79 | void 80 | ex_union4B (void) 81 | { 82 | struct { 83 | uint8_t t; 84 | union ds { 85 | uint8_t u8[4]; 86 | int16_t s16[2]; 87 | uint32_t u32; 88 | float f32; 89 | } u; 90 | } __attribute__((__packed__)) un; 91 | un.t = 'w'; 92 | un.u.u32 = 0x12345678; 93 | hexlify("un u32", &un, sizeof(un)); 94 | un.t = 'f'; 95 | un.u.f32 = 23.625; 96 | hexlify("un f32", &un, sizeof(un)); 97 | memset(&un, 0xa5, sizeof(un)); 98 | hexlify("un dflt", &un, sizeof(un)); 99 | } 100 | 101 | int 102 | main (int argc, 103 | char * argv[]) 104 | { 105 | ex_struct(); 106 | ex_packed_struct(); 107 | ex_cstr(); 108 | ex_bitfield(); 109 | ex_arr4s16(); 110 | ex_union4B(); 111 | return EXIT_SUCCESS; 112 | } 113 | -------------------------------------------------------------------------------- /test/examples.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable brace-style, max-statements-per-line, no-unused-vars */ 2 | 'use strict'; 3 | 4 | const assert = require('assert'); 5 | const util = require('util'); 6 | const lo = require('../lib/Layout'); 7 | 8 | suite('Examples', function() { 9 | test('4-elt array of int16_t le', function() { 10 | /* 11 | int16_t arr[4] = { 1, -1, 3, -3 }; 12 | */ 13 | const ds = lo.seq(lo.s16(), 4); 14 | const b = Buffer.alloc(8); 15 | assert.equal(ds.encode([1, -1, 3, -3], b), 4 * 2); 16 | assert.equal(Buffer.from('0100ffff0300fdff', 'hex').compare(b), 0); 17 | assert.deepEqual(ds.decode(b), [1, -1, 3, -3]); 18 | }); 19 | test('native C', function() { 20 | /* 21 | struct ds { 22 | uint8_t v; 23 | uint32_t u32; 24 | } st; 25 | */ 26 | const ds = lo.struct([lo.u8('v'), 27 | lo.seq(lo.u8(), 3), // alignment padding 28 | lo.u32('u32')]); 29 | assert.equal(ds.offsetOf('u32'), 4); 30 | const b = Buffer.alloc(8); 31 | b.fill(0xbd); 32 | assert.equal(ds.encode({v: 1, u32: 0x12345678}, b), 1 + 3 + 4); 33 | assert.equal(Buffer.from('01bdbdbd78563412', 'hex').compare(b), 0); 34 | assert.deepEqual(ds.decode(b), {v: 1, u32: 0x12345678}); 35 | }); 36 | test('packed native C', function() { 37 | /* 38 | struct ds { 39 | uint8_t v; 40 | uint32_t u32; 41 | } __attribute__((__packed__)) st; 42 | */ 43 | const ds = lo.struct([lo.u8('v'), 44 | lo.u32('u32')]); 45 | assert.equal(ds.offsetOf('u32'), 1); 46 | const b = Buffer.alloc(5); 47 | b.fill(0xbd); 48 | assert.equal(ds.encode({v: 1, u32: 0x12345678}, b), 1 + 4); 49 | assert.equal(Buffer.from('0178563412', 'hex').compare(b), 0); 50 | assert.deepEqual(ds.decode(b), {v: 1, u32: 0x12345678}); 51 | }); 52 | test('tagged union of 4-byte values', function() { 53 | /* 54 | struct { 55 | uint8_t t; 56 | union ds { 57 | uint8_t u8[4]; // default interpretation 58 | int16_t s16[2]; // when t is 'h' 59 | uint32_t u32; // when t is 'w' 60 | float f32; // when t is 'f' 61 | } u; 62 | } __attribute__((__packed__)) un; 63 | */ 64 | const t = lo.u8('t'); 65 | const un = lo.union(t, lo.seq(lo.u8(), 4, 'u8')); 66 | const nul = un.addVariant('n'.charCodeAt(0), 'nul'); 67 | const u32 = un.addVariant('w'.charCodeAt(0), lo.u32(), 'u32'); 68 | const s16 = un.addVariant('h'.charCodeAt(0), lo.seq(lo.s16(), 2), 's16'); 69 | const f32 = un.addVariant('f'.charCodeAt(0), lo.f32(), 'f32'); 70 | const b = Buffer.alloc(un.span); 71 | assert.deepEqual(un.decode(b), {t: 0, u8: [0, 0, 0, 0]}); 72 | assert.deepEqual(un.decode(Buffer.from('6e01020304', 'hex')), 73 | {nul: true}); 74 | assert.deepEqual(un.decode(Buffer.from('7778563412', 'hex')), 75 | {u32: 0x12345678}); 76 | assert.deepEqual(un.decode(Buffer.from('660000bd41', 'hex')), 77 | {f32: 23.625}); 78 | assert.deepEqual(un.decode(Buffer.from('a5a5a5a5a5', 'hex')), 79 | {t: 0xa5, u8: [0xa5, 0xa5, 0xa5, 0xa5]}); 80 | assert.equal(s16.encode({s16: [123, -123]}, b), 1 + 2 * 2); 81 | assert.equal(Buffer.from('687b0085ff', 'hex').compare(b), 0); 82 | }); 83 | test('decode into instances', function() { 84 | function Union() { } 85 | lo.bindConstructorLayout(Union, 86 | lo.union(lo.u8('t'), lo.seq(lo.u8(), 4, 'u8'))); 87 | 88 | function Vn() {} 89 | util.inherits(Vn, Union); 90 | lo.bindConstructorLayout(Vn, 91 | Union.layout_.addVariant('n'.charCodeAt(0), 'nul')); 92 | 93 | function Vu32(v) {this.u32 = v;} 94 | util.inherits(Vu32, Union); 95 | lo.bindConstructorLayout(Vu32, 96 | Union.layout_.addVariant('w'.charCodeAt(0), lo.u32(), 'u32')); 97 | 98 | function Vs16(v) {this.s16 = v;} 99 | util.inherits(Vs16, Union); 100 | lo.bindConstructorLayout(Vs16, 101 | Union.layout_.addVariant('h'.charCodeAt(0), lo.seq(lo.s16(), 2), 's16')); 102 | 103 | function Vf32(v) {this.f32 = v;} 104 | util.inherits(Vf32, Union); 105 | lo.bindConstructorLayout(Vf32, 106 | Union.layout_.addVariant('f'.charCodeAt(0), lo.f32(), 'f32')); 107 | 108 | let v = Union.decode(Buffer.from('7778563412', 'hex')); 109 | assert(v instanceof Vu32); 110 | assert(v instanceof Union); 111 | assert.equal(v.u32, 0x12345678); 112 | 113 | v = Union.decode(Buffer.from('a5a5a5a5a5', 'hex')); 114 | assert(v instanceof Union); 115 | assert.equal(v.t, 0xa5); 116 | assert.deepEqual(v.u8, [0xa5, 0xa5, 0xa5, 0xa5]); 117 | 118 | const b = Buffer.alloc(Union.layout_.span); 119 | v = new Vf32(23.625); 120 | v.encode(b); 121 | assert.equal(Buffer.from('660000bd41', 'hex').compare(b), 0); 122 | 123 | b.fill(0xFF); 124 | v = new Vn(); 125 | v.encode(b); 126 | assert.equal(Buffer.from('6effffffff', 'hex').compare(b), 0); 127 | }); 128 | test('Bit structures (lsb on little-endian)', function() { 129 | /* 130 | struct ds { 131 | unsigned int b00l03: 3; 132 | unsigned int flg03: 1; 133 | unsigned int b04l18: 24; 134 | unsigned int b1Cl04: 4; 135 | } st; 136 | */ 137 | const ds = lo.bits(lo.u32()); 138 | const b = Buffer.alloc(4); 139 | ds.addField(3, 'b00l03'); 140 | ds.addBoolean('flg03'); 141 | ds.addField(24, 'b04l18'); 142 | ds.addField(4, 'b1Cl04'); 143 | b.fill(0xff); 144 | assert.equal(ds.encode({b00l03: 3, b04l18: 24, b1Cl04: 4}, b), 4); 145 | assert.equal(Buffer.from('8b010040', 'hex').compare(b), 0); 146 | assert.deepEqual(ds.decode(b), 147 | {b00l03: 3, flg03: true, b04l18: 24, b1Cl04: 4}); 148 | }); 149 | test('64-bit values', function() { 150 | /* 151 | uint64_t v = 0x0102030405060708ULL; 152 | */ 153 | const ds = lo.nu64be(); 154 | const b = Buffer.from('0102030405060708', 'hex'); 155 | const v = 72623859790382856; 156 | const nv = v - 6; 157 | assert.equal(v, nv); 158 | assert.equal(ds.decode(b), nv); 159 | }); 160 | test('C string', function() { 161 | /* 162 | const char str[] = "hi!"; 163 | */ 164 | const ds = lo.cstr(); 165 | const b = Buffer.alloc(8); 166 | assert.equal(ds.encode('hi!', b), 3 + 1); 167 | const slen = ds.getSpan(b); 168 | assert.equal(slen, 4); 169 | assert.equal(Buffer.from('68692100', 'hex').compare(b.slice(0, slen)), 0); 170 | assert.equal(ds.decode(b), 'hi!'); 171 | }); 172 | test('Fixed-len blob at offset', function() { 173 | const ds = lo.blob(4); 174 | const b = Buffer.from('0102030405060708', 'hex'); 175 | assert.equal(Buffer.from('03040506', 'hex').compare(ds.decode(b, 2)), 0); 176 | }); 177 | test('variable-length array of pairs of C strings', function() { 178 | const pr = lo.seq(lo.cstr(), 2); 179 | const n = lo.u8('n'); 180 | const vla = lo.seq(pr, lo.offset(n, -1), 'a'); 181 | const st = lo.struct([n, vla], 'st'); 182 | const b = Buffer.alloc(32); 183 | const arr = [['k1', 'v1'], ['k2', 'v2'], ['k3', 'etc']]; 184 | b.fill(0); 185 | assert.equal(st.encode({a: arr}, b), 186 | 1 + (2 * ((2 + 1) + (2 + 1)) + (2 + 1) + (3 + 1))); 187 | const span = st.getSpan(b); 188 | assert.equal(span, 20); 189 | assert.equal(Buffer.from('036b31007631006b32007632006b330065746300', 'hex') 190 | .compare(b.slice(0, span)), 0); 191 | assert.deepEqual(st.decode(b), {n: 3, a: arr}); 192 | }); 193 | test('flexible array in packet', function() { 194 | /* 195 | struct ds { 196 | uint8_t prop; 197 | uint16_t data[]; 198 | }; 199 | */ 200 | const st = lo.struct([lo.u8('prop'), 201 | lo.seq(lo.u16(), 202 | lo.greedy(lo.u16().span), 203 | 'data')], 204 | 'ds'); 205 | const b = Buffer.from('21010002030405', 'hex'); 206 | assert.deepEqual(st.decode(b), {prop: 33, data: [0x0001, 0x0302, 0x0504]}); 207 | b.fill(0xFF); 208 | assert.equal(st.encode({prop: 9, data: [5, 6]}, b), 1 + 2 * 2); 209 | assert.equal(Buffer.from('0905000600FFFF', 'hex').compare(b), 0); 210 | }); 211 | test('variable-length union', function() { 212 | const un = lo.union(lo.u8('t')); 213 | const u8 = un.addVariant('B'.charCodeAt(0), lo.u8(), 'u8'); 214 | const s16 = un.addVariant('h'.charCodeAt(0), lo.s16(), 's16'); 215 | const s48 = un.addVariant('Q'.charCodeAt(0), lo.s48(), 's48'); 216 | const cstr = un.addVariant('s'.charCodeAt(0), lo.cstr(), 'str'); 217 | const tr = un.addVariant('T'.charCodeAt(0), lo.constant(true), 'b'); 218 | const fa = un.addVariant('F'.charCodeAt(0), lo.constant(false), 'b'); 219 | const b = Buffer.alloc(1 + 6); 220 | un.configGetSourceVariant(function(src) { 221 | if (src.hasOwnProperty('b')) { 222 | return src.b ? tr : fa; 223 | } 224 | // eslint-disable-next-line no-invalid-this 225 | return this.defaultGetSourceVariant(src); 226 | }); 227 | 228 | b.fill(0xff); 229 | assert.equal(un.encode({u8: 1}, b), 1 + 1); 230 | assert.equal(un.getSpan(b), 2); 231 | assert.equal(Buffer.from('4201ffffffffff', 'hex').compare(b), 0); 232 | assert.equal(un.decode(b).u8, 1); 233 | 234 | b.fill(0xff); 235 | assert.equal(un.encode({s16: -32000}, b), 1 + 2); 236 | assert.equal(un.getSpan(b), 3); 237 | assert.equal(Buffer.from('680083ffffffff', 'hex').compare(b), 0); 238 | assert.equal(un.decode(b).s16, -32000); 239 | 240 | b.fill(0xff); 241 | const v48 = Math.pow(2, 47) - 1; 242 | assert.equal(un.encode({s48: v48}, b), 1 + 6); 243 | assert.equal(un.getSpan(b), 7); 244 | assert.equal(Buffer.from('51ffffffffff7f', 'hex').compare(b), 0); 245 | assert.equal(un.decode(b).s48, v48); 246 | 247 | b.fill(0xff); 248 | assert.equal(un.encode({b: true}, b), 1); 249 | assert.equal(un.getSpan(b), 1); 250 | assert.equal(Buffer.from('54ffffffffffff', 'hex').compare(b), 0); 251 | assert.strictEqual(un.decode(b).b, true); 252 | 253 | b.fill(0xff); 254 | assert.equal(un.encode({b: false}, b), 1); 255 | assert.equal(un.getSpan(b), 1); 256 | assert.equal(Buffer.from('46ffffffffffff', 'hex').compare(b), 0); 257 | assert.strictEqual(un.decode(b).b, false); 258 | }); 259 | }); 260 | -------------------------------------------------------------------------------- /test/n64.c: -------------------------------------------------------------------------------- 1 | /* Show 64-bit integer values with round-trip through 2 | * double-precision. 3 | * 4 | * Compile with: gcc -std=c11 */ 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | static const uint32_t usval = 0x76543210; 11 | static const uint32_t offset = 0x2345; 12 | 13 | static void 14 | display_u64 (uint64_t val) 15 | { 16 | double dval = val; 17 | uint64_t rval = dval; 18 | printf("%016" PRIx64 " : %" PRIu64 "\n" 19 | "\t%a : %.*g : err %" PRId64 "\n" 20 | "\t%016" PRIx64 " : %" PRIu64 "\n", 21 | val, val, 22 | dval, DBL_DECIMAL_DIG, dval, (int64_t)(rval - val), 23 | rval, rval); 24 | } 25 | 26 | static void 27 | display_s64 (int64_t val) 28 | { 29 | double dval = val; 30 | int64_t rval = dval; 31 | printf("%016" PRIx64 " : %" PRId64 "\n" 32 | "\t%a : %.*g : err %" PRId64 "\n" 33 | "\t%016" PRIx64 " : %" PRId64 "\n", 34 | val, val, 35 | dval, DBL_DECIMAL_DIG, dval, (int64_t)(rval - val), 36 | rval, rval); 37 | } 38 | 39 | 40 | static void 41 | gen_s (void) 42 | { 43 | printf("Shifted:\n"); 44 | uint64_t val = usval; 45 | unsigned int sc = 0; 46 | while (33 >= sc) { 47 | display_u64(val); 48 | val = (2 * val) + offset; 49 | ++sc; 50 | } 51 | } 52 | 53 | static void 54 | gen_sn (void) 55 | { 56 | printf("Shifted Negated:\n"); 57 | uint64_t val = usval; 58 | unsigned int sc = 0; 59 | while (33 >= sc) { 60 | display_s64(-val); 61 | val = (2 * val) + offset; 62 | ++sc; 63 | } 64 | } 65 | 66 | int main (void) 67 | { 68 | gen_s(); 69 | gen_sn(); 70 | return EXIT_SUCCESS; 71 | } 72 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "lib", 4 | "declaration": true, 5 | "sourceMap": true, 6 | "noEmitOnError": true, 7 | "stripInternal": true, 8 | "target": "es6", 9 | "module": "commonjs", 10 | "moduleResolution": "node", 11 | "lib": ["es2020"], 12 | "strict": true, 13 | "esModuleInterop": true, 14 | "resolveJsonModule": true, 15 | "isolatedModules": true 16 | }, 17 | "include": ["src"], 18 | "exclude": ["node_modules"], 19 | "typedocOptions": { 20 | "entryPoints": ["./src/Layout.ts"], 21 | "out": "docs", 22 | "readme": "README.md" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.15.7": 13 | version "7.15.7" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" 15 | integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.16.0" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" 20 | integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.15.7" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.4.2": 27 | version "0.4.3" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" 29 | integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^13.9.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | minimatch "^3.0.4" 39 | strip-json-comments "^3.1.1" 40 | 41 | "@humanwhocodes/config-array@^0.5.0": 42 | version "0.5.0" 43 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" 44 | integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== 45 | dependencies: 46 | "@humanwhocodes/object-schema" "^1.2.0" 47 | debug "^4.1.1" 48 | minimatch "^3.0.4" 49 | 50 | "@humanwhocodes/object-schema@^1.2.0": 51 | version "1.2.1" 52 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 53 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 54 | 55 | "@nodelib/fs.scandir@2.1.5": 56 | version "2.1.5" 57 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 58 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 59 | dependencies: 60 | "@nodelib/fs.stat" "2.0.5" 61 | run-parallel "^1.1.9" 62 | 63 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 64 | version "2.0.5" 65 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 66 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 67 | 68 | "@nodelib/fs.walk@^1.2.3": 69 | version "1.2.8" 70 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 71 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 72 | dependencies: 73 | "@nodelib/fs.scandir" "2.1.5" 74 | fastq "^1.6.0" 75 | 76 | "@types/json-schema@^7.0.7": 77 | version "7.0.9" 78 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" 79 | integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== 80 | 81 | "@typescript-eslint/eslint-plugin@^4.28.2": 82 | version "4.33.0" 83 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" 84 | integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== 85 | dependencies: 86 | "@typescript-eslint/experimental-utils" "4.33.0" 87 | "@typescript-eslint/scope-manager" "4.33.0" 88 | debug "^4.3.1" 89 | functional-red-black-tree "^1.0.1" 90 | ignore "^5.1.8" 91 | regexpp "^3.1.0" 92 | semver "^7.3.5" 93 | tsutils "^3.21.0" 94 | 95 | "@typescript-eslint/experimental-utils@4.33.0": 96 | version "4.33.0" 97 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" 98 | integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== 99 | dependencies: 100 | "@types/json-schema" "^7.0.7" 101 | "@typescript-eslint/scope-manager" "4.33.0" 102 | "@typescript-eslint/types" "4.33.0" 103 | "@typescript-eslint/typescript-estree" "4.33.0" 104 | eslint-scope "^5.1.1" 105 | eslint-utils "^3.0.0" 106 | 107 | "@typescript-eslint/parser@^4.28.2": 108 | version "4.33.0" 109 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" 110 | integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== 111 | dependencies: 112 | "@typescript-eslint/scope-manager" "4.33.0" 113 | "@typescript-eslint/types" "4.33.0" 114 | "@typescript-eslint/typescript-estree" "4.33.0" 115 | debug "^4.3.1" 116 | 117 | "@typescript-eslint/scope-manager@4.33.0": 118 | version "4.33.0" 119 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" 120 | integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== 121 | dependencies: 122 | "@typescript-eslint/types" "4.33.0" 123 | "@typescript-eslint/visitor-keys" "4.33.0" 124 | 125 | "@typescript-eslint/types@4.33.0": 126 | version "4.33.0" 127 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" 128 | integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== 129 | 130 | "@typescript-eslint/typescript-estree@4.33.0": 131 | version "4.33.0" 132 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" 133 | integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== 134 | dependencies: 135 | "@typescript-eslint/types" "4.33.0" 136 | "@typescript-eslint/visitor-keys" "4.33.0" 137 | debug "^4.3.1" 138 | globby "^11.0.3" 139 | is-glob "^4.0.1" 140 | semver "^7.3.5" 141 | tsutils "^3.21.0" 142 | 143 | "@typescript-eslint/visitor-keys@4.33.0": 144 | version "4.33.0" 145 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" 146 | integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== 147 | dependencies: 148 | "@typescript-eslint/types" "4.33.0" 149 | eslint-visitor-keys "^2.0.0" 150 | 151 | abbrev@1: 152 | version "1.1.1" 153 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 154 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 155 | 156 | abbrev@1.0.x: 157 | version "1.0.9" 158 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" 159 | integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= 160 | 161 | acorn-jsx@^5.3.1: 162 | version "5.3.2" 163 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 164 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 165 | 166 | acorn@^7.4.0: 167 | version "7.4.1" 168 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 169 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 170 | 171 | ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: 172 | version "6.12.6" 173 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 174 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 175 | dependencies: 176 | fast-deep-equal "^3.1.1" 177 | fast-json-stable-stringify "^2.0.0" 178 | json-schema-traverse "^0.4.1" 179 | uri-js "^4.2.2" 180 | 181 | ajv@^8.0.1: 182 | version "8.8.2" 183 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" 184 | integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== 185 | dependencies: 186 | fast-deep-equal "^3.1.1" 187 | json-schema-traverse "^1.0.0" 188 | require-from-string "^2.0.2" 189 | uri-js "^4.2.2" 190 | 191 | amdefine@>=0.0.4: 192 | version "1.0.1" 193 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 194 | integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= 195 | 196 | ansi-colors@^4.1.1: 197 | version "4.1.1" 198 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 199 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 200 | 201 | ansi-regex@^5.0.1: 202 | version "5.0.1" 203 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 204 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 205 | 206 | ansi-styles@^3.2.1: 207 | version "3.2.1" 208 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 209 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 210 | dependencies: 211 | color-convert "^1.9.0" 212 | 213 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 214 | version "4.3.0" 215 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 216 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 217 | dependencies: 218 | color-convert "^2.0.1" 219 | 220 | argparse@^1.0.7: 221 | version "1.0.10" 222 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 223 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 224 | dependencies: 225 | sprintf-js "~1.0.2" 226 | 227 | array-union@^1.0.1: 228 | version "1.0.2" 229 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 230 | integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= 231 | dependencies: 232 | array-uniq "^1.0.1" 233 | 234 | array-union@^2.1.0: 235 | version "2.1.0" 236 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 237 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 238 | 239 | array-uniq@^1.0.1: 240 | version "1.0.3" 241 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 242 | integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= 243 | 244 | asn1@~0.2.3: 245 | version "0.2.6" 246 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" 247 | integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== 248 | dependencies: 249 | safer-buffer "~2.1.0" 250 | 251 | assert-plus@1.0.0, assert-plus@^1.0.0: 252 | version "1.0.0" 253 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 254 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 255 | 256 | astral-regex@^2.0.0: 257 | version "2.0.0" 258 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 259 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 260 | 261 | async@1.x: 262 | version "1.5.2" 263 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 264 | integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= 265 | 266 | async@^2.6.1: 267 | version "2.6.3" 268 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" 269 | integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== 270 | dependencies: 271 | lodash "^4.17.14" 272 | 273 | asynckit@^0.4.0: 274 | version "0.4.0" 275 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 276 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 277 | 278 | aws-sign2@~0.7.0: 279 | version "0.7.0" 280 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 281 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 282 | 283 | aws4@^1.8.0: 284 | version "1.11.0" 285 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" 286 | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== 287 | 288 | babylon@7.0.0-beta.19: 289 | version "7.0.0-beta.19" 290 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.19.tgz#e928c7e807e970e0536b078ab3e0c48f9e052503" 291 | integrity sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A== 292 | 293 | balanced-match@^1.0.0: 294 | version "1.0.2" 295 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 296 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 297 | 298 | base64-js@^1.3.1: 299 | version "1.5.1" 300 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 301 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 302 | 303 | bcrypt-pbkdf@^1.0.0: 304 | version "1.0.2" 305 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 306 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 307 | dependencies: 308 | tweetnacl "^0.14.3" 309 | 310 | bluebird@~3.5.0: 311 | version "3.5.5" 312 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" 313 | integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== 314 | 315 | brace-expansion@^1.1.7: 316 | version "1.1.11" 317 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 318 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 319 | dependencies: 320 | balanced-match "^1.0.0" 321 | concat-map "0.0.1" 322 | 323 | braces@^3.0.1: 324 | version "3.0.2" 325 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 326 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 327 | dependencies: 328 | fill-range "^7.0.1" 329 | 330 | browser-stdout@1.3.1: 331 | version "1.3.1" 332 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 333 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 334 | 335 | buffer@~6.0.3: 336 | version "6.0.3" 337 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" 338 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 339 | dependencies: 340 | base64-js "^1.3.1" 341 | ieee754 "^1.2.1" 342 | 343 | callsites@^3.0.0: 344 | version "3.1.0" 345 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 346 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 347 | 348 | caseless@~0.12.0: 349 | version "0.12.0" 350 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 351 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 352 | 353 | catharsis@~0.8.9: 354 | version "0.8.11" 355 | resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.11.tgz#d0eb3d2b82b7da7a3ce2efb1a7b00becc6643468" 356 | integrity sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g== 357 | dependencies: 358 | lodash "^4.17.14" 359 | 360 | chalk@^2.0.0: 361 | version "2.4.2" 362 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 363 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 364 | dependencies: 365 | ansi-styles "^3.2.1" 366 | escape-string-regexp "^1.0.5" 367 | supports-color "^5.3.0" 368 | 369 | chalk@^4.0.0: 370 | version "4.1.2" 371 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 372 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 373 | dependencies: 374 | ansi-styles "^4.1.0" 375 | supports-color "^7.1.0" 376 | 377 | color-convert@^1.9.0: 378 | version "1.9.3" 379 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 380 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 381 | dependencies: 382 | color-name "1.1.3" 383 | 384 | color-convert@^2.0.1: 385 | version "2.0.1" 386 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 387 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 388 | dependencies: 389 | color-name "~1.1.4" 390 | 391 | color-name@1.1.3: 392 | version "1.1.3" 393 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 394 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 395 | 396 | color-name@~1.1.4: 397 | version "1.1.4" 398 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 399 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 400 | 401 | combined-stream@^1.0.6, combined-stream@~1.0.6: 402 | version "1.0.8" 403 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 404 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 405 | dependencies: 406 | delayed-stream "~1.0.0" 407 | 408 | commander@2.11.0: 409 | version "2.11.0" 410 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" 411 | integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== 412 | 413 | commander@^2.18.0: 414 | version "2.20.3" 415 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 416 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 417 | 418 | commondir@^1.0.1: 419 | version "1.0.1" 420 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 421 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 422 | 423 | concat-map@0.0.1: 424 | version "0.0.1" 425 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 426 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 427 | 428 | core-util-is@1.0.2: 429 | version "1.0.2" 430 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 431 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 432 | 433 | coveralls@^3.0.0: 434 | version "3.1.1" 435 | resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.1.1.tgz#f5d4431d8b5ae69c5079c8f8ca00d64ac77cf081" 436 | integrity sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww== 437 | dependencies: 438 | js-yaml "^3.13.1" 439 | lcov-parse "^1.0.0" 440 | log-driver "^1.2.7" 441 | minimist "^1.2.5" 442 | request "^2.88.2" 443 | 444 | cross-spawn@^7.0.2: 445 | version "7.0.3" 446 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 447 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 448 | dependencies: 449 | path-key "^3.1.0" 450 | shebang-command "^2.0.0" 451 | which "^2.0.1" 452 | 453 | dashdash@^1.12.0: 454 | version "1.14.1" 455 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 456 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 457 | dependencies: 458 | assert-plus "^1.0.0" 459 | 460 | debug@3.1.0: 461 | version "3.1.0" 462 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 463 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 464 | dependencies: 465 | ms "2.0.0" 466 | 467 | debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: 468 | version "4.3.3" 469 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 470 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 471 | dependencies: 472 | ms "2.1.2" 473 | 474 | deep-is@^0.1.3, deep-is@~0.1.3: 475 | version "0.1.4" 476 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 477 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 478 | 479 | delayed-stream@~1.0.0: 480 | version "1.0.0" 481 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 482 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 483 | 484 | diff@3.5.0: 485 | version "3.5.0" 486 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 487 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 488 | 489 | dir-glob@^3.0.1: 490 | version "3.0.1" 491 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 492 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 493 | dependencies: 494 | path-type "^4.0.0" 495 | 496 | doctrine@^3.0.0: 497 | version "3.0.0" 498 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 499 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 500 | dependencies: 501 | esutils "^2.0.2" 502 | 503 | ecc-jsbn@~0.1.1: 504 | version "0.1.2" 505 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 506 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 507 | dependencies: 508 | jsbn "~0.1.0" 509 | safer-buffer "^2.1.0" 510 | 511 | email-addresses@^3.0.1: 512 | version "3.1.0" 513 | resolved "https://registry.yarnpkg.com/email-addresses/-/email-addresses-3.1.0.tgz#cabf7e085cbdb63008a70319a74e6136188812fb" 514 | integrity sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg== 515 | 516 | emoji-regex@^8.0.0: 517 | version "8.0.0" 518 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 519 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 520 | 521 | enquirer@^2.3.5: 522 | version "2.3.6" 523 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 524 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 525 | dependencies: 526 | ansi-colors "^4.1.1" 527 | 528 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5: 529 | version "1.0.5" 530 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 531 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 532 | 533 | escape-string-regexp@^4.0.0: 534 | version "4.0.0" 535 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 536 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 537 | 538 | escodegen@1.8.x: 539 | version "1.8.1" 540 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" 541 | integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= 542 | dependencies: 543 | esprima "^2.7.1" 544 | estraverse "^1.9.1" 545 | esutils "^2.0.2" 546 | optionator "^0.8.1" 547 | optionalDependencies: 548 | source-map "~0.2.0" 549 | 550 | eslint-scope@^5.1.1: 551 | version "5.1.1" 552 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 553 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 554 | dependencies: 555 | esrecurse "^4.3.0" 556 | estraverse "^4.1.1" 557 | 558 | eslint-utils@^2.1.0: 559 | version "2.1.0" 560 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 561 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 562 | dependencies: 563 | eslint-visitor-keys "^1.1.0" 564 | 565 | eslint-utils@^3.0.0: 566 | version "3.0.0" 567 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 568 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 569 | dependencies: 570 | eslint-visitor-keys "^2.0.0" 571 | 572 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 573 | version "1.3.0" 574 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 575 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 576 | 577 | eslint-visitor-keys@^2.0.0: 578 | version "2.1.0" 579 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 580 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 581 | 582 | eslint@~7.30.0: 583 | version "7.30.0" 584 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.30.0.tgz#6d34ab51aaa56112fd97166226c9a97f505474f8" 585 | integrity sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg== 586 | dependencies: 587 | "@babel/code-frame" "7.12.11" 588 | "@eslint/eslintrc" "^0.4.2" 589 | "@humanwhocodes/config-array" "^0.5.0" 590 | ajv "^6.10.0" 591 | chalk "^4.0.0" 592 | cross-spawn "^7.0.2" 593 | debug "^4.0.1" 594 | doctrine "^3.0.0" 595 | enquirer "^2.3.5" 596 | escape-string-regexp "^4.0.0" 597 | eslint-scope "^5.1.1" 598 | eslint-utils "^2.1.0" 599 | eslint-visitor-keys "^2.0.0" 600 | espree "^7.3.1" 601 | esquery "^1.4.0" 602 | esutils "^2.0.2" 603 | fast-deep-equal "^3.1.3" 604 | file-entry-cache "^6.0.1" 605 | functional-red-black-tree "^1.0.1" 606 | glob-parent "^5.1.2" 607 | globals "^13.6.0" 608 | ignore "^4.0.6" 609 | import-fresh "^3.0.0" 610 | imurmurhash "^0.1.4" 611 | is-glob "^4.0.0" 612 | js-yaml "^3.13.1" 613 | json-stable-stringify-without-jsonify "^1.0.1" 614 | levn "^0.4.1" 615 | lodash.merge "^4.6.2" 616 | minimatch "^3.0.4" 617 | natural-compare "^1.4.0" 618 | optionator "^0.9.1" 619 | progress "^2.0.0" 620 | regexpp "^3.1.0" 621 | semver "^7.2.1" 622 | strip-ansi "^6.0.0" 623 | strip-json-comments "^3.1.0" 624 | table "^6.0.9" 625 | text-table "^0.2.0" 626 | v8-compile-cache "^2.0.3" 627 | 628 | espree@^7.3.0, espree@^7.3.1: 629 | version "7.3.1" 630 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 631 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 632 | dependencies: 633 | acorn "^7.4.0" 634 | acorn-jsx "^5.3.1" 635 | eslint-visitor-keys "^1.3.0" 636 | 637 | esprima@2.7.x, esprima@^2.7.1: 638 | version "2.7.3" 639 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 640 | integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= 641 | 642 | esprima@^4.0.0: 643 | version "4.0.1" 644 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 645 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 646 | 647 | esquery@^1.4.0: 648 | version "1.4.0" 649 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 650 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 651 | dependencies: 652 | estraverse "^5.1.0" 653 | 654 | esrecurse@^4.3.0: 655 | version "4.3.0" 656 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 657 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 658 | dependencies: 659 | estraverse "^5.2.0" 660 | 661 | estraverse@^1.9.1: 662 | version "1.9.3" 663 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" 664 | integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= 665 | 666 | estraverse@^4.1.1: 667 | version "4.3.0" 668 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 669 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 670 | 671 | estraverse@^5.1.0, estraverse@^5.2.0: 672 | version "5.3.0" 673 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 674 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 675 | 676 | esutils@^2.0.2: 677 | version "2.0.3" 678 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 679 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 680 | 681 | extend@~3.0.2: 682 | version "3.0.2" 683 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 684 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 685 | 686 | extsprintf@1.3.0: 687 | version "1.3.0" 688 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 689 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 690 | 691 | extsprintf@^1.2.0: 692 | version "1.4.1" 693 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" 694 | integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== 695 | 696 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 697 | version "3.1.3" 698 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 699 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 700 | 701 | fast-glob@^3.1.1: 702 | version "3.2.7" 703 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" 704 | integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== 705 | dependencies: 706 | "@nodelib/fs.stat" "^2.0.2" 707 | "@nodelib/fs.walk" "^1.2.3" 708 | glob-parent "^5.1.2" 709 | merge2 "^1.3.0" 710 | micromatch "^4.0.4" 711 | 712 | fast-json-stable-stringify@^2.0.0: 713 | version "2.1.0" 714 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 715 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 716 | 717 | fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: 718 | version "2.0.6" 719 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 720 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 721 | 722 | fastq@^1.6.0: 723 | version "1.13.0" 724 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 725 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 726 | dependencies: 727 | reusify "^1.0.4" 728 | 729 | file-entry-cache@^6.0.1: 730 | version "6.0.1" 731 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 732 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 733 | dependencies: 734 | flat-cache "^3.0.4" 735 | 736 | filename-reserved-regex@^2.0.0: 737 | version "2.0.0" 738 | resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" 739 | integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= 740 | 741 | filenamify@^4.3.0: 742 | version "4.3.0" 743 | resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-4.3.0.tgz#62391cb58f02b09971c9d4f9d63b3cf9aba03106" 744 | integrity sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg== 745 | dependencies: 746 | filename-reserved-regex "^2.0.0" 747 | strip-outer "^1.0.1" 748 | trim-repeated "^1.0.0" 749 | 750 | fill-range@^7.0.1: 751 | version "7.0.1" 752 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 753 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 754 | dependencies: 755 | to-regex-range "^5.0.1" 756 | 757 | find-cache-dir@^3.3.1: 758 | version "3.3.2" 759 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" 760 | integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== 761 | dependencies: 762 | commondir "^1.0.1" 763 | make-dir "^3.0.2" 764 | pkg-dir "^4.1.0" 765 | 766 | find-up@^4.0.0: 767 | version "4.1.0" 768 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 769 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 770 | dependencies: 771 | locate-path "^5.0.0" 772 | path-exists "^4.0.0" 773 | 774 | flat-cache@^3.0.4: 775 | version "3.0.4" 776 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 777 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 778 | dependencies: 779 | flatted "^3.1.0" 780 | rimraf "^3.0.2" 781 | 782 | flatted@^3.1.0: 783 | version "3.2.4" 784 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" 785 | integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== 786 | 787 | forever-agent@~0.6.1: 788 | version "0.6.1" 789 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 790 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 791 | 792 | form-data@~2.3.2: 793 | version "2.3.3" 794 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 795 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 796 | dependencies: 797 | asynckit "^0.4.0" 798 | combined-stream "^1.0.6" 799 | mime-types "^2.1.12" 800 | 801 | fs-extra@^8.1.0: 802 | version "8.1.0" 803 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 804 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 805 | dependencies: 806 | graceful-fs "^4.2.0" 807 | jsonfile "^4.0.0" 808 | universalify "^0.1.0" 809 | 810 | fs.realpath@^1.0.0: 811 | version "1.0.0" 812 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 813 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 814 | 815 | function-bind@^1.1.1: 816 | version "1.1.1" 817 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 818 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 819 | 820 | functional-red-black-tree@^1.0.1: 821 | version "1.0.1" 822 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 823 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 824 | 825 | getpass@^0.1.1: 826 | version "0.1.7" 827 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 828 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 829 | dependencies: 830 | assert-plus "^1.0.0" 831 | 832 | gh-pages@^3.2.3: 833 | version "3.2.3" 834 | resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-3.2.3.tgz#897e5f15e111f42af57d21d430b83e5cdf29472c" 835 | integrity sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg== 836 | dependencies: 837 | async "^2.6.1" 838 | commander "^2.18.0" 839 | email-addresses "^3.0.1" 840 | filenamify "^4.3.0" 841 | find-cache-dir "^3.3.1" 842 | fs-extra "^8.1.0" 843 | globby "^6.1.0" 844 | 845 | glob-parent@^5.1.2: 846 | version "5.1.2" 847 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 848 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 849 | dependencies: 850 | is-glob "^4.0.1" 851 | 852 | glob@7.1.2: 853 | version "7.1.2" 854 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 855 | integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== 856 | dependencies: 857 | fs.realpath "^1.0.0" 858 | inflight "^1.0.4" 859 | inherits "2" 860 | minimatch "^3.0.4" 861 | once "^1.3.0" 862 | path-is-absolute "^1.0.0" 863 | 864 | glob@^5.0.15: 865 | version "5.0.15" 866 | resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" 867 | integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= 868 | dependencies: 869 | inflight "^1.0.4" 870 | inherits "2" 871 | minimatch "2 || 3" 872 | once "^1.3.0" 873 | path-is-absolute "^1.0.0" 874 | 875 | glob@^7.0.0, glob@^7.0.3, glob@^7.1.3, glob@^7.2.0: 876 | version "7.2.0" 877 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 878 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 879 | dependencies: 880 | fs.realpath "^1.0.0" 881 | inflight "^1.0.4" 882 | inherits "2" 883 | minimatch "^3.0.4" 884 | once "^1.3.0" 885 | path-is-absolute "^1.0.0" 886 | 887 | globals@^13.6.0, globals@^13.9.0: 888 | version "13.12.0" 889 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" 890 | integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== 891 | dependencies: 892 | type-fest "^0.20.2" 893 | 894 | globby@^11.0.3: 895 | version "11.0.4" 896 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" 897 | integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== 898 | dependencies: 899 | array-union "^2.1.0" 900 | dir-glob "^3.0.1" 901 | fast-glob "^3.1.1" 902 | ignore "^5.1.4" 903 | merge2 "^1.3.0" 904 | slash "^3.0.0" 905 | 906 | globby@^6.1.0: 907 | version "6.1.0" 908 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" 909 | integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= 910 | dependencies: 911 | array-union "^1.0.1" 912 | glob "^7.0.3" 913 | object-assign "^4.0.1" 914 | pify "^2.0.0" 915 | pinkie-promise "^2.0.0" 916 | 917 | graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: 918 | version "4.2.8" 919 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" 920 | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== 921 | 922 | growl@1.10.3: 923 | version "1.10.3" 924 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" 925 | integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== 926 | 927 | handlebars@^4.0.1: 928 | version "4.7.7" 929 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" 930 | integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== 931 | dependencies: 932 | minimist "^1.2.5" 933 | neo-async "^2.6.0" 934 | source-map "^0.6.1" 935 | wordwrap "^1.0.0" 936 | optionalDependencies: 937 | uglify-js "^3.1.4" 938 | 939 | har-schema@^2.0.0: 940 | version "2.0.0" 941 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 942 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 943 | 944 | har-validator@~5.1.3: 945 | version "5.1.5" 946 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" 947 | integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== 948 | dependencies: 949 | ajv "^6.12.3" 950 | har-schema "^2.0.0" 951 | 952 | has-flag@^1.0.0: 953 | version "1.0.0" 954 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 955 | integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= 956 | 957 | has-flag@^2.0.0: 958 | version "2.0.0" 959 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 960 | integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= 961 | 962 | has-flag@^3.0.0: 963 | version "3.0.0" 964 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 965 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 966 | 967 | has-flag@^4.0.0: 968 | version "4.0.0" 969 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 970 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 971 | 972 | has@^1.0.3: 973 | version "1.0.3" 974 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 975 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 976 | dependencies: 977 | function-bind "^1.1.1" 978 | 979 | he@1.1.1: 980 | version "1.1.1" 981 | resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" 982 | integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= 983 | 984 | http-signature@~1.2.0: 985 | version "1.2.0" 986 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 987 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 988 | dependencies: 989 | assert-plus "^1.0.0" 990 | jsprim "^1.2.2" 991 | sshpk "^1.7.0" 992 | 993 | ieee754@^1.2.1: 994 | version "1.2.1" 995 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 996 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 997 | 998 | ignore@^4.0.6: 999 | version "4.0.6" 1000 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1001 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 1002 | 1003 | ignore@^5.1.4, ignore@^5.1.8: 1004 | version "5.1.9" 1005 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" 1006 | integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== 1007 | 1008 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1009 | version "3.3.0" 1010 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1011 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1012 | dependencies: 1013 | parent-module "^1.0.0" 1014 | resolve-from "^4.0.0" 1015 | 1016 | imurmurhash@^0.1.4: 1017 | version "0.1.4" 1018 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1019 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1020 | 1021 | inflight@^1.0.4: 1022 | version "1.0.6" 1023 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1024 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1025 | dependencies: 1026 | once "^1.3.0" 1027 | wrappy "1" 1028 | 1029 | inherits@2: 1030 | version "2.0.4" 1031 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1032 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1033 | 1034 | interpret@^1.0.0: 1035 | version "1.4.0" 1036 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" 1037 | integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== 1038 | 1039 | is-core-module@^2.2.0: 1040 | version "2.8.0" 1041 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" 1042 | integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== 1043 | dependencies: 1044 | has "^1.0.3" 1045 | 1046 | is-extglob@^2.1.1: 1047 | version "2.1.1" 1048 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1049 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1050 | 1051 | is-fullwidth-code-point@^3.0.0: 1052 | version "3.0.0" 1053 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1054 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1055 | 1056 | is-glob@^4.0.0, is-glob@^4.0.1: 1057 | version "4.0.3" 1058 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1059 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1060 | dependencies: 1061 | is-extglob "^2.1.1" 1062 | 1063 | is-number@^7.0.0: 1064 | version "7.0.0" 1065 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1066 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1067 | 1068 | is-typedarray@~1.0.0: 1069 | version "1.0.0" 1070 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1071 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1072 | 1073 | isexe@^2.0.0: 1074 | version "2.0.0" 1075 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1076 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1077 | 1078 | isstream@~0.1.2: 1079 | version "0.1.2" 1080 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1081 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 1082 | 1083 | istanbul@~0.4.5: 1084 | version "0.4.5" 1085 | resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" 1086 | integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs= 1087 | dependencies: 1088 | abbrev "1.0.x" 1089 | async "1.x" 1090 | escodegen "1.8.x" 1091 | esprima "2.7.x" 1092 | glob "^5.0.15" 1093 | handlebars "^4.0.1" 1094 | js-yaml "3.x" 1095 | mkdirp "0.5.x" 1096 | nopt "3.x" 1097 | once "1.x" 1098 | resolve "1.1.x" 1099 | supports-color "^3.1.0" 1100 | which "^1.1.1" 1101 | wordwrap "^1.0.0" 1102 | 1103 | js-tokens@^4.0.0: 1104 | version "4.0.0" 1105 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1106 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1107 | 1108 | js-yaml@3.x, js-yaml@^3.13.1: 1109 | version "3.14.1" 1110 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 1111 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 1112 | dependencies: 1113 | argparse "^1.0.7" 1114 | esprima "^4.0.0" 1115 | 1116 | js2xmlparser@~3.0.0: 1117 | version "3.0.0" 1118 | resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-3.0.0.tgz#3fb60eaa089c5440f9319f51760ccd07e2499733" 1119 | integrity sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM= 1120 | dependencies: 1121 | xmlcreate "^1.0.1" 1122 | 1123 | jsbn@~0.1.0: 1124 | version "0.1.1" 1125 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1126 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 1127 | 1128 | jsdoc@~3.5.5: 1129 | version "3.5.5" 1130 | resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.5.5.tgz#484521b126e81904d632ff83ec9aaa096708fa4d" 1131 | integrity sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg== 1132 | dependencies: 1133 | babylon "7.0.0-beta.19" 1134 | bluebird "~3.5.0" 1135 | catharsis "~0.8.9" 1136 | escape-string-regexp "~1.0.5" 1137 | js2xmlparser "~3.0.0" 1138 | klaw "~2.0.0" 1139 | marked "~0.3.6" 1140 | mkdirp "~0.5.1" 1141 | requizzle "~0.2.1" 1142 | strip-json-comments "~2.0.1" 1143 | taffydb "2.6.2" 1144 | underscore "~1.8.3" 1145 | 1146 | json-schema-traverse@^0.4.1: 1147 | version "0.4.1" 1148 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1149 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1150 | 1151 | json-schema-traverse@^1.0.0: 1152 | version "1.0.0" 1153 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 1154 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 1155 | 1156 | json-schema@0.4.0: 1157 | version "0.4.0" 1158 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" 1159 | integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== 1160 | 1161 | json-stable-stringify-without-jsonify@^1.0.1: 1162 | version "1.0.1" 1163 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1164 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1165 | 1166 | json-stringify-safe@~5.0.1: 1167 | version "5.0.1" 1168 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1169 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 1170 | 1171 | jsonc-parser@^3.0.0: 1172 | version "3.0.0" 1173 | resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" 1174 | integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== 1175 | 1176 | jsonfile@^4.0.0: 1177 | version "4.0.0" 1178 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1179 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 1180 | optionalDependencies: 1181 | graceful-fs "^4.1.6" 1182 | 1183 | jsprim@^1.2.2: 1184 | version "1.4.2" 1185 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" 1186 | integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== 1187 | dependencies: 1188 | assert-plus "1.0.0" 1189 | extsprintf "1.3.0" 1190 | json-schema "0.4.0" 1191 | verror "1.10.0" 1192 | 1193 | klaw@~2.0.0: 1194 | version "2.0.0" 1195 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-2.0.0.tgz#59c128e0dc5ce410201151194eeb9cbf858650f6" 1196 | integrity sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY= 1197 | dependencies: 1198 | graceful-fs "^4.1.9" 1199 | 1200 | lcov-parse@^1.0.0: 1201 | version "1.0.0" 1202 | resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" 1203 | integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= 1204 | 1205 | levn@^0.4.1: 1206 | version "0.4.1" 1207 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1208 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1209 | dependencies: 1210 | prelude-ls "^1.2.1" 1211 | type-check "~0.4.0" 1212 | 1213 | levn@~0.3.0: 1214 | version "0.3.0" 1215 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1216 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 1217 | dependencies: 1218 | prelude-ls "~1.1.2" 1219 | type-check "~0.3.2" 1220 | 1221 | locate-path@^5.0.0: 1222 | version "5.0.0" 1223 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1224 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1225 | dependencies: 1226 | p-locate "^4.1.0" 1227 | 1228 | lodash.merge@^4.6.2: 1229 | version "4.6.2" 1230 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1231 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1232 | 1233 | lodash.truncate@^4.4.2: 1234 | version "4.4.2" 1235 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 1236 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 1237 | 1238 | lodash@^4.17.14, lodash@~4.17.5: 1239 | version "4.17.21" 1240 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1241 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1242 | 1243 | log-driver@^1.2.7: 1244 | version "1.2.7" 1245 | resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" 1246 | integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== 1247 | 1248 | lru-cache@^6.0.0: 1249 | version "6.0.0" 1250 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1251 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1252 | dependencies: 1253 | yallist "^4.0.0" 1254 | 1255 | lunr@^2.3.9: 1256 | version "2.3.9" 1257 | resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" 1258 | integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== 1259 | 1260 | make-dir@^3.0.2: 1261 | version "3.1.0" 1262 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1263 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1264 | dependencies: 1265 | semver "^6.0.0" 1266 | 1267 | marked@^3.0.8: 1268 | version "3.0.8" 1269 | resolved "https://registry.yarnpkg.com/marked/-/marked-3.0.8.tgz#2785f0dc79cbdc6034be4bb4f0f0a396bd3f8aeb" 1270 | integrity sha512-0gVrAjo5m0VZSJb4rpL59K1unJAMb/hm8HRXqasD8VeC8m91ytDPMritgFSlKonfdt+rRYYpP/JfLxgIX8yoSw== 1271 | 1272 | marked@~0.3.6: 1273 | version "0.3.19" 1274 | resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" 1275 | integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== 1276 | 1277 | merge2@^1.3.0: 1278 | version "1.4.1" 1279 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1280 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1281 | 1282 | micromatch@^4.0.4: 1283 | version "4.0.4" 1284 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 1285 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 1286 | dependencies: 1287 | braces "^3.0.1" 1288 | picomatch "^2.2.3" 1289 | 1290 | mime-db@1.51.0: 1291 | version "1.51.0" 1292 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" 1293 | integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== 1294 | 1295 | mime-types@^2.1.12, mime-types@~2.1.19: 1296 | version "2.1.34" 1297 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" 1298 | integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== 1299 | dependencies: 1300 | mime-db "1.51.0" 1301 | 1302 | "minimatch@2 || 3", minimatch@^3.0.4: 1303 | version "3.0.4" 1304 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1305 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1306 | dependencies: 1307 | brace-expansion "^1.1.7" 1308 | 1309 | minimist@0.0.8: 1310 | version "0.0.8" 1311 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1312 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1313 | 1314 | minimist@^1.2.3, minimist@^1.2.5: 1315 | version "1.2.5" 1316 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1317 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1318 | 1319 | mkdirp@0.5.1: 1320 | version "0.5.1" 1321 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1322 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1323 | dependencies: 1324 | minimist "0.0.8" 1325 | 1326 | mkdirp@0.5.x, mkdirp@~0.5.1: 1327 | version "0.5.5" 1328 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 1329 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 1330 | dependencies: 1331 | minimist "^1.2.5" 1332 | 1333 | mocha@~5.0.4: 1334 | version "5.0.5" 1335 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.0.5.tgz#e228e3386b9387a4710007a641f127b00be44b52" 1336 | integrity sha512-3MM3UjZ5p8EJrYpG7s+29HAI9G7sTzKEe4+w37Dg0QP7qL4XGsV+Q2xet2cE37AqdgN1OtYQB6Vl98YiPV3PgA== 1337 | dependencies: 1338 | browser-stdout "1.3.1" 1339 | commander "2.11.0" 1340 | debug "3.1.0" 1341 | diff "3.5.0" 1342 | escape-string-regexp "1.0.5" 1343 | glob "7.1.2" 1344 | growl "1.10.3" 1345 | he "1.1.1" 1346 | mkdirp "0.5.1" 1347 | supports-color "4.4.0" 1348 | 1349 | ms@2.0.0: 1350 | version "2.0.0" 1351 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1352 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1353 | 1354 | ms@2.1.2: 1355 | version "2.1.2" 1356 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1357 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1358 | 1359 | natural-compare@^1.4.0: 1360 | version "1.4.0" 1361 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1362 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1363 | 1364 | neo-async@^2.6.0: 1365 | version "2.6.2" 1366 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 1367 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 1368 | 1369 | nopt@3.x: 1370 | version "3.0.6" 1371 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 1372 | integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= 1373 | dependencies: 1374 | abbrev "1" 1375 | 1376 | oauth-sign@~0.9.0: 1377 | version "0.9.0" 1378 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 1379 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 1380 | 1381 | object-assign@^4.0.1: 1382 | version "4.1.1" 1383 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1384 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1385 | 1386 | once@1.x, once@^1.3.0: 1387 | version "1.4.0" 1388 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1389 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1390 | dependencies: 1391 | wrappy "1" 1392 | 1393 | optionator@^0.8.1: 1394 | version "0.8.3" 1395 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 1396 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== 1397 | dependencies: 1398 | deep-is "~0.1.3" 1399 | fast-levenshtein "~2.0.6" 1400 | levn "~0.3.0" 1401 | prelude-ls "~1.1.2" 1402 | type-check "~0.3.2" 1403 | word-wrap "~1.2.3" 1404 | 1405 | optionator@^0.9.1: 1406 | version "0.9.1" 1407 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1408 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1409 | dependencies: 1410 | deep-is "^0.1.3" 1411 | fast-levenshtein "^2.0.6" 1412 | levn "^0.4.1" 1413 | prelude-ls "^1.2.1" 1414 | type-check "^0.4.0" 1415 | word-wrap "^1.2.3" 1416 | 1417 | p-limit@^2.2.0: 1418 | version "2.3.0" 1419 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1420 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1421 | dependencies: 1422 | p-try "^2.0.0" 1423 | 1424 | p-locate@^4.1.0: 1425 | version "4.1.0" 1426 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1427 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1428 | dependencies: 1429 | p-limit "^2.2.0" 1430 | 1431 | p-try@^2.0.0: 1432 | version "2.2.0" 1433 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1434 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1435 | 1436 | parent-module@^1.0.0: 1437 | version "1.0.1" 1438 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1439 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1440 | dependencies: 1441 | callsites "^3.0.0" 1442 | 1443 | path-exists@^4.0.0: 1444 | version "4.0.0" 1445 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1446 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1447 | 1448 | path-is-absolute@^1.0.0: 1449 | version "1.0.1" 1450 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1451 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1452 | 1453 | path-key@^3.1.0: 1454 | version "3.1.1" 1455 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1456 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1457 | 1458 | path-parse@^1.0.6: 1459 | version "1.0.7" 1460 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1461 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1462 | 1463 | path-type@^4.0.0: 1464 | version "4.0.0" 1465 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1466 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1467 | 1468 | performance-now@^2.1.0: 1469 | version "2.1.0" 1470 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1471 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 1472 | 1473 | picomatch@^2.2.3: 1474 | version "2.3.0" 1475 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 1476 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 1477 | 1478 | pify@^2.0.0: 1479 | version "2.3.0" 1480 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1481 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1482 | 1483 | pinkie-promise@^2.0.0: 1484 | version "2.0.1" 1485 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1486 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= 1487 | dependencies: 1488 | pinkie "^2.0.0" 1489 | 1490 | pinkie@^2.0.0: 1491 | version "2.0.4" 1492 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1493 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= 1494 | 1495 | pkg-dir@^4.1.0: 1496 | version "4.2.0" 1497 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1498 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1499 | dependencies: 1500 | find-up "^4.0.0" 1501 | 1502 | prelude-ls@^1.2.1: 1503 | version "1.2.1" 1504 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1505 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1506 | 1507 | prelude-ls@~1.1.2: 1508 | version "1.1.2" 1509 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1510 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 1511 | 1512 | progress@^2.0.0: 1513 | version "2.0.3" 1514 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1515 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1516 | 1517 | psl@^1.1.28: 1518 | version "1.8.0" 1519 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 1520 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 1521 | 1522 | punycode@^2.1.0, punycode@^2.1.1: 1523 | version "2.1.1" 1524 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1525 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1526 | 1527 | qs@~6.5.2: 1528 | version "6.5.2" 1529 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 1530 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 1531 | 1532 | queue-microtask@^1.2.2: 1533 | version "1.2.3" 1534 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1535 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1536 | 1537 | rechoir@^0.6.2: 1538 | version "0.6.2" 1539 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 1540 | integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= 1541 | dependencies: 1542 | resolve "^1.1.6" 1543 | 1544 | regexpp@^3.1.0: 1545 | version "3.2.0" 1546 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1547 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1548 | 1549 | request@^2.88.2: 1550 | version "2.88.2" 1551 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 1552 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 1553 | dependencies: 1554 | aws-sign2 "~0.7.0" 1555 | aws4 "^1.8.0" 1556 | caseless "~0.12.0" 1557 | combined-stream "~1.0.6" 1558 | extend "~3.0.2" 1559 | forever-agent "~0.6.1" 1560 | form-data "~2.3.2" 1561 | har-validator "~5.1.3" 1562 | http-signature "~1.2.0" 1563 | is-typedarray "~1.0.0" 1564 | isstream "~0.1.2" 1565 | json-stringify-safe "~5.0.1" 1566 | mime-types "~2.1.19" 1567 | oauth-sign "~0.9.0" 1568 | performance-now "^2.1.0" 1569 | qs "~6.5.2" 1570 | safe-buffer "^5.1.2" 1571 | tough-cookie "~2.5.0" 1572 | tunnel-agent "^0.6.0" 1573 | uuid "^3.3.2" 1574 | 1575 | require-from-string@^2.0.2: 1576 | version "2.0.2" 1577 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1578 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1579 | 1580 | requizzle@~0.2.1: 1581 | version "0.2.3" 1582 | resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded" 1583 | integrity sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ== 1584 | dependencies: 1585 | lodash "^4.17.14" 1586 | 1587 | resolve-from@^4.0.0: 1588 | version "4.0.0" 1589 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1590 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1591 | 1592 | resolve@1.1.x: 1593 | version "1.1.7" 1594 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 1595 | integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= 1596 | 1597 | resolve@^1.1.6: 1598 | version "1.20.0" 1599 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 1600 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 1601 | dependencies: 1602 | is-core-module "^2.2.0" 1603 | path-parse "^1.0.6" 1604 | 1605 | reusify@^1.0.4: 1606 | version "1.0.4" 1607 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1608 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1609 | 1610 | rimraf@^3.0.2: 1611 | version "3.0.2" 1612 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1613 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1614 | dependencies: 1615 | glob "^7.1.3" 1616 | 1617 | run-parallel@^1.1.9: 1618 | version "1.2.0" 1619 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1620 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1621 | dependencies: 1622 | queue-microtask "^1.2.2" 1623 | 1624 | safe-buffer@^5.0.1, safe-buffer@^5.1.2: 1625 | version "5.2.1" 1626 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1627 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1628 | 1629 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 1630 | version "2.1.2" 1631 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1632 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1633 | 1634 | semver@^6.0.0: 1635 | version "6.3.0" 1636 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1637 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1638 | 1639 | semver@^7.2.1, semver@^7.3.5: 1640 | version "7.3.5" 1641 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 1642 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 1643 | dependencies: 1644 | lru-cache "^6.0.0" 1645 | 1646 | shebang-command@^2.0.0: 1647 | version "2.0.0" 1648 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1649 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1650 | dependencies: 1651 | shebang-regex "^3.0.0" 1652 | 1653 | shebang-regex@^3.0.0: 1654 | version "3.0.0" 1655 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1656 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1657 | 1658 | shelljs@^0.8.4: 1659 | version "0.8.4" 1660 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" 1661 | integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== 1662 | dependencies: 1663 | glob "^7.0.0" 1664 | interpret "^1.0.0" 1665 | rechoir "^0.6.2" 1666 | 1667 | shiki@^0.9.12: 1668 | version "0.9.15" 1669 | resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.9.15.tgz#2481b46155364f236651319d2c18e329ead6fa44" 1670 | integrity sha512-/Y0z9IzhJ8nD9nbceORCqu6NgT9X6I8Fk8c3SICHI5NbZRLdZYFaB233gwct9sU0vvSypyaL/qaKvzyQGJBZSw== 1671 | dependencies: 1672 | jsonc-parser "^3.0.0" 1673 | vscode-oniguruma "^1.6.1" 1674 | vscode-textmate "5.2.0" 1675 | 1676 | shx@^0.3.3: 1677 | version "0.3.3" 1678 | resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.3.tgz#681a88c7c10db15abe18525349ed474f0f1e7b9f" 1679 | integrity sha512-nZJ3HFWVoTSyyB+evEKjJ1STiixGztlqwKLTUNV5KqMWtGey9fTd4KU1gdZ1X9BV6215pswQ/Jew9NsuS/fNDA== 1680 | dependencies: 1681 | minimist "^1.2.3" 1682 | shelljs "^0.8.4" 1683 | 1684 | slash@^3.0.0: 1685 | version "3.0.0" 1686 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1687 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1688 | 1689 | slice-ansi@^4.0.0: 1690 | version "4.0.0" 1691 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1692 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1693 | dependencies: 1694 | ansi-styles "^4.0.0" 1695 | astral-regex "^2.0.0" 1696 | is-fullwidth-code-point "^3.0.0" 1697 | 1698 | source-map@^0.6.1: 1699 | version "0.6.1" 1700 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1701 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1702 | 1703 | source-map@~0.2.0: 1704 | version "0.2.0" 1705 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" 1706 | integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50= 1707 | dependencies: 1708 | amdefine ">=0.0.4" 1709 | 1710 | sprintf-js@~1.0.2: 1711 | version "1.0.3" 1712 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1713 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1714 | 1715 | sshpk@^1.7.0: 1716 | version "1.16.1" 1717 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 1718 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 1719 | dependencies: 1720 | asn1 "~0.2.3" 1721 | assert-plus "^1.0.0" 1722 | bcrypt-pbkdf "^1.0.0" 1723 | dashdash "^1.12.0" 1724 | ecc-jsbn "~0.1.1" 1725 | getpass "^0.1.1" 1726 | jsbn "~0.1.0" 1727 | safer-buffer "^2.0.2" 1728 | tweetnacl "~0.14.0" 1729 | 1730 | string-width@^4.2.3: 1731 | version "4.2.3" 1732 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1733 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1734 | dependencies: 1735 | emoji-regex "^8.0.0" 1736 | is-fullwidth-code-point "^3.0.0" 1737 | strip-ansi "^6.0.1" 1738 | 1739 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1740 | version "6.0.1" 1741 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1742 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1743 | dependencies: 1744 | ansi-regex "^5.0.1" 1745 | 1746 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1747 | version "3.1.1" 1748 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1749 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1750 | 1751 | strip-json-comments@~2.0.1: 1752 | version "2.0.1" 1753 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1754 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1755 | 1756 | strip-outer@^1.0.1: 1757 | version "1.0.1" 1758 | resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" 1759 | integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== 1760 | dependencies: 1761 | escape-string-regexp "^1.0.2" 1762 | 1763 | supports-color@4.4.0: 1764 | version "4.4.0" 1765 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" 1766 | integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== 1767 | dependencies: 1768 | has-flag "^2.0.0" 1769 | 1770 | supports-color@^3.1.0: 1771 | version "3.2.3" 1772 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 1773 | integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= 1774 | dependencies: 1775 | has-flag "^1.0.0" 1776 | 1777 | supports-color@^5.3.0: 1778 | version "5.5.0" 1779 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1780 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1781 | dependencies: 1782 | has-flag "^3.0.0" 1783 | 1784 | supports-color@^7.1.0: 1785 | version "7.2.0" 1786 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1787 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1788 | dependencies: 1789 | has-flag "^4.0.0" 1790 | 1791 | table@^6.0.9: 1792 | version "6.7.5" 1793 | resolved "https://registry.yarnpkg.com/table/-/table-6.7.5.tgz#f04478c351ef3d8c7904f0e8be90a1b62417d238" 1794 | integrity sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw== 1795 | dependencies: 1796 | ajv "^8.0.1" 1797 | lodash.truncate "^4.4.2" 1798 | slice-ansi "^4.0.0" 1799 | string-width "^4.2.3" 1800 | strip-ansi "^6.0.1" 1801 | 1802 | taffydb@2.6.2: 1803 | version "2.6.2" 1804 | resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" 1805 | integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= 1806 | 1807 | text-table@^0.2.0: 1808 | version "0.2.0" 1809 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1810 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1811 | 1812 | to-regex-range@^5.0.1: 1813 | version "5.0.1" 1814 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1815 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1816 | dependencies: 1817 | is-number "^7.0.0" 1818 | 1819 | tough-cookie@~2.5.0: 1820 | version "2.5.0" 1821 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 1822 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 1823 | dependencies: 1824 | psl "^1.1.28" 1825 | punycode "^2.1.1" 1826 | 1827 | trim-repeated@^1.0.0: 1828 | version "1.0.0" 1829 | resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" 1830 | integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= 1831 | dependencies: 1832 | escape-string-regexp "^1.0.2" 1833 | 1834 | tslib@^1.8.1: 1835 | version "1.14.1" 1836 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1837 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1838 | 1839 | tsutils@^3.21.0: 1840 | version "3.21.0" 1841 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 1842 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 1843 | dependencies: 1844 | tslib "^1.8.1" 1845 | 1846 | tunnel-agent@^0.6.0: 1847 | version "0.6.0" 1848 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1849 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 1850 | dependencies: 1851 | safe-buffer "^5.0.1" 1852 | 1853 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1854 | version "0.14.5" 1855 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1856 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 1857 | 1858 | type-check@^0.4.0, type-check@~0.4.0: 1859 | version "0.4.0" 1860 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1861 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1862 | dependencies: 1863 | prelude-ls "^1.2.1" 1864 | 1865 | type-check@~0.3.2: 1866 | version "0.3.2" 1867 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1868 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 1869 | dependencies: 1870 | prelude-ls "~1.1.2" 1871 | 1872 | type-fest@^0.20.2: 1873 | version "0.20.2" 1874 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1875 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1876 | 1877 | typedoc@^0.22.10: 1878 | version "0.22.10" 1879 | resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.22.10.tgz#221e1a2b17bcb71817ef027dc4c4969d572e7620" 1880 | integrity sha512-hQYZ4WtoMZ61wDC6w10kxA42+jclWngdmztNZsDvIz7BMJg7F2xnT+uYsUa7OluyKossdFj9E9Ye4QOZKTy8SA== 1881 | dependencies: 1882 | glob "^7.2.0" 1883 | lunr "^2.3.9" 1884 | marked "^3.0.8" 1885 | minimatch "^3.0.4" 1886 | shiki "^0.9.12" 1887 | 1888 | typescript@^4.4.4: 1889 | version "4.5.4" 1890 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" 1891 | integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== 1892 | 1893 | uglify-js@^3.1.4: 1894 | version "3.14.5" 1895 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.5.tgz#cdabb7d4954231d80cb4a927654c4655e51f4859" 1896 | integrity sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ== 1897 | 1898 | underscore@~1.8.3: 1899 | version "1.8.3" 1900 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" 1901 | integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= 1902 | 1903 | universalify@^0.1.0: 1904 | version "0.1.2" 1905 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1906 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1907 | 1908 | uri-js@^4.2.2: 1909 | version "4.4.1" 1910 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1911 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1912 | dependencies: 1913 | punycode "^2.1.0" 1914 | 1915 | uuid@^3.3.2: 1916 | version "3.4.0" 1917 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 1918 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 1919 | 1920 | v8-compile-cache@^2.0.3: 1921 | version "2.3.0" 1922 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1923 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1924 | 1925 | verror@1.10.0: 1926 | version "1.10.0" 1927 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 1928 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 1929 | dependencies: 1930 | assert-plus "^1.0.0" 1931 | core-util-is "1.0.2" 1932 | extsprintf "^1.2.0" 1933 | 1934 | vscode-oniguruma@^1.6.1: 1935 | version "1.6.1" 1936 | resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz#2bf4dfcfe3dd2e56eb549a3068c8ee39e6c30ce5" 1937 | integrity sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ== 1938 | 1939 | vscode-textmate@5.2.0: 1940 | version "5.2.0" 1941 | resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e" 1942 | integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== 1943 | 1944 | which@^1.1.1: 1945 | version "1.3.1" 1946 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1947 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1948 | dependencies: 1949 | isexe "^2.0.0" 1950 | 1951 | which@^2.0.1: 1952 | version "2.0.2" 1953 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1954 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1955 | dependencies: 1956 | isexe "^2.0.0" 1957 | 1958 | word-wrap@^1.2.3, word-wrap@~1.2.3: 1959 | version "1.2.3" 1960 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1961 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1962 | 1963 | wordwrap@^1.0.0: 1964 | version "1.0.0" 1965 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1966 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 1967 | 1968 | wrappy@1: 1969 | version "1.0.2" 1970 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1971 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1972 | 1973 | xmlcreate@^1.0.1: 1974 | version "1.0.2" 1975 | resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-1.0.2.tgz#fa6bf762a60a413fb3dd8f4b03c5b269238d308f" 1976 | integrity sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8= 1977 | 1978 | yallist@^4.0.0: 1979 | version "4.0.0" 1980 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1981 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1982 | --------------------------------------------------------------------------------