diff --git a/.gitignore b/.gitignore index a0f19a9ae..cf2ddb07d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # compiled output -/dist -/node_modules +dist +node_modules data # Logs logs @@ -51,4 +51,8 @@ dump.rdb tmp #eslint -.eslintcache \ No newline at end of file +.eslintcache + +#nestia +lib +/api-client \ No newline at end of file diff --git a/apps/config-service/src/config-service.service.ts b/apps/config-service/src/config-service.service.ts index 6a24d8d38..d22cc5698 100644 --- a/apps/config-service/src/config-service.service.ts +++ b/apps/config-service/src/config-service.service.ts @@ -18,6 +18,7 @@ import { DefaultConfigs } from './config.default'; import { ConfigsInterface, ConfigsInterfaceKeys } from './config.interface'; import { ConfigModel } from './config.model'; import * as configDto from './config.dto'; +import { sleep } from 'zx-cjs'; const allOptionKeys: Set = new Set(); const map: Record = Object.entries(configDto).reduce( diff --git a/apps/core/src/app.controller.ts b/apps/core/src/app.controller.ts index 5d63d763b..304757523 100644 --- a/apps/core/src/app.controller.ts +++ b/apps/core/src/app.controller.ts @@ -1,14 +1,7 @@ import { - Body, Controller, - Delete, Get, Inject, - Param, - Patch, - Post, - Put, - Query, } from '@nestjs/common'; import { AppService } from './app.service'; import PKG from '../../../package.json'; @@ -55,45 +48,45 @@ export class AppController { ); } - @Get('/*') - @ApiOperation({ summary: '自定义 Path (GET)' }) - async customGetPath(@Query() query: any, @Param() param: any) { - return this.appService.transformCustomPath('GET', query, param); - } + // @Get('/*') + // @ApiOperation({ summary: '自定义 Path (GET)' }) + // async customGetPath(@Query() query: any, @Param() param: any) { + // return this.appService.transformCustomPath('GET', query, param); + // } - @Post('/*') - @ApiOperation({ summary: '自定义 Path (POST)' }) - async customPostPath( - @Query() query: any, - @Param() param: any, - @Body() body: any, - ) { - return this.appService.transformCustomPath('POST', query, param, body); - } + // @Post('/*') + // @ApiOperation({ summary: '自定义 Path (POST)' }) + // async customPostPath( + // @Query() query: any, + // @Param() param: any, + // @Body() body: any, + // ) { + // return this.appService.transformCustomPath('POST', query, param, body); + // } - @Put('/*') - @ApiOperation({ summary: '自定义 Path (PUT)' }) - async customPutPath( - @Query() query: any, - @Param() param: any, - @Body() body: any, - ) { - return this.appService.transformCustomPath('PUT', query, param, body); - } + // @Put('/*') + // @ApiOperation({ summary: '自定义 Path (PUT)' }) + // async customPutPath( + // @Query() query: any, + // @Param() param: any, + // @Body() body: any, + // ) { + // return this.appService.transformCustomPath('PUT', query, param, body); + // } - @Patch('/*') - @ApiOperation({ summary: '自定义 Path (PATCH)' }) - async customPatchPath( - @Query() query: any, - @Param() param: any, - @Body() body: any, - ) { - return this.appService.transformCustomPath('PATCH', query, param, body); - } + // @Patch('/*') + // @ApiOperation({ summary: '自定义 Path (PATCH)' }) + // async customPatchPath( + // @Query() query: any, + // @Param() param: any, + // @Body() body: any, + // ) { + // return this.appService.transformCustomPath('PATCH', query, param, body); + // } - @Delete('/*') - @ApiOperation({ summary: '自定义 Path (DELETE)' }) - async customDeletePath(@Query() query: any, @Param() param: any) { - return this.appService.transformCustomPath('DELETE', query, param); - } + // @Delete('/*') + // @ApiOperation({ summary: '自定义 Path (DELETE)' }) + // async customDeletePath(@Query() query: any, @Param() param: any) { + // return this.appService.transformCustomPath('DELETE', query, param); + // } } diff --git a/apps/core/src/app.service.ts b/apps/core/src/app.service.ts index c0219089c..c9395898f 100644 --- a/apps/core/src/app.service.ts +++ b/apps/core/src/app.service.ts @@ -4,7 +4,7 @@ import { join } from 'path'; import { cwd } from '@shared/global/env.global'; import { ServicesEnum } from '~/shared/constants/services.constant'; import { readFileSync } from 'fs'; -import { YAML } from 'zx-cjs'; +import { YAML, fs } from 'zx-cjs'; import { transportReqToMicroservice } from '~/shared/microservice.transporter'; interface IEventConfigItem { diff --git a/apps/core/src/bootstrap.ts b/apps/core/src/bootstrap.ts index 013ae49ac..d6f8f3c95 100644 --- a/apps/core/src/bootstrap.ts +++ b/apps/core/src/bootstrap.ts @@ -18,6 +18,7 @@ import { isDev } from '@shared/global/env.global'; import { consola } from '~/shared/global/consola.global'; import { getEnv } from '~/shared/utils/rag-env'; import { ServicesEnum } from '~/shared/constants/services.constant'; +import { argv, chalk } from 'zx-cjs'; const Origin = CROSS_DOMAIN.allowedOrigins; diff --git a/apps/core/src/modules/aggregate/aggregate.controller.ts b/apps/core/src/modules/aggregate/aggregate.controller.ts index 7fdff5511..aa964a304 100644 --- a/apps/core/src/modules/aggregate/aggregate.controller.ts +++ b/apps/core/src/modules/aggregate/aggregate.controller.ts @@ -34,7 +34,11 @@ export class AggregateController { @ApiOperation({ summary: '获取概要' }) @CacheKey(CacheKeys.AggregateCatch) @CacheTTL(300) - async aggregate() { + async aggregate(): Promise<{ + categories: any; + pageMeta: any; + site: any; + }> { const tasks = await Promise.allSettled([ // this.configService.getMaster(), this.aggregateService.getAllCategory(), @@ -70,7 +74,12 @@ export class AggregateController { @ApiOperation({ summary: '获取网站sitemap' }) @CacheKey(CacheKeys.SiteMapCatch) @CacheTTL(3600) - async getSiteMapContent() { + async getSiteMapContent(): Promise<{ + data: { + url: URL; + published_at: Date; + }[]; + }> { return { data: await this.aggregateService.getSiteMapContent() }; } @@ -84,8 +93,12 @@ export class AggregateController { @Get('/stat') @ApiOperation({ summary: '获取网站统计信息' }) - // @Auth() - async stat() { + @Auth() + async stat(): Promise<{ + posts: number; + pages: number; + categories: number; + }> { const [count] = await Promise.all([this.aggregateService.getCounts()]); return { ...count, diff --git a/apps/core/src/modules/auth/auth.controller.ts b/apps/core/src/modules/auth/auth.controller.ts index 87b9ef140..dedb450be 100644 --- a/apps/core/src/modules/auth/auth.controller.ts +++ b/apps/core/src/modules/auth/auth.controller.ts @@ -17,8 +17,6 @@ import { Query, } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; - -import { MongoIdDto } from '~/shared/dto/id.dto'; import { AuthService } from '~/libs/auth/src'; import { Auth } from '~/shared/common/decorator/auth.decorator'; import { ApiName } from '~/shared/common/decorator/openapi.decorator'; @@ -54,7 +52,11 @@ export class AuthController { @Post('token') @Auth() - async generateToken(@Body() body: TokenDto) { + async generateToken(@Body() body: TokenDto): Promise<{ + expired: Date | undefined; + token: string; + name: string; + }> { const { expired, name } = body; const token = await this.authService.generateAccessToken(); const model = { @@ -67,8 +69,7 @@ export class AuthController { } @Delete('token') @Auth() - async deleteToken(@Query() query: MongoIdDto) { - const { id } = query; + async deleteToken(@Query('id') id: string) { const token = await this.authService .getAllAccessToken() .then((models) => diff --git a/apps/core/src/modules/category/category.controller.ts b/apps/core/src/modules/category/category.controller.ts index 648901ffa..43da1bc43 100644 --- a/apps/core/src/modules/category/category.controller.ts +++ b/apps/core/src/modules/category/category.controller.ts @@ -26,7 +26,6 @@ import { ApiBody, ApiOperation, ApiParam, ApiQuery } from '@nestjs/swagger'; import { MultiCategoriesQueryDto, MultiQueryTagAndCategoryDto, - SlugorIdDto, } from '~/apps/page-service/src/dto/category.dto'; import { CategoryModel, @@ -38,7 +37,6 @@ import { Auth } from '~/shared/common/decorator/auth.decorator'; import { ApiName } from '~/shared/common/decorator/openapi.decorator'; import { CategoryEvents } from '~/shared/constants/event.constant'; import { ServicesEnum } from '~/shared/constants/services.constant'; -import { MongoIdDto } from '~/shared/dto/id.dto'; import { transportReqToMicroservice } from '~/shared/microservice.transporter'; @Controller('category') @@ -87,9 +85,10 @@ export class CategoryController { required: false, // 是否必填 }) async getCategoryByCategoryIdOrTag( - @Param() { query }: SlugorIdDto, - @Query() { tag }: MultiQueryTagAndCategoryDto, // 如果这个是标签,则tag为true,如果是分类,则tag为分类id + @Query() _query: MultiQueryTagAndCategoryDto, // 如果这个是标签,则tag为true,如果是分类,则tag为分类id + @Param("query") query: string, ) { + const { tag } = _query; return transportReqToMicroservice< | { isTag: boolean; @@ -104,7 +103,7 @@ export class CategoryController { }; isTag: boolean; } - >(this.category, CategoryEvents.CategoryGet, { _query: query, _tag: tag }); + >(this.category, CategoryEvents.CategoryGet, { query, _tag: tag }); } @Post('/') @@ -134,7 +133,7 @@ export class CategoryController { @ApiParam({ name: 'id', description: '分类id' }) @ApiBody({ description: '分类信息', type: CategoryModel }) async update( - @Param() { id }: MongoIdDto, + @Param("id") id: string, @Body() { type, slug, name }: CategoryModel, ) { const send = { @@ -152,11 +151,11 @@ export class CategoryController { @ApiOperation({ summary: '更新分类' }) @Auth() @HttpCode(204) - async patch(@Param() params: MongoIdDto, @Body() body: PartialCategoryModel) { + async patch(@Param("id") id: string, @Body() body: PartialCategoryModel) { return transportReqToMicroservice( this.category, CategoryEvents.CategoryPatch, - { _id: params.id, _data: body }, + { _id: id, _data: body }, ); } @@ -164,7 +163,7 @@ export class CategoryController { @ApiOperation({ summary: '删除分类' }) @Auth() @ApiParam({ name: 'id', description: '分类id' }) - async deleteCategory(@Param() { id }: MongoIdDto) { + async deleteCategory(@Param("id") id: string) { return transportReqToMicroservice( this.category, CategoryEvents.CategoryDelete, diff --git a/apps/core/src/modules/console/console.controller.ts b/apps/core/src/modules/console/console.controller.ts index 5d76e192f..6a403eb93 100644 --- a/apps/core/src/modules/console/console.controller.ts +++ b/apps/core/src/modules/console/console.controller.ts @@ -15,7 +15,7 @@ export class ConsoleController { return true; } - @Get(['/*', '/']) + // @Get(['/*', '/']) async console(@Res() res: FastifyReply, @Req() req: FastifyRequest) { const path = req.url .replace('/console', '') diff --git a/apps/core/src/modules/friends/friends.controller.ts b/apps/core/src/modules/friends/friends.controller.ts index 93238df1c..6c9c6b39f 100644 --- a/apps/core/src/modules/friends/friends.controller.ts +++ b/apps/core/src/modules/friends/friends.controller.ts @@ -101,12 +101,12 @@ export class FriendsController { @ApiOperation({ summary: '更新友链' }) async updateFriendStatus( @Param('id') id: string, - @Body('status') status: FriendStatus, + @Body() body: { status: FriendStatus }, ) { return transportReqToMicroservice( this.friends, FriendsEvents.FriendPatchStatusByMaster, - { id, status }, + { id, status: body.status }, ); } @@ -114,7 +114,7 @@ export class FriendsController { @ApiOperation({ summary: '删除友链' }) async deleteFriend( @Param('id') id: string, - @Body('token') token: string, + @Body() { token }: { token?: string }, @IsMaster() isMaster: boolean, ) { return transportReqToMicroservice( diff --git a/apps/core/src/modules/migrate/migrate.controller.ts b/apps/core/src/modules/migrate/migrate.controller.ts index 1e3b8766d..1b8a45fcd 100644 --- a/apps/core/src/modules/migrate/migrate.controller.ts +++ b/apps/core/src/modules/migrate/migrate.controller.ts @@ -3,6 +3,8 @@ import { ApiOperation } from '@nestjs/swagger'; import { MigrateService } from './migrate.service'; import { MigrateData } from './migrate.interface'; import { ApiName } from '~/shared/common/decorator/openapi.decorator'; +import { Auth } from '~/shared/common/decorator/auth.decorator'; +import { CategoryModel } from '~/apps/page-service/src/model/category.model'; @Controller('migrate') @ApiName @@ -10,16 +12,28 @@ export class MigrateController { constructor(private readonly migrateService: MigrateService) {} @Post('import') - // @Auth() + @Auth() @ApiOperation({ summary: '使用 JSON 导入数据' }) - async import(@Body() body: MigrateData) { + async import(@Body() body: MigrateData): Promise<{ + user: any; + friends: any; + pages: any; + categories: never[] | CategoryModel[]; + posts: any; + comments: + | never[] + | { + postError: string[]; + parentError: string[]; + }; + }> { return await this.migrateService.import(body); } @Get('export') - // @Auth() + @Auth() @ApiOperation({ summary: '导出数据为 JSON' }) - async export() { + async export(): Promise { return await this.migrateService.export(); } } diff --git a/apps/core/src/modules/page/page.controller.ts b/apps/core/src/modules/page/page.controller.ts index 91ed2b0d8..c6df77c2d 100644 --- a/apps/core/src/modules/page/page.controller.ts +++ b/apps/core/src/modules/page/page.controller.ts @@ -30,7 +30,6 @@ import { ApiName } from '~/shared/common/decorator/openapi.decorator'; import { IsMaster } from '~/shared/common/decorator/role.decorator'; import { PageEvents } from '~/shared/constants/event.constant'; import { ServicesEnum } from '~/shared/constants/services.constant'; -import { MongoIdDto } from '~/shared/dto/id.dto'; import { PagerDto } from '~/shared/dto/pager.dto'; import { transportReqToMicroservice } from '~/shared/microservice.transporter'; @@ -86,9 +85,9 @@ export class PageController { @Patch('/:id') @ApiOperation({ summary: '更新页面' }) @Auth() - async modify(@Body() body: PageModel, @Param() params: MongoIdDto) { + async modify(@Body() body: PageModel, @Param("id") id: string) { return transportReqToMicroservice(this.page, PageEvents.PagePatch, { - id: params.id, + id, body, }); } @@ -96,11 +95,11 @@ export class PageController { @Delete('/:id') @ApiOperation({ summary: '删除页面' }) @Auth() - async deletePage(@Param() params: MongoIdDto) { + async deletePage(@Param("id") id: string) { return transportReqToMicroservice( this.page, PageEvents.PageDelete, - params.id, + id, ); } } diff --git a/apps/core/src/modules/post/post.controller.ts b/apps/core/src/modules/post/post.controller.ts index 8ee95d5e3..4ca8d0bd5 100644 --- a/apps/core/src/modules/post/post.controller.ts +++ b/apps/core/src/modules/post/post.controller.ts @@ -6,7 +6,6 @@ * @LastEditTime: 2022-09-24 16:10:52 * Coding With IU */ - import { Body, Controller, @@ -21,7 +20,6 @@ import { } from '@nestjs/common'; import { ClientProxy } from '@nestjs/microservices'; import { ApiOperation } from '@nestjs/swagger'; -import { CategoryAndSlugDto } from '~/apps/page-service/src/dto/post.dto'; import { PostModel } from '~/apps/page-service/src/model/post.model'; import { Auth } from '~/shared/common/decorator/auth.decorator'; import { Paginator } from '~/shared/common/decorator/http.decorator'; @@ -29,7 +27,6 @@ import { ApiName } from '~/shared/common/decorator/openapi.decorator'; import { IsMaster } from '~/shared/common/decorator/role.decorator'; import { PostEvents } from '~/shared/constants/event.constant'; import { ServicesEnum } from '~/shared/constants/services.constant'; -import { MongoIdDto } from '~/shared/dto/id.dto'; import { PagerDto } from '~/shared/dto/pager.dto'; import { transportReqToMicroservice } from '~/shared/microservice.transporter'; @@ -68,13 +65,14 @@ export class PostController { @Get('/:category/:slug') @ApiOperation({ summary: '根据分类名与自定义别名获取文章详情' }) async getByCategoryAndSlug( - @Param() params: CategoryAndSlugDto, + @Param("category") category: string, + @Param("slug") slug: string, @IsMaster() isMaster: boolean, @Query('password') password: any, ) { return transportReqToMicroservice(this.post, PostEvents.PostGet, { - category: params.category, - slug: params.slug, + category, + slug, isMaster, password, }); @@ -101,11 +99,11 @@ export class PostController { @Delete('/:id') @Auth() @ApiOperation({ summary: '删除文章' }) - async delete(@Param() params: MongoIdDto) { + async delete(@Param("id") id: string) { return transportReqToMicroservice( this.post, PostEvents.PostDelete, - params.id, + id, ); } } diff --git a/apps/core/src/modules/store/store.controller.ts b/apps/core/src/modules/store/store.controller.ts index 1525ba739..a0dad4832 100644 --- a/apps/core/src/modules/store/store.controller.ts +++ b/apps/core/src/modules/store/store.controller.ts @@ -33,10 +33,15 @@ export class StoreController { return transportReqToMicroservice(this.store, StoreEvents.Ping, {}); } - @Get(['/list/*', '/list']) + @Get([ + // '/list/*', + '/list', + ]) @Auth() @ApiOperation({ summary: '获取文件列表' }) - list(@Param('*') path?: string) { + list() // @Param('*') path?: string + { + const path = ''; return transportReqToMicroservice( this.store, StoreEvents.StoreFileGetList, @@ -44,7 +49,7 @@ export class StoreController { ); } - @Get('/raw/*') + // @Get('/raw/*') @ApiOperation({ summary: '获取文件' }) async raw(@Param('*') path: string, @Res() res: FastifyReply) { const data = await transportReqToMicroservice<{ @@ -68,7 +73,8 @@ export class StoreController { @Post('/download') @ApiOperation({ summary: '从远端下载文件' }) @Auth() - download(@Body('url') url: string, @Body('path') path?: string) { + // download(@Body('url') url: string, @Body('path') path?: string) { + download(@Body() { url, path }: { url: string; path?: string }) { return transportReqToMicroservice( this.store, StoreEvents.StoreFileDownloadFromRemote, @@ -81,7 +87,7 @@ export class StoreController { @Auth() @HTTPDecorators.FileUpload({ description: 'upload file' }) async upload(@Req() req: FastifyRequest) { - const data = await req.file(); + const data = await (req as any).file(); const _path = (req.query as any).path as string; if (!data) { @@ -108,7 +114,8 @@ export class StoreController { @Post('/delete') @ApiOperation({ summary: '删除文件' }) @Auth() - delete(@Body('path') path: string) { + // delete(@Body('path') path: string) { + delete(@Body() { path }: { path: string }) { return transportReqToMicroservice( this.store, StoreEvents.StoreFileDeleteByMaster, @@ -119,7 +126,8 @@ export class StoreController { @Post('/mkdir') @ApiOperation({ summary: '创建文件夹' }) @Auth() - mkdir(@Body('path') path: string) { + // mkdir(@Body('path') path: string) { + mkdir(@Body() { path }: { path: string }) { return transportReqToMicroservice( this.store, StoreEvents.StoreFileMkdirByMaster, @@ -130,7 +138,8 @@ export class StoreController { @Patch(['/rename', '/move']) @ApiOperation({ summary: '重命名/移动文件' }) @Auth() - rename(@Body('oldPath') oldPath: string, @Body('newPath') newPath: string) { + // rename(@Body('oldPath') oldPath: string, @Body('newPath') newPath: string) { + rename(@Body() { oldPath, newPath }: { oldPath: string; newPath: string }) { return transportReqToMicroservice( this.store, StoreEvents.StoreFileMoveByMaster, @@ -141,7 +150,8 @@ export class StoreController { @Post('/create') @ApiOperation({ summary: '创建文件' }) @Auth() - create(@Body('name') name: string, @Body('content') content: Buffer) { + // create(@Body('name') name: string, @Body('content') content: Buffer) { + create(@Body() { name, content }: { name: string; content: Buffer }) { return transportReqToMicroservice( this.store, StoreEvents.StoreFileCreateByMaster, diff --git a/apps/core/src/modules/themes/themes.controller.ts b/apps/core/src/modules/themes/themes.controller.ts index 7ade3512d..327c10647 100644 --- a/apps/core/src/modules/themes/themes.controller.ts +++ b/apps/core/src/modules/themes/themes.controller.ts @@ -117,7 +117,8 @@ export class ThemesController { @Patch('/:id/config') @Auth() @ApiOperation({ summary: '更新主题配置' }) - async setConfig(@Param('id') id: string, @Body('config') config: any) { + // async setConfig(@Param('id') id: string, @Body('config') config: any) { + async setConfig(@Param('id') id: string, @Body() { config }: any) { return transportReqToMicroservice( this.themes, ThemesEvents.ThemeUpdateConfig, @@ -139,7 +140,8 @@ export class ThemesController { @Post('/manager/upload') @ApiOperation({ summary: '上传主题' }) @Auth() - async upload(@Body('file') file: Buffer) { + // async upload(@Body('file') file: Buffer) { + async upload(@Body() { file }: { file: Buffer }) { return transportReqToMicroservice( this.themes, ThemesEvents.ThemeUploadByMaster, diff --git a/apps/page-service/src/category.service.ts b/apps/page-service/src/category.service.ts index 37d973963..9e3c1cd09 100644 --- a/apps/page-service/src/category.service.ts +++ b/apps/page-service/src/category.service.ts @@ -8,7 +8,7 @@ */ import { Inject, Injectable } from '@nestjs/common'; import { ReturnModelType, DocumentType } from '@typegoose/typegoose'; -import { FilterQuery, Types } from 'mongoose'; +import { FilterQuery } from 'mongoose'; import { nextTick } from 'process'; import { InjectModel } from '~/libs/database/src/model.transformer'; import { ExceptionMessage } from '~/shared/constants/echo.constant'; @@ -169,7 +169,7 @@ export class CategoryService { * @param condition 查询条件 * @returns Promise */ - async findCategoryPost(categoryId: Types.ObjectId, condition: any = {}) { + async findCategoryPost(categoryId: string, condition: any = {}) { return await this.postService.model .find({ categoryId, diff --git a/apps/page-service/src/page-service.controller.ts b/apps/page-service/src/page-service.controller.ts index d4fdeaf55..ad91d3b0b 100644 --- a/apps/page-service/src/page-service.controller.ts +++ b/apps/page-service/src/page-service.controller.ts @@ -104,7 +104,7 @@ export class PageServiceController { } const children = - (await this.categoryService.findCategoryPost(data._id, { + (await this.categoryService.findCategoryPost(data._id.toString(), { $and: [tag ? { tags: tag } : {}], // 如果tag存在,则查询标签下的文章 })) || []; diff --git a/apps/themes-service/src/main.ts b/apps/themes-service/src/main.ts index 5beeb1569..bec79a4e2 100644 --- a/apps/themes-service/src/main.ts +++ b/apps/themes-service/src/main.ts @@ -15,6 +15,7 @@ import { isDev } from '~/shared/utils'; import { getEnv, readEnv } from '~/shared/utils/rag-env'; import { fastifyApp } from './fastify.adapt'; import { ThemesServiceModule } from './themes-service.module'; +import { chalk } from 'zx-cjs'; declare const module: any; diff --git a/apps/themes-service/src/themes-render.service.ts b/apps/themes-service/src/themes-render.service.ts index d03e9d517..f0da397f8 100644 --- a/apps/themes-service/src/themes-render.service.ts +++ b/apps/themes-service/src/themes-render.service.ts @@ -20,7 +20,7 @@ import { transportReqToMicroservice } from '~/shared/microservice.transporter'; import { getValueFromQuery } from '~/shared/utils/query-param'; import { THEME_DIR } from '~/shared/constants/path.constant'; import { isDev } from '~/shared/utils'; -import { YAML } from 'zx-cjs'; +import { YAML, path } from 'zx-cjs'; export enum ThemeEnum { page = 'page', diff --git a/apps/themes-service/src/themes-service.controller.ts b/apps/themes-service/src/themes-service.controller.ts index fbf81be11..90df0e722 100644 --- a/apps/themes-service/src/themes-service.controller.ts +++ b/apps/themes-service/src/themes-service.controller.ts @@ -18,6 +18,7 @@ import { THEME_DIR } from '~/shared/constants/path.constant'; import { consola } from '~/shared/global/consola.global'; import { ThemeEnum, ThemesRenderService } from './themes-render.service'; import { ThemesServiceService } from './themes-service.service'; +import { path, fs } from 'zx-cjs'; @Controller() export class ThemesServiceController { @@ -246,7 +247,7 @@ export class ThemesServiceController { await this._render(reply, req, query, params, ThemeEnum.friends); } - @Get(['/raw/*']) + // @Get(['/raw/*']) async assets(@Req() req: FastifyRequest, @Res() reply: FastifyReply) { // @ts-ignore const file = req.params['*']; @@ -296,7 +297,7 @@ export class ThemesServiceController { // await this._render(reply, req, query, params, ThemeEnum.page); // } - @Get(['/*']) + // @Get(['/*']) async renderCustomPage( @Res() reply: FastifyReply, @Req() req: FastifyRequest, diff --git a/apps/themes-service/src/themes-service.service.ts b/apps/themes-service/src/themes-service.service.ts index 8625d0f53..6221d3ee6 100644 --- a/apps/themes-service/src/themes-service.service.ts +++ b/apps/themes-service/src/themes-service.service.ts @@ -14,7 +14,7 @@ import { ServicesEnum } from '~/shared/constants/services.constant'; import { ClientProxy } from '@nestjs/microservices'; import { ConfigEvents, ThemesEvents } from '~/shared/constants/event.constant'; import { AssetsService } from '~/libs/helper/src/helper.assets.service'; -import { YAML } from 'zx-cjs'; +import { YAML, chalk, path } from 'zx-cjs'; import { InternalServerErrorRpcExcption } from '~/shared/exceptions/internal-server-error-rpc-exception'; import { transportReqToMicroservice } from '~/shared/microservice.transporter'; diff --git a/global.d.ts b/global.d.ts index 4247aac2a..8667d0c24 100644 --- a/global.d.ts +++ b/global.d.ts @@ -6,5 +6,3 @@ * @LastEditTime: 2022-11-11 13:45:42 * Coding With IU */ - -import 'zx-cjs/globals'; diff --git a/libs/helper/src/helper.assets.service.ts b/libs/helper/src/helper.assets.service.ts index 97b6030e5..d03169596 100644 --- a/libs/helper/src/helper.assets.service.ts +++ b/libs/helper/src/helper.assets.service.ts @@ -9,6 +9,7 @@ import { lookup } from 'mime-types'; import { getFileInfo } from '~/shared/utils/files.util'; import { STORE_DIR } from '~/shared/constants/path.constant'; import { join } from 'path'; +import { path } from 'zx-cjs'; @Injectable() export class AssetsService { diff --git a/libs/helper/src/helper.http.service.ts b/libs/helper/src/helper.http.service.ts index dc2e716e0..3d3cea3a7 100644 --- a/libs/helper/src/helper.http.service.ts +++ b/libs/helper/src/helper.http.service.ts @@ -19,6 +19,7 @@ import { DEBUG_MODE } from '@core/app.config'; import { CacheService } from '~/libs/cache/src'; import { RedisKeys } from '~/shared/constants/cache.constant'; import { getRedisKey } from '~/shared/utils/redis.util'; +import { chalk } from 'zx-cjs'; const AXIOS_CONFIG: AxiosRequestConfig = { timeout: 10000, diff --git a/nestia.config.ts b/nestia.config.ts new file mode 100644 index 000000000..8c7e628d6 --- /dev/null +++ b/nestia.config.ts @@ -0,0 +1,8 @@ +import { INestiaConfig } from "@nestia/sdk"; + +const config: INestiaConfig = { + input: "apps/core/src/modules", + output: "api-client", + distribute: "packages/api-client", +}; +export default config; \ No newline at end of file diff --git a/package.json b/package.json index 34b7598d9..c30f53cd4 100644 --- a/package.json +++ b/package.json @@ -46,11 +46,13 @@ "test:all": "npm run test", "test:watch": "vitest --watch", "test:cov": "vitest --coverage", - "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s" + "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", + "postinstall": "ts-patch install" }, "dependencies": { "@fastify/multipart": "7.7.3", "@fastify/static": "6.10.2", + "@nestia/core": "^1.6.7", "@nestjs/cache-manager": "2.1.0", "@nestjs/common": "10.2.4", "@nestjs/core": "10.2.4", @@ -97,6 +99,8 @@ }, "devDependencies": { "@innei/eslint-config-ts": "0.11.1", + "@nestia/e2e": "^0.3.6", + "@nestia/sdk": "^1.6.7", "@nestjs/cli": "10.1.17", "@nestjs/schematics": "10.0.2", "@nestjs/swagger": "7.1.10", @@ -123,8 +127,11 @@ "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", "ioredis": "5.3.2", + "nestia": "^4.5.0", "pm2": "^5.3.0", "prettier": "3.0.3", + "ts-node": "^10.9.1", + "ts-patch": "^3.0.2", "typescript": "5.2.2", "vitest": "^0.34.3", "webpack": "5.88.2", @@ -173,4 +180,4 @@ "object.values": "npm:@nolyfill/object.values@latest" } } -} +} \ No newline at end of file diff --git a/packages/api-client/README.md b/packages/api-client/README.md new file mode 100644 index 000000000..6517106af --- /dev/null +++ b/packages/api-client/README.md @@ -0,0 +1,37 @@ +# SDK Library + +This is a SDK library generated by [`nestia`](https://nestia.io). + +With this SDK library, you can easily and safely interact with backend server. + +Just import and call some API functions like gif image below: + +![nestia-sdk-demo](https://user-images.githubusercontent.com/13158709/215004990-368c589d-7101-404e-b81b-fbc936382f05.gif) + +> Left is server code, and right is client code utilizing the SDK + +# What [`Nestia`](https://nestia.io) is: + +![Nestia Logo](https://nestia.io/logo.png) + +[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/samchon/nestia/blob/master/LICENSE) +[![npm version](https://img.shields.io/npm/v/@nestia/core.svg)](https://www.npmjs.com/package/@nestia/core) +[![Downloads](https://img.shields.io/npm/dm/nestia.svg)](https://www.npmjs.com/package/nestia) +[![Build Status](https://github.com/samchon/nestia/workflows/build/badge.svg)](https://github.com/samchon/nestia/actions?query=workflow%3Abuild) +[![Guide Documents](https://img.shields.io/badge/guide-documents-forestgreen)](https://nestia.io/docs/) + +[Nestia](https://nestia.io) is a set of helper libraries for NestJS, supporting below features: + +- `@nestia/core`: super-fast decorators +- `@nestia/sdk` + - SDK generator for clients + - Swagger generator evolved than ever + - Automatic E2E test functions generator +- `nestia`: just CLI (command line interface) tool + +> **Note** +> +> - **Only one line** required, with pure TypeScript type +> - Runtime validator is **20,000x faster** than `class-validator` +> - JSON serialization is **200x faster** than `class-transformer` +> - SDK is similar with [tRPC](https://trpc.io), but much advanced diff --git a/packages/api-client/package.json b/packages/api-client/package.json new file mode 100644 index 000000000..ab63be9c4 --- /dev/null +++ b/packages/api-client/package.json @@ -0,0 +1,33 @@ +{ + "name": "@mogland/api-client", + "version": "0.1.0", + "description": "Mog SDK library", + "main": "lib/index.js", + "typings": "lib/index.d.ts", + "scripts": { + "build": "npm run build:sdk && npm run compile", + "build:sdk": "rimraf ../../api-client/functional && cd ../.. && npx nestia sdk && cd packages/api-client", + "compile": "rimraf lib && tsc", + "deploy": "npm run build && npm publish" + }, + "author": "Wibus ", + "license": "AGPLv3", + "repository": { + "directory": "mogland/core", + "url": "https://github.com/mogland/core" + }, + "homepage": "https://github.com/mogland/core#readme", + "issues": "https://github.com/mogland/core/issues", + "files": [ + "lib", + "package.json", + "README.md" + ], + "devDependencies": { + "rimraf": "^5.0.1", + "typescript": "^5.2.2" + }, + "dependencies": { + "@nestia/fetcher": "^1.6.7" + } +} diff --git a/packages/api-client/pnpm-lock.yaml b/packages/api-client/pnpm-lock.yaml new file mode 100644 index 000000000..942b4fd2d --- /dev/null +++ b/packages/api-client/pnpm-lock.yaml @@ -0,0 +1,298 @@ +lockfileVersion: '6.0' + +dependencies: + '@nestia/fetcher': + specifier: ^1.6.7 + version: 1.6.7(typescript@5.2.2) + +devDependencies: + rimraf: + specifier: ^5.0.1 + version: 5.0.1 + typescript: + specifier: ^5.2.2 + version: 5.2.2 + +packages: + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@nestia/fetcher@1.6.7(typescript@5.2.2): + resolution: {integrity: sha512-xn+UuA1ZTHqqpnlm2fD3hPDfkbyaXhwlGKo3RTGTuWRfH0h3wk6Pr4ZcawOT/lklMtpoFyQoGxY5y1nQhOm8xg==} + peerDependencies: + typescript: '>= 4.8.0' + dependencies: + import2: 1.0.3 + node-fetch: 2.7.0 + typescript: 5.2.2 + transitivePeerDependencies: + - encoding + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /glob@10.3.4: + resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.1 + minimatch: 9.0.3 + minipass: 7.0.3 + path-scurry: 1.10.1 + dev: true + + /import2@1.0.3: + resolution: {integrity: sha512-X7KHNp1fovFaiah9Q+njdxXJKIV9/XippWGZwHL9ZdJYnQPBs+4wLd4PuCigbxz2IWNm5YvFycSjRA/1lgmdGw==} + dev: false + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /jackspeak@2.3.1: + resolution: {integrity: sha512-4iSY3Bh1Htv+kLhiiZunUhQ+OYXIn0ze3ulq8JeWrFKmhPAJSySV2+kdtRh2pGcCeF0s6oR8Oc+pYZynJj4t8A==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} + engines: {node: 14 || >=16.14} + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minipass@7.0.3: + resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.0.1 + minipass: 7.0.3 + dev: true + + /rimraf@5.0.1: + resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.4 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true diff --git a/packages/api-client/tsconfig.json b/packages/api-client/tsconfig.json new file mode 100644 index 000000000..4610502d1 --- /dev/null +++ b/packages/api-client/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "ES5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "lib": [ + "DOM", + "ES2015" + ], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./lib", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + "newLine": "lf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true, /* Skip type checking all .d.ts files. */ + }, + "include": [ + "../../api-client" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc0dfb66b..af098efe1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ dependencies: '@fastify/static': specifier: 6.10.2 version: 6.10.2 + '@nestia/core': + specifier: ^1.6.7 + version: 1.6.7(@nestia/fetcher@1.6.7)(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(@nestjs/platform-express@10.2.4)(@nestjs/platform-fastify@10.2.4)(raw-body@2.5.2)(reflect-metadata@0.1.13)(rxjs@7.8.1)(typescript@5.2.2)(typia@4.3.3) '@nestjs/cache-manager': specifier: 2.1.0 version: 2.1.0(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(cache-manager@4.1.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) @@ -25,7 +28,7 @@ dependencies: version: 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@nestjs/core': specifier: 10.2.4 - version: 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + version: 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@nestjs/event-emitter': specifier: 2.0.2 version: 2.0.2(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(reflect-metadata@0.1.13) @@ -151,6 +154,12 @@ devDependencies: '@innei/eslint-config-ts': specifier: 0.11.1 version: 0.11.1(typescript@5.2.2) + '@nestia/e2e': + specifier: ^0.3.6 + version: 0.3.6 + '@nestia/sdk': + specifier: ^1.6.7 + version: 1.6.7(@nestia/fetcher@1.6.7)(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(reflect-metadata@0.1.13)(ts-node@10.9.1)(typescript@5.2.2)(typia@4.3.3) '@nestjs/cli': specifier: 10.1.17 version: 10.1.17 @@ -162,7 +171,7 @@ devDependencies: version: 7.1.10(@fastify/static@6.10.2)(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13) '@nestjs/testing': specifier: 10.2.4 - version: 10.2.4(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(@nestjs/microservices@10.2.4) + version: 10.2.4(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4) '@types/adm-zip': specifier: ^0.5.0 version: 0.5.0 @@ -229,12 +238,21 @@ devDependencies: ioredis: specifier: 5.3.2 version: 5.3.2 + nestia: + specifier: ^4.5.0 + version: 4.5.0 pm2: specifier: ^5.3.0 version: 5.3.0 prettier: specifier: 3.0.3 version: 3.0.3 + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@18.17.12)(typescript@5.2.2) + ts-patch: + specifier: ^3.0.2 + version: 3.0.2 typescript: specifier: 5.2.2 version: 5.2.2 @@ -364,6 +382,13 @@ packages: dev: true optional: true + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -802,6 +827,13 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /@lukeed/csprng@1.0.1: resolution: {integrity: sha512-uSvJdwQU5nK+Vdf6zxcWAY2A8r7uqe+gePwLWzJ+fsQehq18pc0I2hJKwypZ2aLM90+Er9u1xn4iLJPZ+xlL4g==} engines: {node: '>=8'} @@ -835,6 +867,84 @@ packages: sparse-bitfield: 3.0.3 optional: true + /@nestia/core@1.6.7(@nestia/fetcher@1.6.7)(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(@nestjs/platform-express@10.2.4)(@nestjs/platform-fastify@10.2.4)(raw-body@2.5.2)(reflect-metadata@0.1.13)(rxjs@7.8.1)(typescript@5.2.2)(typia@4.3.3): + resolution: {integrity: sha512-UAp7BbjKelBj3QHLN9dP4jSlQYz8+hOWXU8WNt+r88mgn60mCvwVgV9Pa91XrO4alS8sqZ7GJyyOBnMBcekTnQ==} + peerDependencies: + '@nestia/fetcher': '>=1.6.7' + '@nestjs/common': '>=7.0.1' + '@nestjs/core': '>=7.0.1' + '@nestjs/platform-express': '>=7.0.1' + '@nestjs/platform-fastify': '>=7.0.1' + raw-body: '>=2.0.0' + reflect-metadata: '>=0.1.12' + rxjs: '>=6.0.0' + typescript: '>=4.8.0' + typia: '>=4.2.3 <5.0.0' + dependencies: + '@nestia/fetcher': 1.6.7(typescript@5.2.2) + '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/platform-express': 10.2.4(@nestjs/common@10.2.4)(@nestjs/core@10.2.4) + '@nestjs/platform-fastify': 10.2.4(@fastify/static@6.10.2)(@nestjs/common@10.2.4)(@nestjs/core@10.2.4) + detect-ts-node: 1.0.5 + glob: 7.2.3 + raw-body: 2.5.2 + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + typescript: 5.2.2 + typia: 4.3.3(typescript@5.2.2) + dev: false + + /@nestia/e2e@0.3.6: + resolution: {integrity: sha512-1DQOvjH0GoMalZLCQf83Tj0ri13Fbcm0MpSXrDxormKTBvujMlYThC3MSbISpDuejnpeQ7JuDX91XKTabr8oOA==} + dependencies: + chalk: 4.1.2 + cli: 1.0.1 + tstl: 2.5.13 + dev: true + + /@nestia/fetcher@1.6.7(typescript@5.2.2): + resolution: {integrity: sha512-xn+UuA1ZTHqqpnlm2fD3hPDfkbyaXhwlGKo3RTGTuWRfH0h3wk6Pr4ZcawOT/lklMtpoFyQoGxY5y1nQhOm8xg==} + peerDependencies: + typescript: '>= 4.8.0' + dependencies: + import2: 1.0.3 + node-fetch: 2.6.7 + typescript: 5.2.2 + transitivePeerDependencies: + - encoding + + /@nestia/sdk@1.6.7(@nestia/fetcher@1.6.7)(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(reflect-metadata@0.1.13)(ts-node@10.9.1)(typescript@5.2.2)(typia@4.3.3): + resolution: {integrity: sha512-0FBG+ZfaMTisqad5jBy3hNCHQ1ihGVJqs/frSnPRp04nREu+fIXQCbeZVoGYeOhBuQBsPZqIiNzW+taJaatcug==} + hasBin: true + peerDependencies: + '@nestia/fetcher': '>=1.6.7' + '@nestjs/common': '>=7.0.1' + '@nestjs/core': '>=7.0.1' + reflect-metadata: '>=0.1.12' + ts-node: '>=10.6.0' + typescript: '>=4.8.0' + typia: '>= 4.3.3 <5.0.0' + dependencies: + '@nestia/fetcher': 1.6.7(typescript@5.2.2) + '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + cli: 1.0.1 + glob: 7.2.3 + path-to-regexp: 6.2.1 + reflect-metadata: 0.1.13 + tgrid: 0.8.8 + ts-node: 10.9.1(@types/node@18.17.12)(typescript@5.2.2) + tsconfck: 2.1.2(typescript@5.2.2) + tsconfig-paths: 4.2.0 + tstl: 2.5.13 + typescript: 5.2.2 + typia: 4.3.3(typescript@5.2.2) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /@nestjs/cache-manager@2.1.0(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(cache-manager@4.1.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): resolution: {integrity: sha512-9kep3a8Mq5cMuXN/anGhSYc0P48CRBXk5wyJJRBFxhNkCH8AIzZF4CASGVDIEMmm3OjVcEUHojjyJwCODS17Qw==} peerDependencies: @@ -845,7 +955,7 @@ packages: rxjs: ^7.0.0 dependencies: '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) cache-manager: 4.1.0 reflect-metadata: 0.1.13 rxjs: 7.8.1 @@ -913,7 +1023,7 @@ packages: tslib: 2.6.2 uid: 2.0.2 - /@nestjs/core@10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1): + /@nestjs/core@10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1): resolution: {integrity: sha512-aWeii2l+3pNCc9kIRdLbXQMvrgSZD0jZgXOZv7bZwVf9mClMMi7TussLI4On12VbqVE7LE3gsNgRTwgQJlVC8g==} requiresBuild: true peerDependencies: @@ -933,6 +1043,7 @@ packages: dependencies: '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@nestjs/microservices': 10.2.4(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(cache-manager@4.1.0)(ioredis@5.3.2)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/platform-express': 10.2.4(@nestjs/common@10.2.4)(@nestjs/core@10.2.4) '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 @@ -952,7 +1063,7 @@ packages: reflect-metadata: ^0.1.12 dependencies: '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) eventemitter2: 6.4.9 reflect-metadata: 0.1.13 dev: false @@ -1013,7 +1124,7 @@ packages: optional: true dependencies: '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) cache-manager: 4.1.0 ioredis: 5.3.2 iterare: 1.2.1 @@ -1021,6 +1132,22 @@ packages: rxjs: 7.8.1 tslib: 2.6.2 + /@nestjs/platform-express@10.2.4(@nestjs/common@10.2.4)(@nestjs/core@10.2.4): + resolution: {integrity: sha512-E9F6WYo6bNwvTT0saJpkr8t4BJLbZRwrX5EKbtBRQqyRcw6NAvlKdacKzoo+Sompdre0IbF8AvNRFk4uLZTWqA==} + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/core': ^10.0.0 + dependencies: + '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + body-parser: 1.20.2 + cors: 2.8.5 + express: 4.18.2 + multer: 1.4.4-lts.1 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + /@nestjs/platform-fastify@10.2.4(@fastify/static@6.10.2)(@nestjs/common@10.2.4)(@nestjs/core@10.2.4): resolution: {integrity: sha512-tkFjvAjWzhE0C8GzjESBA7QYeNomCy4F4j3gsfTrLKQVGWBRjAyjzfdV8gWxAz6I1RF7uV7fAQ6tpxepymqEwQ==} peerDependencies: @@ -1039,7 +1166,7 @@ packages: '@fastify/middie': 8.3.0 '@fastify/static': 6.10.2 '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) fastify: 4.22.0 light-my-request: 5.10.0 path-to-regexp: 3.2.0 @@ -1056,7 +1183,7 @@ packages: reflect-metadata: ^0.1.12 dependencies: '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) cron: 2.4.1 reflect-metadata: 0.1.13 uuid: 9.0.0 @@ -1096,7 +1223,7 @@ packages: dependencies: '@fastify/static': 6.10.2 '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@nestjs/mapped-types': 2.0.2(@nestjs/common@10.2.4)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13) class-transformer: 0.5.1 class-validator: 0.14.0 @@ -1107,7 +1234,7 @@ packages: swagger-ui-dist: 5.4.2 dev: true - /@nestjs/testing@10.2.4(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(@nestjs/microservices@10.2.4): + /@nestjs/testing@10.2.4(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4): resolution: {integrity: sha512-2qqymiuPbC41yCXXhtt4cL8AOcVNu13gBCT13A8roUUdcs4lmtg+H3oXKF/Gc/vlLv2RkSTNO+JuzxP1hydLPg==} peerDependencies: '@nestjs/common': ^10.0.0 @@ -1121,8 +1248,9 @@ packages: optional: true dependencies: '@nestjs/common': 10.2.4(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 10.2.4(@nestjs/common@10.2.4)(@nestjs/microservices@10.2.4)(@nestjs/platform-express@10.2.4)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@nestjs/microservices': 10.2.4(@nestjs/common@10.2.4)(@nestjs/core@10.2.4)(cache-manager@4.1.0)(ioredis@5.3.2)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/platform-express': 10.2.4(@nestjs/common@10.2.4)(@nestjs/core@10.2.4) tslib: 2.6.2 dev: true @@ -1179,7 +1307,6 @@ packages: engines: {node: '>=12.4.0'} dependencies: '@nolyfill/shared': 1.0.21 - dev: true /@nolyfill/object.fromentries@1.0.21: resolution: {integrity: sha512-q/uTyFipMOdMjKtAdPq0ufDN1glOa1FWqFGWApJ3CIhTbOqLz+ZypcS3h4sLhM91npP5PoTYma9RPbA4f0TrnA==} @@ -1341,6 +1468,22 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + /@typegoose/typegoose@11.4.1(mongoose@7.5.0): resolution: {integrity: sha512-mOMEUBaxnSYtnGWAMsduh1+4MeJHpYN2+rhZ5rHq9mKRT8Ix3nsR0QWEnFIIqTnksL0Yt3Ww7Qj8IFzWhoIyoQ==} engines: {node: '>=14.17.0'} @@ -1945,6 +2088,13 @@ packages: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} dev: false + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + /acorn-import-assertions@1.9.0(acorn@8.10.0): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: @@ -2040,7 +2190,6 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - dev: true /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -2072,6 +2221,9 @@ packages: picomatch: 2.3.1 dev: true + /append-field@1.0.0: + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} + /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} dev: false @@ -2088,6 +2240,10 @@ packages: readable-stream: 3.6.0 dev: false + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -2098,9 +2254,11 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true + /array-flatten@1.1.1: + resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} + /array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} - dev: true /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} @@ -2183,7 +2341,6 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true /bcrypt@5.1.1: resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==} @@ -2213,7 +2370,6 @@ packages: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.0 - dev: true /blessed@0.1.81: resolution: {integrity: sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==} @@ -2225,6 +2381,44 @@ packages: resolution: {integrity: sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==} dev: true + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + /bplist-parser@0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} engines: {node: '>= 5.10.0'} @@ -2271,14 +2465,12 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: true /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} @@ -2287,10 +2479,15 @@ packages: run-applescript: 5.0.0 dev: true + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - dev: true /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} @@ -2313,6 +2510,12 @@ packages: lodash.clonedeep: 4.5.0 lru-cache: 7.18.3 + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2376,7 +2579,6 @@ packages: /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true /charm@0.1.2: resolution: {integrity: sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==} @@ -2426,12 +2628,10 @@ packages: engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 - dev: true /cli-spinners@2.7.0: resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} engines: {node: '>=6'} - dev: true /cli-table3@0.6.3: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} @@ -2452,6 +2652,13 @@ packages: /cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} + + /cli@1.0.1: + resolution: {integrity: sha512-41U72MB56TfUMGndAKK8vJ78eooOD4Z5NOL4xEfjc0c23s+6EYKXlXsmACBVclLP1yOfWCgEganVzddVrSNoTg==} + engines: {node: '>=0.2.5'} + dependencies: + exit: 0.1.2 + glob: 7.2.3 dev: true /cliui@7.0.4: @@ -2474,7 +2681,6 @@ packages: /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - dev: true /cluster-key-slot@1.1.0: resolution: {integrity: sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==} @@ -2510,6 +2716,10 @@ packages: dependencies: delayed-stream: 1.0.0 + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + /commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} engines: {node: '>=16'} @@ -2537,11 +2747,19 @@ packages: esprima: 4.0.1 has-own-prop: 2.0.0 repeat-string: 1.6.1 - dev: true /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + /concurrently@8.2.1: resolution: {integrity: sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==} engines: {node: ^14.13.0 || >=16.0.0} @@ -2571,6 +2789,10 @@ packages: dependencies: safe-buffer: 5.2.1 + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + /continuation-local-storage@3.2.1: resolution: {integrity: sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==} dependencies: @@ -2578,14 +2800,22 @@ packages: emitter-listener: 1.1.2 dev: true + /cookie-signature@1.0.6: + resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} + /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} - dev: false /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true + + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 /cosmiconfig@7.0.1: resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} @@ -2598,6 +2828,10 @@ packages: yaml: 1.10.2 dev: true + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + /cron@2.4.1: resolution: {integrity: sha512-ty0hUSPuENwDtIShDFxUxWEIsqiu2vhoFtt6Vwrbg4lHGtJX2/cV2p0hH6/qaEM9Pj+i6mQoau48BO5wBpkP4w==} dependencies: @@ -2668,6 +2902,16 @@ packages: resolution: {integrity: sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==} dev: true + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -2731,7 +2975,6 @@ packages: resolution: {integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==} dependencies: clone: 1.0.4 - dev: true /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} @@ -2769,16 +3012,29 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + /detect-libc@2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} dev: false + /detect-ts-node@1.0.5: + resolution: {integrity: sha512-lWACfJ+H6jpxT1uuIQi2KAIkczeHJcM4rmfbAR86gfmAlrJpCVZbnKB0fiqmH8TGw4dm9xrptfwNObEsDdvsFg==} + dev: false + /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2813,12 +3069,19 @@ packages: tslib: 2.6.2 dev: false + /drange@1.1.1: + resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==} + engines: {node: '>=4'} + /ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: safe-buffer: 5.2.1 dev: false + /ee-first@1.1.1: + resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + /ejs@3.1.9: resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} engines: {node: '>=0.10.0'} @@ -2840,6 +3103,10 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -2915,7 +3182,6 @@ packages: /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: true /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -3148,7 +3414,6 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} @@ -3179,6 +3444,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -3244,6 +3513,49 @@ packages: strip-final-newline: 3.0.0 dev: true + /exit@0.1.2: + resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} + engines: {node: '>= 0.8.0'} + dev: true + + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -3251,7 +3563,6 @@ packages: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: true /fast-content-type-parse@1.0.0: resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} @@ -3359,7 +3670,6 @@ packages: engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 - dev: true /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} @@ -3386,6 +3696,20 @@ packages: to-regex-range: 5.0.1 dev: true + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + /find-my-way@7.6.0: resolution: {integrity: sha512-H7berWdHJ+5CNVr4ilLWPai4ml7Y2qAsxjw3pfeBxPigZmaDTzF0wjJLj90xRCmGcWYcyt050yN+34OZDJm1eQ==} engines: {node: '>=14'} @@ -3468,7 +3792,10 @@ packages: /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - dev: false + + /fresh@0.5.2: + resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} + engines: {node: '>= 0.6'} /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} @@ -3518,6 +3845,9 @@ packages: xregexp: 2.0.0 dev: true + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} @@ -3542,6 +3872,14 @@ packages: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.1 + has: /@nolyfill/has@1.0.21 + has-proto: 1.0.1 + has-symbols: 1.0.3 + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -3643,6 +3981,15 @@ packages: path-scurry: 1.10.1 dev: true + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true + /globals@13.19.0: resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} engines: {node: '>=8'} @@ -3686,7 +4033,14 @@ packages: /has-own-prop@2.0.0: resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} engines: {node: '>=8'} - dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -3758,7 +4112,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: true /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -3768,7 +4121,6 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true /ignore@5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} @@ -3788,6 +4140,9 @@ packages: resolve-from: 4.0.0 dev: true + /import2@1.0.3: + resolution: {integrity: sha512-X7KHNp1fovFaiah9Q+njdxXJKIV9/XippWGZwHL9ZdJYnQPBs+4wLd4PuCigbxz2IWNm5YvFycSjRA/1lgmdGw==} + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3846,7 +4201,6 @@ packages: strip-ansi: 6.0.1 through: 2.3.8 wrap-ansi: 6.2.0 - dev: true /interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} @@ -3898,7 +4252,6 @@ packages: /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - dev: false /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -3911,12 +4264,6 @@ packages: binary-extensions: 2.2.0 dev: true - /is-core-module@2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} - dependencies: - has: /@nolyfill/has@1.0.21 - dev: true - /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: @@ -3962,7 +4309,6 @@ packages: /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -3995,7 +4341,6 @@ packages: /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - dev: true /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} @@ -4008,6 +4353,9 @@ packages: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: true + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -4137,7 +4485,7 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 dev: true /json5@2.2.3: @@ -4199,6 +4547,11 @@ packages: resolution: {integrity: sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==} engines: {node: '>=12.0.0'} + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + /lazy@1.0.11: resolution: {integrity: sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==} engines: {node: '>=0.2.0'} @@ -4311,7 +4664,6 @@ packages: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: true /loglevel@1.8.1: resolution: {integrity: sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==} @@ -4381,11 +4733,19 @@ packages: semver: 6.3.1 dev: false + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: false + /media-typer@0.3.0: + resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} + engines: {node: '>= 0.6'} + /memfs@3.4.7: resolution: {integrity: sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==} engines: {node: '>= 4.0.0'} @@ -4398,6 +4758,9 @@ packages: requiresBuild: true optional: true + /merge-descriptors@1.0.1: + resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true @@ -4407,6 +4770,10 @@ packages: engines: {node: '>= 8'} dev: true + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -4425,6 +4792,11 @@ packages: dependencies: mime-db: 1.52.0 + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + /mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} @@ -4433,7 +4805,6 @@ packages: /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - dev: true /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} @@ -4469,6 +4840,9 @@ packages: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + /minipass@3.3.4: resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} engines: {node: '>=8'} @@ -4493,6 +4867,12 @@ packages: yallist: 4.0.0 dev: false + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -4618,15 +4998,29 @@ packages: transitivePeerDependencies: - supports-color + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + /multer@1.4.4-lts.1: + resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==} + engines: {node: '>= 6.0.0'} + dependencies: + append-field: 1.0.0 + busboy: 1.6.0 + concat-stream: 1.6.2 + mkdirp: 0.5.6 + object-assign: 4.1.1 + type-is: 1.6.18 + xtend: 4.0.2 + /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} @@ -4653,10 +5047,23 @@ packages: - supports-color dev: true + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true + /nestia@4.5.0: + resolution: {integrity: sha512-S68dmpCnT21zfadUjet3PWmwW991/24unFsVNAennVHej1TdMZE5Cm2CAc6gaWOrwX2BqSfmUE/oXJPa5P8TEA==} + hasBin: true + dependencies: + commander: 10.0.1 + comment-json: 4.2.3 + inquirer: 8.2.6 + dev: true + /netmask@2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} @@ -4752,7 +5159,9 @@ packages: /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: false + + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} /obliterator@2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} @@ -4762,6 +5171,12 @@ packages: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} dev: false + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -4772,7 +5187,6 @@ packages: engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - dev: true /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -4832,7 +5246,6 @@ packages: log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 - dev: true /os-name@4.0.1: resolution: {integrity: sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==} @@ -4845,7 +5258,6 @@ packages: /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: true /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} @@ -4924,6 +5336,10 @@ packages: dependencies: entities: 4.4.0 + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -4953,12 +5369,14 @@ packages: lru-cache: 10.0.1 minipass: 5.0.0 + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + /path-to-regexp@3.2.0: resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} /path-to-regexp@6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - dev: false /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -5171,6 +5589,9 @@ packages: react-is: 18.2.0 dev: true + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + /process-warning@2.2.0: resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} dev: false @@ -5187,7 +5608,6 @@ packages: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - dev: false /proxy-agent@5.0.0: resolution: {integrity: sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==} @@ -5222,6 +5642,12 @@ packages: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -5238,12 +5664,32 @@ packages: engines: {node: '>=10'} dev: false + /randexp@0.5.3: + resolution: {integrity: sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==} + engines: {node: '>=4'} + dependencies: + drange: 1.1.1 + ret: 0.2.2 + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 dev: true + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + /raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} @@ -5252,7 +5698,6 @@ packages: http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - dev: true /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} @@ -5274,6 +5719,17 @@ packages: string_decoder: 0.10.31 dev: true + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} @@ -5330,7 +5786,6 @@ packages: /repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} - dev: true /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -5347,7 +5802,7 @@ packages: dependencies: debug: 4.3.4 module-details-from-path: 1.0.3 - resolve: 1.22.1 + resolve: 1.22.4 transitivePeerDependencies: - supports-color dev: true @@ -5360,15 +5815,6 @@ packages: engines: {node: '>=4'} dev: true - /resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.10.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /resolve@1.22.4: resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true @@ -5384,12 +5830,10 @@ packages: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} - dev: false /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -5442,7 +5886,6 @@ packages: /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} - dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -5459,6 +5902,9 @@ packages: dependencies: tslib: 2.5.0 + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -5542,12 +5988,50 @@ packages: dependencies: lru-cache: 6.0.0 + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + /serialize-error@4.1.0: + resolution: {integrity: sha512-5j9GgyGsP9vV9Uj1S0lDCvlsd+gc2LEPVK7HHHte7IyPwOD4lVQFeaX143gx3U5AnoCi+wbcb3mvaxVysjpxEw==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.3.1 + dev: true + /serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 dev: true + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: false @@ -5587,6 +6071,13 @@ packages: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} dev: true + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + /sift@16.0.1: resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} @@ -5722,6 +6213,10 @@ packages: engines: {node: '>=4.0.0'} dev: false + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -5734,6 +6229,11 @@ packages: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: true + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -5885,6 +6385,19 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /tgrid@0.8.8: + resolution: {integrity: sha512-xRC/+ft3S4BJ5rOJu4APr6Gzhmqh+/vDQboN8V3Z5vyVbicDfMoyS29Vk7IIuGFyZFUH7WIDFn/JoggfABj/lw==} + dependencies: + import2: 1.0.3 + serialize-error: 4.1.0 + tstl: 2.5.13 + uuid: 9.0.0 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /thread-stream@2.1.0: resolution: {integrity: sha512-5+Pf2Ya31CsZyIPYYkhINzdTZ3guL+jHq7D8lkBybgGcSQIKDbid3NJku3SpCKeE/gACWAccDA/rH2B6doC5aA==} dependencies: @@ -5893,7 +6406,6 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true /tiny-lru@11.0.1: resolution: {integrity: sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==} @@ -5924,7 +6436,6 @@ packages: engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -5975,6 +6486,62 @@ packages: typescript: 5.2.2 dev: true + /ts-node@10.9.1(@types/node@18.17.12)(typescript@5.2.2): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.17.12 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-patch@3.0.2: + resolution: {integrity: sha512-iTg8euqiNsNM1VDfOsVIsP0bM4kAVXU38n7TGQSkky7YQX/syh6sDPIRkvSS0HjT8ZOr0pq1h+5Le6jdB3hiJQ==} + hasBin: true + dependencies: + chalk: 4.1.2 + global-prefix: 3.0.0 + minimist: 1.2.8 + resolve: 1.22.4 + semver: 7.5.4 + strip-ansi: 6.0.1 + dev: true + + /tsconfck@2.1.2(typescript@5.2.2): + resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} + engines: {node: ^14.13.1 || ^16 || >=18} + hasBin: true + peerDependencies: + typescript: ^4.3.5 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.2.2 + dev: true + /tsconfig-paths-webpack-plugin@4.1.0: resolution: {integrity: sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==} engines: {node: '>=10.13.0'} @@ -5989,7 +6556,7 @@ packages: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 - minimist: 1.2.7 + minimist: 1.2.8 strip-bom: 3.0.0 dev: true @@ -6016,6 +6583,10 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tstl@2.5.13: + resolution: {integrity: sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==} + dev: true + /tv4@1.3.0: resolution: {integrity: sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==} engines: {node: '>= 0.8.0'} @@ -6056,6 +6627,10 @@ packages: /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} + + /type-fest@0.3.1: + resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} + engines: {node: '>=6'} dev: true /type-fest@1.4.0: @@ -6068,6 +6643,16 @@ packages: engines: {node: '>=12.20'} dev: false + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + /typescript@5.1.6: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} @@ -6078,7 +6663,18 @@ packages: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true - dev: true + + /typia@4.3.3(typescript@5.2.2): + resolution: {integrity: sha512-i6E2NwCI7wIJuHmYZEWbaMQFJ7Ax9PKN7tHTKhq3NtUGboITpqKajFdW5VVrbzF1ztgm0SwJxjrbOOoZt57FCg==} + hasBin: true + peerDependencies: + typescript: '>= 4.7.4' + dependencies: + commander: 10.0.1 + comment-json: 4.2.3 + inquirer: 8.2.6 + randexp: 0.5.3 + typescript: 5.2.2 /ufo@1.3.0: resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} @@ -6107,7 +6703,6 @@ packages: /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - dev: true /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -6139,6 +6734,10 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /utils-merge@1.0.1: + resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + engines: {node: '>= 0.4.0'} + /uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. @@ -6148,12 +6747,19 @@ packages: /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true - dev: false + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true /validator@13.7.0: resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} engines: {node: '>= 0.10'} + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + /vite-node@0.34.3(@types/node@18.17.12): resolution: {integrity: sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==} engines: {node: '>=v14.18.0'} @@ -6316,7 +6922,6 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.3 - dev: true /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -6405,6 +7010,13 @@ packages: tr46: 0.0.3 webidl-conversions: 3.0.1 + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -6446,7 +7058,6 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} @@ -6521,6 +7132,10 @@ packages: resolution: {integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==} dev: true + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -6569,6 +7184,11 @@ packages: yargs-parser: 21.1.1 dev: true + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} diff --git a/shared/global/consola.global.ts b/shared/global/consola.global.ts index b416eb574..eeb0dd26c 100644 --- a/shared/global/consola.global.ts +++ b/shared/global/consola.global.ts @@ -3,7 +3,7 @@ import consola_, { FancyReporter, LogLevel } from 'consola'; import { CronJob } from 'cron'; import { createWriteStream } from 'fs'; import { resolve } from 'path'; -import { argv } from 'zx-cjs'; +import { argv, chalk } from 'zx-cjs'; import { CronExpression } from '@nestjs/schedule'; diff --git a/shared/global/index.global.ts b/shared/global/index.global.ts index e2a92d8d6..05d9cfcb8 100644 --- a/shared/global/index.global.ts +++ b/shared/global/index.global.ts @@ -3,7 +3,6 @@ import { Logger } from '@nestjs/common'; import { chalk, $ } from 'zx-cjs'; import { mkdirSync } from 'fs'; -import 'zx-cjs/globals'; import { DATA_DIR, LOG_DIR, diff --git a/shared/utils/files.util.ts b/shared/utils/files.util.ts index 6fd48a374..d8da5f9a8 100644 --- a/shared/utils/files.util.ts +++ b/shared/utils/files.util.ts @@ -1,4 +1,5 @@ import { lookup } from "mime-types"; +import { fs, path } from "zx-cjs"; export function convertFileSize(size: number) { const units = ['B', 'KB', 'MB', 'GB', 'TB']; diff --git a/tsconfig.json b/tsconfig.json index 32fd07292..3264d0a5f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -62,7 +62,36 @@ "@libs/config/*": [ "libs/config/src/*" ] - } + }, + "plugins": [ + { + "transform": "@nestia/core/lib/transform", + /** + * Validate request body. + * + * - "assert": Use typia.assert() function + * - "is": Use typia.is() function + * - "validate": Use typia.validate() function + * - "assertEquals": Use typia.assertEquals() function + * - "equals": Use typia.equals() function + * - "validateEquals": Use typia.validateEquals() function + */ + "validate": "assert", + /** + * Validate JSON typed response body. + * + * - "assert": Use typia.assertStringify() function + * - "is": Use typia.isStringify() function + * - "validate": Use typia.validateStringify() function + * - "stringify": Use typia.stringify() function, but dangerous + * - null: Just use JSON.stringify() function, without boosting + */ + "stringify": "assert" + }, + { + "transform": "typia/lib/transform" + } + ] }, "exclude": [ "dist",