├── .gitignore ├── .idea └── .gitignore ├── README.md ├── docs └── tests-result.png ├── jest.config.ts ├── jest.e2e.config.ts ├── package.json ├── src ├── contexts │ ├── invoice │ │ ├── app │ │ │ └── use-cases │ │ │ │ ├── create-invoice.use-case.ts │ │ │ │ ├── list-invoices.use-case.ts │ │ │ │ └── test │ │ │ │ ├── create-invoice-use-case.spec.ts │ │ │ │ ├── invoice-repository.mock.ts │ │ │ │ └── list-invoices-use-case.spec.ts │ │ ├── domain │ │ │ ├── amount.value-object.ts │ │ │ ├── invoice-created.event.ts │ │ │ ├── invoice.aggregate.ts │ │ │ ├── item-name.value-object.ts │ │ │ ├── product-to-invoice.adapter.ts │ │ │ ├── repository.interface.ts │ │ │ └── test │ │ │ │ ├── amount.value-object.spec.ts │ │ │ │ ├── invoice.aggregate.spec.ts │ │ │ │ ├── item-name.value-object.spec.ts │ │ │ │ └── product-to-domain-adapter.spec.ts │ │ └── infra │ │ │ ├── generate-invoice.service.ts │ │ │ ├── injection.service.ts │ │ │ ├── invoice.controller.ts │ │ │ ├── invoice.model.ts │ │ │ ├── invoice.module.ts │ │ │ └── repository.ts │ └── product │ │ ├── app │ │ └── use-cases │ │ │ ├── create-product.use-case.ts │ │ │ ├── list-products.use-case.ts │ │ │ ├── test │ │ │ ├── create-product-use-case.spec.ts │ │ │ ├── list-products-use-case.spec.ts │ │ │ ├── product-repository.mock.ts │ │ │ └── update-product-use-case.spec.ts │ │ │ └── update-product.use-case.ts │ │ ├── domain │ │ ├── product-created.event.ts │ │ ├── product-name.value-object.ts │ │ ├── product-price.value-object.ts │ │ ├── product-to-domain.adapter.ts │ │ ├── product.aggregate.ts │ │ ├── repository.interface.ts │ │ └── test │ │ │ ├── product-name.value-object.spec.ts │ │ │ ├── product-price.value-object.spec.ts │ │ │ ├── product-to-domain-adapter.spec.ts │ │ │ └── product.aggregate.spec.ts │ │ └── infra │ │ ├── injection.service.ts │ │ ├── product.controller.ts │ │ ├── product.model.ts │ │ ├── product.module.ts │ │ └── repository.ts ├── main.ts ├── server.ts ├── test │ └── app.test.ts └── types │ └── index.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | coverage/ 3 | dist/ -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DDD APP 2 | 3 | ## Simple App 4 | 5 | App built using `types-ddd` v3 [Link Here](https://www.npmjs.com/package/types-ddd) 6 | 7 | A minimum project to test the domain driven design lib 8 | 9 | ![](docs/tests-result.png) 10 | 11 | ### How to run this app 12 | 13 | - Install deps 14 | 15 | ```sh 16 | 17 | $ yarn install 18 | 19 | ``` 20 | 21 | - Run the tests 22 | 23 | ```sh 24 | 25 | $ yarn test 26 | 27 | ``` 28 | 29 | - Run the app 30 | 31 | ```sh 32 | 33 | $ yarn dev 34 | 35 | ``` 36 | 37 | - Run integration tests 38 | 39 | ```sh 40 | 41 | $ yarn test:e2e 42 | 43 | ``` 44 | 45 | - On your terminal run commands or copy curl to execute in postman* 46 | 47 | ```sh 48 | 49 | # List products 50 | 51 | $ curl http://localhost:3000/products | jq '.' 52 | 53 | ``` 54 | 55 | ```sh 56 | 57 | # Create Product 58 | 59 | $ curl -X POST -H "Content-Type: application/json" \ 60 | -d '{ "name": "valid", "price": 21.00 }' \ 61 | http://localhost:3000/products | jq '.' 62 | 63 | ``` 64 | 65 | ```sh 66 | 67 | # Update Product 68 | 69 | $ curl -X PUT -H "Content-Type: application/json" \ 70 | -d '{ "name": "items", "price": 42.00 }' \ 71 | http://localhost:3000/products/:id | jq '.' 72 | 73 | 74 | ``` 75 | 76 | ```sh 77 | 78 | # List Invoices 79 | 80 | $ curl http://localhost:3000/invoices | jq '.' 81 | 82 | ``` 83 | 84 | 85 | ## Business Rules 86 | 87 | When a product (Product Context) is created, an event is dispatched to the Invoice Context domain. The domain generates an invoice aggregate and validates business rules, then dispatches another event to its own context in the infrastructure to build and save the invoice. 88 | 89 | ```mermaid 90 | graph LR 91 | A[Create Product] -->|Event| B[Invoice] 92 | B -->|Processing| C[Print Invoice] 93 | ``` -------------------------------------------------------------------------------- /docs/tests-result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/4lessandrodev/ddd-app/5cf6233877dded8f3fe978eed2f8b2e6ceb732aa/docs/tests-result.png -------------------------------------------------------------------------------- /jest.config.ts: -------------------------------------------------------------------------------- 1 | process.env.TZ = 'UTC'; 2 | 3 | export default { 4 | clearMocks: true, 5 | collectCoverage: true, 6 | coverageDirectory: "./../coverage", 7 | coverageProvider: "v8", 8 | preset: 'ts-jest', 9 | verbose: true, 10 | rootDir: './src', 11 | testEnvironment: 'node', 12 | testRegex: [".+\\.spec\\.ts$"], 13 | moduleNameMapper: { 14 | '@product/(.*)': '/contexts/product/$1', 15 | '@invoice/(.*)': '/contexts/invoice/$1', 16 | '@types': '/types/index', 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /jest.e2e.config.ts: -------------------------------------------------------------------------------- 1 | process.env.TZ = 'UTC'; 2 | 3 | export default { 4 | clearMocks: true, 5 | collectCoverage: false, 6 | coverageProvider: "v8", 7 | preset: 'ts-jest', 8 | verbose: true, 9 | rootDir: './src', 10 | testEnvironment: 'node', 11 | testRegex: [".+\\.test\\.ts$"], 12 | moduleNameMapper: { 13 | '@product/(.*)': '/modules/product/$1', 14 | '@types': '/types/index', 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ddd-app", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "predev": "npm run build", 8 | "dev": "ts-node-dev -r tsconfig-paths/register ./src/main.ts", 9 | "test": "jest --runInBand", 10 | "build": "tsc", 11 | "test:e2e": "jest --runInBand -c ./jest.e2e.config.ts", 12 | "start": "node ./dist/src/main" 13 | }, 14 | "dependencies": { 15 | "body-parser": "^1.20.2", 16 | "express": "^4.18.2", 17 | "module-alias": "^2.2.3", 18 | "reflect-metadata": "^0.1.13", 19 | "rich-domain": "^1.25.0", 20 | "types-ddd": "3.11.0-beta" 21 | }, 22 | "devDependencies": { 23 | "@types/express": "^4.17.17", 24 | "@types/jest": "^28.1.6", 25 | "@types/node": "^18.17.1", 26 | "@types/supertest": "^2.0.12", 27 | "jest": "^28.1.3", 28 | "supertest": "^6.2.4", 29 | "ts-jest": "^28.0.7", 30 | "ts-node": "^10.9.1", 31 | "ts-node-dev": "^2.0.0", 32 | "tsconfig-paths": "^4.2.0", 33 | "typescript": "^4.9.5" 34 | }, 35 | "_moduleAliases": { 36 | "@types": "./dist/types/index", 37 | "@product": "./dist/src/contexts/product", 38 | "@invoice": "./dist/src/contexts/invoice" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/contexts/invoice/app/use-cases/create-invoice.use-case.ts: -------------------------------------------------------------------------------- 1 | import { IUseCase } from "rich-domain"; 2 | import { Class, Result, ValueObject } from "rich-domain"; 3 | import ItemName, { NameProps } from "@invoice/domain/item-name.value-object"; 4 | import Invoice from "@invoice/domain/invoice.aggregate"; 5 | import Amount, { PriceProps } from "@invoice/domain/amount.value-object"; 6 | import RepositoryInterface from "@invoice/domain/repository.interface"; 7 | 8 | export interface CreateInvoiceDto { 9 | itemName: string; 10 | amount: number; 11 | } 12 | 13 | export class CreateInvoiceUseCase implements IUseCase>{ 14 | 15 | constructor( 16 | private readonly repo: RepositoryInterface 17 | ) { } 18 | 19 | async execute(dto: CreateInvoiceDto): Promise> { 20 | 21 | const { data, result } = ValueObject.createMany([ 22 | Class(Amount, { value: dto.amount }), 23 | Class(ItemName, { value: dto.itemName }) 24 | ]) 25 | 26 | if (result.isFail()) return Result.fail(result.error()); 27 | 28 | const amount = data.next().value() as Amount; 29 | const itemName = data.next().value() as ItemName; 30 | 31 | const invoice = Invoice.create({ itemName, amount }).value(); 32 | 33 | await this.repo.create(invoice); 34 | 35 | return Result.Ok(); 36 | } 37 | } 38 | 39 | export default CreateInvoiceUseCase; 40 | -------------------------------------------------------------------------------- /src/contexts/invoice/app/use-cases/list-invoices.use-case.ts: -------------------------------------------------------------------------------- 1 | import RepositoryInterface, { InvoiceModel } from "@invoice/domain/repository.interface"; 2 | import { IUseCase } from "rich-domain"; 3 | 4 | export class ListInvoicesUseCase implements IUseCase { 5 | constructor(private readonly repo: RepositoryInterface) { } 6 | 7 | async execute(): Promise { 8 | return this.repo.list(); 9 | } 10 | } 11 | 12 | export default ListInvoicesUseCase; 13 | -------------------------------------------------------------------------------- /src/contexts/invoice/app/use-cases/test/create-invoice-use-case.spec.ts: -------------------------------------------------------------------------------- 1 | import CreateInvoiceUseCase, { CreateInvoiceDto } from "../create-invoice.use-case"; 2 | import invoiceRepositoryMock from "./invoice-repository.mock"; 3 | 4 | describe('create-invoice.use-case', () => { 5 | 6 | const useCase = new CreateInvoiceUseCase(invoiceRepositoryMock); 7 | 8 | it('should return fails if provide an invalid name value', async () => { 9 | 10 | const saveSpy = jest.spyOn(invoiceRepositoryMock, 'create'); 11 | 12 | const invalidNameValue = ''; 13 | const dto: CreateInvoiceDto = { itemName: invalidNameValue, amount: 180.20 }; 14 | 15 | const result = await useCase.execute(dto); 16 | expect(result.isFail()).toBeTruthy(); 17 | expect(saveSpy).not.toHaveBeenCalled(); 18 | }); 19 | 20 | it('should return fails if provide an invalid price value', async () => { 21 | 22 | const saveSpy = jest.spyOn(invoiceRepositoryMock, 'create'); 23 | 24 | const invalidPriceValue = -10; 25 | const dto: CreateInvoiceDto = { itemName: 'valid value', amount: invalidPriceValue }; 26 | 27 | const result = await useCase.execute(dto); 28 | expect(result.isFail()).toBeTruthy(); 29 | expect(saveSpy).not.toHaveBeenCalled(); 30 | }); 31 | 32 | it('should create a product with success', async () => { 33 | 34 | const saveSpy = jest.spyOn(invoiceRepositoryMock, 'create'); 35 | 36 | const dto: CreateInvoiceDto = { itemName: 'valid name', amount: 180.20 }; 37 | 38 | const result = await useCase.execute(dto); 39 | 40 | expect(result.isOk()).toBeTruthy(); 41 | expect(saveSpy).toHaveBeenCalled(); 42 | }); 43 | 44 | }); 45 | -------------------------------------------------------------------------------- /src/contexts/invoice/app/use-cases/test/invoice-repository.mock.ts: -------------------------------------------------------------------------------- 1 | import RepositoryInterface from "@invoice/domain/repository.interface"; 2 | 3 | export const productRepositoryMock: RepositoryInterface = { 4 | create: jest.fn(), 5 | list: jest.fn() 6 | } 7 | 8 | export default productRepositoryMock; 9 | -------------------------------------------------------------------------------- /src/contexts/invoice/app/use-cases/test/list-invoices-use-case.spec.ts: -------------------------------------------------------------------------------- 1 | import ListInvoicesUseCase from "../list-invoices.use-case"; 2 | import invoiceRepositoryMock from "./invoice-repository.mock"; 3 | 4 | describe('list-invoices.use-case', () => { 5 | 6 | const useCase = new ListInvoicesUseCase(invoiceRepositoryMock); 7 | 8 | it('should get invoices with success', async () => { 9 | 10 | jest.spyOn(invoiceRepositoryMock, 'list').mockResolvedValueOnce([]); 11 | 12 | const result = await useCase.execute(); 13 | expect(result).toEqual([]); 14 | }); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /src/contexts/invoice/domain/amount.value-object.ts: -------------------------------------------------------------------------------- 1 | import { Fail, Ok, Result, ValueObject } from "rich-domain"; 2 | 3 | export interface PriceProps { 4 | value: number; 5 | } 6 | 7 | export class Amount extends ValueObject{ 8 | private constructor(props: PriceProps) { 9 | super(props); 10 | } 11 | 12 | public static isValidProps({ value }: PriceProps): boolean { 13 | const { number } = this.validator; 14 | return number(value).isPositive(); 15 | } 16 | 17 | public static create(props: PriceProps): Result { 18 | const message = 'value must be positive'; 19 | 20 | if (!this.isValidProps(props)) return Fail(message); 21 | 22 | return Ok(new Amount(props)); 23 | } 24 | } 25 | 26 | export default Amount; 27 | -------------------------------------------------------------------------------- /src/contexts/invoice/domain/invoice-created.event.ts: -------------------------------------------------------------------------------- 1 | import { EventHandler } from "rich-domain"; 2 | import Invoice from "./invoice.aggregate"; 3 | 4 | export class InvoiceCreatedEvent extends EventHandler{ 5 | 6 | constructor() { 7 | super({ eventName: 'InvoiceCreated' }); 8 | } 9 | 10 | dispatch(aggregate: Invoice): void { 11 | const model = aggregate.toObject(); 12 | console.log(`EVENT DISPATCH: GENERATE INVOICE`); 13 | aggregate.context().dispatchEvent('Invoice:PrintInvoice', model); 14 | } 15 | } 16 | 17 | export default InvoiceCreatedEvent; 18 | -------------------------------------------------------------------------------- /src/contexts/invoice/domain/invoice.aggregate.ts: -------------------------------------------------------------------------------- 1 | import { Aggregate, Ok, Result, UID } from "rich-domain"; 2 | import ItemName from "./item-name.value-object"; 3 | import Amount from "./amount.value-object"; 4 | import InvoiceCreatedEvent from "./invoice-created.event"; 5 | 6 | export interface InvoiceProps { 7 | id?: UID; 8 | itemName: ItemName; 9 | amount: Amount; 10 | createdAt?: Date; 11 | updatedAt?: Date; 12 | } 13 | 14 | export class Invoice extends Aggregate{ 15 | private constructor(props: InvoiceProps) { 16 | super(props); 17 | } 18 | 19 | public static create(props: InvoiceProps): Result { 20 | const invoice = new Invoice(props); 21 | invoice.addEvent(new InvoiceCreatedEvent()); 22 | return Ok(invoice); 23 | } 24 | } 25 | 26 | export default Invoice; 27 | -------------------------------------------------------------------------------- /src/contexts/invoice/domain/item-name.value-object.ts: -------------------------------------------------------------------------------- 1 | import { Result, ValueObject } from "rich-domain"; 2 | 3 | export interface NameProps { 4 | value: string; 5 | } 6 | 7 | export class ItemName extends ValueObject{ 8 | private constructor(props: NameProps) { 9 | super(props); 10 | } 11 | 12 | validation(value: string): boolean { 13 | return ItemName.isValidProps({ value }) 14 | } 15 | 16 | public static isValidProps({ value }: NameProps): boolean { 17 | const { string } = this.validator; 18 | return string(value).hasLengthBetweenOrEqual(3, 30); 19 | } 20 | 21 | public static create(props: NameProps): Result { 22 | const message = 'value must have length min 3 and max 30 char'; 23 | 24 | if (!this.isValidProps(props)) return Result.fail(message); 25 | 26 | return Result.Ok(new ItemName(props)); 27 | } 28 | } 29 | 30 | export default ItemName; 31 | -------------------------------------------------------------------------------- /src/contexts/invoice/domain/product-to-invoice.adapter.ts: -------------------------------------------------------------------------------- 1 | import { Class, Adapter, Id, ValueObject } from "rich-domain"; 2 | import ItemName, { NameProps } from "./item-name.value-object"; 3 | import Amount, { PriceProps } from "./amount.value-object"; 4 | import Invoice from "./invoice.aggregate"; 5 | import { InvoiceModel } from "./repository.interface"; 6 | 7 | export class ProductToInvoiceAdapter implements Adapter{ 8 | adaptOne(target: InvoiceModel): Invoice { 9 | const { result, data } = ValueObject.createMany([ 10 | Class(ItemName, { value: target.itemName.value }), 11 | Class(Amount, { value: target.amount.value }) 12 | ]); 13 | 14 | if (result.isFail()) throw new Error(result.error()); 15 | 16 | const itemName = data.next().value() as ItemName; 17 | const amount = data.next().value() as Amount; 18 | 19 | const id = Id(target.id); 20 | const { createdAt, updatedAt } = target; 21 | 22 | return Invoice.create({ id, itemName, amount, createdAt, updatedAt }).value(); 23 | } 24 | } 25 | 26 | export default ProductToInvoiceAdapter; 27 | -------------------------------------------------------------------------------- /src/contexts/invoice/domain/repository.interface.ts: -------------------------------------------------------------------------------- 1 | import Invoice from "./invoice.aggregate"; 2 | 3 | export class InvoiceModel { 4 | id!: string; 5 | itemName!: { value: string }; 6 | amount!: { value: number }; 7 | createdAt!: Date; 8 | updatedAt!: Date; 9 | } 10 | 11 | export interface InvoiceRepositoryInterface { 12 | create(invoice: Invoice): Promise; 13 | list(): Promise; 14 | } 15 | 16 | export default InvoiceRepositoryInterface; 17 | -------------------------------------------------------------------------------- /src/contexts/invoice/domain/test/amount.value-object.spec.ts: -------------------------------------------------------------------------------- 1 | import Amount from "../amount.value-object"; 2 | 3 | describe('amount', () => { 4 | 5 | const result = Amount.create({ value: 10 }); 6 | const amount = result.value(); 7 | 8 | it('should create a valid amount amount', () => { 9 | expect(result.isOk()).toBeTruthy(); 10 | }); 11 | 12 | it('should get value with success', () => { 13 | expect(amount?.get("value")).toBe(10); 14 | }); 15 | 16 | it('should return fails if provide an invalid amount', () => { 17 | const invalidAmount = ''; 18 | const result = Amount.create({ value: invalidAmount as any }); 19 | expect(result.isFail()).toBeTruthy(); 20 | expect(result.value()).toBeNull(); 21 | expect(result.error()).toBe('value must be positive'); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /src/contexts/invoice/domain/test/invoice.aggregate.spec.ts: -------------------------------------------------------------------------------- 1 | import { ID } from "rich-domain"; 2 | import InvoiceCreatedEvent from "../invoice-created.event"; 3 | import ItemName from "../item-name.value-object"; 4 | import Amount from "../amount.value-object"; 5 | import Invoice from "../invoice.aggregate"; 6 | 7 | describe('invoice.aggregate', () => { 8 | 9 | const itemName = ItemName.create({ value: 'valid name' }).value() as ItemName; 10 | const amount = Amount.create({ value: 42 }).value() as Amount; 11 | 12 | it('should add event to invoice with success', () => { 13 | 14 | const invoice = Invoice.create({ itemName, amount }).value(); 15 | expect(invoice.eventsMetrics.total).toBe(1); 16 | expect(invoice.eventsMetrics.dispatch).toBe(0); 17 | 18 | expect(invoice.eventsMetrics.total).toBe(1); 19 | 20 | invoice.dispatchEvent('InvoiceCreated'); 21 | expect(invoice.eventsMetrics.dispatch).toBe(1); 22 | expect(invoice.eventsMetrics.total).toBe(1); 23 | }); 24 | 25 | it('should create a valid invoice with success', () => { 26 | const result = Invoice.create({ itemName, amount }); 27 | expect(result.isOk()).toBeTruthy(); 28 | }); 29 | 30 | it('should get object from invoice', () => { 31 | const result = Invoice.create({ itemName, amount }); 32 | const invoice = result.value(); 33 | const obj = invoice.toObject(); 34 | expect(Object.keys(obj)).toEqual(['id', 'createdAt', 'updatedAt', 'itemName', 'amount']); 35 | expect(obj.itemName.value).toBe('valid name'); 36 | expect(obj.amount.value).toBe(42); 37 | expect(obj.id).toBeDefined(); 38 | expect(obj.createdAt).toBeDefined(); 39 | expect(obj.updatedAt).toBeDefined(); 40 | }); 41 | 42 | it('should change name with success', () => { 43 | const invoice = Invoice.create({ itemName, amount }).value(); 44 | const newName = ItemName.create({ value: 'new name' }).value() as ItemName; 45 | 46 | const dateUpdate1 = invoice.get('updatedAt'); 47 | 48 | expect(invoice.get('itemName').get('value')).toBe('valid name'); 49 | 50 | invoice.change('itemName', newName); 51 | expect(invoice.get('itemName').get('value')).toBe('new name'); 52 | 53 | const dateUpdate2 = invoice.get('updatedAt'); 54 | expect(dateUpdate1).not.toBe(dateUpdate2); 55 | }); 56 | 57 | it('should change amount with success', () => { 58 | const invoice = Invoice.create({ itemName, amount }).value(); 59 | const newAmount = Amount.create({ value: 200 }).value() as Amount; 60 | 61 | expect(invoice.get('amount').get('value')).toBe(42); 62 | 63 | invoice.change('amount', newAmount); 64 | expect(invoice.get('amount').get('value')).toBe(200); 65 | 66 | const newAmount2 = Amount.create({ value: 121 }).value() as Amount; 67 | invoice.set('amount').to(newAmount2); 68 | 69 | expect(invoice.get('amount').get('value')).toBe(121); 70 | }); 71 | 72 | it('should create a invoice with provided id', () => { 73 | const id = ID.create(); 74 | 75 | const invoice = Invoice.create({ itemName, id, amount }).value(); 76 | 77 | expect(invoice.id.value()).toBe(id.value()); 78 | }); 79 | }); 80 | -------------------------------------------------------------------------------- /src/contexts/invoice/domain/test/item-name.value-object.spec.ts: -------------------------------------------------------------------------------- 1 | import ItemName from "../item-name.value-object"; 2 | 3 | describe('item-name', () => { 4 | 5 | const result = ItemName.create({ value: 'some valid description' }); 6 | const itemName = result.value(); 7 | 8 | it('should create a valid item name', () => { 9 | expect(result.isOk()).toBeTruthy(); 10 | }); 11 | 12 | it('should get value with success', () => { 13 | expect(itemName?.get("value")).toBe('some valid description'); 14 | }); 15 | 16 | it('should return fails if provide an invalid name', () => { 17 | const invalidName = ''; 18 | const result = ItemName.create({ value: invalidName }); 19 | expect(result.isFail()).toBeTruthy(); 20 | expect(result.value()).toBeNull(); 21 | expect(result.error()).toBe('value must have length min 3 and max 30 char'); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /src/contexts/invoice/domain/test/product-to-domain-adapter.spec.ts: -------------------------------------------------------------------------------- 1 | import ProductToInvoiceAdapter from "../product-to-invoice.adapter"; 2 | import { InvoiceModel } from "../repository.interface"; 3 | 4 | describe('adapter', () => { 5 | 6 | const adapter = new ProductToInvoiceAdapter(); 7 | const date = new Date('2022-01-01 01:00:00') 8 | 9 | const data: InvoiceModel = { 10 | id: 'valid_id', 11 | itemName: { value: 'valid_name' }, 12 | amount: { value: 200 }, 13 | createdAt: date, 14 | updatedAt: date, 15 | }; 16 | 17 | 18 | it('should create a domain from a model', () => { 19 | const product = adapter.adaptOne(data); 20 | expect(product.toObject()).toEqual(data); 21 | }); 22 | 23 | it('should fails if provide an invalid value', () => { 24 | const build = () => adapter.adaptOne({ ...data, amount: { value: -10 } }); 25 | expect(build).toThrow(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/contexts/invoice/infra/generate-invoice.service.ts: -------------------------------------------------------------------------------- 1 | export default function generateInvoice(itemName: string, amount: number) { 2 | const item = itemName.slice(0, 5).padEnd(26); 3 | const total = formatCurrency(amount).padEnd(27); 4 | const createdAt = new Date().toLocaleString().padEnd(26); 5 | 6 | return ` 7 | --------------------------------- 8 | | INVOICE | 9 | --------------------------------- 10 | | Item: ${item} | 11 | | Qtd: ${total} | 12 | | Date: ${createdAt} | 13 | --------------------------------- 14 | | THANK YOU! | 15 | --------------------------------- 16 | `; 17 | 18 | } 19 | 20 | function formatCurrency(amount: number) { 21 | return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(amount); 22 | } -------------------------------------------------------------------------------- /src/contexts/invoice/infra/injection.service.ts: -------------------------------------------------------------------------------- 1 | import ListInvoicesUseCase from '@invoice/app/use-cases/list-invoices.use-case'; 2 | import InvoiceModel from './invoice.model'; 3 | import InvoiceRepository from './repository'; 4 | import CreateInvoiceUseCase from '@invoice/app/use-cases/create-invoice.use-case'; 5 | import { Context } from 'rich-domain'; 6 | import generateInvoice from './generate-invoice.service'; 7 | 8 | const context = Context.events(); 9 | 10 | export const database: Array = []; 11 | const repository = new InvoiceRepository(database); 12 | export const listInvoicesUseCase = new ListInvoicesUseCase(repository); 13 | const createInvoiceUseCase = new CreateInvoiceUseCase(repository); 14 | 15 | // subscribe to product created context 16 | context.subscribe('Invoice:GenerateInvoice', (args) => { 17 | const [dto] = args.detail; 18 | createInvoiceUseCase.execute(dto); 19 | }); 20 | 21 | // infra subscribe to domain 22 | context.subscribe('Invoice:PrintInvoice', (args) => { 23 | const [model] = args.detail; 24 | console.log(generateInvoice(model.itemName.value, model.amount.value)); 25 | }); 26 | -------------------------------------------------------------------------------- /src/contexts/invoice/infra/invoice.controller.ts: -------------------------------------------------------------------------------- 1 | import { listInvoicesUseCase } from "./injection.service"; 2 | import { Request, Response, Router } from "express"; 3 | const route = Router(); 4 | 5 | export const InvoiceController = { 6 | 7 | GetInvoices: route.get('/invoices', async (_: Request, res: Response) => { 8 | const invoices = await listInvoicesUseCase.execute(); 9 | return res.json({ invoices }); 10 | }) 11 | 12 | } 13 | 14 | export default InvoiceController; 15 | -------------------------------------------------------------------------------- /src/contexts/invoice/infra/invoice.model.ts: -------------------------------------------------------------------------------- 1 | import { InvoiceModel as Model } from '@invoice/domain/repository.interface'; 2 | 3 | export class InvoiceModel implements Model { 4 | id!: string; 5 | itemName!: { value: string }; 6 | amount!: { value: number }; 7 | createdAt!: Date; 8 | updatedAt!: Date; 9 | } 10 | 11 | export default InvoiceModel; 12 | -------------------------------------------------------------------------------- /src/contexts/invoice/infra/invoice.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from "@types"; 2 | import InvoiceController from "./invoice.controller"; 3 | 4 | export const InvoiceModule: Module = { 5 | controller: InvoiceController 6 | } 7 | -------------------------------------------------------------------------------- /src/contexts/invoice/infra/repository.ts: -------------------------------------------------------------------------------- 1 | import Invoice from "@invoice/domain/invoice.aggregate"; 2 | import RepositoryInterface from "@invoice/domain/repository.interface"; 3 | import InvoiceModel from "./invoice.model"; 4 | 5 | export class InvoiceRepository implements RepositoryInterface{ 6 | constructor( 7 | private readonly db: Array 8 | ) { } 9 | 10 | async create(invoice: Invoice): Promise { 11 | this.db.push(invoice.toObject()); 12 | invoice.dispatchEvent('InvoiceCreated'); 13 | } 14 | 15 | async list(): Promise { 16 | return this.db; 17 | } 18 | } 19 | 20 | export default InvoiceRepository; 21 | -------------------------------------------------------------------------------- /src/contexts/product/app/use-cases/create-product.use-case.ts: -------------------------------------------------------------------------------- 1 | import { Fail, IUseCase, Ok } from "rich-domain"; 2 | import { Class, Result, ValueObject } from "rich-domain"; 3 | import ProductName, { NameProps } from "@product/domain/product-name.value-object"; 4 | import Product from "@product/domain/product.aggregate"; 5 | import ProductPrice, { PriceProps } from "@product/domain/product-price.value-object"; 6 | import ProductRepositoryInterface from "@product/domain/repository.interface"; 7 | 8 | export interface CreateProductDto { 9 | name: string; 10 | price: number; 11 | } 12 | 13 | export class CreateProductUseCase implements IUseCase>{ 14 | 15 | constructor( 16 | private readonly repo: ProductRepositoryInterface 17 | ) { } 18 | 19 | async execute(dto: CreateProductDto): Promise> { 20 | 21 | const { data, result } = ValueObject.createMany([ 22 | Class(ProductPrice, { value: dto.price }), 23 | Class(ProductName, { value: dto.name }) 24 | ]) 25 | 26 | if (result.isFail()) return Fail(result.error()); 27 | 28 | const price = data.next().value() as ProductPrice; 29 | const name = data.next().value() as ProductName; 30 | 31 | const product = Product.create({ name, price }).value(); 32 | 33 | await this.repo.create(product); 34 | 35 | return Ok(); 36 | } 37 | } 38 | 39 | export default CreateProductUseCase; 40 | -------------------------------------------------------------------------------- /src/contexts/product/app/use-cases/list-products.use-case.ts: -------------------------------------------------------------------------------- 1 | import RepositoryInterface, { ProductModel } from "@product/domain/repository.interface"; 2 | import { IUseCase } from "rich-domain"; 3 | 4 | export class ListProductsUseCase implements IUseCase { 5 | constructor(private readonly repo: RepositoryInterface) { } 6 | 7 | async execute(): Promise { 8 | return this.repo.list(); 9 | } 10 | } 11 | 12 | export default ListProductsUseCase; 13 | -------------------------------------------------------------------------------- /src/contexts/product/app/use-cases/test/create-product-use-case.spec.ts: -------------------------------------------------------------------------------- 1 | import ProductCreatedEvent from "@product/domain/product-created.event"; 2 | import CreateProductUseCase, { CreateProductDto } from "../create-product.use-case"; 3 | import productRepositoryMock from "./product-repository.mock"; 4 | 5 | describe('create-product.use-case', () => { 6 | 7 | const event = new ProductCreatedEvent(); 8 | const useCase = new CreateProductUseCase(productRepositoryMock); 9 | 10 | it('should return fails if provide an invalid name value', async () => { 11 | 12 | const saveSpy = jest.spyOn(productRepositoryMock, 'create'); 13 | 14 | const invalidNameValue = ''; 15 | const dto: CreateProductDto = { name: invalidNameValue, price: 180.20 }; 16 | 17 | const result = await useCase.execute(dto); 18 | expect(result.isFail()).toBeTruthy(); 19 | expect(saveSpy).not.toHaveBeenCalled(); 20 | }); 21 | 22 | it('should return fails if provide an invalid price value', async () => { 23 | 24 | const saveSpy = jest.spyOn(productRepositoryMock, 'create'); 25 | 26 | const invalidPriceValue = -10; 27 | const dto: CreateProductDto = { name: 'valid value', price: invalidPriceValue }; 28 | 29 | const result = await useCase.execute(dto); 30 | expect(result.isFail()).toBeTruthy(); 31 | expect(saveSpy).not.toHaveBeenCalled(); 32 | }); 33 | 34 | it('should create a product with success', async () => { 35 | 36 | const saveSpy = jest.spyOn(productRepositoryMock, 'create'); 37 | 38 | const dto: CreateProductDto = { name: 'valid name', price: 180.20 }; 39 | 40 | const result = await useCase.execute(dto); 41 | 42 | expect(result.isOk()).toBeTruthy(); 43 | expect(saveSpy).toHaveBeenCalled(); 44 | }); 45 | 46 | }); 47 | -------------------------------------------------------------------------------- /src/contexts/product/app/use-cases/test/list-products-use-case.spec.ts: -------------------------------------------------------------------------------- 1 | import ListProductsUseCase from "../list-products.use-case"; 2 | import productRepositoryMock from "./product-repository.mock"; 3 | 4 | describe('list-product.use-case', () => { 5 | 6 | const useCase = new ListProductsUseCase(productRepositoryMock); 7 | 8 | it('should get products with success', async () => { 9 | 10 | jest.spyOn(productRepositoryMock, 'list').mockResolvedValueOnce([]); 11 | 12 | const result = await useCase.execute(); 13 | expect(result).toEqual([]); 14 | }); 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /src/contexts/product/app/use-cases/test/product-repository.mock.ts: -------------------------------------------------------------------------------- 1 | import ProductRepositoryInterface from "@product/domain/repository.interface"; 2 | 3 | export const productRepositoryMock: ProductRepositoryInterface = { 4 | create: jest.fn(), 5 | getProductById: jest.fn(), 6 | list: jest.fn(), 7 | update: jest.fn(), 8 | } 9 | 10 | export default productRepositoryMock; 11 | -------------------------------------------------------------------------------- /src/contexts/product/app/use-cases/test/update-product-use-case.spec.ts: -------------------------------------------------------------------------------- 1 | import ProductToDomainAdapter from "@product/domain/product-to-domain.adapter"; 2 | import { ProductModel } from "@product/domain/repository.interface"; 3 | import UpdateProductUseCase, { UpdateProductDto } from "../update-product.use-case" 4 | import productRepositoryMock from "./product-repository.mock" 5 | 6 | describe('update-product.use-case', () => { 7 | 8 | const useCase = new UpdateProductUseCase(productRepositoryMock); 9 | 10 | it('should return fail if product does not exists', async () => { 11 | 12 | jest.spyOn(productRepositoryMock, 'getProductById').mockResolvedValueOnce(null); 13 | 14 | const result = await useCase.execute({ id: 'invalid', name: 'valid', price: 10 }); 15 | expect(result.isFail()).toBeTruthy(); 16 | expect(result.error()).toBe('Product not found'); 17 | }); 18 | 19 | it('should return fails if provide an invalid price value', async () => { 20 | jest.spyOn(productRepositoryMock, 'getProductById').mockResolvedValueOnce({ id: 'valid' } as any); 21 | const saveSpy = jest.spyOn(productRepositoryMock, 'create'); 22 | 23 | const invalidPriceValue = -10; 24 | const dto: UpdateProductDto = { id: 'valid', name: 'valid value', price: invalidPriceValue }; 25 | 26 | const result = await useCase.execute(dto); 27 | expect(result.isFail()).toBeTruthy(); 28 | expect(saveSpy).not.toHaveBeenCalled(); 29 | }); 30 | 31 | it('should return fails if provide an invalid name value', async () => { 32 | 33 | const saveSpy = jest.spyOn(productRepositoryMock, 'update'); 34 | 35 | const invalidNameValue = ''; 36 | const dto: UpdateProductDto = { id: 'valid', name: invalidNameValue, price: 180.20 }; 37 | 38 | const result = await useCase.execute(dto); 39 | expect(result.isFail()).toBeTruthy(); 40 | expect(saveSpy).not.toHaveBeenCalled(); 41 | }); 42 | 43 | it('should update a product with success', async () => { 44 | const adapter = new ProductToDomainAdapter(); 45 | const date = new Date('2022-01-01 01:00:00') 46 | 47 | const data: ProductModel = { 48 | id: 'valid_id', 49 | name: { value: 'valid_name'}, 50 | price: { value: 200 }, 51 | createdAt: date, 52 | updatedAt: date, 53 | }; 54 | 55 | const product = adapter.adaptOne(data); 56 | 57 | jest.spyOn(productRepositoryMock, 'getProductById').mockResolvedValueOnce(product); 58 | const updateSpy = jest.spyOn(productRepositoryMock, 'update'); 59 | 60 | expect(product.get('name').get('value')).toBe('valid_name'); 61 | expect(product.get('price').get('value')).toBe(200); 62 | 63 | await useCase.execute({ ...data, name: 'changed', price: 21 }); 64 | 65 | expect(product.get('name').get('value')).toBe('changed'); 66 | expect(product.get('price').get('value')).toBe(21); 67 | 68 | expect(updateSpy).toHaveBeenLastCalledWith(product); 69 | }); 70 | }) 71 | -------------------------------------------------------------------------------- /src/contexts/product/app/use-cases/update-product.use-case.ts: -------------------------------------------------------------------------------- 1 | import ProductName, { NameProps } from "@product/domain/product-name.value-object"; 2 | import ProductPrice, { PriceProps } from "@product/domain/product-price.value-object"; 3 | import RepositoryInterface from "@product/domain/repository.interface"; 4 | import { IUseCase } from "rich-domain"; 5 | import { Class, Result, ValueObject } from "rich-domain"; 6 | 7 | export interface UpdateProductDto { 8 | id: string; 9 | name: string; 10 | price: number; 11 | } 12 | 13 | export class UpdateProductUseCase implements IUseCase>{ 14 | 15 | constructor(private readonly repo: RepositoryInterface) { } 16 | 17 | async execute(dto: UpdateProductDto): Promise> { 18 | 19 | const productFound = await this.repo.getProductById(dto.id); 20 | 21 | if (!productFound) return Result.fail('Product not found'); 22 | 23 | const product = productFound; 24 | 25 | const { result, data } = ValueObject.createMany([ 26 | Class(ProductName, { value: dto.name }), 27 | Class(ProductPrice, { value: dto.price }) 28 | ]); 29 | 30 | if (result.isFail()) return Result.fail(result.error()); 31 | 32 | const name = data.next().value() as ProductName; 33 | const price = data.next().value() as ProductPrice; 34 | 35 | product.set('name').to(name); 36 | product.set('price').to(price); 37 | 38 | product.update(name, price); 39 | 40 | await this.repo.update(product); 41 | 42 | return Result.Ok(); 43 | 44 | } 45 | } 46 | 47 | export default UpdateProductUseCase; 48 | -------------------------------------------------------------------------------- /src/contexts/product/domain/product-created.event.ts: -------------------------------------------------------------------------------- 1 | import { EventHandler } from "rich-domain"; 2 | import Product from "./product.aggregate"; 3 | 4 | export class ProductCreatedEvent extends EventHandler{ 5 | 6 | constructor() { 7 | super({ eventName: 'ProductCreated' }); 8 | } 9 | 10 | dispatch(aggregate: Product): void { 11 | const model = aggregate.toObject(); 12 | const amount = model.price.value; 13 | const itemName = model.name.value; 14 | console.log(`EVENT DISPATCH: PRODUCT CREATED`); 15 | console.log(model); 16 | // dispatch event to invoice context 17 | aggregate.context().dispatchEvent('Invoice:GenerateInvoice', { itemName, amount }); 18 | } 19 | } 20 | 21 | export default ProductCreatedEvent; 22 | -------------------------------------------------------------------------------- /src/contexts/product/domain/product-name.value-object.ts: -------------------------------------------------------------------------------- 1 | import { Result, ValueObject } from "rich-domain"; 2 | 3 | export interface NameProps { 4 | value: string; 5 | } 6 | 7 | export class ProductName extends ValueObject{ 8 | private constructor(props: NameProps) { 9 | super(props); 10 | } 11 | 12 | public static isValidProps({ value }: NameProps): boolean { 13 | const { string } = this.validator; 14 | return string(value).hasLengthBetweenOrEqual(3, 30); 15 | } 16 | 17 | public static create(props: NameProps): Result { 18 | const message = 'value must have length min 3 and max 30 char'; 19 | 20 | if (!this.isValidProps(props)) return Result.fail(message); 21 | 22 | return Result.Ok(new ProductName(props)); 23 | } 24 | } 25 | 26 | export default ProductName; 27 | -------------------------------------------------------------------------------- /src/contexts/product/domain/product-price.value-object.ts: -------------------------------------------------------------------------------- 1 | import { Fail, Result, ValueObject } from "rich-domain"; 2 | 3 | export interface PriceProps { 4 | value: number; 5 | } 6 | 7 | export class ProductPrice extends ValueObject{ 8 | private constructor(props: PriceProps) { 9 | super(props); 10 | } 11 | 12 | public static isValidProps({ value }: PriceProps): boolean { 13 | const { number } = this.validator; 14 | return number(value).isPositive(); 15 | } 16 | 17 | public static create(props: PriceProps): Result { 18 | const message = 'value must be positive'; 19 | 20 | if (!this.isValidProps(props)) return Fail(message); 21 | 22 | return Result.Ok(new ProductPrice(props)); 23 | } 24 | } 25 | 26 | export default ProductPrice; 27 | -------------------------------------------------------------------------------- /src/contexts/product/domain/product-to-domain.adapter.ts: -------------------------------------------------------------------------------- 1 | import { Class, Adapter, Id, ValueObject } from "rich-domain"; 2 | import ProductName, { NameProps } from "./product-name.value-object"; 3 | import ProductPrice, { PriceProps } from "./product-price.value-object"; 4 | import Product from "./product.aggregate"; 5 | import { ProductModel } from "./repository.interface"; 6 | 7 | export class ProductToDomainAdapter implements Adapter { 8 | adaptOne(target: ProductModel): Product { 9 | const { result, data } = ValueObject.createMany([ 10 | Class(ProductName, { value: target.name.value }), 11 | Class(ProductPrice, { value: target.price.value }) 12 | ]); 13 | 14 | if (result.isFail()) throw new Error(result.error()); 15 | 16 | const name = data.next().value() as ProductName; 17 | const price = data.next().value() as ProductPrice; 18 | 19 | const id = Id(target.id); 20 | const { createdAt, updatedAt } = target; 21 | 22 | return Product.create({ id, name, price, createdAt, updatedAt }).value(); 23 | } 24 | } 25 | 26 | export default ProductToDomainAdapter; 27 | -------------------------------------------------------------------------------- /src/contexts/product/domain/product.aggregate.ts: -------------------------------------------------------------------------------- 1 | import { Aggregate, Ok, Result, UID } from "rich-domain"; 2 | import ProductName from "./product-name.value-object"; 3 | import ProductPrice from "./product-price.value-object"; 4 | import ProductCreatedEvent from "./product-created.event"; 5 | 6 | export interface ProductProps { 7 | id?: UID; 8 | name: ProductName; 9 | price: ProductPrice; 10 | createdAt?: Date; 11 | updatedAt?: Date; 12 | } 13 | 14 | export class Product extends Aggregate { 15 | private constructor(props: ProductProps) { 16 | super(props); 17 | } 18 | 19 | update(name: ProductName, price: ProductPrice): Product { 20 | this.set('name').to(name); 21 | this.set('price').to(price); 22 | this.addEvent('productChanged', () => { 23 | console.log(`EVENT DISPATCH: CHANGE PRICE AND NAME`); 24 | }); 25 | return this; 26 | } 27 | 28 | public static create(props: ProductProps): Result { 29 | const product = new Product(props); 30 | if (product.isNew()) product.addEvent(new ProductCreatedEvent()); 31 | return Ok(product); 32 | } 33 | } 34 | 35 | export default Product; 36 | -------------------------------------------------------------------------------- /src/contexts/product/domain/repository.interface.ts: -------------------------------------------------------------------------------- 1 | import Product from "./product.aggregate"; 2 | 3 | export class ProductModel { 4 | id!: string; 5 | name!: { value: string}; 6 | price!: { value: number }; 7 | createdAt!: Date; 8 | updatedAt!: Date; 9 | } 10 | 11 | export interface ProductRepositoryInterface { 12 | create(product: Product): Promise; 13 | list(): Promise; 14 | getProductById(id: string): Promise; 15 | update(product: Product): Promise; 16 | } 17 | 18 | export default ProductRepositoryInterface; 19 | -------------------------------------------------------------------------------- /src/contexts/product/domain/test/product-name.value-object.spec.ts: -------------------------------------------------------------------------------- 1 | import ProductName from "../product-name.value-object"; 2 | 3 | describe('product-name', () => { 4 | 5 | const result = ProductName.create({ value: 'some valid description' }); 6 | const productName = result.value(); 7 | 8 | it('should create a valid product name', () => { 9 | expect(result.isOk()).toBeTruthy(); 10 | }); 11 | 12 | it('should get value with success', () => { 13 | expect(productName?.get("value")).toBe('some valid description'); 14 | }); 15 | 16 | it('should change product name with success', () => { 17 | const newName = productName?.clone({ value: 'new name' }); 18 | expect(newName?.get("value")).toBe('new name'); 19 | }); 20 | 21 | it('should return fails if provide an invalid name', () => { 22 | const invalidName = ''; 23 | const result = ProductName.create({ value: invalidName }); 24 | expect(result.isFail()).toBeTruthy(); 25 | expect(result.value()).toBeNull(); 26 | expect(result.error()).toBe('value must have length min 3 and max 30 char'); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /src/contexts/product/domain/test/product-price.value-object.spec.ts: -------------------------------------------------------------------------------- 1 | import ProductPrice from "../product-price.value-object"; 2 | 3 | describe('product-price', () => { 4 | 5 | const result = ProductPrice.create({ value: 10 }); 6 | const productPrice = result.value(); 7 | 8 | it('should create a valid product price', () => { 9 | expect(result.isOk()).toBeTruthy(); 10 | }); 11 | 12 | it('should get value with success', () => { 13 | expect(productPrice?.get("value")).toBe(10); 14 | }); 15 | 16 | 17 | it('should return fails if provide an invalid price', () => { 18 | const invalidName = ''; 19 | const result = ProductPrice.create({ value: invalidName as any }); 20 | expect(result.isFail()).toBeTruthy(); 21 | expect(result.value()).toBeNull(); 22 | expect(result.error()).toBe('value must be positive'); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/contexts/product/domain/test/product-to-domain-adapter.spec.ts: -------------------------------------------------------------------------------- 1 | import ProductToDomainAdapter from "../product-to-domain.adapter"; 2 | import { ProductModel } from "../repository.interface"; 3 | 4 | describe('adapter', () => { 5 | 6 | const adapter = new ProductToDomainAdapter(); 7 | const date = new Date('2022-01-01 01:00:00') 8 | 9 | const data: ProductModel = { 10 | id: 'valid_id', 11 | name: { value: 'valid_name' }, 12 | price: { value: 200 }, 13 | createdAt: date, 14 | updatedAt: date, 15 | }; 16 | 17 | it('should create a domain from a model', () => { 18 | const product = adapter.adaptOne(data); 19 | expect(product.toObject()).toEqual(data); 20 | }); 21 | 22 | it('should fails if provide an invalid value', () => { 23 | const build = () => adapter.adaptOne({ ...data, price: { value: -10 } }); 24 | expect(build).toThrow(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /src/contexts/product/domain/test/product.aggregate.spec.ts: -------------------------------------------------------------------------------- 1 | import { ID } from "rich-domain"; 2 | import ProductCreatedEvent from "../product-created.event"; 3 | import ProductName from "../product-name.value-object"; 4 | import ProductPrice from "../product-price.value-object"; 5 | import Product from "../product.aggregate"; 6 | 7 | describe('product.aggregate', () => { 8 | 9 | const name = ProductName.create({ value: 'valid name' }).value() as ProductName; 10 | const price = ProductPrice.create({ value: 42 }).value() as ProductPrice; 11 | 12 | it('should create a valid product with success', () => { 13 | const result = Product.create({ name, price }); 14 | expect(result.isOk()).toBeTruthy(); 15 | }); 16 | 17 | it('should get object from product', () => { 18 | const result = Product.create({ name, price }); 19 | const product = result.value(); 20 | const obj = product.toObject(); 21 | expect(Object.keys(obj)).toEqual(['id', 'createdAt', 'updatedAt', 'name', 'price']); 22 | expect(obj.name.value).toBe('valid name'); 23 | expect(obj.price.value).toBe(42); 24 | expect(obj.id).toBeDefined(); 25 | expect(obj.createdAt).toBeDefined(); 26 | expect(obj.updatedAt).toBeDefined(); 27 | }); 28 | 29 | it('should change name with success', () => { 30 | const product = Product.create({ name, price }).value(); 31 | const newName = ProductName.create({ value: 'new name' }).value() as ProductName; 32 | 33 | const dateUpdate1 = product.get('updatedAt'); 34 | 35 | expect(product.get('name').get('value')).toBe('valid name'); 36 | 37 | product.change('name', newName); 38 | expect(product.get('name').get('value')).toBe('new name'); 39 | 40 | const dateUpdate2 = product.get('updatedAt'); 41 | expect(dateUpdate1).not.toBe(dateUpdate2); 42 | }); 43 | 44 | it('should change price with success', () => { 45 | const product = Product.create({ name, price }).value(); 46 | const newPrice = ProductPrice.create({ value: 200 }).value() as ProductPrice; 47 | 48 | expect(product.get('price').get('value')).toBe(42); 49 | 50 | product.change('price', newPrice); 51 | expect(product.get('price').get('value')).toBe(200); 52 | 53 | const newPrice2 = ProductPrice.create({ value: 121 }).value() as ProductPrice; 54 | product.set('price').to(newPrice2); 55 | 56 | expect(product.get('price').get('value')).toBe(121); 57 | }); 58 | 59 | it('should create a product with provided id', () => { 60 | const id = ID.create(); 61 | 62 | const product = Product.create({ name, id, price }).value(); 63 | 64 | expect(product.id.value()).toBe(id.value()); 65 | }); 66 | 67 | it('should add event to product with success', () => { 68 | 69 | const product = Product.create({ name, price }).value(); 70 | expect(product.eventsMetrics.total).toBe(1); 71 | expect(product.eventsMetrics.dispatch).toBe(0); 72 | 73 | product.addEvent(new ProductCreatedEvent()); 74 | 75 | expect(product.eventsMetrics.total).toBe(1); 76 | 77 | product.dispatchEvent('ProductCreated'); 78 | expect(product.eventsMetrics.dispatch).toBe(1); 79 | expect(product.eventsMetrics.total).toBe(1); 80 | }); 81 | 82 | it('should update name and price with success', () => { 83 | const product = Product.create({ name, price }).value(); 84 | const newName = ProductName.create({ value: 'new name' }).value() as ProductName; 85 | const newPrice = ProductPrice.create({ value: 200 }).value() as ProductPrice; 86 | product.update(newName, newPrice); 87 | const model = product.toObject(); 88 | expect(product.eventsMetrics.total).toBe(2); 89 | expect(model).toEqual( 90 | { 91 | "createdAt": expect.any(Date), 92 | "id": expect.any(String), 93 | "name": { "value": "new name" }, 94 | "price": { "value": 200 }, 95 | "updatedAt": expect.any(Date), 96 | } 97 | ); 98 | }); 99 | }); 100 | -------------------------------------------------------------------------------- /src/contexts/product/infra/injection.service.ts: -------------------------------------------------------------------------------- 1 | import CreateProductUseCase from '@product/app/use-cases/create-product.use-case'; 2 | import GetProductsUseCase from '@product/app/use-cases/list-products.use-case'; 3 | import UpdateProductUseCase from '@product/app/use-cases/update-product.use-case'; 4 | import ProductToDomainAdapter from '@product/domain/product-to-domain.adapter'; 5 | import ProductModel from './product.model'; 6 | import ProductRepository from './repository'; 7 | 8 | export const database: Array = []; 9 | 10 | const adapter = new ProductToDomainAdapter(); 11 | const repository = new ProductRepository(adapter, database); 12 | export const getProductsUseCase = new GetProductsUseCase(repository); 13 | export const updateProductUseCase = new UpdateProductUseCase(repository); 14 | export const createProductUseCase = new CreateProductUseCase(repository); 15 | -------------------------------------------------------------------------------- /src/contexts/product/infra/product.controller.ts: -------------------------------------------------------------------------------- 1 | import { createProductUseCase, getProductsUseCase, updateProductUseCase } from "./injection.service"; 2 | import { Request, Response, Router } from "express"; 3 | const route = Router(); 4 | 5 | export const ProductController = { 6 | 7 | GetProducts: route.get('/products', async (_: Request, res: Response) => { 8 | const products = await getProductsUseCase.execute(); 9 | return res.json({ products }); 10 | }), 11 | 12 | CreateProduct: route.post('/products', async (req: Request, res: Response) => { 13 | const { name = '', price = 0 } = req.body; 14 | const result = await createProductUseCase.execute({ name: name, price: price }); 15 | return res.json({ success: result.isOk(), message: result.error() }); 16 | }), 17 | 18 | UpdateProduct: route.put('/products/:id', async (req: Request, res: Response) => { 19 | const { id = '' } = req['params']; 20 | const { name, price } = req.body; 21 | const result = await updateProductUseCase.execute({ id, name, price }); 22 | return res.json({ success: result.isOk(), message: result.error() }); 23 | }), 24 | 25 | } 26 | 27 | export default ProductController; 28 | -------------------------------------------------------------------------------- /src/contexts/product/infra/product.model.ts: -------------------------------------------------------------------------------- 1 | import { ProductModel as Model } from "src/contexts/product/domain/repository.interface"; 2 | 3 | export class ProductModel implements Model { 4 | id!: string; 5 | name!: { value: string }; 6 | price!: { value: number }; 7 | createdAt!: Date; 8 | updatedAt!: Date; 9 | } 10 | 11 | export default ProductModel; 12 | -------------------------------------------------------------------------------- /src/contexts/product/infra/product.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from "@types"; 2 | import ProductController from "./product.controller"; 3 | 4 | export const ProductModule: Module = { 5 | controller: ProductController 6 | } 7 | -------------------------------------------------------------------------------- /src/contexts/product/infra/repository.ts: -------------------------------------------------------------------------------- 1 | import Product from "src/contexts/product/domain/product.aggregate"; 2 | import ProductRepositoryInterface from "src/contexts/product/domain/repository.interface"; 3 | import { Adapter } from "rich-domain"; 4 | import ProductModel from "./product.model"; 5 | 6 | export class ProductRepository implements ProductRepositoryInterface{ 7 | constructor( 8 | private readonly adapter: Adapter, 9 | private readonly db: Array 10 | ) { } 11 | 12 | async getProductById(id: string): Promise { 13 | const product = this.db.find((pd) => pd.id === id); 14 | if (!product) return null; 15 | const adaptedProduct = this.adapter.adaptOne(product); 16 | return adaptedProduct; 17 | } 18 | 19 | async create(product: Product): Promise { 20 | this.db.push(product.toObject()); 21 | product.dispatchEvent('ProductCreated'); 22 | } 23 | 24 | async list(): Promise { 25 | return this.db; 26 | } 27 | 28 | async update(product: Product): Promise { 29 | const index = this.db.findIndex((pd) => pd.id === product.id.value()); 30 | const exists = index !== -1; 31 | if (!exists) return; 32 | this.db.splice(index, 1); 33 | this.db.push(product.toObject()); 34 | product.dispatchAll(); 35 | } 36 | } 37 | 38 | export default ProductRepository; 39 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata'; 2 | import 'module-alias/register'; 3 | import { ProductModule } from "@product/infra/product.module"; 4 | import { InvoiceModule } from "@invoice/infra/invoice.module"; 5 | import { Server } from "./server"; 6 | 7 | 8 | export const main = (): void => { 9 | Server.build([ProductModule, InvoiceModule]); 10 | Server.start(); 11 | } 12 | main(); 13 | -------------------------------------------------------------------------------- /src/server.ts: -------------------------------------------------------------------------------- 1 | import Express, { Express as IExpress } from 'express'; 2 | import { Logger } from 'types-ddd'; 3 | import { Module } from './types'; 4 | import express from 'express'; 5 | import bodyParser from 'body-parser'; 6 | 7 | export class Server { 8 | 9 | private constructor(){} 10 | 11 | static build(routes: Array): Server { 12 | if (!Server.instance) Server.instance = Express(); 13 | Server.applyMiddleware(express.json); 14 | Server.applyMiddleware(bodyParser.json); 15 | Server.applyRoutes(routes); 16 | return Server; 17 | } 18 | 19 | private static applyRoutes(modules: Array): Server { 20 | modules.forEach((module) => { 21 | const { controller } = module; 22 | const methods: Array = Object.keys(controller) as []; 23 | methods.forEach((method) => { 24 | Server.instance.use(controller[method]); 25 | }); 26 | }); 27 | return Server; 28 | } 29 | 30 | public static applyMiddleware(middleware: any): void { 31 | Server.instance.use(middleware()); 32 | } 33 | 34 | static start(port: number = 3000): void { 35 | if (!Server.instance) return Logger.error("You must build the app before start it."); 36 | const callback = () => Logger.info(`Running on port: ${port}`); 37 | Server.instance.on('online', callback); 38 | Server.instance.listen(port); 39 | Server.instance.emit('online'); 40 | } 41 | 42 | private static instance: IExpress; 43 | } 44 | -------------------------------------------------------------------------------- /src/test/app.test.ts: -------------------------------------------------------------------------------- 1 | import supertest from 'supertest'; 2 | 3 | describe('app.test', () => { 4 | const host = '127.0.0.1:3000'; 5 | let id = ''; 6 | 7 | it('should create a product with success', async () => { 8 | const result = await supertest(host).post('/products').send({ name: 'valid', price: 21 }); 9 | expect(result.status).toBe(200); 10 | }); 11 | 12 | it('should get product with success', async () => { 13 | const result = await supertest(host).get('/products'); 14 | expect(result.status).toBe(200); 15 | 16 | id = result.body.products[0].id; 17 | 18 | expect(result.body.products[0].name.value).toBe('valid'); 19 | expect(result.body.products[0].price.value).toBe(21); 20 | }); 21 | 22 | it('should update first product', async () => { 23 | const result = await supertest(host).put(`/products/${id}`).send({ name: 'changed', price: 42 }); 24 | expect(result.status).toBe(200); 25 | }); 26 | 27 | it('should get first product updated', async () => { 28 | const result = await supertest(host).get('/products'); 29 | expect(result.status).toBe(200); 30 | expect(result.body.products[0].name.value).toBe('changed'); 31 | expect(result.body.products[0].price.value).toBe(42); 32 | }); 33 | 34 | it('should list invoices', async () => { 35 | const result = await supertest(host).get(`/invoices`) 36 | expect(result.status).toBe(200); 37 | expect(result.body.invoices).toHaveLength(1); 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /src/types/index.ts: -------------------------------------------------------------------------------- 1 | type Obj = {}; 2 | 3 | export interface Module { 4 | controller: Obj; 5 | } 6 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2016", 4 | "module": "CommonJS", 5 | "esModuleInterop": true, 6 | "sourceMap": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "strict": true, 9 | "alwaysStrict": true, 10 | "strictNullChecks": true, 11 | "experimentalDecorators": true, 12 | "skipLibCheck": true, 13 | "baseUrl": "./", 14 | "rootDir": "./", 15 | "outDir": "dist", 16 | "paths": { 17 | "@types": ["./src/types/index"], 18 | "@product/*": ["./src/contexts/product/*"], 19 | "@invoice/*": ["./src/contexts/invoice/*"] 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.2.0": 6 | version "2.3.0" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" 8 | integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.3.5" 11 | "@jridgewell/trace-mapping" "^0.3.24" 12 | 13 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7": 14 | version "7.24.7" 15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" 16 | integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== 17 | dependencies: 18 | "@babel/highlight" "^7.24.7" 19 | picocolors "^1.0.0" 20 | 21 | "@babel/compat-data@^7.24.8": 22 | version "7.24.9" 23 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.9.tgz#53eee4e68f1c1d0282aa0eb05ddb02d033fc43a0" 24 | integrity sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng== 25 | 26 | "@babel/core@^7.11.6", "@babel/core@^7.12.3": 27 | version "7.24.9" 28 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.9.tgz#dc07c9d307162c97fa9484ea997ade65841c7c82" 29 | integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg== 30 | dependencies: 31 | "@ampproject/remapping" "^2.2.0" 32 | "@babel/code-frame" "^7.24.7" 33 | "@babel/generator" "^7.24.9" 34 | "@babel/helper-compilation-targets" "^7.24.8" 35 | "@babel/helper-module-transforms" "^7.24.9" 36 | "@babel/helpers" "^7.24.8" 37 | "@babel/parser" "^7.24.8" 38 | "@babel/template" "^7.24.7" 39 | "@babel/traverse" "^7.24.8" 40 | "@babel/types" "^7.24.9" 41 | convert-source-map "^2.0.0" 42 | debug "^4.1.0" 43 | gensync "^1.0.0-beta.2" 44 | json5 "^2.2.3" 45 | semver "^6.3.1" 46 | 47 | "@babel/generator@^7.24.8", "@babel/generator@^7.24.9", "@babel/generator@^7.7.2": 48 | version "7.24.10" 49 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.10.tgz#a4ab681ec2a78bbb9ba22a3941195e28a81d8e76" 50 | integrity sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg== 51 | dependencies: 52 | "@babel/types" "^7.24.9" 53 | "@jridgewell/gen-mapping" "^0.3.5" 54 | "@jridgewell/trace-mapping" "^0.3.25" 55 | jsesc "^2.5.1" 56 | 57 | "@babel/helper-compilation-targets@^7.24.8": 58 | version "7.24.8" 59 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz#b607c3161cd9d1744977d4f97139572fe778c271" 60 | integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw== 61 | dependencies: 62 | "@babel/compat-data" "^7.24.8" 63 | "@babel/helper-validator-option" "^7.24.8" 64 | browserslist "^4.23.1" 65 | lru-cache "^5.1.1" 66 | semver "^6.3.1" 67 | 68 | "@babel/helper-environment-visitor@^7.24.7": 69 | version "7.24.7" 70 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" 71 | integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== 72 | dependencies: 73 | "@babel/types" "^7.24.7" 74 | 75 | "@babel/helper-function-name@^7.24.7": 76 | version "7.24.7" 77 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" 78 | integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== 79 | dependencies: 80 | "@babel/template" "^7.24.7" 81 | "@babel/types" "^7.24.7" 82 | 83 | "@babel/helper-hoist-variables@^7.24.7": 84 | version "7.24.7" 85 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" 86 | integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== 87 | dependencies: 88 | "@babel/types" "^7.24.7" 89 | 90 | "@babel/helper-module-imports@^7.24.7": 91 | version "7.24.7" 92 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" 93 | integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== 94 | dependencies: 95 | "@babel/traverse" "^7.24.7" 96 | "@babel/types" "^7.24.7" 97 | 98 | "@babel/helper-module-transforms@^7.24.9": 99 | version "7.24.9" 100 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz#e13d26306b89eea569180868e652e7f514de9d29" 101 | integrity sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw== 102 | dependencies: 103 | "@babel/helper-environment-visitor" "^7.24.7" 104 | "@babel/helper-module-imports" "^7.24.7" 105 | "@babel/helper-simple-access" "^7.24.7" 106 | "@babel/helper-split-export-declaration" "^7.24.7" 107 | "@babel/helper-validator-identifier" "^7.24.7" 108 | 109 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.8.0": 110 | version "7.24.8" 111 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" 112 | integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== 113 | 114 | "@babel/helper-simple-access@^7.24.7": 115 | version "7.24.7" 116 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" 117 | integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== 118 | dependencies: 119 | "@babel/traverse" "^7.24.7" 120 | "@babel/types" "^7.24.7" 121 | 122 | "@babel/helper-split-export-declaration@^7.24.7": 123 | version "7.24.7" 124 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" 125 | integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== 126 | dependencies: 127 | "@babel/types" "^7.24.7" 128 | 129 | "@babel/helper-string-parser@^7.24.8": 130 | version "7.24.8" 131 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" 132 | integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== 133 | 134 | "@babel/helper-validator-identifier@^7.24.7": 135 | version "7.24.7" 136 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" 137 | integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== 138 | 139 | "@babel/helper-validator-option@^7.24.8": 140 | version "7.24.8" 141 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" 142 | integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== 143 | 144 | "@babel/helpers@^7.24.8": 145 | version "7.24.8" 146 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.8.tgz#2820d64d5d6686cca8789dd15b074cd862795873" 147 | integrity sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ== 148 | dependencies: 149 | "@babel/template" "^7.24.7" 150 | "@babel/types" "^7.24.8" 151 | 152 | "@babel/highlight@^7.24.7": 153 | version "7.24.7" 154 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" 155 | integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== 156 | dependencies: 157 | "@babel/helper-validator-identifier" "^7.24.7" 158 | chalk "^2.4.2" 159 | js-tokens "^4.0.0" 160 | picocolors "^1.0.0" 161 | 162 | "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.7", "@babel/parser@^7.24.8": 163 | version "7.24.8" 164 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.8.tgz#58a4dbbcad7eb1d48930524a3fd93d93e9084c6f" 165 | integrity sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w== 166 | 167 | "@babel/plugin-syntax-async-generators@^7.8.4": 168 | version "7.8.4" 169 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 170 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 171 | dependencies: 172 | "@babel/helper-plugin-utils" "^7.8.0" 173 | 174 | "@babel/plugin-syntax-bigint@^7.8.3": 175 | version "7.8.3" 176 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" 177 | integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== 178 | dependencies: 179 | "@babel/helper-plugin-utils" "^7.8.0" 180 | 181 | "@babel/plugin-syntax-class-properties@^7.8.3": 182 | version "7.12.13" 183 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" 184 | integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== 185 | dependencies: 186 | "@babel/helper-plugin-utils" "^7.12.13" 187 | 188 | "@babel/plugin-syntax-import-meta@^7.8.3": 189 | version "7.10.4" 190 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" 191 | integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== 192 | dependencies: 193 | "@babel/helper-plugin-utils" "^7.10.4" 194 | 195 | "@babel/plugin-syntax-json-strings@^7.8.3": 196 | version "7.8.3" 197 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 198 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 199 | dependencies: 200 | "@babel/helper-plugin-utils" "^7.8.0" 201 | 202 | "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": 203 | version "7.10.4" 204 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" 205 | integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== 206 | dependencies: 207 | "@babel/helper-plugin-utils" "^7.10.4" 208 | 209 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 210 | version "7.8.3" 211 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 212 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 213 | dependencies: 214 | "@babel/helper-plugin-utils" "^7.8.0" 215 | 216 | "@babel/plugin-syntax-numeric-separator@^7.8.3": 217 | version "7.10.4" 218 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" 219 | integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== 220 | dependencies: 221 | "@babel/helper-plugin-utils" "^7.10.4" 222 | 223 | "@babel/plugin-syntax-object-rest-spread@^7.8.3": 224 | version "7.8.3" 225 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 226 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 227 | dependencies: 228 | "@babel/helper-plugin-utils" "^7.8.0" 229 | 230 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3": 231 | version "7.8.3" 232 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 233 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 234 | dependencies: 235 | "@babel/helper-plugin-utils" "^7.8.0" 236 | 237 | "@babel/plugin-syntax-optional-chaining@^7.8.3": 238 | version "7.8.3" 239 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 240 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 241 | dependencies: 242 | "@babel/helper-plugin-utils" "^7.8.0" 243 | 244 | "@babel/plugin-syntax-top-level-await@^7.8.3": 245 | version "7.14.5" 246 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" 247 | integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== 248 | dependencies: 249 | "@babel/helper-plugin-utils" "^7.14.5" 250 | 251 | "@babel/plugin-syntax-typescript@^7.7.2": 252 | version "7.24.7" 253 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" 254 | integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== 255 | dependencies: 256 | "@babel/helper-plugin-utils" "^7.24.7" 257 | 258 | "@babel/template@^7.24.7", "@babel/template@^7.3.3": 259 | version "7.24.7" 260 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" 261 | integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== 262 | dependencies: 263 | "@babel/code-frame" "^7.24.7" 264 | "@babel/parser" "^7.24.7" 265 | "@babel/types" "^7.24.7" 266 | 267 | "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.7.2": 268 | version "7.24.8" 269 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.8.tgz#6c14ed5232b7549df3371d820fbd9abfcd7dfab7" 270 | integrity sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ== 271 | dependencies: 272 | "@babel/code-frame" "^7.24.7" 273 | "@babel/generator" "^7.24.8" 274 | "@babel/helper-environment-visitor" "^7.24.7" 275 | "@babel/helper-function-name" "^7.24.7" 276 | "@babel/helper-hoist-variables" "^7.24.7" 277 | "@babel/helper-split-export-declaration" "^7.24.7" 278 | "@babel/parser" "^7.24.8" 279 | "@babel/types" "^7.24.8" 280 | debug "^4.3.1" 281 | globals "^11.1.0" 282 | 283 | "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.24.9", "@babel/types@^7.3.3": 284 | version "7.24.9" 285 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.9.tgz#228ce953d7b0d16646e755acf204f4cf3d08cc73" 286 | integrity sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ== 287 | dependencies: 288 | "@babel/helper-string-parser" "^7.24.8" 289 | "@babel/helper-validator-identifier" "^7.24.7" 290 | to-fast-properties "^2.0.0" 291 | 292 | "@bcoe/v8-coverage@^0.2.3": 293 | version "0.2.3" 294 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 295 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 296 | 297 | "@cspotcode/source-map-support@^0.8.0": 298 | version "0.8.1" 299 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 300 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 301 | dependencies: 302 | "@jridgewell/trace-mapping" "0.3.9" 303 | 304 | "@istanbuljs/load-nyc-config@^1.0.0": 305 | version "1.1.0" 306 | resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" 307 | integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== 308 | dependencies: 309 | camelcase "^5.3.1" 310 | find-up "^4.1.0" 311 | get-package-type "^0.1.0" 312 | js-yaml "^3.13.1" 313 | resolve-from "^5.0.0" 314 | 315 | "@istanbuljs/schema@^0.1.2": 316 | version "0.1.3" 317 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 318 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== 319 | 320 | "@jest/console@^28.1.3": 321 | version "28.1.3" 322 | resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" 323 | integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== 324 | dependencies: 325 | "@jest/types" "^28.1.3" 326 | "@types/node" "*" 327 | chalk "^4.0.0" 328 | jest-message-util "^28.1.3" 329 | jest-util "^28.1.3" 330 | slash "^3.0.0" 331 | 332 | "@jest/core@^28.1.3": 333 | version "28.1.3" 334 | resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" 335 | integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== 336 | dependencies: 337 | "@jest/console" "^28.1.3" 338 | "@jest/reporters" "^28.1.3" 339 | "@jest/test-result" "^28.1.3" 340 | "@jest/transform" "^28.1.3" 341 | "@jest/types" "^28.1.3" 342 | "@types/node" "*" 343 | ansi-escapes "^4.2.1" 344 | chalk "^4.0.0" 345 | ci-info "^3.2.0" 346 | exit "^0.1.2" 347 | graceful-fs "^4.2.9" 348 | jest-changed-files "^28.1.3" 349 | jest-config "^28.1.3" 350 | jest-haste-map "^28.1.3" 351 | jest-message-util "^28.1.3" 352 | jest-regex-util "^28.0.2" 353 | jest-resolve "^28.1.3" 354 | jest-resolve-dependencies "^28.1.3" 355 | jest-runner "^28.1.3" 356 | jest-runtime "^28.1.3" 357 | jest-snapshot "^28.1.3" 358 | jest-util "^28.1.3" 359 | jest-validate "^28.1.3" 360 | jest-watcher "^28.1.3" 361 | micromatch "^4.0.4" 362 | pretty-format "^28.1.3" 363 | rimraf "^3.0.0" 364 | slash "^3.0.0" 365 | strip-ansi "^6.0.0" 366 | 367 | "@jest/environment@^28.1.3": 368 | version "28.1.3" 369 | resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" 370 | integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== 371 | dependencies: 372 | "@jest/fake-timers" "^28.1.3" 373 | "@jest/types" "^28.1.3" 374 | "@types/node" "*" 375 | jest-mock "^28.1.3" 376 | 377 | "@jest/expect-utils@^28.1.3": 378 | version "28.1.3" 379 | resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" 380 | integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== 381 | dependencies: 382 | jest-get-type "^28.0.2" 383 | 384 | "@jest/expect@^28.1.3": 385 | version "28.1.3" 386 | resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" 387 | integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== 388 | dependencies: 389 | expect "^28.1.3" 390 | jest-snapshot "^28.1.3" 391 | 392 | "@jest/fake-timers@^28.1.3": 393 | version "28.1.3" 394 | resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" 395 | integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== 396 | dependencies: 397 | "@jest/types" "^28.1.3" 398 | "@sinonjs/fake-timers" "^9.1.2" 399 | "@types/node" "*" 400 | jest-message-util "^28.1.3" 401 | jest-mock "^28.1.3" 402 | jest-util "^28.1.3" 403 | 404 | "@jest/globals@^28.1.3": 405 | version "28.1.3" 406 | resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" 407 | integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== 408 | dependencies: 409 | "@jest/environment" "^28.1.3" 410 | "@jest/expect" "^28.1.3" 411 | "@jest/types" "^28.1.3" 412 | 413 | "@jest/reporters@^28.1.3": 414 | version "28.1.3" 415 | resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" 416 | integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== 417 | dependencies: 418 | "@bcoe/v8-coverage" "^0.2.3" 419 | "@jest/console" "^28.1.3" 420 | "@jest/test-result" "^28.1.3" 421 | "@jest/transform" "^28.1.3" 422 | "@jest/types" "^28.1.3" 423 | "@jridgewell/trace-mapping" "^0.3.13" 424 | "@types/node" "*" 425 | chalk "^4.0.0" 426 | collect-v8-coverage "^1.0.0" 427 | exit "^0.1.2" 428 | glob "^7.1.3" 429 | graceful-fs "^4.2.9" 430 | istanbul-lib-coverage "^3.0.0" 431 | istanbul-lib-instrument "^5.1.0" 432 | istanbul-lib-report "^3.0.0" 433 | istanbul-lib-source-maps "^4.0.0" 434 | istanbul-reports "^3.1.3" 435 | jest-message-util "^28.1.3" 436 | jest-util "^28.1.3" 437 | jest-worker "^28.1.3" 438 | slash "^3.0.0" 439 | string-length "^4.0.1" 440 | strip-ansi "^6.0.0" 441 | terminal-link "^2.0.0" 442 | v8-to-istanbul "^9.0.1" 443 | 444 | "@jest/schemas@^28.1.3": 445 | version "28.1.3" 446 | resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" 447 | integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== 448 | dependencies: 449 | "@sinclair/typebox" "^0.24.1" 450 | 451 | "@jest/source-map@^28.1.2": 452 | version "28.1.2" 453 | resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" 454 | integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== 455 | dependencies: 456 | "@jridgewell/trace-mapping" "^0.3.13" 457 | callsites "^3.0.0" 458 | graceful-fs "^4.2.9" 459 | 460 | "@jest/test-result@^28.1.3": 461 | version "28.1.3" 462 | resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" 463 | integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== 464 | dependencies: 465 | "@jest/console" "^28.1.3" 466 | "@jest/types" "^28.1.3" 467 | "@types/istanbul-lib-coverage" "^2.0.0" 468 | collect-v8-coverage "^1.0.0" 469 | 470 | "@jest/test-sequencer@^28.1.3": 471 | version "28.1.3" 472 | resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" 473 | integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== 474 | dependencies: 475 | "@jest/test-result" "^28.1.3" 476 | graceful-fs "^4.2.9" 477 | jest-haste-map "^28.1.3" 478 | slash "^3.0.0" 479 | 480 | "@jest/transform@^28.1.3": 481 | version "28.1.3" 482 | resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" 483 | integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== 484 | dependencies: 485 | "@babel/core" "^7.11.6" 486 | "@jest/types" "^28.1.3" 487 | "@jridgewell/trace-mapping" "^0.3.13" 488 | babel-plugin-istanbul "^6.1.1" 489 | chalk "^4.0.0" 490 | convert-source-map "^1.4.0" 491 | fast-json-stable-stringify "^2.0.0" 492 | graceful-fs "^4.2.9" 493 | jest-haste-map "^28.1.3" 494 | jest-regex-util "^28.0.2" 495 | jest-util "^28.1.3" 496 | micromatch "^4.0.4" 497 | pirates "^4.0.4" 498 | slash "^3.0.0" 499 | write-file-atomic "^4.0.1" 500 | 501 | "@jest/types@^28.1.3": 502 | version "28.1.3" 503 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" 504 | integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== 505 | dependencies: 506 | "@jest/schemas" "^28.1.3" 507 | "@types/istanbul-lib-coverage" "^2.0.0" 508 | "@types/istanbul-reports" "^3.0.0" 509 | "@types/node" "*" 510 | "@types/yargs" "^17.0.8" 511 | chalk "^4.0.0" 512 | 513 | "@jridgewell/gen-mapping@^0.3.5": 514 | version "0.3.5" 515 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" 516 | integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== 517 | dependencies: 518 | "@jridgewell/set-array" "^1.2.1" 519 | "@jridgewell/sourcemap-codec" "^1.4.10" 520 | "@jridgewell/trace-mapping" "^0.3.24" 521 | 522 | "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": 523 | version "3.1.2" 524 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" 525 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 526 | 527 | "@jridgewell/set-array@^1.2.1": 528 | version "1.2.1" 529 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" 530 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== 531 | 532 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": 533 | version "1.5.0" 534 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" 535 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 536 | 537 | "@jridgewell/trace-mapping@0.3.9": 538 | version "0.3.9" 539 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 540 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 541 | dependencies: 542 | "@jridgewell/resolve-uri" "^3.0.3" 543 | "@jridgewell/sourcemap-codec" "^1.4.10" 544 | 545 | "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": 546 | version "0.3.25" 547 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" 548 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== 549 | dependencies: 550 | "@jridgewell/resolve-uri" "^3.1.0" 551 | "@jridgewell/sourcemap-codec" "^1.4.14" 552 | 553 | "@mapbox/node-pre-gyp@^1.0.11": 554 | version "1.0.11" 555 | resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" 556 | integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== 557 | dependencies: 558 | detect-libc "^2.0.0" 559 | https-proxy-agent "^5.0.0" 560 | make-dir "^3.1.0" 561 | node-fetch "^2.6.7" 562 | nopt "^5.0.0" 563 | npmlog "^5.0.1" 564 | rimraf "^3.0.2" 565 | semver "^7.3.5" 566 | tar "^6.1.11" 567 | 568 | "@sinclair/typebox@^0.24.1": 569 | version "0.24.51" 570 | resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" 571 | integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== 572 | 573 | "@sinonjs/commons@^1.7.0": 574 | version "1.8.6" 575 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" 576 | integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== 577 | dependencies: 578 | type-detect "4.0.8" 579 | 580 | "@sinonjs/fake-timers@^9.1.2": 581 | version "9.1.2" 582 | resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" 583 | integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== 584 | dependencies: 585 | "@sinonjs/commons" "^1.7.0" 586 | 587 | "@tsconfig/node10@^1.0.7": 588 | version "1.0.11" 589 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" 590 | integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== 591 | 592 | "@tsconfig/node12@^1.0.7": 593 | version "1.0.11" 594 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" 595 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 596 | 597 | "@tsconfig/node14@^1.0.0": 598 | version "1.0.3" 599 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" 600 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 601 | 602 | "@tsconfig/node16@^1.0.2": 603 | version "1.0.4" 604 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" 605 | integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== 606 | 607 | "@types/babel__core@^7.1.14": 608 | version "7.20.5" 609 | resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" 610 | integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== 611 | dependencies: 612 | "@babel/parser" "^7.20.7" 613 | "@babel/types" "^7.20.7" 614 | "@types/babel__generator" "*" 615 | "@types/babel__template" "*" 616 | "@types/babel__traverse" "*" 617 | 618 | "@types/babel__generator@*": 619 | version "7.6.8" 620 | resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" 621 | integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== 622 | dependencies: 623 | "@babel/types" "^7.0.0" 624 | 625 | "@types/babel__template@*": 626 | version "7.4.4" 627 | resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" 628 | integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== 629 | dependencies: 630 | "@babel/parser" "^7.1.0" 631 | "@babel/types" "^7.0.0" 632 | 633 | "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": 634 | version "7.20.6" 635 | resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" 636 | integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== 637 | dependencies: 638 | "@babel/types" "^7.20.7" 639 | 640 | "@types/body-parser@*": 641 | version "1.19.5" 642 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" 643 | integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== 644 | dependencies: 645 | "@types/connect" "*" 646 | "@types/node" "*" 647 | 648 | "@types/connect@*": 649 | version "3.4.38" 650 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" 651 | integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== 652 | dependencies: 653 | "@types/node" "*" 654 | 655 | "@types/cookiejar@^2.1.5": 656 | version "2.1.5" 657 | resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.5.tgz#14a3e83fa641beb169a2dd8422d91c3c345a9a78" 658 | integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q== 659 | 660 | "@types/express-serve-static-core@^4.17.33": 661 | version "4.19.5" 662 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" 663 | integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== 664 | dependencies: 665 | "@types/node" "*" 666 | "@types/qs" "*" 667 | "@types/range-parser" "*" 668 | "@types/send" "*" 669 | 670 | "@types/express@^4.17.17": 671 | version "4.17.21" 672 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" 673 | integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== 674 | dependencies: 675 | "@types/body-parser" "*" 676 | "@types/express-serve-static-core" "^4.17.33" 677 | "@types/qs" "*" 678 | "@types/serve-static" "*" 679 | 680 | "@types/graceful-fs@^4.1.3": 681 | version "4.1.9" 682 | resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" 683 | integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== 684 | dependencies: 685 | "@types/node" "*" 686 | 687 | "@types/http-errors@*": 688 | version "2.0.4" 689 | resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" 690 | integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== 691 | 692 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 693 | version "2.0.6" 694 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" 695 | integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== 696 | 697 | "@types/istanbul-lib-report@*": 698 | version "3.0.3" 699 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" 700 | integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== 701 | dependencies: 702 | "@types/istanbul-lib-coverage" "*" 703 | 704 | "@types/istanbul-reports@^3.0.0": 705 | version "3.0.4" 706 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" 707 | integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== 708 | dependencies: 709 | "@types/istanbul-lib-report" "*" 710 | 711 | "@types/jest@^28.1.6": 712 | version "28.1.8" 713 | resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.8.tgz#6936409f3c9724ea431efd412ea0238a0f03b09b" 714 | integrity sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw== 715 | dependencies: 716 | expect "^28.0.0" 717 | pretty-format "^28.0.0" 718 | 719 | "@types/methods@^1.1.4": 720 | version "1.1.4" 721 | resolved "https://registry.yarnpkg.com/@types/methods/-/methods-1.1.4.tgz#d3b7ac30ac47c91054ea951ce9eed07b1051e547" 722 | integrity sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ== 723 | 724 | "@types/mime@^1": 725 | version "1.3.5" 726 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" 727 | integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== 728 | 729 | "@types/node@*": 730 | version "20.14.12" 731 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.12.tgz#129d7c3a822cb49fc7ff661235f19cfefd422b49" 732 | integrity sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ== 733 | dependencies: 734 | undici-types "~5.26.4" 735 | 736 | "@types/node@^18.17.1": 737 | version "18.19.42" 738 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.42.tgz#b54ed4752c85427906aab40917b0f7f3d724bf72" 739 | integrity sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg== 740 | dependencies: 741 | undici-types "~5.26.4" 742 | 743 | "@types/prettier@^2.1.5": 744 | version "2.7.3" 745 | resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" 746 | integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== 747 | 748 | "@types/qs@*": 749 | version "6.9.15" 750 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" 751 | integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== 752 | 753 | "@types/range-parser@*": 754 | version "1.2.7" 755 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" 756 | integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== 757 | 758 | "@types/send@*": 759 | version "0.17.4" 760 | resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" 761 | integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== 762 | dependencies: 763 | "@types/mime" "^1" 764 | "@types/node" "*" 765 | 766 | "@types/serve-static@*": 767 | version "1.15.7" 768 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" 769 | integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== 770 | dependencies: 771 | "@types/http-errors" "*" 772 | "@types/node" "*" 773 | "@types/send" "*" 774 | 775 | "@types/stack-utils@^2.0.0": 776 | version "2.0.3" 777 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" 778 | integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== 779 | 780 | "@types/strip-bom@^3.0.0": 781 | version "3.0.0" 782 | resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" 783 | integrity sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ== 784 | 785 | "@types/strip-json-comments@0.0.30": 786 | version "0.0.30" 787 | resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" 788 | integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== 789 | 790 | "@types/superagent@*": 791 | version "8.1.7" 792 | resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-8.1.7.tgz#1153819ed4db34427409a1cc58f3e2f13eeec862" 793 | integrity sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww== 794 | dependencies: 795 | "@types/cookiejar" "^2.1.5" 796 | "@types/methods" "^1.1.4" 797 | "@types/node" "*" 798 | 799 | "@types/supertest@^2.0.12": 800 | version "2.0.16" 801 | resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.16.tgz#7a1294edebecb960d957bbe9b26002a2b7f21cd7" 802 | integrity sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg== 803 | dependencies: 804 | "@types/superagent" "*" 805 | 806 | "@types/yargs-parser@*": 807 | version "21.0.3" 808 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" 809 | integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== 810 | 811 | "@types/yargs@^17.0.8": 812 | version "17.0.32" 813 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" 814 | integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== 815 | dependencies: 816 | "@types/yargs-parser" "*" 817 | 818 | abbrev@1: 819 | version "1.1.1" 820 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 821 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 822 | 823 | abort-controller@^3.0.0: 824 | version "3.0.0" 825 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 826 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 827 | dependencies: 828 | event-target-shim "^5.0.0" 829 | 830 | accepts@~1.3.8: 831 | version "1.3.8" 832 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 833 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 834 | dependencies: 835 | mime-types "~2.1.34" 836 | negotiator "0.6.3" 837 | 838 | acorn-walk@^8.1.1: 839 | version "8.3.3" 840 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" 841 | integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== 842 | dependencies: 843 | acorn "^8.11.0" 844 | 845 | acorn@^8.11.0, acorn@^8.4.1: 846 | version "8.12.1" 847 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" 848 | integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== 849 | 850 | agent-base@6: 851 | version "6.0.2" 852 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 853 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 854 | dependencies: 855 | debug "4" 856 | 857 | ansi-escapes@^4.2.1: 858 | version "4.3.2" 859 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 860 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 861 | dependencies: 862 | type-fest "^0.21.3" 863 | 864 | ansi-regex@^5.0.1: 865 | version "5.0.1" 866 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 867 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 868 | 869 | ansi-styles@^3.2.1: 870 | version "3.2.1" 871 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 872 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 873 | dependencies: 874 | color-convert "^1.9.0" 875 | 876 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 877 | version "4.3.0" 878 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 879 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 880 | dependencies: 881 | color-convert "^2.0.1" 882 | 883 | ansi-styles@^5.0.0: 884 | version "5.2.0" 885 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" 886 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 887 | 888 | anymatch@^3.0.3, anymatch@~3.1.2: 889 | version "3.1.3" 890 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 891 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 892 | dependencies: 893 | normalize-path "^3.0.0" 894 | picomatch "^2.0.4" 895 | 896 | "aproba@^1.0.3 || ^2.0.0": 897 | version "2.0.0" 898 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" 899 | integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== 900 | 901 | are-we-there-yet@^2.0.0: 902 | version "2.0.0" 903 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" 904 | integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== 905 | dependencies: 906 | delegates "^1.0.0" 907 | readable-stream "^3.6.0" 908 | 909 | arg@^4.1.0: 910 | version "4.1.3" 911 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 912 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 913 | 914 | argparse@^1.0.7: 915 | version "1.0.10" 916 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 917 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 918 | dependencies: 919 | sprintf-js "~1.0.2" 920 | 921 | array-flatten@1.1.1: 922 | version "1.1.1" 923 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 924 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 925 | 926 | asap@^2.0.0: 927 | version "2.0.6" 928 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 929 | integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== 930 | 931 | asynckit@^0.4.0: 932 | version "0.4.0" 933 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 934 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 935 | 936 | atomic-sleep@^1.0.0: 937 | version "1.0.0" 938 | resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" 939 | integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== 940 | 941 | babel-jest@^28.1.3: 942 | version "28.1.3" 943 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" 944 | integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== 945 | dependencies: 946 | "@jest/transform" "^28.1.3" 947 | "@types/babel__core" "^7.1.14" 948 | babel-plugin-istanbul "^6.1.1" 949 | babel-preset-jest "^28.1.3" 950 | chalk "^4.0.0" 951 | graceful-fs "^4.2.9" 952 | slash "^3.0.0" 953 | 954 | babel-plugin-istanbul@^6.1.1: 955 | version "6.1.1" 956 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" 957 | integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== 958 | dependencies: 959 | "@babel/helper-plugin-utils" "^7.0.0" 960 | "@istanbuljs/load-nyc-config" "^1.0.0" 961 | "@istanbuljs/schema" "^0.1.2" 962 | istanbul-lib-instrument "^5.0.4" 963 | test-exclude "^6.0.0" 964 | 965 | babel-plugin-jest-hoist@^28.1.3: 966 | version "28.1.3" 967 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" 968 | integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== 969 | dependencies: 970 | "@babel/template" "^7.3.3" 971 | "@babel/types" "^7.3.3" 972 | "@types/babel__core" "^7.1.14" 973 | "@types/babel__traverse" "^7.0.6" 974 | 975 | babel-preset-current-node-syntax@^1.0.0: 976 | version "1.0.1" 977 | resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" 978 | integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== 979 | dependencies: 980 | "@babel/plugin-syntax-async-generators" "^7.8.4" 981 | "@babel/plugin-syntax-bigint" "^7.8.3" 982 | "@babel/plugin-syntax-class-properties" "^7.8.3" 983 | "@babel/plugin-syntax-import-meta" "^7.8.3" 984 | "@babel/plugin-syntax-json-strings" "^7.8.3" 985 | "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 986 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 987 | "@babel/plugin-syntax-numeric-separator" "^7.8.3" 988 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 989 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 990 | "@babel/plugin-syntax-optional-chaining" "^7.8.3" 991 | "@babel/plugin-syntax-top-level-await" "^7.8.3" 992 | 993 | babel-preset-jest@^28.1.3: 994 | version "28.1.3" 995 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" 996 | integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== 997 | dependencies: 998 | babel-plugin-jest-hoist "^28.1.3" 999 | babel-preset-current-node-syntax "^1.0.0" 1000 | 1001 | balanced-match@^1.0.0: 1002 | version "1.0.2" 1003 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 1004 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 1005 | 1006 | base64-js@^1.3.1: 1007 | version "1.5.1" 1008 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 1009 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 1010 | 1011 | bcrypt@^5.0.1: 1012 | version "5.1.1" 1013 | resolved "https://registry.yarnpkg.com/bcrypt/-/bcrypt-5.1.1.tgz#0f732c6dcb4e12e5b70a25e326a72965879ba6e2" 1014 | integrity sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww== 1015 | dependencies: 1016 | "@mapbox/node-pre-gyp" "^1.0.11" 1017 | node-addon-api "^5.0.0" 1018 | 1019 | binary-extensions@^2.0.0: 1020 | version "2.3.0" 1021 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" 1022 | integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== 1023 | 1024 | body-parser@1.20.2, body-parser@^1.20.2: 1025 | version "1.20.2" 1026 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" 1027 | integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== 1028 | dependencies: 1029 | bytes "3.1.2" 1030 | content-type "~1.0.5" 1031 | debug "2.6.9" 1032 | depd "2.0.0" 1033 | destroy "1.2.0" 1034 | http-errors "2.0.0" 1035 | iconv-lite "0.4.24" 1036 | on-finished "2.4.1" 1037 | qs "6.11.0" 1038 | raw-body "2.5.2" 1039 | type-is "~1.6.18" 1040 | unpipe "1.0.0" 1041 | 1042 | brace-expansion@^1.1.7: 1043 | version "1.1.11" 1044 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 1045 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 1046 | dependencies: 1047 | balanced-match "^1.0.0" 1048 | concat-map "0.0.1" 1049 | 1050 | braces@^3.0.3, braces@~3.0.2: 1051 | version "3.0.3" 1052 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 1053 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 1054 | dependencies: 1055 | fill-range "^7.1.1" 1056 | 1057 | browserslist@^4.23.1: 1058 | version "4.23.2" 1059 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed" 1060 | integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== 1061 | dependencies: 1062 | caniuse-lite "^1.0.30001640" 1063 | electron-to-chromium "^1.4.820" 1064 | node-releases "^2.0.14" 1065 | update-browserslist-db "^1.1.0" 1066 | 1067 | bs-logger@0.x: 1068 | version "0.2.6" 1069 | resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" 1070 | integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== 1071 | dependencies: 1072 | fast-json-stable-stringify "2.x" 1073 | 1074 | bser@2.1.1: 1075 | version "2.1.1" 1076 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" 1077 | integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== 1078 | dependencies: 1079 | node-int64 "^0.4.0" 1080 | 1081 | buffer-from@^1.0.0: 1082 | version "1.1.2" 1083 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 1084 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 1085 | 1086 | buffer@^6.0.3: 1087 | version "6.0.3" 1088 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" 1089 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 1090 | dependencies: 1091 | base64-js "^1.3.1" 1092 | ieee754 "^1.2.1" 1093 | 1094 | bytes@3.1.2: 1095 | version "3.1.2" 1096 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 1097 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 1098 | 1099 | call-bind@^1.0.7: 1100 | version "1.0.7" 1101 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" 1102 | integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== 1103 | dependencies: 1104 | es-define-property "^1.0.0" 1105 | es-errors "^1.3.0" 1106 | function-bind "^1.1.2" 1107 | get-intrinsic "^1.2.4" 1108 | set-function-length "^1.2.1" 1109 | 1110 | callsites@^3.0.0: 1111 | version "3.1.0" 1112 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 1113 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 1114 | 1115 | camelcase@^5.3.1: 1116 | version "5.3.1" 1117 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 1118 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 1119 | 1120 | camelcase@^6.2.0: 1121 | version "6.3.0" 1122 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 1123 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 1124 | 1125 | caniuse-lite@^1.0.30001640: 1126 | version "1.0.30001643" 1127 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz#9c004caef315de9452ab970c3da71085f8241dbd" 1128 | integrity sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg== 1129 | 1130 | chalk@^2.4.2: 1131 | version "2.4.2" 1132 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 1133 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 1134 | dependencies: 1135 | ansi-styles "^3.2.1" 1136 | escape-string-regexp "^1.0.5" 1137 | supports-color "^5.3.0" 1138 | 1139 | chalk@^4.0.0: 1140 | version "4.1.2" 1141 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 1142 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 1143 | dependencies: 1144 | ansi-styles "^4.1.0" 1145 | supports-color "^7.1.0" 1146 | 1147 | char-regex@^1.0.2: 1148 | version "1.0.2" 1149 | resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" 1150 | integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== 1151 | 1152 | chokidar@^3.5.1: 1153 | version "3.6.0" 1154 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" 1155 | integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== 1156 | dependencies: 1157 | anymatch "~3.1.2" 1158 | braces "~3.0.2" 1159 | glob-parent "~5.1.2" 1160 | is-binary-path "~2.1.0" 1161 | is-glob "~4.0.1" 1162 | normalize-path "~3.0.0" 1163 | readdirp "~3.6.0" 1164 | optionalDependencies: 1165 | fsevents "~2.3.2" 1166 | 1167 | chownr@^2.0.0: 1168 | version "2.0.0" 1169 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" 1170 | integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== 1171 | 1172 | ci-info@^3.2.0: 1173 | version "3.9.0" 1174 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" 1175 | integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== 1176 | 1177 | cjs-module-lexer@^1.0.0: 1178 | version "1.3.1" 1179 | resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" 1180 | integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== 1181 | 1182 | cliui@^8.0.1: 1183 | version "8.0.1" 1184 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 1185 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 1186 | dependencies: 1187 | string-width "^4.2.0" 1188 | strip-ansi "^6.0.1" 1189 | wrap-ansi "^7.0.0" 1190 | 1191 | co@^4.6.0: 1192 | version "4.6.0" 1193 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 1194 | integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== 1195 | 1196 | collect-v8-coverage@^1.0.0: 1197 | version "1.0.2" 1198 | resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" 1199 | integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== 1200 | 1201 | color-convert@^1.9.0: 1202 | version "1.9.3" 1203 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 1204 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 1205 | dependencies: 1206 | color-name "1.1.3" 1207 | 1208 | color-convert@^2.0.1: 1209 | version "2.0.1" 1210 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1211 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1212 | dependencies: 1213 | color-name "~1.1.4" 1214 | 1215 | color-name@1.1.3: 1216 | version "1.1.3" 1217 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1218 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 1219 | 1220 | color-name@~1.1.4: 1221 | version "1.1.4" 1222 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1223 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1224 | 1225 | color-support@^1.1.2: 1226 | version "1.1.3" 1227 | resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" 1228 | integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== 1229 | 1230 | colorette@^2.0.7: 1231 | version "2.0.20" 1232 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" 1233 | integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== 1234 | 1235 | combined-stream@^1.0.8: 1236 | version "1.0.8" 1237 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 1238 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 1239 | dependencies: 1240 | delayed-stream "~1.0.0" 1241 | 1242 | component-emitter@^1.3.0: 1243 | version "1.3.1" 1244 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" 1245 | integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== 1246 | 1247 | concat-map@0.0.1: 1248 | version "0.0.1" 1249 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1250 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 1251 | 1252 | console-control-strings@^1.0.0, console-control-strings@^1.1.0: 1253 | version "1.1.0" 1254 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 1255 | integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== 1256 | 1257 | content-disposition@0.5.4: 1258 | version "0.5.4" 1259 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 1260 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 1261 | dependencies: 1262 | safe-buffer "5.2.1" 1263 | 1264 | content-type@~1.0.4, content-type@~1.0.5: 1265 | version "1.0.5" 1266 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" 1267 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 1268 | 1269 | convert-source-map@^1.4.0: 1270 | version "1.9.0" 1271 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" 1272 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== 1273 | 1274 | convert-source-map@^2.0.0: 1275 | version "2.0.0" 1276 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" 1277 | integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== 1278 | 1279 | cookie-signature@1.0.6: 1280 | version "1.0.6" 1281 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 1282 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 1283 | 1284 | cookie@0.6.0: 1285 | version "0.6.0" 1286 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" 1287 | integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== 1288 | 1289 | cookiejar@^2.1.4: 1290 | version "2.1.4" 1291 | resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" 1292 | integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== 1293 | 1294 | create-require@^1.1.0: 1295 | version "1.1.1" 1296 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 1297 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 1298 | 1299 | cross-spawn@^7.0.3: 1300 | version "7.0.3" 1301 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 1302 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 1303 | dependencies: 1304 | path-key "^3.1.0" 1305 | shebang-command "^2.0.0" 1306 | which "^2.0.1" 1307 | 1308 | dateformat@^4.6.3: 1309 | version "4.6.3" 1310 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" 1311 | integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== 1312 | 1313 | debug@2.6.9: 1314 | version "2.6.9" 1315 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 1316 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 1317 | dependencies: 1318 | ms "2.0.0" 1319 | 1320 | debug@4: 1321 | version "4.4.0" 1322 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" 1323 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== 1324 | dependencies: 1325 | ms "^2.1.3" 1326 | 1327 | debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: 1328 | version "4.3.5" 1329 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" 1330 | integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== 1331 | dependencies: 1332 | ms "2.1.2" 1333 | 1334 | dedent@^0.7.0: 1335 | version "0.7.0" 1336 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 1337 | integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== 1338 | 1339 | deepmerge@^4.2.2: 1340 | version "4.3.1" 1341 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" 1342 | integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== 1343 | 1344 | define-data-property@^1.1.4: 1345 | version "1.1.4" 1346 | resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" 1347 | integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== 1348 | dependencies: 1349 | es-define-property "^1.0.0" 1350 | es-errors "^1.3.0" 1351 | gopd "^1.0.1" 1352 | 1353 | delayed-stream@~1.0.0: 1354 | version "1.0.0" 1355 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1356 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 1357 | 1358 | delegates@^1.0.0: 1359 | version "1.0.0" 1360 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 1361 | integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== 1362 | 1363 | depd@2.0.0: 1364 | version "2.0.0" 1365 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 1366 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 1367 | 1368 | destroy@1.2.0: 1369 | version "1.2.0" 1370 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 1371 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 1372 | 1373 | detect-libc@^2.0.0: 1374 | version "2.0.3" 1375 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" 1376 | integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== 1377 | 1378 | detect-newline@^3.0.0: 1379 | version "3.1.0" 1380 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 1381 | integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 1382 | 1383 | dezalgo@^1.0.4: 1384 | version "1.0.4" 1385 | resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" 1386 | integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== 1387 | dependencies: 1388 | asap "^2.0.0" 1389 | wrappy "1" 1390 | 1391 | diff-sequences@^28.1.1: 1392 | version "28.1.1" 1393 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" 1394 | integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== 1395 | 1396 | diff@^4.0.1: 1397 | version "4.0.2" 1398 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 1399 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 1400 | 1401 | dynamic-dedupe@^0.3.0: 1402 | version "0.3.0" 1403 | resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" 1404 | integrity sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ== 1405 | dependencies: 1406 | xtend "^4.0.0" 1407 | 1408 | ee-first@1.1.1: 1409 | version "1.1.1" 1410 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 1411 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 1412 | 1413 | electron-to-chromium@^1.4.820: 1414 | version "1.5.1" 1415 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.1.tgz#24640bd4dcfaccb6d82bb4c3f4c7311503241581" 1416 | integrity sha512-FKbOCOQ5QRB3VlIbl1LZQefWIYwszlBloaXcY2rbfpu9ioJnNh3TK03YtIDKDo3WKBi8u+YV4+Fn2CkEozgf4w== 1417 | 1418 | emittery@^0.10.2: 1419 | version "0.10.2" 1420 | resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" 1421 | integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== 1422 | 1423 | emoji-regex@^8.0.0: 1424 | version "8.0.0" 1425 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1426 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1427 | 1428 | encodeurl@~1.0.2: 1429 | version "1.0.2" 1430 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 1431 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 1432 | 1433 | end-of-stream@^1.1.0: 1434 | version "1.4.4" 1435 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 1436 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 1437 | dependencies: 1438 | once "^1.4.0" 1439 | 1440 | error-ex@^1.3.1: 1441 | version "1.3.2" 1442 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 1443 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1444 | dependencies: 1445 | is-arrayish "^0.2.1" 1446 | 1447 | es-define-property@^1.0.0: 1448 | version "1.0.0" 1449 | resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" 1450 | integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== 1451 | dependencies: 1452 | get-intrinsic "^1.2.4" 1453 | 1454 | es-errors@^1.3.0: 1455 | version "1.3.0" 1456 | resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" 1457 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 1458 | 1459 | escalade@^3.1.1, escalade@^3.1.2: 1460 | version "3.1.2" 1461 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" 1462 | integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== 1463 | 1464 | escape-html@~1.0.3: 1465 | version "1.0.3" 1466 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 1467 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 1468 | 1469 | escape-string-regexp@^1.0.5: 1470 | version "1.0.5" 1471 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1472 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 1473 | 1474 | escape-string-regexp@^2.0.0: 1475 | version "2.0.0" 1476 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1477 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1478 | 1479 | esprima@^4.0.0: 1480 | version "4.0.1" 1481 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1482 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1483 | 1484 | etag@~1.8.1: 1485 | version "1.8.1" 1486 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 1487 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 1488 | 1489 | event-target-shim@^5.0.0: 1490 | version "5.0.1" 1491 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 1492 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 1493 | 1494 | events@^3.3.0: 1495 | version "3.3.0" 1496 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 1497 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 1498 | 1499 | execa@^5.0.0: 1500 | version "5.1.1" 1501 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 1502 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 1503 | dependencies: 1504 | cross-spawn "^7.0.3" 1505 | get-stream "^6.0.0" 1506 | human-signals "^2.1.0" 1507 | is-stream "^2.0.0" 1508 | merge-stream "^2.0.0" 1509 | npm-run-path "^4.0.1" 1510 | onetime "^5.1.2" 1511 | signal-exit "^3.0.3" 1512 | strip-final-newline "^2.0.0" 1513 | 1514 | exit@^0.1.2: 1515 | version "0.1.2" 1516 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1517 | integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== 1518 | 1519 | expect@^28.0.0, expect@^28.1.3: 1520 | version "28.1.3" 1521 | resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" 1522 | integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== 1523 | dependencies: 1524 | "@jest/expect-utils" "^28.1.3" 1525 | jest-get-type "^28.0.2" 1526 | jest-matcher-utils "^28.1.3" 1527 | jest-message-util "^28.1.3" 1528 | jest-util "^28.1.3" 1529 | 1530 | express@^4.18.2: 1531 | version "4.19.2" 1532 | resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" 1533 | integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== 1534 | dependencies: 1535 | accepts "~1.3.8" 1536 | array-flatten "1.1.1" 1537 | body-parser "1.20.2" 1538 | content-disposition "0.5.4" 1539 | content-type "~1.0.4" 1540 | cookie "0.6.0" 1541 | cookie-signature "1.0.6" 1542 | debug "2.6.9" 1543 | depd "2.0.0" 1544 | encodeurl "~1.0.2" 1545 | escape-html "~1.0.3" 1546 | etag "~1.8.1" 1547 | finalhandler "1.2.0" 1548 | fresh "0.5.2" 1549 | http-errors "2.0.0" 1550 | merge-descriptors "1.0.1" 1551 | methods "~1.1.2" 1552 | on-finished "2.4.1" 1553 | parseurl "~1.3.3" 1554 | path-to-regexp "0.1.7" 1555 | proxy-addr "~2.0.7" 1556 | qs "6.11.0" 1557 | range-parser "~1.2.1" 1558 | safe-buffer "5.2.1" 1559 | send "0.18.0" 1560 | serve-static "1.15.0" 1561 | setprototypeof "1.2.0" 1562 | statuses "2.0.1" 1563 | type-is "~1.6.18" 1564 | utils-merge "1.0.1" 1565 | vary "~1.1.2" 1566 | 1567 | fast-copy@^3.0.2: 1568 | version "3.0.2" 1569 | resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" 1570 | integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ== 1571 | 1572 | fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: 1573 | version "2.1.0" 1574 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1575 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1576 | 1577 | fast-redact@^3.1.1: 1578 | version "3.5.0" 1579 | resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4" 1580 | integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A== 1581 | 1582 | fast-safe-stringify@^2.1.1: 1583 | version "2.1.1" 1584 | resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" 1585 | integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== 1586 | 1587 | fb-watchman@^2.0.0: 1588 | version "2.0.2" 1589 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" 1590 | integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== 1591 | dependencies: 1592 | bser "2.1.1" 1593 | 1594 | fill-range@^7.1.1: 1595 | version "7.1.1" 1596 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 1597 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 1598 | dependencies: 1599 | to-regex-range "^5.0.1" 1600 | 1601 | finalhandler@1.2.0: 1602 | version "1.2.0" 1603 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 1604 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 1605 | dependencies: 1606 | debug "2.6.9" 1607 | encodeurl "~1.0.2" 1608 | escape-html "~1.0.3" 1609 | on-finished "2.4.1" 1610 | parseurl "~1.3.3" 1611 | statuses "2.0.1" 1612 | unpipe "~1.0.0" 1613 | 1614 | find-up@^4.0.0, find-up@^4.1.0: 1615 | version "4.1.0" 1616 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1617 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1618 | dependencies: 1619 | locate-path "^5.0.0" 1620 | path-exists "^4.0.0" 1621 | 1622 | form-data@^4.0.0: 1623 | version "4.0.0" 1624 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 1625 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 1626 | dependencies: 1627 | asynckit "^0.4.0" 1628 | combined-stream "^1.0.8" 1629 | mime-types "^2.1.12" 1630 | 1631 | formidable@^2.1.2: 1632 | version "2.1.2" 1633 | resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.2.tgz#fa973a2bec150e4ce7cac15589d7a25fc30ebd89" 1634 | integrity sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g== 1635 | dependencies: 1636 | dezalgo "^1.0.4" 1637 | hexoid "^1.0.0" 1638 | once "^1.4.0" 1639 | qs "^6.11.0" 1640 | 1641 | forwarded@0.2.0: 1642 | version "0.2.0" 1643 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 1644 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 1645 | 1646 | fresh@0.5.2: 1647 | version "0.5.2" 1648 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 1649 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 1650 | 1651 | fs-minipass@^2.0.0: 1652 | version "2.1.0" 1653 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" 1654 | integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== 1655 | dependencies: 1656 | minipass "^3.0.0" 1657 | 1658 | fs.realpath@^1.0.0: 1659 | version "1.0.0" 1660 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1661 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1662 | 1663 | fsevents@^2.3.2, fsevents@~2.3.2: 1664 | version "2.3.3" 1665 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 1666 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 1667 | 1668 | function-bind@^1.1.2: 1669 | version "1.1.2" 1670 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 1671 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 1672 | 1673 | gauge@^3.0.0: 1674 | version "3.0.2" 1675 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" 1676 | integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== 1677 | dependencies: 1678 | aproba "^1.0.3 || ^2.0.0" 1679 | color-support "^1.1.2" 1680 | console-control-strings "^1.0.0" 1681 | has-unicode "^2.0.1" 1682 | object-assign "^4.1.1" 1683 | signal-exit "^3.0.0" 1684 | string-width "^4.2.3" 1685 | strip-ansi "^6.0.1" 1686 | wide-align "^1.1.2" 1687 | 1688 | gensync@^1.0.0-beta.2: 1689 | version "1.0.0-beta.2" 1690 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1691 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1692 | 1693 | get-caller-file@^2.0.5: 1694 | version "2.0.5" 1695 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1696 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1697 | 1698 | get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: 1699 | version "1.2.4" 1700 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" 1701 | integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== 1702 | dependencies: 1703 | es-errors "^1.3.0" 1704 | function-bind "^1.1.2" 1705 | has-proto "^1.0.1" 1706 | has-symbols "^1.0.3" 1707 | hasown "^2.0.0" 1708 | 1709 | get-package-type@^0.1.0: 1710 | version "0.1.0" 1711 | resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" 1712 | integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== 1713 | 1714 | get-stream@^6.0.0: 1715 | version "6.0.1" 1716 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 1717 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 1718 | 1719 | glob-parent@~5.1.2: 1720 | version "5.1.2" 1721 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1722 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1723 | dependencies: 1724 | is-glob "^4.0.1" 1725 | 1726 | glob@^7.1.3, glob@^7.1.4: 1727 | version "7.2.3" 1728 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1729 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1730 | dependencies: 1731 | fs.realpath "^1.0.0" 1732 | inflight "^1.0.4" 1733 | inherits "2" 1734 | minimatch "^3.1.1" 1735 | once "^1.3.0" 1736 | path-is-absolute "^1.0.0" 1737 | 1738 | globals@^11.1.0: 1739 | version "11.12.0" 1740 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1741 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1742 | 1743 | gopd@^1.0.1: 1744 | version "1.0.1" 1745 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" 1746 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 1747 | dependencies: 1748 | get-intrinsic "^1.1.3" 1749 | 1750 | graceful-fs@^4.2.9: 1751 | version "4.2.11" 1752 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 1753 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 1754 | 1755 | has-flag@^3.0.0: 1756 | version "3.0.0" 1757 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1758 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1759 | 1760 | has-flag@^4.0.0: 1761 | version "4.0.0" 1762 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1763 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1764 | 1765 | has-property-descriptors@^1.0.2: 1766 | version "1.0.2" 1767 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" 1768 | integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== 1769 | dependencies: 1770 | es-define-property "^1.0.0" 1771 | 1772 | has-proto@^1.0.1: 1773 | version "1.0.3" 1774 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" 1775 | integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== 1776 | 1777 | has-symbols@^1.0.3: 1778 | version "1.0.3" 1779 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 1780 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 1781 | 1782 | has-unicode@^2.0.1: 1783 | version "2.0.1" 1784 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1785 | integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== 1786 | 1787 | hasown@^2.0.0, hasown@^2.0.2: 1788 | version "2.0.2" 1789 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" 1790 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 1791 | dependencies: 1792 | function-bind "^1.1.2" 1793 | 1794 | help-me@^5.0.0: 1795 | version "5.0.0" 1796 | resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" 1797 | integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== 1798 | 1799 | hexoid@^1.0.0: 1800 | version "1.0.0" 1801 | resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" 1802 | integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== 1803 | 1804 | html-escaper@^2.0.0: 1805 | version "2.0.2" 1806 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1807 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1808 | 1809 | http-errors@2.0.0: 1810 | version "2.0.0" 1811 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 1812 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 1813 | dependencies: 1814 | depd "2.0.0" 1815 | inherits "2.0.4" 1816 | setprototypeof "1.2.0" 1817 | statuses "2.0.1" 1818 | toidentifier "1.0.1" 1819 | 1820 | https-proxy-agent@^5.0.0: 1821 | version "5.0.1" 1822 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 1823 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 1824 | dependencies: 1825 | agent-base "6" 1826 | debug "4" 1827 | 1828 | human-signals@^2.1.0: 1829 | version "2.1.0" 1830 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 1831 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 1832 | 1833 | iconv-lite@0.4.24: 1834 | version "0.4.24" 1835 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1836 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1837 | dependencies: 1838 | safer-buffer ">= 2.1.2 < 3" 1839 | 1840 | ieee754@^1.2.1: 1841 | version "1.2.1" 1842 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1843 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1844 | 1845 | import-local@^3.0.2: 1846 | version "3.2.0" 1847 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" 1848 | integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== 1849 | dependencies: 1850 | pkg-dir "^4.2.0" 1851 | resolve-cwd "^3.0.0" 1852 | 1853 | imurmurhash@^0.1.4: 1854 | version "0.1.4" 1855 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1856 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1857 | 1858 | inflight@^1.0.4: 1859 | version "1.0.6" 1860 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1861 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1862 | dependencies: 1863 | once "^1.3.0" 1864 | wrappy "1" 1865 | 1866 | inherits@2, inherits@2.0.4, inherits@^2.0.3: 1867 | version "2.0.4" 1868 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1869 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1870 | 1871 | ipaddr.js@1.9.1: 1872 | version "1.9.1" 1873 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 1874 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 1875 | 1876 | is-arrayish@^0.2.1: 1877 | version "0.2.1" 1878 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1879 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 1880 | 1881 | is-binary-path@~2.1.0: 1882 | version "2.1.0" 1883 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1884 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1885 | dependencies: 1886 | binary-extensions "^2.0.0" 1887 | 1888 | is-core-module@^2.13.0: 1889 | version "2.15.0" 1890 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" 1891 | integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== 1892 | dependencies: 1893 | hasown "^2.0.2" 1894 | 1895 | is-extglob@^2.1.1: 1896 | version "2.1.1" 1897 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1898 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1899 | 1900 | is-fullwidth-code-point@^3.0.0: 1901 | version "3.0.0" 1902 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1903 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1904 | 1905 | is-generator-fn@^2.0.0: 1906 | version "2.1.0" 1907 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" 1908 | integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== 1909 | 1910 | is-glob@^4.0.1, is-glob@~4.0.1: 1911 | version "4.0.3" 1912 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1913 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1914 | dependencies: 1915 | is-extglob "^2.1.1" 1916 | 1917 | is-number@^7.0.0: 1918 | version "7.0.0" 1919 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1920 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1921 | 1922 | is-stream@^2.0.0: 1923 | version "2.0.1" 1924 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 1925 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 1926 | 1927 | isexe@^2.0.0: 1928 | version "2.0.0" 1929 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1930 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1931 | 1932 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 1933 | version "3.2.2" 1934 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" 1935 | integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== 1936 | 1937 | istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: 1938 | version "5.2.1" 1939 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" 1940 | integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== 1941 | dependencies: 1942 | "@babel/core" "^7.12.3" 1943 | "@babel/parser" "^7.14.7" 1944 | "@istanbuljs/schema" "^0.1.2" 1945 | istanbul-lib-coverage "^3.2.0" 1946 | semver "^6.3.0" 1947 | 1948 | istanbul-lib-report@^3.0.0: 1949 | version "3.0.1" 1950 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" 1951 | integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== 1952 | dependencies: 1953 | istanbul-lib-coverage "^3.0.0" 1954 | make-dir "^4.0.0" 1955 | supports-color "^7.1.0" 1956 | 1957 | istanbul-lib-source-maps@^4.0.0: 1958 | version "4.0.1" 1959 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" 1960 | integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== 1961 | dependencies: 1962 | debug "^4.1.1" 1963 | istanbul-lib-coverage "^3.0.0" 1964 | source-map "^0.6.1" 1965 | 1966 | istanbul-reports@^3.1.3: 1967 | version "3.1.7" 1968 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" 1969 | integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== 1970 | dependencies: 1971 | html-escaper "^2.0.0" 1972 | istanbul-lib-report "^3.0.0" 1973 | 1974 | jest-changed-files@^28.1.3: 1975 | version "28.1.3" 1976 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" 1977 | integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== 1978 | dependencies: 1979 | execa "^5.0.0" 1980 | p-limit "^3.1.0" 1981 | 1982 | jest-circus@^28.1.3: 1983 | version "28.1.3" 1984 | resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" 1985 | integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== 1986 | dependencies: 1987 | "@jest/environment" "^28.1.3" 1988 | "@jest/expect" "^28.1.3" 1989 | "@jest/test-result" "^28.1.3" 1990 | "@jest/types" "^28.1.3" 1991 | "@types/node" "*" 1992 | chalk "^4.0.0" 1993 | co "^4.6.0" 1994 | dedent "^0.7.0" 1995 | is-generator-fn "^2.0.0" 1996 | jest-each "^28.1.3" 1997 | jest-matcher-utils "^28.1.3" 1998 | jest-message-util "^28.1.3" 1999 | jest-runtime "^28.1.3" 2000 | jest-snapshot "^28.1.3" 2001 | jest-util "^28.1.3" 2002 | p-limit "^3.1.0" 2003 | pretty-format "^28.1.3" 2004 | slash "^3.0.0" 2005 | stack-utils "^2.0.3" 2006 | 2007 | jest-cli@^28.1.3: 2008 | version "28.1.3" 2009 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" 2010 | integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== 2011 | dependencies: 2012 | "@jest/core" "^28.1.3" 2013 | "@jest/test-result" "^28.1.3" 2014 | "@jest/types" "^28.1.3" 2015 | chalk "^4.0.0" 2016 | exit "^0.1.2" 2017 | graceful-fs "^4.2.9" 2018 | import-local "^3.0.2" 2019 | jest-config "^28.1.3" 2020 | jest-util "^28.1.3" 2021 | jest-validate "^28.1.3" 2022 | prompts "^2.0.1" 2023 | yargs "^17.3.1" 2024 | 2025 | jest-config@^28.1.3: 2026 | version "28.1.3" 2027 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" 2028 | integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ== 2029 | dependencies: 2030 | "@babel/core" "^7.11.6" 2031 | "@jest/test-sequencer" "^28.1.3" 2032 | "@jest/types" "^28.1.3" 2033 | babel-jest "^28.1.3" 2034 | chalk "^4.0.0" 2035 | ci-info "^3.2.0" 2036 | deepmerge "^4.2.2" 2037 | glob "^7.1.3" 2038 | graceful-fs "^4.2.9" 2039 | jest-circus "^28.1.3" 2040 | jest-environment-node "^28.1.3" 2041 | jest-get-type "^28.0.2" 2042 | jest-regex-util "^28.0.2" 2043 | jest-resolve "^28.1.3" 2044 | jest-runner "^28.1.3" 2045 | jest-util "^28.1.3" 2046 | jest-validate "^28.1.3" 2047 | micromatch "^4.0.4" 2048 | parse-json "^5.2.0" 2049 | pretty-format "^28.1.3" 2050 | slash "^3.0.0" 2051 | strip-json-comments "^3.1.1" 2052 | 2053 | jest-diff@^28.1.3: 2054 | version "28.1.3" 2055 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" 2056 | integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== 2057 | dependencies: 2058 | chalk "^4.0.0" 2059 | diff-sequences "^28.1.1" 2060 | jest-get-type "^28.0.2" 2061 | pretty-format "^28.1.3" 2062 | 2063 | jest-docblock@^28.1.1: 2064 | version "28.1.1" 2065 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" 2066 | integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== 2067 | dependencies: 2068 | detect-newline "^3.0.0" 2069 | 2070 | jest-each@^28.1.3: 2071 | version "28.1.3" 2072 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" 2073 | integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== 2074 | dependencies: 2075 | "@jest/types" "^28.1.3" 2076 | chalk "^4.0.0" 2077 | jest-get-type "^28.0.2" 2078 | jest-util "^28.1.3" 2079 | pretty-format "^28.1.3" 2080 | 2081 | jest-environment-node@^28.1.3: 2082 | version "28.1.3" 2083 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" 2084 | integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== 2085 | dependencies: 2086 | "@jest/environment" "^28.1.3" 2087 | "@jest/fake-timers" "^28.1.3" 2088 | "@jest/types" "^28.1.3" 2089 | "@types/node" "*" 2090 | jest-mock "^28.1.3" 2091 | jest-util "^28.1.3" 2092 | 2093 | jest-get-type@^28.0.2: 2094 | version "28.0.2" 2095 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" 2096 | integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== 2097 | 2098 | jest-haste-map@^28.1.3: 2099 | version "28.1.3" 2100 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" 2101 | integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== 2102 | dependencies: 2103 | "@jest/types" "^28.1.3" 2104 | "@types/graceful-fs" "^4.1.3" 2105 | "@types/node" "*" 2106 | anymatch "^3.0.3" 2107 | fb-watchman "^2.0.0" 2108 | graceful-fs "^4.2.9" 2109 | jest-regex-util "^28.0.2" 2110 | jest-util "^28.1.3" 2111 | jest-worker "^28.1.3" 2112 | micromatch "^4.0.4" 2113 | walker "^1.0.8" 2114 | optionalDependencies: 2115 | fsevents "^2.3.2" 2116 | 2117 | jest-leak-detector@^28.1.3: 2118 | version "28.1.3" 2119 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" 2120 | integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA== 2121 | dependencies: 2122 | jest-get-type "^28.0.2" 2123 | pretty-format "^28.1.3" 2124 | 2125 | jest-matcher-utils@^28.1.3: 2126 | version "28.1.3" 2127 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" 2128 | integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== 2129 | dependencies: 2130 | chalk "^4.0.0" 2131 | jest-diff "^28.1.3" 2132 | jest-get-type "^28.0.2" 2133 | pretty-format "^28.1.3" 2134 | 2135 | jest-message-util@^28.1.3: 2136 | version "28.1.3" 2137 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" 2138 | integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== 2139 | dependencies: 2140 | "@babel/code-frame" "^7.12.13" 2141 | "@jest/types" "^28.1.3" 2142 | "@types/stack-utils" "^2.0.0" 2143 | chalk "^4.0.0" 2144 | graceful-fs "^4.2.9" 2145 | micromatch "^4.0.4" 2146 | pretty-format "^28.1.3" 2147 | slash "^3.0.0" 2148 | stack-utils "^2.0.3" 2149 | 2150 | jest-mock@^28.1.3: 2151 | version "28.1.3" 2152 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" 2153 | integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== 2154 | dependencies: 2155 | "@jest/types" "^28.1.3" 2156 | "@types/node" "*" 2157 | 2158 | jest-pnp-resolver@^1.2.2: 2159 | version "1.2.3" 2160 | resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" 2161 | integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== 2162 | 2163 | jest-regex-util@^28.0.2: 2164 | version "28.0.2" 2165 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" 2166 | integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== 2167 | 2168 | jest-resolve-dependencies@^28.1.3: 2169 | version "28.1.3" 2170 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" 2171 | integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA== 2172 | dependencies: 2173 | jest-regex-util "^28.0.2" 2174 | jest-snapshot "^28.1.3" 2175 | 2176 | jest-resolve@^28.1.3: 2177 | version "28.1.3" 2178 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" 2179 | integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ== 2180 | dependencies: 2181 | chalk "^4.0.0" 2182 | graceful-fs "^4.2.9" 2183 | jest-haste-map "^28.1.3" 2184 | jest-pnp-resolver "^1.2.2" 2185 | jest-util "^28.1.3" 2186 | jest-validate "^28.1.3" 2187 | resolve "^1.20.0" 2188 | resolve.exports "^1.1.0" 2189 | slash "^3.0.0" 2190 | 2191 | jest-runner@^28.1.3: 2192 | version "28.1.3" 2193 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" 2194 | integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA== 2195 | dependencies: 2196 | "@jest/console" "^28.1.3" 2197 | "@jest/environment" "^28.1.3" 2198 | "@jest/test-result" "^28.1.3" 2199 | "@jest/transform" "^28.1.3" 2200 | "@jest/types" "^28.1.3" 2201 | "@types/node" "*" 2202 | chalk "^4.0.0" 2203 | emittery "^0.10.2" 2204 | graceful-fs "^4.2.9" 2205 | jest-docblock "^28.1.1" 2206 | jest-environment-node "^28.1.3" 2207 | jest-haste-map "^28.1.3" 2208 | jest-leak-detector "^28.1.3" 2209 | jest-message-util "^28.1.3" 2210 | jest-resolve "^28.1.3" 2211 | jest-runtime "^28.1.3" 2212 | jest-util "^28.1.3" 2213 | jest-watcher "^28.1.3" 2214 | jest-worker "^28.1.3" 2215 | p-limit "^3.1.0" 2216 | source-map-support "0.5.13" 2217 | 2218 | jest-runtime@^28.1.3: 2219 | version "28.1.3" 2220 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" 2221 | integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw== 2222 | dependencies: 2223 | "@jest/environment" "^28.1.3" 2224 | "@jest/fake-timers" "^28.1.3" 2225 | "@jest/globals" "^28.1.3" 2226 | "@jest/source-map" "^28.1.2" 2227 | "@jest/test-result" "^28.1.3" 2228 | "@jest/transform" "^28.1.3" 2229 | "@jest/types" "^28.1.3" 2230 | chalk "^4.0.0" 2231 | cjs-module-lexer "^1.0.0" 2232 | collect-v8-coverage "^1.0.0" 2233 | execa "^5.0.0" 2234 | glob "^7.1.3" 2235 | graceful-fs "^4.2.9" 2236 | jest-haste-map "^28.1.3" 2237 | jest-message-util "^28.1.3" 2238 | jest-mock "^28.1.3" 2239 | jest-regex-util "^28.0.2" 2240 | jest-resolve "^28.1.3" 2241 | jest-snapshot "^28.1.3" 2242 | jest-util "^28.1.3" 2243 | slash "^3.0.0" 2244 | strip-bom "^4.0.0" 2245 | 2246 | jest-snapshot@^28.1.3: 2247 | version "28.1.3" 2248 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" 2249 | integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg== 2250 | dependencies: 2251 | "@babel/core" "^7.11.6" 2252 | "@babel/generator" "^7.7.2" 2253 | "@babel/plugin-syntax-typescript" "^7.7.2" 2254 | "@babel/traverse" "^7.7.2" 2255 | "@babel/types" "^7.3.3" 2256 | "@jest/expect-utils" "^28.1.3" 2257 | "@jest/transform" "^28.1.3" 2258 | "@jest/types" "^28.1.3" 2259 | "@types/babel__traverse" "^7.0.6" 2260 | "@types/prettier" "^2.1.5" 2261 | babel-preset-current-node-syntax "^1.0.0" 2262 | chalk "^4.0.0" 2263 | expect "^28.1.3" 2264 | graceful-fs "^4.2.9" 2265 | jest-diff "^28.1.3" 2266 | jest-get-type "^28.0.2" 2267 | jest-haste-map "^28.1.3" 2268 | jest-matcher-utils "^28.1.3" 2269 | jest-message-util "^28.1.3" 2270 | jest-util "^28.1.3" 2271 | natural-compare "^1.4.0" 2272 | pretty-format "^28.1.3" 2273 | semver "^7.3.5" 2274 | 2275 | jest-util@^28.0.0, jest-util@^28.1.3: 2276 | version "28.1.3" 2277 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" 2278 | integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== 2279 | dependencies: 2280 | "@jest/types" "^28.1.3" 2281 | "@types/node" "*" 2282 | chalk "^4.0.0" 2283 | ci-info "^3.2.0" 2284 | graceful-fs "^4.2.9" 2285 | picomatch "^2.2.3" 2286 | 2287 | jest-validate@^28.1.3: 2288 | version "28.1.3" 2289 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" 2290 | integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== 2291 | dependencies: 2292 | "@jest/types" "^28.1.3" 2293 | camelcase "^6.2.0" 2294 | chalk "^4.0.0" 2295 | jest-get-type "^28.0.2" 2296 | leven "^3.1.0" 2297 | pretty-format "^28.1.3" 2298 | 2299 | jest-watcher@^28.1.3: 2300 | version "28.1.3" 2301 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" 2302 | integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== 2303 | dependencies: 2304 | "@jest/test-result" "^28.1.3" 2305 | "@jest/types" "^28.1.3" 2306 | "@types/node" "*" 2307 | ansi-escapes "^4.2.1" 2308 | chalk "^4.0.0" 2309 | emittery "^0.10.2" 2310 | jest-util "^28.1.3" 2311 | string-length "^4.0.1" 2312 | 2313 | jest-worker@^28.1.3: 2314 | version "28.1.3" 2315 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" 2316 | integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== 2317 | dependencies: 2318 | "@types/node" "*" 2319 | merge-stream "^2.0.0" 2320 | supports-color "^8.0.0" 2321 | 2322 | jest@^28.1.3: 2323 | version "28.1.3" 2324 | resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" 2325 | integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== 2326 | dependencies: 2327 | "@jest/core" "^28.1.3" 2328 | "@jest/types" "^28.1.3" 2329 | import-local "^3.0.2" 2330 | jest-cli "^28.1.3" 2331 | 2332 | joycon@^3.1.1: 2333 | version "3.1.1" 2334 | resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" 2335 | integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== 2336 | 2337 | js-tokens@^4.0.0: 2338 | version "4.0.0" 2339 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 2340 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 2341 | 2342 | js-yaml@^3.13.1: 2343 | version "3.14.1" 2344 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 2345 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 2346 | dependencies: 2347 | argparse "^1.0.7" 2348 | esprima "^4.0.0" 2349 | 2350 | jsesc@^2.5.1: 2351 | version "2.5.2" 2352 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 2353 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 2354 | 2355 | json-parse-even-better-errors@^2.3.0: 2356 | version "2.3.1" 2357 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 2358 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 2359 | 2360 | json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: 2361 | version "2.2.3" 2362 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 2363 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 2364 | 2365 | kleur@^3.0.3: 2366 | version "3.0.3" 2367 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" 2368 | integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== 2369 | 2370 | leven@^3.1.0: 2371 | version "3.1.0" 2372 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 2373 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 2374 | 2375 | lines-and-columns@^1.1.6: 2376 | version "1.2.4" 2377 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 2378 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 2379 | 2380 | locate-path@^5.0.0: 2381 | version "5.0.0" 2382 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 2383 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 2384 | dependencies: 2385 | p-locate "^4.1.0" 2386 | 2387 | lodash.memoize@4.x: 2388 | version "4.1.2" 2389 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" 2390 | integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== 2391 | 2392 | lru-cache@^5.1.1: 2393 | version "5.1.1" 2394 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 2395 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 2396 | dependencies: 2397 | yallist "^3.0.2" 2398 | 2399 | make-dir@^3.1.0: 2400 | version "3.1.0" 2401 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 2402 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 2403 | dependencies: 2404 | semver "^6.0.0" 2405 | 2406 | make-dir@^4.0.0: 2407 | version "4.0.0" 2408 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" 2409 | integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== 2410 | dependencies: 2411 | semver "^7.5.3" 2412 | 2413 | make-error@1.x, make-error@^1.1.1: 2414 | version "1.3.6" 2415 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 2416 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 2417 | 2418 | makeerror@1.0.12: 2419 | version "1.0.12" 2420 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" 2421 | integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== 2422 | dependencies: 2423 | tmpl "1.0.5" 2424 | 2425 | media-typer@0.3.0: 2426 | version "0.3.0" 2427 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 2428 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 2429 | 2430 | merge-descriptors@1.0.1: 2431 | version "1.0.1" 2432 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 2433 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 2434 | 2435 | merge-stream@^2.0.0: 2436 | version "2.0.0" 2437 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 2438 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 2439 | 2440 | methods@^1.1.2, methods@~1.1.2: 2441 | version "1.1.2" 2442 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 2443 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 2444 | 2445 | micromatch@^4.0.4: 2446 | version "4.0.7" 2447 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" 2448 | integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== 2449 | dependencies: 2450 | braces "^3.0.3" 2451 | picomatch "^2.3.1" 2452 | 2453 | mime-db@1.52.0: 2454 | version "1.52.0" 2455 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 2456 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 2457 | 2458 | mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: 2459 | version "2.1.35" 2460 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 2461 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 2462 | dependencies: 2463 | mime-db "1.52.0" 2464 | 2465 | mime@1.6.0: 2466 | version "1.6.0" 2467 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 2468 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 2469 | 2470 | mime@2.6.0: 2471 | version "2.6.0" 2472 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" 2473 | integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== 2474 | 2475 | mimic-fn@^2.1.0: 2476 | version "2.1.0" 2477 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 2478 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 2479 | 2480 | minimatch@^3.0.4, minimatch@^3.1.1: 2481 | version "3.1.2" 2482 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 2483 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 2484 | dependencies: 2485 | brace-expansion "^1.1.7" 2486 | 2487 | minimist@^1.2.6: 2488 | version "1.2.8" 2489 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 2490 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 2491 | 2492 | minipass@^3.0.0: 2493 | version "3.3.6" 2494 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" 2495 | integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== 2496 | dependencies: 2497 | yallist "^4.0.0" 2498 | 2499 | minipass@^5.0.0: 2500 | version "5.0.0" 2501 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" 2502 | integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== 2503 | 2504 | minizlib@^2.1.1: 2505 | version "2.1.2" 2506 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" 2507 | integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== 2508 | dependencies: 2509 | minipass "^3.0.0" 2510 | yallist "^4.0.0" 2511 | 2512 | mkdirp@^1.0.3, mkdirp@^1.0.4: 2513 | version "1.0.4" 2514 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 2515 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 2516 | 2517 | module-alias@^2.2.3: 2518 | version "2.2.3" 2519 | resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.3.tgz#ec2e85c68973bda6ab71ce7c93b763ec96053221" 2520 | integrity sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q== 2521 | 2522 | ms@2.0.0: 2523 | version "2.0.0" 2524 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2525 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 2526 | 2527 | ms@2.1.2: 2528 | version "2.1.2" 2529 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2530 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2531 | 2532 | ms@2.1.3, ms@^2.1.3: 2533 | version "2.1.3" 2534 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 2535 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 2536 | 2537 | natural-compare@^1.4.0: 2538 | version "1.4.0" 2539 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2540 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 2541 | 2542 | negotiator@0.6.3: 2543 | version "0.6.3" 2544 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 2545 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 2546 | 2547 | node-addon-api@^5.0.0: 2548 | version "5.1.0" 2549 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" 2550 | integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== 2551 | 2552 | node-fetch@^2.6.7: 2553 | version "2.7.0" 2554 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" 2555 | integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== 2556 | dependencies: 2557 | whatwg-url "^5.0.0" 2558 | 2559 | node-int64@^0.4.0: 2560 | version "0.4.0" 2561 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 2562 | integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== 2563 | 2564 | node-releases@^2.0.14: 2565 | version "2.0.18" 2566 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" 2567 | integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== 2568 | 2569 | nopt@^5.0.0: 2570 | version "5.0.0" 2571 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" 2572 | integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== 2573 | dependencies: 2574 | abbrev "1" 2575 | 2576 | normalize-path@^3.0.0, normalize-path@~3.0.0: 2577 | version "3.0.0" 2578 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2579 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2580 | 2581 | npm-run-path@^4.0.1: 2582 | version "4.0.1" 2583 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 2584 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 2585 | dependencies: 2586 | path-key "^3.0.0" 2587 | 2588 | npmlog@^5.0.1: 2589 | version "5.0.1" 2590 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" 2591 | integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== 2592 | dependencies: 2593 | are-we-there-yet "^2.0.0" 2594 | console-control-strings "^1.1.0" 2595 | gauge "^3.0.0" 2596 | set-blocking "^2.0.0" 2597 | 2598 | object-assign@^4.1.1: 2599 | version "4.1.1" 2600 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2601 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 2602 | 2603 | object-inspect@^1.13.1: 2604 | version "1.13.2" 2605 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" 2606 | integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== 2607 | 2608 | on-exit-leak-free@^2.1.0: 2609 | version "2.1.2" 2610 | resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" 2611 | integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== 2612 | 2613 | on-finished@2.4.1: 2614 | version "2.4.1" 2615 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 2616 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 2617 | dependencies: 2618 | ee-first "1.1.1" 2619 | 2620 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 2621 | version "1.4.0" 2622 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2623 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 2624 | dependencies: 2625 | wrappy "1" 2626 | 2627 | onetime@^5.1.2: 2628 | version "5.1.2" 2629 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 2630 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 2631 | dependencies: 2632 | mimic-fn "^2.1.0" 2633 | 2634 | p-limit@^2.2.0: 2635 | version "2.3.0" 2636 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 2637 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 2638 | dependencies: 2639 | p-try "^2.0.0" 2640 | 2641 | p-limit@^3.1.0: 2642 | version "3.1.0" 2643 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 2644 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 2645 | dependencies: 2646 | yocto-queue "^0.1.0" 2647 | 2648 | p-locate@^4.1.0: 2649 | version "4.1.0" 2650 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 2651 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 2652 | dependencies: 2653 | p-limit "^2.2.0" 2654 | 2655 | p-try@^2.0.0: 2656 | version "2.2.0" 2657 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 2658 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 2659 | 2660 | parse-json@^5.2.0: 2661 | version "5.2.0" 2662 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 2663 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 2664 | dependencies: 2665 | "@babel/code-frame" "^7.0.0" 2666 | error-ex "^1.3.1" 2667 | json-parse-even-better-errors "^2.3.0" 2668 | lines-and-columns "^1.1.6" 2669 | 2670 | parseurl@~1.3.3: 2671 | version "1.3.3" 2672 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 2673 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 2674 | 2675 | path-exists@^4.0.0: 2676 | version "4.0.0" 2677 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2678 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2679 | 2680 | path-is-absolute@^1.0.0: 2681 | version "1.0.1" 2682 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2683 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 2684 | 2685 | path-key@^3.0.0, path-key@^3.1.0: 2686 | version "3.1.1" 2687 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2688 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2689 | 2690 | path-parse@^1.0.7: 2691 | version "1.0.7" 2692 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 2693 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 2694 | 2695 | path-to-regexp@0.1.7: 2696 | version "0.1.7" 2697 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 2698 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 2699 | 2700 | picocolors@^1.0.0, picocolors@^1.0.1: 2701 | version "1.0.1" 2702 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" 2703 | integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== 2704 | 2705 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: 2706 | version "2.3.1" 2707 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 2708 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 2709 | 2710 | pino-abstract-transport@^2.0.0: 2711 | version "2.0.0" 2712 | resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" 2713 | integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw== 2714 | dependencies: 2715 | split2 "^4.0.0" 2716 | 2717 | pino-pretty@^11.3.0: 2718 | version "11.3.0" 2719 | resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-11.3.0.tgz#390b3be044cf3d2e9192c7d19d44f6b690468f2e" 2720 | integrity sha512-oXwn7ICywaZPHmu3epHGU2oJX4nPmKvHvB/bwrJHlGcbEWaVcotkpyVHMKLKmiVryWYByNp0jpgAcXpFJDXJzA== 2721 | dependencies: 2722 | colorette "^2.0.7" 2723 | dateformat "^4.6.3" 2724 | fast-copy "^3.0.2" 2725 | fast-safe-stringify "^2.1.1" 2726 | help-me "^5.0.0" 2727 | joycon "^3.1.1" 2728 | minimist "^1.2.6" 2729 | on-exit-leak-free "^2.1.0" 2730 | pino-abstract-transport "^2.0.0" 2731 | pump "^3.0.0" 2732 | readable-stream "^4.0.0" 2733 | secure-json-parse "^2.4.0" 2734 | sonic-boom "^4.0.1" 2735 | strip-json-comments "^3.1.1" 2736 | 2737 | pino-std-serializers@^7.0.0: 2738 | version "7.0.0" 2739 | resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b" 2740 | integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== 2741 | 2742 | pino@^9.5.0: 2743 | version "9.5.0" 2744 | resolved "https://registry.yarnpkg.com/pino/-/pino-9.5.0.tgz#a7ef0fea868d22d52d8a4ce46e6e03c5dc46fdd6" 2745 | integrity sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw== 2746 | dependencies: 2747 | atomic-sleep "^1.0.0" 2748 | fast-redact "^3.1.1" 2749 | on-exit-leak-free "^2.1.0" 2750 | pino-abstract-transport "^2.0.0" 2751 | pino-std-serializers "^7.0.0" 2752 | process-warning "^4.0.0" 2753 | quick-format-unescaped "^4.0.3" 2754 | real-require "^0.2.0" 2755 | safe-stable-stringify "^2.3.1" 2756 | sonic-boom "^4.0.1" 2757 | thread-stream "^3.0.0" 2758 | 2759 | pirates@^4.0.4: 2760 | version "4.0.6" 2761 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" 2762 | integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== 2763 | 2764 | pkg-dir@^4.2.0: 2765 | version "4.2.0" 2766 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 2767 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 2768 | dependencies: 2769 | find-up "^4.0.0" 2770 | 2771 | pretty-format@^28.0.0, pretty-format@^28.1.3: 2772 | version "28.1.3" 2773 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" 2774 | integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== 2775 | dependencies: 2776 | "@jest/schemas" "^28.1.3" 2777 | ansi-regex "^5.0.1" 2778 | ansi-styles "^5.0.0" 2779 | react-is "^18.0.0" 2780 | 2781 | process-warning@^4.0.0: 2782 | version "4.0.0" 2783 | resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-4.0.0.tgz#581e3a7a1fb456c5f4fd239f76bce75897682d5a" 2784 | integrity sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw== 2785 | 2786 | process@^0.11.10: 2787 | version "0.11.10" 2788 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 2789 | integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== 2790 | 2791 | prompts@^2.0.1: 2792 | version "2.4.2" 2793 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" 2794 | integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== 2795 | dependencies: 2796 | kleur "^3.0.3" 2797 | sisteransi "^1.0.5" 2798 | 2799 | proxy-addr@~2.0.7: 2800 | version "2.0.7" 2801 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 2802 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 2803 | dependencies: 2804 | forwarded "0.2.0" 2805 | ipaddr.js "1.9.1" 2806 | 2807 | pump@^3.0.0: 2808 | version "3.0.2" 2809 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" 2810 | integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== 2811 | dependencies: 2812 | end-of-stream "^1.1.0" 2813 | once "^1.3.1" 2814 | 2815 | qs@6.11.0: 2816 | version "6.11.0" 2817 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 2818 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 2819 | dependencies: 2820 | side-channel "^1.0.4" 2821 | 2822 | qs@^6.11.0: 2823 | version "6.12.3" 2824 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.3.tgz#e43ce03c8521b9c7fd7f1f13e514e5ca37727754" 2825 | integrity sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ== 2826 | dependencies: 2827 | side-channel "^1.0.6" 2828 | 2829 | quick-format-unescaped@^4.0.3: 2830 | version "4.0.4" 2831 | resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" 2832 | integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== 2833 | 2834 | range-parser@~1.2.1: 2835 | version "1.2.1" 2836 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 2837 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 2838 | 2839 | raw-body@2.5.2: 2840 | version "2.5.2" 2841 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" 2842 | integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== 2843 | dependencies: 2844 | bytes "3.1.2" 2845 | http-errors "2.0.0" 2846 | iconv-lite "0.4.24" 2847 | unpipe "1.0.0" 2848 | 2849 | react-is@^18.0.0: 2850 | version "18.3.1" 2851 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" 2852 | integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== 2853 | 2854 | readable-stream@^3.6.0: 2855 | version "3.6.2" 2856 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" 2857 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 2858 | dependencies: 2859 | inherits "^2.0.3" 2860 | string_decoder "^1.1.1" 2861 | util-deprecate "^1.0.1" 2862 | 2863 | readable-stream@^4.0.0: 2864 | version "4.5.2" 2865 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" 2866 | integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== 2867 | dependencies: 2868 | abort-controller "^3.0.0" 2869 | buffer "^6.0.3" 2870 | events "^3.3.0" 2871 | process "^0.11.10" 2872 | string_decoder "^1.3.0" 2873 | 2874 | readdirp@~3.6.0: 2875 | version "3.6.0" 2876 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 2877 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 2878 | dependencies: 2879 | picomatch "^2.2.1" 2880 | 2881 | real-require@^0.2.0: 2882 | version "0.2.0" 2883 | resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" 2884 | integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== 2885 | 2886 | reflect-metadata@^0.1.13: 2887 | version "0.1.14" 2888 | resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859" 2889 | integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== 2890 | 2891 | require-directory@^2.1.1: 2892 | version "2.1.1" 2893 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2894 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 2895 | 2896 | resolve-cwd@^3.0.0: 2897 | version "3.0.0" 2898 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 2899 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 2900 | dependencies: 2901 | resolve-from "^5.0.0" 2902 | 2903 | resolve-from@^5.0.0: 2904 | version "5.0.0" 2905 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 2906 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 2907 | 2908 | resolve.exports@^1.1.0: 2909 | version "1.1.1" 2910 | resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" 2911 | integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== 2912 | 2913 | resolve@^1.0.0, resolve@^1.20.0: 2914 | version "1.22.8" 2915 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" 2916 | integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== 2917 | dependencies: 2918 | is-core-module "^2.13.0" 2919 | path-parse "^1.0.7" 2920 | supports-preserve-symlinks-flag "^1.0.0" 2921 | 2922 | rich-domain@1.25.0-beta: 2923 | version "1.25.0-beta" 2924 | resolved "https://registry.yarnpkg.com/rich-domain/-/rich-domain-1.25.0-beta.tgz#cb5f9f0260977b666f44457238b7e8a7e9e30b66" 2925 | integrity sha512-B5XbfndP0VyidO1VflDeystk9ZCJVLhhncfq/2UhytvYqOcsmqyIl16IbQ1mEZ1weGhUYT/ip3ChgE4lezTghw== 2926 | 2927 | rich-domain@^1.25.0: 2928 | version "1.25.0" 2929 | resolved "https://registry.yarnpkg.com/rich-domain/-/rich-domain-1.25.0.tgz#5043a2aed040660b2d3f05390eeee9259c511cdb" 2930 | integrity sha512-W6/yB2twlPahc1WRWVYsa8YOQ+X/OKwTCVkS2MaiGSCt3BhcQncNi5fVfyKXPumB9bgdEpRpnSERDQLUiYGJkA== 2931 | 2932 | rimraf@^2.6.1: 2933 | version "2.7.1" 2934 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 2935 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 2936 | dependencies: 2937 | glob "^7.1.3" 2938 | 2939 | rimraf@^3.0.0, rimraf@^3.0.2: 2940 | version "3.0.2" 2941 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2942 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 2943 | dependencies: 2944 | glob "^7.1.3" 2945 | 2946 | safe-buffer@5.2.1, safe-buffer@~5.2.0: 2947 | version "5.2.1" 2948 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 2949 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 2950 | 2951 | safe-stable-stringify@^2.3.1: 2952 | version "2.5.0" 2953 | resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" 2954 | integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== 2955 | 2956 | "safer-buffer@>= 2.1.2 < 3": 2957 | version "2.1.2" 2958 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2959 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2960 | 2961 | secure-json-parse@^2.4.0: 2962 | version "2.7.0" 2963 | resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" 2964 | integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== 2965 | 2966 | semver@7.x, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3: 2967 | version "7.6.3" 2968 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" 2969 | integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== 2970 | 2971 | semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: 2972 | version "6.3.1" 2973 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 2974 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 2975 | 2976 | send@0.18.0: 2977 | version "0.18.0" 2978 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 2979 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 2980 | dependencies: 2981 | debug "2.6.9" 2982 | depd "2.0.0" 2983 | destroy "1.2.0" 2984 | encodeurl "~1.0.2" 2985 | escape-html "~1.0.3" 2986 | etag "~1.8.1" 2987 | fresh "0.5.2" 2988 | http-errors "2.0.0" 2989 | mime "1.6.0" 2990 | ms "2.1.3" 2991 | on-finished "2.4.1" 2992 | range-parser "~1.2.1" 2993 | statuses "2.0.1" 2994 | 2995 | serve-static@1.15.0: 2996 | version "1.15.0" 2997 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 2998 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 2999 | dependencies: 3000 | encodeurl "~1.0.2" 3001 | escape-html "~1.0.3" 3002 | parseurl "~1.3.3" 3003 | send "0.18.0" 3004 | 3005 | set-blocking@^2.0.0: 3006 | version "2.0.0" 3007 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 3008 | integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== 3009 | 3010 | set-function-length@^1.2.1: 3011 | version "1.2.2" 3012 | resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" 3013 | integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== 3014 | dependencies: 3015 | define-data-property "^1.1.4" 3016 | es-errors "^1.3.0" 3017 | function-bind "^1.1.2" 3018 | get-intrinsic "^1.2.4" 3019 | gopd "^1.0.1" 3020 | has-property-descriptors "^1.0.2" 3021 | 3022 | setprototypeof@1.2.0: 3023 | version "1.2.0" 3024 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 3025 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 3026 | 3027 | shebang-command@^2.0.0: 3028 | version "2.0.0" 3029 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 3030 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 3031 | dependencies: 3032 | shebang-regex "^3.0.0" 3033 | 3034 | shebang-regex@^3.0.0: 3035 | version "3.0.0" 3036 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 3037 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 3038 | 3039 | side-channel@^1.0.4, side-channel@^1.0.6: 3040 | version "1.0.6" 3041 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" 3042 | integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== 3043 | dependencies: 3044 | call-bind "^1.0.7" 3045 | es-errors "^1.3.0" 3046 | get-intrinsic "^1.2.4" 3047 | object-inspect "^1.13.1" 3048 | 3049 | signal-exit@^3.0.0, signal-exit@^3.0.3, signal-exit@^3.0.7: 3050 | version "3.0.7" 3051 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 3052 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 3053 | 3054 | sisteransi@^1.0.5: 3055 | version "1.0.5" 3056 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" 3057 | integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== 3058 | 3059 | slash@^3.0.0: 3060 | version "3.0.0" 3061 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 3062 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 3063 | 3064 | sonic-boom@^4.0.1: 3065 | version "4.2.0" 3066 | resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d" 3067 | integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww== 3068 | dependencies: 3069 | atomic-sleep "^1.0.0" 3070 | 3071 | source-map-support@0.5.13: 3072 | version "0.5.13" 3073 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" 3074 | integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== 3075 | dependencies: 3076 | buffer-from "^1.0.0" 3077 | source-map "^0.6.0" 3078 | 3079 | source-map-support@^0.5.12: 3080 | version "0.5.21" 3081 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 3082 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 3083 | dependencies: 3084 | buffer-from "^1.0.0" 3085 | source-map "^0.6.0" 3086 | 3087 | source-map@^0.6.0, source-map@^0.6.1: 3088 | version "0.6.1" 3089 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 3090 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 3091 | 3092 | split2@^4.0.0: 3093 | version "4.2.0" 3094 | resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" 3095 | integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== 3096 | 3097 | sprintf-js@~1.0.2: 3098 | version "1.0.3" 3099 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 3100 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 3101 | 3102 | stack-utils@^2.0.3: 3103 | version "2.0.6" 3104 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" 3105 | integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== 3106 | dependencies: 3107 | escape-string-regexp "^2.0.0" 3108 | 3109 | statuses@2.0.1: 3110 | version "2.0.1" 3111 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 3112 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 3113 | 3114 | string-length@^4.0.1: 3115 | version "4.0.2" 3116 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" 3117 | integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== 3118 | dependencies: 3119 | char-regex "^1.0.2" 3120 | strip-ansi "^6.0.0" 3121 | 3122 | "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 3123 | version "4.2.3" 3124 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 3125 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 3126 | dependencies: 3127 | emoji-regex "^8.0.0" 3128 | is-fullwidth-code-point "^3.0.0" 3129 | strip-ansi "^6.0.1" 3130 | 3131 | string_decoder@^1.1.1, string_decoder@^1.3.0: 3132 | version "1.3.0" 3133 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 3134 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 3135 | dependencies: 3136 | safe-buffer "~5.2.0" 3137 | 3138 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 3139 | version "6.0.1" 3140 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 3141 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 3142 | dependencies: 3143 | ansi-regex "^5.0.1" 3144 | 3145 | strip-bom@^3.0.0: 3146 | version "3.0.0" 3147 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 3148 | integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== 3149 | 3150 | strip-bom@^4.0.0: 3151 | version "4.0.0" 3152 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 3153 | integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 3154 | 3155 | strip-final-newline@^2.0.0: 3156 | version "2.0.0" 3157 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 3158 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 3159 | 3160 | strip-json-comments@^2.0.0: 3161 | version "2.0.1" 3162 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 3163 | integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== 3164 | 3165 | strip-json-comments@^3.1.1: 3166 | version "3.1.1" 3167 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 3168 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 3169 | 3170 | superagent@^8.1.2: 3171 | version "8.1.2" 3172 | resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.1.2.tgz#03cb7da3ec8b32472c9d20f6c2a57c7f3765f30b" 3173 | integrity sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA== 3174 | dependencies: 3175 | component-emitter "^1.3.0" 3176 | cookiejar "^2.1.4" 3177 | debug "^4.3.4" 3178 | fast-safe-stringify "^2.1.1" 3179 | form-data "^4.0.0" 3180 | formidable "^2.1.2" 3181 | methods "^1.1.2" 3182 | mime "2.6.0" 3183 | qs "^6.11.0" 3184 | semver "^7.3.8" 3185 | 3186 | supertest@^6.2.4: 3187 | version "6.3.4" 3188 | resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.3.4.tgz#2145c250570c2ea5d337db3552dbfb78a2286218" 3189 | integrity sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw== 3190 | dependencies: 3191 | methods "^1.1.2" 3192 | superagent "^8.1.2" 3193 | 3194 | supports-color@^5.3.0: 3195 | version "5.5.0" 3196 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 3197 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 3198 | dependencies: 3199 | has-flag "^3.0.0" 3200 | 3201 | supports-color@^7.0.0, supports-color@^7.1.0: 3202 | version "7.2.0" 3203 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 3204 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 3205 | dependencies: 3206 | has-flag "^4.0.0" 3207 | 3208 | supports-color@^8.0.0: 3209 | version "8.1.1" 3210 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 3211 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 3212 | dependencies: 3213 | has-flag "^4.0.0" 3214 | 3215 | supports-hyperlinks@^2.0.0: 3216 | version "2.3.0" 3217 | resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" 3218 | integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== 3219 | dependencies: 3220 | has-flag "^4.0.0" 3221 | supports-color "^7.0.0" 3222 | 3223 | supports-preserve-symlinks-flag@^1.0.0: 3224 | version "1.0.0" 3225 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 3226 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 3227 | 3228 | tar@^6.1.11: 3229 | version "6.2.1" 3230 | resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" 3231 | integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== 3232 | dependencies: 3233 | chownr "^2.0.0" 3234 | fs-minipass "^2.0.0" 3235 | minipass "^5.0.0" 3236 | minizlib "^2.1.1" 3237 | mkdirp "^1.0.3" 3238 | yallist "^4.0.0" 3239 | 3240 | terminal-link@^2.0.0: 3241 | version "2.1.1" 3242 | resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" 3243 | integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== 3244 | dependencies: 3245 | ansi-escapes "^4.2.1" 3246 | supports-hyperlinks "^2.0.0" 3247 | 3248 | test-exclude@^6.0.0: 3249 | version "6.0.0" 3250 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 3251 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 3252 | dependencies: 3253 | "@istanbuljs/schema" "^0.1.2" 3254 | glob "^7.1.4" 3255 | minimatch "^3.0.4" 3256 | 3257 | thread-stream@^3.0.0: 3258 | version "3.1.0" 3259 | resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" 3260 | integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== 3261 | dependencies: 3262 | real-require "^0.2.0" 3263 | 3264 | tmpl@1.0.5: 3265 | version "1.0.5" 3266 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" 3267 | integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== 3268 | 3269 | to-fast-properties@^2.0.0: 3270 | version "2.0.0" 3271 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 3272 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 3273 | 3274 | to-regex-range@^5.0.1: 3275 | version "5.0.1" 3276 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 3277 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 3278 | dependencies: 3279 | is-number "^7.0.0" 3280 | 3281 | toidentifier@1.0.1: 3282 | version "1.0.1" 3283 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 3284 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 3285 | 3286 | tr46@~0.0.3: 3287 | version "0.0.3" 3288 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 3289 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 3290 | 3291 | tree-kill@^1.2.2: 3292 | version "1.2.2" 3293 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" 3294 | integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== 3295 | 3296 | ts-jest@^28.0.7: 3297 | version "28.0.8" 3298 | resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-28.0.8.tgz#cd204b8e7a2f78da32cf6c95c9a6165c5b99cc73" 3299 | integrity sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg== 3300 | dependencies: 3301 | bs-logger "0.x" 3302 | fast-json-stable-stringify "2.x" 3303 | jest-util "^28.0.0" 3304 | json5 "^2.2.1" 3305 | lodash.memoize "4.x" 3306 | make-error "1.x" 3307 | semver "7.x" 3308 | yargs-parser "^21.0.1" 3309 | 3310 | ts-node-dev@^2.0.0: 3311 | version "2.0.0" 3312 | resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-2.0.0.tgz#bdd53e17ab3b5d822ef519928dc6b4a7e0f13065" 3313 | integrity sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w== 3314 | dependencies: 3315 | chokidar "^3.5.1" 3316 | dynamic-dedupe "^0.3.0" 3317 | minimist "^1.2.6" 3318 | mkdirp "^1.0.4" 3319 | resolve "^1.0.0" 3320 | rimraf "^2.6.1" 3321 | source-map-support "^0.5.12" 3322 | tree-kill "^1.2.2" 3323 | ts-node "^10.4.0" 3324 | tsconfig "^7.0.0" 3325 | 3326 | ts-node@^10.4.0, ts-node@^10.9.1: 3327 | version "10.9.2" 3328 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" 3329 | integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== 3330 | dependencies: 3331 | "@cspotcode/source-map-support" "^0.8.0" 3332 | "@tsconfig/node10" "^1.0.7" 3333 | "@tsconfig/node12" "^1.0.7" 3334 | "@tsconfig/node14" "^1.0.0" 3335 | "@tsconfig/node16" "^1.0.2" 3336 | acorn "^8.4.1" 3337 | acorn-walk "^8.1.1" 3338 | arg "^4.1.0" 3339 | create-require "^1.1.0" 3340 | diff "^4.0.1" 3341 | make-error "^1.1.1" 3342 | v8-compile-cache-lib "^3.0.1" 3343 | yn "3.1.1" 3344 | 3345 | tsconfig-paths@^4.2.0: 3346 | version "4.2.0" 3347 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" 3348 | integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== 3349 | dependencies: 3350 | json5 "^2.2.2" 3351 | minimist "^1.2.6" 3352 | strip-bom "^3.0.0" 3353 | 3354 | tsconfig@^7.0.0: 3355 | version "7.0.0" 3356 | resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" 3357 | integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== 3358 | dependencies: 3359 | "@types/strip-bom" "^3.0.0" 3360 | "@types/strip-json-comments" "0.0.30" 3361 | strip-bom "^3.0.0" 3362 | strip-json-comments "^2.0.0" 3363 | 3364 | type-detect@4.0.8: 3365 | version "4.0.8" 3366 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 3367 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 3368 | 3369 | type-fest@^0.21.3: 3370 | version "0.21.3" 3371 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 3372 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 3373 | 3374 | type-is@~1.6.18: 3375 | version "1.6.18" 3376 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 3377 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 3378 | dependencies: 3379 | media-typer "0.3.0" 3380 | mime-types "~2.1.24" 3381 | 3382 | types-ddd@3.11.0-beta: 3383 | version "3.11.0-beta" 3384 | resolved "https://registry.yarnpkg.com/types-ddd/-/types-ddd-3.11.0-beta.tgz#b313371d5f466c7f076397500633e0ae4d95cd94" 3385 | integrity sha512-GRFjGwZrWMizItMs6pX25WICABCefScUs0o/eoYttA8V+S2i6IowyP1NQihBOx8lXz9VO2xfO6uWBmUt+cfveg== 3386 | dependencies: 3387 | bcrypt "^5.0.1" 3388 | pino "^9.5.0" 3389 | pino-pretty "^11.3.0" 3390 | rich-domain "1.25.0-beta" 3391 | 3392 | typescript@^4.9.5: 3393 | version "4.9.5" 3394 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" 3395 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== 3396 | 3397 | undici-types@~5.26.4: 3398 | version "5.26.5" 3399 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" 3400 | integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== 3401 | 3402 | unpipe@1.0.0, unpipe@~1.0.0: 3403 | version "1.0.0" 3404 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 3405 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 3406 | 3407 | update-browserslist-db@^1.1.0: 3408 | version "1.1.0" 3409 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" 3410 | integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== 3411 | dependencies: 3412 | escalade "^3.1.2" 3413 | picocolors "^1.0.1" 3414 | 3415 | util-deprecate@^1.0.1: 3416 | version "1.0.2" 3417 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3418 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 3419 | 3420 | utils-merge@1.0.1: 3421 | version "1.0.1" 3422 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 3423 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 3424 | 3425 | v8-compile-cache-lib@^3.0.1: 3426 | version "3.0.1" 3427 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 3428 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 3429 | 3430 | v8-to-istanbul@^9.0.1: 3431 | version "9.3.0" 3432 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" 3433 | integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== 3434 | dependencies: 3435 | "@jridgewell/trace-mapping" "^0.3.12" 3436 | "@types/istanbul-lib-coverage" "^2.0.1" 3437 | convert-source-map "^2.0.0" 3438 | 3439 | vary@~1.1.2: 3440 | version "1.1.2" 3441 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 3442 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 3443 | 3444 | walker@^1.0.8: 3445 | version "1.0.8" 3446 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" 3447 | integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== 3448 | dependencies: 3449 | makeerror "1.0.12" 3450 | 3451 | webidl-conversions@^3.0.0: 3452 | version "3.0.1" 3453 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 3454 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 3455 | 3456 | whatwg-url@^5.0.0: 3457 | version "5.0.0" 3458 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 3459 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 3460 | dependencies: 3461 | tr46 "~0.0.3" 3462 | webidl-conversions "^3.0.0" 3463 | 3464 | which@^2.0.1: 3465 | version "2.0.2" 3466 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 3467 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 3468 | dependencies: 3469 | isexe "^2.0.0" 3470 | 3471 | wide-align@^1.1.2: 3472 | version "1.1.5" 3473 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" 3474 | integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== 3475 | dependencies: 3476 | string-width "^1.0.2 || 2 || 3 || 4" 3477 | 3478 | wrap-ansi@^7.0.0: 3479 | version "7.0.0" 3480 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 3481 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 3482 | dependencies: 3483 | ansi-styles "^4.0.0" 3484 | string-width "^4.1.0" 3485 | strip-ansi "^6.0.0" 3486 | 3487 | wrappy@1: 3488 | version "1.0.2" 3489 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3490 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 3491 | 3492 | write-file-atomic@^4.0.1: 3493 | version "4.0.2" 3494 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" 3495 | integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== 3496 | dependencies: 3497 | imurmurhash "^0.1.4" 3498 | signal-exit "^3.0.7" 3499 | 3500 | xtend@^4.0.0: 3501 | version "4.0.2" 3502 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 3503 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 3504 | 3505 | y18n@^5.0.5: 3506 | version "5.0.8" 3507 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 3508 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 3509 | 3510 | yallist@^3.0.2: 3511 | version "3.1.1" 3512 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 3513 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 3514 | 3515 | yallist@^4.0.0: 3516 | version "4.0.0" 3517 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 3518 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 3519 | 3520 | yargs-parser@^21.0.1, yargs-parser@^21.1.1: 3521 | version "21.1.1" 3522 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 3523 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 3524 | 3525 | yargs@^17.3.1: 3526 | version "17.7.2" 3527 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" 3528 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== 3529 | dependencies: 3530 | cliui "^8.0.1" 3531 | escalade "^3.1.1" 3532 | get-caller-file "^2.0.5" 3533 | require-directory "^2.1.1" 3534 | string-width "^4.2.3" 3535 | y18n "^5.0.5" 3536 | yargs-parser "^21.1.1" 3537 | 3538 | yn@3.1.1: 3539 | version "3.1.1" 3540 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 3541 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 3542 | 3543 | yocto-queue@^0.1.0: 3544 | version "0.1.0" 3545 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 3546 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 3547 | --------------------------------------------------------------------------------