phecda-server 5.1.0 → 5.2.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.
Files changed (176) hide show
  1. package/README.md +10 -10
  2. package/assets/ps.json +25 -0
  3. package/{bin → assets}/schema.json +55 -55
  4. package/assets/tsconfig.json +21 -0
  5. package/bin/cli.mjs +150 -189
  6. package/dist/{chunk-6UQYEBAN.js → chunk-5BVUCNMA.js} +19 -20
  7. package/dist/{chunk-QG4X6H5Y.js → chunk-BSE2DSDK.js} +121 -124
  8. package/dist/{chunk-OTHER3YM.mjs → chunk-CKQW3FDK.mjs} +4 -5
  9. package/dist/{chunk-6W7CGOZC.mjs → chunk-JE6BBDXW.mjs} +64 -67
  10. package/dist/{chunk-5DOVDDO7.mjs → chunk-V3WIKOP3.mjs} +11 -6
  11. package/dist/{chunk-H4N6SHNG.mjs → chunk-VLV3AO3H.mjs} +0 -1
  12. package/dist/{chunk-GHOKWS5V.js → chunk-VMLHTEW3.js} +48 -43
  13. package/dist/{chunk-Z4YJHEXT.js → chunk-ZP7HNASU.js} +0 -1
  14. package/dist/core-7f6d2be6.d.ts +27 -0
  15. package/dist/{helper-fcbf6aa8.d.ts → helper-49c7213c.d.ts} +1 -1
  16. package/dist/{helper-867a598d.d.ts → helper-5d755442.d.ts} +1 -1
  17. package/dist/helper.d.ts +25 -0
  18. package/dist/helper.js +21 -0
  19. package/dist/helper.mjs +21 -0
  20. package/dist/index.d.ts +5 -25
  21. package/dist/index.js +39 -58
  22. package/dist/index.mjs +6 -25
  23. package/dist/rpc/bullmq/index.d.ts +3 -2
  24. package/dist/rpc/bullmq/index.js +12 -13
  25. package/dist/rpc/bullmq/index.mjs +2 -3
  26. package/dist/rpc/kafka/index.d.ts +3 -2
  27. package/dist/rpc/kafka/index.js +10 -11
  28. package/dist/rpc/kafka/index.mjs +2 -3
  29. package/dist/rpc/nats/index.d.ts +3 -2
  30. package/dist/rpc/nats/index.js +11 -12
  31. package/dist/rpc/nats/index.mjs +2 -3
  32. package/dist/rpc/rabbitmq/index.d.ts +3 -2
  33. package/dist/rpc/rabbitmq/index.js +13 -14
  34. package/dist/rpc/rabbitmq/index.mjs +2 -3
  35. package/dist/rpc/redis/index.d.ts +3 -2
  36. package/dist/rpc/redis/index.js +11 -12
  37. package/dist/rpc/redis/index.mjs +2 -3
  38. package/dist/server/elysia/index.d.ts +3 -2
  39. package/dist/server/elysia/index.js +20 -21
  40. package/dist/server/elysia/index.mjs +3 -4
  41. package/dist/server/express/index.d.ts +3 -2
  42. package/dist/server/express/index.js +18 -19
  43. package/dist/server/express/index.mjs +2 -3
  44. package/dist/server/fastify/index.d.ts +3 -2
  45. package/dist/server/fastify/index.js +19 -20
  46. package/dist/server/fastify/index.mjs +3 -4
  47. package/dist/server/h3/index.d.ts +3 -2
  48. package/dist/server/h3/index.js +16 -17
  49. package/dist/server/h3/index.mjs +2 -3
  50. package/dist/server/hono/index.d.ts +3 -2
  51. package/dist/server/hono/index.js +17 -18
  52. package/dist/server/hono/index.mjs +2 -3
  53. package/dist/server/hyper-express/index.d.ts +3 -2
  54. package/dist/server/hyper-express/index.js +17 -18
  55. package/dist/server/hyper-express/index.mjs +2 -3
  56. package/dist/server/koa/index.d.ts +3 -2
  57. package/dist/server/koa/index.js +18 -19
  58. package/dist/server/koa/index.mjs +2 -3
  59. package/dist/test.d.ts +2 -1
  60. package/dist/test.js +6 -7
  61. package/dist/test.mjs +2 -3
  62. package/dist/{core-fd134ffa.d.ts → types-81be0ba3.d.ts} +2 -24
  63. package/package.json +62 -54
  64. package/register/index.mjs +40 -40
  65. package/register/loader.mjs +367 -341
  66. package/register/utils.mjs +56 -81
  67. package/dist/chunk-423JPSEB.js +0 -253
  68. package/dist/chunk-423JPSEB.js.map +0 -1
  69. package/dist/chunk-4R55T3HG.js +0 -253
  70. package/dist/chunk-4R55T3HG.js.map +0 -1
  71. package/dist/chunk-4YVAW3L4.mjs +0 -76
  72. package/dist/chunk-4YVAW3L4.mjs.map +0 -1
  73. package/dist/chunk-5DOVDDO7.mjs.map +0 -1
  74. package/dist/chunk-5WQ2SMIK.js +0 -295
  75. package/dist/chunk-5WQ2SMIK.js.map +0 -1
  76. package/dist/chunk-6MQP6OHU.mjs +0 -295
  77. package/dist/chunk-6MQP6OHU.mjs.map +0 -1
  78. package/dist/chunk-6Q2PCC3A.mjs +0 -295
  79. package/dist/chunk-6Q2PCC3A.mjs.map +0 -1
  80. package/dist/chunk-6UQYEBAN.js.map +0 -1
  81. package/dist/chunk-6W7CGOZC.mjs.map +0 -1
  82. package/dist/chunk-7Y37NSBM.js +0 -88
  83. package/dist/chunk-7Y37NSBM.js.map +0 -1
  84. package/dist/chunk-BQBSVGMG.mjs +0 -253
  85. package/dist/chunk-BQBSVGMG.mjs.map +0 -1
  86. package/dist/chunk-BZP6GKM6.mjs +0 -565
  87. package/dist/chunk-BZP6GKM6.mjs.map +0 -1
  88. package/dist/chunk-C5JAHCS2.mjs +0 -88
  89. package/dist/chunk-C5JAHCS2.mjs.map +0 -1
  90. package/dist/chunk-DTBKDALR.mjs +0 -295
  91. package/dist/chunk-DTBKDALR.mjs.map +0 -1
  92. package/dist/chunk-GHOKWS5V.js.map +0 -1
  93. package/dist/chunk-H4N6SHNG.mjs.map +0 -1
  94. package/dist/chunk-ICYHM4UM.js +0 -565
  95. package/dist/chunk-ICYHM4UM.js.map +0 -1
  96. package/dist/chunk-LOLXPM4J.mjs +0 -529
  97. package/dist/chunk-LOLXPM4J.mjs.map +0 -1
  98. package/dist/chunk-MSS6A2TU.js +0 -585
  99. package/dist/chunk-MSS6A2TU.js.map +0 -1
  100. package/dist/chunk-NEM3FY7C.mjs +0 -537
  101. package/dist/chunk-NEM3FY7C.mjs.map +0 -1
  102. package/dist/chunk-OTHER3YM.mjs.map +0 -1
  103. package/dist/chunk-Q2FYFIEY.js +0 -295
  104. package/dist/chunk-Q2FYFIEY.js.map +0 -1
  105. package/dist/chunk-QG4X6H5Y.js.map +0 -1
  106. package/dist/chunk-QIEZ6YTG.mjs +0 -295
  107. package/dist/chunk-QIEZ6YTG.mjs.map +0 -1
  108. package/dist/chunk-QOAKHCM7.js +0 -295
  109. package/dist/chunk-QOAKHCM7.js.map +0 -1
  110. package/dist/chunk-QVUD6L5X.js +0 -565
  111. package/dist/chunk-QVUD6L5X.js.map +0 -1
  112. package/dist/chunk-RGLTGKAU.js +0 -537
  113. package/dist/chunk-RGLTGKAU.js.map +0 -1
  114. package/dist/chunk-SHRK3TVB.js +0 -295
  115. package/dist/chunk-SHRK3TVB.js.map +0 -1
  116. package/dist/chunk-TCH6S42Z.js +0 -529
  117. package/dist/chunk-TCH6S42Z.js.map +0 -1
  118. package/dist/chunk-UCGRFVHC.mjs +0 -253
  119. package/dist/chunk-UCGRFVHC.mjs.map +0 -1
  120. package/dist/chunk-VOISXWVF.mjs +0 -295
  121. package/dist/chunk-VOISXWVF.mjs.map +0 -1
  122. package/dist/chunk-W6BC5INO.mjs +0 -295
  123. package/dist/chunk-W6BC5INO.mjs.map +0 -1
  124. package/dist/chunk-X5WQRO4R.js +0 -295
  125. package/dist/chunk-X5WQRO4R.js.map +0 -1
  126. package/dist/chunk-XDMCVVD3.mjs +0 -585
  127. package/dist/chunk-XDMCVVD3.mjs.map +0 -1
  128. package/dist/chunk-XNTMYLK6.js +0 -76
  129. package/dist/chunk-XNTMYLK6.js.map +0 -1
  130. package/dist/chunk-Y6LI4FDO.js +0 -537
  131. package/dist/chunk-Y6LI4FDO.js.map +0 -1
  132. package/dist/chunk-YZ2AQ6IL.mjs +0 -537
  133. package/dist/chunk-YZ2AQ6IL.mjs.map +0 -1
  134. package/dist/chunk-Z4YJHEXT.js.map +0 -1
  135. package/dist/chunk-ZE336SKZ.js +0 -295
  136. package/dist/chunk-ZE336SKZ.js.map +0 -1
  137. package/dist/chunk-ZJD235TO.mjs +0 -565
  138. package/dist/chunk-ZJD235TO.mjs.map +0 -1
  139. package/dist/core-39f27fe8.d.ts +0 -131
  140. package/dist/core-930ea883.d.ts +0 -131
  141. package/dist/core-eb646fe5.d.ts +0 -139
  142. package/dist/helper-06d25b37.d.ts +0 -19
  143. package/dist/helper-48454c0b.d.ts +0 -20
  144. package/dist/helper-6133f78f.d.ts +0 -18
  145. package/dist/helper-73e8d2f0.d.ts +0 -18
  146. package/dist/helper-88b19c66.d.ts +0 -12
  147. package/dist/helper-9e206c66.d.ts +0 -12
  148. package/dist/helper-f29f082f.d.ts +0 -19
  149. package/dist/index.js.map +0 -1
  150. package/dist/index.mjs.map +0 -1
  151. package/dist/rpc/bullmq/index.js.map +0 -1
  152. package/dist/rpc/bullmq/index.mjs.map +0 -1
  153. package/dist/rpc/kafka/index.js.map +0 -1
  154. package/dist/rpc/kafka/index.mjs.map +0 -1
  155. package/dist/rpc/nats/index.js.map +0 -1
  156. package/dist/rpc/nats/index.mjs.map +0 -1
  157. package/dist/rpc/rabbitmq/index.js.map +0 -1
  158. package/dist/rpc/rabbitmq/index.mjs.map +0 -1
  159. package/dist/rpc/redis/index.js.map +0 -1
  160. package/dist/rpc/redis/index.mjs.map +0 -1
  161. package/dist/server/elysia/index.js.map +0 -1
  162. package/dist/server/elysia/index.mjs.map +0 -1
  163. package/dist/server/express/index.js.map +0 -1
  164. package/dist/server/express/index.mjs.map +0 -1
  165. package/dist/server/fastify/index.js.map +0 -1
  166. package/dist/server/fastify/index.mjs.map +0 -1
  167. package/dist/server/h3/index.js.map +0 -1
  168. package/dist/server/h3/index.mjs.map +0 -1
  169. package/dist/server/hono/index.js.map +0 -1
  170. package/dist/server/hono/index.mjs.map +0 -1
  171. package/dist/server/hyper-express/index.js.map +0 -1
  172. package/dist/server/hyper-express/index.mjs.map +0 -1
  173. package/dist/server/koa/index.js.map +0 -1
  174. package/dist/server/koa/index.mjs.map +0 -1
  175. package/dist/test.js.map +0 -1
  176. package/dist/test.mjs.map +0 -1
