phecda-server 5.0.2 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -108
- package/bin/cli.mjs +189 -186
- package/bin/schema.json +55 -55
- package/dist/{chunk-F5YWXY5W.js → chunk-423JPSEB.js} +18 -17
- package/dist/chunk-423JPSEB.js.map +1 -0
- package/dist/chunk-4R55T3HG.js +253 -0
- package/dist/chunk-4R55T3HG.js.map +1 -0
- package/dist/chunk-4YVAW3L4.mjs +76 -0
- package/dist/chunk-4YVAW3L4.mjs.map +1 -0
- package/dist/{chunk-W5EOVGQD.mjs → chunk-5DOVDDO7.mjs} +3 -2
- package/dist/chunk-5DOVDDO7.mjs.map +1 -0
- package/dist/{chunk-BXLBWRHS.js → chunk-5WQ2SMIK.js} +39 -38
- package/dist/chunk-5WQ2SMIK.js.map +1 -0
- package/dist/chunk-6MQP6OHU.mjs +295 -0
- package/dist/chunk-6MQP6OHU.mjs.map +1 -0
- package/dist/chunk-6Q2PCC3A.mjs +295 -0
- package/dist/chunk-6Q2PCC3A.mjs.map +1 -0
- package/dist/chunk-6UQYEBAN.js +253 -0
- package/dist/chunk-6UQYEBAN.js.map +1 -0
- package/dist/chunk-6W7CGOZC.mjs +565 -0
- package/dist/chunk-6W7CGOZC.mjs.map +1 -0
- package/dist/{chunk-YR5Q5F2K.js → chunk-7Y37NSBM.js} +1 -0
- package/dist/chunk-7Y37NSBM.js.map +1 -0
- package/dist/{chunk-RCTOVYZY.mjs → chunk-BQBSVGMG.mjs} +2 -1
- package/dist/chunk-BQBSVGMG.mjs.map +1 -0
- package/dist/chunk-BZP6GKM6.mjs +565 -0
- package/dist/chunk-BZP6GKM6.mjs.map +1 -0
- package/dist/{chunk-ITTD2GBR.mjs → chunk-C5JAHCS2.mjs} +1 -0
- package/dist/chunk-C5JAHCS2.mjs.map +1 -0
- package/dist/chunk-DTBKDALR.mjs +295 -0
- package/dist/chunk-DTBKDALR.mjs.map +1 -0
- package/dist/chunk-GHOKWS5V.js +295 -0
- package/dist/chunk-GHOKWS5V.js.map +1 -0
- package/dist/chunk-H4N6SHNG.mjs +76 -0
- package/dist/chunk-H4N6SHNG.mjs.map +1 -0
- package/dist/chunk-ICYHM4UM.js +565 -0
- package/dist/chunk-ICYHM4UM.js.map +1 -0
- package/dist/chunk-LOLXPM4J.mjs +529 -0
- package/dist/chunk-LOLXPM4J.mjs.map +1 -0
- package/dist/chunk-MSS6A2TU.js +585 -0
- package/dist/chunk-MSS6A2TU.js.map +1 -0
- package/dist/{chunk-AB4OX3WV.mjs → chunk-NEM3FY7C.mjs} +2 -1
- package/dist/chunk-NEM3FY7C.mjs.map +1 -0
- package/dist/chunk-OTHER3YM.mjs +253 -0
- package/dist/chunk-OTHER3YM.mjs.map +1 -0
- package/dist/chunk-Q2FYFIEY.js +295 -0
- package/dist/chunk-Q2FYFIEY.js.map +1 -0
- package/dist/chunk-QG4X6H5Y.js +565 -0
- package/dist/chunk-QG4X6H5Y.js.map +1 -0
- package/dist/chunk-QIEZ6YTG.mjs +295 -0
- package/dist/chunk-QIEZ6YTG.mjs.map +1 -0
- package/dist/chunk-QOAKHCM7.js +295 -0
- package/dist/chunk-QOAKHCM7.js.map +1 -0
- package/dist/chunk-QVUD6L5X.js +565 -0
- package/dist/chunk-QVUD6L5X.js.map +1 -0
- package/dist/{chunk-YERBWZCS.js → chunk-RGLTGKAU.js} +64 -63
- package/dist/chunk-RGLTGKAU.js.map +1 -0
- package/dist/chunk-SHRK3TVB.js +295 -0
- package/dist/chunk-SHRK3TVB.js.map +1 -0
- package/dist/chunk-TCH6S42Z.js +529 -0
- package/dist/chunk-TCH6S42Z.js.map +1 -0
- package/dist/chunk-UCGRFVHC.mjs +253 -0
- package/dist/chunk-UCGRFVHC.mjs.map +1 -0
- package/dist/chunk-VOISXWVF.mjs +295 -0
- package/dist/chunk-VOISXWVF.mjs.map +1 -0
- package/dist/chunk-W6BC5INO.mjs +295 -0
- package/dist/chunk-W6BC5INO.mjs.map +1 -0
- package/dist/chunk-X5WQRO4R.js +295 -0
- package/dist/chunk-X5WQRO4R.js.map +1 -0
- package/dist/chunk-XDMCVVD3.mjs +585 -0
- package/dist/chunk-XDMCVVD3.mjs.map +1 -0
- package/dist/chunk-XNTMYLK6.js +76 -0
- package/dist/chunk-XNTMYLK6.js.map +1 -0
- package/dist/chunk-Y6LI4FDO.js +537 -0
- package/dist/chunk-Y6LI4FDO.js.map +1 -0
- package/dist/chunk-YZ2AQ6IL.mjs +537 -0
- package/dist/chunk-YZ2AQ6IL.mjs.map +1 -0
- package/dist/chunk-Z4YJHEXT.js +76 -0
- package/dist/chunk-Z4YJHEXT.js.map +1 -0
- package/dist/chunk-ZE336SKZ.js +295 -0
- package/dist/chunk-ZE336SKZ.js.map +1 -0
- package/dist/chunk-ZJD235TO.mjs +565 -0
- package/dist/chunk-ZJD235TO.mjs.map +1 -0
- package/dist/core-39f27fe8.d.ts +131 -0
- package/dist/core-930ea883.d.ts +131 -0
- package/dist/core-eb646fe5.d.ts +139 -0
- package/dist/helper-06d25b37.d.ts +19 -0
- package/dist/helper-48454c0b.d.ts +20 -0
- package/dist/helper-6133f78f.d.ts +18 -0
- package/dist/helper-867a598d.d.ts +18 -0
- package/dist/helper-88b19c66.d.ts +12 -0
- package/dist/helper-9e206c66.d.ts +12 -0
- package/dist/helper-fcbf6aa8.d.ts +20 -0
- package/dist/index.d.ts +27 -32
- package/dist/index.js +45 -40
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +15 -10
- package/dist/index.mjs.map +1 -0
- package/dist/rpc/bullmq/index.d.ts +10 -6
- package/dist/rpc/bullmq/index.js +33 -53
- package/dist/rpc/bullmq/index.js.map +1 -0
- package/dist/rpc/bullmq/index.mjs +27 -47
- package/dist/rpc/bullmq/index.mjs.map +1 -0
- package/dist/rpc/kafka/index.d.ts +10 -4
- package/dist/rpc/kafka/index.js +21 -37
- package/dist/rpc/kafka/index.js.map +1 -0
- package/dist/rpc/kafka/index.mjs +16 -32
- package/dist/rpc/kafka/index.mjs.map +1 -0
- package/dist/rpc/nats/index.d.ts +2 -2
- package/dist/rpc/nats/index.js +21 -34
- package/dist/rpc/nats/index.js.map +1 -0
- package/dist/rpc/nats/index.mjs +14 -27
- package/dist/rpc/nats/index.mjs.map +1 -0
- package/dist/rpc/rabbitmq/index.d.ts +2 -2
- package/dist/rpc/rabbitmq/index.js +24 -37
- package/dist/rpc/rabbitmq/index.js.map +1 -0
- package/dist/rpc/rabbitmq/index.mjs +15 -28
- package/dist/rpc/rabbitmq/index.mjs.map +1 -0
- package/dist/rpc/redis/index.d.ts +10 -4
- package/dist/rpc/redis/index.js +24 -37
- package/dist/rpc/redis/index.js.map +1 -0
- package/dist/rpc/redis/index.mjs +17 -30
- package/dist/rpc/redis/index.mjs.map +1 -0
- package/dist/server/elysia/index.d.ts +4 -3
- package/dist/server/elysia/index.js +78 -94
- package/dist/server/elysia/index.js.map +1 -0
- package/dist/server/elysia/index.mjs +75 -91
- package/dist/server/elysia/index.mjs.map +1 -0
- package/dist/server/express/index.d.ts +5 -4
- package/dist/server/express/index.js +80 -93
- package/dist/server/express/index.js.map +1 -0
- package/dist/server/express/index.mjs +78 -91
- package/dist/server/express/index.mjs.map +1 -0
- package/dist/server/fastify/index.d.ts +8 -5
- package/dist/server/fastify/index.js +84 -102
- package/dist/server/fastify/index.js.map +1 -0
- package/dist/server/fastify/index.mjs +80 -98
- package/dist/server/fastify/index.mjs.map +1 -0
- package/dist/server/h3/index.d.ts +5 -4
- package/dist/server/h3/index.js +82 -97
- package/dist/server/h3/index.js.map +1 -0
- package/dist/server/h3/index.mjs +81 -96
- package/dist/server/h3/index.mjs.map +1 -0
- package/dist/server/hono/index.d.ts +5 -4
- package/dist/server/hono/index.js +74 -90
- package/dist/server/hono/index.js.map +1 -0
- package/dist/server/hono/index.mjs +73 -89
- package/dist/server/hono/index.mjs.map +1 -0
- package/dist/server/hyper-express/index.d.ts +6 -5
- package/dist/server/hyper-express/index.js +79 -96
- package/dist/server/hyper-express/index.js.map +1 -0
- package/dist/server/hyper-express/index.mjs +78 -95
- package/dist/server/hyper-express/index.mjs.map +1 -0
- package/dist/server/koa/index.d.ts +5 -4
- package/dist/server/koa/index.js +80 -92
- package/dist/server/koa/index.js.map +1 -0
- package/dist/server/koa/index.mjs +77 -89
- package/dist/server/koa/index.mjs.map +1 -0
- package/dist/test.d.ts +1 -1
- package/dist/test.js +7 -6
- package/dist/test.js.map +1 -0
- package/dist/test.mjs +3 -2
- package/dist/test.mjs.map +1 -0
- package/package.json +8 -7
- package/register/index.mjs +40 -40
- package/register/loader.mjs +341 -340
- package/register/utils.mjs +81 -81
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/exception/base.ts","../src/exception/validate.ts","../src/pipe.ts","../src/exception/undefine.ts","../src/exception/forbidden.ts","../src/exception/bad-request.ts","../src/exception/not-found.ts","../src/exception/conflict.ts","../src/exception/bad-gateway.ts","../src/exception/invalid-input.ts","../src/exception/media-type.ts","../src/exception/payload-large.ts","../src/exception/timeout.ts","../src/exception/unauthorized.ts","../src/exception/unavailable-service.ts","../src/exception/framework.ts","../src/exception/timer.ts","../src/exception/worker.ts","../src/hmr.ts","../src/server/helper.ts","../src/rpc/helper.ts","../src/decorators/helper.ts","../src/context.ts","../src/filter.ts","../src/history.ts"],"sourcesContent":["import { ERROR_SYMBOL } from '../common'\r\n\r\nexport class Exception extends Error {\r\n constructor(public message: string, public status = 0, public description = 'Exception') {\r\n super(message)\r\n }\r\n\r\n get data() {\r\n return { message: this.message, description: this.description, status: this.status, [ERROR_SYMBOL]: true }\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ValidateException extends Exception {\r\n constructor(message: string) {\r\n super(message, 400, 'Validate exception')\r\n }\r\n}\r\n","import { isPhecda, plainToClass, transformInstance } from 'phecda-core'\r\nimport { ValidateException } from './exception/validate'\r\n\r\nimport type { PipeType } from './context'\r\n\r\nexport const defaultPipe: PipeType = ({ arg, reflect, index }) => {\r\n if (isPhecda(reflect)) {\r\n const instance = plainToClass(reflect, arg)\r\n const err = transformInstance(instance)\r\n if (err.length > 0)\r\n throw new ValidateException(err[0])\r\n\r\n arg = instance\r\n }\r\n else {\r\n if (arg === undefined && !reflect)\r\n return undefined\r\n\r\n if ([Number, Boolean].includes(reflect)) {\r\n arg = reflect(arg)\r\n\r\n if (reflect === Number && Object.is(arg, NaN))\r\n throw new ValidateException(`parameter ${Number(index) + 1} should be a number`)\r\n }\r\n }\r\n return arg\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class UndefinedException extends Exception {\r\n constructor(message: string) {\r\n super(message, 500, 'Undefined error')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ForbiddenException extends Exception {\r\n constructor(message: string) {\r\n super(message, 403, 'Forbidden resource')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class BadRequestException extends Exception {\r\n constructor(message: string) {\r\n super(message, 400, 'Bad Request')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class NotFoundException extends Exception {\r\n constructor(message: string) {\r\n super(message, 404, 'Not Found')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ConflictException extends Exception {\r\n constructor(message: string) {\r\n super(message, 409, 'Conflict')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class BadGatewayException extends Exception {\r\n constructor(message: string) {\r\n super(message, 502, 'Bad Gatrway')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class InvalidInputException extends Exception {\r\n constructor(message: string) {\r\n super(message, 502, 'Invalid Input')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class UnsupportedMediaTypeException extends Exception {\r\n constructor(message: string) {\r\n super(message, 415, 'Unsupported Media Type')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class PayloadLargeException extends Exception {\r\n constructor(message: string) {\r\n super(message, 413, 'Payload Too Large')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class TimeoutException extends Exception {\r\n constructor(message: string) {\r\n super(message, 408, 'Request Timeout',\r\n )\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class UnauthorizedException extends Exception {\r\n constructor(message: string) {\r\n super(message, 401, 'Unauthorized')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class ServiceUnavailableException extends Exception {\r\n constructor(message: string) {\r\n super(message, 503, 'Service Unavailable')\r\n }\r\n}\r\n","import { Exception } from './base'\r\n\r\nexport class FrameworkException extends Exception {\r\n constructor(message: string) {\r\n super(`[phecda-server] ${message}`, 500, 'Framework Error')\r\n }\r\n}\r\n","import { Exception } from './base'\r\nexport class TimerException extends Exception {\r\n constructor(message: string) {\r\n super(message, 0, 'Timer Error')\r\n }\r\n}\r\n","import { Exception } from './base'\r\nexport class WorkerException extends Exception {\r\n constructor(message: string) {\r\n super(message, 0, 'Worker Error')\r\n }\r\n}\r\n","import { IS_HMR } from './common'\r\nexport function HMR(cb: (...args: any) => any) {\r\n if (IS_HMR)\r\n globalThis.__PS_HMR__?.push(cb)\r\n}\r\n","import { IncomingHttpHeaders } from 'node:http'\r\nimport { BaseContext, DefaultOptions } from '../types'\r\nimport type { ControllerMetaData } from '../meta'\r\n\r\nexport function resolveDep(ret: any, key: string) {\r\n if (key)\r\n return ret?.[key]\r\n return ret\r\n}\r\n\r\nexport interface HttpOptions extends DefaultOptions {\r\n\r\n /**\r\n * 专用路由的值,默认为/__PHECDA_SERVER__,处理phecda-client发出的合并请求\r\n */\r\n route?: string\r\n\r\n /**\r\n * 专用路由的插件(work for merge request),\r\n */\r\n plugins?: string[]\r\n\r\n}\r\n\r\nexport interface HttpContext extends BaseContext {\r\n parallel?: true\r\n index?: number\r\n query: Record<string, any>\r\n params: Record<string, string>\r\n body: Record<string, any>\r\n headers: IncomingHttpHeaders\r\n // redirect:(url:string)=>void\r\n\r\n}\r\nexport function argToReq(params: ControllerMetaData['params'], args: any[], headers: Record<string, any>) {\r\n const req = {\r\n body: {},\r\n query: {},\r\n params: {},\r\n headers,\r\n } as any\r\n\r\n params.forEach((param) => {\r\n if (param.key)\r\n req[param.type][param.key] = args[param.index]\r\n\r\n else\r\n req[param.type] = args[param.index]\r\n })\r\n\r\n return req\r\n}\r\n","import { hostname } from 'os'\r\nimport { BaseContext, DefaultOptions } from '../types'\r\n\r\nexport function genClientQueue(key?: string) {\r\n return `PS-${key ? `${key}-` : ''}${hostname()}-${process.pid}`\r\n}\r\n\r\nexport interface RpcServerOptions extends DefaultOptions {\r\n\r\n}\r\n\r\nexport interface RpcClientOptions {\r\n // add to clientQueue\r\n key?: string\r\n timeout?: number\r\n max?: number\r\n}\r\nexport interface RpcContext extends BaseContext {\r\n args: any[]\r\n id: string\r\n queue: string\r\n isEvent?: boolean\r\n}\r\n","export function shallowClone(obj: any) {\r\n return { ...obj }\r\n}\r\nexport function mergeObject(...args: any[]) {\r\n return Object.assign({}, ...args)\r\n}\r\nexport function mergeArray(...args: any[]) {\r\n return args.filter(item => !!item).flat()\r\n}\r\n","import pc from 'picocolors'\r\nimport Debug from 'debug'\r\nimport { defaultPipe } from './pipe'\r\nimport { ForbiddenException, FrameworkException } from './exception'\r\nimport { defaultFilter } from './filter'\r\nimport { Histroy } from './history'\r\nimport type { BaseContext, DefaultOptions } from './types'\r\nimport { IS_HMR, IS_STRICT } from './common'\r\nimport type { ControllerMeta, Meta } from './meta'\r\nimport { log } from './utils'\r\nimport type { Exception } from './exception'\r\nimport { resolveDep } from './helper'\r\n\r\nconst debug = Debug('phecda-server(Context)')\r\n\r\nexport interface PipeArg { arg: any; pipe?: string; key: string; type: string; index: number; reflect: any; define: Record<string, any> }\r\nexport type GuardType<C extends BaseContext = any> = ((ctx: C) => Promise<boolean> | boolean)\r\nexport type InterceptorType<C extends BaseContext = any> = (ctx: C) => (any | ((ret: any) => any))\r\nexport type PipeType<C extends BaseContext = any> = (arg: PipeArg, ctx: C) => Promise<any>\r\nexport type FilterType<C extends BaseContext = any, E extends Exception = any> = (err: E | Error, ctx?: C) => Error | any\r\n\r\nexport class Context<Data extends BaseContext> {\r\n method: string\r\n params: string[]\r\n history = new Histroy()\r\n\r\n static filterRecord: Record<PropertyKey, FilterType> = {\r\n default: defaultFilter,\r\n }\r\n\r\n static pipeRecord: Record<PropertyKey, PipeType> = {\r\n default: defaultPipe,\r\n }\r\n\r\n static guardRecord: Record<PropertyKey, GuardType> = {}\r\n static interceptorRecord: Record<PropertyKey, InterceptorType> = {}\r\n\r\n static pluginRecord: Record<PropertyKey, any> = {}\r\n private postInterceptors: Function[]\r\n\r\n constructor(public data: Data) {\r\n if (IS_HMR)\r\n // @ts-expect-error work for debug\r\n data._context = this\r\n }\r\n\r\n public async run<ReturnData = any, ReturnErr = any>(opts: DefaultOptions, successCb: (data: any) => ReturnData, failCb: (err: any) => ReturnErr) {\r\n const { meta, moduleMap } = this.data\r\n const { globalGuards = [], globalFilter, globalInterceptors = [], globalPipe } = opts\r\n const {\r\n paramsType,\r\n data: {\r\n guards, interceptors, params,\r\n tag, func, ctx, filter,\r\n\r\n },\r\n } = meta\r\n\r\n try {\r\n await this.useGuard([...globalGuards, ...guards])\r\n const i1 = await this.useInterceptor([...globalInterceptors, ...interceptors])\r\n if (i1 !== undefined)\r\n return successCb(i1)\r\n\r\n const args = await this.usePipe(params.map((param) => {\r\n return { arg: resolveDep(this.data[param.type], param.key), reflect: paramsType[param.index], ...param, pipe: param.pipe || globalPipe }\r\n }))\r\n const instance = moduleMap.get(tag)!\r\n if (ctx)\r\n instance[ctx] = this.data\r\n const returnData = await instance[func](...args)\r\n const i2 = await this.usePostInterceptor(returnData)\r\n if (i2 !== undefined)\r\n return successCb(i2)\r\n\r\n return successCb(returnData)\r\n }\r\n catch (e) {\r\n const err = await this.useFilter(e, filter || globalFilter)\r\n return failCb(err)\r\n }\r\n }\r\n\r\n private usePipe(args: PipeArg[]) {\r\n return Promise.all(args.map((item) => {\r\n if (item.pipe && !Context.pipeRecord[item.pipe]) {\r\n if (IS_STRICT) {\r\n throw new FrameworkException(`can't find pipe named '${item.pipe}'`)\r\n }\r\n\r\n else {\r\n debug(`Can't find pipe named \"${item.pipe}\" when handling the ${item.index + 1}th argument of the func \"${this.data.func}\" on module \"${this.data.tag}\",use default pipe instead`)\r\n\r\n return Context.pipeRecord.default(item, this.data)\r\n }\r\n }\r\n\r\n return Context.pipeRecord[item.pipe || 'default'](item, this.data)\r\n }))\r\n }\r\n\r\n private useFilter(arg: any, filter = 'default') {\r\n if (!Context.filterRecord[filter]) {\r\n if (IS_STRICT) {\r\n throw new FrameworkException(`can't find filter named \"${filter}\"`)\r\n }\r\n else {\r\n debug(`Can't find filter named \"${filter}\" when handling func \"${this.data.func}\" on module \"${this.data.tag}\",use default filter instead`)\r\n\r\n return Context.filterRecord.default(arg, this.data)\r\n }\r\n }\r\n\r\n return Context.filterRecord[filter](arg, this.data)\r\n }\r\n\r\n private async useGuard(guards: string[]) {\r\n for (const guard of guards) {\r\n if (this.history.record(guard, 'guard')) {\r\n if (!(guard in Context.guardRecord)) {\r\n if (IS_STRICT)\r\n throw new FrameworkException(`Can't find guard named \"${guard}\"`)\r\n else debug(`Can't find guard named \"${guard}\" when handling func \"${this.data.func}\" on module \"${this.data.tag}\",skip it`)\r\n continue\r\n }\r\n if (!await Context.guardRecord[guard](this.data))\r\n throw new ForbiddenException(`Guard exception--[${guard}]`)\r\n }\r\n }\r\n }\r\n\r\n private async usePostInterceptor(data: any) {\r\n for (const cb of this.postInterceptors) {\r\n const ret = await cb(data)\r\n if (ret !== undefined)\r\n return ret\r\n }\r\n }\r\n\r\n private async useInterceptor(interceptors: string[]) {\r\n const cb = []\r\n for (const interceptor of interceptors) {\r\n if (this.history.record(interceptor, 'interceptor')) {\r\n if (!(interceptor in Context.interceptorRecord)) {\r\n if (IS_STRICT)\r\n throw new FrameworkException(`can't find interceptor named \"${interceptor}\"`)\r\n else debug(`Can't find interceptor named \"${interceptor}\" when handling func \"${this.data.func}\" on module \"${this.data.tag}\",skip it`)\r\n\r\n continue\r\n }\r\n const interceptRet = await Context.interceptorRecord[interceptor](this.data)\r\n if (interceptRet !== undefined) {\r\n if (typeof interceptRet === 'function')\r\n cb.push(interceptRet)\r\n\r\n else\r\n return interceptRet\r\n }\r\n }\r\n }\r\n this.postInterceptors = cb\r\n }\r\n\r\n static usePlugin(plugins: string[]) {\r\n const ret = []\r\n for (const m of plugins) {\r\n if (!(m in Context.pluginRecord)) {\r\n if (IS_STRICT)\r\n throw new FrameworkException(`can't find middleware named '${m}'`)\r\n\r\n continue\r\n }\r\n ret.push(Context.pluginRecord[m])\r\n }\r\n return ret as any[]\r\n }\r\n}\r\n\r\nexport function addPlugin<T>(key: PropertyKey, handler: T) {\r\n if (Context.pluginRecord[key] && Context.pluginRecord[key] !== handler)\r\n log(`overwrite Plugin \"${String(key)}\"`, 'warn')\r\n\r\n Context.pluginRecord[key] = handler\r\n}\r\n\r\nexport function addPipe<C extends BaseContext>(key: PropertyKey, handler: PipeType<C>) {\r\n if (Context.pipeRecord[key] && Context.pipeRecord[key] !== handler)\r\n log(`overwrite Pipe \"${String(key)}\"`, 'warn')\r\n Context.pipeRecord[key] = handler\r\n}\r\n\r\nexport function addFilter<C extends BaseContext>(key: PropertyKey, handler: FilterType<C>) {\r\n if (Context.filterRecord[key] && Context.filterRecord[key] !== handler)\r\n log(`overwrite Filter \"${String(key)}\"`, 'warn')\r\n Context.filterRecord[key] = handler\r\n}\r\n\r\nexport function addGuard<C extends BaseContext>(key: PropertyKey, handler: GuardType<C>) {\r\n if (Context.guardRecord[key] && Context.guardRecord[key] !== handler)\r\n log(`overwrite Guard \"${String(key)}\"`, 'warn')\r\n Context.guardRecord[key] = handler\r\n}\r\n\r\nexport function addInterceptor<C extends BaseContext>(key: PropertyKey, handler: InterceptorType<C>) {\r\n if (Context.interceptorRecord[key] && Context.interceptorRecord[key] !== handler)\r\n log(`overwrite Interceptor \"${String(key)}\"`, 'warn')\r\n Context.interceptorRecord[key] = handler\r\n}\r\n\r\n// detect whether plugin/filter/pipe/guard/intercept is injected\r\nexport function detectAopDep(meta: Meta[], { guards, interceptors, plugins }: {\r\n guards?: string[]\r\n interceptors?: string[]\r\n plugins?: string[]\r\n} = {}, controller: string = 'http') {\r\n const pluginSet = new Set<string>(plugins)\r\n\r\n const guardSet = new Set<string>(guards)\r\n const interceptorSet = new Set<string>(interceptors)\r\n const pipeSet = new Set<string>()\r\n const filterSet = new Set<string>()\r\n const warningSet = new Set<string>();\r\n\r\n (meta as ControllerMeta[]).forEach(({ data }) => {\r\n if (data.controller !== controller) {\r\n if (data[controller])\r\n warningSet.add(`Module \"${data.tag === data.name ? data.name : `${data.name}(${data.tag})`}\" should use ${controller} controller to decorate class or remove ${controller} decorator on method \"${data.func}\"`)\r\n\r\n return\r\n }\r\n if (data.filter)\r\n filterSet.add(data.filter)\r\n\r\n data.interceptors.forEach(i => interceptorSet.add(i))\r\n data.guards.forEach(i => guardSet.add(i))\r\n data.plugins.forEach(i => pluginSet.add(i))\r\n data.params.forEach((i) => {\r\n if (i.pipe)\r\n pipeSet.add(i.pipe)\r\n })\r\n })\r\n\r\n const missPlugins = [...pluginSet].filter(i => !Context.pluginRecord[i])\r\n const missGuards = [...guardSet].filter(i => !Context.guardRecord[i])\r\n const missInterceptors = [...interceptorSet].filter(i => !Context.interceptorRecord[i])\r\n const missPipes = [...pipeSet].filter(i => !Context.pipeRecord[i])\r\n const missFilters = [...filterSet].filter(i => !Context.filterRecord[i])\r\n\r\n if (missPlugins.length)\r\n log(`${pc.white(`Plugin [${missPlugins.join(',')}]`)} doesn't exist`, 'warn')\r\n if (missGuards.length)\r\n log(`${pc.magenta(`Guard [${missGuards.join(',')}]`)} doesn't exist`, 'warn')\r\n\r\n if (missInterceptors.length)\r\n log(`${pc.cyan(`Interceptor [${missInterceptors.join(',')}]`)} doesn't exist`, 'warn')\r\n\r\n if (missPipes.length)\r\n log(`${pc.blue(`Pipe [${missPipes.join(',')}]`)} doesn't exist`, 'warn')\r\n\r\n if (missFilters.length)\r\n log(`${pc.red(`Filter [${missFilters.join(',')}]`)} doesn't exist`, 'warn')\r\n\r\n warningSet.forEach(warn => log(warn, 'warn'))\r\n\r\n return {\r\n missPlugins,\r\n missGuards,\r\n missInterceptors,\r\n missPipes,\r\n missFilters,\r\n }\r\n}\r\n","import { LOG_LEVEL } from './common'\r\nimport { Exception, UndefinedException } from './exception'\r\nimport { log } from './utils'\r\nimport type { FilterType } from './context'\r\n\r\nexport const defaultFilter: FilterType = (e) => {\r\n if (!(e instanceof Exception)) {\r\n log(e.message, 'error')\r\n if (LOG_LEVEL <= 0)\r\n console.error(e.stack)\r\n\r\n e = new UndefinedException(e.message || e)\r\n }\r\n else {\r\n log(`[${e.constructor.name}] ${e.message}`, 'error')\r\n if (LOG_LEVEL <= 0)\r\n console.error(e.stack)\r\n }\r\n\r\n return e.data\r\n}\r\n","export class Histroy {\r\n guard: string[] = []\r\n interceptor: string[] = []\r\n record(name: string, type: 'guard' | 'interceptor') {\r\n if (!this[type].includes(name)) {\r\n this[type].push(name)\r\n return true\r\n }\r\n return false\r\n }\r\n}\r\n"],"mappings":"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","names":["Exception","Error","message","status","description","constructor","data","ERROR_SYMBOL","ValidateException","Exception","constructor","message","isPhecda","plainToClass","transformInstance","defaultPipe","arg","reflect","index","isPhecda","instance","plainToClass","err","transformInstance","length","ValidateException","undefined","Number","Boolean","includes","Object","is","NaN","UndefinedException","Exception","constructor","message","ForbiddenException","Exception","constructor","message","BadRequestException","Exception","constructor","message","NotFoundException","Exception","constructor","message","ConflictException","Exception","constructor","message","BadGatewayException","Exception","constructor","message","InvalidInputException","Exception","constructor","message","UnsupportedMediaTypeException","Exception","constructor","message","PayloadLargeException","Exception","constructor","message","TimeoutException","Exception","constructor","message","UnauthorizedException","Exception","constructor","message","ServiceUnavailableException","Exception","constructor","message","FrameworkException","Exception","constructor","message","TimerException","Exception","constructor","message","WorkerException","Exception","constructor","message","HMR","cb","IS_HMR","globalThis","__PS_HMR__","push","resolveDep","ret","key","argToReq","params","args","headers","req","body","query","forEach","param","type","index","hostname","genClientQueue","key","hostname","process","pid","shallowClone","obj","mergeObject","args","Object","assign","mergeArray","filter","item","flat","pc","Debug","defaultFilter","e","Exception","log","message","LOG_LEVEL","console","error","stack","UndefinedException","constructor","name","data","Histroy","guard","interceptor","record","name","type","includes","push","debug","Debug","Context","data","method","params","history","postInterceptors","constructor","Histroy","IS_HMR","_context","run","opts","successCb","failCb","meta","moduleMap","globalGuards","globalFilter","globalInterceptors","globalPipe","paramsType","guards","interceptors","tag","func","ctx","filter","useGuard","i1","useInterceptor","undefined","args","usePipe","map","param","arg","resolveDep","type","key","reflect","index","pipe","instance","get","returnData","i2","usePostInterceptor","e","err","useFilter","Promise","all","item","pipeRecord","IS_STRICT","FrameworkException","default","filterRecord","guard","record","guardRecord","ForbiddenException","cb","ret","interceptor","interceptorRecord","interceptRet","push","usePlugin","plugins","m","pluginRecord","defaultFilter","defaultPipe","addPlugin","handler","log","String","addPipe","addFilter","addGuard","addInterceptor","detectAopDep","controller","pluginSet","Set","guardSet","interceptorSet","pipeSet","filterSet","warningSet","forEach","add","name","i","missPlugins","missGuards","missInterceptors","missPipes","missFilters","length","pc","white","join","magenta","cyan","blue","red","warn"]}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IS_HMR,
|
|
3
|
+
IS_ONLY_GENERATE,
|
|
4
|
+
__name,
|
|
5
|
+
log
|
|
6
|
+
} from "./chunk-C5JAHCS2.mjs";
|
|
7
|
+
|
|
8
|
+
// src/meta.ts
|
|
9
|
+
var Meta = class {
|
|
10
|
+
data;
|
|
11
|
+
paramsType;
|
|
12
|
+
constructor(data, paramsType) {
|
|
13
|
+
this.data = data;
|
|
14
|
+
this.paramsType = paramsType;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
__name(Meta, "Meta");
|
|
18
|
+
|
|
19
|
+
// src/core.ts
|
|
20
|
+
import "reflect-metadata";
|
|
21
|
+
import EventEmitter from "node:events";
|
|
22
|
+
import { get, getExposeKey, getInject, getState, getTag, invokeHandler, isPhecda, setInject } from "phecda-core";
|
|
23
|
+
import Debug from "debug";
|
|
24
|
+
var debug = Debug("phecda-server(Factory)");
|
|
25
|
+
var emitter = new EventEmitter();
|
|
26
|
+
async function Factory(models, opts = {}) {
|
|
27
|
+
const moduleMap = /* @__PURE__ */ new Map();
|
|
28
|
+
const meta = [];
|
|
29
|
+
const constructorMap = /* @__PURE__ */ new Map();
|
|
30
|
+
const constructorSet = /* @__PURE__ */ new WeakSet();
|
|
31
|
+
const dependenceGraph = /* @__PURE__ */ new Map();
|
|
32
|
+
const { parseModule = /* @__PURE__ */ __name((module) => module, "parseModule"), parseMeta = /* @__PURE__ */ __name((meta2) => meta2, "parseMeta"), generators } = opts;
|
|
33
|
+
if (!getInject("watcher")) {
|
|
34
|
+
setInject("watcher", ({ eventName, instance, key, options }) => {
|
|
35
|
+
const fn = typeof instance[key] === "function" ? instance[key].bind(instance) : (v) => instance[key] = v;
|
|
36
|
+
if (options?.once)
|
|
37
|
+
emitter.once(eventName, fn);
|
|
38
|
+
else
|
|
39
|
+
emitter.on(eventName, fn);
|
|
40
|
+
return () => {
|
|
41
|
+
emitter.off(eventName, fn);
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async function del(tag) {
|
|
46
|
+
if (!moduleMap.has(tag))
|
|
47
|
+
return;
|
|
48
|
+
const instance = moduleMap.get(tag);
|
|
49
|
+
debug(`unmount module "${String(tag)}"`);
|
|
50
|
+
await invokeHandler("unmount", instance);
|
|
51
|
+
debug(`del module "${String(tag)}"`);
|
|
52
|
+
moduleMap.delete(tag);
|
|
53
|
+
constructorMap.delete(tag);
|
|
54
|
+
for (let i = meta.length - 1; i >= 0; i--) {
|
|
55
|
+
if (meta[i].data.tag === tag)
|
|
56
|
+
meta.splice(i, 1);
|
|
57
|
+
}
|
|
58
|
+
return instance;
|
|
59
|
+
}
|
|
60
|
+
__name(del, "del");
|
|
61
|
+
async function destroy() {
|
|
62
|
+
debug("destroy all");
|
|
63
|
+
for (const [tag] of moduleMap)
|
|
64
|
+
await del(tag);
|
|
65
|
+
}
|
|
66
|
+
__name(destroy, "destroy");
|
|
67
|
+
async function add(Model) {
|
|
68
|
+
const tag = getTag(Model);
|
|
69
|
+
const oldInstance = await del(tag);
|
|
70
|
+
const { instance: newModule } = await buildDepModule(Model);
|
|
71
|
+
if (oldInstance && dependenceGraph.has(tag)) {
|
|
72
|
+
debug(`replace module "${String(tag)}"`);
|
|
73
|
+
[
|
|
74
|
+
...dependenceGraph.get(tag)
|
|
75
|
+
].forEach((tag2) => {
|
|
76
|
+
const module = moduleMap.get(tag2);
|
|
77
|
+
for (const key in module) {
|
|
78
|
+
if (module[key] === oldInstance)
|
|
79
|
+
module[key] = newModule;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
__name(add, "add");
|
|
85
|
+
async function buildDepModule(Model) {
|
|
86
|
+
const paramtypes = getParamTypes(Model);
|
|
87
|
+
let instance;
|
|
88
|
+
const tag = getTag(Model);
|
|
89
|
+
if (moduleMap.has(tag)) {
|
|
90
|
+
instance = moduleMap.get(tag);
|
|
91
|
+
if (!instance)
|
|
92
|
+
throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${String(tag)}--[module] ${Model}`);
|
|
93
|
+
if (constructorMap.get(tag) !== Model && !constructorSet.has(Model)) {
|
|
94
|
+
constructorSet.add(Model);
|
|
95
|
+
log(`Synonym module: Module taged "${String(tag)}" has been loaded before, so phecda-server won't load Module "${Model.name}"`, "warn");
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
instance,
|
|
99
|
+
tag
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
moduleMap.set(tag, void 0);
|
|
103
|
+
debug(`instantiate module "${String(tag)}"`);
|
|
104
|
+
if (paramtypes) {
|
|
105
|
+
const paramtypesInstances = [];
|
|
106
|
+
for (const i in paramtypes) {
|
|
107
|
+
const { instance: sub, tag: subTag } = await buildDepModule(paramtypes[i]);
|
|
108
|
+
paramtypesInstances[i] = sub;
|
|
109
|
+
if (!dependenceGraph.has(subTag))
|
|
110
|
+
dependenceGraph.set(subTag, /* @__PURE__ */ new Set());
|
|
111
|
+
dependenceGraph.get(subTag).add(tag);
|
|
112
|
+
}
|
|
113
|
+
instance = parseModule(new Model(...paramtypesInstances));
|
|
114
|
+
} else {
|
|
115
|
+
instance = parseModule(new Model());
|
|
116
|
+
}
|
|
117
|
+
meta.push(...getMetaFromInstance(instance, tag, Model.name).map(parseMeta).filter((item) => !!item));
|
|
118
|
+
debug(`init module "${String(tag)}"`);
|
|
119
|
+
if (!IS_ONLY_GENERATE)
|
|
120
|
+
await invokeHandler("init", instance);
|
|
121
|
+
debug(`add module "${String(tag)}"`);
|
|
122
|
+
moduleMap.set(tag, instance);
|
|
123
|
+
constructorMap.set(tag, Model);
|
|
124
|
+
return {
|
|
125
|
+
instance,
|
|
126
|
+
tag
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
__name(buildDepModule, "buildDepModule");
|
|
130
|
+
for (const model of models)
|
|
131
|
+
await buildDepModule(model);
|
|
132
|
+
async function generateCode() {
|
|
133
|
+
if (generators) {
|
|
134
|
+
return Promise.all(generators.map((generator) => {
|
|
135
|
+
debug(`generate "${generator.name}" code to ${generator.path}`);
|
|
136
|
+
return generator.output(meta);
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
__name(generateCode, "generateCode");
|
|
141
|
+
generateCode().then(() => {
|
|
142
|
+
if (IS_ONLY_GENERATE)
|
|
143
|
+
process.exit(4);
|
|
144
|
+
});
|
|
145
|
+
if (IS_HMR) {
|
|
146
|
+
if (!globalThis.__PS_HMR__)
|
|
147
|
+
globalThis.__PS_HMR__ = [];
|
|
148
|
+
globalThis.__PS_HMR__?.push(async (files) => {
|
|
149
|
+
debug("reload files ");
|
|
150
|
+
for (const file of files) {
|
|
151
|
+
const models2 = await import(file);
|
|
152
|
+
for (const i in models2) {
|
|
153
|
+
if (isPhecda(models2[i]))
|
|
154
|
+
await add(models2[i]);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
generateCode();
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
moduleMap,
|
|
162
|
+
constructorMap,
|
|
163
|
+
meta,
|
|
164
|
+
add,
|
|
165
|
+
del,
|
|
166
|
+
destroy
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
__name(Factory, "Factory");
|
|
170
|
+
function getMetaFromInstance(instance, tag, name) {
|
|
171
|
+
const vars = getExposeKey(instance).filter((item) => typeof item === "string");
|
|
172
|
+
const baseState = getState(instance);
|
|
173
|
+
initState(baseState);
|
|
174
|
+
const ctx = get(instance, "context");
|
|
175
|
+
return vars.filter((i) => typeof instance[i] === "function").map((i) => {
|
|
176
|
+
const state = getState(instance, i);
|
|
177
|
+
const meta = {
|
|
178
|
+
...state,
|
|
179
|
+
name,
|
|
180
|
+
tag,
|
|
181
|
+
func: i
|
|
182
|
+
};
|
|
183
|
+
if (baseState.controller) {
|
|
184
|
+
if (typeof tag !== "string")
|
|
185
|
+
log(`can't use Tag with ${typeof tag} on controller "${instance.constructor.name}",instead with "${tag = String(tag)}"`, "error");
|
|
186
|
+
initState(state);
|
|
187
|
+
meta.ctx = ctx;
|
|
188
|
+
meta.controller = baseState.controller;
|
|
189
|
+
meta[baseState.controller] = {
|
|
190
|
+
...baseState[baseState.controller],
|
|
191
|
+
...state[baseState.controller]
|
|
192
|
+
};
|
|
193
|
+
const params = [];
|
|
194
|
+
for (const i2 of state.params || []) {
|
|
195
|
+
if (!i2.pipe)
|
|
196
|
+
i2.pipe = state.pipe || baseState.pipe;
|
|
197
|
+
if (!i2.define)
|
|
198
|
+
i2.define = {};
|
|
199
|
+
params.unshift(i2);
|
|
200
|
+
if (i2.index === 0)
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
meta.params = params;
|
|
204
|
+
meta.filter = state.filter || baseState.filter;
|
|
205
|
+
meta.define = {
|
|
206
|
+
...baseState.define,
|
|
207
|
+
...state.define
|
|
208
|
+
};
|
|
209
|
+
meta.plugins = [
|
|
210
|
+
.../* @__PURE__ */ new Set([
|
|
211
|
+
...baseState.plugins,
|
|
212
|
+
...state.plugins
|
|
213
|
+
])
|
|
214
|
+
];
|
|
215
|
+
meta.guards = [
|
|
216
|
+
.../* @__PURE__ */ new Set([
|
|
217
|
+
...baseState.guards,
|
|
218
|
+
...state.guards
|
|
219
|
+
])
|
|
220
|
+
];
|
|
221
|
+
meta.interceptors = [
|
|
222
|
+
.../* @__PURE__ */ new Set([
|
|
223
|
+
...baseState.interceptors,
|
|
224
|
+
...state.interceptors
|
|
225
|
+
])
|
|
226
|
+
];
|
|
227
|
+
}
|
|
228
|
+
return new Meta(meta, getParamTypes(instance, i) || []);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
__name(getMetaFromInstance, "getMetaFromInstance");
|
|
232
|
+
function getParamTypes(Module, key) {
|
|
233
|
+
return Reflect.getMetadata("design:paramtypes", Module, key);
|
|
234
|
+
}
|
|
235
|
+
__name(getParamTypes, "getParamTypes");
|
|
236
|
+
function initState(state) {
|
|
237
|
+
if (!state.define)
|
|
238
|
+
state.define = {};
|
|
239
|
+
if (!state.plugins)
|
|
240
|
+
state.plugins = /* @__PURE__ */ new Set();
|
|
241
|
+
if (!state.guards)
|
|
242
|
+
state.guards = /* @__PURE__ */ new Set();
|
|
243
|
+
if (!state.interceptors)
|
|
244
|
+
state.interceptors = /* @__PURE__ */ new Set();
|
|
245
|
+
}
|
|
246
|
+
__name(initState, "initState");
|
|
247
|
+
|
|
248
|
+
export {
|
|
249
|
+
Meta,
|
|
250
|
+
emitter,
|
|
251
|
+
Factory
|
|
252
|
+
};
|
|
253
|
+
//# sourceMappingURL=chunk-OTHER3YM.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/meta.ts","../src/core.ts"],"sourcesContent":["import type { BaseRequestType } from './types'\r\n\r\nexport interface ServiceMetaData {\r\n func: string\r\n name: string\r\n tag: string\r\n define?: any\r\n [key: string]: any\r\n}\r\n\r\nexport interface ControllerMetaData extends ServiceMetaData {\r\n controller: string\r\n http?: {\r\n type: BaseRequestType\r\n prefix: string\r\n route: string\r\n headers?: Record<string, string>\r\n\r\n }\r\n rpc?: {\r\n queue?: string\r\n isEvent?: boolean\r\n }\r\n ctx?: string\r\n params: { type: string; index: number; key: string; pipe?: string; define: Record<string, any> }[]\r\n guards: string[]\r\n pipe?: string\r\n filter?: string\r\n interceptors: string[]\r\n plugins: string[]\r\n\r\n}\r\n\r\nexport type MetaData = ControllerMetaData | ServiceMetaData\r\n\r\nexport class Meta {\r\n constructor(public data: MetaData, public paramsType: any[]) {\r\n\r\n }\r\n}\r\n\r\nexport interface ControllerMeta extends Meta {\r\n data: ControllerMetaData\r\n}\r\n","import 'reflect-metadata'\r\nimport EventEmitter from 'node:events'\r\nimport type { Construct, Phecda, WatcherParam } from 'phecda-core'\r\nimport { get, getExposeKey, getInject, getState, getTag, invokeHandler, isPhecda, setInject } from 'phecda-core'\r\nimport Debug from 'debug'\r\nimport type { Emitter } from './types'\r\nimport type { MetaData } from './meta'\r\nimport { Meta } from './meta'\r\nimport { log } from './utils'\r\nimport { IS_HMR, IS_ONLY_GENERATE } from './common'\r\nimport type { Generator } from './generator'\r\n\r\nconst debug = Debug('phecda-server(Factory)')\r\n// TODO: support both emitter types and origin emitter type in future\r\nexport const emitter: Emitter = new EventEmitter() as any\r\n\r\nexport async function Factory(models: (new (...args: any) => any)[], opts: {\r\n parseModule?: (module: any) => any\r\n parseMeta?: (meta: Meta) => Meta | null | undefined\r\n generators?: Generator[]\r\n} = {}) {\r\n const moduleMap = new Map<PropertyKey, InstanceType<Construct>>()\r\n const meta: Meta[] = []\r\n const constructorMap = new Map()\r\n const constructorSet = new WeakSet()\r\n const dependenceGraph = new Map<PropertyKey, Set<PropertyKey>>()\r\n const { parseModule = (module: any) => module, parseMeta = (meta: any) => meta, generators } = opts\r\n if (!getInject('watcher')) {\r\n setInject('watcher', ({ eventName, instance, key, options }: WatcherParam) => {\r\n const fn = typeof instance[key] === 'function' ? instance[key].bind(instance) : (v: any) => instance[key] = v\r\n\r\n if (options?.once)\r\n (emitter as any).once(eventName, fn)\r\n\r\n else\r\n (emitter as any).on(eventName, fn)\r\n\r\n return () => {\r\n (emitter as any).off(eventName, fn)\r\n }\r\n })\r\n }\r\n\r\n // only remove module in moduleMap(won't remove indirect module)\r\n async function del(tag: PropertyKey) {\r\n if (!moduleMap.has(tag))\r\n return\r\n\r\n const instance = moduleMap.get(tag)\r\n\r\n debug(`unmount module \"${String(tag)}\"`)\r\n await invokeHandler('unmount', instance)\r\n debug(`del module \"${String(tag)}\"`)\r\n\r\n moduleMap.delete(tag)\r\n constructorMap.delete(tag)\r\n for (let i = meta.length - 1; i >= 0; i--) {\r\n if (meta[i].data.tag === tag)\r\n meta.splice(i, 1)\r\n }\r\n\r\n return instance\r\n }\r\n\r\n async function destroy() {\r\n debug('destroy all')\r\n\r\n for (const [tag] of moduleMap)\r\n await del(tag)\r\n }\r\n\r\n async function add(Model: Construct) {\r\n const tag = getTag(Model)\r\n const oldInstance = await del(tag)\r\n\r\n const { instance: newModule } = await buildDepModule(Model)\r\n\r\n if (oldInstance && dependenceGraph.has(tag)) {\r\n debug(`replace module \"${String(tag)}\"`);\r\n\r\n [...dependenceGraph.get(tag)!].forEach((tag) => {\r\n const module = moduleMap.get(tag)\r\n for (const key in module) {\r\n if (module[key] === oldInstance)\r\n module[key] = newModule\r\n }\r\n })\r\n }\r\n }\r\n\r\n async function buildDepModule(Model: Construct) {\r\n const paramtypes = getParamTypes(Model) as Construct[]\r\n let instance: InstanceType<Construct>\r\n const tag = getTag(Model)\r\n\r\n if (moduleMap.has(tag)) {\r\n instance = moduleMap.get(tag)\r\n if (!instance)\r\n throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${String(tag)}--[module] ${Model}`)\r\n\r\n if (constructorMap.get(tag) !== Model && !constructorSet.has(Model)) {\r\n constructorSet.add(Model)// a module will only warn once\r\n log(`Synonym module: Module taged \"${String(tag)}\" has been loaded before, so phecda-server won't load Module \"${Model.name}\"`, 'warn')\r\n }\r\n return { instance, tag }\r\n }\r\n moduleMap.set(tag, undefined)\r\n debug(`instantiate module \"${String(tag)}\"`)\r\n\r\n if (paramtypes) {\r\n const paramtypesInstances = [] as any[]\r\n for (const i in paramtypes) {\r\n const { instance: sub, tag: subTag } = await buildDepModule(paramtypes[i])\r\n paramtypesInstances[i] = sub\r\n if (!dependenceGraph.has(subTag))\r\n dependenceGraph.set(subTag, new Set())\r\n dependenceGraph.get(subTag)!.add(tag)\r\n }\r\n\r\n instance = parseModule(new Model(...paramtypesInstances))\r\n }\r\n else {\r\n instance = parseModule(new Model())\r\n }\r\n meta.push(...getMetaFromInstance(instance, tag, Model.name).map(parseMeta).filter(item => !!item))\r\n\r\n debug(`init module \"${String(tag)}\"`)\r\n\r\n if (!IS_ONLY_GENERATE)\r\n await invokeHandler('init', instance)\r\n\r\n debug(`add module \"${String(tag)}\"`)\r\n\r\n moduleMap.set(tag, instance)\r\n constructorMap.set(tag, Model)\r\n return { instance, tag }\r\n }\r\n\r\n for (const model of models)\r\n await buildDepModule(model)\r\n\r\n async function generateCode() {\r\n if (generators) {\r\n return Promise.all(generators.map((generator) => {\r\n debug(`generate \"${generator.name}\" code to ${generator.path}`)\r\n\r\n return generator.output(meta)\r\n }))\r\n }\r\n }\r\n\r\n generateCode().then(() => {\r\n if (IS_ONLY_GENERATE)\r\n process.exit(4)// only output code/work for ci\r\n })\r\n\r\n if (IS_HMR) { // for hmr\r\n if (!globalThis.__PS_HMR__)\r\n globalThis.__PS_HMR__ = []\r\n\r\n globalThis.__PS_HMR__?.push(async (files: string[]) => {\r\n debug('reload files ')\r\n\r\n for (const file of files) {\r\n const models = await import(file)\r\n for (const i in models) {\r\n if (isPhecda(models[i]))\r\n await add(models[i])\r\n }\r\n }\r\n generateCode()\r\n })\r\n }\r\n\r\n return {\r\n moduleMap,\r\n constructorMap,\r\n meta,\r\n add,\r\n del,\r\n destroy,\r\n }\r\n}\r\n\r\nfunction getMetaFromInstance(instance: Phecda, tag: PropertyKey, name: string) {\r\n const vars = getExposeKey(instance).filter(item => typeof item === 'string') as string[]\r\n const baseState = getState(instance) as MetaData\r\n initState(baseState)\r\n const ctx = get(instance, 'context')\r\n\r\n return vars.filter(i => typeof (instance as any)[i] === 'function').map((i) => {\r\n const state = getState(instance, i) as any\r\n\r\n const meta = {\r\n ...state,\r\n name,\r\n tag,\r\n func:\r\n i,\r\n } as MetaData\r\n if (baseState.controller) {\r\n if (typeof tag !== 'string')\r\n log(`can't use Tag with ${typeof tag} on controller \"${(instance as any).constructor.name}\",instead with \"${tag = String(tag)}\"`, 'error')\r\n initState(state)\r\n meta.ctx = ctx\r\n meta.controller = baseState.controller\r\n meta[baseState.controller] = {\r\n ...baseState[baseState.controller],\r\n ...state[baseState.controller],\r\n }\r\n\r\n const params = [] as any[]\r\n for (const i of state.params || []) {\r\n if (!i.pipe)\r\n i.pipe = state.pipe || baseState.pipe\r\n if (!i.define)\r\n i.define = {}\r\n\r\n params.unshift(i)\r\n if (i.index === 0)\r\n break\r\n }\r\n\r\n meta.params = params\r\n meta.filter = state.filter || baseState.filter\r\n meta.define = { ...baseState.define, ...state.define }\r\n meta.plugins = [...new Set([...baseState.plugins, ...state.plugins])]\r\n meta.guards = [...new Set([...baseState.guards, ...state.guards])]\r\n meta.interceptors = [...new Set([...baseState.interceptors, ...state.interceptors])]\r\n }\r\n return new Meta(meta as unknown as MetaData, getParamTypes(instance, i as string) || [])\r\n })\r\n}\r\n\r\nfunction getParamTypes(Module: any, key?: string | symbol) {\r\n return Reflect.getMetadata('design:paramtypes', Module, key!)\r\n}\r\n\r\nfunction initState(state: any) {\r\n if (!state.define)\r\n state.define = {}\r\n\r\n if (!state.plugins)\r\n state.plugins = new Set()\r\n if (!state.guards)\r\n state.guards = new Set()\r\n if (!state.interceptors)\r\n state.interceptors = new Set()\r\n}\r\n"],"mappings":";;;;;;;;AAmCO,IAAMA,OAAN,MAAMA;EACQC;EAAuBC;EAA1CC,YAAmBF,MAAuBC,YAAmB;gBAA1CD;sBAAuBC;EAE1C;AACF;AAJaF;;;ACnCb,OAAO;AACP,OAAOI,kBAAkB;AAEzB,SAASC,KAAKC,cAAcC,WAAWC,UAAUC,QAAQC,eAAeC,UAAUC,iBAAiB;AACnG,OAAOC,WAAW;AAQlB,IAAMC,QAAQC,MAAM,wBAAA;AAEb,IAAMC,UAAmB,IAAIC,aAAAA;AAEpC,eAAsBC,QAAQC,QAAuCC,OAIjE,CAAC,GAAG;AACN,QAAMC,YAAY,oBAAIC,IAAAA;AACtB,QAAMC,OAAe,CAAA;AACrB,QAAMC,iBAAiB,oBAAIF,IAAAA;AAC3B,QAAMG,iBAAiB,oBAAIC,QAAAA;AAC3B,QAAMC,kBAAkB,oBAAIL,IAAAA;AAC5B,QAAM,EAAEM,cAAc,wBAACC,WAAgBA,QAAjB,gBAAyBC,YAAY,wBAACP,UAAcA,OAAf,cAAqBQ,WAAU,IAAKX;AAC/F,MAAI,CAACY,UAAU,SAAA,GAAY;AACzBC,cAAU,WAAW,CAAC,EAAEC,WAAWC,UAAUC,KAAKC,QAAO,MAAqB;AAC5E,YAAMC,KAAK,OAAOH,SAASC,SAAS,aAAaD,SAASC,KAAKG,KAAKJ,QAAAA,IAAY,CAACK,MAAWL,SAASC,OAAOI;AAE5G,UAAIH,SAASI;AACVzB,gBAAgByB,KAAKP,WAAWI,EAAAA;;AAGhCtB,gBAAgB0B,GAAGR,WAAWI,EAAAA;AAEjC,aAAO,MAAM;AACVtB,gBAAgB2B,IAAIT,WAAWI,EAAAA;MAClC;IACF,CAAA;EACF;AAGA,iBAAeM,IAAIC,KAAkB;AACnC,QAAI,CAACxB,UAAUyB,IAAID,GAAAA;AACjB;AAEF,UAAMV,WAAWd,UAAU0B,IAAIF,GAAAA;AAE/B/B,UAAM,mBAAmBkC,OAAOH,GAAAA,IAAO;AACvC,UAAMI,cAAc,WAAWd,QAAAA;AAC/BrB,UAAM,eAAekC,OAAOH,GAAAA,IAAO;AAEnCxB,cAAU6B,OAAOL,GAAAA;AACjBrB,mBAAe0B,OAAOL,GAAAA;AACtB,aAASM,IAAI5B,KAAK6B,SAAS,GAAGD,KAAK,GAAGA,KAAK;AACzC,UAAI5B,KAAK4B,GAAGE,KAAKR,QAAQA;AACvBtB,aAAK+B,OAAOH,GAAG,CAAA;IACnB;AAEA,WAAOhB;EACT;AAlBeS;AAoBf,iBAAeW,UAAU;AACvBzC,UAAM,aAAA;AAEN,eAAW,CAAC+B,GAAAA,KAAQxB;AAClB,YAAMuB,IAAIC,GAAAA;EACd;AALeU;AAOf,iBAAeC,IAAIC,OAAkB;AACnC,UAAMZ,MAAMa,OAAOD,KAAAA;AACnB,UAAME,cAAc,MAAMf,IAAIC,GAAAA;AAE9B,UAAM,EAAEV,UAAUyB,UAAS,IAAK,MAAMC,eAAeJ,KAAAA;AAErD,QAAIE,eAAehC,gBAAgBmB,IAAID,GAAAA,GAAM;AAC3C/B,YAAM,mBAAmBkC,OAAOH,GAAAA,IAAO;AAEvC;WAAIlB,gBAAgBoB,IAAIF,GAAAA;QAAOiB,QAAQ,CAACjB,SAAQ;AAC9C,cAAMhB,SAASR,UAAU0B,IAAIF,IAAAA;AAC7B,mBAAWT,OAAOP,QAAQ;AACxB,cAAIA,OAAOO,SAASuB;AAClB9B,mBAAOO,OAAOwB;QAClB;MACF,CAAA;IACF;EACF;AAjBeJ;AAmBf,iBAAeK,eAAeJ,OAAkB;AAC9C,UAAMM,aAAaC,cAAcP,KAAAA;AACjC,QAAItB;AACJ,UAAMU,MAAMa,OAAOD,KAAAA;AAEnB,QAAIpC,UAAUyB,IAAID,GAAAA,GAAM;AACtBV,iBAAWd,UAAU0B,IAAIF,GAAAA;AACzB,UAAI,CAACV;AACH,cAAM,IAAI8B,MAAM,8EAA8EjB,OAAOH,GAAAA,eAAkBY,OAAO;AAEhI,UAAIjC,eAAeuB,IAAIF,GAAAA,MAASY,SAAS,CAAChC,eAAeqB,IAAIW,KAAAA,GAAQ;AACnEhC,uBAAe+B,IAAIC,KAAAA;AACnBS,YAAI,iCAAiClB,OAAOH,GAAAA,kEAAqEY,MAAMU,SAAS,MAAA;MAClI;AACA,aAAO;QAAEhC;QAAUU;MAAI;IACzB;AACAxB,cAAU+C,IAAIvB,KAAKwB,MAAAA;AACnBvD,UAAM,uBAAuBkC,OAAOH,GAAAA,IAAO;AAE3C,QAAIkB,YAAY;AACd,YAAMO,sBAAsB,CAAA;AAC5B,iBAAWnB,KAAKY,YAAY;AAC1B,cAAM,EAAE5B,UAAUoC,KAAK1B,KAAK2B,OAAM,IAAK,MAAMX,eAAeE,WAAWZ,EAAE;AACzEmB,4BAAoBnB,KAAKoB;AACzB,YAAI,CAAC5C,gBAAgBmB,IAAI0B,MAAAA;AACvB7C,0BAAgByC,IAAII,QAAQ,oBAAIC,IAAAA,CAAAA;AAClC9C,wBAAgBoB,IAAIyB,MAAAA,EAAShB,IAAIX,GAAAA;MACnC;AAEAV,iBAAWP,YAAY,IAAI6B,MAAAA,GAASa,mBAAAA,CAAAA;IACtC,OACK;AACHnC,iBAAWP,YAAY,IAAI6B,MAAAA,CAAAA;IAC7B;AACAlC,SAAKmD,KAAI,GAAIC,oBAAoBxC,UAAUU,KAAKY,MAAMU,IAAI,EAAES,IAAI9C,SAAAA,EAAW+C,OAAOC,CAAAA,SAAQ,CAAC,CAACA,IAAAA,CAAAA;AAE5FhE,UAAM,gBAAgBkC,OAAOH,GAAAA,IAAO;AAEpC,QAAI,CAACkC;AACH,YAAM9B,cAAc,QAAQd,QAAAA;AAE9BrB,UAAM,eAAekC,OAAOH,GAAAA,IAAO;AAEnCxB,cAAU+C,IAAIvB,KAAKV,QAAAA;AACnBX,mBAAe4C,IAAIvB,KAAKY,KAAAA;AACxB,WAAO;MAAEtB;MAAUU;IAAI;EACzB;AA9CegB;AAgDf,aAAWmB,SAAS7D;AAClB,UAAM0C,eAAemB,KAAAA;AAEvB,iBAAeC,eAAe;AAC5B,QAAIlD,YAAY;AACd,aAAOmD,QAAQC,IAAIpD,WAAW6C,IAAI,CAACQ,cAAc;AAC/CtE,cAAM,aAAasE,UAAUjB,iBAAiBiB,UAAUC,MAAM;AAE9D,eAAOD,UAAUE,OAAO/D,IAAAA;MAC1B,CAAA,CAAA;IACF;EACF;AARe0D;AAUfA,eAAAA,EAAeM,KAAK,MAAM;AACxB,QAAIR;AACFS,cAAQC,KAAK,CAAA;EACjB,CAAA;AAEA,MAAIC,QAAQ;AACV,QAAI,CAACC,WAAWC;AACdD,iBAAWC,aAAa,CAAA;AAE1BD,eAAWC,YAAYlB,KAAK,OAAOmB,UAAoB;AACrD/E,YAAM,eAAA;AAEN,iBAAWgF,QAAQD,OAAO;AACxB,cAAM1E,UAAS,MAAM,OAAO2E;AAC5B,mBAAW3C,KAAKhC,SAAQ;AACtB,cAAI4E,SAAS5E,QAAOgC,EAAE;AACpB,kBAAMK,IAAIrC,QAAOgC,EAAE;QACvB;MACF;AACA8B,mBAAAA;IACF,CAAA;EACF;AAEA,SAAO;IACL5D;IACAG;IACAD;IACAiC;IACAZ;IACAW;EACF;AACF;AAtKsBrC;AAwKtB,SAASyD,oBAAoBxC,UAAkBU,KAAkBsB,MAAc;AAC7E,QAAM6B,OAAOC,aAAa9D,QAAAA,EAAU0C,OAAOC,CAAAA,SAAQ,OAAOA,SAAS,QAAA;AACnE,QAAMoB,YAAYC,SAAShE,QAAAA;AAC3BiE,YAAUF,SAAAA;AACV,QAAMG,MAAMtD,IAAIZ,UAAU,SAAA;AAE1B,SAAO6D,KAAKnB,OAAO1B,CAAAA,MAAK,OAAQhB,SAAiBgB,OAAO,UAAA,EAAYyB,IAAI,CAACzB,MAAM;AAC7E,UAAMmD,QAAQH,SAAShE,UAAUgB,CAAAA;AAEjC,UAAM5B,OAAO;MACX,GAAG+E;MACHnC;MACAtB;MACA0D,MACEpD;IACJ;AACA,QAAI+C,UAAUM,YAAY;AACxB,UAAI,OAAO3D,QAAQ;AACjBqB,YAAI,sBAAsB,OAAOrB,sBAAuBV,SAAiBsE,YAAYtC,uBAAuBtB,MAAMG,OAAOH,GAAAA,MAAS,OAAA;AACpIuD,gBAAUE,KAAAA;AACV/E,WAAK8E,MAAMA;AACX9E,WAAKiF,aAAaN,UAAUM;AAC5BjF,WAAK2E,UAAUM,cAAc;QAC3B,GAAGN,UAAUA,UAAUM;QACvB,GAAGF,MAAMJ,UAAUM;MACrB;AAEA,YAAME,SAAS,CAAA;AACf,iBAAWvD,MAAKmD,MAAMI,UAAU,CAAA,GAAI;AAClC,YAAI,CAACvD,GAAEwD;AACLxD,UAAAA,GAAEwD,OAAOL,MAAMK,QAAQT,UAAUS;AACnC,YAAI,CAACxD,GAAEyD;AACLzD,UAAAA,GAAEyD,SAAS,CAAC;AAEdF,eAAOG,QAAQ1D,EAAAA;AACf,YAAIA,GAAE2D,UAAU;AACd;MACJ;AAEAvF,WAAKmF,SAASA;AACdnF,WAAKsD,SAASyB,MAAMzB,UAAUqB,UAAUrB;AACxCtD,WAAKqF,SAAS;QAAE,GAAGV,UAAUU;QAAQ,GAAGN,MAAMM;MAAO;AACrDrF,WAAKwF,UAAU;WAAI,oBAAItC,IAAI;aAAIyB,UAAUa;aAAYT,MAAMS;SAAQ;;AACnExF,WAAKyF,SAAS;WAAI,oBAAIvC,IAAI;aAAIyB,UAAUc;aAAWV,MAAMU;SAAO;;AAChEzF,WAAK0F,eAAe;WAAI,oBAAIxC,IAAI;aAAIyB,UAAUe;aAAiBX,MAAMW;SAAa;;IACpF;AACA,WAAO,IAAIC,KAAK3F,MAA6ByC,cAAc7B,UAAUgB,CAAAA,KAAgB,CAAA,CAAE;EACzF,CAAA;AACF;AAhDSwB;AAkDT,SAASX,cAAcmD,QAAa/E,KAAuB;AACzD,SAAOgF,QAAQC,YAAY,qBAAqBF,QAAQ/E,GAAAA;AAC1D;AAFS4B;AAIT,SAASoC,UAAUE,OAAY;AAC7B,MAAI,CAACA,MAAMM;AACTN,UAAMM,SAAS,CAAC;AAElB,MAAI,CAACN,MAAMS;AACTT,UAAMS,UAAU,oBAAItC,IAAAA;AACtB,MAAI,CAAC6B,MAAMU;AACTV,UAAMU,SAAS,oBAAIvC,IAAAA;AACrB,MAAI,CAAC6B,MAAMW;AACTX,UAAMW,eAAe,oBAAIxC,IAAAA;AAC7B;AAVS2B;","names":["Meta","data","paramsType","constructor","EventEmitter","get","getExposeKey","getInject","getState","getTag","invokeHandler","isPhecda","setInject","Debug","debug","Debug","emitter","EventEmitter","Factory","models","opts","moduleMap","Map","meta","constructorMap","constructorSet","WeakSet","dependenceGraph","parseModule","module","parseMeta","generators","getInject","setInject","eventName","instance","key","options","fn","bind","v","once","on","off","del","tag","has","get","String","invokeHandler","delete","i","length","data","splice","destroy","add","Model","getTag","oldInstance","newModule","buildDepModule","forEach","paramtypes","getParamTypes","Error","log","name","set","undefined","paramtypesInstances","sub","subTag","Set","push","getMetaFromInstance","map","filter","item","IS_ONLY_GENERATE","model","generateCode","Promise","all","generator","path","output","then","process","exit","IS_HMR","globalThis","__PS_HMR__","files","file","isPhecda","vars","getExposeKey","baseState","getState","initState","ctx","state","func","controller","constructor","params","pipe","define","unshift","index","plugins","guards","interceptors","Meta","Module","Reflect","getMetadata"]}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkMSS6A2TUjs = require('./chunk-MSS6A2TU.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkXNTMYLK6js = require('./chunk-XNTMYLK6.js');
|
|
8
|
+
|
|
9
|
+
// src/decorators/param.ts
|
|
10
|
+
var _phecdacore = require('phecda-core');
|
|
11
|
+
function BaseParam(data) {
|
|
12
|
+
return (target, k, index) => {
|
|
13
|
+
if (!k)
|
|
14
|
+
return;
|
|
15
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => {
|
|
16
|
+
if (!state.params)
|
|
17
|
+
state.params = [
|
|
18
|
+
..._optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _ => _.params]) || []
|
|
19
|
+
].map(_chunkMSS6A2TUjs.shallowClone);
|
|
20
|
+
const existItem = state.params.find((item) => item.index === index);
|
|
21
|
+
if (existItem)
|
|
22
|
+
Object.assign(existItem, data);
|
|
23
|
+
else
|
|
24
|
+
state.params.push({
|
|
25
|
+
...data,
|
|
26
|
+
index
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
_chunkXNTMYLK6js.__name.call(void 0, BaseParam, "BaseParam");
|
|
32
|
+
function Body(key = "") {
|
|
33
|
+
return BaseParam({
|
|
34
|
+
type: "body",
|
|
35
|
+
key
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
_chunkXNTMYLK6js.__name.call(void 0, Body, "Body");
|
|
39
|
+
function Head(key) {
|
|
40
|
+
return BaseParam({
|
|
41
|
+
type: "headers",
|
|
42
|
+
key: key.toLowerCase()
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
_chunkXNTMYLK6js.__name.call(void 0, Head, "Head");
|
|
46
|
+
function Query(key = "") {
|
|
47
|
+
return BaseParam({
|
|
48
|
+
type: "query",
|
|
49
|
+
key
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
_chunkXNTMYLK6js.__name.call(void 0, Query, "Query");
|
|
53
|
+
function Param(key) {
|
|
54
|
+
return BaseParam({
|
|
55
|
+
type: "params",
|
|
56
|
+
key
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
_chunkXNTMYLK6js.__name.call(void 0, Param, "Param");
|
|
60
|
+
function Arg(target, k, index) {
|
|
61
|
+
BaseParam({
|
|
62
|
+
type: "args",
|
|
63
|
+
key: `${index}`
|
|
64
|
+
})(target, k, index);
|
|
65
|
+
}
|
|
66
|
+
_chunkXNTMYLK6js.__name.call(void 0, Arg, "Arg");
|
|
67
|
+
|
|
68
|
+
// src/decorators/aop.ts
|
|
69
|
+
|
|
70
|
+
function Guard(...guards) {
|
|
71
|
+
return (target, k) => {
|
|
72
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => {
|
|
73
|
+
if (!state.guards)
|
|
74
|
+
state.guards = /* @__PURE__ */ new Set([
|
|
75
|
+
..._optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _2 => _2.guards]) || []
|
|
76
|
+
]);
|
|
77
|
+
guards.forEach((guard) => {
|
|
78
|
+
if (state.guards.has(guard))
|
|
79
|
+
state.guards.delete(guard);
|
|
80
|
+
state.guards.add(guard);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
_chunkXNTMYLK6js.__name.call(void 0, Guard, "Guard");
|
|
86
|
+
function Plugin(...plugins) {
|
|
87
|
+
return (target, k) => {
|
|
88
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => {
|
|
89
|
+
if (!state.plugins)
|
|
90
|
+
state.plugins = /* @__PURE__ */ new Set([
|
|
91
|
+
..._optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _3 => _3.plugins]) || []
|
|
92
|
+
]);
|
|
93
|
+
plugins.forEach((plugin) => {
|
|
94
|
+
if (state.plugins.has(plugin))
|
|
95
|
+
state.plugins.delete(plugin);
|
|
96
|
+
state.plugins.add(plugin);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
_chunkXNTMYLK6js.__name.call(void 0, Plugin, "Plugin");
|
|
102
|
+
function Interceptor(...interceptors) {
|
|
103
|
+
return (target, k) => {
|
|
104
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => {
|
|
105
|
+
if (!state.interceptors)
|
|
106
|
+
state.interceptors = /* @__PURE__ */ new Set([
|
|
107
|
+
..._optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _4 => _4.interceptors]) || []
|
|
108
|
+
]);
|
|
109
|
+
interceptors.forEach((interceptor) => {
|
|
110
|
+
if (state.interceptors.has(interceptor))
|
|
111
|
+
state.interceptors.delete(interceptor);
|
|
112
|
+
state.interceptors.add(interceptor);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
_chunkXNTMYLK6js.__name.call(void 0, Interceptor, "Interceptor");
|
|
118
|
+
function Filter(filter) {
|
|
119
|
+
return (target, k) => {
|
|
120
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => state.filter = filter);
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
_chunkXNTMYLK6js.__name.call(void 0, Filter, "Filter");
|
|
124
|
+
function Pipe(pipe) {
|
|
125
|
+
return (target, k, index) => {
|
|
126
|
+
if (typeof index === "number") {
|
|
127
|
+
BaseParam({
|
|
128
|
+
pipe
|
|
129
|
+
})(target, k, index);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => state.pipe = pipe);
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
_chunkXNTMYLK6js.__name.call(void 0, Pipe, "Pipe");
|
|
136
|
+
|
|
137
|
+
// src/decorators/http.ts
|
|
138
|
+
|
|
139
|
+
function Route(route, type) {
|
|
140
|
+
return (target, k) => {
|
|
141
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => {
|
|
142
|
+
state.http = _chunkMSS6A2TUjs.mergeObject.call(void 0, state.http || _optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _5 => _5.http]), {
|
|
143
|
+
route,
|
|
144
|
+
type
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
_chunkXNTMYLK6js.__name.call(void 0, Route, "Route");
|
|
150
|
+
function Header(headers) {
|
|
151
|
+
return (target, k) => {
|
|
152
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => {
|
|
153
|
+
if (!state.http)
|
|
154
|
+
state.http = _chunkMSS6A2TUjs.mergeObject.call(void 0, _optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _6 => _6.http]));
|
|
155
|
+
state.http = _chunkMSS6A2TUjs.mergeObject.call(void 0, state.http, {
|
|
156
|
+
headers: _chunkMSS6A2TUjs.mergeObject.call(void 0, _optionalChain([state, 'access', _7 => _7.http, 'optionalAccess', _8 => _8.headers]), headers)
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
_chunkXNTMYLK6js.__name.call(void 0, Header, "Header");
|
|
162
|
+
function Get(route = "") {
|
|
163
|
+
return Route(route, "get");
|
|
164
|
+
}
|
|
165
|
+
_chunkXNTMYLK6js.__name.call(void 0, Get, "Get");
|
|
166
|
+
function Post(route = "") {
|
|
167
|
+
return Route(route, "post");
|
|
168
|
+
}
|
|
169
|
+
_chunkXNTMYLK6js.__name.call(void 0, Post, "Post");
|
|
170
|
+
function Put(route = "") {
|
|
171
|
+
return Route(route, "put");
|
|
172
|
+
}
|
|
173
|
+
_chunkXNTMYLK6js.__name.call(void 0, Put, "Put");
|
|
174
|
+
function Patch(route = "") {
|
|
175
|
+
return Route(route, "patch");
|
|
176
|
+
}
|
|
177
|
+
_chunkXNTMYLK6js.__name.call(void 0, Patch, "Patch");
|
|
178
|
+
function Delete(route = "") {
|
|
179
|
+
return Route(route, "delete");
|
|
180
|
+
}
|
|
181
|
+
_chunkXNTMYLK6js.__name.call(void 0, Delete, "Delete");
|
|
182
|
+
function Controller(prefix = "") {
|
|
183
|
+
return (target) => {
|
|
184
|
+
_phecdacore.setPropertyState.call(void 0, target, void 0, (state) => {
|
|
185
|
+
state.controller = "http";
|
|
186
|
+
state.http = _chunkMSS6A2TUjs.mergeObject.call(void 0, state.http || _optionalChain([_phecdacore.getState.call(void 0, target), 'optionalAccess', _9 => _9.http]), {
|
|
187
|
+
prefix
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
_chunkXNTMYLK6js.__name.call(void 0, Controller, "Controller");
|
|
193
|
+
|
|
194
|
+
// src/decorators/rpc.ts
|
|
195
|
+
|
|
196
|
+
function Event(isEvent = true) {
|
|
197
|
+
return (target, k) => {
|
|
198
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => {
|
|
199
|
+
state.rpc = _chunkMSS6A2TUjs.mergeObject.call(void 0, state.rpc || _optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _10 => _10.rpc]), {
|
|
200
|
+
isEvent
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
_chunkXNTMYLK6js.__name.call(void 0, Event, "Event");
|
|
206
|
+
function Queue(queue = "") {
|
|
207
|
+
return (target, k) => {
|
|
208
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => {
|
|
209
|
+
state.rpc = _chunkMSS6A2TUjs.mergeObject.call(void 0, state.rpc || _optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _11 => _11.rpc]), {
|
|
210
|
+
queue
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
_chunkXNTMYLK6js.__name.call(void 0, Queue, "Queue");
|
|
216
|
+
function Rpc() {
|
|
217
|
+
return (target) => {
|
|
218
|
+
_phecdacore.setPropertyState.call(void 0, target, void 0, (state) => {
|
|
219
|
+
state.controller = "rpc";
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
_chunkXNTMYLK6js.__name.call(void 0, Rpc, "Rpc");
|
|
224
|
+
|
|
225
|
+
// src/decorators/index.ts
|
|
226
|
+
|
|
227
|
+
function Injectable() {
|
|
228
|
+
return (target) => _phecdacore.Empty.call(void 0, target);
|
|
229
|
+
}
|
|
230
|
+
_chunkXNTMYLK6js.__name.call(void 0, Injectable, "Injectable");
|
|
231
|
+
var Ctx = /* @__PURE__ */ _chunkXNTMYLK6js.__name.call(void 0, (target, key) => {
|
|
232
|
+
_phecdacore.set.call(void 0, target, "context", key);
|
|
233
|
+
}, "Ctx");
|
|
234
|
+
function Define(key, value) {
|
|
235
|
+
return (target, k, index) => {
|
|
236
|
+
if (typeof index === "number") {
|
|
237
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => {
|
|
238
|
+
const parentState = _optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _12 => _12.params]) || [];
|
|
239
|
+
if (!state.params)
|
|
240
|
+
state.params = [
|
|
241
|
+
...parentState
|
|
242
|
+
].map(_chunkMSS6A2TUjs.shallowClone);
|
|
243
|
+
const existItem = state.params.find((item) => item.index === index);
|
|
244
|
+
if (existItem)
|
|
245
|
+
existItem.define = _chunkMSS6A2TUjs.mergeObject.call(void 0, existItem.define, {
|
|
246
|
+
[key]: value
|
|
247
|
+
});
|
|
248
|
+
else
|
|
249
|
+
state.params.push({
|
|
250
|
+
define: {
|
|
251
|
+
[key]: value
|
|
252
|
+
},
|
|
253
|
+
index
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
_phecdacore.setPropertyState.call(void 0, target, k, (state) => {
|
|
259
|
+
const parentState = _optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _13 => _13.define]);
|
|
260
|
+
if (!state.define)
|
|
261
|
+
state.define = _chunkMSS6A2TUjs.mergeObject.call(void 0, parentState);
|
|
262
|
+
state.define[key] = value;
|
|
263
|
+
});
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
_chunkXNTMYLK6js.__name.call(void 0, Define, "Define");
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
exports.BaseParam = BaseParam; exports.Body = Body; exports.Head = Head; exports.Query = Query; exports.Param = Param; exports.Arg = Arg; exports.Guard = Guard; exports.Plugin = Plugin; exports.Interceptor = Interceptor; exports.Filter = Filter; exports.Pipe = Pipe; exports.Route = Route; exports.Header = Header; exports.Get = Get; exports.Post = Post; exports.Put = Put; exports.Patch = Patch; exports.Delete = Delete; exports.Controller = Controller; exports.Event = Event; exports.Queue = Queue; exports.Rpc = Rpc; exports.Injectable = Injectable; exports.Ctx = Ctx; exports.Define = Define;
|
|
295
|
+
//# sourceMappingURL=chunk-Q2FYFIEY.js.map
|