diff --git a/README.md b/README.md index 9acd048..bdbf5dd 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,11 @@ console.print(person.name) // Prints "Timmy" // We can resolve registered "groups" container.resolveGroup('group1') // ~ [1, 2], not necessarily in the same order container.resolveGroup('group2') // ~ [3, 4], not necessarily in the same order + +// We can also resolve the container itself, and the return type will always be +// up to date. This is useful if we want to use the container as a factory for +// some of your dependencies. +const resolvedContainer = container.resolve('$') ``` It is also possible to register and resolve asynchronous factories and @@ -117,6 +122,8 @@ dependencies. If you are curious, just try out: - Stricter types for dependencies re-registration. - Groups registration and resolution: very useful when we need to resolve all dependencies belonging to a same category. +- Self-resolution. The container is able to resolve itself, to be used as a + factory. - The container interface has been split into `ReaderContainer` and `WriterContainer`, making it easier to use precise types. - More extense documentation. diff --git a/lambda-ioc/README.md b/lambda-ioc/README.md index 9acd048..bdbf5dd 100644 --- a/lambda-ioc/README.md +++ b/lambda-ioc/README.md @@ -80,6 +80,11 @@ console.print(person.name) // Prints "Timmy" // We can resolve registered "groups" container.resolveGroup('group1') // ~ [1, 2], not necessarily in the same order container.resolveGroup('group2') // ~ [3, 4], not necessarily in the same order + +// We can also resolve the container itself, and the return type will always be +// up to date. This is useful if we want to use the container as a factory for +// some of your dependencies. +const resolvedContainer = container.resolve('$') ``` It is also possible to register and resolve asynchronous factories and @@ -117,6 +122,8 @@ dependencies. If you are curious, just try out: - Stricter types for dependencies re-registration. - Groups registration and resolution: very useful when we need to resolve all dependencies belonging to a same category. +- Self-resolution. The container is able to resolve itself, to be used as a + factory. - The container interface has been split into `ReaderContainer` and `WriterContainer`, making it easier to use precise types. - More extense documentation. diff --git a/lambda-ioc/deno/container.ts b/lambda-ioc/deno/container.ts index 74da3de..28133be 100644 --- a/lambda-ioc/deno/container.ts +++ b/lambda-ioc/deno/container.ts @@ -11,9 +11,11 @@ type ExtractPrefixedValues< BaseKeys extends keyof Struct = keyof Struct, > = BaseKeys extends `${Prefix}:${infer U}` ? Struct[`${Prefix}:${U}`] : never +type ConstrainedKey = Exclude + export interface SyncDependencyFactory< T, - TContainer extends ReadableSyncContainer>, + TContainer extends ReadableSyncContainer>, > { (container: TContainer): Awaited } @@ -21,8 +23,8 @@ export interface SyncDependencyFactory< export interface AsyncDependencyFactory< T, TContainer extends ReadableContainer< - Record, - Record + Record, + Record >, > { (container: TContainer): Promise @@ -35,27 +37,28 @@ export interface AsyncDependencyFactory< export interface DependencyFactory< T, TContainer extends ReadableContainer< - Record, - Record + Record, + Record >, > extends SyncDependencyFactory, AsyncDependencyFactory {} export interface ReadableSyncContainer< - TSyncDependencies extends Record, + TSyncDependencies extends Record, > { /** * Resolve a "synchronous" dependency from the container. * * @param name The "name" of the dependency (can be a symbol). */ + resolve(name: '$'): this resolve( name: TName, ): TSyncDependencies[TName] } export interface ReadableAsyncContainer< - TAsyncDependencies extends Record, + TAsyncDependencies extends Record, > { /** * Resolve an "asynchronous" dependency from the container. @@ -72,33 +75,33 @@ export interface ReadableAsyncContainer< * dependencies resolution. */ export interface ReadableContainer< - TSyncDependencies extends Record, - TAsyncDependencies extends Record, + TSyncDependencies extends Record, + TAsyncDependencies extends Record, > extends ReadableSyncContainer, ReadableAsyncContainer {} export interface ReadableGroupContainer< - TSyncDependencies extends Record, - TAsyncDependencies extends Record, + TSyncDependencies extends Record, + TAsyncDependencies extends Record, > { resolveGroup< - GroupName extends keyof TSyncDependencies extends ContainerKey + GroupName extends keyof TSyncDependencies extends ConstrainedKey ? ExtractPrefix : never, >( groupName: GroupName, - ): keyof TSyncDependencies extends ContainerKey + ): keyof TSyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never resolveGroupAsync< - GroupName extends keyof TAsyncDependencies extends ContainerKey + GroupName extends keyof TAsyncDependencies extends ConstrainedKey ? ExtractPrefix : never, >( groupName: GroupName, ): Promise< - keyof TAsyncDependencies extends ContainerKey + keyof TAsyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never > @@ -109,8 +112,8 @@ export interface ReadableGroupContainer< * "auto-wired" dependencies resolution. */ export interface WritableContainer< - TSyncDependencies extends Record, - TAsyncDependencies extends Record, + TSyncDependencies extends Record, + TAsyncDependencies extends Record, > { /** * Register a new synchronous dependency factory. @@ -119,10 +122,10 @@ export interface WritableContainer< * @param dependency A dependency factory. */ register< - TName extends ContainerKey, + TName extends ConstrainedKey, TDependency extends TName extends keyof TSyncDependencies ? TSyncDependencies[TName] - : TName extends keyof TAsyncDependencies + : TName extends '$' | keyof TAsyncDependencies ? never : unknown, >( @@ -151,8 +154,8 @@ export interface WritableContainer< * @param dependency A dependency factory. */ registerAsync< - TName extends ContainerKey, - TDependency extends TName extends keyof TSyncDependencies + TName extends ConstrainedKey, + TDependency extends TName extends '$' | keyof TSyncDependencies ? never : TName extends keyof TAsyncDependencies ? TAsyncDependencies[TName] @@ -189,12 +192,12 @@ export interface WritableContainer< * resolve the dependency. */ registerAsyncConstructor< - TName extends ContainerKey, + TName extends ConstrainedKey, TParams extends readonly ( | TSyncDependencies[keyof TSyncDependencies] | TAsyncDependencies[keyof TAsyncDependencies] )[], - TClass extends TName extends keyof TSyncDependencies + TClass extends TName extends '$' | keyof TSyncDependencies ? never : TName extends keyof TAsyncDependencies ? TAsyncDependencies[TName] @@ -228,10 +231,10 @@ export interface WritableContainer< * @param dependency An already instantiated value. */ registerValue< - TName extends ContainerKey, + TName extends ConstrainedKey, TDependency extends TName extends keyof TSyncDependencies ? TSyncDependencies[TName] - : TName extends keyof TAsyncDependencies + : TName extends '$' | keyof TAsyncDependencies ? never : unknown, >( @@ -256,8 +259,8 @@ export interface WritableContainer< * resolution */ export interface Container< - TSyncDependencies extends Record, - TAsyncDependencies extends Record, + TSyncDependencies extends Record, + TAsyncDependencies extends Record, > extends ReadableContainer, ReadableGroupContainer, WritableContainer {} @@ -274,15 +277,18 @@ export function createContainer(): Container<{}, {}> { // ----------------------------------------------------------------------------- type SyncFactoriesToValues< TDependencyFactories extends Record< - ContainerKey, - SyncDependencyFactory, {}>> + ConstrainedKey, + SyncDependencyFactory< + unknown, + Container, {}> + > >, > = {} extends TDependencyFactories ? {} : { [name in keyof TDependencyFactories]: TDependencyFactories[name] extends SyncDependencyFactory< infer T, - Container, {}> + Container, {}> > ? T : never @@ -290,10 +296,13 @@ type SyncFactoriesToValues< type AsyncFactoriesToValues< TDependencyFactories extends Record< - ContainerKey, + ConstrainedKey, AsyncDependencyFactory< unknown, - Container, Record> + Container< + Record, + Record + > > >, > = {} extends TDependencyFactories @@ -301,7 +310,10 @@ type AsyncFactoriesToValues< : { [name in keyof TDependencyFactories]: TDependencyFactories[name] extends AsyncDependencyFactory< infer T, - Container, Record> + Container< + Record, + Record + > > ? Awaited : never @@ -312,17 +324,23 @@ type AsyncFactoriesToValues< // ----------------------------------------------------------------------------- function __createContainer< TSyncDependencyFactories extends Record< - ContainerKey, + ConstrainedKey, SyncDependencyFactory< unknown, - Container, Record> + Container< + Record, + Record + > > >, TAsyncDependencyFactories extends Record< - ContainerKey, + ConstrainedKey, AsyncDependencyFactory< unknown, - Container, Record> + Container< + Record, + Record + > > >, >( @@ -336,7 +354,7 @@ function __createContainer< type TSyncDependencies = SyncFactoriesToValues type TAsyncDependencies = AsyncFactoriesToValues type ContainerWithNewSyncDep< - TName extends ContainerKey, + TName extends ConstrainedKey, TDependency, > = Container< { @@ -351,7 +369,7 @@ function __createContainer< AsyncFactoriesToValues > type ContainerWithNewAsyncDep< - TName extends ContainerKey, + TName extends ConstrainedKey, TDependency, > = Container< SyncFactoriesToValues, @@ -367,7 +385,7 @@ function __createContainer< > return { - register( + register( name: TName, dependency: SyncDependencyFactory< TDependency, @@ -391,7 +409,7 @@ function __createContainer< } }, - registerAsync( + registerAsync( name: TName, dependency: AsyncDependencyFactory< TDependency, @@ -413,12 +431,12 @@ function __createContainer< }, registerAsyncConstructor< - TName extends ContainerKey, + TName extends ConstrainedKey, TParams extends readonly ( | TSyncDependencies[keyof TSyncDependencies] | TAsyncDependencies[keyof TAsyncDependencies] )[], - TClass extends TName extends keyof TSyncDependencies + TClass extends TName extends '$' | keyof TSyncDependencies ? never : TName extends keyof TAsyncDependencies ? TAsyncDependencies[TName] @@ -460,7 +478,7 @@ function __createContainer< } }, - registerValue( + registerValue( name: TName, dependency: TDependency, ): ContainerWithNewSyncDep { @@ -481,14 +499,19 @@ function __createContainer< } }, - resolve( + resolve( name: TName, ): TSyncDependencies[TName] { - return ( - syncDependencies[ - name as keyof TSyncDependencyFactories - ] as SyncDependencyFactory - )(this) + // We have to cast `this` because there's no easy way to "translate" the + // function overload that we have in the interface declaration to this + // function definition. + return name === '$' + ? (this as TSyncDependencies[TName]) + : ( + syncDependencies[ + name as keyof TSyncDependencyFactories + ] as SyncDependencyFactory + )(this) }, async resolveAsync( @@ -503,7 +526,7 @@ function __createContainer< resolveGroup( groupName: GroupName, - ): keyof TSyncDependencies extends ContainerKey + ): keyof TSyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never { return ( @@ -514,7 +537,7 @@ function __createContainer< // eslint-disable-next-line @typescript-eslint/no-unused-vars .map(([_key, value]) => { return value(this) - }) as keyof TSyncDependencies extends ContainerKey + }) as keyof TSyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never ) @@ -523,7 +546,7 @@ function __createContainer< async resolveGroupAsync( groupName: GroupName, ): Promise< - keyof TAsyncDependencies extends ContainerKey + keyof TAsyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never > { @@ -536,7 +559,7 @@ function __createContainer< .map(([_key, value]) => { return value(this) }), - )) as keyof TAsyncDependencies extends ContainerKey + )) as keyof TAsyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never }, diff --git a/lambda-ioc/package.json b/lambda-ioc/package.json index 6067aa8..1549f03 100644 --- a/lambda-ioc/package.json +++ b/lambda-ioc/package.json @@ -1,6 +1,6 @@ { "name": "@coderspirit/lambda-ioc", - "version": "0.5.1", + "version": "0.6.0", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", "types": "./dist/cjs/index.d.ts", @@ -40,11 +40,11 @@ "devDependencies": { "@types/jest": "^27.4.0", "@types/node": "^14.14.37", - "@typescript-eslint/eslint-plugin": "^5.11.0", - "@typescript-eslint/parser": "^5.11.0", + "@typescript-eslint/eslint-plugin": "^5.12.0", + "@typescript-eslint/parser": "^5.12.0", "eslint": "^8.9.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-jest": "^26.1.0", + "eslint-config-prettier": "^8.4.0", + "eslint-plugin-jest": "^26.1.1", "eslint-plugin-node": "^11.1.0", "jest": "^27.5.1", "prettier": "^2.5.1", diff --git a/lambda-ioc/src/__tests__/container.test.ts b/lambda-ioc/src/__tests__/container.test.ts index a862c2f..706cdec 100644 --- a/lambda-ioc/src/__tests__/container.test.ts +++ b/lambda-ioc/src/__tests__/container.test.ts @@ -3,6 +3,12 @@ import { Container, createContainer } from '..' // Behavioural tests describe('container', () => { + it('resolves itself with $ as key', () => { + const container = createContainer() + const resolvedContainer = container.resolve('$') + expect(resolvedContainer).toBe(container) + }) + it('can register simple values', () => { const container = createContainer() .registerValue('foo', 'bar') @@ -365,4 +371,38 @@ describe('@types/container', () => { true expect(c_can_only_resolveGroupAsync_g1g2).toBe(true) }) + + it('has the correct type for self-resolution', () => { + const c1 = createContainer() + const c2 = c1.registerValue('a', 1) + const rc1 = c1.resolve('$') + const rc2 = c2.resolve('$') + + type C1 = typeof c1 + type C2 = typeof c2 + type RC1 = typeof rc1 + type RC2 = typeof rc2 + + type C1_extends_RC1 = C1 extends RC1 ? true : false + type RC1_extends_C1 = RC1 extends C1 ? true : false + type C1_is_RC1 = C1_extends_RC1 extends true + ? RC1_extends_C1 extends true + ? true + : false + : false + + type C2_extends_RC2 = C2 extends RC2 ? true : false + type RC2_extends_C2 = RC2 extends C2 ? true : false + type C2_is_RC2 = C2_extends_RC2 extends true + ? RC2_extends_C2 extends true + ? true + : false + : false + + const c1_is_rc1: C1_is_RC1 = true + const c2_is_rc2: C2_is_RC2 = true + + expect(c1_is_rc1).toBe(true) + expect(c2_is_rc2).toBe(true) + }) }) diff --git a/lambda-ioc/src/container.ts b/lambda-ioc/src/container.ts index fcec524..165ec93 100644 --- a/lambda-ioc/src/container.ts +++ b/lambda-ioc/src/container.ts @@ -11,9 +11,11 @@ type ExtractPrefixedValues< BaseKeys extends keyof Struct = keyof Struct, > = BaseKeys extends `${Prefix}:${infer U}` ? Struct[`${Prefix}:${U}`] : never +type ConstrainedKey = Exclude + export interface SyncDependencyFactory< T, - TContainer extends ReadableSyncContainer>, + TContainer extends ReadableSyncContainer>, > { (container: TContainer): Awaited } @@ -21,8 +23,8 @@ export interface SyncDependencyFactory< export interface AsyncDependencyFactory< T, TContainer extends ReadableContainer< - Record, - Record + Record, + Record >, > { (container: TContainer): Promise @@ -35,27 +37,28 @@ export interface AsyncDependencyFactory< export interface DependencyFactory< T, TContainer extends ReadableContainer< - Record, - Record + Record, + Record >, > extends SyncDependencyFactory, AsyncDependencyFactory {} export interface ReadableSyncContainer< - TSyncDependencies extends Record, + TSyncDependencies extends Record, > { /** * Resolve a "synchronous" dependency from the container. * * @param name The "name" of the dependency (can be a symbol). */ + resolve(name: '$'): this resolve( name: TName, ): TSyncDependencies[TName] } export interface ReadableAsyncContainer< - TAsyncDependencies extends Record, + TAsyncDependencies extends Record, > { /** * Resolve an "asynchronous" dependency from the container. @@ -72,33 +75,33 @@ export interface ReadableAsyncContainer< * dependencies resolution. */ export interface ReadableContainer< - TSyncDependencies extends Record, - TAsyncDependencies extends Record, + TSyncDependencies extends Record, + TAsyncDependencies extends Record, > extends ReadableSyncContainer, ReadableAsyncContainer {} export interface ReadableGroupContainer< - TSyncDependencies extends Record, - TAsyncDependencies extends Record, + TSyncDependencies extends Record, + TAsyncDependencies extends Record, > { resolveGroup< - GroupName extends keyof TSyncDependencies extends ContainerKey + GroupName extends keyof TSyncDependencies extends ConstrainedKey ? ExtractPrefix : never, >( groupName: GroupName, - ): keyof TSyncDependencies extends ContainerKey + ): keyof TSyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never resolveGroupAsync< - GroupName extends keyof TAsyncDependencies extends ContainerKey + GroupName extends keyof TAsyncDependencies extends ConstrainedKey ? ExtractPrefix : never, >( groupName: GroupName, ): Promise< - keyof TAsyncDependencies extends ContainerKey + keyof TAsyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never > @@ -109,8 +112,8 @@ export interface ReadableGroupContainer< * "auto-wired" dependencies resolution. */ export interface WritableContainer< - TSyncDependencies extends Record, - TAsyncDependencies extends Record, + TSyncDependencies extends Record, + TAsyncDependencies extends Record, > { /** * Register a new synchronous dependency factory. @@ -119,10 +122,10 @@ export interface WritableContainer< * @param dependency A dependency factory. */ register< - TName extends ContainerKey, + TName extends ConstrainedKey, TDependency extends TName extends keyof TSyncDependencies ? TSyncDependencies[TName] - : TName extends keyof TAsyncDependencies + : TName extends '$' | keyof TAsyncDependencies ? never : unknown, >( @@ -151,8 +154,8 @@ export interface WritableContainer< * @param dependency A dependency factory. */ registerAsync< - TName extends ContainerKey, - TDependency extends TName extends keyof TSyncDependencies + TName extends ConstrainedKey, + TDependency extends TName extends '$' | keyof TSyncDependencies ? never : TName extends keyof TAsyncDependencies ? TAsyncDependencies[TName] @@ -189,12 +192,12 @@ export interface WritableContainer< * resolve the dependency. */ registerAsyncConstructor< - TName extends ContainerKey, + TName extends ConstrainedKey, TParams extends readonly ( | TSyncDependencies[keyof TSyncDependencies] | TAsyncDependencies[keyof TAsyncDependencies] )[], - TClass extends TName extends keyof TSyncDependencies + TClass extends TName extends '$' | keyof TSyncDependencies ? never : TName extends keyof TAsyncDependencies ? TAsyncDependencies[TName] @@ -228,10 +231,10 @@ export interface WritableContainer< * @param dependency An already instantiated value. */ registerValue< - TName extends ContainerKey, + TName extends ConstrainedKey, TDependency extends TName extends keyof TSyncDependencies ? TSyncDependencies[TName] - : TName extends keyof TAsyncDependencies + : TName extends '$' | keyof TAsyncDependencies ? never : unknown, >( @@ -256,8 +259,8 @@ export interface WritableContainer< * resolution */ export interface Container< - TSyncDependencies extends Record, - TAsyncDependencies extends Record, + TSyncDependencies extends Record, + TAsyncDependencies extends Record, > extends ReadableContainer, ReadableGroupContainer, WritableContainer {} @@ -274,15 +277,18 @@ export function createContainer(): Container<{}, {}> { // ----------------------------------------------------------------------------- type SyncFactoriesToValues< TDependencyFactories extends Record< - ContainerKey, - SyncDependencyFactory, {}>> + ConstrainedKey, + SyncDependencyFactory< + unknown, + Container, {}> + > >, > = {} extends TDependencyFactories ? {} : { [name in keyof TDependencyFactories]: TDependencyFactories[name] extends SyncDependencyFactory< infer T, - Container, {}> + Container, {}> > ? T : never @@ -290,10 +296,13 @@ type SyncFactoriesToValues< type AsyncFactoriesToValues< TDependencyFactories extends Record< - ContainerKey, + ConstrainedKey, AsyncDependencyFactory< unknown, - Container, Record> + Container< + Record, + Record + > > >, > = {} extends TDependencyFactories @@ -301,7 +310,10 @@ type AsyncFactoriesToValues< : { [name in keyof TDependencyFactories]: TDependencyFactories[name] extends AsyncDependencyFactory< infer T, - Container, Record> + Container< + Record, + Record + > > ? Awaited : never @@ -312,17 +324,23 @@ type AsyncFactoriesToValues< // ----------------------------------------------------------------------------- function __createContainer< TSyncDependencyFactories extends Record< - ContainerKey, + ConstrainedKey, SyncDependencyFactory< unknown, - Container, Record> + Container< + Record, + Record + > > >, TAsyncDependencyFactories extends Record< - ContainerKey, + ConstrainedKey, AsyncDependencyFactory< unknown, - Container, Record> + Container< + Record, + Record + > > >, >( @@ -336,7 +354,7 @@ function __createContainer< type TSyncDependencies = SyncFactoriesToValues type TAsyncDependencies = AsyncFactoriesToValues type ContainerWithNewSyncDep< - TName extends ContainerKey, + TName extends ConstrainedKey, TDependency, > = Container< { @@ -351,7 +369,7 @@ function __createContainer< AsyncFactoriesToValues > type ContainerWithNewAsyncDep< - TName extends ContainerKey, + TName extends ConstrainedKey, TDependency, > = Container< SyncFactoriesToValues, @@ -367,7 +385,7 @@ function __createContainer< > return { - register( + register( name: TName, dependency: SyncDependencyFactory< TDependency, @@ -391,7 +409,7 @@ function __createContainer< } }, - registerAsync( + registerAsync( name: TName, dependency: AsyncDependencyFactory< TDependency, @@ -413,12 +431,12 @@ function __createContainer< }, registerAsyncConstructor< - TName extends ContainerKey, + TName extends ConstrainedKey, TParams extends readonly ( | TSyncDependencies[keyof TSyncDependencies] | TAsyncDependencies[keyof TAsyncDependencies] )[], - TClass extends TName extends keyof TSyncDependencies + TClass extends TName extends '$' | keyof TSyncDependencies ? never : TName extends keyof TAsyncDependencies ? TAsyncDependencies[TName] @@ -460,7 +478,7 @@ function __createContainer< } }, - registerValue( + registerValue( name: TName, dependency: TDependency, ): ContainerWithNewSyncDep { @@ -481,14 +499,19 @@ function __createContainer< } }, - resolve( + resolve( name: TName, ): TSyncDependencies[TName] { - return ( - syncDependencies[ - name as keyof TSyncDependencyFactories - ] as SyncDependencyFactory - )(this) + // We have to cast `this` because there's no easy way to "translate" the + // function overload that we have in the interface declaration to this + // function definition. + return name === '$' + ? (this as TSyncDependencies[TName]) + : ( + syncDependencies[ + name as keyof TSyncDependencyFactories + ] as SyncDependencyFactory + )(this) }, async resolveAsync( @@ -503,7 +526,7 @@ function __createContainer< resolveGroup( groupName: GroupName, - ): keyof TSyncDependencies extends ContainerKey + ): keyof TSyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never { return ( @@ -514,7 +537,7 @@ function __createContainer< // eslint-disable-next-line @typescript-eslint/no-unused-vars .map(([_key, value]) => { return value(this) - }) as keyof TSyncDependencies extends ContainerKey + }) as keyof TSyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never ) @@ -523,7 +546,7 @@ function __createContainer< async resolveGroupAsync( groupName: GroupName, ): Promise< - keyof TAsyncDependencies extends ContainerKey + keyof TAsyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never > { @@ -536,7 +559,7 @@ function __createContainer< .map(([_key, value]) => { return value(this) }), - )) as keyof TAsyncDependencies extends ContainerKey + )) as keyof TAsyncDependencies extends ConstrainedKey ? ExtractPrefixedValues[] : never }, diff --git a/yarn.lock b/yarn.lock index b05414d..7e2c598 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.1.tgz#7922fb0817bf3166d8d9e258c57477e3fd1c3610" - integrity sha512-Aolwjd7HSC2PyY0fDj/wA/EimQT4HfEnFYNp5s9CQlrdhyvWTtvZ5YzrUPu6R6/1jKiUlxu8bUhkdSnKHNAHMA== +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== dependencies: "@jridgewell/trace-mapping" "^0.3.0" @@ -22,19 +22,19 @@ integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.2.tgz#2c77fc430e95139d816d39b113b31bf40fb22337" - integrity sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw== + version "7.17.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" + integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== dependencies: - "@ampproject/remapping" "^2.0.0" + "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.0" + "@babel/generator" "^7.17.3" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-module-transforms" "^7.16.7" "@babel/helpers" "^7.17.2" - "@babel/parser" "^7.17.0" + "@babel/parser" "^7.17.3" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.0" + "@babel/traverse" "^7.17.3" "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" @@ -42,10 +42,10 @@ json5 "^2.1.2" semver "^6.3.0" -"@babel/generator@^7.17.0", "@babel/generator@^7.7.2": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" - integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw== +"@babel/generator@^7.17.3", "@babel/generator@^7.7.2": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" + integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== dependencies: "@babel/types" "^7.17.0" jsesc "^2.5.1" @@ -159,10 +159,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" - integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" + integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -264,18 +264,18 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.16.7", "@babel/traverse@^7.17.0", "@babel/traverse@^7.7.2": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" - integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== +"@babel/traverse@^7.16.7", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.7.2": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.0" + "@babel/generator" "^7.17.3" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.16.7" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.0" + "@babel/parser" "^7.17.3" "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" @@ -670,14 +670,14 @@ integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== "@types/node@*": - version "17.0.17" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c" - integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw== + version "17.0.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074" + integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA== "@types/node@^14.14.37": - version "14.18.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.11.tgz#9bd810a959e1728d78df0f68b5c825b8ea7156f4" - integrity sha512-zCoCEMA+IPpsRkyCFBqew5vGb7r8RSiB3uwdu/map7uwLAfu1MTazW26/pUDWoNnF88vJz4W3U56i5gtXNqxGg== + version "14.18.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.12.tgz#0d4557fd3b94497d793efd4e7d92df2f83b4ef24" + integrity sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A== "@types/prettier@^2.1.5": version "2.4.4" @@ -701,14 +701,14 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.11.0": - version "5.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.11.0.tgz#3b866371d8d75c70f9b81535e7f7d3aa26527c7a" - integrity sha512-HJh33bgzXe6jGRocOj4FmefD7hRY4itgjzOrSs3JPrTNXsX7j5+nQPciAUj/1nZtwo2kAc3C75jZO+T23gzSGw== +"@typescript-eslint/eslint-plugin@^5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz#bb46dd7ce7015c0928b98af1e602118e97df6c70" + integrity sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ== dependencies: - "@typescript-eslint/scope-manager" "5.11.0" - "@typescript-eslint/type-utils" "5.11.0" - "@typescript-eslint/utils" "5.11.0" + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/type-utils" "5.12.0" + "@typescript-eslint/utils" "5.12.0" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -716,69 +716,69 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.11.0": - version "5.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.11.0.tgz#b4fcaf65513f9b34bdcbffdda055724a5efb7e04" - integrity sha512-x0DCjetHZYBRovJdr3U0zG9OOdNXUaFLJ82ehr1AlkArljJuwEsgnud+Q7umlGDFLFrs8tU8ybQDFocp/eX8mQ== +"@typescript-eslint/parser@^5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.12.0.tgz#0ca669861813df99ce54916f66f524c625ed2434" + integrity sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog== dependencies: - "@typescript-eslint/scope-manager" "5.11.0" - "@typescript-eslint/types" "5.11.0" - "@typescript-eslint/typescript-estree" "5.11.0" + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/typescript-estree" "5.12.0" debug "^4.3.2" -"@typescript-eslint/scope-manager@5.11.0": - version "5.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.11.0.tgz#f5aef83ff253f457ecbee5f46f762298f0101e4b" - integrity sha512-z+K4LlahDFVMww20t/0zcA7gq/NgOawaLuxgqGRVKS0PiZlCTIUtX0EJbC0BK1JtR4CelmkPK67zuCgpdlF4EA== +"@typescript-eslint/scope-manager@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz#59619e6e5e2b1ce6cb3948b56014d3a24da83f5e" + integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== dependencies: - "@typescript-eslint/types" "5.11.0" - "@typescript-eslint/visitor-keys" "5.11.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/visitor-keys" "5.12.0" -"@typescript-eslint/type-utils@5.11.0": - version "5.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.11.0.tgz#58be0ba73d1f6ef8983d79f7f0bc2209b253fefe" - integrity sha512-wDqdsYO6ofLaD4DsGZ0jGwxp4HrzD2YKulpEZXmgN3xo4BHJwf7kq49JTRpV0Gx6bxkSUmc9s0EIK1xPbFFpIA== +"@typescript-eslint/type-utils@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz#aaf45765de71c6d9707c66ccff76ec2b9aa31bb6" + integrity sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q== dependencies: - "@typescript-eslint/utils" "5.11.0" + "@typescript-eslint/utils" "5.12.0" debug "^4.3.2" tsutils "^3.21.0" -"@typescript-eslint/types@5.11.0": - version "5.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.11.0.tgz#ba345818a2540fdf2755c804dc2158517ab61188" - integrity sha512-cxgBFGSRCoBEhvSVLkKw39+kMzUKHlJGVwwMbPcTZX3qEhuXhrjwaZXWMxVfxDgyMm+b5Q5b29Llo2yow8Y7xQ== +"@typescript-eslint/types@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.0.tgz#5b4030a28222ee01e851836562c07769eecda0b8" + integrity sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ== -"@typescript-eslint/typescript-estree@5.11.0": - version "5.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.11.0.tgz#53f9e09b88368191e52020af77c312a4777ffa43" - integrity sha512-yVH9hKIv3ZN3lw8m/Jy5I4oXO4ZBMqijcXCdA4mY8ull6TPTAoQnKKrcZ0HDXg7Bsl0Unwwx7jcXMuNZc0m4lg== +"@typescript-eslint/typescript-estree@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" + integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== dependencies: - "@typescript-eslint/types" "5.11.0" - "@typescript-eslint/visitor-keys" "5.11.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/visitor-keys" "5.12.0" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/utils@5.11.0", "@typescript-eslint/utils@^5.10.0": - version "5.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.11.0.tgz#d91548ef180d74c95d417950336d9260fdbe1dc5" - integrity sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw== +"@typescript-eslint/utils@5.12.0", "@typescript-eslint/utils@^5.10.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" + integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.11.0" - "@typescript-eslint/types" "5.11.0" - "@typescript-eslint/typescript-estree" "5.11.0" + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/typescript-estree" "5.12.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.11.0": - version "5.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.11.0.tgz#888542381f1a2ac745b06d110c83c0b261487ebb" - integrity sha512-E8w/vJReMGuloGxJDkpPlGwhxocxOpSVgSvjiLO5IxZPmxZF30weOeJYyPSEACwM+X4NziYS9q+WkN/2DHYQwA== +"@typescript-eslint/visitor-keys@5.12.0": + version "5.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" + integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== dependencies: - "@typescript-eslint/types" "5.11.0" + "@typescript-eslint/types" "5.12.0" eslint-visitor-keys "^3.0.0" abab@^2.0.3, abab@^2.0.5: @@ -989,14 +989,14 @@ browser-process-hrtime@^1.0.0: integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserslist@^4.17.5: - version "4.19.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" - integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== + version "4.19.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383" + integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg== dependencies: - caniuse-lite "^1.0.30001286" - electron-to-chromium "^1.4.17" + caniuse-lite "^1.0.30001312" + electron-to-chromium "^1.4.71" escalade "^3.1.1" - node-releases "^2.0.1" + node-releases "^2.0.2" picocolors "^1.0.0" bs-logger@0.x: @@ -1033,7 +1033,7 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001286: +caniuse-lite@^1.0.30001312: version "1.0.30001312" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== @@ -1240,10 +1240,10 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -electron-to-chromium@^1.4.17: - version "1.4.68" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz#d79447b6bd1bec9183f166bb33d4bef0d5e4e568" - integrity sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA== +electron-to-chromium@^1.4.71: + version "1.4.71" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6" + integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw== emittery@^0.8.1: version "0.8.1" @@ -1294,10 +1294,10 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== +eslint-config-prettier@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz#8e6d17c7436649e98c4c2189868562921ef563de" + integrity sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw== eslint-plugin-es@^3.0.0: version "3.0.1" @@ -1307,10 +1307,10 @@ eslint-plugin-es@^3.0.0: eslint-utils "^2.0.0" regexpp "^3.0.0" -eslint-plugin-jest@^26.1.0: - version "26.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.1.0.tgz#9f6c33e66f3cef3f2832c3a4d2caa21a75792dee" - integrity sha512-vjF6RvcKm4xZSJgCmXb9fXmhzTva+I9jtj9Qv5JeZQTRocU7WT1g3Kx0cZ+00SekPe2DtSWDawHtSj4RaxFhXQ== +eslint-plugin-jest@^26.1.1: + version "26.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.1.1.tgz#7176dd745ef8bca3070263f62cdf112f2dfc9aa1" + integrity sha512-HRKOuPi5ADhza4ZBK5ufyNXy28bXXkib87w+pQqdvBhSTsamndh6sIAKPAUl8y0/n9jSWBdTPslrwtKWqkp8dA== dependencies: "@typescript-eslint/utils" "^5.10.0" @@ -2467,9 +2467,9 @@ mimic-fn@^2.1.0: integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimatch@^3.0.4: - version "3.1.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.1.tgz#879ad447200773912898b46cd516a7abbb5e50b0" - integrity sha512-reLxBcKUPNBnc/sVtAbxgRVFSegoGeLaSjmphNhcwcolhYLRgtJscn5mRl6YRZNQv40Y7P6JM2YhSIsbL9OB5A== + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" @@ -2493,7 +2493,7 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-releases@^2.0.1: +node-releases@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==