diff --git a/.mocharc.js b/.mocharc.js new file mode 100644 index 0000000..4e40bc7 --- /dev/null +++ b/.mocharc.js @@ -0,0 +1,14 @@ +module.exports = { + "extension": [ + "js", "ts" + ], + "spec": [ + "test/**/*.js", + "test/**/*.ts", + ], + "require": [ + "ts-node/register", + "source-map-support/register" + ], + "ui": "tdd", +} diff --git a/package.json b/package.json index 63773ee..fc4b54f 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,8 @@ "buffer": "~6.0.3" }, "devDependencies": { + "@types/mocha": "^10.0.10", + "@types/node": "^22.10.2", "@typescript-eslint/eslint-plugin": "^4.28.2", "@typescript-eslint/parser": "^4.28.2", "coveralls": "^3.0.0", @@ -33,23 +35,24 @@ "istanbul": "~0.4.5", "jsdoc": "~3.5.5", "lodash": "~4.17.5", - "mocha": "~5.0.4", + "mocha": "^11.0.1", "shx": "^0.3.3", + "ts-node": "^10.9.2", "typedoc": "^0.22.10", - "typescript": "^4.4.4" + "typescript": "^5.7.2" }, "engines": { "node": ">=5.10" }, "scripts": { "build": "tsc", - "coverage": "npm run build && istanbul cover _mocha -- -u tdd", - "coveralls": "npm run build && istanbul cover _mocha --report lcovonly -- -u tdd && cat ./coverage/lcov.info | coveralls", + "coverage": "npm run build && istanbul cover _mocha", + "coveralls": "npm run build && istanbul cover _mocha --report lcovonly && cat ./coverage/lcov.info | coveralls", "docs": "shx rm -rf docs && typedoc && shx cp .nojekyll docs/", "eslint": "eslint src/ --ext .ts", "jsdoc": "jsdoc -c jsdoc/conf.json", "pages": "gh-pages --dist docs --dotfiles", "prepare": "npm run build", - "test": "npm run build && mocha -u tdd" + "test": "npm run build && mocha" } } diff --git a/src/Layout.ts b/src/Layout.ts index 6490716..e2b386e 100644 --- a/src/Layout.ts +++ b/src/Layout.ts @@ -134,13 +134,6 @@ import { Buffer } from 'buffer'; -/* Convenience type alias for objects. - * - * @ignore */ -export interface LayoutObject { - [key: string]: any; -} - /* Check if a value is a Uint8Array. * * @ignore */ @@ -174,12 +167,12 @@ export function uint8ArrayToBuffer(b: Uint8Array): Buffer { * * @abstract */ -export abstract class Layout { +export abstract class Layout { span: number; - property?: string; + property: P; boundConstructor_?: any; - constructor(span: number, property?: string) { + constructor(span: number, property?: P) { if (!Number.isInteger(span)) { throw new TypeError('span must be an integer'); } @@ -203,7 +196,7 @@ export abstract class Layout { * be treated as padding: it will not be mutated by {@link * Layout#encode|encode} nor represented as a property in the * decoded Object. */ - this.property = property; + this.property = property as P; } /** Function to create an Object into which decoded properties will @@ -221,8 +214,8 @@ export abstract class Layout { * * See {@link bindConstructorLayout}. */ - makeDestinationObject(): LayoutObject { - return {}; + makeDestinationObject(): T { + return {} as T; // it should be implemented properly in the derived class } /** @@ -302,8 +295,8 @@ export abstract class Layout { * @returns {Layout} - the copy with {@link Layout#property|property} * set to `property`. */ - replicate(property: string): this { - const rv = Object.create(this.constructor.prototype) as this; + replicate(property: NewP): Layout { + const rv = Object.create(this.constructor.prototype) as Layout; Object.assign(rv, this); rv.property = property; return rv; @@ -329,7 +322,7 @@ export abstract class Layout { * * @return {(Object|undefined)} */ - fromArray(values: any[]): LayoutObject | undefined { + fromArray(values: any[]): T | undefined { return undefined; } } @@ -426,7 +419,7 @@ export function bindConstructorLayout(Class: any, layout: Layout): void { * @abstract * @augments {Layout} */ -export abstract class ExternalLayout extends Layout { +export abstract class ExternalLayout

extends Layout { /** * Return `true` iff the external layout decodes to an unsigned * integer layout. @@ -458,14 +451,14 @@ export abstract class ExternalLayout extends Layout { * * @augments {ExternalLayout} */ -export class GreedyCount extends ExternalLayout { +export class GreedyCount

extends ExternalLayout

{ elementSpan: number; - constructor(elementSpan = 1, property?: string) { + constructor(elementSpan = 1, property?: P) { if ((!Number.isInteger(elementSpan)) || (0 >= elementSpan)) { throw new TypeError('elementSpan must be a (positive) integer'); } - super(-1, property); + super(-1, property as P); /** The layout for individual elements of the sequence. The value * must be a positive integer. If not provided, the value will be @@ -511,10 +504,11 @@ export class GreedyCount extends ExternalLayout { * * @augments {Layout} */ -export class OffsetLayout extends ExternalLayout { - layout: Layout; +export class OffsetLayout

extends ExternalLayout

{ + layout: Layout; offset: number; - constructor(layout: Layout, offset = 0, property?: string) { + + constructor(layout: Layout, offset = 0, property?: P) { if (!(layout instanceof Layout)) { throw new TypeError('layout must be a Layout'); } @@ -523,7 +517,7 @@ export class OffsetLayout extends ExternalLayout { throw new TypeError('offset must be integer or undefined'); } - super(layout.span, property || layout.property); + super(layout.span, property ?? layout.property); /** The subordinated layout. */ this.layout = layout; @@ -570,8 +564,8 @@ export class OffsetLayout extends ExternalLayout { * * @augments {Layout} */ -export class UInt extends Layout { - constructor(span: number, property?: string) { +export class UInt

extends Layout { + constructor(span: number, property?: P) { super(span, property); if (6 < this.span) { throw new RangeError('span must not exceed 6 bytes'); @@ -606,8 +600,8 @@ export class UInt extends Layout { * * @augments {Layout} */ -export class UIntBE extends Layout { - constructor(span: number, property?: string) { +export class UIntBE

extends Layout { + constructor(span: number, property?: P) { super(span, property); if (6 < this.span) { throw new RangeError('span must not exceed 6 bytes'); @@ -642,8 +636,8 @@ export class UIntBE extends Layout { * * @augments {Layout} */ -export class Int extends Layout { - constructor(span: number, property?: string) { +export class Int

extends Layout { + constructor(span: number, property?: P) { super(span, property); if (6 < this.span) { throw new RangeError('span must not exceed 6 bytes'); @@ -678,8 +672,8 @@ export class Int extends Layout { * * @augments {Layout} */ -export class IntBE extends Layout { - constructor(span: number, property?: string) { +export class IntBE

extends Layout { + constructor(span: number, property?: P) { super(span, property); if (6 < this.span) { throw new RangeError('span must not exceed 6 bytes'); @@ -707,6 +701,7 @@ function divmodInt64(src: number): { hi32: number; lo32: number; } { const lo32 = src - (hi32 * V2E32); return {hi32, lo32}; } + /* Reconstruct Number from quotient and non-negative remainder */ function roundedInt64(hi32: number, lo32: number): number { return hi32 * V2E32 + lo32; @@ -723,8 +718,8 @@ function roundedInt64(hi32: number, lo32: number): number { * * @augments {Layout} */ -export class NearUInt64 extends Layout { - constructor(property?: string) { +export class NearUInt64

extends Layout { + constructor(property?: P) { super(8, property); } @@ -757,8 +752,8 @@ export class NearUInt64 extends Layout { * * @augments {Layout} */ -export class NearUInt64BE extends Layout { - constructor(property?: string) { +export class NearUInt64BE

extends Layout { + constructor(property?: P) { super(8, property); } @@ -791,8 +786,8 @@ export class NearUInt64BE extends Layout { * * @augments {Layout} */ -export class NearInt64 extends Layout { - constructor(property?: string) { +export class NearInt64

extends Layout { + constructor(property?: P) { super(8, property); } @@ -825,8 +820,8 @@ export class NearInt64 extends Layout { * * @augments {Layout} */ -export class NearInt64BE extends Layout { - constructor(property?: string) { +export class NearInt64BE

extends Layout { + constructor(property?: P) { super(8, property); } @@ -858,8 +853,8 @@ export class NearInt64BE extends Layout { * * @augments {Layout} */ -export class Float extends Layout { - constructor(property?: string) { +export class Float

extends Layout { + constructor(property?: P) { super(4, property); } @@ -885,8 +880,8 @@ export class Float extends Layout { * * @augments {Layout} */ -export class FloatBE extends Layout { - constructor(property?: string) { +export class FloatBE

extends Layout { + constructor(property?: P) { super(4, property); } @@ -912,8 +907,8 @@ export class FloatBE extends Layout { * * @augments {Layout} */ -export class Double extends Layout { - constructor(property?: string) { +export class Double

extends Layout { + constructor(property?: P) { super(8, property); } @@ -939,8 +934,8 @@ export class Double extends Layout { * * @augments {Layout} */ -export class DoubleBE extends Layout { - constructor(property?: string) { +export class DoubleBE

extends Layout { + constructor(property?: P) { super(8, property); } @@ -973,16 +968,16 @@ export class DoubleBE extends Layout { * * @augments {Layout} */ -export class Sequence extends Layout { - elementLayout: Layout; - count: number | ExternalLayout; +export class Sequence extends Layout { + elementLayout: Layout; + count: number | ExternalLayout; - constructor(elementLayout: Layout, count: number | ExternalLayout, property?: string) { + constructor(elementLayout: Layout, count: number | ExternalLayout, property?: P) { if (!(elementLayout instanceof Layout)) { throw new TypeError('elementLayout must be a Layout'); } if (!(((count instanceof ExternalLayout) && count.isCount()) - || (Number.isInteger(count) && (0 <= count)))) { + || ('number' === typeof count && Number.isInteger(count) && (0 <= count)))) { throw new TypeError('count must be non-negative integer ' + 'or an unsigned integer ExternalLayout'); } @@ -1065,6 +1060,18 @@ export class Sequence extends Layout { } } +type StructObj[]> = + T extends Layout[] + ? { + [K in Extract]: Extract< + T[number], + Layout + > extends Layout + ? V + : never; + } + : never; + /** * Represent a contiguous sequence of arbitrary layout elements as an * Object. @@ -1097,17 +1104,18 @@ export class Sequence extends Layout { * * @augments {Layout} */ -export class Structure extends Layout { - fields: Layout[]; +export class Structure[], P extends string | undefined = string | undefined> + extends Layout, P> { + fields: T; decodePrefixes: boolean; - constructor(fields: Layout[], property?: string, decodePrefixes?: boolean) { + constructor(fields: T, property?: P | boolean, decodePrefixes?: boolean) { if (!(Array.isArray(fields) - && fields.reduce((acc, v) => acc && (v instanceof Layout), true))) { + && fields + .reduce((acc: boolean, v: Layout | any) => acc && (v instanceof Layout), true))) { throw new TypeError('fields must be array of Layout instances'); } - if (('boolean' === typeof property) - && (undefined === decodePrefixes)) { + if (('boolean' === typeof property)) { decodePrefixes = property; property = undefined; } @@ -1171,12 +1179,12 @@ export class Structure extends Layout { } /** @override */ - decode(b: Uint8Array, offset = 0): T { + decode(b: Uint8Array, offset = 0): StructObj { checkUint8Array(b); - const dest = this.makeDestinationObject() as T; + const dest = this.makeDestinationObject() as StructObj; for (const fd of this.fields) { if (undefined !== fd.property) { - dest[fd.property as keyof T] = fd.decode(b, offset); + dest[fd.property as keyof StructObj] = fd.decode(b, offset); } offset += fd.getSpan(b, offset); if (this.decodePrefixes @@ -1192,7 +1200,7 @@ export class Structure extends Layout { * If `src` is missing a property for a member with a defined {@link * Layout#property|property} the corresponding region of the buffer is * left unmodified. */ - encode(src: T, b: Uint8Array, offset = 0): number { + encode(src: StructObj, b: Uint8Array, offset = 0): number { const firstOffset = offset; let lastOffset = 0; let lastWrote = 0; @@ -1200,7 +1208,7 @@ export class Structure extends Layout { let span = fd.span; lastWrote = (0 < span) ? span : 0; if (undefined !== fd.property) { - const fv = src[fd.property as keyof T]; + const fv = src[fd.property as keyof StructObj]; if (undefined !== fv) { lastWrote = fd.encode(fv, b, offset); if (0 > span) { @@ -1221,12 +1229,12 @@ export class Structure extends Layout { } /** @override */ - fromArray(values: any[]): LayoutObject { + fromArray(values: any[]): StructObj { const dest = this.makeDestinationObject(); for (const fd of this.fields) { if ((undefined !== fd.property) && (0 < values.length)) { - dest[fd.property] = values.shift(); + dest[fd.property as keyof StructObj] = values.shift(); } } return dest; @@ -1240,13 +1248,13 @@ export class Structure extends Layout { * @return {Layout} - the layout associated with `property`, or * undefined if there is no such property. */ - layoutFor(property: string): Layout | undefined { + layoutFor(property: string): Layout | undefined { if ('string' !== typeof property) { throw new TypeError('property must be string'); } for (const fd of this.fields) { if (fd.property === property) { - return fd; + return fd as Layout; } } return undefined; @@ -1296,9 +1304,10 @@ export class Structure extends Layout { * * @abstract */ -export class UnionDiscriminator { - property: string; - constructor(property: string) { +export class UnionDiscriminator { + property: P; + + constructor(property: P) { /** The {@link Layout#property|property} to be used when the * discriminator is referenced in isolation (generally when {@link * Union#decode|Union decode} cannot delegate to a specific @@ -1340,9 +1349,9 @@ export class UnionDiscriminator { * * @augments {UnionDiscriminator} */ -export class UnionLayoutDiscriminator extends UnionDiscriminator { - layout: ExternalLayout; - constructor(layout: ExternalLayout, property?: string) { +export class UnionLayoutDiscriminator

extends UnionDiscriminator { + layout: ExternalLayout; + constructor(layout: ExternalLayout, property?: P) { if (!((layout instanceof ExternalLayout) && layout.isCount())) { throw new TypeError('layout must be an unsigned integer ExternalLayout'); @@ -1425,24 +1434,25 @@ export class UnionLayoutDiscriminator extends UnionDiscriminator { * * @augments {Layout} */ -export class Union extends Layout { - // `property` is assigned in the Layout constructor - // @ts-ignore - property: string; - discriminator: UnionDiscriminator; +export class Union< + P extends string | undefined = string | undefined, + D extends string = string, + DLP extends string = string, +> extends Layout { + discriminator: UnionDiscriminator; usesPrefixDiscriminator: boolean; - defaultLayout: Layout | null; - registry: {[key: number]: VariantLayout}; + defaultLayout?: Layout; + registry: {[key: number]: VariantLayout}; - getSourceVariant: (src: LayoutObject) => VariantLayout | undefined; - configGetSourceVariant: (getSourceVariant: (src: LayoutObject) => VariantLayout | undefined) => void; + getSourceVariant: (src: any) => VariantLayout | undefined; + configGetSourceVariant: (getSourceVariant: (src: any) => VariantLayout | undefined) => void; constructor( - discr: UInt | UIntBE | ExternalLayout | UnionDiscriminator, - defaultLayout?: Layout | null, - property?: string + discr: UInt | UIntBE | ExternalLayout | UnionDiscriminator, + defaultLayout?: Layout | null, + property?: P ) { - let discriminator: UnionDiscriminator; + let discriminator: UnionDiscriminator; if ((discr instanceof UInt) || (discr instanceof UIntBE)) { discriminator = new UnionLayoutDiscriminator(new OffsetLayout(discr)); @@ -1455,19 +1465,18 @@ export class Union extends Layout { } else { discriminator = discr; } - if (undefined === defaultLayout) { - defaultLayout = null; + if (null === defaultLayout) { + defaultLayout = undefined; } - if (!((null === defaultLayout) - || (defaultLayout instanceof Layout))) { + if (!(!defaultLayout || (defaultLayout instanceof Layout))) { throw new TypeError('defaultLayout must be null or a Layout'); } - if (null !== defaultLayout) { + if (defaultLayout) { if (0 > defaultLayout.span) { throw new Error('defaultLayout must have constant span'); } if (undefined === defaultLayout.property) { - defaultLayout = defaultLayout.replicate('content'); + defaultLayout = defaultLayout.replicate('content') as any; } } @@ -1480,7 +1489,7 @@ export class Union extends Layout { span = defaultLayout.span; if ((0 <= span) && ((discr instanceof UInt) || (discr instanceof UIntBE))) { - span += (discriminator as UnionLayoutDiscriminator).layout.span; + span += (discriminator as UnionLayoutDiscriminator).layout.span; } } super(span, property); @@ -1510,7 +1519,7 @@ export class Union extends Layout { * structurally equivalent to the second component of {@link * Union#layout|layout} but may have a different property * name. */ - this.defaultLayout = defaultLayout; + this.defaultLayout = defaultLayout as Layout; /** A registry of allowed variants. * @@ -1606,7 +1615,7 @@ export class Union extends Layout { * @throws {Error} - if `src` cannot be associated with a default or * registered variant. */ - defaultGetSourceVariant(src: LayoutObject): VariantLayout | undefined { + defaultGetSourceVariant(src: any): VariantLayout | undefined { if (Object.prototype.hasOwnProperty.call(src, this.discriminator.property)) { if (this.defaultLayout && this.defaultLayout.property && Object.prototype.hasOwnProperty.call(src, this.defaultLayout.property)) { @@ -1635,8 +1644,8 @@ export class Union extends Layout { * value is an instance of that variant, with no explicit * discriminator. Otherwise the {@link Union#defaultLayout|default * layout} is used to decode the content. */ - decode(b: Uint8Array, offset = 0): LayoutObject { - let dest: LayoutObject; + decode(b: Uint8Array, offset = 0): any { + let dest: any; const dlo = this.discriminator; const discr = dlo.decode(b, offset); const clo = this.registry[discr]; @@ -1644,7 +1653,7 @@ export class Union extends Layout { const defaultLayout = this.defaultLayout; let contentOffset = 0; if (this.usesPrefixDiscriminator) { - contentOffset = (dlo as UnionLayoutDiscriminator).layout.span; + contentOffset = (dlo as UnionLayoutDiscriminator).layout.span; } dest = this.makeDestinationObject(); dest[dlo.property] = discr; @@ -1663,7 +1672,7 @@ export class Union extends Layout { * {@link Union#defaultLayout|default layout}. To encode variants * use the appropriate variant-specific {@link VariantLayout#encode} * method. */ - encode(src: LayoutObject, b: Uint8Array, offset = 0): number { + encode(src: any, b: Uint8Array, offset = 0): number { const vlo = this.getSourceVariant(src); if (undefined === vlo) { const dlo = this.discriminator; @@ -1672,7 +1681,7 @@ export class Union extends Layout { const clo = this.defaultLayout!; let contentOffset = 0; if (this.usesPrefixDiscriminator) { - contentOffset = (dlo as UnionLayoutDiscriminator).layout.span; + contentOffset = (dlo as UnionLayoutDiscriminator).layout.span; } dlo.encode(src[dlo.property], b, offset); // clo.property is not undefined when vlo is undefined @@ -1695,8 +1704,9 @@ export class Union extends Layout { * Layout#property|property}. * * @return {VariantLayout} */ - addVariant(variant: number, layout: Layout, property: string): VariantLayout { - const rv = new VariantLayout(this, variant, layout, property); + addVariant>(variant: number, layout: Layout | null, property?: string): + VariantLayout { + const rv = new VariantLayout(this, variant, layout, property); this.registry[variant] = rv; return rv; } @@ -1715,7 +1725,7 @@ export class Union extends Layout { * * @return {({VariantLayout}|undefined)} */ - getVariant(vb: Uint8Array | number, offset = 0): VariantLayout | undefined { + getVariant(vb: Uint8Array | number, offset = 0): VariantLayout | undefined { let variant: number; if (vb instanceof Uint8Array) { variant = this.discriminator.decode(vb, offset); @@ -1755,22 +1765,23 @@ export class Union extends Layout { * * @augments {Layout} */ -export class VariantLayout extends Layout { - // `property` is assigned in the Layout constructor - // @ts-ignore - property: string; - union: Union; +export class VariantLayout< + T extends {[K in UDP | VP]: unknown} = any, + UP extends string | undefined = string | undefined, + UDP extends string = string, + VP extends string = string, +> extends Layout { + union: Union; variant: number; - layout: Layout | null; - constructor(union: Union, variant: number, layout: Layout | null, property: string) { + layout: Layout | null; + constructor(union: Union, variant: number, layout: Layout | null | VP, property?: VP) { if (!(union instanceof Union)) { throw new TypeError('union must be a Union'); } if ((!Number.isInteger(variant)) || (0 > variant)) { throw new TypeError('variant must be a (non-negative) integer'); } - if (('string' === typeof layout) - && (undefined === property)) { + if ('string' === typeof layout) { property = layout; layout = null; } @@ -1778,7 +1789,7 @@ export class VariantLayout extends Layout { if (!(layout instanceof Layout)) { throw new TypeError('layout must be a Layout'); } - if ((null !== union.defaultLayout) + if ((union.defaultLayout) && (0 <= layout.span) && (layout.span > union.defaultLayout.span)) { throw new Error('variant span exceeds span of containing union'); @@ -1791,7 +1802,7 @@ export class VariantLayout extends Layout { if (0 > union.span) { span = layout ? layout.span : 0; if ((0 <= span) && union.usesPrefixDiscriminator) { - span += (union.discriminator as UnionLayoutDiscriminator).layout.span; + span += (union.discriminator as UnionLayoutDiscriminator).layout.span; } } super(span, property); @@ -1820,7 +1831,7 @@ export class VariantLayout extends Layout { } let contentOffset = 0; if (this.union.usesPrefixDiscriminator) { - contentOffset = (this.union.discriminator as UnionLayoutDiscriminator).layout.span; + contentOffset = (this.union.discriminator as UnionLayoutDiscriminator).layout.span; } /* Span is defined solely by the variant (and prefix discriminator) */ let span = 0; @@ -1830,40 +1841,39 @@ export class VariantLayout extends Layout { return contentOffset + span; } - /** @override */ - decode(b: Uint8Array, offset = 0): LayoutObject { + decode(b: Uint8Array, offset = 0): T { const dest = this.makeDestinationObject(); if (this !== this.union.getVariant(b, offset)) { throw new Error('variant mismatch'); } let contentOffset = 0; if (this.union.usesPrefixDiscriminator) { - contentOffset = (this.union.discriminator as UnionLayoutDiscriminator).layout.span; + contentOffset = (this.union.discriminator as UnionLayoutDiscriminator).layout.span; } if (this.layout) { - dest[this.property] = this.layout.decode(b, offset + contentOffset); + dest[this.property!] = this.layout.decode(b, offset + contentOffset); } else if (this.property) { - dest[this.property] = true; + dest[this.property!] = true as unknown as any; } else if (this.union.usesPrefixDiscriminator) { - dest[this.union.discriminator.property] = this.variant; + dest[this.union.discriminator.property] = this.variant as unknown as any; } return dest; } /** @override */ - encode(src: LayoutObject, b: Uint8Array, offset = 0): number { + encode(src: T, b: Uint8Array, offset = 0): number { let contentOffset = 0; if (this.union.usesPrefixDiscriminator) { - contentOffset = (this.union.discriminator as UnionLayoutDiscriminator).layout.span; + contentOffset = (this.union.discriminator as UnionLayoutDiscriminator).layout.span; } if (this.layout - && (!Object.prototype.hasOwnProperty.call(src, this.property))) { + && (!Object.prototype.hasOwnProperty.call(src, this.property!))) { throw new TypeError('variant lacks property ' + this.property); } this.union.discriminator.encode(this.variant, b, offset); let span = contentOffset; if (this.layout) { - this.layout.encode(src[this.property], b, offset + contentOffset); + this.layout.encode(src[this.property!], b, offset + contentOffset); span += this.layout.getSpan(b, offset + contentOffset); if ((0 <= this.union.span) && (span > this.union.span)) { @@ -1875,7 +1885,7 @@ export class VariantLayout extends Layout { /** Delegate {@link Layout#fromArray|fromArray} to {@link * VariantLayout#layout|layout}. */ - fromArray(values: any[]): LayoutObject | undefined { + fromArray(values: any[]): T | undefined { if (this.layout) { return this.layout.fromArray(values); } @@ -1895,6 +1905,16 @@ function fixBitwiseResult(v: number): number { } return v; } +export type BitStructObj = T extends BitField[] + ? { + [K in Exclude, ''>]: Extract< + T[number], + BitField + > extends BitField + ? number + : any; + } + : any /** * Contain a sequence of bit fields as an unsigned integer. @@ -1927,15 +1947,16 @@ function fixBitwiseResult(v: number): number { * * @augments {Layout} */ -export class BitStructure extends Layout { - fields: BitField[]; - word: UInt | UIntBE; +export class BitStructure[], P extends string | undefined = string | undefined> + extends Layout, P> { + fields: T; + word: UInt | UIntBE; msb: boolean; _packedSetValue: (v: number) => this; _packedGetValue: () => number; - constructor(word: UInt | UIntBE, msb: boolean | string, property?: string) { + constructor(word: UInt | UIntBE, msb: boolean | P, property?: P) { if (!((word instanceof UInt) || (word instanceof UIntBE))) { throw new TypeError('word must be a UInt or UIntBE layout'); @@ -1970,7 +1991,7 @@ export class BitStructure extends Layout { * **NOTE** The array remains mutable to allow fields to be {@link * BitStructure#addField|added} after construction. Users should * not manipulate the content of this property.*/ - this.fields = []; + this.fields = [] as unknown as T; /* Storage for the value. Capture a variable instead of using an * instance property because we don't want anything to change the @@ -1986,13 +2007,13 @@ export class BitStructure extends Layout { } /** @override */ - decode(b: Uint8Array, offset = 0): LayoutObject { + decode(b: Uint8Array, offset = 0): BitStructObj { const dest = this.makeDestinationObject(); const value = this.word.decode(b, offset); this._packedSetValue(value); for (const fd of this.fields) { if (undefined !== fd.property) { - dest[fd.property] = fd.decode(b); + dest[fd.property as unknown as keyof BitStructObj] = fd.decode(b); } } return dest; @@ -2003,7 +2024,7 @@ export class BitStructure extends Layout { * If `src` is missing a property for a member with a defined {@link * Layout#property|property} the corresponding region of the packed * value is left unmodified. Unused bits are also left unmodified. */ - encode(src: LayoutObject, b: Uint8Array, offset = 0): number { + encode(src: BitStructObj, b: Uint8Array, offset = 0): number { const value = this.word.decode(b, offset); this._packedSetValue(value); for (const fd of this.fields) { @@ -2026,7 +2047,7 @@ export class BitStructure extends Layout { * Layout#property|property}. * * @return {BitField} */ - addField(bits: number, property: string): BitField { + addField(bits: number, property: Prop): BitField { const bf = new BitField(this, bits, property); this.fields.push(bf); return bf; @@ -2041,7 +2062,7 @@ export class BitStructure extends Layout { * @return {Boolean} */ // `Boolean` conflicts with the native primitive type // eslint-disable-next-line @typescript-eslint/ban-types - addBoolean(property: string): Boolean { + addBoolean(property: Prop): Boolean { // This is my Boolean, not the Javascript one. const bf = new Boolean(this, property); this.fields.push(bf); @@ -2056,7 +2077,7 @@ export class BitStructure extends Layout { * @return {BitField} - the field associated with `property`, or * undefined if there is no such property. */ - fieldFor(property: string): BitField | undefined { + fieldFor(property: X): BitField | undefined { if ('string' !== typeof property) { throw new TypeError('property must be string'); } @@ -2089,14 +2110,15 @@ export class BitStructure extends Layout { * @param {string} [property] - initializer for {@link * Layout#property|property}. */ -export class BitField { - container: BitStructure; +export class BitField

{ + container: BitStructure; bits: number; valueMask: number; start: number; wordMask: number; - property: string; - constructor(container: BitStructure, bits: number, property: string) { + property: P; + + constructor(container: BitStructure[], any>, bits: number, property: P) { if (!(container instanceof BitStructure)) { throw new TypeError('container must be a BitStructure'); } @@ -2155,7 +2177,11 @@ export class BitField { /** Store a value into the corresponding subsequence of the containing * bit field. */ - decode(b?: Uint8Array, offset?: number): unknown { + decode(b?: Uint8Array, offset?: number): Type { + return this._decode(b, offset) as unknown as Type + } + + protected _decode(b?: Uint8Array, offset?: number): number { const word = this.container._packedGetValue(); const wordValue = fixBitwiseResult(word & this.wordMask); const value = wordValue >>> this.start; @@ -2167,7 +2193,11 @@ export class BitField { * * **NOTE** This is not a specialization of {@link * Layout#encode|Layout.encode} and there is no return value. */ - encode(value: unknown): void { + encode(value: Type): void { + return this._encode(value as unknown as number); + } + + protected _encode(value: number): void { if ('number' !== typeof value || !Number.isInteger(value) || (value !== fixBitwiseResult(value & this.valueMask))) { @@ -2198,8 +2228,8 @@ export class BitField { * @augments {BitField} */ /* eslint-disable no-extend-native */ -export class Boolean extends BitField { - constructor(container: BitStructure, property: string) { +export class Boolean

extends BitField { + constructor(container: BitStructure[], any>, property: P) { super(container, 1, property); } @@ -2207,7 +2237,7 @@ export class Boolean extends BitField { * * @returns {boolean} */ decode(b?: Uint8Array, offset?: number): boolean { - return !!super.decode(b, offset); + return !!super._decode(b, offset); } /** @override */ @@ -2216,7 +2246,7 @@ export class Boolean extends BitField { // BitField requires integer values value = +value; } - super.encode(value); + super._encode(value); } } /* eslint-enable no-extend-native */ @@ -2235,11 +2265,11 @@ export class Boolean extends BitField { * * @augments {Layout} */ -export class Blob extends Layout { - length: number | ExternalLayout; - constructor(length: number | ExternalLayout, property?: string) { +export class Blob

extends Layout { + length: number | ExternalLayout; + constructor(length: number | ExternalLayout, property?: P) { if (!(((length instanceof ExternalLayout) && length.isCount()) - || (Number.isInteger(length) && (0 <= length)))) { + || ('number' === typeof length && Number.isInteger(length) && (0 <= length)))) { throw new TypeError('length must be positive integer ' + 'or an unsigned integer ExternalLayout'); } @@ -2262,7 +2292,7 @@ export class Blob extends Layout { getSpan(b: Uint8Array, offset?: number): number { let span = this.span; if (0 > span) { - span = (this.length as ExternalLayout).decode(b, offset); + span = (this.length as ExternalLayout).decode(b, offset); } return span; } @@ -2271,7 +2301,7 @@ export class Blob extends Layout { decode(b: Uint8Array, offset = 0): Uint8Array { let span = this.span; if (0 > span) { - span = (this.length as ExternalLayout).decode(b, offset); + span = (this.length as ExternalLayout).decode(b, offset); } return uint8ArrayToBuffer(b).slice(offset, offset + span); } @@ -2315,8 +2345,8 @@ export class Blob extends Layout { * * @augments {Layout} */ -export class CString extends Layout { - constructor(property?: string) { +export class CString

extends Layout { + constructor(property?: P) { super(-1, property); } @@ -2375,9 +2405,14 @@ export class CString extends Layout { * * @augments {Layout} */ -export class UTF8 extends Layout { +export class UTF8

extends Layout { maxSpan: number; - constructor(maxSpan?: number | string, property?: string) { + + constructor(maxSpan: number) + constructor(property: P) + constructor(maxSpan: number, property: P) + constructor(maxSpan: number | P | undefined, property: P | undefined) + constructor(maxSpan?: number | P, property?: P) { if (('string' === typeof maxSpan) && (undefined === property)) { property = maxSpan; maxSpan = undefined; @@ -2418,7 +2453,7 @@ export class UTF8 extends Layout { } /** @override */ - encode(src: string | LayoutObject, b: Uint8Array, offset = 0): number { + encode(src: string, b: Uint8Array, offset = 0): number { /* Must force this to a string, lest it be a number and the * "utf8-encoding" below actually allocate a buffer of length * src */ @@ -2458,9 +2493,10 @@ export class UTF8 extends Layout { * * @augments {Layout} */ -export class Constant extends Layout { +export class Constant extends Layout { value: T; - constructor(value: T, property?: string) { + + constructor(value: T, property?: P) { super(0, property); /** The value produced by this constant when the layout is {@link @@ -2488,157 +2524,305 @@ export class Constant extends Layout { } /** Factory for {@link GreedyCount}. */ -export const greedy = ((elementSpan: number, property?: string): GreedyCount => new GreedyCount(elementSpan, property)); +export const greedy: { + (elementSpan: number): GreedyCount, +

(elementSpan: number, property: P): GreedyCount

, +} =

(elementSpan: number, property?: P): GreedyCount

=> + new GreedyCount(elementSpan, property); /** Factory for {@link OffsetLayout}. */ -export const offset = ((layout: Layout, offset?: number, property?: string): OffsetLayout => - new OffsetLayout(layout, offset, property)); +export const offset: { +

(layout: Layout, offset?: number): OffsetLayout

, +

(layout: Layout, offset: number, property: P): OffsetLayout

, + (layout: Layout, offset?: number): OffsetLayout, +} =

(layout: Layout, offset?: number, property?: P): OffsetLayout

=> + new OffsetLayout

(layout, offset, property); /** Factory for {@link UInt|unsigned int layouts} spanning one * byte. */ -export const u8 = ((property?: string): UInt => new UInt(1, property)); +export const u8: { + (): UInt +

(property: P): UInt

+} =

(property?: P): UInt

=> new UInt(1, property); /** Factory for {@link UInt|little-endian unsigned int layouts} * spanning two bytes. */ -export const u16 = ((property?: string): UInt => new UInt(2, property)); +export const u16: { + (): UInt +

(property: P): UInt

+} =

(property?: P): UInt

=> new UInt(2, property); /** Factory for {@link UInt|little-endian unsigned int layouts} * spanning three bytes. */ -export const u24 = ((property?: string): UInt => new UInt(3, property)); +export const u24: { + (): UInt +

(property: P): UInt

+} =

(property?: P): UInt

=> new UInt(3, property); /** Factory for {@link UInt|little-endian unsigned int layouts} * spanning four bytes. */ -export const u32 = ((property?: string): UInt => new UInt(4, property)); +export const u32: { + (): UInt +

(property: P): UInt

+} =

(property?: P): UInt

=> new UInt(4, property); /** Factory for {@link UInt|little-endian unsigned int layouts} * spanning five bytes. */ -export const u40 = ((property?: string): UInt => new UInt(5, property)); +export const u40: { + (): UInt +

(property: P): UInt

+} =

(property?: P): UInt

=> new UInt(5, property); /** Factory for {@link UInt|little-endian unsigned int layouts} * spanning six bytes. */ -export const u48 = ((property?: string): UInt => new UInt(6, property)); +export const u48: { + (): UInt +

(property: P): UInt

+} =

(property?: P): UInt

=> new UInt(6, property); /** Factory for {@link NearUInt64|little-endian unsigned int * layouts} interpreted as Numbers. */ -export const nu64 = ((property?: string): NearUInt64 => new NearUInt64(property)); +export const nu64: { + (): NearUInt64 +

(property: P): NearUInt64

+} =

(property?: P): NearUInt64

=> new NearUInt64(property); /** Factory for {@link UInt|big-endian unsigned int layouts} * spanning two bytes. */ -export const u16be = ((property?: string): UIntBE => new UIntBE(2, property)); +export const u16be: { + (): UIntBE +

(property: P): UIntBE

+} =

(property?: P): UIntBE

=> new UIntBE(2, property); /** Factory for {@link UInt|big-endian unsigned int layouts} * spanning three bytes. */ -export const u24be = ((property?: string): UIntBE => new UIntBE(3, property)); +export const u24be: { + (): UIntBE +

(property: P): UIntBE

+} =

(property?: P): UIntBE

=> new UIntBE(3, property); /** Factory for {@link UInt|big-endian unsigned int layouts} * spanning four bytes. */ -export const u32be = ((property?: string): UIntBE => new UIntBE(4, property)); +export const u32be: { + (): UIntBE +

(property: P): UIntBE

+} =

(property?: P): UIntBE

=> new UIntBE(4, property); /** Factory for {@link UInt|big-endian unsigned int layouts} * spanning five bytes. */ -export const u40be = ((property?: string): UIntBE => new UIntBE(5, property)); +export const u40be: { + (): UIntBE +

(property: P): UIntBE

+} =

(property?: P): UIntBE

=> new UIntBE(5, property); /** Factory for {@link UInt|big-endian unsigned int layouts} * spanning six bytes. */ -export const u48be = ((property?: string): UIntBE => new UIntBE(6, property)); +export const u48be: { + (): UIntBE +

(property: P): UIntBE

+} =

(property?: P): UIntBE

=> new UIntBE(6, property); /** Factory for {@link NearUInt64BE|big-endian unsigned int * layouts} interpreted as Numbers. */ -export const nu64be = ((property?: string): NearUInt64BE => new NearUInt64BE(property)); +export const nu64be: { + (): NearUInt64BE +

(property: P): NearUInt64BE

+} =

(property?: P): NearUInt64BE

=> new NearUInt64BE(property); /** Factory for {@link Int|signed int layouts} spanning one * byte. */ -export const s8 = ((property?: string): Int => new Int(1, property)); +export const s8: { + (): Int +

(property: P): Int

+} =

(property?: P): Int

=> new Int(1, property); /** Factory for {@link Int|little-endian signed int layouts} * spanning two bytes. */ -export const s16 = ((property?: string): Int => new Int(2, property)); +export const s16: { + (): Int +

(property: P): Int

+} =

(property?: P): Int

=> new Int(2, property); /** Factory for {@link Int|little-endian signed int layouts} * spanning three bytes. */ -export const s24 = ((property?: string): Int => new Int(3, property)); +export const s24: { + (): Int +

(property: P): Int

+} =

(property?: P): Int

=> new Int(3, property); /** Factory for {@link Int|little-endian signed int layouts} * spanning four bytes. */ -export const s32 = ((property?: string): Int => new Int(4, property)); +export const s32: { + (): Int +

(property: P): Int

+} =

(property?: P): Int

=> new Int(4, property); /** Factory for {@link Int|little-endian signed int layouts} * spanning five bytes. */ -export const s40 = ((property?: string): Int => new Int(5, property)); +export const s40: { + (): Int +

(property: P): Int

+} =

(property?: P): Int

=> new Int(5, property); /** Factory for {@link Int|little-endian signed int layouts} * spanning six bytes. */ -export const s48 = ((property?: string): Int => new Int(6, property)); +export const s48: { + (): Int +

(property: P): Int

+} =

(property?: P): Int

=> new Int(6, property); /** Factory for {@link NearInt64|little-endian signed int layouts} * interpreted as Numbers. */ -export const ns64 = ((property?: string): NearInt64 => new NearInt64(property)); +export const ns64: { + (): NearInt64 +

(property: P): NearInt64

+} =

(property?: P): NearInt64

=> new NearInt64(property); /** Factory for {@link Int|big-endian signed int layouts} * spanning two bytes. */ -export const s16be = ((property?: string): IntBE => new IntBE(2, property)); +export const s16be: { + (): IntBE +

(property: P): IntBE

+} =

(property?: P): IntBE

=> new IntBE(2, property); /** Factory for {@link Int|big-endian signed int layouts} * spanning three bytes. */ -export const s24be = ((property?: string): IntBE => new IntBE(3, property)); +export const s24be: { + (): IntBE +

(property: P): IntBE

+} =

(property?: P): IntBE

=> new IntBE(3, property); /** Factory for {@link Int|big-endian signed int layouts} * spanning four bytes. */ -export const s32be = ((property?: string): IntBE => new IntBE(4, property)); +export const s32be: { + (): IntBE +

(property: P): IntBE

+} =

(property?: P): IntBE

=> new IntBE(4, property); /** Factory for {@link Int|big-endian signed int layouts} * spanning five bytes. */ -export const s40be = ((property?: string): IntBE => new IntBE(5, property)); +export const s40be: { + (): IntBE +

(property: P): IntBE

+} =

(property?: P): IntBE

=> new IntBE(5, property); /** Factory for {@link Int|big-endian signed int layouts} * spanning six bytes. */ -export const s48be = ((property?: string): IntBE => new IntBE(6, property)); +export const s48be: { + (): IntBE +

(property: P): IntBE

+} =

(property?: P): IntBE

=> new IntBE(6, property); /** Factory for {@link NearInt64BE|big-endian signed int layouts} * interpreted as Numbers. */ -export const ns64be = ((property?: string): NearInt64BE => new NearInt64BE(property)); +export const ns64be: { + (): NearInt64BE +

(property: P): NearInt64BE

+} =

(property?: P): NearInt64BE

=> new NearInt64BE(property); /** Factory for {@link Float|little-endian 32-bit floating point} values. */ -export const f32 = ((property?: string): Float => new Float(property)); +export const f32: { + (): Float +

(property: P): Float

+} =

(property?: P): Float

=> new Float(property); /** Factory for {@link FloatBE|big-endian 32-bit floating point} values. */ -export const f32be = ((property?: string): FloatBE => new FloatBE(property)); +export const f32be: { + (): FloatBE +

(property: P): FloatBE

+} =

(property?: P): FloatBE

=> new FloatBE(property); /** Factory for {@link Double|little-endian 64-bit floating point} values. */ -export const f64 = ((property?: string): Double => new Double(property)); +export const f64: { + (): Double +

(property: P): Double

+} =

(property?: P): Double

=> new Double(property); /** Factory for {@link DoubleBE|big-endian 64-bit floating point} values. */ -export const f64be = ((property?: string): DoubleBE => new DoubleBE(property)); +export const f64be: { + (): DoubleBE +

(property: P): DoubleBE

+} =

(property?: P): DoubleBE

=> new DoubleBE(property); /** Factory for {@link Structure} values. */ -export const struct = ((fields: Layout[], property?: string, decodePrefixes?: boolean): Structure => - new Structure(fields, property, decodePrefixes)); +export const struct: { + []> + (fields: T): Structure, + [], Property extends string> + (fields: T, property: Property, decodePrefixes?: boolean): Structure, + []> + (fields: T, decodePrefixes: boolean): Structure, +} = [], Property extends string | undefined> + (fields: T, property?: Property | boolean, decodePrefixes?: boolean): Structure => + new Structure(fields, property, decodePrefixes); /** Factory for {@link BitStructure} values. */ -export const bits = ((word: UInt | UIntBE, msb: boolean | string, property?: string): BitStructure => - new BitStructure(word, msb, property)); +export const bits: { + []>(word: UInt | UIntBE, msb?: boolean): BitStructure, + [], P extends string | undefined>(word: UInt | UIntBE, property: P): + BitStructure, + [], P extends string | undefined>( + word: UInt | UIntBE, msb: boolean, property: P): BitStructure, +} = [], P extends string | undefined> + (word: UInt

| UIntBE

, msb: boolean | P, property?: P): BitStructure => + new BitStructure(word, msb, property); /** Factory for {@link Sequence} values. */ -export const seq = ((elementLayout: Layout, count: number | ExternalLayout, property?: string): Sequence => - new Sequence(elementLayout, count, property)); +export const seq: { + (elementLayout: Layout, count: number | ExternalLayout): Sequence, + (elementLayout: Layout, count: number | ExternalLayout, property: P): + Sequence, +} = (elementLayout: Layout, count: number | ExternalLayout, property?: P) + : Sequence => new Sequence(elementLayout, count, property); /** Factory for {@link Union} values. */ -export const union = ((discr: UInt | UIntBE | ExternalLayout | UnionDiscriminator, - defaultLayout?: Layout | null, property?: string): Union => - new Union(discr, defaultLayout, property)); +export const union: { + (discr: UInt | UIntBE | ExternalLayout | UnionDiscriminator, defaultLayout?: null): + Union, + ( + discr: UInt | UIntBE | ExternalLayout | UnionDiscriminator, defaultLayout: null, property: P + ): Union, + ( + discr: UInt | UIntBE | ExternalLayout | UnionDiscriminator, defaultLayout: Layout + ): Union, + ( + discr: UInt | UIntBE | ExternalLayout | UnionDiscriminator, + defaultLayout: Layout, property: P + ): Union +} =

( + discr: UInt | UIntBE | ExternalLayout | UnionDiscriminator, + defaultLayout?: Layout | null, property?: P): Union => { + return new Union(discr, defaultLayout, property); +}; /** Factory for {@link UnionLayoutDiscriminator} values. */ -export const unionLayoutDiscriminator = ((layout: ExternalLayout, property?: string): UnionLayoutDiscriminator => - new UnionLayoutDiscriminator(layout, property)); +export const unionLayoutDiscriminator =

(layout: ExternalLayout, property?: P) + : UnionLayoutDiscriminator

=> new UnionLayoutDiscriminator(layout, property); /** Factory for {@link Blob} values. */ -export const blob = ((length: number | ExternalLayout, property?: string): Blob => new Blob(length, property)); +export const blob: { + (length: number | ExternalLayout): Blob +

(length: number | ExternalLayout, property: P): Blob

+} =

(length: number | ExternalLayout, property?: P) + : Blob

=> new Blob(length, property); /** Factory for {@link CString} values. */ -export const cstr = ((property?: string): CString => new CString(property)); +export const cstr: { + (): CString, +

(property: P): CString

, +} =

(property?: P): CString

=> new CString(property); /** Factory for {@link UTF8} values. */ -export const utf8 = ((maxSpan: number, property?: string): UTF8 => new UTF8(maxSpan, property)); +export const utf8: { + (): UTF8, + (maxSpan: number): UTF8, +

(property: P): UTF8

, +

(maxSpan: number, property: P): UTF8

, +} =

(maxSpan?: number, property?: P): UTF8

=> new UTF8(maxSpan, property); /** Factory for {@link Constant} values. */ -export const constant = ((value: T, property?: string): Constant => new Constant(value, property)); +export const constant: { + (value: T): Constant, + (value: T, property: P): Constant +} = (value: T, property?: P) + : Constant => new Constant(value, property); diff --git a/test/typedExamples.ts b/test/typedExamples.ts new file mode 100644 index 0000000..946b2b8 --- /dev/null +++ b/test/typedExamples.ts @@ -0,0 +1,50 @@ +import * as lo from '../lib/Layout'; +import assert from "assert"; + +suite('Typed Examples', () => { + test('Structure round-trip', () => { + interface TestInterface { + numProp: number, + cstrProp: string, + strProp: string, + arrProp: number[], + } + const layout = lo.struct([ + lo.u16('numProp'), + lo.u16(), + lo.seq(lo.u16(), lo.offset(lo.u16(), -2), 'arrProp'), + lo.cstr('cstrProp'), + lo.utf8('strProp'), + ]) + const o: TestInterface = { + numProp: 3, + strProp: 'hello', + cstrProp: 'world', + arrProp: [64], + } + const buf = Buffer.alloc(17); + layout.encode(o, buf); + const encoded = '0300 0100 4000 776f726c6400 68656c6c6f'.replace(/ /g, '') + assert.strictEqual(buf.toString('hex'), encoded) + const o2 = layout.decode(buf, 0) + assert.deepStrictEqual(o, o2) + }) + + test('Option union round-trip', () => { + const counter = lo.u32('counter') + const option = lo.union(lo.u8('is_some')) + option.addVariant(0, null, 'none') + option.addVariant(1, lo.struct([counter]), 'some') + + const noneObj = {'none': true} + const buf = Buffer.alloc(100) + option.encode(noneObj, buf) + const noneDecode = option.decode(buf, 0) + assert.deepStrictEqual(noneObj, noneDecode) + + const someObj = {'some': {'counter': 10}} + option.encode(someObj, buf) + const someDecode = option.decode(buf, 0) + assert.deepStrictEqual(someObj, someDecode) + }) +}) diff --git a/yarn.lock b/yarn.lock index 104570e..b652323 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,13 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + "@eslint/eslintrc@^0.4.2": version "0.4.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -52,6 +59,36 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -73,11 +110,48 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + "@types/json-schema@^7.0.7": version "7.0.9" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== +"@types/mocha@^10.0.10": + version "10.0.10" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.10.tgz#91f62905e8d23cbd66225312f239454a23bebfa0" + integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== + +"@types/node@^22.10.2": + version "22.10.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9" + integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ== + dependencies: + undici-types "~6.20.0" + "@typescript-eslint/eslint-plugin@^4.28.2": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" @@ -163,11 +237,23 @@ acorn-jsx@^5.3.1: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.11.0, acorn@^8.4.1: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -198,11 +284,21 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -217,6 +313,24 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -224,6 +338,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -307,6 +426,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + bluebird@~3.5.0: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" @@ -320,6 +444,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -327,7 +458,14 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" -browser-stdout@1.3.1: +braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browser-stdout@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== @@ -345,6 +483,11 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -366,7 +509,7 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0: +chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -374,6 +517,30 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -405,11 +572,6 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== - commander@^2.18.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -441,6 +603,20 @@ coveralls@^3.0.0: minimist "^1.2.5" request "^2.88.2" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.0: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -457,13 +633,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" @@ -471,6 +640,18 @@ debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: dependencies: ms "2.1.2" +debug@^4.3.5: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -481,10 +662,15 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -diff@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== dir-glob@^3.0.1: version "3.0.1" @@ -500,6 +686,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -518,6 +709,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -525,7 +721,12 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5: +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -754,6 +955,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" @@ -771,6 +979,14 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -779,11 +995,24 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^3.1.0: version "3.2.4" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -812,6 +1041,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -822,6 +1056,11 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -842,24 +1081,24 @@ gh-pages@^3.2.3: fs-extra "^8.1.0" globby "^6.1.0" -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== +glob@^10.4.5: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" glob@^5.0.15: version "5.0.15" @@ -919,11 +1158,6 @@ graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== -growl@1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" - integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== - handlebars@^4.0.1: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -954,11 +1188,6 @@ has-flag@^1.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -976,10 +1205,10 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== http-signature@~1.2.0: version "1.2.0" @@ -1036,6 +1265,13 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-core-module@^2.2.0: version "2.8.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" @@ -1053,7 +1289,7 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -1065,11 +1301,21 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -1100,6 +1346,15 @@ istanbul@~0.4.5: which "^1.1.1" wordwrap "^1.0.0" +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -1113,6 +1368,13 @@ js-yaml@3.x, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + js2xmlparser@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-3.0.0.tgz#3fb60eaa089c5440f9319f51760ccd07e2499733" @@ -1225,6 +1487,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -1245,6 +1514,19 @@ log-driver@^1.2.7: resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -1264,6 +1546,11 @@ make-dir@^3.0.2: dependencies: semver "^6.0.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + marked@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/marked/-/marked-3.0.8.tgz#2785f0dc79cbdc6034be4bb4f0f0a396bd3f8aeb" @@ -1306,22 +1593,29 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= +minimatch@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" minimist@^1.2.3, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== mkdirp@0.5.x, mkdirp@~0.5.1: version "0.5.5" @@ -1330,32 +1624,42 @@ mkdirp@0.5.x, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" -mocha@~5.0.4: - version "5.0.5" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.0.5.tgz#e228e3386b9387a4710007a641f127b00be44b52" - integrity sha512-3MM3UjZ5p8EJrYpG7s+29HAI9G7sTzKEe4+w37Dg0QP7qL4XGsV+Q2xet2cE37AqdgN1OtYQB6Vl98YiPV3PgA== - dependencies: - browser-stdout "1.3.1" - commander "2.11.0" - debug "3.1.0" - diff "3.5.0" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.3" - he "1.1.1" - mkdirp "0.5.1" - supports-color "4.4.0" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +mocha@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.0.1.tgz#85c1c0e806275fe2479245be4ac4a0d81f533aa8" + integrity sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^10.4.5" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -1373,6 +1677,11 @@ nopt@3.x: dependencies: abbrev "1" +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -1421,6 +1730,13 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -1428,11 +1744,23 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -1460,6 +1788,14 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -1470,6 +1806,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" @@ -1534,6 +1875,20 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -1572,6 +1927,11 @@ request@^2.88.2: tunnel-agent "^0.6.0" uuid "^3.3.2" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" @@ -1621,7 +1981,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@^5.0.1, safe-buffer@^5.1.2: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -1643,6 +2003,13 @@ semver@^7.2.1, semver@^7.3.5: dependencies: lru-cache "^6.0.0" +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -1681,6 +2048,11 @@ shx@^0.3.3: minimist "^1.2.3" shelljs "^0.8.4" +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -1727,7 +2099,7 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -1736,6 +2108,31 @@ string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -1743,6 +2140,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -1760,13 +2164,6 @@ strip-outer@^1.0.1: dependencies: escape-string-regexp "^1.0.2" -supports-color@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== - dependencies: - has-flag "^2.0.0" - supports-color@^3.1.0: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" @@ -1788,6 +2185,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + table@^6.0.9: version "6.7.5" resolved "https://registry.yarnpkg.com/table/-/table-6.7.5.tgz#f04478c351ef3d8c7904f0e8be90a1b62417d238" @@ -1831,6 +2235,25 @@ trim-repeated@^1.0.0: dependencies: escape-string-regexp "^1.0.2" +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -1885,10 +2308,10 @@ typedoc@^0.22.10: minimatch "^3.0.4" shiki "^0.9.12" -typescript@^4.4.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" - integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== +typescript@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== uglify-js@^3.1.4: version "3.14.5" @@ -1900,6 +2323,11 @@ underscore@~1.8.3: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -1917,6 +2345,11 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" @@ -1965,6 +2398,38 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -1975,7 +2440,50 @@ xmlcreate@^1.0.1: resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-1.0.2.tgz#fa6bf762a60a413fb3dd8f4b03c5b269238d308f" integrity sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8= +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==