@@ -1 +0,0 @@
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":";;;;;;;;;;;AAEO,IAAMA,YAAN,cAAwBC,MAAAA;EACVC;EAAwBC;EAAmBC;EAA9DC,YAAmBH,SAAwBC,SAAS,GAAUC,cAAc,aAAa;AACvF,UAAMF,OAAAA;mBADWA;kBAAwBC;uBAAmBC;EAE9D;EAEA,IAAIE,OAAO;AACT,WAAO;MAAEJ,SAAS,KAAKA;MAASE,aAAa,KAAKA;MAAaD,QAAQ,KAAKA;MAAQ,CAACI,eAAe;IAAK;EAC3G;AACF;AARaP;;;ACAN,IAAMQ,oBAAN,cAAgCC,UAAAA;EACrCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,oBAAA;EACtB;AACF;AAJaH;;;ACFb,SAASI,UAAUC,cAAcC,yBAAyB;AAKnD,IAAMC,cAAwB,wBAAC,EAAEC,KAAKC,SAASC,MAAK,MAAO;AAChE,MAAIC,SAASF,OAAAA,GAAU;AACrB,UAAMG,WAAWC,aAAaJ,SAASD,GAAAA;AACvC,UAAMM,MAAMC,kBAAkBH,QAAAA;AAC9B,QAAIE,IAAIE,SAAS;AACf,YAAM,IAAIC,kBAAkBH,IAAI,EAAE;AAEpCN,UAAMI;EACR,OACK;AACH,QAAIJ,QAAQU,UAAa,CAACT;AACxB,aAAOS;AAET,QAAI;MAACC;MAAQC;MAASC,SAASZ,OAAAA,GAAU;AACvCD,YAAMC,QAAQD,GAAAA;AAEd,UAAIC,YAAYU,UAAUG,OAAOC,GAAGf,KAAKgB,GAAAA;AACvC,cAAM,IAAIP,kBAAkB,aAAaE,OAAOT,KAAAA,IAAS,sBAAsB;IACnF;EACF;AACA,SAAOF;AACT,GArBqC;;;ACH9B,IAAMiB,qBAAN,cAAiCC,UAAAA;EACtCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,iBAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,qBAAN,cAAiCC,UAAAA;EACtCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,oBAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,sBAAN,cAAkCC,UAAAA;EACvCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,aAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,oBAAN,cAAgCC,UAAAA;EACrCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,WAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,oBAAN,cAAgCC,UAAAA;EACrCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,UAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,sBAAN,cAAkCC,UAAAA;EACvCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,aAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,wBAAN,cAAoCC,UAAAA;EACzCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,eAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,gCAAN,cAA4CC,UAAAA;EACjDC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,wBAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,wBAAN,cAAoCC,UAAAA;EACzCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,mBAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,mBAAN,cAA+BC,UAAAA;EACpCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,iBAAA;EAEtB;AACF;AALaH;;;ACAN,IAAMI,wBAAN,cAAoCC,UAAAA;EACzCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,cAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,8BAAN,cAA0CC,UAAAA;EAC/CC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,KAAK,qBAAA;EACtB;AACF;AAJaH;;;ACAN,IAAMI,qBAAN,cAAiCC,UAAAA;EACtCC,YAAYC,SAAiB;AAC3B,UAAM,mBAAmBA,WAAW,KAAK,iBAAA;EAC3C;AACF;AAJaH;;;ACDN,IAAMI,iBAAN,cAA6BC,UAAAA;EAClCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,GAAG,aAAA;EACpB;AACF;AAJaH;;;ACAN,IAAMI,kBAAN,cAA8BC,UAAAA;EACnCC,YAAYC,SAAiB;AAC3B,UAAMA,SAAS,GAAG,cAAA;EACpB;AACF;AAJaH;;;ACAN,SAASI,IAAIC,IAA2B;AAC7C,MAAIC;AACFC,eAAWC,YAAYC,KAAKJ,EAAAA;AAChC;AAHgBD;;;ACGT,SAASM,WAAWC,KAAUC,KAAa;AAChD,MAAIA;AACF,WAAOD,MAAMC;AACf,SAAOD;AACT;AAJgBD;AA8BT,SAASG,SAASC,QAAsCC,MAAaC,SAA8B;AACxG,QAAMC,MAAM;IACVC,MAAM,CAAC;IACPC,OAAO,CAAC;IACRL,QAAQ,CAAC;IACTE;EACF;AAEAF,SAAOM,QAAQ,CAACC,UAAU;AACxB,QAAIA,MAAMT;AACRK,UAAII,MAAMC,MAAMD,MAAMT,OAAOG,KAAKM,MAAME;;AAGxCN,UAAII,MAAMC,QAAQP,KAAKM,MAAME;EACjC,CAAA;AAEA,SAAON;AACT;AAjBgBJ;;;AClChB,SAASW,gBAAgB;AAGlB,SAASC,eAAeC,KAAc;AAC3C,SAAO,MAAMA,MAAM,GAAGA,SAAS,KAAKC,SAAAA,KAAcC,QAAQC;AAC5D;AAFgBJ;;;ACHT,SAASK,aAAaC,KAAU;AACrC,SAAO;IAAE,GAAGA;EAAI;AAClB;AAFgBD;AAGT,SAASE,eAAeC,MAAa;AAC1C,SAAOC,OAAOC,OAAO,CAAC,GAAA,GAAMF,IAAAA;AAC9B;AAFgBD;AAGT,SAASI,cAAcH,MAAa;AACzC,SAAOA,KAAKI,OAAOC,CAAAA,SAAQ,CAAC,CAACA,IAAAA,EAAMC,KAAI;AACzC;AAFgBH;;;ACNhB,OAAOI,QAAQ;AACf,OAAOC,WAAW;;;ACIX,IAAMC,gBAA4B,wBAACC,MAAM;AAC9C,MAAI,EAAEA,aAAaC,YAAY;AAC7BC,QAAIF,EAAEG,SAAS,OAAA;AACf,QAAIC,aAAa;AACfC,cAAQC,MAAMN,EAAEO,KAAK;AAEvBP,QAAI,IAAIQ,mBAAmBR,EAAEG,WAAWH,CAAAA;EAC1C,OACK;AACHE,QAAI,IAAIF,EAAES,YAAYC,SAASV,EAAEG,WAAW,OAAA;AAC5C,QAAIC,aAAa;AACfC,cAAQC,MAAMN,EAAEO,KAAK;EACzB;AAEA,SAAOP,EAAEW;AACX,GAfyC;;;ACLlC,IAAMC,UAAN,MAAMA;EACXC,QAAkB,CAAA;EAClBC,cAAwB,CAAA;EACxBC,OAAOC,MAAcC,MAA+B;AAClD,QAAI,CAAC,KAAKA,MAAMC,SAASF,IAAAA,GAAO;AAC9B,WAAKC,MAAME,KAAKH,IAAAA;AAChB,aAAO;IACT;AACA,WAAO;EACT;AACF;AAVaJ;;;AFab,IAAMQ,QAAQC,MAAM,wBAAA;AAQb,IAAMC,WAAN,MAAMA;EAmBQC;EAlBnBC;EACAC;EACAC;EAcQC;EAERC,YAAmBL,MAAY;gBAAZA;SAhBnBG,UAAU,IAAIG,QAAAA;AAiBZ,QAAIC;AAEFP,WAAKQ,WAAW;EACpB;EAEA,MAAaC,IAAuCC,MAAsBC,WAAsCC,QAAiC;AAC/I,UAAM,EAAEC,MAAMC,UAAS,IAAK,KAAKd;AACjC,UAAM,EAAEe,eAAe,CAAA,GAAIC,cAAcC,qBAAqB,CAAA,GAAIC,WAAU,IAAKR;AACjF,UAAM,EACJS,YACAnB,MAAM,EACJoB,QAAQC,cAAcnB,QACtBoB,KAAKC,MAAMC,KAAKC,OAAM,EAEvB,IACCZ;AAEJ,QAAI;AACF,YAAM,KAAKa,SAAS;WAAIX;WAAiBK;OAAO;AAChD,YAAMO,KAAK,MAAM,KAAKC,eAAe;WAAIX;WAAuBI;OAAa;AAC7E,UAAIM,OAAOE;AACT,eAAOlB,UAAUgB,EAAAA;AAEnB,YAAMG,OAAO,MAAM,KAAKC,QAAQ7B,OAAO8B,IAAI,CAACC,UAAU;AACpD,eAAO;UAAEC,KAAKC,WAAW,KAAKnC,KAAKiC,MAAMG,OAAOH,MAAMI,GAAG;UAAGC,SAASnB,WAAWc,MAAMM;UAAQ,GAAGN;UAAOO,MAAMP,MAAMO,QAAQtB;QAAW;MACzI,CAAA,CAAA;AACA,YAAMuB,WAAW3B,UAAU4B,IAAIpB,GAAAA;AAC/B,UAAIE;AACFiB,iBAASjB,OAAO,KAAKxB;AACvB,YAAM2C,aAAa,MAAMF,SAASlB,MAAK,GAAIO,IAAAA;AAC3C,YAAMc,KAAK,MAAM,KAAKC,mBAAmBF,UAAAA;AACzC,UAAIC,OAAOf;AACT,eAAOlB,UAAUiC,EAAAA;AAEnB,aAAOjC,UAAUgC,UAAAA;IACnB,SACOG,GAAP;AACE,YAAMC,MAAM,MAAM,KAAKC,UAAUF,GAAGrB,UAAUT,YAAAA;AAC9C,aAAOJ,OAAOmC,GAAAA;IAChB;EACF;EAEQhB,QAAQD,MAAiB;AAC/B,WAAOmB,QAAQC,IAAIpB,KAAKE,IAAI,CAACmB,SAAS;AACpC,UAAIA,KAAKX,QAAQ,CAACzC,SAAQqD,WAAWD,KAAKX,OAAO;AAC/C,YAAIa,WAAW;AACb,gBAAM,IAAIC,mBAAmB,0BAA0BH,KAAKX,OAAO;QACrE,OAEK;AACH3C,gBAAM,0BAA0BsD,KAAKX,2BAA2BW,KAAKZ,QAAQ,6BAA6B,KAAKvC,KAAKuB,oBAAoB,KAAKvB,KAAKsB,+BAA+B;AAEjL,iBAAOvB,SAAQqD,WAAWG,QAAQJ,MAAM,KAAKnD,IAAI;QACnD;MACF;AAEA,aAAOD,SAAQqD,WAAWD,KAAKX,QAAQ,WAAWW,MAAM,KAAKnD,IAAI;IACnE,CAAA,CAAA;EACF;EAEQgD,UAAUd,KAAUT,SAAS,WAAW;AAC9C,QAAI,CAAC1B,SAAQyD,aAAa/B,SAAS;AACjC,UAAI4B,WAAW;AACb,cAAM,IAAIC,mBAAmB,4BAA4B7B,SAAS;MACpE,OACK;AACH5B,cAAM,4BAA4B4B,+BAA+B,KAAKzB,KAAKuB,oBAAoB,KAAKvB,KAAKsB,iCAAiC;AAE1I,eAAOvB,SAAQyD,aAAaD,QAAQrB,KAAK,KAAKlC,IAAI;MACpD;IACF;AAEA,WAAOD,SAAQyD,aAAa/B,QAAQS,KAAK,KAAKlC,IAAI;EACpD;EAEA,MAAc0B,SAASN,QAAkB;AACvC,eAAWqC,SAASrC,QAAQ;AAC1B,UAAI,KAAKjB,QAAQuD,OAAOD,OAAO,OAAA,GAAU;AACvC,YAAI,EAAEA,SAAS1D,SAAQ4D,cAAc;AACnC,cAAIN;AACF,kBAAM,IAAIC,mBAAmB,2BAA2BG,QAAQ;;AAC7D5D,kBAAM,2BAA2B4D,8BAA8B,KAAKzD,KAAKuB,oBAAoB,KAAKvB,KAAKsB,cAAc;AAC1H;QACF;AACA,YAAI,CAAC,MAAMvB,SAAQ4D,YAAYF,OAAO,KAAKzD,IAAI;AAC7C,gBAAM,IAAI4D,mBAAmB,qBAAqBH,QAAQ;MAC9D;IACF;EACF;EAEA,MAAcZ,mBAAmB7C,MAAW;AAC1C,eAAW6D,MAAM,KAAKzD,kBAAkB;AACtC,YAAM0D,MAAM,MAAMD,GAAG7D,IAAAA;AACrB,UAAI8D,QAAQjC;AACV,eAAOiC;IACX;EACF;EAEA,MAAclC,eAAeP,cAAwB;AACnD,UAAMwC,KAAK,CAAA;AACX,eAAWE,eAAe1C,cAAc;AACtC,UAAI,KAAKlB,QAAQuD,OAAOK,aAAa,aAAA,GAAgB;AACnD,YAAI,EAAEA,eAAehE,SAAQiE,oBAAoB;AAC/C,cAAIX;AACF,kBAAM,IAAIC,mBAAmB,iCAAiCS,cAAc;;AACzElE,kBAAM,iCAAiCkE,oCAAoC,KAAK/D,KAAKuB,oBAAoB,KAAKvB,KAAKsB,cAAc;AAEtI;QACF;AACA,cAAM2C,eAAe,MAAMlE,SAAQiE,kBAAkBD,aAAa,KAAK/D,IAAI;AAC3E,YAAIiE,iBAAiBpC,QAAW;AAC9B,cAAI,OAAOoC,iBAAiB;AAC1BJ,eAAGK,KAAKD,YAAAA;;AAGR,mBAAOA;QACX;MACF;IACF;AACA,SAAK7D,mBAAmByD;EAC1B;EAEA,OAAOM,UAAUC,SAAmB;AAClC,UAAMN,MAAM,CAAA;AACZ,eAAWO,KAAKD,SAAS;AACvB,UAAI,EAAEC,KAAKtE,SAAQuE,eAAe;AAChC,YAAIjB;AACF,gBAAM,IAAIC,mBAAmB,gCAAgCe,IAAI;AAEnE;MACF;AACAP,UAAII,KAAKnE,SAAQuE,aAAaD,EAAE;IAClC;AACA,WAAOP;EACT;AACF;AA3JO,IAAM/D,UAAN;AAAMA;AAKX,cALWA,SAKJyD,gBAAgD;EACrDD,SAASgB;AACX;AAEA,cATWxE,SASJqD,cAA4C;EACjDG,SAASiB;AACX;AAEA,cAbWzE,SAaJ4D,eAA8C,CAAC;AACtD,cAdW5D,SAcJiE,qBAA0D,CAAC;AAElE,cAhBWjE,SAgBJuE,gBAAyC,CAAC;AA6I5C,SAASG,UAAapC,KAAkBqC,SAAY;AACzD,MAAI3E,QAAQuE,aAAajC,QAAQtC,QAAQuE,aAAajC,SAASqC;AAC7DC,QAAI,qBAAqBC,OAAOvC,GAAAA,MAAS,MAAA;AAE3CtC,UAAQuE,aAAajC,OAAOqC;AAC9B;AALgBD;AAOT,SAASI,QAA+BxC,KAAkBqC,SAAsB;AACrF,MAAI3E,QAAQqD,WAAWf,QAAQtC,QAAQqD,WAAWf,SAASqC;AACzDC,QAAI,mBAAmBC,OAAOvC,GAAAA,MAAS,MAAA;AACzCtC,UAAQqD,WAAWf,OAAOqC;AAC5B;AAJgBG;AAMT,SAASC,UAAiCzC,KAAkBqC,SAAwB;AACzF,MAAI3E,QAAQyD,aAAanB,QAAQtC,QAAQyD,aAAanB,SAASqC;AAC7DC,QAAI,qBAAqBC,OAAOvC,GAAAA,MAAS,MAAA;AAC3CtC,UAAQyD,aAAanB,OAAOqC;AAC9B;AAJgBI;AAMT,SAASC,SAAgC1C,KAAkBqC,SAAuB;AACvF,MAAI3E,QAAQ4D,YAAYtB,QAAQtC,QAAQ4D,YAAYtB,SAASqC;AAC3DC,QAAI,oBAAoBC,OAAOvC,GAAAA,MAAS,MAAA;AAC1CtC,UAAQ4D,YAAYtB,OAAOqC;AAC7B;AAJgBK;AAMT,SAASC,eAAsC3C,KAAkBqC,SAA6B;AACnG,MAAI3E,QAAQiE,kBAAkB3B,QAAQtC,QAAQiE,kBAAkB3B,SAASqC;AACvEC,QAAI,0BAA0BC,OAAOvC,GAAAA,MAAS,MAAA;AAChDtC,UAAQiE,kBAAkB3B,OAAOqC;AACnC;AAJgBM;AAOT,SAASC,aAAapE,MAAc,EAAEO,QAAQC,cAAc+C,QAAO,IAItE,CAAC,GAAGc,aAAqB,QAAQ;AACnC,QAAMC,YAAY,IAAIC,IAAYhB,OAAAA;AAElC,QAAMiB,WAAW,IAAID,IAAYhE,MAAAA;AACjC,QAAMkE,iBAAiB,IAAIF,IAAY/D,YAAAA;AACvC,QAAMkE,UAAU,oBAAIH,IAAAA;AACpB,QAAMI,YAAY,oBAAIJ,IAAAA;AACtB,QAAMK,aAAa,oBAAIL,IAAAA;AAEtBvE,OAA0B6E,QAAQ,CAAC,EAAE1F,KAAI,MAAO;AAC/C,QAAIA,KAAKkF,eAAeA,YAAY;AAClC,UAAIlF,KAAKkF;AACPO,mBAAWE,IAAI,WAAW3F,KAAKsB,QAAQtB,KAAK4F,OAAO5F,KAAK4F,OAAO,GAAG5F,KAAK4F,QAAQ5F,KAAKsB,uBAAuB4D,qDAAqDA,mCAAmClF,KAAKuB,OAAO;AAEjN;IACF;AACA,QAAIvB,KAAKyB;AACP+D,gBAAUG,IAAI3F,KAAKyB,MAAM;AAE3BzB,SAAKqB,aAAaqE,QAAQG,CAAAA,MAAKP,eAAeK,IAAIE,CAAAA,CAAAA;AAClD7F,SAAKoB,OAAOsE,QAAQG,CAAAA,MAAKR,SAASM,IAAIE,CAAAA,CAAAA;AACtC7F,SAAKoE,QAAQsB,QAAQG,CAAAA,MAAKV,UAAUQ,IAAIE,CAAAA,CAAAA;AACxC7F,SAAKE,OAAOwF,QAAQ,CAACG,MAAM;AACzB,UAAIA,EAAErD;AACJ+C,gBAAQI,IAAIE,EAAErD,IAAI;IACtB,CAAA;EACF,CAAA;AAEA,QAAMsD,cAAc;OAAIX;IAAW1D,OAAOoE,CAAAA,MAAK,CAAC9F,QAAQuE,aAAauB,EAAE;AACvE,QAAME,aAAa;OAAIV;IAAU5D,OAAOoE,CAAAA,MAAK,CAAC9F,QAAQ4D,YAAYkC,EAAE;AACpE,QAAMG,mBAAmB;OAAIV;IAAgB7D,OAAOoE,CAAAA,MAAK,CAAC9F,QAAQiE,kBAAkB6B,EAAE;AACtF,QAAMI,YAAY;OAAIV;IAAS9D,OAAOoE,CAAAA,MAAK,CAAC9F,QAAQqD,WAAWyC,EAAE;AACjE,QAAMK,cAAc;OAAIV;IAAW/D,OAAOoE,CAAAA,MAAK,CAAC9F,QAAQyD,aAAaqC,EAAE;AAEvE,MAAIC,YAAYK;AACdxB,QAAI,GAAGyB,GAAGC,MAAM,WAAWP,YAAYQ,KAAK,GAAA,IAAO,mBAAmB,MAAA;AACxE,MAAIP,WAAWI;AACbxB,QAAI,GAAGyB,GAAGG,QAAQ,UAAUR,WAAWO,KAAK,GAAA,IAAO,mBAAmB,MAAA;AAExE,MAAIN,iBAAiBG;AACnBxB,QAAI,GAAGyB,GAAGI,KAAK,gBAAgBR,iBAAiBM,KAAK,GAAA,IAAO,mBAAmB,MAAA;AAEjF,MAAIL,UAAUE;AACZxB,QAAI,GAAGyB,GAAGK,KAAK,SAASR,UAAUK,KAAK,GAAA,IAAO,mBAAmB,MAAA;AAEnE,MAAIJ,YAAYC;AACdxB,QAAI,GAAGyB,GAAGM,IAAI,WAAWR,YAAYI,KAAK,GAAA,IAAO,mBAAmB,MAAA;AAEtEb,aAAWC,QAAQiB,CAAAA,SAAQhC,IAAIgC,MAAM,MAAA,CAAA;AAErC,SAAO;IACLb;IACAC;IACAC;IACAC;IACAC;EACF;AACF;AA7DgBjB;","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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common.ts","../src/utils.ts"],"names":["UNMOUNT_SYMBOL","ERROR_SYMBOL","IS_HMR","process","env","NODE_ENV","IS_ONLY_GENERATE","PS_GENERATE","IS_STRICT","PS_STRICT","LOG_LEVEL","Number","PS_LOG_LEVEL","PS_EXIT_CODE","RELAUNCH","CODE","pc","time","internalLogger","console","setLogger","logger","log","msg","level","logLevel","info","warn","error","color","date","Date","current","now","interval","magenta","gray","getHours","getMinutes","getSeconds","Mix","InternalClass","ExtendClass","constructor","args","Object","assign"],"mappings":";;;;;;;;;AACO,IAAMA,iBAAiB;AAIvB,IAAMC,eAAe;AAErB,IAAMC,SAASC,QAAQC,IAAIC,aAAa;AACxC,IAAMC,mBAAmB,CAAC,CAACH,QAAQC,IAAIG;AACvC,IAAMC,YAAY,CAAC,CAACL,QAAQC,IAAIK;AAChC,IAAMC,YAAYC,OAAOR,QAAQC,IAAIQ,gBAAgB,CAAA;IAErD;UAAKC,eAAY;AAAZA,EAAAA,cAAAA,cACVC,cAAW,KAAXA;AADUD,EAAAA,cAAAA,cAEVE,UAAO,KAAPA;GAFUF,iBAAAA,eAAAA,CAAAA,EAAAA;;;ACZZ,OAAOG,QAAQ;AAIf,IAAIC;AAEJ,IAAIC,iBAAiBC;AAEd,SAASC,UAAUC,QAAwB;AAChDH,mBAAiBG;AACnB;AAFgBD;AAIT,SAASE,IAAIC,KAAaC,QAA2C,OAAO;AACjF,QAAMC,WAAW;IACfC,MAAM;IACNJ,KAAK;IACLK,MAAM;IACNC,OAAO;EACT,EAAEJ;AAEF,MAAIC,WAAWf;AACb;AAEF,QAAMmB,QAAS;IAAED,OAAO;IAAOF,MAAM;IAAQC,MAAM;IAAUL,KAAK;EAAQ,EAAYE;AACtF,QAAMM,OAAO,IAAIC,KAAAA;AACjB,QAAMC,UAAUD,KAAKE,IAAG;AACxB,QAAMC,WAAYjB,QAAQe,UAAUf,OAAQ,IAAIe,UAAUf,SAAS;AACnEA,SAAOe;AAEPd,iBAAeM,OAAO,GAAGR,GAAGmB,QAAQ,iBAAA,KAAsBnB,GAAGoB,KAAK,GAAGN,KAAKO,SAAQ,KAAMP,KAAKQ,WAAU,KAAMR,KAAKS,WAAU,GAAI,KAAKvB,GAAGa,OAAON,GAAAA,KAAQP,GAAGoB,KAAKF,QAAAA,GAAW;AAC5K;AAlBgBZ;AAoBT,SAASkB,IAA8DC,eAAmBC,aAAiB;AAChH,SAAO,cAAcD,cAAAA;IACnBE,eAAeC,MAAW;AACxB,YAAK;AACLC,aAAOC,OAAO,MAAM,IAAIJ,YAAAA,GAAeE,IAAAA,CAAAA;IACzC;EACF;AACF;AAPgBJ","sourcesContent":["// export const MERGE_SYMBOL = '__PS_MERGE__'// is parallel request in http\r\nexport const UNMOUNT_SYMBOL = '__PS_UNMOUNT__'// property that include unmount callbacks\r\n// export const MODULE_SYMBOL = '__PS_MODULE__'// req[MODULE_SYMBOL]=modulemap\r\n// export const META_SYMBOL = '__PS_META__'// req[META_SYMBOL]=meta\r\n// export const PS_SYMBOL = '__PS__'// (app/router)[PS_SYMBOL]=Factory(...)\r\nexport const ERROR_SYMBOL = '__PS_ERROR__'// only use in paralle request\r\n\r\nexport const IS_HMR = process.env.NODE_ENV === 'development'\r\nexport const IS_ONLY_GENERATE = !!process.env.PS_GENERATE// work for ci; only generate code\r\nexport const IS_STRICT = !!process.env.PS_STRICT// throw error if depends on an aop module which is not imported\r\nexport const LOG_LEVEL = Number(process.env.PS_LOG_LEVEL || 0)// internal logger\r\n\r\nexport enum PS_EXIT_CODE {\r\n RELAUNCH = 2,\r\n CODE = 4,\r\n}\r\n","import pc from 'picocolors'\r\nimport type { AbConstruct, Construct } from 'phecda-core'\r\nimport { LOG_LEVEL } from './common'\r\n\r\nlet time: number\r\n\r\nlet internalLogger = console\r\n\r\nexport function setLogger(logger: typeof console) {\r\n internalLogger = logger\r\n}\r\n\r\nexport function log(msg: string, level: 'error' | 'info' | 'warn' | 'log' = 'log') {\r\n const logLevel = {\r\n info: 0,\r\n log: 1,\r\n warn: 2,\r\n error: 3,\r\n }[level]\r\n\r\n if (logLevel < LOG_LEVEL)\r\n return\r\n\r\n const color = ({ error: 'red', info: 'gray', warn: 'yellow', log: 'green' } as const)[level]\r\n const date = new Date()\r\n const current = Date.now()\r\n const interval = (time && current - time) ? `+${current - time}` : ''\r\n time = current\r\n\r\n internalLogger[level](`${pc.magenta('[phecda-server]')} ${pc.gray(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`)} ${pc[color](msg)} ${pc.gray(interval)}`)\r\n}\r\n\r\nexport function Mix<C1 extends Construct | AbConstruct, C2 extends Construct>(InternalClass: C1, ExtendClass: C2) {\r\n return class extends InternalClass {\r\n constructor(...args: any) {\r\n super()\r\n Object.assign(this, new ExtendClass(...args))\r\n }\r\n } as new (...args: ConstructorParameters<C2>) => InstanceType<C1> & InstanceType<C2>\r\n}\r\n"]}
@@ -1,295 +0,0 @@
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 _chunkY6LI4FDOjs = require('./chunk-Y6LI4FDO.js');
5
-
6
-
7
- var _chunkZ4YJHEXTjs = require('./chunk-Z4YJHEXT.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(_chunkY6LI4FDOjs.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
- _chunkZ4YJHEXTjs.__name.call(void 0, BaseParam, "BaseParam");
32
- function Body(key = "") {
33
- return BaseParam({
34
- type: "body",
35
- key
36
- });
37
- }
38
- _chunkZ4YJHEXTjs.__name.call(void 0, Body, "Body");
39
- function Head(key) {
40
- return BaseParam({
41
- type: "headers",
42
- key: key.toLowerCase()
43
- });
44
- }
45
- _chunkZ4YJHEXTjs.__name.call(void 0, Head, "Head");
46
- function Query(key = "") {
47
- return BaseParam({
48
- type: "query",
49
- key
50
- });
51
- }
52
- _chunkZ4YJHEXTjs.__name.call(void 0, Query, "Query");
53
- function Param(key) {
54
- return BaseParam({
55
- type: "params",
56
- key
57
- });
58
- }
59
- _chunkZ4YJHEXTjs.__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
- _chunkZ4YJHEXTjs.__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
- _chunkZ4YJHEXTjs.__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
- _chunkZ4YJHEXTjs.__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
- _chunkZ4YJHEXTjs.__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
- _chunkZ4YJHEXTjs.__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
- _chunkZ4YJHEXTjs.__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 = _chunkY6LI4FDOjs.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
- _chunkZ4YJHEXTjs.__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 = _chunkY6LI4FDOjs.mergeObject.call(void 0, _optionalChain([_phecdacore.getState.call(void 0, target, k), 'optionalAccess', _6 => _6.http]));
155
- state.http = _chunkY6LI4FDOjs.mergeObject.call(void 0, state.http, {
156
- headers: _chunkY6LI4FDOjs.mergeObject.call(void 0, _optionalChain([state, 'access', _7 => _7.http, 'optionalAccess', _8 => _8.headers]), headers)
157
- });
158
- });
159
- };
160
- }
161
- _chunkZ4YJHEXTjs.__name.call(void 0, Header, "Header");
162
- function Get(route = "") {
163
- return Route(route, "get");
164
- }
165
- _chunkZ4YJHEXTjs.__name.call(void 0, Get, "Get");
166
- function Post(route = "") {
167
- return Route(route, "post");
168
- }
169
- _chunkZ4YJHEXTjs.__name.call(void 0, Post, "Post");
170
- function Put(route = "") {
171
- return Route(route, "put");
172
- }
173
- _chunkZ4YJHEXTjs.__name.call(void 0, Put, "Put");
174
- function Patch(route = "") {
175
- return Route(route, "patch");
176
- }
177
- _chunkZ4YJHEXTjs.__name.call(void 0, Patch, "Patch");
178
- function Delete(route = "") {
179
- return Route(route, "delete");
180
- }
181
- _chunkZ4YJHEXTjs.__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 = _chunkY6LI4FDOjs.mergeObject.call(void 0, state.http || _optionalChain([_phecdacore.getState.call(void 0, target), 'optionalAccess', _9 => _9.http]), {
187
- prefix
188
- });
189
- });
190
- };
191
- }
192
- _chunkZ4YJHEXTjs.__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 = _chunkY6LI4FDOjs.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
- _chunkZ4YJHEXTjs.__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 = _chunkY6LI4FDOjs.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
- _chunkZ4YJHEXTjs.__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
- _chunkZ4YJHEXTjs.__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
- _chunkZ4YJHEXTjs.__name.call(void 0, Injectable, "Injectable");
231
- var Ctx = /* @__PURE__ */ _chunkZ4YJHEXTjs.__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(_chunkY6LI4FDOjs.shallowClone);
243
- const existItem = state.params.find((item) => item.index === index);
244
- if (existItem)
245
- existItem.define = _chunkY6LI4FDOjs.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 = _chunkY6LI4FDOjs.mergeObject.call(void 0, parentState);
262
- state.define[key] = value;
263
- });
264
- };
265
- }
266
- _chunkZ4YJHEXTjs.__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-ZE336SKZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/decorators/param.ts","../src/decorators/aop.ts","../src/decorators/http.ts","../src/decorators/rpc.ts","../src/decorators/index.ts"],"names":["getState","setPropertyState","BaseParam","data","target","k","index","state","params","map","shallowClone","existItem","find","item","Object","assign","push","Body","key","type","Head","toLowerCase","Query","Param","Arg","Guard","guards","Set","forEach","guard","has","delete","add","Plugin","plugins","plugin","Interceptor","interceptors","interceptor","Filter","filter","Pipe","pipe","Route","route","http","mergeObject","Header","headers","Get","Post","Put","Patch","Delete","Controller","prefix","undefined","controller","Event","isEvent","rpc","Queue","queue","Rpc","Empty","set","Injectable","Ctx","Define","value","parentState","define"],"mappings":"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","sourcesContent":["import { getState, setPropertyState } from 'phecda-core'\r\nimport { shallowClone } from './helper'\r\n\r\nexport function BaseParam(data: Record<string, any>): ParameterDecorator {\r\n return (target: any, k: PropertyKey | undefined, index: number) => {\r\n if (!k)\r\n return\r\n setPropertyState(target, k, (state) => {\r\n if (!state.params)\r\n state.params = [...(getState(target, k)?.params || [])].map(shallowClone)\r\n\r\n const existItem = state.params.find((item: any) => item.index === index)\r\n\r\n if (existItem)\r\n Object.assign(existItem, data)\r\n\r\n else\r\n state.params.push({ ...data, index })\r\n })\r\n }\r\n}\r\n\r\nexport function Body(key = '') {\r\n return BaseParam({\r\n type: 'body',\r\n key,\r\n })\r\n}\r\n// req.headers\r\nexport function Head(key: string) {\r\n return BaseParam({\r\n type: 'headers', key: key.toLowerCase(),\r\n })\r\n}\r\n\r\nexport function Query(key = '') {\r\n return BaseParam({ type: 'query', key })\r\n}\r\nexport function Param(key: string) {\r\n return BaseParam({\r\n type: 'params', key,\r\n })\r\n}\r\n\r\n// work for micro service\r\nexport function Arg(target: any, k: string, index: number) {\r\n BaseParam({\r\n type: 'args', key: `${index}`,\r\n })(target, k, index)\r\n}\r\n","import { getState, setPropertyState } from 'phecda-core'\r\nimport { BaseParam } from './param'\r\nexport function Guard(...guards: string[]) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.guards)\r\n state.guards = new Set([...(getState(target, k)?.guards || [])])\r\n\r\n guards.forEach((guard) => {\r\n if (state.guards.has(guard))\r\n state.guards.delete(guard)\r\n\r\n state.guards.add(guard)\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport function Plugin(...plugins: string[]) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.plugins)\r\n state.plugins = new Set([...(getState(target, k)?.plugins || [])])\r\n\r\n plugins.forEach((plugin) => {\r\n if (state.plugins.has(plugin))\r\n state.plugins.delete(plugin)\r\n\r\n state.plugins.add(plugin)\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport function Interceptor(...interceptors: string[]) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.interceptors)\r\n state.interceptors = new Set([...(getState(target, k)?.interceptors || [])])\r\n\r\n interceptors.forEach((interceptor) => {\r\n if (state.interceptors.has(interceptor))\r\n state.interceptors.delete(interceptor)\r\n\r\n state.interceptors.add(interceptor)\r\n })\r\n })\r\n }\r\n}\r\nexport function Filter(filter: string) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, state => state.filter = filter)\r\n }\r\n}\r\nexport function Pipe(pipe?: string) {\r\n return (target: any, k?: any, index?: any) => {\r\n if (typeof index === 'number') {\r\n BaseParam({ pipe })(target, k, index)\r\n\r\n return\r\n }\r\n setPropertyState(target, k, state => state.pipe = pipe)\r\n }\r\n}\r\n","import { getState, setPropertyState } from 'phecda-core'\r\nimport { mergeObject } from './helper'\r\n\r\nexport function Route(route: string, type: string): MethodDecorator {\r\n return (target: any, k: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n state.http = mergeObject((state.http || getState(target, k)?.http),\r\n {\r\n route,\r\n type,\r\n })\r\n })\r\n }\r\n}\r\nexport function Header(headers: Record<string, string>): MethodDecorator {\r\n return (target: any, k: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n if (!state.http)\r\n state.http = mergeObject(getState(target, k)?.http)\r\n\r\n state.http = mergeObject(state.http, {\r\n headers: mergeObject(state.http?.headers, headers),\r\n\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport function Get(route = '') {\r\n return Route(route, 'get')\r\n}\r\n\r\nexport function Post(route = '') {\r\n return Route(route, 'post')\r\n}\r\nexport function Put(route = '') {\r\n return Route(route, 'put')\r\n}\r\n\r\nexport function Patch(route = '') {\r\n return Route(route, 'patch')\r\n}\r\nexport function Delete(route = '') {\r\n return Route(route, 'delete')\r\n}\r\n\r\nexport function Controller(prefix = '') {\r\n return (target: any) => {\r\n setPropertyState(target, undefined, (state) => {\r\n state.controller = 'http'\r\n state.http = mergeObject(state.http || getState(target)?.http, { prefix })\r\n })\r\n }\r\n}\r\n","import { getState, setPropertyState } from 'phecda-core'\r\nimport { mergeObject } from './helper'\r\n\r\nexport function Event(isEvent = true) {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n state.rpc = mergeObject(state.rpc || getState(target, k)?.rpc, { isEvent })\r\n })\r\n }\r\n}\r\nexport function Queue(queue = '') {\r\n return (target: any, k?: PropertyKey) => {\r\n setPropertyState(target, k, (state) => {\r\n state.rpc = mergeObject(state.rpc || getState(target, k)?.rpc, { queue })\r\n })\r\n }\r\n}\r\n\r\nexport function Rpc(): ClassDecorator {\r\n return (target: any) => {\r\n setPropertyState(target, undefined, (state) => {\r\n state.controller = 'rpc'\r\n })\r\n }\r\n}\r\n","import { Empty, getState, set, setPropertyState } from 'phecda-core'\r\nimport { mergeObject, shallowClone } from './helper'\r\n\r\nexport function Injectable() {\r\n return (target: any) => Empty(target)\r\n}\r\n\r\nexport const Ctx: PropertyDecorator = (target: any, key: PropertyKey) => {\r\n set(target, 'context', key)\r\n}\r\n\r\nexport function Define(key: string, value: any): any {\r\n return (target: any, k?: any, index?: number) => {\r\n if (typeof index === 'number') {\r\n setPropertyState(target, k, (state) => {\r\n const parentState = getState(target, k)?.params || []\r\n\r\n if (!state.params)\r\n state.params = [...parentState].map(shallowClone)\r\n const existItem = state.params.find((item: any) => item.index === index)\r\n if (existItem)\r\n existItem.define = mergeObject(existItem.define, { [key]: value })\r\n\r\n else\r\n state.params.push({ define: { [key]: value }, index })\r\n })\r\n return\r\n }\r\n setPropertyState(target, k, (state) => {\r\n const parentState = getState(target, k)?.define\r\n if (!state.define)\r\n state.define = mergeObject(parentState)\r\n\r\n state.define[key] = value\r\n })\r\n }\r\n}\r\n\r\nexport * from './param'\r\nexport * from './aop'\r\nexport * from './http'\r\nexport * from './rpc'\r\n"]}