From 1d27aa3ad68535ca8197bd23708ecaff22576d7d Mon Sep 17 00:00:00 2001 From: solufa Date: Wed, 23 Nov 2022 23:50:31 +0900 Subject: [PATCH 1/5] feat: update fastify@4 --- README.md | 5 +- __test__/index.spec.ts | 30 +- jest.config.ts | 2 +- package.json | 12 +- servers/all/$server.ts | 13 +- servers/minimum/$server.ts | 1 - servers/noMulter/$server.ts | 1 - servers/noTypedParams/$server.ts | 13 +- servers/noValidator/$server.ts | 13 +- src/buildServerFile.ts | 19 +- yarn.lock | 1939 +++++++++++++++--------------- 11 files changed, 999 insertions(+), 1049 deletions(-) diff --git a/README.md b/README.md index 8afdc4d..20726ef 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ We are always forced to write "Two TypeScript". We waste a lot of time on dynamic testing using the browser and server.
- Why frourio ? + Why frourio ?


@@ -40,7 +40,7 @@ We waste a lot of time on dynamic testing using the browser and server. Frourio is a framework for developing web apps quickly and safely in **"One TypeScript"**.
- Architecture of create-frourio-app + Architecture of create-frourio-app


@@ -49,7 +49,6 @@ Frourio is a framework for developing web apps quickly and safely in **"One Type https://frourio.com/docs - ## License Frourio is licensed under a [MIT License](./LICENSE). diff --git a/__test__/index.spec.ts b/__test__/index.spec.ts index 1637f5d..00fb56f 100644 --- a/__test__/index.spec.ts +++ b/__test__/index.spec.ts @@ -30,7 +30,7 @@ beforeEach(() => { subServerPlainToInstanceCallCount = 0 subServerValidateOrRejectCallCount = 0 return Promise.all([ - frourio(server).listen(port), + frourio(server).listen({ port }), frourio(subServer, { basePath: subBasePath, plainToInstance: (cls, object, options): object => { @@ -41,7 +41,7 @@ beforeEach(() => { subServerValidateOrRejectCallCount++ return validateOrReject(instance, options) } - }).listen(subPort) + }).listen({ port: subPort }) ]) }) @@ -207,18 +207,6 @@ test('POST: formdata', async () => { test('PUT: zod validations', async () => { const port = '3000' - const res1 = await fetchClient.$put({ - query: { - requiredNum: 0, - requiredNumArr: [], - id: '1', - disable: 'true', - bool: false, - boolArray: [] - }, - body: { port } - }) - expect(res1.port).toBe(port) await Promise.all([ expect( @@ -248,6 +236,20 @@ test('PUT: zod validations', async () => { }) ).rejects.toHaveProperty('response.status', 400) ]) + + await expect( + fetchClient.put({ + query: { + requiredNum: 0, + requiredNumArr: [], + id: '1', + disable: 'true', + bool: false, + boolArray: [] + }, + body: { port } + }) + ).resolves.toHaveProperty('status', 201) }) test('POST: multi file upload', async () => { diff --git a/jest.config.ts b/jest.config.ts index 2105af9..9ac45cb 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -5,7 +5,7 @@ import { compilerOptions } from './tsconfig.json' const config: Config.InitialOptions = { preset: 'ts-jest', testEnvironment: 'node', - globals: { Blob: {}, 'ts-jest': {} }, + globals: { Blob: {} }, moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '/' }), coveragePathIgnorePatterns: ['\\$api.ts', 'dist'] } diff --git a/package.json b/package.json index a03c4dc..a7d1510 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "bin": "bin/index.js", - "homepage": "https://frourio.io", + "homepage": "https://frourio.com", "repository": { "type": "git", "url": "git+https://github.com/frouriojs/frourio.git" @@ -85,9 +85,9 @@ "devDependencies": { "@aspida/axios": "^1.11.0", "@aspida/node-fetch": "^1.11.0", - "@fastify/multipart": "^6.0.0", + "@fastify/multipart": "^7.3.0", "@types/busboy": "^1.3.0", - "@types/jest": "^27.4.1", + "@types/jest": "^29.2.3", "@types/node-fetch": "^2.5.10", "@types/rimraf": "^3.0.2", "@typescript-eslint/eslint-plugin": "^5.42.1", @@ -103,14 +103,14 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^5.1.0", "eslint-plugin-standard": "^5.0.0", - "fastify": "^3.18.1", - "jest": "^27.0.6", + "fastify": "^4.10.2", + "jest": "^29.3.1", "node-fetch": "^2.6.1", "prettier": "^2.7.1", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", - "typescript": "^4.8.4" + "typescript": "^4.9.3" } } diff --git a/servers/all/$server.ts b/servers/all/$server.ts index 313f1df..6322024 100644 --- a/servers/all/$server.ts +++ b/servers/all/$server.ts @@ -3,7 +3,7 @@ import type { ClassTransformOptions } from 'class-transformer' import { plainToInstance as defaultPlainToInstance } from 'class-transformer' import type { ValidatorOptions } from 'class-validator' import { validateOrReject as defaultValidateOrReject } from 'class-validator' -import type { FastifyMultipartAttactFieldsToBodyOptions, Multipart } from '@fastify/multipart' +import type { FastifyMultipartAttachFieldsToBodyOptions, Multipart, MultipartFile } from '@fastify/multipart' import multipart from '@fastify/multipart' import * as Validators from './validators' import type { ReadStream } from 'fs' @@ -26,7 +26,6 @@ import controllerFn6 from './api/texts/_label@string/controller' import controllerFn7, { hooks as ctrlHooksFn1 } from './api/users/controller' import controllerFn8 from './api/users/_userId@number/controller' import controllerFn9 from './api/users/_userId@number/_name/controller' - import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions } from 'fastify' export type FrourioOptions = { @@ -35,7 +34,7 @@ export type FrourioOptions = { validator?: ValidatorOptions | undefined plainToInstance?: ((cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object) | undefined validateOrReject?: ((instance: object, options: ValidatorOptions) => Promise) | undefined - multipart?: FastifyMultipartAttactFieldsToBodyOptions | undefined + multipart?: FastifyMultipartAttachFieldsToBodyOptions | undefined } type HttpStatusNoOk = 301 | 302 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 409 | 500 | 501 | 502 | 503 | 504 | 505 @@ -64,9 +63,9 @@ type ServerResponse = type BlobToFile = T['reqFormat'] extends FormData ? { [P in keyof T['reqBody']]: Required[P] extends Blob | ReadStream - ? Multipart + ? MultipartFile : Required[P] extends (Blob | ReadStream)[] - ? Multipart[] + ? MultipartFile[] : T['reqBody'][P] } : T['reqBody'] @@ -206,9 +205,9 @@ const formatMultipartData = (arrayTypeKeys: [string, boolean][]): preValidationH Object.entries(body).forEach(([key, val]) => { if (Array.isArray(val)) { - body[key] = (val as Multipart[]).map(v => v.file ? v : (v as any).value) + body[key] = (val as Multipart[]).map(v => 'file' in v ? v : (v as any).value) } else { - body[key] = (val as Multipart).file ? val : (val as any).value + body[key] = 'file' in (val as Multipart) ? val : (val as any).value } }) diff --git a/servers/minimum/$server.ts b/servers/minimum/$server.ts index 087e7dc..5cd3232 100644 --- a/servers/minimum/$server.ts +++ b/servers/minimum/$server.ts @@ -1,7 +1,6 @@ import type { HttpStatusOk, AspidaMethodParams } from 'aspida' import type { z } from 'zod' import controllerFn0, { responseSchema as responseSchemaFn0 } from './api/controller' - import type { FastifyInstance, RouteHandlerMethod, FastifySchema, FastifySchemaCompiler } from 'fastify' export type FrourioOptions = { diff --git a/servers/noMulter/$server.ts b/servers/noMulter/$server.ts index de14769..1091e69 100644 --- a/servers/noMulter/$server.ts +++ b/servers/noMulter/$server.ts @@ -15,7 +15,6 @@ import controllerFn2 from './api/texts/controller' import controllerFn3 from './api/texts/sample/controller' import controllerFn4, { hooks as ctrlHooksFn1 } from './api/users/controller' import controllerFn5 from './api/users/_userId@number/controller' - import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions } from 'fastify' export type FrourioOptions = { diff --git a/servers/noTypedParams/$server.ts b/servers/noTypedParams/$server.ts index ea8bc22..9546e47 100644 --- a/servers/noTypedParams/$server.ts +++ b/servers/noTypedParams/$server.ts @@ -3,7 +3,7 @@ import type { ClassTransformOptions } from 'class-transformer' import { plainToInstance as defaultPlainToInstance } from 'class-transformer' import type { ValidatorOptions } from 'class-validator' import { validateOrReject as defaultValidateOrReject } from 'class-validator' -import type { FastifyMultipartAttactFieldsToBodyOptions, Multipart } from '@fastify/multipart' +import type { FastifyMultipartAttachFieldsToBodyOptions, Multipart, MultipartFile } from '@fastify/multipart' import multipart from '@fastify/multipart' import * as Validators from './validators' import type { ReadStream } from 'fs' @@ -17,7 +17,6 @@ import controllerFn2 from './api/multiForm/controller' import controllerFn3 from './api/texts/controller' import controllerFn4 from './api/texts/sample/controller' import controllerFn5, { hooks as ctrlHooksFn1 } from './api/users/controller' - import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, RouteShorthandOptions } from 'fastify' export type FrourioOptions = { @@ -26,7 +25,7 @@ export type FrourioOptions = { validator?: ValidatorOptions | undefined plainToInstance?: ((cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object) | undefined validateOrReject?: ((instance: object, options: ValidatorOptions) => Promise) | undefined - multipart?: FastifyMultipartAttactFieldsToBodyOptions | undefined + multipart?: FastifyMultipartAttachFieldsToBodyOptions | undefined } type HttpStatusNoOk = 301 | 302 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 409 | 500 | 501 | 502 | 503 | 504 | 505 @@ -55,9 +54,9 @@ type ServerResponse = type BlobToFile = T['reqFormat'] extends FormData ? { [P in keyof T['reqBody']]: Required[P] extends Blob | ReadStream - ? Multipart + ? MultipartFile : Required[P] extends (Blob | ReadStream)[] - ? Multipart[] + ? MultipartFile[] : T['reqBody'][P] } : T['reqBody'] @@ -100,9 +99,9 @@ const formatMultipartData = (arrayTypeKeys: [string, boolean][]): preValidationH Object.entries(body).forEach(([key, val]) => { if (Array.isArray(val)) { - body[key] = (val as Multipart[]).map(v => v.file ? v : (v as any).value) + body[key] = (val as Multipart[]).map(v => 'file' in v ? v : (v as any).value) } else { - body[key] = (val as Multipart).file ? val : (val as any).value + body[key] = 'file' in (val as Multipart) ? val : (val as any).value } }) diff --git a/servers/noValidator/$server.ts b/servers/noValidator/$server.ts index e6a9995..c4abc51 100644 --- a/servers/noValidator/$server.ts +++ b/servers/noValidator/$server.ts @@ -1,4 +1,4 @@ -import type { FastifyMultipartAttactFieldsToBodyOptions, Multipart } from '@fastify/multipart' +import type { FastifyMultipartAttachFieldsToBodyOptions, Multipart, MultipartFile } from '@fastify/multipart' import multipart from '@fastify/multipart' import type { ReadStream } from 'fs' import type { HttpStatusOk, AspidaMethodParams } from 'aspida' @@ -13,12 +13,11 @@ import controllerFn3 from './api/texts/controller' import controllerFn4 from './api/texts/sample/controller' import controllerFn5, { hooks as ctrlHooksFn1 } from './api/users/controller' import controllerFn6 from './api/users/_userId@number/controller' - import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions } from 'fastify' export type FrourioOptions = { basePath?: string | undefined - multipart?: FastifyMultipartAttactFieldsToBodyOptions | undefined + multipart?: FastifyMultipartAttachFieldsToBodyOptions | undefined } type HttpStatusNoOk = 301 | 302 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 409 | 500 | 501 | 502 | 503 | 504 | 505 @@ -47,9 +46,9 @@ type ServerResponse = type BlobToFile = T['reqFormat'] extends FormData ? { [P in keyof T['reqBody']]: Required[P] extends Blob | ReadStream - ? Multipart + ? MultipartFile : Required[P] extends (Blob | ReadStream)[] - ? Multipart[] + ? MultipartFile[] : T['reqBody'][P] } : T['reqBody'] @@ -106,9 +105,9 @@ const formatMultipartData = (arrayTypeKeys: [string, boolean][]): preValidationH Object.entries(body).forEach(([key, val]) => { if (Array.isArray(val)) { - body[key] = (val as Multipart[]).map(v => v.file ? v : (v as any).value) + body[key] = (val as Multipart[]).map(v => 'file' in v ? v : (v as any).value) } else { - body[key] = (val as Multipart).file ? val : (val as any).value + body[key] = 'file' in (val as Multipart) ? val : (val as any).value } }) diff --git a/src/buildServerFile.ts b/src/buildServerFile.ts index 152c86d..48b8b9e 100644 --- a/src/buildServerFile.ts +++ b/src/buildServerFile.ts @@ -33,7 +33,9 @@ export default (input: string, project?: string) => { checkRequisites({ hasValidator }) if (hasValidator) { - console.warn(`'class-validator' is deprecated. Specify validators in controller instead.`) + console.warn( + `frourio: 'class-validator' is deprecated. Specify validators in controller instead.` + ) headImports.push( "import 'reflect-metadata'", @@ -46,7 +48,7 @@ export default (input: string, project?: string) => { if (hasMultipart) { headImports.push( - "import type { FastifyMultipartAttactFieldsToBodyOptions, Multipart } from '@fastify/multipart'", + "import type { FastifyMultipartAttachFieldsToBodyOptions, Multipart, MultipartFile } from '@fastify/multipart'", "import multipart from '@fastify/multipart'" ) } @@ -64,8 +66,7 @@ export default (input: string, project?: string) => { return { text: `${headImports.join('\n')} import type { z } from 'zod' -${imports} -import type { FastifyInstance, RouteHandlerMethod${ +${imports}import type { FastifyInstance, RouteHandlerMethod${ hasNumberTypeQuery || hasBooleanTypeQuery || hasTypedParams || hasValidator || hasMultipart ? ', preValidationHookHandler' : '' @@ -82,7 +83,7 @@ ${ ' plainToInstance?: ((cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object) | undefined\n' + ' validateOrReject?: ((instance: object, options: ValidatorOptions) => Promise) | undefined\n' : '' -}${hasMultipart ? ' multipart?: FastifyMultipartAttactFieldsToBodyOptions | undefined\n' : ''}} +}${hasMultipart ? ' multipart?: FastifyMultipartAttachFieldsToBodyOptions | undefined\n' : ''}} type HttpStatusNoOk = 301 | 302 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 409 | 500 | 501 | 502 | 503 | 504 | 505 @@ -112,9 +113,9 @@ ${ type BlobToFile = T['reqFormat'] extends FormData ? { [P in keyof T['reqBody']]: Required[P] extends Blob | ReadStream - ? Multipart + ? MultipartFile : Required[P] extends (Blob | ReadStream)[] - ? Multipart[] + ? MultipartFile[] : T['reqBody'][P] } : T['reqBody'] @@ -282,9 +283,9 @@ const formatMultipartData = (arrayTypeKeys: [string, boolean][]): preValidationH Object.entries(body).forEach(([key, val]) => { if (Array.isArray(val)) { - body[key] = (val as Multipart[]).map(v => v.file ? v : (v as any).value) + body[key] = (val as Multipart[]).map(v => 'file' in v ? v : (v as any).value) } else { - body[key] = (val as Multipart).file ? val : (val as any).value + body[key] = 'file' in (val as Multipart) ? val : (val as any).value } }) diff --git a/yarn.lock b/yarn.lock index 9b5baed..9d532c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,12 +30,45 @@ dependencies: "@babel/highlight" "^7.16.7" +"@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + "@babel/compat-data@^7.16.4": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/compat-data@^7.20.0": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" + integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== + +"@babel/core@^7.11.6": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.2" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.1" + "@babel/parser" "^7.20.2" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/core@^7.12.3": version "7.17.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== @@ -65,6 +98,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.20.1", "@babel/generator@^7.20.2": + version "7.20.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.4.tgz#4d9f8f0c30be75fd90a0562099a26e5839602ab8" + integrity sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA== + dependencies: + "@babel/types" "^7.20.2" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/helper-compilation-targets@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" @@ -75,6 +117,16 @@ browserslist "^4.17.5" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== + dependencies: + "@babel/compat-data" "^7.20.0" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + semver "^6.3.0" + "@babel/helper-environment-visitor@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" @@ -82,6 +134,11 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + "@babel/helper-function-name@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" @@ -91,6 +148,14 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + "@babel/helper-get-function-arity@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" @@ -105,6 +170,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" @@ -112,6 +184,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-module-transforms@^7.16.7": version "7.17.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0" @@ -126,11 +205,30 @@ "@babel/traverse" "^7.17.3" "@babel/types" "^7.17.0" +"@babel/helper-module-transforms@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" + "@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.16.7", "@babel/helper-plugin-utils@^7.8.0": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== +"@babel/helper-plugin-utils@^7.18.6": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + "@babel/helper-simple-access@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" @@ -138,6 +236,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" @@ -145,16 +250,38 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + "@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + "@babel/helpers@^7.17.2": version "7.17.2" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" @@ -164,6 +291,15 @@ "@babel/traverse" "^7.17.0" "@babel/types" "^7.17.0" +"@babel/helpers@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" + integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== + dependencies: + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.0" + "@babel/highlight@^7.16.7": version "7.16.10" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" @@ -173,11 +309,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3": version "7.17.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== +"@babel/parser@^7.18.10", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" + integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -213,6 +363,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -278,6 +435,15 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/template@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.7.2": version "7.17.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" @@ -294,6 +460,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" + integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.1" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.1" + "@babel/types" "^7.20.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" @@ -302,6 +484,15 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" + integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -329,12 +520,14 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@fastify/ajv-compiler@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@fastify/ajv-compiler/-/ajv-compiler-1.1.0.tgz#5ce80b1fc8bebffc8c5ba428d5e392d0f9ed10a1" - integrity sha512-gvCOUNpXsWrIQ3A4aXCLIdblL0tDq42BG/2Xw7oxbil9h11uow10ztS2GuFazNBfjbrsZ5nl+nPl5jDSjj5TSg== +"@fastify/ajv-compiler@^3.3.1": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@fastify/ajv-compiler/-/ajv-compiler-3.4.0.tgz#e001b7e234b5b704654b1d617d69fa63c348f2a7" + integrity sha512-69JnK7Cot+ktn7LD5TikP3b7psBPX55tYpQa8WSumt8r117PCa2zwHnImfBtRWYExreJlI48hr0WZaVrTBGj7w== dependencies: - ajv "^6.12.6" + ajv "^8.11.0" + ajv-formats "^2.1.1" + fast-uri "^2.0.0" "@fastify/busboy@^1.0.0": version "1.0.0" @@ -343,21 +536,33 @@ dependencies: text-decoding "^1.0.0" -"@fastify/error@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@fastify/error/-/error-2.0.0.tgz#a9f94af56eb934f0ab1ce4ef9f0ced6ebf2319dc" - integrity sha512-wI3fpfDT0t7p8E6dA2eTECzzOd+bZsZCJ2Hcv+Onn2b7ZwK3RwD27uW2QDaMtQhAfWQQP+WNK7nKf0twLsBf9w== +"@fastify/deepmerge@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@fastify/deepmerge/-/deepmerge-1.1.0.tgz#91f0a5a27034ff76b7bece63a5906894940ace82" + integrity sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g== -"@fastify/multipart@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@fastify/multipart/-/multipart-6.0.0.tgz#da7e80b589b3874b3964145ec6e13fd69bd7e6cf" - integrity sha512-TwxPH9jE3bEaCdMD1Xqm2YS1aelgJxcNmA/uYAPCzqnVEylDiKCmxCstGulb1W5WdMoyqD5LBGm7AoqDwWTCWQ== +"@fastify/error@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@fastify/error/-/error-3.0.0.tgz#bfcb7b33cec0196413083a91ef2edc7b2c88455b" + integrity sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg== + +"@fastify/fast-json-stringify-compiler@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.1.0.tgz#ebf657ce4ec88e27ba311f7560eaa0b37de8719d" + integrity sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw== + dependencies: + fast-json-stringify "^5.0.0" + +"@fastify/multipart@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@fastify/multipart/-/multipart-7.3.0.tgz#152908c32fbca9fbe55ee6ca114b818d4c9d1e9b" + integrity sha512-tbzQiRFxoADCn0G10CqiQ/nDWWcfegtwg826Pfz2h7+XvuqJhGnko0TbafrWIY7hnGD+sNCGMdiTVsxxs6zigA== dependencies: "@fastify/busboy" "^1.0.0" - "@fastify/error" "^2.0.0" - deepmerge "^4.2.2" + "@fastify/deepmerge" "^1.0.0" + "@fastify/error" "^3.0.0" end-of-stream "^1.4.4" - fastify-plugin "^3.0.0" + fastify-plugin "^4.0.0" hexoid "^1.0.0" secure-json-parse "^2.4.0" stream-wormhole "^1.1.0" @@ -397,113 +602,128 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== +"@jest/console@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.3.1.tgz#3e3f876e4e47616ea3b1464b9fbda981872e9583" + integrity sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^29.3.1" + jest-util "^29.3.1" slash "^3.0.0" -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== +"@jest/core@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.3.1.tgz#bff00f413ff0128f4debec1099ba7dcd649774a1" + integrity sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw== dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^29.3.1" + "@jest/reporters" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.8.1" + ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" + jest-changed-files "^29.2.0" + jest-config "^29.3.1" + jest-haste-map "^29.3.1" + jest-message-util "^29.3.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-resolve-dependencies "^29.3.1" + jest-runner "^29.3.1" + jest-runtime "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" + jest-watcher "^29.3.1" micromatch "^4.0.4" - rimraf "^3.0.0" + pretty-format "^29.3.1" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== +"@jest/environment@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.3.1.tgz#eb039f726d5fcd14698acd072ac6576d41cfcaa6" + integrity sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag== dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/fake-timers" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" - jest-mock "^27.5.1" + jest-mock "^29.3.1" -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== +"@jest/expect-utils@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.3.1.tgz#531f737039e9b9e27c42449798acb5bba01935b6" + integrity sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g== dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" + jest-get-type "^29.2.0" + +"@jest/expect@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.3.1.tgz#456385b62894349c1d196f2d183e3716d4c6a6cd" + integrity sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg== + dependencies: + expect "^29.3.1" + jest-snapshot "^29.3.1" + +"@jest/fake-timers@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.3.1.tgz#b140625095b60a44de820876d4c14da1aa963f67" + integrity sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A== + dependencies: + "@jest/types" "^29.3.1" + "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^29.3.1" + jest-mock "^29.3.1" + jest-util "^29.3.1" -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== +"@jest/globals@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.3.1.tgz#92be078228e82d629df40c3656d45328f134a0c6" + integrity sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q== dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" + "@jest/environment" "^29.3.1" + "@jest/expect" "^29.3.1" + "@jest/types" "^29.3.1" + jest-mock "^29.3.1" -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== +"@jest/reporters@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.3.1.tgz#9a6d78c109608e677c25ddb34f907b90e07b4310" + integrity sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" + "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" - glob "^7.1.2" + glob "^7.1.3" graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + jest-message-util "^29.3.1" + jest-util "^29.3.1" + jest-worker "^29.3.1" slash "^3.0.0" - source-map "^0.6.0" string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" "@jest/schemas@^29.0.0": version "29.0.0" @@ -512,66 +732,55 @@ dependencies: "@sinclair/typebox" "^0.24.1" -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== +"@jest/source-map@^29.2.0": + version "29.2.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" + integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ== dependencies: + "@jridgewell/trace-mapping" "^0.3.15" callsites "^3.0.0" graceful-fs "^4.2.9" - source-map "^0.6.0" -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== +"@jest/test-result@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.3.1.tgz#92cd5099aa94be947560a24610aa76606de78f50" + integrity sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw== dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^29.3.1" + "@jest/types" "^29.3.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== +"@jest/test-sequencer@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz#fa24b3b050f7a59d48f7ef9e0b782ab65123090d" + integrity sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA== dependencies: - "@jest/test-result" "^27.5.1" + "@jest/test-result" "^29.3.1" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" + jest-haste-map "^29.3.1" + slash "^3.0.0" -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== +"@jest/transform@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.3.1.tgz#1e6bd3da4af50b5c82a539b7b1f3770568d6e36d" + integrity sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" + "@babel/core" "^7.11.6" + "@jest/types" "^29.3.1" + "@jridgewell/trace-mapping" "^0.3.15" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" + jest-haste-map "^29.3.1" + jest-regex-util "^29.2.0" + jest-util "^29.3.1" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" + write-file-atomic "^4.0.1" "@jest/types@^29.3.1": version "29.3.1" @@ -585,11 +794,35 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + "@jridgewell/resolve-uri@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.11" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" @@ -611,6 +844,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -644,18 +885,13 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== +"@sinonjs/fake-timers@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== dependencies: "@sinonjs/commons" "^1.7.0" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@tsconfig/node10@^1.0.7": version "1.0.8" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" @@ -676,7 +912,7 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/babel__core@^7.1.14": version "7.1.18" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== @@ -702,7 +938,7 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": version "7.14.2" resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== @@ -724,7 +960,7 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/graceful-fs@^4.1.2": +"@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== @@ -750,13 +986,13 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^27.4.1": - version "27.4.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" - integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== +"@types/jest@^29.2.3": + version "29.2.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.2.3.tgz#f5fd88e43e5a9e4221ca361e23790d48fcf0a211" + integrity sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w== dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" + expect "^29.0.0" + pretty-format "^29.0.0" "@types/json-schema@^7.0.9": version "7.0.9" @@ -819,13 +1055,6 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^17.0.8": version "17.0.13" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76" @@ -962,45 +1191,29 @@ "@typescript-eslint/types" "5.42.1" eslint-visitor-keys "^3.3.0" -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" -abstract-logging@^2.0.0: +abstract-logging@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4, acorn@^8.4.1: +acorn@^8.4.1: version "8.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== @@ -1010,14 +1223,14 @@ acorn@^8.8.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: - debug "4" + ajv "^8.0.0" -ajv@^6.10.0, ajv@^6.11.0, ajv@^6.12.4, ajv@^6.12.6: +ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1027,10 +1240,10 @@ ajv@^6.10.0, ajv@^6.11.0, ajv@^6.12.4, ajv@^6.12.6: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.1.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" - integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== +ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" + integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -1153,15 +1366,14 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -avvio@^7.1.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/avvio/-/avvio-7.2.2.tgz#58e00e7968870026cd7b7d4f689d596db629e251" - integrity sha512-XW2CMCmZaCmCCsIaJaLKxAzPwF37fXi1KGxNOvedOpeisLdmxZnblGc3hpHWYnlP+KOUxZsazh43WXNHgXpbqw== +avvio@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/avvio/-/avvio-8.2.0.tgz#aff28b0266617bf07ffc1c2d5f4220c3663ce1c2" + integrity sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg== dependencies: archy "^1.0.0" debug "^4.0.0" fastq "^1.6.1" - queue-microtask "^1.1.2" axios@^0.26.0: version "0.26.0" @@ -1170,16 +1382,15 @@ axios@^0.26.0: dependencies: follow-redirects "^1.14.8" -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== +babel-jest@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.3.1.tgz#05c83e0d128cd48c453eea851482a38782249f44" + integrity sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA== dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/transform" "^29.3.1" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" + babel-preset-jest "^29.2.0" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -1195,14 +1406,14 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== +babel-plugin-jest-hoist@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094" + integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" + "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" babel-preset-current-node-syntax@^1.0.0: @@ -1223,12 +1434,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== +babel-preset-jest@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc" + integrity sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA== dependencies: - babel-plugin-jest-hoist "^27.5.1" + babel-plugin-jest-hoist "^29.2.0" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -1236,6 +1447,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -1256,11 +1472,6 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - browserslist@^4.17.5: version "4.19.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383" @@ -1272,6 +1483,16 @@ browserslist@^4.17.5: node-releases "^2.0.2" picocolors "^1.0.0" +browserslist@^4.21.3: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + dependencies: + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -1291,6 +1512,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -1319,6 +1548,11 @@ caniuse-lite@^1.0.30001312: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== +caniuse-lite@^1.0.30001400: + version "1.0.30001434" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz#ec1ec1cfb0a93a34a0600d37903853030520a4e5" + integrity sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA== + chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1379,13 +1613,13 @@ class-validator@^0.13.1: libphonenumber-js "^1.9.43" validator "^13.7.0" -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" wrap-ansi "^7.0.0" co@^4.6.0: @@ -1434,17 +1668,27 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +content-type@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" -cookie@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== create-require@^1.1.0: version "1.1.1" @@ -1460,39 +1704,6 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -1507,6 +1718,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -1514,17 +1732,12 @@ debug@^4.3.4: dependencies: ms "2.1.2" -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -1551,10 +1764,10 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== +diff-sequences@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" + integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== diff@^4.0.1: version "4.0.2" @@ -1582,22 +1795,20 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" +electron-to-chromium@^1.4.251: + version "1.4.284" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== electron-to-chromium@^1.4.71: version "1.4.72" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.72.tgz#19b871f1da8be8199b2330d694fc84fcdb72ecd9" integrity sha512-9LkRQwjW6/wnSfevR21a3k8sOJ+XWSH7kkzs9/EUenKmuDkndP3W9y1yCZpOxufwGbX3JV8glZZSDb4o95zwXQ== -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^8.0.0: version "8.0.0" @@ -1673,18 +1884,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - eslint-config-prettier@^8.3.0: version "8.4.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz#8e6d17c7436649e98c4c2189868562921ef563de" @@ -1866,7 +2065,7 @@ espree@^9.4.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -1900,6 +2099,16 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -1920,15 +2129,16 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== +expect@^29.0.0, expect@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.3.1.tgz#92877aad3f7deefc2e3f6430dd195b92295554a6" + integrity sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA== dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" + "@jest/expect-utils" "^29.3.1" + jest-get-type "^29.2.0" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-util "^29.3.1" fast-decode-uri-component@^1.0.1: version "1.0.1" @@ -1951,66 +2161,70 @@ fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-json-stringify@^2.5.2: - version "2.7.13" - resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-2.7.13.tgz#277aa86c2acba4d9851bd6108ed657aa327ed8c0" - integrity sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA== +fast-json-stringify@^5.0.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-5.4.1.tgz#06c18426c21d8cfbb0c925f99370e583c4ce4cc5" + integrity sha512-P7S9WXEnMqu6seBnzAFmgZ+T3KCD+Do+pNIJsmk/6OlDHZVjl6KzsQB3TFHKQb2Q8N7C9l31WS7/LZGF5hT1FA== dependencies: - ajv "^6.11.0" - deepmerge "^4.2.2" + "@fastify/deepmerge" "^1.0.0" + ajv "^8.10.0" + ajv-formats "^2.1.1" + fast-deep-equal "^3.1.3" + fast-uri "^2.1.0" rfdc "^1.2.0" - string-similarity "^4.0.1" -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-redact@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.1.1.tgz#790fcff8f808c2e12fabbfb2be5cb2deda448fa0" - integrity sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A== +fast-querystring@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-querystring/-/fast-querystring-1.0.0.tgz#d6151cd025d4b100e09e24045f6c35ae9ff191ef" + integrity sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA== + dependencies: + fast-decode-uri-component "^1.0.1" -fast-safe-stringify@^2.0.8: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== +fast-redact@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.1.2.tgz#d58e69e9084ce9fa4c1a6fa98a3e1ecf5d7839aa" + integrity sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw== -fastify-error@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/fastify-error/-/fastify-error-0.3.1.tgz#8eb993e15e3cf57f0357fc452af9290f1c1278d2" - integrity sha512-oCfpcsDndgnDVgiI7bwFKAun2dO+4h84vBlkWsWnz/OUK9Reff5UFoFl241xTiLeHWX/vU9zkDVXqYUxjOwHcQ== +fast-uri@^2.0.0, fast-uri@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.1.0.tgz#9279432d6b53675c90116b947ed2bbba582d6fb5" + integrity sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA== -fastify-plugin@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fastify-plugin/-/fastify-plugin-3.0.1.tgz#79e84c29f401020f38b524f59f2402103fd21ed2" - integrity sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA== - -fastify@^3.18.1: - version "3.27.2" - resolved "https://registry.yarnpkg.com/fastify/-/fastify-3.27.2.tgz#61fd226dd72b2d8b6b82e6bf71c18e495026545d" - integrity sha512-InZSbbfdBV8yfsTzX0Ei7aF3r7FjC+DPIf27IlTP5EIhSsvTjvlRNwxDPYYGi2NX2K654Vh+zCGCy/GaSigIuw== - dependencies: - "@fastify/ajv-compiler" "^1.0.0" - abstract-logging "^2.0.0" - avvio "^7.1.2" - fast-json-stringify "^2.5.2" - fastify-error "^0.3.0" - find-my-way "^4.5.0" - flatstr "^1.0.12" - light-my-request "^4.2.0" - pino "^6.13.0" - process-warning "^1.0.0" +fastify-plugin@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/fastify-plugin/-/fastify-plugin-4.3.0.tgz#c6eaa87a7a0d6d1d16129e43e31d6bc1d8868e53" + integrity sha512-M3+i368lV0OYTJ5TfClIoPKEKSOF7112iiPdwgfSR0gN98BjA1Nk+c6oBHtfcVt9KiMxl+EQKHC1QNWo3ZOpYQ== + +fastify@^4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/fastify/-/fastify-4.10.2.tgz#0dd1cb8d16df3c14eff938c08aa6da63b4035d0d" + integrity sha512-0T+4zI6N3S8ex0LCZi3H4FasJR4AzWw834fUkPWvV8r6GBJkLmAOfFxH8f5V29Plef24IK0QSQD/tz1Nx+1UOA== + dependencies: + "@fastify/ajv-compiler" "^3.3.1" + "@fastify/error" "^3.0.0" + "@fastify/fast-json-stringify-compiler" "^4.1.0" + abstract-logging "^2.0.1" + avvio "^8.2.0" + content-type "^1.0.4" + find-my-way "^7.3.0" + light-my-request "^5.6.1" + pino "^8.5.0" + process-warning "^2.0.0" proxy-addr "^2.0.7" - rfdc "^1.1.4" - secure-json-parse "^2.0.0" - semver "^7.3.2" - tiny-lru "^8.0.1" + rfdc "^1.3.0" + secure-json-parse "^2.5.0" + semver "^7.3.7" + tiny-lru "^10.0.0" fastq@^1.6.0, fastq@^1.6.1: version "1.13.0" @@ -2040,15 +2254,14 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-my-way@^4.5.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/find-my-way/-/find-my-way-4.5.1.tgz#758e959194b90aea0270db18fff75e2fceb2239f" - integrity sha512-kE0u7sGoUFbMXcOG/xpkmz4sRLCklERnBcg7Ftuu1iAxsfEt2S46RLJ3Sq7vshsEy2wJT2hZxE58XZK27qa8kg== +find-my-way@^7.3.0: + version "7.3.1" + resolved "https://registry.yarnpkg.com/find-my-way/-/find-my-way-7.3.1.tgz#fd8a0b468a18c283e05be59f93a627f37e306cfa" + integrity sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg== dependencies: - fast-decode-uri-component "^1.0.1" fast-deep-equal "^3.1.3" + fast-querystring "^1.0.0" safe-regex2 "^2.0.0" - semver-store "^0.3.0" find-up@^2.1.0: version "2.1.0" @@ -2081,11 +2294,6 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flatstr@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" - integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== - flatted@^3.1.0: version "3.2.5" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" @@ -2185,7 +2393,7 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.1.3, glob@^7.1.4: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -2270,46 +2478,20 @@ hexoid@^1.0.0: resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^5.1.1, ignore@^5.2.0: version "5.2.0" @@ -2454,11 +2636,6 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -2491,11 +2668,6 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - is-weakref@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -2550,369 +2722,310 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== +jest-changed-files@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" + integrity sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA== dependencies: - "@jest/types" "^27.5.1" execa "^5.0.0" - throat "^6.0.1" + p-limit "^3.1.0" -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== +jest-circus@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.3.1.tgz#177d07c5c0beae8ef2937a67de68f1e17bbf1b4a" + integrity sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg== dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/environment" "^29.3.1" + "@jest/expect" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.5.1" is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" + jest-each "^29.3.1" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-runtime "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" + p-limit "^3.1.0" + pretty-format "^29.3.1" slash "^3.0.0" stack-utils "^2.0.3" - throat "^6.0.1" -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== +jest-cli@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.3.1.tgz#e89dff427db3b1df50cea9a393ebd8640790416d" + integrity sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ== dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/core" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-config "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" prompts "^2.0.1" - yargs "^16.2.0" + yargs "^17.3.1" -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== +jest-config@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.3.1.tgz#0bc3dcb0959ff8662957f1259947aedaefb7f3c6" + integrity sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg== dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.3.1" + "@jest/types" "^29.3.1" + babel-jest "^29.3.1" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" - glob "^7.1.1" + glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-circus "^29.3.1" + jest-environment-node "^29.3.1" + jest-get-type "^29.2.0" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-runner "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^27.5.1" + pretty-format "^29.3.1" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== +jest-diff@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527" + integrity sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw== dependencies: chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + diff-sequences "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== +jest-docblock@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" + integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A== dependencies: detect-newline "^3.0.0" -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== +jest-each@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.3.1.tgz#bc375c8734f1bb96625d83d1ca03ef508379e132" + integrity sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.3.1" chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" - -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + jest-get-type "^29.2.0" + jest-util "^29.3.1" + pretty-format "^29.3.1" + +jest-environment-node@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.3.1.tgz#5023b32472b3fba91db5c799a0d5624ad4803e74" + integrity sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag== + dependencies: + "@jest/environment" "^29.3.1" + "@jest/fake-timers" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-mock "^29.3.1" + jest-util "^29.3.1" -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== +jest-get-type@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" + integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== +jest-haste-map@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.3.1.tgz#af83b4347f1dae5ee8c2fb57368dc0bb3e5af843" + integrity sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A== dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" + "@jest/types" "^29.3.1" + "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + jest-regex-util "^29.2.0" + jest-util "^29.3.1" + jest-worker "^29.3.1" micromatch "^4.0.4" - walker "^1.0.7" + walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== +jest-leak-detector@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz#95336d020170671db0ee166b75cd8ef647265518" + integrity sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA== dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + jest-get-type "^29.2.0" + pretty-format "^29.3.1" + +jest-matcher-utils@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572" + integrity sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ== dependencies: chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + jest-diff "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== +jest-message-util@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.3.1.tgz#37bc5c468dfe5120712053dd03faf0f053bd6adb" + integrity sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" + "@jest/types" "^29.3.1" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^27.5.1" + pretty-format "^29.3.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== +jest-mock@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.3.1.tgz#60287d92e5010979d01f218c6b215b688e0f313e" + integrity sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.3.1" "@types/node" "*" + jest-util "^29.3.1" jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== +jest-regex-util@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" + integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== +jest-resolve-dependencies@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz#a6a329708a128e68d67c49f38678a4a4a914c3bf" + integrity sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA== dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" + jest-regex-util "^29.2.0" + jest-snapshot "^29.3.1" -jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== +jest-resolve@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.3.1.tgz#9a4b6b65387a3141e4a40815535c7f196f1a68a7" + integrity sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw== dependencies: - "@jest/types" "^27.5.1" chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" + jest-haste-map "^29.3.1" jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== +jest-runner@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.3.1.tgz#a92a879a47dd096fea46bb1517b0a99418ee9e2d" + integrity sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA== dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^29.3.1" + "@jest/environment" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.8.1" + emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + jest-docblock "^29.2.0" + jest-environment-node "^29.3.1" + jest-haste-map "^29.3.1" + jest-leak-detector "^29.3.1" + jest-message-util "^29.3.1" + jest-resolve "^29.3.1" + jest-runtime "^29.3.1" + jest-util "^29.3.1" + jest-watcher "^29.3.1" + jest-worker "^29.3.1" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.3.1.tgz#21efccb1a66911d6d8591276a6182f520b86737a" + integrity sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A== + dependencies: + "@jest/environment" "^29.3.1" + "@jest/fake-timers" "^29.3.1" + "@jest/globals" "^29.3.1" + "@jest/source-map" "^29.2.0" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" + jest-haste-map "^29.3.1" + jest-message-util "^29.3.1" + jest-mock "^29.3.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== +jest-snapshot@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.3.1.tgz#17bcef71a453adc059a18a32ccbd594b8cc4e45e" + integrity sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA== dependencies: - "@babel/core" "^7.7.2" + "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.5.1" + expect "^29.3.1" graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + jest-diff "^29.3.1" + jest-get-type "^29.2.0" + jest-haste-map "^29.3.1" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-util "^29.3.1" natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" - -jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" + pretty-format "^29.3.1" + semver "^7.3.5" -jest-util@^29.0.0: +jest-util@^29.0.0, jest-util@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1" integrity sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ== @@ -2924,48 +3037,51 @@ jest-util@^29.0.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== +jest-validate@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.3.1.tgz#d56fefaa2e7d1fde3ecdc973c7f7f8f25eea704a" + integrity sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.3.1" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.5.1" + jest-get-type "^29.2.0" leven "^3.1.0" - pretty-format "^27.5.1" + pretty-format "^29.3.1" -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== +jest-watcher@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.3.1.tgz#3341547e14fe3c0f79f9c3a4c62dbc3fc977fd4a" + integrity sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg== dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.5.1" + emittery "^0.13.1" + jest-util "^29.3.1" string-length "^4.0.1" -jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +jest-worker@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.3.1.tgz#e9462161017a9bb176380d721cab022661da3d6b" + integrity sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw== dependencies: "@types/node" "*" + jest-util "^29.3.1" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== +jest@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.3.1.tgz#c130c0d551ae6b5459b8963747fed392ddbde122" + integrity sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA== dependencies: - "@jest/core" "^27.5.1" + "@jest/core" "^29.3.1" + "@jest/types" "^29.3.1" import-local "^3.0.2" - jest-cli "^27.5.1" + jest-cli "^29.3.1" js-sdsl@^4.1.4: version "4.1.5" @@ -2992,39 +3108,6 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -3087,27 +3170,18 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - libphonenumber-js@^1.9.43: version "1.9.49" resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.9.49.tgz#d431703cd699be2ccced5b95f26182a7c50a9227" integrity sha512-/wEOIONcVboFky+lWlCaF7glm1FhBz11M5PHeCApA+xDdVfmhKjHktHS8KjyGxouV5CSXIr4f3GvLSpJa4qMSg== -light-my-request@^4.2.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-4.8.0.tgz#b0bd074902f95814a956819bc2b6c99d8cafcefb" - integrity sha512-C2XESrTRsZnI59NSQigOsS6IuTxpj8OhSBvZS9fhgBMsamBsAuWN1s4hj/nCi8EeZcyAA6xbROhsZy7wKdfckg== +light-my-request@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-5.6.1.tgz#cff5c75d8cb35a354433d75406fea74a2f8bcdb1" + integrity sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g== dependencies: - ajv "^8.1.0" - cookie "^0.4.0" - process-warning "^1.0.0" + cookie "^0.5.0" + process-warning "^2.0.0" set-cookie-parser "^2.4.1" lines-and-columns@^1.1.6: @@ -3147,11 +3221,6 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -3267,6 +3336,11 @@ node-releases@^2.0.2: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -3279,11 +3353,6 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - object-inspect@^1.11.0, object-inspect@^1.9.0: version "1.12.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" @@ -3313,6 +3382,11 @@ object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" +on-exit-leak-free@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz#5c703c968f7e7f851885f6459bf8a8a57edc9cc4" + integrity sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w== + once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -3327,18 +3401,6 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" @@ -3365,7 +3427,7 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -3420,11 +3482,6 @@ parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -3465,23 +3522,35 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pino-std-serializers@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" - integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== - -pino@^6.13.0: - version "6.14.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-6.14.0.tgz#b745ea87a99a6c4c9b374e4f29ca7910d4c69f78" - integrity sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg== - dependencies: - fast-redact "^3.0.0" - fast-safe-stringify "^2.0.8" - flatstr "^1.0.12" - pino-std-serializers "^3.1.0" - process-warning "^1.0.0" +pino-abstract-transport@v1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3" + integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== + dependencies: + readable-stream "^4.0.0" + split2 "^4.0.0" + +pino-std-serializers@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz#4c20928a1bafca122fdc2a7a4a171ca1c5f9c526" + integrity sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ== + +pino@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-8.7.0.tgz#58621608a3d8540ae643cdd9194cdd94130c78d9" + integrity sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport v1.0.0 + pino-std-serializers "^6.0.0" + process-warning "^2.0.0" quick-format-unescaped "^4.0.3" - sonic-boom "^1.0.2" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^3.1.0" + thread-stream "^2.0.0" pirates@^4.0.4: version "4.0.5" @@ -3500,29 +3569,29 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - prettier@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -pretty-format@^27.0.0, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== +pretty-format@^29.0.0, pretty-format@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da" + integrity sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg== dependencies: - ansi-regex "^5.0.1" + "@jest/schemas" "^29.0.0" ansi-styles "^5.0.0" - react-is "^17.0.1" + react-is "^18.0.0" -process-warning@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" - integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== +process-warning@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.0.0.tgz#341dbeaac985b90a04ebcd844d50097c7737b2ee" + integrity sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== prompts@^2.0.1: version "2.4.2" @@ -3540,17 +3609,12 @@ proxy-addr@^2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -queue-microtask@^1.1.2, queue-microtask@^1.2.2: +queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== @@ -3560,10 +3624,20 @@ quick-format-unescaped@^4.0.3: resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +readable-stream@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.2.0.tgz#a7ef523d3b39e4962b0db1a1af22777b10eeca46" + integrity sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" readdirp@~3.6.0: version "3.6.0" @@ -3572,6 +3646,11 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +real-require@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" + integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== + reflect-metadata@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" @@ -3633,12 +3712,12 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.1.4, rfdc@^1.2.0: +rfdc@^1.2.0, rfdc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -3664,29 +3743,22 @@ safe-regex2@^2.0.0: dependencies: ret "~0.2.0" -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" +safe-stable-stringify@^2.3.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz#34694bd8a30575b7f94792aa51527551bd733d61" + integrity sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA== -secure-json-parse@^2.0.0, secure-json-parse@^2.4.0: +secure-json-parse@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.4.0.tgz#5aaeaaef85c7a417f76271a4f5b0cc3315ddca85" integrity sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg== -semver-store@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/semver-store/-/semver-store-0.3.0.tgz#ce602ff07df37080ec9f4fb40b29576547befbe9" - integrity sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg== +secure-json-parse@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.5.0.tgz#f929829df2adc7ccfb53703569894d051493a6ac" + integrity sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w== -semver@7.x, semver@^7.3.2, semver@^7.3.5: +semver@7.x, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -3731,7 +3803,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -3746,18 +3818,17 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -sonic-boom@^1.0.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.4.1.tgz#d35d6a74076624f12e6f917ade7b9d75e918f53e" - integrity sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg== +sonic-boom@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.2.0.tgz#ce9f2de7557e68be2e52c8df6d9b052e7d348143" + integrity sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA== dependencies: atomic-sleep "^1.0.0" - flatstr "^1.0.12" -source-map-support@^0.5.6: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -3767,15 +3838,15 @@ source-map@^0.5.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +split2@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" + integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== sprintf-js@~1.0.2: version "1.0.3" @@ -3802,12 +3873,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-similarity@^4.0.1: - version "4.0.4" - resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-4.0.4.tgz#42d01ab0b34660ea8a018da8f56a3309bb8b2a5b" - integrity sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ== - -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3866,7 +3932,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -3880,32 +3946,11 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -3925,15 +3970,17 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== +thread-stream@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.2.0.tgz#310c03a253f729094ce5d4638ef5186dfa80a9e8" + integrity sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ== + dependencies: + real-require "^0.2.0" -tiny-lru@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-8.0.1.tgz#c1d77d806e68035aaa2253e253d212291240ece2" - integrity sha512-eBIAYA0BzSjxBedCaO0CSjertD+u+IvNuFkyD7ESf+qjqHKBr5wFqvEYl91+ZQd7jjq2pO6/fBVwFgb6bxvorw== +tiny-lru@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-10.0.1.tgz#aaf5d22207e641ed1b176ac2e616d6cc2fc9ef66" + integrity sha512-Vst+6kEsWvb17Zpz14sRJV/f8bUWKhqm6Dc+v08iShmIJ/WxqWytHzCTd6m88pS33rE2zpX34TRmOpAJPloNCA== tmpl@1.0.5: version "1.0.5" @@ -3952,22 +3999,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -4035,13 +4066,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -4057,17 +4081,10 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typescript@^4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== +typescript@^4.9.3: + version "4.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db" + integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== unbox-primitive@^1.0.1: version "1.0.1" @@ -4079,10 +4096,13 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" -universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +update-browserslist-db@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" uri-js@^4.2.2: version "4.4.1" @@ -4096,14 +4116,14 @@ v8-compile-cache-lib@^3.0.1: resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-to-istanbul@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" - integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== +v8-to-istanbul@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" - source-map "^0.7.3" validator@^13.7.0: version "13.7.0" @@ -4115,21 +4135,7 @@ velona@^0.7.0: resolved "https://registry.yarnpkg.com/velona/-/velona-0.7.0.tgz#9f1f5b4c9095959977fcc292f30600866b34ee97" integrity sha512-+lFXKHJxj7mK3OnYKLHGijf+LCPvv8Mphvy3JETAGvKbn2179dQcOxvlYggOzYUfVHSn9kWmerivMZBtz3eN0Q== -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7: +walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== @@ -4141,28 +4147,6 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -4171,15 +4155,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -4198,7 +4173,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -4217,30 +4192,13 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== +write-file-atomic@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7.4.6: - version "7.5.7" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + signal-exit "^3.0.7" y18n@^5.0.5: version "5.0.8" @@ -4252,28 +4210,23 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.1: +yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== +yargs@^17.3.1: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== dependencies: - cliui "^7.0.2" + cliui "^8.0.1" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" - string-width "^4.2.0" + string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^20.2.2" + yargs-parser "^21.1.1" yn@3.1.1: version "3.1.1" From f9e16623f96507c24f39fcb9911c521887bf0cd9 Mon Sep 17 00:00:00 2001 From: solufa Date: Thu, 24 Nov 2022 02:48:49 +0900 Subject: [PATCH 2/5] feat: add response schema to controller --- servers/all/$server.ts | 20 ++++--- servers/all/api/$relay.ts | 14 ++--- servers/all/api/500/$relay.ts | 14 ++--- servers/all/api/controller.ts | 53 ++++++------------- servers/all/api/empty/$relay.ts | 14 ++--- servers/all/api/empty/noEmpty/$relay.ts | 14 ++--- servers/all/api/multiForm/$relay.ts | 14 ++--- servers/all/api/texts/$relay.ts | 14 ++--- servers/all/api/texts/_label@string/$relay.ts | 14 ++--- servers/all/api/texts/sample/$relay.ts | 14 ++--- servers/all/api/users/$relay.ts | 14 ++--- .../all/api/users/_userId@number/$relay.ts | 14 ++--- .../api/users/_userId@number/_name/$relay.ts | 14 ++--- servers/minimum/$server.ts | 14 ++--- servers/minimum/api/$relay.ts | 14 ++--- servers/noMulter/$server.ts | 12 +++-- servers/noMulter/api/$relay.ts | 14 ++--- servers/noMulter/api/empty/$relay.ts | 14 ++--- servers/noMulter/api/empty/noEmpty/$relay.ts | 14 ++--- servers/noMulter/api/texts/$relay.ts | 14 ++--- servers/noMulter/api/texts/sample/$relay.ts | 14 ++--- servers/noMulter/api/users/$relay.ts | 14 ++--- .../api/users/_userId@number/$relay.ts | 14 ++--- servers/noTypedParams/$server.ts | 14 ++--- servers/noTypedParams/api/$relay.ts | 14 ++--- servers/noTypedParams/api/empty/$relay.ts | 14 ++--- .../noTypedParams/api/empty/noEmpty/$relay.ts | 14 ++--- servers/noTypedParams/api/multiForm/$relay.ts | 14 ++--- servers/noTypedParams/api/texts/$relay.ts | 14 ++--- .../noTypedParams/api/texts/sample/$relay.ts | 14 ++--- servers/noTypedParams/api/users/$relay.ts | 14 ++--- servers/noValidator/$server.ts | 6 ++- servers/noValidator/api/$relay.ts | 14 ++--- servers/noValidator/api/empty/$relay.ts | 14 ++--- .../noValidator/api/empty/noEmpty/$relay.ts | 14 ++--- servers/noValidator/api/multiForm/$relay.ts | 14 ++--- servers/noValidator/api/texts/$relay.ts | 14 ++--- .../noValidator/api/texts/sample/$relay.ts | 14 ++--- servers/noValidator/api/users/$relay.ts | 14 ++--- .../api/users/_userId@number/$relay.ts | 14 ++--- src/buildServerFile.ts | 20 ++++--- src/createControllersText.ts | 42 +++++++++++---- 42 files changed, 336 insertions(+), 321 deletions(-) diff --git a/servers/all/$server.ts b/servers/all/$server.ts index 6322024..9599788 100644 --- a/servers/all/$server.ts +++ b/servers/all/$server.ts @@ -8,6 +8,7 @@ import multipart from '@fastify/multipart' import * as Validators from './validators' import type { ReadStream } from 'fs' import type { HttpStatusOk, AspidaMethodParams } from 'aspida' +import type { Schema } from 'fast-json-stringify' import type { z } from 'zod' import hooksFn0 from './api/hooks' import hooksFn1 from './api/empty/hooks' @@ -29,12 +30,12 @@ import controllerFn9 from './api/users/_userId@number/_name/controller' import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions } from 'fastify' export type FrourioOptions = { - basePath?: string | undefined - transformer?: ClassTransformOptions | undefined - validator?: ValidatorOptions | undefined - plainToInstance?: ((cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object) | undefined - validateOrReject?: ((instance: object, options: ValidatorOptions) => Promise) | undefined - multipart?: FastifyMultipartAttachFieldsToBodyOptions | undefined + basePath?: string + transformer?: ClassTransformOptions + validator?: ValidatorOptions + plainToInstance?: (cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object + validateOrReject?: (instance: object, options: ValidatorOptions) => Promise + multipart?: FastifyMultipartAttachFieldsToBodyOptions } type HttpStatusNoOk = 301 | 302 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 409 | 500 | 501 | 502 | 503 | 504 | 505 @@ -90,6 +91,7 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + schemas?: { response?: { [V in HttpStatusOk]?: Schema }} handler: ServerHandler | ServerHandlerPromise } @@ -283,7 +285,6 @@ export default (fastify: FastifyInstance, options: FrourioOptions = {}) => { schema: { response: responseSchema0.get }, - validatorCompiler, onRequest: [...hooks0.onRequest, ctrlHooks0.onRequest], preParsing: hooks0.preParsing, preValidation: [ @@ -320,7 +321,10 @@ export default (fastify: FastifyInstance, options: FrourioOptions = {}) => { fastify.put( basePath || '/', { - schema: validatorsToSchema(controller0.put.validators), + schema: { + ...validatorsToSchema(controller0.put.validators), + ...controller0.put.schemas + }, validatorCompiler, onRequest: [...hooks0.onRequest, ctrlHooks0.onRequest], preParsing: hooks0.preParsing, diff --git a/servers/all/api/$relay.ts b/servers/all/api/$relay.ts index c04e5b3..72f7c87 100644 --- a/servers/all/api/$relay.ts +++ b/servers/all/api/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/all/api/500/$relay.ts b/servers/all/api/500/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/all/api/500/$relay.ts +++ b/servers/all/api/500/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/all/api/controller.ts b/servers/all/api/controller.ts index 9e86561..21fbc83 100644 --- a/servers/all/api/controller.ts +++ b/servers/all/api/controller.ts @@ -14,42 +14,15 @@ const responseSchema = defineResponseSchema(() => ({ 200: { type: 'object', properties: { - id: { - type: 'string' - }, - emptyNum: { - type: 'number' - }, - requiredNum: { - type: 'number' - }, - requiredNumArr: { - type: 'array', - items: { - type: 'number' - } - }, - bool: { - type: 'boolean' - }, - optionalBool: { - type: 'boolean' - }, - boolArray: { - type: 'array', - items: { - type: 'boolean' - } - }, - optionalBoolArray: { - type: 'array', - items: { - type: 'boolean' - } - }, - disable: { - type: 'string' - } + id: { type: 'string' }, + emptyNum: { type: 'number' }, + requiredNum: { type: 'number' }, + requiredNumArr: { type: 'array', items: { type: 'number' } }, + bool: { type: 'boolean' }, + optionalBool: { type: 'boolean' }, + boolArray: { type: 'array', items: { type: 'boolean' } }, + optionalBoolArray: { type: 'array', items: { type: 'boolean' } }, + disable: { type: 'string' } } } } @@ -87,6 +60,14 @@ export default defineController( }), body: z.object({ port: z.string() }) }, + schemas: { + response: { + 201: { + type: 'object', + properties: { id: { type: 'number' }, port: { type: 'string' } } + } + } + }, handler: v => ({ status: 201, body: { id: +v.query.id, port: v.body.port } diff --git a/servers/all/api/empty/$relay.ts b/servers/all/api/empty/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/all/api/empty/$relay.ts +++ b/servers/all/api/empty/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/all/api/empty/noEmpty/$relay.ts b/servers/all/api/empty/noEmpty/$relay.ts index 3126769..9a64363 100644 --- a/servers/all/api/empty/noEmpty/$relay.ts +++ b/servers/all/api/empty/noEmpty/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/all/api/multiForm/$relay.ts b/servers/all/api/multiForm/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/all/api/multiForm/$relay.ts +++ b/servers/all/api/multiForm/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/all/api/texts/$relay.ts b/servers/all/api/texts/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/all/api/texts/$relay.ts +++ b/servers/all/api/texts/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/all/api/texts/_label@string/$relay.ts b/servers/all/api/texts/_label@string/$relay.ts index a90e95d..f9bc757 100644 --- a/servers/all/api/texts/_label@string/$relay.ts +++ b/servers/all/api/texts/_label@string/$relay.ts @@ -8,10 +8,10 @@ import type { ServerMethodHandler } from '../../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } type Params = { label: string @@ -23,13 +23,13 @@ export function defineValidators(validator: (fastify: FastifyInstance) => { return validator } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -39,6 +39,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/all/api/texts/sample/$relay.ts b/servers/all/api/texts/sample/$relay.ts index 3126769..9a64363 100644 --- a/servers/all/api/texts/sample/$relay.ts +++ b/servers/all/api/texts/sample/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/all/api/users/$relay.ts b/servers/all/api/users/$relay.ts index bfc9065..c443d82 100644 --- a/servers/all/api/users/$relay.ts +++ b/servers/all/api/users/$relay.ts @@ -11,19 +11,19 @@ import type { Methods } from './' type AdditionalRequest = AdditionalRequest0 & AdditionalRequest1 type AddedHandler = T extends (req: infer U, ...args: infer V) => infer W ? (req: U & Partial, ...args: V) => W : never type Hooks = { - onRequest?: AddedHandler | AddedHandler[] | undefined - preParsing?: AddedHandler | AddedHandler[] | undefined - preValidation?: AddedHandler | AddedHandler[] | undefined - preHandler?: AddedHandler | AddedHandler[] | undefined + onRequest?: AddedHandler | AddedHandler[] + preParsing?: AddedHandler | AddedHandler[] + preValidation?: AddedHandler | AddedHandler[] + preHandler?: AddedHandler | AddedHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -33,6 +33,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/all/api/users/_userId@number/$relay.ts b/servers/all/api/users/_userId@number/$relay.ts index e9887c5..649b796 100644 --- a/servers/all/api/users/_userId@number/$relay.ts +++ b/servers/all/api/users/_userId@number/$relay.ts @@ -12,10 +12,10 @@ import type { Methods } from './' type AdditionalRequest = AdditionalRequest0 & AdditionalRequest1 type AddedHandler = T extends (req: infer U, ...args: infer V) => infer W ? (req: U & Partial, ...args: V) => W : never type Hooks = { - onRequest?: AddedHandler | AddedHandler[] | undefined - preParsing?: AddedHandler | AddedHandler[] | undefined - preValidation?: AddedHandler | AddedHandler[] | undefined - preHandler?: AddedHandler | AddedHandler[] | undefined + onRequest?: AddedHandler | AddedHandler[] + preParsing?: AddedHandler | AddedHandler[] + preValidation?: AddedHandler | AddedHandler[] + preHandler?: AddedHandler | AddedHandler[] } type Params = { userId: number @@ -27,13 +27,13 @@ export function defineValidators(validator: (fastify: FastifyInstance) => { return validator } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -43,6 +43,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/all/api/users/_userId@number/_name/$relay.ts b/servers/all/api/users/_userId@number/_name/$relay.ts index 9af3cb9..48a3a31 100644 --- a/servers/all/api/users/_userId@number/_name/$relay.ts +++ b/servers/all/api/users/_userId@number/_name/$relay.ts @@ -12,10 +12,10 @@ import type { Methods } from './' type AdditionalRequest = AdditionalRequest0 & AdditionalRequest1 type AddedHandler = T extends (req: infer U, ...args: infer V) => infer W ? (req: U & Partial, ...args: V) => W : never type Hooks = { - onRequest?: AddedHandler | AddedHandler[] | undefined - preParsing?: AddedHandler | AddedHandler[] | undefined - preValidation?: AddedHandler | AddedHandler[] | undefined - preHandler?: AddedHandler | AddedHandler[] | undefined + onRequest?: AddedHandler | AddedHandler[] + preParsing?: AddedHandler | AddedHandler[] + preValidation?: AddedHandler | AddedHandler[] + preHandler?: AddedHandler | AddedHandler[] } type Params = { userId: number @@ -28,13 +28,13 @@ export function defineValidators(validator: (fastify: FastifyInstance) => { return validator } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -44,6 +44,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/minimum/$server.ts b/servers/minimum/$server.ts index 5cd3232..f1b34e5 100644 --- a/servers/minimum/$server.ts +++ b/servers/minimum/$server.ts @@ -1,10 +1,11 @@ import type { HttpStatusOk, AspidaMethodParams } from 'aspida' +import type { Schema } from 'fast-json-stringify' import type { z } from 'zod' import controllerFn0, { responseSchema as responseSchemaFn0 } from './api/controller' -import type { FastifyInstance, RouteHandlerMethod, FastifySchema, FastifySchemaCompiler } from 'fastify' +import type { FastifyInstance, RouteHandlerMethod } from 'fastify' export type FrourioOptions = { - basePath?: string | undefined + basePath?: string } type HttpStatusNoOk = 301 | 302 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 409 | 500 | 501 | 502 | 503 | 504 | 505 @@ -50,14 +51,10 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + schemas?: { response?: { [V in HttpStatusOk]?: Schema }} handler: ServerHandler | ServerHandlerPromise } -const validatorCompiler: FastifySchemaCompiler = ({ schema }) => (data: unknown) => { - const result = (schema as z.ZodType).safeParse(data) - return result.success ? { value: result.data } : { error: result.error } -} - const methodToHandler = ( methodCallback: ServerHandler ): RouteHandlerMethod => (req, reply) => { @@ -78,8 +75,7 @@ export default (fastify: FastifyInstance, options: FrourioOptions = {}) => { { schema: { response: responseSchema0.get - }, - validatorCompiler + } }, methodToHandler(controller0.get) ) diff --git a/servers/minimum/api/$relay.ts b/servers/minimum/api/$relay.ts index c04e5b3..72f7c87 100644 --- a/servers/minimum/api/$relay.ts +++ b/servers/minimum/api/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noMulter/$server.ts b/servers/noMulter/$server.ts index 1091e69..ad317d0 100644 --- a/servers/noMulter/$server.ts +++ b/servers/noMulter/$server.ts @@ -5,6 +5,7 @@ import type { ValidatorOptions } from 'class-validator' import { validateOrReject as defaultValidateOrReject } from 'class-validator' import * as Validators from './validators' import type { HttpStatusOk, AspidaMethodParams } from 'aspida' +import type { Schema } from 'fast-json-stringify' import type { z } from 'zod' import hooksFn0 from './api/hooks' import hooksFn1 from './api/users/hooks' @@ -18,11 +19,11 @@ import controllerFn5 from './api/users/_userId@number/controller' import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions } from 'fastify' export type FrourioOptions = { - basePath?: string | undefined - transformer?: ClassTransformOptions | undefined - validator?: ValidatorOptions | undefined - plainToInstance?: ((cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object) | undefined - validateOrReject?: ((instance: object, options: ValidatorOptions) => Promise) | undefined + basePath?: string + transformer?: ClassTransformOptions + validator?: ValidatorOptions + plainToInstance?: (cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object + validateOrReject?: (instance: object, options: ValidatorOptions) => Promise } type HttpStatusNoOk = 301 | 302 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 409 | 500 | 501 | 502 | 503 | 504 | 505 @@ -68,6 +69,7 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + schemas?: { response?: { [V in HttpStatusOk]?: Schema }} handler: ServerHandler | ServerHandlerPromise } diff --git a/servers/noMulter/api/$relay.ts b/servers/noMulter/api/$relay.ts index c04e5b3..72f7c87 100644 --- a/servers/noMulter/api/$relay.ts +++ b/servers/noMulter/api/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noMulter/api/empty/$relay.ts b/servers/noMulter/api/empty/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/noMulter/api/empty/$relay.ts +++ b/servers/noMulter/api/empty/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noMulter/api/empty/noEmpty/$relay.ts b/servers/noMulter/api/empty/noEmpty/$relay.ts index 3126769..9a64363 100644 --- a/servers/noMulter/api/empty/noEmpty/$relay.ts +++ b/servers/noMulter/api/empty/noEmpty/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noMulter/api/texts/$relay.ts b/servers/noMulter/api/texts/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/noMulter/api/texts/$relay.ts +++ b/servers/noMulter/api/texts/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noMulter/api/texts/sample/$relay.ts b/servers/noMulter/api/texts/sample/$relay.ts index 3126769..9a64363 100644 --- a/servers/noMulter/api/texts/sample/$relay.ts +++ b/servers/noMulter/api/texts/sample/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noMulter/api/users/$relay.ts b/servers/noMulter/api/users/$relay.ts index eb317e4..667289a 100644 --- a/servers/noMulter/api/users/$relay.ts +++ b/servers/noMulter/api/users/$relay.ts @@ -9,19 +9,19 @@ import type { Methods } from './' type AddedHandler = T extends (req: infer U, ...args: infer V) => infer W ? (req: U & Partial, ...args: V) => W : never type Hooks = { - onRequest?: AddedHandler | AddedHandler[] | undefined - preParsing?: AddedHandler | AddedHandler[] | undefined - preValidation?: AddedHandler | AddedHandler[] | undefined - preHandler?: AddedHandler | AddedHandler[] | undefined + onRequest?: AddedHandler | AddedHandler[] + preParsing?: AddedHandler | AddedHandler[] + preValidation?: AddedHandler | AddedHandler[] + preHandler?: AddedHandler | AddedHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -31,6 +31,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noMulter/api/users/_userId@number/$relay.ts b/servers/noMulter/api/users/_userId@number/$relay.ts index 6b04bb5..fd4add9 100644 --- a/servers/noMulter/api/users/_userId@number/$relay.ts +++ b/servers/noMulter/api/users/_userId@number/$relay.ts @@ -10,10 +10,10 @@ import type { Methods } from './' type AddedHandler = T extends (req: infer U, ...args: infer V) => infer W ? (req: U & Partial, ...args: V) => W : never type Hooks = { - onRequest?: AddedHandler | AddedHandler[] | undefined - preParsing?: AddedHandler | AddedHandler[] | undefined - preValidation?: AddedHandler | AddedHandler[] | undefined - preHandler?: AddedHandler | AddedHandler[] | undefined + onRequest?: AddedHandler | AddedHandler[] + preParsing?: AddedHandler | AddedHandler[] + preValidation?: AddedHandler | AddedHandler[] + preHandler?: AddedHandler | AddedHandler[] } type Params = { userId: number @@ -25,13 +25,13 @@ export function defineValidators(validator: (fastify: FastifyInstance) => { return validator } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -41,6 +41,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noTypedParams/$server.ts b/servers/noTypedParams/$server.ts index 9546e47..5d07732 100644 --- a/servers/noTypedParams/$server.ts +++ b/servers/noTypedParams/$server.ts @@ -8,6 +8,7 @@ import multipart from '@fastify/multipart' import * as Validators from './validators' import type { ReadStream } from 'fs' import type { HttpStatusOk, AspidaMethodParams } from 'aspida' +import type { Schema } from 'fast-json-stringify' import type { z } from 'zod' import hooksFn0 from './api/hooks' import hooksFn1 from './api/users/hooks' @@ -20,12 +21,12 @@ import controllerFn5, { hooks as ctrlHooksFn1 } from './api/users/controller' import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, RouteShorthandOptions } from 'fastify' export type FrourioOptions = { - basePath?: string | undefined - transformer?: ClassTransformOptions | undefined - validator?: ValidatorOptions | undefined - plainToInstance?: ((cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object) | undefined - validateOrReject?: ((instance: object, options: ValidatorOptions) => Promise) | undefined - multipart?: FastifyMultipartAttachFieldsToBodyOptions | undefined + basePath?: string + transformer?: ClassTransformOptions + validator?: ValidatorOptions + plainToInstance?: (cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object + validateOrReject?: (instance: object, options: ValidatorOptions) => Promise + multipart?: FastifyMultipartAttachFieldsToBodyOptions } type HttpStatusNoOk = 301 | 302 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 409 | 500 | 501 | 502 | 503 | 504 | 505 @@ -81,6 +82,7 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + schemas?: { response?: { [V in HttpStatusOk]?: Schema }} handler: ServerHandler | ServerHandlerPromise } diff --git a/servers/noTypedParams/api/$relay.ts b/servers/noTypedParams/api/$relay.ts index c04e5b3..72f7c87 100644 --- a/servers/noTypedParams/api/$relay.ts +++ b/servers/noTypedParams/api/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noTypedParams/api/empty/$relay.ts b/servers/noTypedParams/api/empty/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/noTypedParams/api/empty/$relay.ts +++ b/servers/noTypedParams/api/empty/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noTypedParams/api/empty/noEmpty/$relay.ts b/servers/noTypedParams/api/empty/noEmpty/$relay.ts index 3126769..9a64363 100644 --- a/servers/noTypedParams/api/empty/noEmpty/$relay.ts +++ b/servers/noTypedParams/api/empty/noEmpty/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noTypedParams/api/multiForm/$relay.ts b/servers/noTypedParams/api/multiForm/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/noTypedParams/api/multiForm/$relay.ts +++ b/servers/noTypedParams/api/multiForm/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noTypedParams/api/texts/$relay.ts b/servers/noTypedParams/api/texts/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/noTypedParams/api/texts/$relay.ts +++ b/servers/noTypedParams/api/texts/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noTypedParams/api/texts/sample/$relay.ts b/servers/noTypedParams/api/texts/sample/$relay.ts index 3126769..9a64363 100644 --- a/servers/noTypedParams/api/texts/sample/$relay.ts +++ b/servers/noTypedParams/api/texts/sample/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noTypedParams/api/users/$relay.ts b/servers/noTypedParams/api/users/$relay.ts index eb317e4..667289a 100644 --- a/servers/noTypedParams/api/users/$relay.ts +++ b/servers/noTypedParams/api/users/$relay.ts @@ -9,19 +9,19 @@ import type { Methods } from './' type AddedHandler = T extends (req: infer U, ...args: infer V) => infer W ? (req: U & Partial, ...args: V) => W : never type Hooks = { - onRequest?: AddedHandler | AddedHandler[] | undefined - preParsing?: AddedHandler | AddedHandler[] | undefined - preValidation?: AddedHandler | AddedHandler[] | undefined - preHandler?: AddedHandler | AddedHandler[] | undefined + onRequest?: AddedHandler | AddedHandler[] + preParsing?: AddedHandler | AddedHandler[] + preValidation?: AddedHandler | AddedHandler[] + preHandler?: AddedHandler | AddedHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -31,6 +31,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noValidator/$server.ts b/servers/noValidator/$server.ts index c4abc51..76ba94c 100644 --- a/servers/noValidator/$server.ts +++ b/servers/noValidator/$server.ts @@ -2,6 +2,7 @@ import type { FastifyMultipartAttachFieldsToBodyOptions, Multipart, MultipartFil import multipart from '@fastify/multipart' import type { ReadStream } from 'fs' import type { HttpStatusOk, AspidaMethodParams } from 'aspida' +import type { Schema } from 'fast-json-stringify' import type { z } from 'zod' import hooksFn0 from './api/hooks' import hooksFn1 from './api/users/hooks' @@ -16,8 +17,8 @@ import controllerFn6 from './api/users/_userId@number/controller' import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions } from 'fastify' export type FrourioOptions = { - basePath?: string | undefined - multipart?: FastifyMultipartAttachFieldsToBodyOptions | undefined + basePath?: string + multipart?: FastifyMultipartAttachFieldsToBodyOptions } type HttpStatusNoOk = 301 | 302 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 409 | 500 | 501 | 502 | 503 | 504 | 505 @@ -73,6 +74,7 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + schemas?: { response?: { [V in HttpStatusOk]?: Schema }} handler: ServerHandler | ServerHandlerPromise } diff --git a/servers/noValidator/api/$relay.ts b/servers/noValidator/api/$relay.ts index c04e5b3..72f7c87 100644 --- a/servers/noValidator/api/$relay.ts +++ b/servers/noValidator/api/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noValidator/api/empty/$relay.ts b/servers/noValidator/api/empty/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/noValidator/api/empty/$relay.ts +++ b/servers/noValidator/api/empty/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noValidator/api/empty/noEmpty/$relay.ts b/servers/noValidator/api/empty/noEmpty/$relay.ts index 3126769..9a64363 100644 --- a/servers/noValidator/api/empty/noEmpty/$relay.ts +++ b/servers/noValidator/api/empty/noEmpty/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noValidator/api/multiForm/$relay.ts b/servers/noValidator/api/multiForm/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/noValidator/api/multiForm/$relay.ts +++ b/servers/noValidator/api/multiForm/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noValidator/api/texts/$relay.ts b/servers/noValidator/api/texts/$relay.ts index 7e1fbcb..83f9f50 100644 --- a/servers/noValidator/api/texts/$relay.ts +++ b/servers/noValidator/api/texts/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noValidator/api/texts/sample/$relay.ts b/servers/noValidator/api/texts/sample/$relay.ts index 3126769..9a64363 100644 --- a/servers/noValidator/api/texts/sample/$relay.ts +++ b/servers/noValidator/api/texts/sample/$relay.ts @@ -7,19 +7,19 @@ import type { ServerMethodHandler } from '../../../$server' import type { Methods } from './' type Hooks = { - onRequest?: onRequestHookHandler | onRequestHookHandler[] | undefined - preParsing?: preParsingHookHandler | preParsingHookHandler[] | undefined - preValidation?: preValidationHookHandler | preValidationHookHandler[] | undefined - preHandler?: preHandlerHookHandler | preHandlerHookHandler[] | undefined + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -29,6 +29,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noValidator/api/users/$relay.ts b/servers/noValidator/api/users/$relay.ts index eb317e4..667289a 100644 --- a/servers/noValidator/api/users/$relay.ts +++ b/servers/noValidator/api/users/$relay.ts @@ -9,19 +9,19 @@ import type { Methods } from './' type AddedHandler = T extends (req: infer U, ...args: infer V) => infer W ? (req: U & Partial, ...args: V) => W : never type Hooks = { - onRequest?: AddedHandler | AddedHandler[] | undefined - preParsing?: AddedHandler | AddedHandler[] | undefined - preValidation?: AddedHandler | AddedHandler[] | undefined - preHandler?: AddedHandler | AddedHandler[] | undefined + onRequest?: AddedHandler | AddedHandler[] + preParsing?: AddedHandler | AddedHandler[] + preValidation?: AddedHandler | AddedHandler[] + preHandler?: AddedHandler | AddedHandler[] } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -31,6 +31,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/servers/noValidator/api/users/_userId@number/$relay.ts b/servers/noValidator/api/users/_userId@number/$relay.ts index 6b04bb5..fd4add9 100644 --- a/servers/noValidator/api/users/_userId@number/$relay.ts +++ b/servers/noValidator/api/users/_userId@number/$relay.ts @@ -10,10 +10,10 @@ import type { Methods } from './' type AddedHandler = T extends (req: infer U, ...args: infer V) => infer W ? (req: U & Partial, ...args: V) => W : never type Hooks = { - onRequest?: AddedHandler | AddedHandler[] | undefined - preParsing?: AddedHandler | AddedHandler[] | undefined - preValidation?: AddedHandler | AddedHandler[] | undefined - preHandler?: AddedHandler | AddedHandler[] | undefined + onRequest?: AddedHandler | AddedHandler[] + preParsing?: AddedHandler | AddedHandler[] + preValidation?: AddedHandler | AddedHandler[] + preHandler?: AddedHandler | AddedHandler[] } type Params = { userId: number @@ -25,13 +25,13 @@ export function defineValidators(validator: (fastify: FastifyInstance) => { return validator } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -41,6 +41,6 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } diff --git a/src/buildServerFile.ts b/src/buildServerFile.ts index 48b8b9e..6248105 100644 --- a/src/buildServerFile.ts +++ b/src/buildServerFile.ts @@ -32,6 +32,12 @@ export default (input: string, project?: string) => { checkRequisites({ hasValidator }) + if (controllers.includes('response: responseSchema')) { + console.warn( + `frourio: 'responseSchema' is deprecated. Specify schemas.response in controller instead.` + ) + } + if (hasValidator) { console.warn( `frourio: 'class-validator' is deprecated. Specify validators in controller instead.` @@ -65,6 +71,7 @@ export default (input: string, project?: string) => { return { text: `${headImports.join('\n')} +import type { Schema } from 'fast-json-stringify' import type { z } from 'zod' ${imports}import type { FastifyInstance, RouteHandlerMethod${ hasNumberTypeQuery || hasBooleanTypeQuery || hasTypedParams || hasValidator || hasMultipart @@ -75,15 +82,15 @@ ${imports}import type { FastifyInstance, RouteHandlerMethod${ }${hasRouteShorthandOptions ? ', RouteShorthandOptions' : ''} } from 'fastify' export type FrourioOptions = { - basePath?: string | undefined + basePath?: string ${ hasValidator - ? ' transformer?: ClassTransformOptions | undefined\n' + - ' validator?: ValidatorOptions | undefined\n' + - ' plainToInstance?: ((cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object) | undefined\n' + - ' validateOrReject?: ((instance: object, options: ValidatorOptions) => Promise) | undefined\n' + ? ' transformer?: ClassTransformOptions\n' + + ' validator?: ValidatorOptions\n' + + ' plainToInstance?: (cls: new (...args: any[]) => object, object: unknown, options: ClassTransformOptions) => object\n' + + ' validateOrReject?: (instance: object, options: ValidatorOptions) => Promise\n' : '' -}${hasMultipart ? ' multipart?: FastifyMultipartAttachFieldsToBodyOptions | undefined\n' : ''}} +}${hasMultipart ? ' multipart?: FastifyMultipartAttachFieldsToBodyOptions\n' : ''}} type HttpStatusNoOk = 301 | 302 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 409 | 500 | 501 | 502 | 503 | 504 | 505 @@ -142,6 +149,7 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + schemas?: { response?: { [V in HttpStatusOk]?: Schema }} handler: ServerHandler | ServerHandlerPromise } ${ diff --git a/src/createControllersText.ts b/src/createControllersText.ts index cb3eeeb..5c905b4 100644 --- a/src/createControllersText.ts +++ b/src/createControllersText.ts @@ -100,8 +100,8 @@ ${[ ] .map(([key, val]) => hasAdditionals - ? ` ${key}?: AddedHandler<${val}> | AddedHandler<${val}>[] | undefined\n` - : ` ${key}?: ${val} | ${val}[] | undefined\n` + ? ` ${key}?: AddedHandler<${val}> | AddedHandler<${val}>[]\n` + : ` ${key}?: ${val} | ${val}[]\n` ) .join('')}}${ params.length ? `\ntype Params = {\n${params.map(v => ` ${v[0]}: ${v[1]}`).join('\n')}\n}` : '' @@ -117,13 +117,13 @@ export function defineValidators(validator: (fastify: FastifyInstance) => { : '' } -export function defineResponseSchema(methods: () => T) { +export function defineResponseSchema(methods: () => T) { return methods } export function defineHooks(hooks: (fastify: FastifyInstance) => T): (fastify: FastifyInstance) => T export function defineHooks, U extends Hooks>(deps: T, cb: (d: T, fastify: FastifyInstance) => U): Injectable -export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks) | undefined) { +export function defineHooks>(hooks: (fastify: FastifyInstance) => Hooks | T, cb?: ((deps: T, fastify: FastifyInstance) => Hooks)) { return cb && typeof hooks !== 'function' ? depend(hooks, cb) : hooks } @@ -137,7 +137,7 @@ type ServerMethods = { export function defineController(methods: (fastify: FastifyInstance) => M): (fastify: FastifyInstance) => M export function defineController>(deps: T, cb: (d: T, fastify: FastifyInstance) => M): Injectable -export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M) | undefined) { +export function defineController>(methods: ((fastify: FastifyInstance) => M) | T, cb?: ((deps: T, fastify: FastifyInstance) => M)) { return cb && typeof methods !== 'function' ? depend(methods, cb) : methods } ` @@ -293,6 +293,7 @@ export default (appDir: string, project: string) => { const isPromiseMethods: string[] = [] const hasHandlerMethods: string[] = [] const hasValidatorMethods: string[] = [] + const hasSchemaMethods: string[] = [] let ctrlHooksSignature: ts.Signature | undefined let resSchemaSignature: ts.Signature | undefined @@ -367,6 +368,15 @@ export default (appDir: string, project: string) => { ) ) + hasSchemaMethods.push( + ...getMethodTypeNodes((symbol, typeNode, type) => + !ts.isFunctionTypeNode(typeNode) && + type.getProperties().find(p => p.name === 'schemas') + ? symbol.name + : null + ) + ) + let ctrlHooksNode: ts.VariableDeclaration | ts.ExportSpecifier | undefined let resSchemaNode: ts.VariableDeclaration | ts.ExportSpecifier | undefined @@ -609,6 +619,9 @@ ${validateInfo const validatorsText = hasValidatorMethods.includes(m.name) ? `...validatorsToSchema(controller${controllers.length}.${m.name}.validators)` : null + const schemasText = hasSchemaMethods.includes(m.name) + ? `...controller${controllers.length}.${m.name}.schemas` + : null const paramsValidatorsText = paramsValidators.length ? `params: ${paramsValidators .map( @@ -621,16 +634,23 @@ ${validateInfo ? genResSchemaText(m.name as LowerHttpMethod) : null const vals = [ - ...(validatorsText && !resSchemaText && !paramsValidatorsText - ? [`schema: ${validatorsText.slice(3)}`, 'validatorCompiler'] - : validatorsText || resSchemaText || paramsValidatorsText + ...(validatorsText && !schemasText && !resSchemaText && !paramsValidatorsText + ? [`schema: ${validatorsText.slice(3)}`] + : schemasText && !validatorsText && !resSchemaText && !paramsValidatorsText + ? [`schema: ${schemasText.slice(3)}`] + : validatorsText || schemasText || resSchemaText || paramsValidatorsText ? [ - `schema: {\n ${[validatorsText, resSchemaText, paramsValidatorsText] + `schema: {\n ${[ + validatorsText, + schemasText, + resSchemaText, + paramsValidatorsText + ] .filter(Boolean) - .join(',\n ')}\n }`, - 'validatorCompiler' + .join(',\n ')}\n }` ] : []), + ...(validatorsText || paramsValidatorsText ? ['validatorCompiler'] : []), ...hooksTexts ] return vals.length > 0 From 9b5105a4a72a6987873f931ef4255dec069fc3f1 Mon Sep 17 00:00:00 2001 From: solufa Date: Thu, 24 Nov 2022 10:43:15 +0900 Subject: [PATCH 3/5] feat: add hooks to controller --- servers/all/$server.ts | 14 ++++-- servers/all/api/controller.ts | 7 +++ servers/minimum/$server.ts | 8 +++- servers/noMulter/$server.ts | 8 +++- servers/noTypedParams/$server.ts | 8 +++- servers/noValidator/$server.ts | 8 +++- src/buildServerFile.ts | 26 +++++++---- src/createControllersText.ts | 78 ++++++++++++++++++++++++++------ 8 files changed, 128 insertions(+), 29 deletions(-) diff --git a/servers/all/$server.ts b/servers/all/$server.ts index 9599788..92d145c 100644 --- a/servers/all/$server.ts +++ b/servers/all/$server.ts @@ -27,7 +27,7 @@ import controllerFn6 from './api/texts/_label@string/controller' import controllerFn7, { hooks as ctrlHooksFn1 } from './api/users/controller' import controllerFn8 from './api/users/_userId@number/controller' import controllerFn9 from './api/users/_userId@number/_name/controller' -import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions } from 'fastify' +import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions, onRequestHookHandler, preParsingHookHandler, preHandlerHookHandler } from 'fastify' export type FrourioOptions = { basePath?: string @@ -92,6 +92,12 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> schemas?: { response?: { [V in HttpStatusOk]?: Schema }} + hooks?: { + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] + } handler: ServerHandler | ServerHandlerPromise } @@ -330,8 +336,10 @@ export default (fastify: FastifyInstance, options: FrourioOptions = {}) => { preParsing: hooks0.preParsing, preValidation: [ parseNumberTypeQueryParams([['requiredNum', false, false], ['optionalNum', true, false], ['optionalNumArr', true, true], ['emptyNum', true, false], ['requiredNumArr', false, true]]), - parseBooleanTypeQueryParams([['bool', false, false], ['optionalBool', true, false], ['boolArray', false, true], ['optionalBoolArray', true, true]]) - ] + parseBooleanTypeQueryParams([['bool', false, false], ['optionalBool', true, false], ['boolArray', false, true], ['optionalBoolArray', true, true]]), + ...controller0.put.hooks.preValidation + ], + preHandler: controller0.put.hooks.preHandler }, methodToHandler(controller0.put.handler) ) diff --git a/servers/all/api/controller.ts b/servers/all/api/controller.ts index 21fbc83..0dba76c 100644 --- a/servers/all/api/controller.ts +++ b/servers/all/api/controller.ts @@ -68,6 +68,13 @@ export default defineController( } } }, + hooks: { + preValidation: [], + preHandler: (req, _, done) => { + console.log(req.method) + done() + } + }, handler: v => ({ status: 201, body: { id: +v.query.id, port: v.body.port } diff --git a/servers/minimum/$server.ts b/servers/minimum/$server.ts index f1b34e5..18863f0 100644 --- a/servers/minimum/$server.ts +++ b/servers/minimum/$server.ts @@ -2,7 +2,7 @@ import type { HttpStatusOk, AspidaMethodParams } from 'aspida' import type { Schema } from 'fast-json-stringify' import type { z } from 'zod' import controllerFn0, { responseSchema as responseSchemaFn0 } from './api/controller' -import type { FastifyInstance, RouteHandlerMethod } from 'fastify' +import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, onRequestHookHandler, preParsingHookHandler, preHandlerHookHandler } from 'fastify' export type FrourioOptions = { basePath?: string @@ -52,6 +52,12 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> schemas?: { response?: { [V in HttpStatusOk]?: Schema }} + hooks?: { + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] + } handler: ServerHandler | ServerHandlerPromise } diff --git a/servers/noMulter/$server.ts b/servers/noMulter/$server.ts index ad317d0..bf3bf42 100644 --- a/servers/noMulter/$server.ts +++ b/servers/noMulter/$server.ts @@ -16,7 +16,7 @@ import controllerFn2 from './api/texts/controller' import controllerFn3 from './api/texts/sample/controller' import controllerFn4, { hooks as ctrlHooksFn1 } from './api/users/controller' import controllerFn5 from './api/users/_userId@number/controller' -import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions } from 'fastify' +import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions, onRequestHookHandler, preParsingHookHandler, preHandlerHookHandler } from 'fastify' export type FrourioOptions = { basePath?: string @@ -70,6 +70,12 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> schemas?: { response?: { [V in HttpStatusOk]?: Schema }} + hooks?: { + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] + } handler: ServerHandler | ServerHandlerPromise } diff --git a/servers/noTypedParams/$server.ts b/servers/noTypedParams/$server.ts index 5d07732..a8045f5 100644 --- a/servers/noTypedParams/$server.ts +++ b/servers/noTypedParams/$server.ts @@ -18,7 +18,7 @@ import controllerFn2 from './api/multiForm/controller' import controllerFn3 from './api/texts/controller' import controllerFn4 from './api/texts/sample/controller' import controllerFn5, { hooks as ctrlHooksFn1 } from './api/users/controller' -import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, RouteShorthandOptions } from 'fastify' +import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifyRequest, RouteShorthandOptions, onRequestHookHandler, preParsingHookHandler, preHandlerHookHandler } from 'fastify' export type FrourioOptions = { basePath?: string @@ -83,6 +83,12 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> schemas?: { response?: { [V in HttpStatusOk]?: Schema }} + hooks?: { + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] + } handler: ServerHandler | ServerHandlerPromise } diff --git a/servers/noValidator/$server.ts b/servers/noValidator/$server.ts index 76ba94c..2082b43 100644 --- a/servers/noValidator/$server.ts +++ b/servers/noValidator/$server.ts @@ -14,7 +14,7 @@ import controllerFn3 from './api/texts/controller' import controllerFn4 from './api/texts/sample/controller' import controllerFn5, { hooks as ctrlHooksFn1 } from './api/users/controller' import controllerFn6 from './api/users/_userId@number/controller' -import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions } from 'fastify' +import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler, FastifySchema, FastifySchemaCompiler, RouteShorthandOptions, onRequestHookHandler, preParsingHookHandler, preHandlerHookHandler } from 'fastify' export type FrourioOptions = { basePath?: string @@ -75,6 +75,12 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> schemas?: { response?: { [V in HttpStatusOk]?: Schema }} + hooks?: { + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] + } handler: ServerHandler | ServerHandlerPromise } diff --git a/src/buildServerFile.ts b/src/buildServerFile.ts index 6248105..73b78f0 100644 --- a/src/buildServerFile.ts +++ b/src/buildServerFile.ts @@ -38,9 +38,15 @@ export default (input: string, project?: string) => { ) } + if (controllers.includes('ctrlHooks0.')) { + console.warn( + `frourio: 'defineHooks in controller.ts' is deprecated. Specify hooks in controller instead.` + ) + } + if (hasValidator) { console.warn( - `frourio: 'class-validator' is deprecated. Specify validators in controller instead.` + `frourio: 'class-validator' is deprecated. Specify validators in controller instead. ref: https://frourio.com/docs/reference/validation/zod` ) headImports.push( @@ -73,13 +79,11 @@ export default (input: string, project?: string) => { text: `${headImports.join('\n')} import type { Schema } from 'fast-json-stringify' import type { z } from 'zod' -${imports}import type { FastifyInstance, RouteHandlerMethod${ - hasNumberTypeQuery || hasBooleanTypeQuery || hasTypedParams || hasValidator || hasMultipart - ? ', preValidationHookHandler' - : '' - }${hasValidator ? ', FastifyRequest' : ''}${ - hasValidatorCompiler ? ', FastifySchema, FastifySchemaCompiler' : '' - }${hasRouteShorthandOptions ? ', RouteShorthandOptions' : ''} } from 'fastify' +${imports}import type { FastifyInstance, RouteHandlerMethod, preValidationHookHandler${ + hasValidator ? ', FastifyRequest' : '' + }${hasValidatorCompiler ? ', FastifySchema, FastifySchemaCompiler' : ''}${ + hasRouteShorthandOptions ? ', RouteShorthandOptions' : '' + }, onRequestHookHandler, preParsingHookHandler, preHandlerHookHandler } from 'fastify' export type FrourioOptions = { basePath?: string @@ -150,6 +154,12 @@ type ServerHandlerPromise = {}> = ServerHandler | ServerHandlerPromise | { validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> schemas?: { response?: { [V in HttpStatusOk]?: Schema }} + hooks?: { + onRequest?: onRequestHookHandler | onRequestHookHandler[] + preParsing?: preParsingHookHandler | preParsingHookHandler[] + preValidation?: preValidationHookHandler | preValidationHookHandler[] + preHandler?: preHandlerHookHandler | preHandlerHookHandler[] + } handler: ServerHandler | ServerHandlerPromise } ${ diff --git a/src/createControllersText.ts b/src/createControllersText.ts index 5c905b4..e4b8e92 100644 --- a/src/createControllersText.ts +++ b/src/createControllersText.ts @@ -292,15 +292,19 @@ export default (appDir: string, project: string) => { const controllerSource = program.getSourceFile(path.join(input, 'controller.ts')) const isPromiseMethods: string[] = [] const hasHandlerMethods: string[] = [] - const hasValidatorMethods: string[] = [] - const hasSchemaMethods: string[] = [] + const hasValidatorsMethods: string[] = [] + const hasSchemasMethods: string[] = [] + const hasHooksMethods: { + method: string + events: { type: HooksEvent; isArray: boolean }[] + }[] = [] let ctrlHooksSignature: ts.Signature | undefined let resSchemaSignature: ts.Signature | undefined if (controllerSource) { - const getMethodTypeNodes = ( - cb: (symbol: ts.Symbol, typeNode: ts.TypeNode, type: ts.Type) => string | null - ): string[] => + const getMethodTypeNodes = ( + cb: (symbol: ts.Symbol, typeNode: ts.TypeNode, type: ts.Type) => T | null + ): T[] => ts.forEachChild( controllerSource, node => @@ -327,7 +331,7 @@ export default (appDir: string, project: string) => { return cb(t, typeNode, type) }) - .filter((n): n is string => !!n) + .filter((n): n is T => !!n) ) ) || [] @@ -359,7 +363,7 @@ export default (appDir: string, project: string) => { ) ) - hasValidatorMethods.push( + hasValidatorsMethods.push( ...getMethodTypeNodes((symbol, typeNode, type) => !ts.isFunctionTypeNode(typeNode) && type.getProperties().find(p => p.name === 'validators') @@ -368,7 +372,7 @@ export default (appDir: string, project: string) => { ) ) - hasSchemaMethods.push( + hasSchemasMethods.push( ...getMethodTypeNodes((symbol, typeNode, type) => !ts.isFunctionTypeNode(typeNode) && type.getProperties().find(p => p.name === 'schemas') @@ -377,6 +381,39 @@ export default (appDir: string, project: string) => { ) ) + hasHooksMethods.push( + ...getMethodTypeNodes((symbol, typeNode, type) => { + if (ts.isFunctionTypeNode(typeNode)) return null + + const hooksSymbol = type.getProperties().find(p => p.name === 'hooks') + + if (!hooksSymbol?.valueDeclaration) return null + + return { + method: symbol.name, + events: checker + .getTypeOfSymbolAtLocation(hooksSymbol, hooksSymbol.valueDeclaration) + .getProperties() + .map(p => { + const typeNode = + p.valueDeclaration && + checker.typeToTypeNode( + checker.getTypeOfSymbolAtLocation(p, p.valueDeclaration), + undefined, + undefined + ) + + return { + type: p.name as HooksEvent, + isArray: typeNode + ? ts.isArrayTypeNode(typeNode) || ts.isTupleTypeNode(typeNode) + : false + } + }) + } + }) + ) + let ctrlHooksNode: ts.VariableDeclaration | ts.ExportSpecifier | undefined let resSchemaNode: ts.VariableDeclaration | ts.ExportSpecifier | undefined @@ -439,7 +476,7 @@ export default (appDir: string, project: string) => { } }) - const genHookTexts = (event: HooksEvent) => [ + const genHookTexts = (event: HooksEvent, methodName: string) => [ ...hooks.reduce((prev, h) => { const ev = h.events.find(e => e.type === event) return ev ? [...prev, `${ev.isArray ? '...' : ''}${h.name}.${event}`] : prev @@ -448,7 +485,20 @@ export default (appDir: string, project: string) => { e.type === event ? `${e.isArray ? '...' : ''}ctrlHooks${controllers.filter(c => c[1]).length}.${event}` : '' - ) ?? []) + ) ?? []), + ...(hasHooksMethods.some( + m => m.method === methodName && m.events.some(e => e.type === event) + ) + ? [ + `${ + hasHooksMethods + .find(m => m.method === methodName) + ?.events.find(e => e.type === event)?.isArray + ? '...' + : '' + }controller${controllers.length}.${methodName}.hooks.${event}` + ] + : []) ] const resSchemaMethods = resSchemaSignature @@ -556,7 +606,7 @@ export default (appDir: string, project: string) => { .filter(Boolean) .join(', ')}])` : '', - ...genHookTexts('preValidation'), + ...genHookTexts('preValidation', m.name), ...(query && [...(numberTypeQueryParams ?? []), ...(booleanTypeQueryParams ?? [])].some( t => t?.endsWith('true]') @@ -596,7 +646,7 @@ ${validateInfo : '' } - const texts = genHookTexts(key).filter(Boolean) + const texts = genHookTexts(key, m.name).filter(Boolean) return texts.length ? `${key}: ${ texts.length === 1 ? texts[0].replace('...', '') : `[${texts.join(', ')}]` @@ -616,10 +666,10 @@ ${validateInfo .replace(/@.+?($|\/)/g, '$1')}\`` : "basePath || '/'" },${(() => { - const validatorsText = hasValidatorMethods.includes(m.name) + const validatorsText = hasValidatorsMethods.includes(m.name) ? `...validatorsToSchema(controller${controllers.length}.${m.name}.validators)` : null - const schemasText = hasSchemaMethods.includes(m.name) + const schemasText = hasSchemasMethods.includes(m.name) ? `...controller${controllers.length}.${m.name}.schemas` : null const paramsValidatorsText = paramsValidators.length From b0bb8c04b06542eaaaf0f30e40de6a94224e877f Mon Sep 17 00:00:00 2001 From: solufa Date: Thu, 24 Nov 2022 17:19:37 +0900 Subject: [PATCH 4/5] chore: remove nodejs v18 --- .github/workflows/nodejs.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index a6f149a..28cb5d9 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -8,11 +8,11 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [14, 16, 18] + node-version: [14, 16] os: [ubuntu-latest] include: - os: windows-latest - node-version: 18 + node-version: 16 steps: - uses: actions/checkout@v2 - name: setup Node.js ${{ matrix.node-version }} @@ -31,7 +31,7 @@ jobs: - run: yarn typecheck - run: yarn test --coverage - run: npx codecov - if: github.ref == 'refs/heads/main' && matrix.os == 'ubuntu-latest' && matrix.node-version == 14 + if: github.ref == 'refs/heads/main' && matrix.os == 'ubuntu-latest' && matrix.node-version == 16 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} @@ -44,13 +44,13 @@ jobs: - name: Use Node.js uses: actions/setup-node@v1 with: - node-version: 18 + node-version: 16 registry-url: "https://registry.npmjs.org" - uses: actions/cache@v2 id: yarn-cache with: path: "node_modules" - key: ${{ runner.os }}-node-v18-yarn-${{ hashFiles('yarn.lock') }} + key: ${{ runner.os }}-node-v16-yarn-${{ hashFiles('yarn.lock') }} - run: yarn --frozen-lockfile if: steps.yarn-cache.outputs.cache-hit != 'true' - run: yarn build From 4ac03cfbccd8addf7011d7ccde789bfa0bc92437 Mon Sep 17 00:00:00 2001 From: solufa Date: Thu, 24 Nov 2022 18:02:59 +0900 Subject: [PATCH 5/5] chore: update CHANGELOG --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b8b5ef3..357fc14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [0.31.0](https://github.com/frouriojs/frourio/compare/v0.30.2...v0.31.0) (2022-11-24) + +### Features + +- add response schema and hooks to controller (https://github.com/frouriojs/frourio/pull/262) + ## [0.30.2](https://github.com/frouriojs/frourio/compare/v0.30.1...v0.30.2) (2022-11-24) ### Bug Fixes