From ec8696104ed8e9f88a54edaac79a0fb6257a86f0 Mon Sep 17 00:00:00 2001 From: Lexus Drumgold Date: Thu, 27 May 2021 21:13:17 -0400 Subject: [PATCH] refactor(dtos)!: integrate `DTOFilter` --- README.md | 10 +- package.json | 3 +- .../__fixtures__/cars-repo.fixture.ts | 13 +- .../__tests__/mango-repo.abstract.spec.ts | 16 +- src/abstracts/mango-repo.abstract.ts | 36 +- src/dtos/create-entity.dto.ts | 25 +- src/dtos/entity.dto.ts | 16 +- src/dtos/patch-entity.dto.ts | 21 +- .../abstract-mango-repo.interface.ts | 13 +- src/interfaces/mango-repo-async.interface.ts | 13 +- src/interfaces/mango-repo.interface.ts | 13 +- .../__tests__/mango-async.repository.spec.ts | 1 + .../__tests__/mango.repository.spec.ts | 1 + src/repositories/mango-async.repository.ts | 41 +- src/repositories/mango.repository.ts | 41 +- yarn.lock | 922 ++++++++++-------- 16 files changed, 621 insertions(+), 564 deletions(-) diff --git a/README.md b/README.md index 5fafeb3..69737b8 100644 --- a/README.md +++ b/README.md @@ -259,15 +259,11 @@ export interface IAbstractMangoRepository< readonly validator: IMangoValidator clear(): OrPromise - create>(dto: CreateEntityDTO): OrPromise + create(dto: CreateEntityDTO): OrPromise delete(uid?: OneOrMany, should_exist?: boolean): OrPromise - patch>( - uid: UID, - dto?: PatchEntityDTO, - rfields?: string[] - ): OrPromise + patch(uid: UID, dto?: PatchEntityDTO, rfields?: string[]): OrPromise setCache(collection?: E[]): OrPromise> - save>(dto?: OneOrMany>): OrPromise + save(dto?: OneOrMany>): OrPromise } ``` diff --git a/package.json b/package.json index 2d677e5..b14aa29 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "types": "./dist/index.d.ts", "scripts": { "clean": "rm -rf node_modules || true", - "clear:jest": "jest --clearCache", "postinstall": "husky-run install", "format": "prettier --write \"./\"", "lint": "eslint . --ext js,ts --fix --cache", @@ -91,7 +90,7 @@ "eslint-plugin-tree-shaking": "latest", "faker": "latest", "husky": "4.3.8", - "jest": "27.0.0-next.8", + "jest": "next", "jest-extended": "latest", "lint-staged": "latest", "npm": "latest", diff --git a/src/abstracts/__tests__/__fixtures__/cars-repo.fixture.ts b/src/abstracts/__tests__/__fixtures__/cars-repo.fixture.ts index 091b352..3c5b068 100644 --- a/src/abstracts/__tests__/__fixtures__/cars-repo.fixture.ts +++ b/src/abstracts/__tests__/__fixtures__/cars-repo.fixture.ts @@ -1,7 +1,8 @@ import type { CreateEntityDTO, EntityDTO, PatchEntityDTO } from '@/dtos' import type { UID } from '@/types' -import type { OneOrMany, OrPromise, Path } from '@flex-development/tutils' +import type { OneOrMany, OrPromise } from '@flex-development/tutils' import type { + CarDTOFilter, CarParams, CarQuery, CarUID, @@ -20,21 +21,19 @@ export default class CarsRepo extends AbstractMangoRepository< CarParams, CarQuery > { - create>(dto: CreateEntityDTO): OrPromise { + create(dto: CreateEntityDTO): OrPromise { throw new Error('Method not implemented') } - patch>( + patch( uid: UID, - dto: PatchEntityDTO, + dto: PatchEntityDTO, rfields?: string[] ): OrPromise { throw new Error('Method not implemented') } - save>( - dto: OneOrMany> - ): OrPromise { + save(dto: OneOrMany>): OrPromise { throw new Error('Method not implemented') } } diff --git a/src/abstracts/__tests__/mango-repo.abstract.spec.ts b/src/abstracts/__tests__/mango-repo.abstract.spec.ts index bc488ab..c226cdf 100644 --- a/src/abstracts/__tests__/mango-repo.abstract.spec.ts +++ b/src/abstracts/__tests__/mango-repo.abstract.spec.ts @@ -125,7 +125,7 @@ describe('unit:abstracts/AbstractMangoRepository', () => { const euid = uid.trim() // Act - const result = TestSubject.formatCreateEntityDTO( + const result = TestSubject.formatCreateEntityDTO( dto as CreateEntityDTO, COLLECTION, MOPTIONS @@ -147,7 +147,7 @@ describe('unit:abstracts/AbstractMangoRepository', () => { // Act try { - TestSubject.formatCreateEntityDTO( + TestSubject.formatCreateEntityDTO( dto as CreateEntityDTO, COLLECTION, MOPTIONS @@ -173,7 +173,13 @@ describe('unit:abstracts/AbstractMangoRepository', () => { const spy_findOneOrFail = jest.spyOn(TestSubjectAbstract, 'findOneOrFail') // Act - TestSubject.formatPatchEntityDTO(ENTITY_UID, {}, [], COLLECTION, MOPTIONS) + TestSubject.formatPatchEntityDTO( + ENTITY_UID, + {}, + [], + COLLECTION, + MOPTIONS + ) // Expect expect(spy_findOneOrFail).toBeCalledTimes(1) @@ -186,7 +192,7 @@ describe('unit:abstracts/AbstractMangoRepository', () => { const rfields = ['foo'] // Act - const result = TestSubject.formatPatchEntityDTO( + const result = TestSubject.formatPatchEntityDTO( ENTITY_UID, dto, rfields, @@ -204,7 +210,7 @@ describe('unit:abstracts/AbstractMangoRepository', () => { const dto = { make: 'MAKE' } // Act - const result = TestSubject.formatPatchEntityDTO( + const result = TestSubject.formatPatchEntityDTO( ENTITY_UID, dto, [], diff --git a/src/abstracts/mango-repo.abstract.ts b/src/abstracts/mango-repo.abstract.ts index 1660ec3..b13803a 100644 --- a/src/abstracts/mango-repo.abstract.ts +++ b/src/abstracts/mango-repo.abstract.ts @@ -30,8 +30,7 @@ import type { ObjectPlain, ObjectUnknown, OneOrMany, - OrPromise, - Path + OrPromise } from '@flex-development/tutils' import type { ClassType } from 'class-transformer-validator' import type { Debugger } from 'debug' @@ -253,12 +252,11 @@ export default abstract class AbstractMangoRepository< * * Throws a `409 CONFLICT` error if an entity with the same uid exists. * - * @template AF - Object field paths of `dto` * @template AE - Entity * @template AU - Name of entity uid field * @template AP - Repository search parameters (query criteria and options) * - * @param {CreateEntityDTO} dto - Data to create new entity + * @param {CreateEntityDTO} dto - Data to create new entity * @param {DocumentArray} [collection] - Document collection * @param {MingoOptions} [mingo_options] - `mingo` options * @param {typeof MINGO} [mingo] - MongoDB query language client @@ -266,12 +264,11 @@ export default abstract class AbstractMangoRepository< * @throws {Exception} */ static formatCreateEntityDTO< - AF extends Path, AE extends ObjectPlain = ObjectUnknown, AU extends string = DUID, AP extends MangoSearchParams = MangoSearchParams >( - dto: CreateEntityDTO, + dto: CreateEntityDTO, collection: DocumentArray = [], mingo_options: MingoOptions = { idKey: 'id' as AU }, mingo: typeof MINGO = MINGO @@ -326,13 +323,12 @@ export default abstract class AbstractMangoRepository< * * Throws if the entity isn't found. * - * @template AF - Object field paths of `dto` * @template AE - Entity * @template AU - Name of entity uid field * @template AP - Repository search parameters (query criteria and options) * * @param {UID} uid - Entity uid - * @param {PatchEntityDTO} [dto] - Data to patch entity + * @param {PatchEntityDTO} [dto] - Data to patch entity * @param {string[]} [rfields] - Additional readonly fields * @param {DocumentArray} [collection] - Document collection * @param {MingoOptions} [mingo_options] - `mingo` options @@ -341,13 +337,12 @@ export default abstract class AbstractMangoRepository< * @throws {Exception} */ static formatPatchEntityDTO< - AF extends Path, AE extends ObjectPlain = ObjectUnknown, AU extends string = DUID, AP extends MangoSearchParams = MangoSearchParams >( uid: UID, - dto: PatchEntityDTO = {}, + dto: PatchEntityDTO = {} as PatchEntityDTO, rfields: string[] = [], collection: DocumentArray = [], mingo_options: MingoOptions = { idKey: 'id' as AU }, @@ -367,7 +362,7 @@ export default abstract class AbstractMangoRepository< rfields = uniq([mingo_options.idKey as string].concat(rfields)) // Return entity merged with dto - return merge({}, entity, { ...omit(dto, rfields) }) as AE + return (merge({}, entity, { ...omit(dto, rfields) }) as unknown) as AE } catch (error) { const code = ExceptionStatusCode.INTERNAL_SERVER_ERROR const { message, stack } = error @@ -436,35 +431,30 @@ export default abstract class AbstractMangoRepository< /** * @abstract - * @template F - Object field paths of `dto` - * @param {CreateEntityDTO} dto - Data to create new entity + * @param {CreateEntityDTO} dto - Data to create new entity * @return {OrPromise} New entity * @throws {Exception} */ - abstract create>(dto: CreateEntityDTO): OrPromise + abstract create(dto: CreateEntityDTO): OrPromise /** * @abstract - * @template F - Object field paths of `dto` * @param {UID} uid - Entity uid - * @param {PatchEntityDTO} [dto] - Data to patch entity + * @param {PatchEntityDTO} [dto] - Data to patch entity * @param {string[]} [rfields] - Additional readonly fields * @return {Promise} Updated entity * @throws {Exception} */ - abstract patch>( + abstract patch( uid: UID, - dto?: PatchEntityDTO, + dto?: PatchEntityDTO, rfields?: string[] ): OrPromise /** * @abstract - * @template F - Object field paths of `dto` - * @param {OneOrMany>} [dto] - Entities to upsert + * @param {OneOrMany>} [dto] - Entities to upsert * @return {Promise} New or updated entities */ - abstract save>( - dto?: OneOrMany> - ): OrPromise + abstract save(dto?: OneOrMany>): OrPromise } diff --git a/src/dtos/create-entity.dto.ts b/src/dtos/create-entity.dto.ts index 71b9e41..3342899 100644 --- a/src/dtos/create-entity.dto.ts +++ b/src/dtos/create-entity.dto.ts @@ -1,4 +1,9 @@ -import type { DeepPick, ObjectPlain, Path } from '@flex-development/tutils' +import type { DTOFilter } from '@/types' +import type { + DeepPartialByRequired, + ObjectPlain, + ObjectUnknown +} from '@flex-development/tutils' /** * @file Data Transfer Objects - CreateEntityDTO @@ -8,10 +13,20 @@ import type { DeepPick, ObjectPlain, Path } from '@flex-development/tutils' /** * Data used to create a new entity. * + * Constructs a type where properties `F['pick']` are required, and properties + * `F['omit']` will be omitted. + * + * Other properties will remain untouched. + * * @template E - Entity - * @template P - Object field paths of dto + * @template F - DTO filter object + * + * @example + * interface IUser{ ... } + * type Filter = DTOFilter + * type CreateUserDTO = CreateEntityDTO */ export type CreateEntityDTO< - E extends ObjectPlain = ObjectPlain, - P extends Path = Path -> = DeepPick + E extends ObjectPlain = ObjectUnknown, + F extends DTOFilter = DTOFilter +> = DeepPartialByRequired diff --git a/src/dtos/entity.dto.ts b/src/dtos/entity.dto.ts index 924613d..cff4e3e 100644 --- a/src/dtos/entity.dto.ts +++ b/src/dtos/entity.dto.ts @@ -1,4 +1,5 @@ -import type { ObjectPlain, Path } from '@flex-development/tutils' +import type { DTOFilter } from '@/types' +import type { ObjectPlain, ObjectUnknown } from '@flex-development/tutils' import type { CreateEntityDTO } from './create-entity.dto' import type { PatchEntityDTO } from './patch-entity.dto' @@ -11,9 +12,14 @@ import type { PatchEntityDTO } from './patch-entity.dto' * Data used to create or patch an entity. * * @template E - Entity - * @template P - Object field paths of `CreateEntityDTO` | `PatchEntityDTO` + * @template F - DTO filter object + * + * @example + * interface IUser{ ... } + * type Filter = DTOFilter + * type SaveUserDTO = SaveEntityDTO */ export type EntityDTO< - E extends ObjectPlain = ObjectPlain, - P extends Path = Path -> = CreateEntityDTO | PatchEntityDTO + E extends ObjectPlain = ObjectUnknown, + F extends DTOFilter = DTOFilter +> = CreateEntityDTO | PatchEntityDTO diff --git a/src/dtos/patch-entity.dto.ts b/src/dtos/patch-entity.dto.ts index 1c4c78a..010caac 100644 --- a/src/dtos/patch-entity.dto.ts +++ b/src/dtos/patch-entity.dto.ts @@ -1,4 +1,10 @@ -import type { DeepPick, ObjectPlain, Path } from '@flex-development/tutils' +import type { DTOFilter } from '@/types' +import type { + DeepPartial, + ObjectPlain, + ObjectUnknown +} from '@flex-development/tutils' +import type { CreateEntityDTO } from './create-entity.dto' /** * @file Data Transfer Objects - PatchEntityDTO @@ -9,9 +15,14 @@ import type { DeepPick, ObjectPlain, Path } from '@flex-development/tutils' * Data used to patch an entity. * * @template E - Entity - * @template P - Object field paths of dto + * @template F - DTO filter object + * + * @example + * interface IUser{ ... } + * type Filter = DTOFilter + * type PatchUserDTO = PatchEntityDTO */ export type PatchEntityDTO< - E extends ObjectPlain = ObjectPlain, - P extends Path = Path -> = Partial> + E extends ObjectPlain = ObjectUnknown, + F extends DTOFilter = DTOFilter +> = DeepPartial> diff --git a/src/interfaces/abstract-mango-repo.interface.ts b/src/interfaces/abstract-mango-repo.interface.ts index 0b02ad0..543aa71 100644 --- a/src/interfaces/abstract-mango-repo.interface.ts +++ b/src/interfaces/abstract-mango-repo.interface.ts @@ -4,8 +4,7 @@ import type { ObjectPlain, ObjectUnknown, OneOrMany, - OrPromise, - Path + OrPromise } from '@flex-development/tutils' import type { IAbstractMangoFinder } from './abstract-mango-finder.interface' import type { MangoCacheRepo } from './mango-cache-repo.interface' @@ -41,13 +40,9 @@ export interface IAbstractMangoRepository< readonly validator: IMangoValidator clear(): OrPromise - create>(dto: CreateEntityDTO): OrPromise + create(dto: CreateEntityDTO): OrPromise delete(uid?: OneOrMany, should_exist?: boolean): OrPromise - patch>( - uid: UID, - dto?: PatchEntityDTO, - rfields?: string[] - ): OrPromise + patch(uid: UID, dto?: PatchEntityDTO, rfields?: string[]): OrPromise setCache(collection?: E[]): OrPromise> - save>(dto?: OneOrMany>): OrPromise + save(dto?: OneOrMany>): OrPromise } diff --git a/src/interfaces/mango-repo-async.interface.ts b/src/interfaces/mango-repo-async.interface.ts index 53d8f2e..6e85304 100644 --- a/src/interfaces/mango-repo-async.interface.ts +++ b/src/interfaces/mango-repo-async.interface.ts @@ -3,8 +3,7 @@ import type { DUID, MangoParsedUrlQuery, MangoSearchParams, UID } from '@/types' import type { ObjectPlain, ObjectUnknown, - OneOrMany, - Path + OneOrMany } from '@flex-development/tutils' import type { MangoCacheRepo } from './mango-cache-repo.interface' import type { IMangoFinderAsync } from './mango-finder-async.interface' @@ -33,13 +32,9 @@ export interface IMangoRepositoryAsync< Q extends MangoParsedUrlQuery = MangoParsedUrlQuery > extends IMangoFinderAsync { clear(): Promise - create>(dto: CreateEntityDTO): Promise + create(dto: CreateEntityDTO): Promise delete(uid?: OneOrMany, should_exist?: boolean): Promise - patch>( - uid: UID, - dto?: PatchEntityDTO, - rfields?: string[] - ): Promise + patch(uid: UID, dto?: PatchEntityDTO, rfields?: string[]): Promise setCache(collection?: E[]): Promise> - save>(dto?: OneOrMany>): Promise + save(dto?: OneOrMany>): Promise } diff --git a/src/interfaces/mango-repo.interface.ts b/src/interfaces/mango-repo.interface.ts index 5a34946..ad3cc0f 100644 --- a/src/interfaces/mango-repo.interface.ts +++ b/src/interfaces/mango-repo.interface.ts @@ -3,8 +3,7 @@ import type { DUID, MangoParsedUrlQuery, MangoSearchParams, UID } from '@/types' import type { ObjectPlain, ObjectUnknown, - OneOrMany, - Path + OneOrMany } from '@flex-development/tutils' import type { MangoCacheRepo } from './mango-cache-repo.interface' import type { IMangoFinder } from './mango-finder.interface' @@ -33,13 +32,9 @@ export interface IMangoRepository< Q extends MangoParsedUrlQuery = MangoParsedUrlQuery > extends IMangoFinder { clear(): boolean - create>(dto: CreateEntityDTO): E + create(dto: CreateEntityDTO): E delete(uid?: OneOrMany, should_exist?: boolean): UID[] - patch>( - uid: UID, - dto?: PatchEntityDTO, - rfields?: string[] - ): E + patch(uid: UID, dto?: PatchEntityDTO, rfields?: string[]): E setCache(collection?: E[]): MangoCacheRepo - save>(dto?: OneOrMany>): E[] + save(dto?: OneOrMany>): E[] } diff --git a/src/repositories/__tests__/mango-async.repository.spec.ts b/src/repositories/__tests__/mango-async.repository.spec.ts index 066f475..b24e252 100644 --- a/src/repositories/__tests__/mango-async.repository.spec.ts +++ b/src/repositories/__tests__/mango-async.repository.spec.ts @@ -54,6 +54,7 @@ describe('unit:repositories/MangoRepositoryAsync', () => { it('should call .formatCreateEntityDTO', async () => { // Arrange const spy_method = 'formatCreateEntityDTO' + // @ts-expect-error testing invocation const spy_formatCreateEntityDTO = jest.spyOn(TestSubject, spy_method) // Act diff --git a/src/repositories/__tests__/mango.repository.spec.ts b/src/repositories/__tests__/mango.repository.spec.ts index 5b46d66..40c2fd2 100644 --- a/src/repositories/__tests__/mango.repository.spec.ts +++ b/src/repositories/__tests__/mango.repository.spec.ts @@ -54,6 +54,7 @@ describe('unit:repositories/MangoRepository', () => { it('should call .formatCreateEntityDTO', () => { // Arrange const spy_method = 'formatCreateEntityDTO' + // @ts-expect-error testing invocation const spy_formatCreateEntityDTO = jest.spyOn(TestSubject, spy_method) // Act diff --git a/src/repositories/mango-async.repository.ts b/src/repositories/mango-async.repository.ts index 2921207..6fa5f08 100644 --- a/src/repositories/mango-async.repository.ts +++ b/src/repositories/mango-async.repository.ts @@ -20,8 +20,7 @@ import type { import type { ObjectPlain, ObjectUnknown, - OneOrMany, - Path + OneOrMany } from '@flex-development/tutils' import type { Debugger } from 'debug' @@ -94,15 +93,13 @@ export default class MangoRepositoryAsync< * * [1]: https://github.com/uuidjs/uuid * - * @template F - Object field paths of `dto` - * * @async - * @param {CreateEntityDTO} dto - Data to create new entity + * @param {CreateEntityDTO} dto - Data to create new entity * @return {Promise} Promise containing new entity */ - async create>(dto: CreateEntityDTO): Promise { + async create(dto: CreateEntityDTO): Promise { // Format dto - let data = MangoRepositoryAsync.formatCreateEntityDTO( + let data = MangoRepositoryAsync.formatCreateEntityDTO( dto, this.cache.collection, this.options.mingo, @@ -221,21 +218,19 @@ export default class MangoRepositoryAsync< * Throws an error if the entity isn't found, or if schema validation is * enabled and fails. * - * @template F - Object field paths of `dto` - * * @async * @param {UID} uid - Entity uid - * @param {PatchEntityDTO} [dto] - Data to patch entity + * @param {PatchEntityDTO} [dto] - Data to patch entity * @param {string[]} [rfields] - Additional readonly fields * @return {Promise} Promise containing updated entity */ - async patch>( + async patch( uid: UID, - dto?: PatchEntityDTO, + dto?: PatchEntityDTO, rfields?: string[] ): Promise { // Format dto - let data = MangoRepositoryAsync.formatPatchEntityDTO( + let data = MangoRepositoryAsync.formatPatchEntityDTO( uid, dto, rfields, @@ -322,40 +317,34 @@ export default class MangoRepositoryAsync< * If any entity already exists, it will be patched. * If any entity does not exist in the database, it will be inserted. * - * @template F - Object field paths of `dto` - * * @async - * @param {OneOrMany>} [dto] - Entities to upsert + * @param {OneOrMany>} [dto] - Entities to upsert * @return {Promise} Promise containing new or updated entities */ - async save>( - dto: OneOrMany> = [] - ): Promise { + async save(dto: OneOrMany> = []): Promise { /** * Creates or updates a single entity. * * If the entity already exists in the database, it will be updated. * If the entity does not exist in the database, it will be inserted. * - * @template F - Object field paths of `dto` - * * @async - * @param {EntityDTO} dto - Data to upsert entity + * @param {EntityDTO} dto - Data to upsert entity * @return {Promise} Promise containing new or updated entiy */ - const upsert = async (dto: EntityDTO): Promise => { + const upsert = async (dto: EntityDTO): Promise => { const uid = dto[this.uid()] as UID const exists = await this.findOne(uid) - if (!exists) return await this.create(dto as CreateEntityDTO) - return await this.patch(uid, dto as PatchEntityDTO) + if (!exists) return await this.create(dto as CreateEntityDTO) + return await this.patch(uid, dto as PatchEntityDTO) } // Convert into array of DTOs const dtos = Array.isArray(dto) ? dto : [dto] - // Perform upsert + // @ts-expect-error performing upsert return await Promise.all(dtos.map(async d => upsert(d))) } diff --git a/src/repositories/mango.repository.ts b/src/repositories/mango.repository.ts index ad5f321..e758352 100644 --- a/src/repositories/mango.repository.ts +++ b/src/repositories/mango.repository.ts @@ -19,8 +19,7 @@ import type { import type { ObjectPlain, ObjectUnknown, - OneOrMany, - Path + OneOrMany } from '@flex-development/tutils' /** @@ -81,14 +80,12 @@ export default class MangoRepository< * * [1]: https://github.com/uuidjs/uuid * - * @template F - Object field paths of `dto` - * - * @param {CreateEntityDTO} dto - Data to create new entity + * @param {CreateEntityDTO} dto - Data to create new entity * @return {E} New entity */ - create>(dto: CreateEntityDTO): E { + create(dto: CreateEntityDTO): E { // Format dto - let data = MangoRepository.formatCreateEntityDTO( + let data = MangoRepository.formatCreateEntityDTO( dto, this.cache.collection, this.options.mingo, @@ -202,20 +199,14 @@ export default class MangoRepository< * Throws an error if the entity isn't found, or if schema validation is * enabled and fails. * - * @template F - Object field paths of `dto` - * * @param {UID} uid - Entity uid - * @param {PatchEntityDTO} [dto] - Data to patch entity + * @param {PatchEntityDTO} [dto] - Data to patch entity * @param {string[]} [rfields] - Additional readonly fields * @return {E} Updated entity */ - patch>( - uid: UID, - dto?: PatchEntityDTO, - rfields?: string[] - ): E { + patch(uid: UID, dto?: PatchEntityDTO, rfields?: string[]): E { // Format dto - let data = MangoRepository.formatPatchEntityDTO( + let data = MangoRepository.formatPatchEntityDTO( uid, dto, rfields, @@ -289,12 +280,10 @@ export default class MangoRepository< * If any entity already exists, it will be patched. * If any entity does not exist in the database, it will be inserted. * - * @template F - Object field paths of `dto` - * - * @param {OneOrMany>} [dto] - Entities to upsert + * @param {OneOrMany>} [dto] - Entities to upsert * @return {E[]} New or updated entities */ - save>(dto: OneOrMany> = []): E[] { + save(dto: OneOrMany> = []): E[] { /** * Creates or updates a single entity. * @@ -303,22 +292,22 @@ export default class MangoRepository< * * @template F - Object field paths of `dto` * - * @param {EntityDTO} dto - Data to upsert entity + * @param {EntityDTO} dto - Data to upsert entity * @return {E} New or updated entity */ - const upsert = (dto: EntityDTO): E => { + const upsert = (dto: EntityDTO): E => { const uid = dto[this.uid()] as UID const exists = this.findOne(uid) - if (!exists) return this.create(dto as CreateEntityDTO) - return this.patch(uid, dto as PatchEntityDTO) + if (!exists) return this.create(dto as CreateEntityDTO) + return this.patch(uid, dto as PatchEntityDTO) } // Convert into array of DTOs - const dtos = Array.isArray(dto) ? dto : [dto] + const dtos: EntityDTO[] = Array.isArray(dto) ? dto : [dto] - // Perform upsert + // @ts-expect-error performing upsert return dtos.map(d => upsert(d)) } diff --git a/yarn.lock b/yarn.lock index 9a50899..5cec3f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,6 +42,27 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/core@^7.7.2": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38" + integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.14.3" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-module-transforms" "^7.14.2" + "@babel/helpers" "^7.14.0" + "@babel/parser" "^7.14.3" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + "@babel/eslint-parser@latest": version "7.13.14" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.13.14.tgz#f80fd23bdd839537221914cb5d17720a5ea6ba3a" @@ -60,6 +81,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.14.2", "@babel/generator@^7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91" + integrity sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== + dependencies: + "@babel/types" "^7.14.2" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-compilation-targets@^7.13.16": version "7.13.16" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" @@ -79,6 +109,15 @@ "@babel/template" "^7.12.13" "@babel/types" "^7.12.13" +"@babel/helper-function-name@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz#397688b590760b6ef7725b5f0860c82427ebaac2" + integrity sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.14.2" + "@babel/helper-get-function-arity@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" @@ -114,6 +153,20 @@ "@babel/traverse" "^7.14.0" "@babel/types" "^7.14.0" +"@babel/helper-module-transforms@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" + integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== + dependencies: + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-simple-access" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.14.0" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" @@ -183,6 +236,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.1.tgz#1bd644b5db3f5797c4479d89ec1817fe02b84c47" integrity sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q== +"@babel/parser@^7.14.2", "@babel/parser@^7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" + integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -297,6 +355,20 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" + integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.14.2" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.14.2" + "@babel/types" "^7.14.2" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.14.0", "@babel/types@^7.14.1", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.14.1" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.1.tgz#095bd12f1c08ab63eff6e8f7745fa7c9cc15a9db" @@ -305,6 +377,14 @@ "@babel/helper-validator-identifier" "^7.14.0" to-fast-properties "^2.0.0" +"@babel/types@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" + integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -512,94 +592,94 @@ chalk "^2.0.1" slash "^2.0.0" -"@jest/console@^27.0.0-next.9": - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.0.0-next.9.tgz#5cb651a1c1eb3b345fc90360553c5b9a9c9364e5" - integrity sha512-7o8IKI2mnAwrIvaVLQZ+JXS+sxaadYBrTwOm2XBBl46fCH54sy/U4q84UvjTOX5KMvmpGIhz1iDSUpLSLbk6Qw== +"@jest/console@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.0.1.tgz#c6acfec201f9b6823596eb6c4fcd77c89a8b27e9" + integrity sha512-50E6nN2F5cAXn1lDljn0gE9F0WFXHYz/u0EeR7sOt4nbRPNli34ckbl6CUDaDABJbHt62DYnyQAIB3KgdzwKDw== dependencies: - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.0.0-next.9" - jest-util "^27.0.0-next.9" + jest-message-util "^27.0.1" + jest-util "^27.0.1" slash "^3.0.0" -"@jest/core@^27.0.0-next.8", "@jest/core@^27.0.0-next.9": - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.0.0-next.9.tgz#551e9b515b266e6e3c2076d7d78cd899973f0a4f" - integrity sha512-F4RNXu1gwwibk6fWXr5lkG5DMzWk+b0OIXQrr5eTB3HUFqKZTM8YOaaeoCtDjWDZif79wW8wwuXRmR8qZe103Q== - dependencies: - "@jest/console" "^27.0.0-next.9" - "@jest/reporters" "^27.0.0-next.9" - "@jest/test-result" "^27.0.0-next.9" - "@jest/transform" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" +"@jest/core@^27.0.0-next.11", "@jest/core@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.0.1.tgz#88d0ff55f465fe1fc3a940718e8cf0fea242be4b" + integrity sha512-PiCbKSMf6t8PEfY3MAd0Ldn3aJAt5T+UcaFkAfMZ1VZgas35+fXk5uHIjAQHQLNIHZWX19TLv0wWNT03yvrw6w== + dependencies: + "@jest/console" "^27.0.1" + "@jest/reporters" "^27.0.1" + "@jest/test-result" "^27.0.1" + "@jest/transform" "^27.0.1" + "@jest/types" "^27.0.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.8.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^27.0.0-next.8" - jest-config "^27.0.0-next.9" - jest-haste-map "^27.0.0-next.9" - jest-message-util "^27.0.0-next.9" - jest-regex-util "^27.0.0-next.0" - jest-resolve "^27.0.0-next.9" - jest-resolve-dependencies "^27.0.0-next.9" - jest-runner "^27.0.0-next.9" - jest-runtime "^27.0.0-next.9" - jest-snapshot "^27.0.0-next.9" - jest-util "^27.0.0-next.9" - jest-validate "^27.0.0-next.9" - jest-watcher "^27.0.0-next.9" + jest-changed-files "^27.0.1" + jest-config "^27.0.1" + jest-haste-map "^27.0.1" + jest-message-util "^27.0.1" + jest-regex-util "^27.0.1" + jest-resolve "^27.0.1" + jest-resolve-dependencies "^27.0.1" + jest-runner "^27.0.1" + jest-runtime "^27.0.1" + jest-snapshot "^27.0.1" + jest-util "^27.0.1" + jest-validate "^27.0.1" + jest-watcher "^27.0.1" micromatch "^4.0.4" p-each-series "^2.1.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.0.0-next.9": - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.0.0-next.9.tgz#585a2ac297819a4cc7f50d723fa4ded364c99c60" - integrity sha512-TLevPfItvPBFFRFUOtL2dwqi0HLjgveMtc2RW+o8P3uFgHhJkEVAqyqgaFYP8mJ6jzExGHZuZIfJLiTF/mKaNw== +"@jest/environment@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.0.1.tgz#27ed89bf8179c0a030690f063d922d6da7a519ac" + integrity sha512-nG+r3uSs2pOTsdhgt6lUm4ZGJLRcTc6HZIkrFsVpPcdSqEpJehEny9r9y2Bmhkn8fKXWdGCYJKF3i4nKO0HSmA== dependencies: - "@jest/fake-timers" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + "@jest/fake-timers" "^27.0.1" + "@jest/types" "^27.0.1" "@types/node" "*" - jest-mock "^27.0.0-next.8" + jest-mock "^27.0.1" -"@jest/fake-timers@^27.0.0-next.9": - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.0.0-next.9.tgz#cb32a9d11e12b1dc338aa4f81aa456a8d27b2b34" - integrity sha512-BQa/T746d1O2OpOzcumyjQ/Vu2ZPzpG6Hng126Tmw5R4veYvC7QDWsDjznUkJioQfZkJIJgVuK2UVuKRPO+5Ag== +"@jest/fake-timers@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.0.1.tgz#6987a596b0bcf8c07653086076c17058b4c77b5c" + integrity sha512-3CyLJQnHzKI4TCJSCo+I9TzIHjSK4RrNEk93jFM6Q9+9WlSJ3mpMq/p2YuKMe0SiHKbmZOd5G/Ll5ofF9Xkw9g== dependencies: - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" "@sinonjs/fake-timers" "^7.0.2" "@types/node" "*" - jest-message-util "^27.0.0-next.9" - jest-mock "^27.0.0-next.8" - jest-util "^27.0.0-next.9" + jest-message-util "^27.0.1" + jest-mock "^27.0.1" + jest-util "^27.0.1" -"@jest/globals@^27.0.0-next.9": - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.0.0-next.9.tgz#1bca91514f95437191be8eee060c1d27fe07d822" - integrity sha512-sbIOdct6Y0xp0X2pZxljsKbCDaWrccZXNYqYnfMiYkSuQ21wdFQLyQJPm2dlrLqisLYPgX+F2SZ0SFwSBDA90g== +"@jest/globals@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.0.1.tgz#14c776942f7047a04f2aea09b148065e2aa9d7e9" + integrity sha512-80ZCzgopysKdpp5EOglgjApKxiNDR96PG4PwngB4fTwZ4qqqSKo0EwGwQIhl16szQ1M2xCVYmr9J6KelvnABNQ== dependencies: - "@jest/environment" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" - expect "^27.0.0-next.9" + "@jest/environment" "^27.0.1" + "@jest/types" "^27.0.1" + expect "^27.0.1" -"@jest/reporters@^27.0.0-next.9": - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.0.0-next.9.tgz#e35e20ade0a6faaf7a7bd1a44402aebd370499fe" - integrity sha512-L+4Hkcy9VldZQyYqi1YJPMBuM8Y0pkaOd9C0s3HOpzKNInfmoLDuOAaTVsFZkA5TcHQYwaxoUVw/Q5FciTGO0g== +"@jest/reporters@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.0.1.tgz#5b491f64e37c9b97b13e564f18f36b6697d28045" + integrity sha512-lZbJWuS1h/ytKERfu1D6tEQ4PuQ7+15S4+HrSzHR0i7AGVT1WRo49h4fZqxASOp7AQCupUVtPJNZDkaG9ZXy0g== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.0.0-next.9" - "@jest/test-result" "^27.0.0-next.9" - "@jest/transform" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + "@jest/console" "^27.0.1" + "@jest/test-result" "^27.0.1" + "@jest/transform" "^27.0.1" + "@jest/types" "^27.0.1" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" @@ -610,10 +690,10 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^27.0.0-next.9" - jest-resolve "^27.0.0-next.9" - jest-util "^27.0.0-next.9" - jest-worker "^27.0.0-next.9" + jest-haste-map "^27.0.1" + jest-resolve "^27.0.1" + jest-util "^27.0.1" + jest-worker "^27.0.1" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" @@ -629,10 +709,10 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/source-map@^27.0.0-next.3": - version "27.0.0-next.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.0-next.3.tgz#ef4498c1641041cfb90b28bef51a59877742818b" - integrity sha512-cup/B3GygP6Y61tL+owv94ftGs1ndnUsk8bYh8Ud+jF3nMRY2mIv6dwL6sXhh/SW5pEsc2OyRI4oKRgNFxvZBw== +"@jest/source-map@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.1.tgz#2afbf73ddbaddcb920a8e62d0238a0a9e0a8d3e4" + integrity sha512-yMgkF0f+6WJtDMdDYNavmqvbHtiSpwRN2U/W+6uztgfqgkq/PXdKPqjBTUF1RD/feth4rH5N3NW0T5+wIuln1A== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" @@ -647,42 +727,42 @@ "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-result@^27.0.0-next.9": - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.0-next.9.tgz#77077b54df1e4ab790a62872c788674ffa7152d2" - integrity sha512-HvqCSgkIIhAShHUOB8n4AYWgaWbA8ENONcwR98UQSUm1Mkeun9alebmsDLCx5wSxaGrzQyQirkJX9hKu1wqHlQ== +"@jest/test-result@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.1.tgz#8fb97214268ea21cf8cfb83edc0f17e558b3466d" + integrity sha512-5aa+ibX2dsGSDLKaQMZb453MqjJU/CRVumebXfaJmuzuGE4qf87yQ2QZ6PEpEtBwVUEgrJCzi3jLCRaUbksSuw== dependencies: - "@jest/console" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + "@jest/console" "^27.0.1" + "@jest/types" "^27.0.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.0.0-next.9": - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.0.0-next.9.tgz#ad8bacc3f0ab251df220016707cce2eead89473b" - integrity sha512-pjJQqfllduxbXfFahjQpAuDIOt18EsOcTySSacdXelVvc/ePJOYu1gRduItzFEpJuZX1og7qJbwRWmS3XwcQaA== +"@jest/test-sequencer@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.0.1.tgz#2a3b85130978fc545d8ee6c34d65ff4231dbad86" + integrity sha512-yK2c2iruJ35WgH4KH8whS72uH+FASJUrzwxzNKTzLAEWmNpWKNEPOsSEKsHynvz78bLHafrTg4adN7RrYNbEOA== dependencies: - "@jest/test-result" "^27.0.0-next.9" + "@jest/test-result" "^27.0.1" graceful-fs "^4.2.4" - jest-haste-map "^27.0.0-next.9" - jest-runner "^27.0.0-next.9" - jest-runtime "^27.0.0-next.9" + jest-haste-map "^27.0.1" + jest-runner "^27.0.1" + jest-runtime "^27.0.1" -"@jest/transform@^27.0.0-next.9": - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.0.0-next.9.tgz#d408c49501ba4798c2d788a1519164f043ba98ec" - integrity sha512-BLqPh+J/RB/zURuSHZiPswNvMReTUSsptHz2rbIaz7L+opDBYMY3dETh5YTkcx3W4ryYSMoFrwpSOGxgUU5QfA== +"@jest/transform@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.0.1.tgz#a9ece291f82273d5e58132550996c16edd5a902a" + integrity sha512-LC95VpT6wMnQ96dRJDlUiAnW/90zyh4+jS30szI/5AsfS0qwSlr/O4TPcGoD2WVaVMfo6KvR+brvOtGyMHaNhA== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" babel-plugin-istanbul "^6.0.0" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^27.0.0-next.9" - jest-regex-util "^27.0.0-next.0" - jest-util "^27.0.0-next.9" + jest-haste-map "^27.0.1" + jest-regex-util "^27.0.1" + jest-util "^27.0.1" micromatch "^4.0.4" pirates "^4.0.1" slash "^3.0.0" @@ -709,10 +789,10 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^27.0.0-next.3", "@jest/types@^27.0.0-next.8": - version "27.0.0-next.8" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.0.0-next.8.tgz#bbc9f2acad3fea3e71444bfe06af522044a38951" - integrity sha512-MBZVjl9Fu55djCItO81sa/ifxTsqRBwepHcKM/f3sgEpGlxGFNNeKBMBRX9OcgGE64YMi7kW4MATSb2lJSGfVw== +"@jest/types@^27.0.0-next.3", "@jest/types@^27.0.1": + version "27.0.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.0.1.tgz#631738c942e70045ebbf42a3f9b433036d3845e4" + integrity sha512-8A25RRV4twZutsx2D+7WphnDsp7If9Yu6ko0Gxwrwv8BiWESFzka34+Aa2kC8w9xewt7SDuCUSZ6IiAFVj3PRg== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" @@ -1246,7 +1326,7 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.1.0: +acorn@^8.2.4: version "8.2.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== @@ -1523,16 +1603,16 @@ axios@latest: dependencies: follow-redirects "^1.10.0" -babel-jest@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.0.0-next.9.tgz#58e0b34e81495ba019d8a18c18f0a2cc5d1ad33e" - integrity sha512-CcbGKOv97PTiM+b6mAc0rWZOe1Qm4hDYhFiFgcH+YYf6ZWefPUY/SiSMG/kN48bm/nFMT55xhPNX/Hq9O95VRg== +babel-jest@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.0.1.tgz#9f1c4571ac17a39e599d1325dcaf53a274261df4" + integrity sha512-aWFD7OGQjk3Y8MdZKf1XePlQvHnjMVJQjIq9WKrlAjz9by703kJ45Jxhp26JwnovoW71YYz5etuqRl8wMcIv0w== dependencies: - "@jest/transform" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + "@jest/transform" "^27.0.1" + "@jest/types" "^27.0.1" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^27.0.0-next.3" + babel-preset-jest "^27.0.1" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -1548,10 +1628,10 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.0.0-next.3: - version "27.0.0-next.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.0-next.3.tgz#5a8a32acda0946bfad7ae25a99168b42e39229f9" - integrity sha512-s6XOBa+TIoy3tu8SLENLGk435ynzc6ojJ6O3ErI7iHyNSPjsQIZqZLbV1nIEdD5e7IrbtWml3umtxJqMnjmcAA== +babel-plugin-jest-hoist@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.1.tgz#a6d10e484c93abff0f4e95f437dad26e5736ea11" + integrity sha512-sqBF0owAcCDBVEDtxqfYr2F36eSHdx7lAVGyYuOBRnKdD6gzcy0I0XrAYCZgOA3CRrLhmR+Uae9nogPzmAtOfQ== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -1576,12 +1656,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.0.0-next.3: - version "27.0.0-next.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.0-next.3.tgz#2c696e2e048f7bf5597f9602790b36373beb8c28" - integrity sha512-1WoguNHYXSFCVvPqfjf+/J7q+OLohJzkT3vyGOACBlpjwE0b7yixW+M9O66U958/8n3UmpHXuC+cSR5p49XkcQ== +babel-preset-jest@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.1.tgz#7a50c75d16647c23a2cf5158d5bb9eb206b10e20" + integrity sha512-nIBIqCEpuiyhvjQs2mVNwTxQQa2xk70p9Dd/0obQGBf8FBzbnI8QhQKzLsWMN2i6q+5B0OcWDtrboBX5gmOLyA== dependencies: - babel-plugin-jest-hoist "^27.0.0-next.3" + babel-plugin-jest-hoist "^27.0.1" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -1785,7 +1865,7 @@ camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: +camelcase@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== @@ -2007,7 +2087,7 @@ columnify@~1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -2498,10 +2578,10 @@ diff-sequences@^26.6.2: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== -diff-sequences@^27.0.0-next.0: - version "27.0.0-next.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.0-next.0.tgz#4f0502557fd02bd7596f9c42ce67bf7d022559e8" - integrity sha512-57AobYOk6dK5sIDqkULZyHSbxA6JLMhBEZWuiVuwuNJafFOkgz4tez9DaKylgOPXX+/5YCI1GZSp+8+ctthy+w== +diff-sequences@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.1.tgz#9c9801d52ed5f576ff0a20e3022a13ee6e297e7c" + integrity sha512-XPLijkfJUh/PIBnfkcSHgvD6tlYixmcMAn3osTk6jt+H0v/mgURto1XUiD9DKuGX5NDoVS6dSlA23gd9FUaCFg== diff@^4.0.1: version "4.0.2" @@ -2948,17 +3028,17 @@ expect@^24.1.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -expect@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.0-next.9.tgz#ac94956ad04b0f28ad3c1b6ebec99d225f9654a5" - integrity sha512-uOD7zmJs6bVBoF4+xGUg6lpWDm06TFtwMh+iORG2YGYUSqmz2qFCtmV8bZ0/fEm6qR/pIENKY36CrLiihk3ANA== +expect@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.1.tgz#1290c74fef8d62f15f4c5dd1d7233001909abbfb" + integrity sha512-hjKwLeAvKUiq0Plha1dmzOH1FGEwJC9njbT993cq4PK9r58/+3NM+WDqFVGcPuRH7XTjmbIeHQBzp2faDrPhjQ== dependencies: - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" ansi-styles "^5.0.0" - jest-get-type "^27.0.0-next.9" - jest-matcher-utils "^27.0.0-next.9" - jest-message-util "^27.0.0-next.9" - jest-regex-util "^27.0.0-next.0" + jest-get-type "^27.0.1" + jest-matcher-utils "^27.0.1" + jest-message-util "^27.0.1" + jest-regex-util "^27.0.1" extend-shallow@^2.0.1: version "2.0.1" @@ -3159,6 +3239,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -3204,7 +3293,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.2.1: +fsevents@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -3897,7 +3986,7 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-potential-custom-element-name@^1.0.0: +is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== @@ -4027,83 +4116,83 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^27.0.0-next.8: - version "27.0.0-next.8" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.0.0-next.8.tgz#49665c7852c315da415de5380f8022b39a68ae99" - integrity sha512-7ToSqPeXPGfK0ibRbkzke3E3vq5YhtANm4jWsD41RKQ/T2dG+jB+OEF6OVaLffF/ahokd77WYqkcvwLzhdm8LA== +jest-changed-files@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.0.1.tgz#b8356b3708cac9d05ebf6f9e0b32227b514945c8" + integrity sha512-Y/4AnqYNcUX/vVgfkmvSA3t7rcg+t8m3CsSGlU+ra8kjlVW5ZqXcBZY/NUew2Mo8M+dn0ApKl+FmGGT1JV5dVA== dependencies: - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.0.0-next.9.tgz#cd614398045644f36d7c2ef6c97873814df3df6f" - integrity sha512-IuGN9B0AEgbK2tfYRHmSil0GaRfsKigs9qXU1V4k96M2Db7UDfPwfGJ5JALLUyU7cHv5f1HoAh1L53d7dOMXrQ== +jest-circus@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.0.1.tgz#3a7ec9e9fd60ef4c827197dffe2288aa19f86678" + integrity sha512-Tz3ytmrsgxWlTwSyPYb8StF9J2IMjLlbBMKAjhL2UU9/0ZpYb2JiEGjXaAhnGauQRbbpyFbSH3yj5HIbdurmwQ== dependencies: - "@jest/environment" "^27.0.0-next.9" - "@jest/test-result" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + "@jest/environment" "^27.0.1" + "@jest/test-result" "^27.0.1" + "@jest/types" "^27.0.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.0.0-next.9" + expect "^27.0.1" is-generator-fn "^2.0.0" - jest-each "^27.0.0-next.9" - jest-matcher-utils "^27.0.0-next.9" - jest-message-util "^27.0.0-next.9" - jest-runner "^27.0.0-next.9" - jest-runtime "^27.0.0-next.9" - jest-snapshot "^27.0.0-next.9" - jest-util "^27.0.0-next.9" - pretty-format "^27.0.0-next.9" + jest-each "^27.0.1" + jest-matcher-utils "^27.0.1" + jest-message-util "^27.0.1" + jest-runner "^27.0.1" + jest-runtime "^27.0.1" + jest-snapshot "^27.0.1" + jest-util "^27.0.1" + pretty-format "^27.0.1" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.0.0-next.8: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.0.0-next.9.tgz#cbb66e567f90da512d4cd4114564452e6665986c" - integrity sha512-aUHKKcWE/7m7CnK38LUGz1T24kT2BQyHyiSascdFY/Q2zVrrwrU3TKx6OiMErsiBC2VFAM/ACDpMlFWothKUhw== +jest-cli@^27.0.0-next.11: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.0.1.tgz#9accc8a505438571ee423438eac526a7ee4654b5" + integrity sha512-plDsQQwpkKK1SZ5L5xqMa7v/sTwB5LTIeSJqb+cV+4EMlThdUQfg8jwMfHX8jHuUc9TPGLcdoZeBuZcGGn3Rlg== dependencies: - "@jest/core" "^27.0.0-next.9" - "@jest/test-result" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + "@jest/core" "^27.0.1" + "@jest/test-result" "^27.0.1" + "@jest/types" "^27.0.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" - is-ci "^3.0.0" - jest-config "^27.0.0-next.9" - jest-util "^27.0.0-next.9" - jest-validate "^27.0.0-next.9" + jest-config "^27.0.1" + jest-util "^27.0.1" + jest-validate "^27.0.1" prompts "^2.0.1" yargs "^16.0.3" -jest-config@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.0.0-next.9.tgz#dc85f830496138688a39fe2f91a67acbe6ed7a0f" - integrity sha512-z3PAvADcgYTehwPyB95ZNX5m9uWuFgDOa5lPEJBAVHZ2kXZhUbyXpZQoQc5V4USv3PtUxTGoLveoiMG0tFVzEg== +jest-config@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.0.1.tgz#db4f202efcbb92011f62d8f25b52c3d1bd5672d4" + integrity sha512-V8O6+CZjGF0OMq4kxVR29ztV/LQqlAAcJLw7a94RndfRXkha4U84n50yZCXiPWtAHHTmb3g1y52US6rGPxA+3w== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" - babel-jest "^27.0.0-next.9" + "@jest/test-sequencer" "^27.0.1" + "@jest/types" "^27.0.1" + babel-jest "^27.0.1" chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-circus "^27.0.0-next.9" - jest-environment-jsdom "^27.0.0-next.9" - jest-environment-node "^27.0.0-next.9" - jest-get-type "^27.0.0-next.9" - jest-jasmine2 "^27.0.0-next.9" - jest-regex-util "^27.0.0-next.0" - jest-resolve "^27.0.0-next.9" - jest-util "^27.0.0-next.9" - jest-validate "^27.0.0-next.9" + is-ci "^3.0.0" + jest-circus "^27.0.1" + jest-environment-jsdom "^27.0.1" + jest-environment-node "^27.0.1" + jest-get-type "^27.0.1" + jest-jasmine2 "^27.0.1" + jest-regex-util "^27.0.1" + jest-resolve "^27.0.1" + jest-util "^27.0.1" + jest-validate "^27.0.1" micromatch "^4.0.4" - pretty-format "^27.0.0-next.9" + pretty-format "^27.0.1" jest-diff@^24.9.0: version "24.9.0" @@ -4125,58 +4214,58 @@ jest-diff@^26.0.0: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-diff@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.0.0-next.9.tgz#93299ace5a424c2bb81d77cb36fac3deed336bc2" - integrity sha512-E/dpOuidmz8d0S8CsESvvyVnhJOkzc/qqg9cN6F83ccnklFHTAMMmcaqxw2jemZ6F5koHpYwe0D/Ndy7g5CVmQ== +jest-diff@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.0.1.tgz#021beb29fe9f07e83c809a4f7a1ce807b229c4ab" + integrity sha512-DQ3OgfJgoGWVTYo4qnYW/Jg5mpYFS2QW9BLxA8bs12ZRN1K8QPZtWeYvUPohQFs3CHX3JLTndGg3jyxdL5THFQ== dependencies: chalk "^4.0.0" - diff-sequences "^27.0.0-next.0" - jest-get-type "^27.0.0-next.9" - pretty-format "^27.0.0-next.9" + diff-sequences "^27.0.1" + jest-get-type "^27.0.1" + pretty-format "^27.0.1" -jest-docblock@^27.0.0-next.0: - version "27.0.0-next.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.0-next.0.tgz#c65a5d914d2108c70541ea195dc6fba8a32d28b4" - integrity sha512-YZU1l+n0mo55VHY3+Mt6wsRxkaCV7iQ+Xhv1AtEQI1hrXmSeR0ligscyIy4rr8zA3Isfw9N62zREb605FZnKZg== +jest-docblock@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.1.tgz#bd9752819b49fa4fab1a50b73eb58c653b962e8b" + integrity sha512-TA4+21s3oebURc7VgFV4r7ltdIJ5rtBH1E3Tbovcg7AV+oLfD5DcJ2V2vJ5zFA9sL5CFd/d2D6IpsAeSheEdrA== dependencies: detect-newline "^3.0.0" -jest-each@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.0.0-next.9.tgz#021ebddd4c5a14bac579f561a17fdc03257058b9" - integrity sha512-6nwrBetQLFvc4Hhim1I6/IU091zbFoYTXQB2/m9Zj3X0q4I0W2PS7r/iQFiwxYeK6E6QLRgGc4qcbXhU7WKfQw== +jest-each@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.0.1.tgz#37fa20b7d809b29d4349d8eb7d01f17c2feeab10" + integrity sha512-uJTK/aZ05HsdKkfXucAT5+/1DIURnTRv34OSxn1HWHrD+xu9eDX5Xgds09QSvg/mU01VS5upuHTDKG3W+r0rQA== dependencies: - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" chalk "^4.0.0" - jest-get-type "^27.0.0-next.9" - jest-util "^27.0.0-next.9" - pretty-format "^27.0.0-next.9" - -jest-environment-jsdom@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.0.0-next.9.tgz#6155ad97b85c591810901d9cb51c0a06a7a18679" - integrity sha512-86C+QTIryBNbASMed9L3ZIkURLH0axgHIJnWduFH1tcW5m3eOR/gs3iKQyg+T753YL4MzxqGxZl5YCjGuKMrXQ== - dependencies: - "@jest/environment" "^27.0.0-next.9" - "@jest/fake-timers" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + jest-get-type "^27.0.1" + jest-util "^27.0.1" + pretty-format "^27.0.1" + +jest-environment-jsdom@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.0.1.tgz#12b0ed587fb53e0a581a5101bb209aef09da2310" + integrity sha512-lesU8T9zkjgLaLpUFmFDgchu6/2OCoXm52nN6UumR063Hb+1TJdI7ihgM86+G01Ay86Lyr+K/FAR6yIIOviH3Q== + dependencies: + "@jest/environment" "^27.0.1" + "@jest/fake-timers" "^27.0.1" + "@jest/types" "^27.0.1" "@types/node" "*" - jest-mock "^27.0.0-next.8" - jest-util "^27.0.0-next.9" - jsdom "^16.4.0" - -jest-environment-node@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.0.0-next.9.tgz#962c002d6f3a4724ac0452929dce3b118dbdfc7f" - integrity sha512-/Il51oAoFWfQuW+H4CkLBEwnoJFE5RwDDc+ZP64Z0ZO+3ElWe61OPN0K75OgEOXDxrOssIvlEWHcfotCVY5M+w== - dependencies: - "@jest/environment" "^27.0.0-next.9" - "@jest/fake-timers" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + jest-mock "^27.0.1" + jest-util "^27.0.1" + jsdom "^16.6.0" + +jest-environment-node@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.0.1.tgz#7d7df7ae191477a823ffb4fcc0772b4c23ec5c87" + integrity sha512-/p94lo0hx+hbKUw1opnRFUPPsjncRBEUU+2Dh7BuxX8Nr4rRiTivLYgXzo79FhaeMYV0uiV5WAbHBq6xC11JJg== + dependencies: + "@jest/environment" "^27.0.1" + "@jest/fake-timers" "^27.0.1" + "@jest/types" "^27.0.1" "@types/node" "*" - jest-mock "^27.0.0-next.8" - jest-util "^27.0.0-next.9" + jest-mock "^27.0.1" + jest-util "^27.0.1" jest-extended@latest: version "0.11.5" @@ -4202,62 +4291,62 @@ jest-get-type@^26.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-get-type@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.0-next.9.tgz#af6f58c4c4bb12c4661501e6f38e326a9308d81f" - integrity sha512-uxp8fig6f4S5BlhM5UzyEAnZupYIH1bhRmD3Krkm3UA73zIsAAIsmGuVSBDcVBXbpQ97bTYTgEkVdCtMaMOBSA== +jest-get-type@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.1.tgz#34951e2b08c8801eb28559d7eb732b04bbcf7815" + integrity sha512-9Tggo9zZbu0sHKebiAijyt1NM77Z0uO4tuWOxUCujAiSeXv30Vb5D4xVF4UR4YWNapcftj+PbByU54lKD7/xMg== -jest-haste-map@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.0.0-next.9.tgz#03714ea28fea6afd13d3c81f533180366719a738" - integrity sha512-QYK/vPt89khW22Ikie3qkivFY02Tp4ejFHI8CPr/uhd/cG5A49wKj16Cgw5DkZVWKo18Wo60nQ2r21keE1svbQ== +jest-haste-map@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.0.1.tgz#653c4ba59309a86499ad7bf663176e7f97478191" + integrity sha512-ioCuobr4z90H1Pz8+apz2vfz63387apzAoawm/9IIOndarDfRkjLURdLOe//AI5jUQmjVRg+WiL92339kqlCmA== dependencies: - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" - jest-regex-util "^27.0.0-next.0" - jest-serializer "^27.0.0-next.9" - jest-util "^27.0.0-next.9" - jest-worker "^27.0.0-next.9" + jest-regex-util "^27.0.1" + jest-serializer "^27.0.1" + jest-util "^27.0.1" + jest-worker "^27.0.1" micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: - fsevents "^2.2.1" + fsevents "^2.3.2" -jest-jasmine2@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.0.0-next.9.tgz#cedf50d5f4b0549122302943854d924fa005bd63" - integrity sha512-g4/Jx4Kvy4JHIX6tjc5N1aYrTEH9dF5RDbQcByRIq7V/4vsuNoh/39fSoMMdllvqOqCfHL4AQT8wDAfagJN6rg== +jest-jasmine2@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.0.1.tgz#d975bfe072f3ac3596c0be5fc0a1215fd2e91e77" + integrity sha512-o8Ist0o970QDDm/R2o9UDbvNxq8A0++FTFQ0z9OnieJwS1nDH6H7WBDYAGPTdmnla7kbW41oLFPvhmjJE4mekg== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.0.0-next.9" - "@jest/source-map" "^27.0.0-next.3" - "@jest/test-result" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + "@jest/environment" "^27.0.1" + "@jest/source-map" "^27.0.1" + "@jest/test-result" "^27.0.1" + "@jest/types" "^27.0.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^27.0.0-next.9" + expect "^27.0.1" is-generator-fn "^2.0.0" - jest-each "^27.0.0-next.9" - jest-matcher-utils "^27.0.0-next.9" - jest-message-util "^27.0.0-next.9" - jest-runtime "^27.0.0-next.9" - jest-snapshot "^27.0.0-next.9" - jest-util "^27.0.0-next.9" - pretty-format "^27.0.0-next.9" + jest-each "^27.0.1" + jest-matcher-utils "^27.0.1" + jest-message-util "^27.0.1" + jest-runtime "^27.0.1" + jest-snapshot "^27.0.1" + jest-util "^27.0.1" + pretty-format "^27.0.1" throat "^6.0.1" -jest-leak-detector@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.0.0-next.9.tgz#c2e31907e6aa2e3d4ebb6bc5428ee954fe3002dc" - integrity sha512-0gUtjim26ku6XsW1BoZLIIDT9RI0Vj0zClDyjPn/7vzCiBoS0BnPSwHB95E/r2VxPetbmzjBSatiWaoZPvcZOQ== +jest-leak-detector@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.0.1.tgz#eedeaee7c0ab553db4d8908f74967329624342b9" + integrity sha512-SQ/lRhfmnV3UuiaKIjwNXCaW2yh1rTMAL4n4Cl4I4gU0X2LoIc6Ogxe4UKM/J6Ld2uzc4gDGVYc5lSdpf6WjYw== dependencies: - jest-get-type "^27.0.0-next.9" - pretty-format "^27.0.0-next.9" + jest-get-type "^27.0.1" + pretty-format "^27.0.1" jest-matcher-utils@^22.0.0: version "22.4.3" @@ -4278,15 +4367,15 @@ jest-matcher-utils@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-matcher-utils@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.0-next.9.tgz#2832c939391fed9d2836621fc7a829dd2051f2f2" - integrity sha512-OKCVeYQiE4P+HJFwnBUbeoqu6SbnnKt9unVG7fpLfPKATZYTuDZ2tZU+JEbYh2phjP7Z3xLjFTzFT6HS3+NEuA== +jest-matcher-utils@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.1.tgz#7a01330786e370f152b0b0159f827293b6322909" + integrity sha512-NauNU+olKhPzLlsRnTOYFGk/MK5QFYl9ZzkrtfsY4eCq4SB3Bcl03UL44VdnlN5S/uFn4H2jwvRY1y6nSDTX3g== dependencies: chalk "^4.0.0" - jest-diff "^27.0.0-next.9" - jest-get-type "^27.0.0-next.9" - pretty-format "^27.0.0-next.9" + jest-diff "^27.0.1" + jest-get-type "^27.0.1" + pretty-format "^27.0.1" jest-message-util@^24.9.0: version "24.9.0" @@ -4302,27 +4391,27 @@ jest-message-util@^24.9.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-message-util@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.0.0-next.9.tgz#b7e3dea5457ac32917cbb953f00f8d792b1b11df" - integrity sha512-1N1jy4UBJ68uvrOAWLJcKzzyVhv9aKl0Lwu4wBJ6Bl410h/Doxm7kbhlX9dKcwx+baPLKkt3Z+x1fUlB0IdedA== +jest-message-util@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.0.1.tgz#382b7c55d8e0b1aba9eeb41d3cfdd34e451210ed" + integrity sha512-w8BfON2GwWORkos8BsxcwwQrLkV2s1ENxSRXK43+6yuquDE2hVxES/jrFqOArpP1ETVqqMmktU6iGkG8ncVzeA== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.4" - pretty-format "^27.0.0-next.9" + pretty-format "^27.0.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.0.0-next.8: - version "27.0.0-next.8" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.0.0-next.8.tgz#46f9bbf3b71f45d4a9dcef1b40905e83c444ca8c" - integrity sha512-MzCeNBngiRSJY/iuxSwP6t1WnT0ZP/0efQXBRxh7go6Y7qlY2UWPLZHGr6d9Aq5VM7g0AJTNoC1YJpgEDtZFiQ== +jest-mock@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.0.1.tgz#8394e297bc3dfed980961622cb51fd042b4acf5a" + integrity sha512-fXCSZQDT5hUcAUy8OBnB018x7JFOMQnz4XfpSKEbfpWzL6o5qaLRhgf2Qg2NPuVKmC/fgOf33Edj8wjF4I24CQ== dependencies: - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -4335,74 +4424,74 @@ jest-regex-util@^24.9.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== -jest-regex-util@^27.0.0-next.0: - version "27.0.0-next.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.0-next.0.tgz#559ff0c5388000d3b82dacc6adca682af9f9dabb" - integrity sha512-9f6JHFuKOGaTaBWAfneX6k/20o9t2O0JTwOCn/2qlBUZRbQt1sqd2U3qme7t85n8qZVdd/LRteUyZ6lnbWDNvg== +jest-regex-util@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.1.tgz#69d4b1bf5b690faa3490113c47486ed85dd45b68" + integrity sha512-6nY6QVcpTgEKQy1L41P4pr3aOddneK17kn3HJw6SdwGiKfgCGTvH02hVXL0GU8GEKtPH83eD2DIDgxHXOxVohQ== -jest-resolve-dependencies@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.0-next.9.tgz#c9f79bae26cb6951bb935c8232a79d72414a36e3" - integrity sha512-LREry5nwD52wyluXaa1DmnVDPJKM5j3O7Jj4eqgsnFFBpXYYNLKvuKsQpMHL1NGfpiRucTrG4nx3XRRW/rKGfw== +jest-resolve-dependencies@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.1.tgz#3dcaeb277e0253747706467e8f05e1e78a1d534d" + integrity sha512-ly1x5mEf21f3IVWbUNwIz/ePLtv4QdhYuQIVSVDqxx7yzAwhhdu0DJo7UNiEYKQY7Im48wfbNdOUpo7euFUXBQ== dependencies: - "@jest/types" "^27.0.0-next.8" - jest-regex-util "^27.0.0-next.0" - jest-snapshot "^27.0.0-next.9" + "@jest/types" "^27.0.1" + jest-regex-util "^27.0.1" + jest-snapshot "^27.0.1" -jest-resolve@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.0.0-next.9.tgz#5bf9beb45b9eca220293e1e73b14333aae1ecc4e" - integrity sha512-058RmgHzNnaMtG93kaqB1ywK6jcmKMgo32zmKMw2E9FOfyjJzw/e4PEYA67iT7pDW0vJw6oDLKHyGftzrlxFjg== +jest-resolve@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.0.1.tgz#4e1b76f61c7e2213d2fbd37342800864309de538" + integrity sha512-Q7QQ0OZ7z6D5Dul0MrsexlKalU8ZwexBfHLSu1qYPgphvUm6WO1b/xUnipU3e+uW1riDzMcJeJVYbdQ37hBHeg== dependencies: - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" chalk "^4.0.0" escalade "^3.1.1" graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.2" - jest-util "^27.0.0-next.9" + jest-util "^27.0.1" resolve "^1.20.0" slash "^3.0.0" -jest-runner@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.0.0-next.9.tgz#bfa56012987c59fd43dda60cf6ff9a38778da46d" - integrity sha512-IAix7m3kQecTae+OUYK9XmZpkQJiVMifQrIIcLl1KiUmS1YC+k35SZnZoShvYlsnpzJNGx8Jb2jlHgurlPoxkA== - dependencies: - "@jest/console" "^27.0.0-next.9" - "@jest/environment" "^27.0.0-next.9" - "@jest/test-result" "^27.0.0-next.9" - "@jest/transform" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" +jest-runner@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.0.1.tgz#52137173fbf318b7b1f034b81200c2846758f681" + integrity sha512-DUNizlD2D7J80G3VOrwfbtb7KYxiftMng82HNcKwTW0W3AwwNuBeq+1exoCnLO7Mxh7NP+k/1XQBlzLpjr/CnA== + dependencies: + "@jest/console" "^27.0.1" + "@jest/environment" "^27.0.1" + "@jest/test-result" "^27.0.1" + "@jest/transform" "^27.0.1" + "@jest/types" "^27.0.1" "@types/node" "*" chalk "^4.0.0" emittery "^0.8.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^27.0.0-next.9" - jest-docblock "^27.0.0-next.0" - jest-haste-map "^27.0.0-next.9" - jest-leak-detector "^27.0.0-next.9" - jest-message-util "^27.0.0-next.9" - jest-resolve "^27.0.0-next.9" - jest-runtime "^27.0.0-next.9" - jest-util "^27.0.0-next.9" - jest-worker "^27.0.0-next.9" + jest-config "^27.0.1" + jest-docblock "^27.0.1" + jest-haste-map "^27.0.1" + jest-leak-detector "^27.0.1" + jest-message-util "^27.0.1" + jest-resolve "^27.0.1" + jest-runtime "^27.0.1" + jest-util "^27.0.1" + jest-worker "^27.0.1" source-map-support "^0.5.6" throat "^6.0.1" -jest-runtime@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.0.0-next.9.tgz#272fe4b10faf8483701fe41186372b8c31461355" - integrity sha512-ElVTkvEucuf/e6wTN4zvqnBEG+QJ06j/XzzYEplMoTmNwi8VM2qNNIsyUXvQNt/if9cIW8SG7DXf3K34/3LCzQ== - dependencies: - "@jest/console" "^27.0.0-next.9" - "@jest/environment" "^27.0.0-next.9" - "@jest/fake-timers" "^27.0.0-next.9" - "@jest/globals" "^27.0.0-next.9" - "@jest/source-map" "^27.0.0-next.3" - "@jest/test-result" "^27.0.0-next.9" - "@jest/transform" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" +jest-runtime@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.0.1.tgz#b71bb8ea189c50525aebb4aba6c524633ca27659" + integrity sha512-ImcrbQtpCUp8X9Rm4ky3j1GG9cqIKZJvXGZyB5cHEapGPTmg7wvvNooLmKragEe61/p/bhw1qO68Y0/9BSsBBg== + dependencies: + "@jest/console" "^27.0.1" + "@jest/environment" "^27.0.1" + "@jest/fake-timers" "^27.0.1" + "@jest/globals" "^27.0.1" + "@jest/source-map" "^27.0.1" + "@jest/test-result" "^27.0.1" + "@jest/transform" "^27.0.1" + "@jest/types" "^27.0.1" "@types/yargs" "^16.0.0" chalk "^4.0.0" cjs-module-lexer "^1.0.0" @@ -4410,53 +4499,54 @@ jest-runtime@^27.0.0-next.9: exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-haste-map "^27.0.0-next.9" - jest-message-util "^27.0.0-next.9" - jest-mock "^27.0.0-next.8" - jest-regex-util "^27.0.0-next.0" - jest-resolve "^27.0.0-next.9" - jest-snapshot "^27.0.0-next.9" - jest-util "^27.0.0-next.9" - jest-validate "^27.0.0-next.9" + jest-haste-map "^27.0.1" + jest-message-util "^27.0.1" + jest-mock "^27.0.1" + jest-regex-util "^27.0.1" + jest-resolve "^27.0.1" + jest-snapshot "^27.0.1" + jest-util "^27.0.1" + jest-validate "^27.0.1" slash "^3.0.0" strip-bom "^4.0.0" yargs "^16.0.3" -jest-serializer@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.0-next.9.tgz#99c91d3f15771a3654f0cc25d0d26478332110af" - integrity sha512-iZQ0F7bHAupG0jG/uiiRhrKTP3BfWj1K+gBwZvztyYtsOYPSab3hbr0oFnpitIB/fNihksZRJ/yvbj1JxCocpg== +jest-serializer@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.1.tgz#2464d04dcc33fb71dc80b7c82e3c5e8a08cb1020" + integrity sha512-svy//5IH6bfQvAbkAEg1s7xhhgHTtXu0li0I2fdKHDsLP2P2MOiscPQIENQep8oU2g2B3jqLyxKKzotZOz4CwQ== dependencies: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.0.0-next.9.tgz#cc42a800d5e9057ef0e461cdc15448aa831ef8f2" - integrity sha512-L1p9SYNlOKm8LcWBKc3pxeU/vWGFYMP7+/SvY5kf0rPh5fQfjr80g481DqLqh0cdF4nPFwxRVVl4FB/Oi490GQ== +jest-snapshot@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.0.1.tgz#01a82d901f260604908373795c9255b032d2a07a" + integrity sha512-HgKmSebDB3rswugREeh+nKrxJEVZE12K7lZ2MuwfFZT6YmiH0TlofsL2YmiLsCsG5KH5ZcLYYpF5bDrvtVx/Xg== dependencies: + "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" "@babel/parser" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/transform" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + "@jest/transform" "^27.0.1" + "@jest/types" "^27.0.1" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.0.0-next.9" + expect "^27.0.1" graceful-fs "^4.2.4" - jest-diff "^27.0.0-next.9" - jest-get-type "^27.0.0-next.9" - jest-haste-map "^27.0.0-next.9" - jest-matcher-utils "^27.0.0-next.9" - jest-message-util "^27.0.0-next.9" - jest-resolve "^27.0.0-next.9" - jest-util "^27.0.0-next.9" + jest-diff "^27.0.1" + jest-get-type "^27.0.1" + jest-haste-map "^27.0.1" + jest-matcher-utils "^27.0.1" + jest-message-util "^27.0.1" + jest-resolve "^27.0.1" + jest-util "^27.0.1" natural-compare "^1.4.0" - pretty-format "^27.0.0-next.9" + pretty-format "^27.0.1" semver "^7.3.2" jest-util@27.0.0-next.3: @@ -4471,60 +4561,60 @@ jest-util@27.0.0-next.3: is-ci "^3.0.0" micromatch "^4.0.2" -jest-util@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.0.0-next.9.tgz#05ec3996e15edd1510cfcfdc6dda3de8c837546b" - integrity sha512-q9/hnWgFIx4Wkd/RoxoOeODL1kvwlX8+uo5fdi5oxEi7CrJIUDXS/QqICWo0GoqW4HlEgATdLmjG1gZXXDSyww== +jest-util@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.0.1.tgz#324ed9879d129c1e64f9169a739d6d50d7928769" + integrity sha512-lEw3waSmEOO4ZkwkUlFSvg4es1+8+LIkSGxp/kF60K0+vMR3Dv3O2HMZhcln9NHqSQzpVbsDT6OeMzUPW7DfRg== dependencies: - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" "@types/node" "*" chalk "^4.0.0" graceful-fs "^4.2.4" is-ci "^3.0.0" picomatch "^2.2.3" -jest-validate@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.0.0-next.9.tgz#2748216952e0a546dc625ae9012b44e5fe0249a2" - integrity sha512-5+hFPs0AbFXSTikIyeA9uO56GUALKwo10a795vn0QDx9qoisGY4FWiilk4GLfVdxXyQylD94vndC4luCPzMWcg== +jest-validate@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.0.1.tgz#8e43428674b6097f8ee3abe42c4248a4826cd008" + integrity sha512-zvmPRcfTkqTZuHveIKAI2nbkUc3SDXjWVJULknPLGF5bdxOGSeGZg7f/Uw0MUVOkCOaspcHnsPCgZG0pqmg71g== dependencies: - "@jest/types" "^27.0.0-next.8" - camelcase "^6.0.0" + "@jest/types" "^27.0.1" + camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.0.0-next.9" + jest-get-type "^27.0.1" leven "^3.1.0" - pretty-format "^27.0.0-next.9" + pretty-format "^27.0.1" -jest-watcher@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.0.0-next.9.tgz#712085fb44aeb5aa7b699797b10ee1b0e91e3949" - integrity sha512-ka4E2N3GKFKtenWCnTChIiwqA5taLdBduEHKrHPQglS/PrxFV0XqWJ8tu289I8rwCdzb3dAoMQ/No9PY8RRJpA== +jest-watcher@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.0.1.tgz#61b9403d7b498161f6aa6124602363525ac3efc2" + integrity sha512-Chp9c02BN0IgEbtGreyAhGqIsOrn9a0XnzbuXOxdW1+cW0Tjh12hMzHDIdLFHpYP/TqaMTmPHaJ5KWvpCCrNFw== dependencies: - "@jest/test-result" "^27.0.0-next.9" - "@jest/types" "^27.0.0-next.8" + "@jest/test-result" "^27.0.1" + "@jest/types" "^27.0.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.0.0-next.9" + jest-util "^27.0.1" string-length "^4.0.1" -jest-worker@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.0-next.9.tgz#66056ca63f0bd32563f6a22e581dade95d44b01e" - integrity sha512-uEhpx/rN5f+GIW93K+HO1f+OAjdiTwAZ/taFEa56gpY2TFboHzBG5bNNHwRN35l5e95A5fdtOeSQIhXUM0qEBQ== +jest-worker@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.1.tgz#b255fcbb40fb467295010c628474b1185cab4f9e" + integrity sha512-NhHqClI3owOjmS8dBhQMKHZ2rrT0sBTpqGitp9nMX5AAjVXd+15o4v96uBEMhoywaLKN+5opcKBlXwAoADZolA== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@27.0.0-next.8: - version "27.0.0-next.8" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.0.0-next.8.tgz#d16644a273122a8df8199d254df4209e6a9f9476" - integrity sha512-LjCtGL4SbSD+hFDykFdlriZ70iW0ZBU60n4UIraq/Ug2jGzrBqNznVLiVFRwvkdZcEzq634MOKE9/xV2PafdVg== +jest@next: + version "27.0.0-next.11" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.0.0-next.11.tgz#8fc795e112bf228529b85716a451bc22a8537549" + integrity sha512-v91zuQFGR/M0fauu25LlIJWng7KM6eQ4fKfPqnD/HOlhlMvNugaU/eYOQhULPCjlQGJH3hIJWLq7U3p0jMzT7A== dependencies: - "@jest/core" "^27.0.0-next.8" + "@jest/core" "^27.0.0-next.11" import-local "^3.0.2" - jest-cli "^27.0.0-next.8" + jest-cli "^27.0.0-next.11" js-tokens@^4.0.0: version "4.0.0" @@ -4549,13 +4639,13 @@ jsdoctypeparser@^9.0.0: resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz#8c97e2fb69315eb274b0f01377eaa5c940bd7b26" integrity sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw== -jsdom@^16.4.0: - version "16.5.3" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.5.3.tgz#13a755b3950eb938b4482c407238ddf16f0d2136" - integrity sha512-Qj1H+PEvUsOtdPJ056ewXM4UJPCi4hhLA8wpiz9F2YvsRBhuFsXxtrIFAgGBDynQA9isAMGE91PfUYbdMPXuTA== +jsdom@^16.6.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" + integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== dependencies: abab "^2.0.5" - acorn "^8.1.0" + acorn "^8.2.4" acorn-globals "^6.0.0" cssom "^0.4.4" cssstyle "^2.3.0" @@ -4563,12 +4653,13 @@ jsdom@^16.4.0: decimal.js "^10.2.1" domexception "^2.0.1" escodegen "^2.0.0" + form-data "^3.0.0" html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" nwsapi "^2.2.0" parse5 "6.0.1" - request "^2.88.2" - request-promise-native "^1.0.9" saxes "^5.0.1" symbol-tree "^3.2.4" tough-cookie "^4.0.0" @@ -4578,7 +4669,7 @@ jsdom@^16.4.0: whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" whatwg-url "^8.5.0" - ws "^7.4.4" + ws "^7.4.5" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -6085,12 +6176,12 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^27.0.0-next.9: - version "27.0.0-next.9" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.0-next.9.tgz#37272be62520236a17e77038d1c9dd15a6e695ad" - integrity sha512-BF2889sl/4yxeInR4tYnJQu6IOKNjZdujqcLaMoQUd1G9CykEBrpCuT6a86Q8iKXyaJMq2MMCfTPHe4TjAwbhA== +pretty-format@^27.0.1: + version "27.0.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.1.tgz#c4094621dfbd3e8ab751964d1cf01edc6f88474d" + integrity sha512-qE+0J6c/gd+R6XTcQgPJMc5hMJNsxzSF5p8iZSbMZ7GQzYGlSLNkh2P80Wa2dbF4gEVUsJEgcrBY+1L2/j265w== dependencies: - "@jest/types" "^27.0.0-next.8" + "@jest/types" "^27.0.1" ansi-regex "^5.0.0" ansi-styles "^5.0.0" react-is "^17.0.1" @@ -6410,22 +6501,6 @@ replace-in-file@latest: glob "^7.1.6" yargs "^16.2.0" -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -6898,11 +6973,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - string-argv@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" @@ -7214,14 +7284,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -7231,6 +7293,14 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tr46@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" @@ -7687,10 +7757,10 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.4.4: - version "7.4.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" - integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== +ws@^7.4.5: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== xml-name-validator@^3.0.0: version "3.0.0"