phecda-server 4.0.7 → 4.1.1

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 (60) hide show
  1. package/dist/{chunk-DQUH5BP6.mjs → chunk-5KOB2WHH.mjs} +1 -1
  2. package/dist/{chunk-DQUH5BP6.mjs.map → chunk-5KOB2WHH.mjs.map} +1 -1
  3. package/dist/{chunk-WWYSLFOI.js → chunk-5L4K7XEB.js} +33 -31
  4. package/dist/chunk-5L4K7XEB.js.map +1 -0
  5. package/dist/{chunk-FCLWCFQS.js → chunk-63KBHOSB.js} +3 -3
  6. package/dist/{chunk-ZZ2QKZ46.js → chunk-BDIQWWHN.js} +1 -1
  7. package/dist/{chunk-ZZ2QKZ46.js.map → chunk-BDIQWWHN.js.map} +1 -1
  8. package/dist/{chunk-ATMZNJSE.mjs → chunk-MIIYJMMM.mjs} +19 -15
  9. package/dist/chunk-MIIYJMMM.mjs.map +1 -0
  10. package/dist/{chunk-43ZXHSVH.mjs → chunk-Q3V3ERU3.mjs} +2 -2
  11. package/dist/{chunk-JZGLQ4FQ.js → chunk-WBHZCJSN.js} +61 -57
  12. package/dist/chunk-WBHZCJSN.js.map +1 -0
  13. package/dist/{chunk-F5PQVQTY.mjs → chunk-WQBXOVND.mjs} +16 -14
  14. package/dist/chunk-WQBXOVND.mjs.map +1 -0
  15. package/dist/{core-72951cf9.d.ts → core-d080d872.d.ts} +21 -13
  16. package/dist/index.d.ts +24 -25
  17. package/dist/index.js +57 -57
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +4 -4
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/rpc/rabbitmq/index.d.ts +2 -5
  22. package/dist/rpc/rabbitmq/index.js +22 -20
  23. package/dist/rpc/rabbitmq/index.js.map +1 -1
  24. package/dist/rpc/rabbitmq/index.mjs +17 -15
  25. package/dist/rpc/rabbitmq/index.mjs.map +1 -1
  26. package/dist/rpc/redis/index.d.ts +2 -5
  27. package/dist/rpc/redis/index.js +23 -21
  28. package/dist/rpc/redis/index.js.map +1 -1
  29. package/dist/rpc/redis/index.mjs +18 -16
  30. package/dist/rpc/redis/index.mjs.map +1 -1
  31. package/dist/server/express/index.d.ts +2 -5
  32. package/dist/server/express/index.js +28 -26
  33. package/dist/server/express/index.js.map +1 -1
  34. package/dist/server/express/index.mjs +9 -7
  35. package/dist/server/express/index.mjs.map +1 -1
  36. package/dist/server/fastify/index.d.ts +2 -5
  37. package/dist/server/fastify/index.js +26 -24
  38. package/dist/server/fastify/index.js.map +1 -1
  39. package/dist/server/fastify/index.mjs +9 -7
  40. package/dist/server/fastify/index.mjs.map +1 -1
  41. package/dist/server/h3/index.d.ts +2 -5
  42. package/dist/server/h3/index.js +150 -160
  43. package/dist/server/h3/index.js.map +1 -1
  44. package/dist/server/h3/index.mjs +144 -154
  45. package/dist/server/h3/index.mjs.map +1 -1
  46. package/dist/server/koa/index.d.ts +2 -5
  47. package/dist/server/koa/index.js +28 -26
  48. package/dist/server/koa/index.js.map +1 -1
  49. package/dist/server/koa/index.mjs +9 -7
  50. package/dist/server/koa/index.mjs.map +1 -1
  51. package/dist/test.d.ts +1 -1
  52. package/dist/test.js +5 -5
  53. package/dist/test.mjs +2 -2
  54. package/package.json +4 -1
  55. package/dist/chunk-ATMZNJSE.mjs.map +0 -1
  56. package/dist/chunk-F5PQVQTY.mjs.map +0 -1
  57. package/dist/chunk-JZGLQ4FQ.js.map +0 -1
  58. package/dist/chunk-WWYSLFOI.js.map +0 -1
  59. /package/dist/{chunk-FCLWCFQS.js.map → chunk-63KBHOSB.js.map} +0 -0
  60. /package/dist/{chunk-43ZXHSVH.mjs.map → chunk-Q3V3ERU3.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/decorators/index.ts","../src/decorators/param.ts","../src/decorators/route.ts","../src/decorators/aop.ts","../src/index.ts","../src/modules/dev.ts","../src/modules/filter.ts","../src/modules/guard.ts","../src/modules/interceptor.ts","../src/modules/pipe.ts","../src/modules/plugin.ts","../src/modules/module.ts"],"sourcesContent":["import { setModelVar, setState } from 'phecda-core'\n\nexport function Header(name: string, value: string) {\n return (target: any, k: PropertyKey) => {\n setModelVar(target, k)\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.header)\n state.header = {}\n\n state.header[name] = value\n setState(target, k, state)\n }\n}\n\nexport function Define(key: string, value: any) {\n return (target: any, k?: PropertyKey) => {\n if (!k) {\n k = '__CLASS'\n target = target.prototype\n }\n\n setModelVar(target, k)\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.define)\n state.define = {}\n\n state.define[key] = value\n setState(target, k, state)\n }\n}\n\nexport * from './param'\nexport * from './route'\nexport * from './aop'\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function BaseParam(type: string, key: string): any {\n return (target: any, k: PropertyKey, index: number) => {\n setModelVar(target, k)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.params)\n state.params = []\n const existItem = state.params.find((item: any) => item.index === index)\n if (existItem)\n Object.assign(existItem, { type, key })\n\n else\n state.params.push({ type, key, index })\n\n setState(target, k, state)\n }\n}\n\nexport function Pipe(key?: string, opts?: any) {\n return (target: any, k: PropertyKey, index: number) => {\n setModelVar(target, k)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n\n if (!state.params)\n state.params = []\n\n const existItem = state.params.find((item: any) => item.index === index)\n if (existItem)\n Object.assign(existItem, { pipe: key, pipeOpts: opts })\n\n else\n state.params.push({ pipe: key, pipeOpts: opts, index })\n\n setState(target, k, state)\n }\n}\n\nexport function Body(key = '') {\n return BaseParam('body', key)\n}\n// req.headers\nexport function Head(key: string) {\n return BaseParam('headers', key.toLowerCase())\n}\n\nexport function Query(key = '') {\n return BaseParam('query', key)\n}\nexport function Param(key: string) {\n return BaseParam('params', key)\n}\n\n// work for micro service\nexport function Arg() {\n return BaseParam('params', '')\n}\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function Route(route: string, type?: string): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n state.http = {\n route,\n type,\n }\n setState(target, key, state)\n }\n}\n\nexport function Get(route: string) {\n return Route(route, 'get')\n}\n\nexport function Post(route: string) {\n return Route(route, 'post')\n}\nexport function Put(route: string) {\n return Route(route, 'put')\n}\n\nexport function Patch(route: string) {\n return Route(route, 'patch')\n}\nexport function Delete(route: string) {\n return Route(route, 'delete')\n}\n\nexport function Controller(route = '') {\n return Route(route)\n}\n\nexport function Rpc(...types: ('mq' | 'redis' | string)[]) {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n setModelVar(target, key)\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.rpc)\n state.rpc = {}\n\n state.rpc.type = types\n setState(target, key, state)\n }\n}\nexport function Event(isEvent = true) {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n setModelVar(target, key)\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.rpc)\n state.rpc = {}\n\n state.rpc.isEvent = isEvent\n setState(target, key, state)\n }\n}\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function Guard(...guards: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.guards)\n state.guards = []\n state.guards.push(...guards)\n setState(target, key, state)\n }\n}\n\nexport function Plugin(...plugins: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.plugins)\n state.plugins = []\n state.plugins.push(...plugins)\n setState(target, key, state)\n }\n}\n\nexport function Interceptor(...interceptors: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.interceptors)\n state.interceptors = []\n state.interceptors.push(...interceptors)\n setState(target, key, state)\n }\n}\nexport function Filter(filter: string): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n state.filter = filter\n setState(target, key, state)\n }\n}\n","export * from './context'\nexport * from './types'\nexport * from './core'\nexport * from './decorators'\nexport * from './exception'\nexport * from './pipe'\nexport * from './meta'\nexport * from 'phecda-core'\nexport * from './helper'\nexport * from './common'\nexport * from './modules'\nexport * from './compiler'\nexport * from './utils'\n","import { Empty } from 'phecda-core'\nimport { UNMOUNT_SYMBOL } from '../common'\nimport { emitter } from '../core'\n\n@Empty\nexport class Dev {\n protected readonly emitter = emitter\n private readonly [UNMOUNT_SYMBOL]: (() => void)[] = []\n\n onUnmount(cb: () => void) {\n this[UNMOUNT_SYMBOL].push(cb)\n }\n}\n","import { getSymbol } from 'phecda-core'\nimport { Context, addFilter } from '../context'\nimport type { Exception } from '../exception'\nimport type { P } from '../types'\nimport { Dev } from './dev'\n\nexport abstract class PFilter<C = any, E extends Exception = Exception > extends Dev {\n readonly key: string\n constructor(tag?: string) {\n super()\n this.key = tag || getSymbol(this)\n\n addFilter(this.key, this.use.bind(this))\n this.onUnmount(() => {\n delete Context.filterRecord[this.key]\n })\n }\n\n abstract use(error: Error | E, tag?: string, ctx?: C): P.Error\n}\n","import { getSymbol } from 'phecda-core'\nimport { Context, addGuard } from '../context'\nimport { Dev } from './dev'\n\nexport abstract class PGuard<C = any> extends Dev {\n abstract use(tag: string, ctx: C): Promise<boolean> | boolean\n readonly key: string\n constructor(tag?: string) {\n super()\n this.key = tag || getSymbol(this)\n\n addGuard(this.key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.guardRecord[this.key]\n })\n }\n}\n","import { getSymbol } from 'phecda-core'\nimport { Context, addInterceptor } from '../context'\nimport { Dev } from './dev'\n\nexport abstract class PInterceptor<C = any> extends Dev {\n abstract use(tag: string, ctx: C): Function | Promise<Function> | any\n readonly key: string\n\n constructor(tag?: string) {\n super()\n\n this.key = tag || getSymbol(this)\n\n this.onUnmount(() => {\n delete Context.interceptorRecord[this.key]\n })\n addInterceptor(this.key, this.use.bind(this))\n }\n}\n","import { getSymbol } from 'phecda-core'\nimport { Context, addPipe } from '../context'\nimport { Dev } from './dev'\nexport abstract class PPipe<C = any> extends Dev {\n readonly key: string\n\n constructor(tag?: string) {\n super()\n\n this.key = tag || getSymbol(this)\n addPipe(this.key, this.use.bind(this))\n this.onUnmount(() => {\n delete Context.pipeRecord[this.key]\n })\n }\n\n abstract use(param: { arg: any; option?: any; key: string; type: string; index: number; reflect: any }, tag: string, ctx: C): any\n}\n","import { getSymbol } from 'phecda-core'\nimport { Context, addPlugin } from '../context'\nimport { Dev } from '../modules/dev'\n\nexport abstract class PPlugin extends Dev {\n readonly key: string\n constructor(tag?: string) {\n super()\n this.key = tag || getSymbol(this)\n\n addPlugin(this.key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.pluginRecord[this.key]\n })\n }\n\n abstract use(...args: any): void\n}\n","import { getSymbol } from 'phecda-core'\nimport type { P } from '../types'\nimport { Context, addFilter, addGuard, addInterceptor, addPipe, addPlugin } from '../context'\nimport type { Exception } from '../exception'\nimport { Dev } from './dev'\n\nexport interface PModule<C = any> {\n\n intercept(tag: string, ctx: C): Function | Promise<Function> | any\n\n guard(tag: string, ctx: C): Promise<boolean> | boolean\n\n pipe(param: { arg: any; option?: any; key: string; type: string; index: number; reflect: any }, tag: string, ctx: C): any\n\n filter< E extends Exception = Exception>(error: Error | E, tag?: string, ctx?: C): P.Error\n\n plugin(...args: any): void\n}\n\nexport class PModule extends Dev {\n readonly key: string\n\n constructor(tag?: string) {\n super()\n\n const key = this.key = tag || getSymbol(this)\n\n if (this.pipe) {\n addPipe(key, this.pipe.bind(this))\n this.onUnmount(() => {\n delete Context.pipeRecord[key]\n })\n }\n\n if (this.plugin) {\n addPlugin(key, this.plugin.bind(this))\n\n this.onUnmount(() => {\n delete Context.pluginRecord[key]\n })\n }\n if (this.intercept) {\n addInterceptor(key, this.intercept.bind(this))\n\n this.onUnmount(() => {\n delete Context.interceptorRecord[key]\n })\n }\n if (this.guard) {\n addGuard(key, this.guard.bind(this))\n\n this.onUnmount(() => {\n delete Context.guardRecord[key]\n })\n }\n\n if (this.filter) {\n addFilter(key, this.filter.bind(this))\n this.onUnmount(() => {\n delete Context.filterRecord[key]\n })\n }\n }\n}\n"],"mappings":"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","names":["setModelVar","setState","setModelVar","setState","BaseParam","type","key","target","k","index","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","params","existItem","find","item","Object","assign","push","setState","Pipe","opts","pipe","pipeOpts","Body","Head","toLowerCase","Query","Param","Arg","setModelVar","setState","Route","route","type","target","key","prototype","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","http","setState","Get","Post","Put","Patch","Delete","Controller","Rpc","types","rpc","Event","isEvent","setModelVar","setState","Guard","guards","target","key","prototype","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","push","setState","Plugin","plugins","Interceptor","interceptors","Filter","filter","Header","name","value","target","k","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","header","setState","Define","key","prototype","define","Empty","Dev","emitter","UNMOUNT_SYMBOL","onUnmount","cb","push","Empty","getSymbol","PFilter","Dev","key","constructor","tag","getSymbol","addFilter","use","bind","onUnmount","Context","filterRecord","getSymbol","PGuard","Dev","key","constructor","tag","getSymbol","addGuard","use","bind","onUnmount","Context","guardRecord","getSymbol","PInterceptor","Dev","key","constructor","tag","getSymbol","onUnmount","Context","interceptorRecord","addInterceptor","use","bind","getSymbol","PPipe","Dev","key","constructor","tag","getSymbol","addPipe","use","bind","onUnmount","Context","pipeRecord","getSymbol","PPlugin","Dev","key","constructor","tag","getSymbol","addPlugin","use","bind","onUnmount","Context","pluginRecord","getSymbol","PModule","Dev","key","constructor","tag","getSymbol","pipe","addPipe","bind","onUnmount","Context","pipeRecord","plugin","addPlugin","pluginRecord","intercept","addInterceptor","interceptorRecord","guard","addGuard","guardRecord","filter","addFilter","filterRecord"]}
1
+ {"version":3,"sources":["../src/decorators/index.ts","../src/decorators/param.ts","../src/decorators/route.ts","../src/decorators/aop.ts","../src/index.ts","../src/modules/dev.ts","../src/modules/filter.ts","../src/modules/guard.ts","../src/modules/interceptor.ts","../src/modules/pipe.ts","../src/modules/plugin.ts","../src/modules/module.ts"],"sourcesContent":["import { setModelVar, setState } from 'phecda-core'\n\nexport function Header(name: string, value: string) {\n return (target: any, k: PropertyKey) => {\n setModelVar(target, k)\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.header)\n state.header = {}\n\n state.header[name] = value\n setState(target, k, state)\n }\n}\n\nexport function Define(key: string, value: any) {\n return (target: any, k?: PropertyKey) => {\n if (!k) {\n k = '__CLASS'\n target = target.prototype\n }\n\n setModelVar(target, k)\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.define)\n state.define = {}\n\n state.define[key] = value\n setState(target, k, state)\n }\n}\n\nexport * from './param'\nexport * from './route'\nexport * from './aop'\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function BaseParam(type: string, key: string): any {\n return (target: any, k: PropertyKey, index: number) => {\n setModelVar(target, k)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n if (!state.params)\n state.params = []\n const existItem = state.params.find((item: any) => item.index === index)\n if (existItem)\n Object.assign(existItem, { type, key })\n\n else\n state.params.push({ type, key, index })\n\n setState(target, k, state)\n }\n}\n\nexport function Pipe(key?: string, opts?: any) {\n return (target: any, k: PropertyKey, index: number) => {\n setModelVar(target, k)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(k) || {}\n\n if (!state.params)\n state.params = []\n\n const existItem = state.params.find((item: any) => item.index === index)\n if (existItem)\n Object.assign(existItem, { pipe: key, pipeOpts: opts })\n\n else\n state.params.push({ pipe: key, pipeOpts: opts, index })\n\n setState(target, k, state)\n }\n}\n\nexport function Body(key = '') {\n return BaseParam('body', key)\n}\n// req.headers\nexport function Head(key: string) {\n return BaseParam('headers', key.toLowerCase())\n}\n\nexport function Query(key = '') {\n return BaseParam('query', key)\n}\nexport function Param(key: string) {\n return BaseParam('params', key)\n}\n\n// work for micro service\nexport function Arg() {\n return BaseParam('params', '')\n}\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function Route(route: string, type?: string): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n state.http = {\n route,\n type,\n }\n setState(target, key, state)\n }\n}\n\nexport function Get(route: string) {\n return Route(route, 'get')\n}\n\nexport function Post(route: string) {\n return Route(route, 'post')\n}\nexport function Put(route: string) {\n return Route(route, 'put')\n}\n\nexport function Patch(route: string) {\n return Route(route, 'patch')\n}\nexport function Delete(route: string) {\n return Route(route, 'delete')\n}\n\nexport function Controller(route = '') {\n return Route(route)\n}\n\nexport function Rpc(...types: ('mq' | 'redis' | string)[]) {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n setModelVar(target, key)\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.rpc)\n state.rpc = {}\n\n state.rpc.type = types\n setState(target, key, state)\n }\n}\nexport function Event(isEvent = true) {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n setModelVar(target, key)\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.rpc)\n state.rpc = {}\n\n state.rpc.isEvent = isEvent\n setState(target, key, state)\n }\n}\n","import { setModelVar, setState } from 'phecda-core'\n\nexport function Guard(...guards: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.guards)\n state.guards = []\n state.guards.push(...guards)\n setState(target, key, state)\n }\n}\n\nexport function Plugin(...plugins: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.plugins)\n state.plugins = []\n state.plugins.push(...plugins)\n setState(target, key, state)\n }\n}\n\nexport function Interceptor(...interceptors: string[]): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n if (!state.interceptors)\n state.interceptors = []\n state.interceptors.push(...interceptors)\n setState(target, key, state)\n }\n}\nexport function Filter(filter: string): any {\n return (target: any, key?: PropertyKey) => {\n if (!key)\n key = '__CLASS'\n target = key === '__CLASS' ? target.prototype : target\n\n setModelVar(target, key)\n\n const state = target._namespace.__STATE_NAMESPACE__.get(key) || {}\n state.filter = filter\n setState(target, key, state)\n }\n}\n","export * from './context'\nexport * from './types'\nexport * from './core'\nexport * from './decorators'\nexport * from './exception'\nexport * from './pipe'\nexport * from './meta'\nexport * from 'phecda-core'\nexport * from './helper'\nexport * from './common'\nexport * from './modules'\nexport * from './compiler'\nexport * from './utils'\n","import { Empty } from 'phecda-core'\nimport { UNMOUNT_SYMBOL } from '../common'\nimport { emitter } from '../core'\n\n@Empty\nexport class Dev {\n protected readonly emitter = emitter\n private readonly [UNMOUNT_SYMBOL]: (() => void)[] = []\n// work for hmr\n// exec callback when module unmount\n onUnmount(cb: () => void) {\n this[UNMOUNT_SYMBOL].push(cb)\n }\n}\n","import { getSymbol } from 'phecda-core'\nimport { Context, addFilter } from '../context'\nimport type { Exception } from '../exception'\nimport type { P } from '../types'\nimport { Dev } from './dev'\n\nexport abstract class PFilter<C extends P.BaseContext = any, E extends Exception = Exception > extends Dev {\n readonly key: string\n constructor(tag?: string) {\n super()\n this.key = tag || getSymbol(this)\n\n addFilter(this.key, this.use.bind(this))\n this.onUnmount(() => {\n delete Context.filterRecord[this.key]\n })\n }\n\n abstract use(error: Error | E, ctx?: C): P.Error\n}\n","import { getSymbol } from 'phecda-core'\nimport { Context, addGuard } from '../context'\nimport { Dev } from './dev'\nimport { P } from '../types'\n\nexport abstract class PGuard<C extends P.BaseContext = any> extends Dev {\n abstract use(ctx: C): Promise<boolean> | boolean\n readonly key: string\n constructor(tag?: string) {\n super()\n this.key = tag || getSymbol(this)\n\n addGuard(this.key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.guardRecord[this.key]\n })\n }\n}\n\n\n","import { getSymbol } from 'phecda-core'\nimport { Context, addInterceptor } from '../context'\nimport { Dev } from './dev'\nimport { P } from '../types'\n\nexport abstract class PInterceptor<C extends P.BaseContext = any> extends Dev {\n abstract use( ctx: C): Function | Promise<Function> | any\n readonly key: string\n\n constructor(tag?: string) {\n super()\n\n this.key = tag || getSymbol(this)\n\n this.onUnmount(() => {\n delete Context.interceptorRecord[this.key]\n })\n addInterceptor(this.key, this.use.bind(this))\n }\n}\n","import { getSymbol } from 'phecda-core'\nimport { Context, addPipe } from '../context'\nimport { Dev } from './dev'\nimport { P } from '../types'\nexport abstract class PPipe<C extends P.BaseContext = any> extends Dev {\n readonly key: string\n\n constructor(tag?: string) {\n super()\n\n this.key = tag || getSymbol(this)\n addPipe(this.key, this.use.bind(this))\n this.onUnmount(() => {\n delete Context.pipeRecord[this.key]\n })\n }\n\n abstract use(param: { arg: any; option?: any; key: string; type: string; index: number; reflect: any }, ctx: C): any\n}\n","import { getSymbol } from 'phecda-core'\nimport { Context, addPlugin } from '../context'\nimport { Dev } from '../modules/dev'\n\nexport abstract class PPlugin extends Dev {\n readonly key: string\n constructor(tag?: string) {\n super()\n this.key = tag || getSymbol(this)\n\n addPlugin(this.key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.pluginRecord[this.key]\n })\n }\n\n abstract use(...args: any): void\n}\n","import { getSymbol } from 'phecda-core'\nimport type { P } from '../types'\nimport { Context, addFilter, addGuard, addInterceptor, addPipe, addPlugin } from '../context'\nimport type { Exception } from '../exception'\nimport { Dev } from './dev'\n\nexport interface PModule<C extends P.BaseContext = any,E extends Exception = Exception> {\n\n intercept( ctx: C): Function | Promise<Function> | any\n\n guard( ctx: C): Promise<boolean> | boolean\n\n pipe(param: { arg: any; option?: any; key: string; type: string; index: number; reflect: any }, ctx: C): any\n\n filter(error: Error | E, ctx?: C): P.Error\n\n plugin(...args: any): void\n}\n\nexport class PModule extends Dev {\n readonly key: string\n\n constructor(tag?: string) {\n super()\n\n const key = this.key = tag || getSymbol(this)\n\n if (this.pipe) {\n addPipe(key, this.pipe.bind(this))\n this.onUnmount(() => {\n delete Context.pipeRecord[key]\n })\n }\n\n if (this.plugin) {\n addPlugin(key, this.plugin.bind(this))\n\n this.onUnmount(() => {\n delete Context.pluginRecord[key]\n })\n }\n if (this.intercept) {\n addInterceptor(key, this.intercept.bind(this))\n\n this.onUnmount(() => {\n delete Context.interceptorRecord[key]\n })\n }\n if (this.guard) {\n addGuard(key, this.guard.bind(this))\n\n this.onUnmount(() => {\n delete Context.guardRecord[key]\n })\n }\n\n if (this.filter) {\n addFilter(key, this.filter.bind(this))\n this.onUnmount(() => {\n delete Context.filterRecord[key]\n })\n }\n }\n}\n\n\n"],"mappings":"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","names":["setModelVar","setState","setModelVar","setState","BaseParam","type","key","target","k","index","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","params","existItem","find","item","Object","assign","push","setState","Pipe","opts","pipe","pipeOpts","Body","Head","toLowerCase","Query","Param","Arg","setModelVar","setState","Route","route","type","target","key","prototype","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","http","setState","Get","Post","Put","Patch","Delete","Controller","Rpc","types","rpc","Event","isEvent","setModelVar","setState","Guard","guards","target","key","prototype","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","push","setState","Plugin","plugins","Interceptor","interceptors","Filter","filter","Header","name","value","target","k","setModelVar","state","_namespace","__STATE_NAMESPACE__","get","header","setState","Define","key","prototype","define","Empty","Dev","emitter","UNMOUNT_SYMBOL","onUnmount","cb","push","Empty","getSymbol","PFilter","Dev","key","constructor","tag","getSymbol","addFilter","use","bind","onUnmount","Context","filterRecord","getSymbol","PGuard","Dev","key","constructor","tag","getSymbol","addGuard","use","bind","onUnmount","Context","guardRecord","getSymbol","PInterceptor","Dev","key","constructor","tag","getSymbol","onUnmount","Context","interceptorRecord","addInterceptor","use","bind","getSymbol","PPipe","Dev","key","constructor","tag","getSymbol","addPipe","use","bind","onUnmount","Context","pipeRecord","getSymbol","PPlugin","Dev","key","constructor","tag","getSymbol","addPlugin","use","bind","onUnmount","Context","pluginRecord","getSymbol","PModule","Dev","key","constructor","tag","getSymbol","pipe","addPipe","bind","onUnmount","Context","pipeRecord","plugin","addPlugin","pluginRecord","intercept","addInterceptor","interceptorRecord","guard","addGuard","guardRecord","filter","addFilter","filterRecord"]}
@@ -1,19 +1,16 @@
1
1
  import amqplib from 'amqplib';
2
- import { M as Meta, F as Factory, T as ToControllerMap } from '../../core-72951cf9.js';
2
+ import { P, F as Factory, T as ToControllerMap } from '../../core-d080d872.js';
3
3
  import 'phecda-core';
4
4
 
5
5
  interface Options {
6
6
  globalGuards?: string[];
7
7
  globalInterceptors?: string[];
8
8
  }
9
- interface RabbitmqCtx {
9
+ interface RabbitmqCtx extends P.BaseContext {
10
10
  type: 'rabbitmq';
11
- meta?: Meta;
12
- moduleMap: Record<string, any>;
13
11
  ch: amqplib.Channel;
14
12
  msg: amqplib.ConsumeMessage;
15
13
  data: any;
16
- [key: string]: any;
17
14
  }
18
15
  declare function bind(ch: amqplib.Channel, queue: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options): Promise<void>;
19
16
 
@@ -2,54 +2,56 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkJZGLQ4FQjs = require('../../chunk-JZGLQ4FQ.js');
5
+ var _chunkWBHZCJSNjs = require('../../chunk-WBHZCJSN.js');
6
6
 
7
7
 
8
8
 
9
- var _chunkZZ2QKZ46js = require('../../chunk-ZZ2QKZ46.js');
9
+ var _chunkBDIQWWHNjs = require('../../chunk-BDIQWWHN.js');
10
10
 
11
11
  // src/rpc/rabbitmq/bind.ts
12
12
  async function bind(ch, queue, { moduleMap, meta }, opts) {
13
13
  const metaMap = /* @__PURE__ */ new Map();
14
14
  const existQueue = /* @__PURE__ */ new Set();
15
15
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
16
- _chunkJZGLQ4FQjs.isAopDepInject.call(void 0, meta, {
17
- guards: globalGuards,
18
- interceptors: globalInterceptors
19
- });
20
16
  function handleMeta() {
17
+ _chunkWBHZCJSNjs.isAopDepInject.call(void 0, meta, {
18
+ guards: globalGuards,
19
+ interceptors: globalInterceptors
20
+ });
21
21
  for (const item of meta) {
22
22
  const { data: { rpc, method, name } } = item;
23
23
  if (_optionalChain([rpc, 'optionalAccess', _ => _.type]) && rpc.type.includes("mq"))
24
24
  metaMap.set(`${name}-${method}`, item);
25
25
  }
26
26
  }
27
- _chunkZZ2QKZ46js.__name.call(void 0, handleMeta, "handleMeta");
27
+ _chunkBDIQWWHNjs.__name.call(void 0, handleMeta, "handleMeta");
28
28
  handleMeta();
29
29
  await ch.assertQueue(queue);
30
30
  ch.consume(queue, async (msg) => {
31
31
  if (msg) {
32
32
  const data = JSON.parse(msg.content.toString());
33
33
  const { tag, args, queue: queue2, id } = data;
34
- const context = new (0, _chunkJZGLQ4FQjs.Context)(tag, {
35
- type: "rabbitmq",
36
- moduleMap,
37
- meta: metaMap.get(tag),
38
- data,
39
- ch,
40
- msg
41
- });
42
34
  if (!existQueue.has(queue2))
43
35
  await ch.assertQueue(queue2);
44
36
  if (!metaMap.has(tag)) {
45
37
  queue2 && ch.sendToQueue(queue2, Buffer.from(JSON.stringify({
46
- data: new (0, _chunkJZGLQ4FQjs.BadRequestException)(`service "${tag}" doesn't exist`).data,
38
+ data: new (0, _chunkWBHZCJSNjs.BadRequestException)(`service "${tag}" doesn't exist`).data,
47
39
  error: true,
48
40
  id
49
41
  })));
50
42
  return;
51
43
  }
52
- const { data: { guards, interceptors, params, name, method, filter }, paramsType } = metaMap.get(tag);
44
+ const meta2 = metaMap.get(tag);
45
+ const context = new (0, _chunkWBHZCJSNjs.Context)({
46
+ type: "rabbitmq",
47
+ moduleMap,
48
+ meta: meta2,
49
+ tag,
50
+ data,
51
+ ch,
52
+ msg
53
+ });
54
+ const { data: { guards, interceptors, params, name, method, filter }, paramsType } = meta2;
53
55
  try {
54
56
  await context.useGuard([
55
57
  ...globalGuards,
@@ -99,13 +101,13 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
99
101
  }, {
100
102
  noAck: true
101
103
  });
102
- if (_chunkZZ2QKZ46js.IS_DEV) {
104
+ if (_chunkBDIQWWHNjs.IS_DEV) {
103
105
  _optionalChain([globalThis, 'access', _2 => _2.__PS_HMR__, 'optionalAccess', _3 => _3.push, 'call', _4 => _4(async () => {
104
106
  handleMeta();
105
107
  })]);
106
108
  }
107
109
  }
108
- _chunkZZ2QKZ46js.__name.call(void 0, bind, "bind");
110
+ _chunkBDIQWWHNjs.__name.call(void 0, bind, "bind");
109
111
 
110
112
  // src/rpc/rabbitmq/client.ts
111
113
  var _events = require('events');
@@ -153,7 +155,7 @@ async function createClient(ch, queue, controllers) {
153
155
  }
154
156
  return ret;
155
157
  }
156
- _chunkZZ2QKZ46js.__name.call(void 0, createClient, "createClient");
158
+ _chunkBDIQWWHNjs.__name.call(void 0, createClient, "createClient");
157
159
 
158
160
 
159
161
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/rpc/rabbitmq/bind.ts","../../../src/rpc/rabbitmq/client.ts"],"names":["bind","ch","queue","moduleMap","meta","opts","metaMap","Map","existQueue","Set","globalGuards","globalInterceptors","isAopDepInject","guards","interceptors","handleMeta","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","context","Context","get","has","sendToQueue","Buffer","from","stringify","BadRequestException","error","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","noAck","IS_DEV","globalThis","__PS_HMR__","push","EventEmitter","randomUUID","createClient","controllers","emitter","uniQueue","emit","Proxy","target","p","Error","isEvent","Promise","resolve","reject","once"],"mappings":"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","sourcesContent":["import type amqplib from 'amqplib'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RabbitmqCtx {\n type: 'rabbitmq'\n meta?: Meta\n moduleMap: Record<string, any>\n ch: amqplib.Channel\n msg: amqplib.ConsumeMessage\n // JSON parse msg.content\n data: any\n [key: string]: any\n\n}\n\nexport async function bind(ch: amqplib.Channel, queue: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const existQueue = new Set<string>()\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n function handleMeta() {\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n await ch.assertQueue(queue)\n\n ch.consume(queue, async (msg) => {\n if (msg) {\n const data = JSON.parse(msg.content.toString())\n const { tag, args, queue, id } = data\n const context = new Context(tag, {\n type: 'rabbitmq',\n moduleMap,\n meta: metaMap.get(tag),\n data,\n ch,\n msg,\n })\n if (!existQueue.has(queue))\n await ch.assertQueue(queue)\n if (!metaMap.has(tag)) {\n queue && ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n })))\n\n return\n }\n\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = metaMap.get(tag)!\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: cache, id })))\n\n return\n }\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const ret = await context.usePostInterceptor(funcData)\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: ret, id })))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: true,\n id,\n })))\n }\n }\n }\n }, { noAck: true })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { EventEmitter } from 'events'\nimport { randomUUID } from 'crypto'\nimport type amqplib from 'amqplib'\nimport type { ToControllerMap } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToControllerMap<S>> {\n const ret = {} as any\n const emitter = new EventEmitter()\n const uniQueue = `PS:${randomUUID()}`\n\n await ch.assertQueue(uniQueue)\n ch.consume(uniQueue, (msg) => {\n if (!msg)\n return\n const { data, id, error } = JSON.parse(msg.content.toString())\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('mq'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support rabbitmq`)\n return (...args: any) => {\n ch.sendToQueue(queue, Buffer.from(\n JSON.stringify(\n {\n id,\n tag,\n args,\n queue: isEvent ? undefined : uniQueue,\n },\n ),\n ))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data: any, error: boolean) => {\n if (error)\n reject(data)\n\n else resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"]}
1
+ {"version":3,"sources":["../../../src/rpc/rabbitmq/bind.ts","../../../src/rpc/rabbitmq/client.ts"],"names":["bind","ch","queue","moduleMap","meta","opts","metaMap","Map","existQueue","Set","globalGuards","globalInterceptors","handleMeta","isAopDepInject","guards","interceptors","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","has","sendToQueue","Buffer","from","stringify","BadRequestException","error","get","context","Context","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","noAck","IS_DEV","globalThis","__PS_HMR__","push","EventEmitter","randomUUID","createClient","controllers","emitter","uniQueue","emit","Proxy","target","p","Error","isEvent","Promise","resolve","reject","once"],"mappings":"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","sourcesContent":["import type amqplib from 'amqplib'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\nimport { P } from '../../types'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RabbitmqCtx extends P.BaseContext {\n type: 'rabbitmq'\n ch: amqplib.Channel\n msg: amqplib.ConsumeMessage\n data: any\n}\n\nexport async function bind(ch: amqplib.Channel, queue: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const existQueue = new Set<string>()\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n\n function handleMeta() {\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n await ch.assertQueue(queue)\n\n ch.consume(queue, async (msg) => {\n if (msg) {\n const data = JSON.parse(msg.content.toString())\n const { tag, args, queue, id } = data\n\n if (!existQueue.has(queue))\n await ch.assertQueue(queue)\n if (!metaMap.has(tag)) {\n queue && ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n })))\n\n return\n }\n\n const meta = metaMap.get(tag)!\n const context = new Context<RabbitmqCtx>({\n type: 'rabbitmq',\n moduleMap,\n meta,\n tag,\n data,\n ch,\n msg,\n })\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = meta\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: cache, id })))\n\n return\n }\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const ret = await context.usePostInterceptor(funcData)\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: ret, id })))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: true,\n id,\n })))\n }\n }\n }\n }, { noAck: true })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { EventEmitter } from 'events'\nimport { randomUUID } from 'crypto'\nimport type amqplib from 'amqplib'\nimport type { ToControllerMap } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToControllerMap<S>> {\n const ret = {} as any\n const emitter = new EventEmitter()\n const uniQueue = `PS:${randomUUID()}`\n\n await ch.assertQueue(uniQueue)\n ch.consume(uniQueue, (msg) => {\n if (!msg)\n return\n const { data, id, error } = JSON.parse(msg.content.toString())\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('mq'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support rabbitmq`)\n return (...args: any) => {\n ch.sendToQueue(queue, Buffer.from(\n JSON.stringify(\n {\n id,\n tag,\n args,\n queue: isEvent ? undefined : uniQueue,\n },\n ),\n ))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data: any, error: boolean) => {\n if (error)\n reject(data)\n\n else resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"]}
@@ -2,22 +2,22 @@ import {
2
2
  BadRequestException,
3
3
  Context,
4
4
  isAopDepInject
5
- } from "../../chunk-ATMZNJSE.mjs";
5
+ } from "../../chunk-MIIYJMMM.mjs";
6
6
  import {
7
7
  IS_DEV,
8
8
  __name
9
- } from "../../chunk-DQUH5BP6.mjs";
9
+ } from "../../chunk-5KOB2WHH.mjs";
10
10
 
11
11
  // src/rpc/rabbitmq/bind.ts
12
12
  async function bind(ch, queue, { moduleMap, meta }, opts) {
13
13
  const metaMap = /* @__PURE__ */ new Map();
14
14
  const existQueue = /* @__PURE__ */ new Set();
15
15
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
16
- isAopDepInject(meta, {
17
- guards: globalGuards,
18
- interceptors: globalInterceptors
19
- });
20
16
  function handleMeta() {
17
+ isAopDepInject(meta, {
18
+ guards: globalGuards,
19
+ interceptors: globalInterceptors
20
+ });
21
21
  for (const item of meta) {
22
22
  const { data: { rpc, method, name } } = item;
23
23
  if (rpc?.type && rpc.type.includes("mq"))
@@ -31,14 +31,6 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
31
31
  if (msg) {
32
32
  const data = JSON.parse(msg.content.toString());
33
33
  const { tag, args, queue: queue2, id } = data;
34
- const context = new Context(tag, {
35
- type: "rabbitmq",
36
- moduleMap,
37
- meta: metaMap.get(tag),
38
- data,
39
- ch,
40
- msg
41
- });
42
34
  if (!existQueue.has(queue2))
43
35
  await ch.assertQueue(queue2);
44
36
  if (!metaMap.has(tag)) {
@@ -49,7 +41,17 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
49
41
  })));
50
42
  return;
51
43
  }
52
- const { data: { guards, interceptors, params, name, method, filter }, paramsType } = metaMap.get(tag);
44
+ const meta2 = metaMap.get(tag);
45
+ const context = new Context({
46
+ type: "rabbitmq",
47
+ moduleMap,
48
+ meta: meta2,
49
+ tag,
50
+ data,
51
+ ch,
52
+ msg
53
+ });
54
+ const { data: { guards, interceptors, params, name, method, filter }, paramsType } = meta2;
53
55
  try {
54
56
  await context.useGuard([
55
57
  ...globalGuards,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/rpc/rabbitmq/bind.ts","../../../src/rpc/rabbitmq/client.ts"],"sourcesContent":["import type amqplib from 'amqplib'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RabbitmqCtx {\n type: 'rabbitmq'\n meta?: Meta\n moduleMap: Record<string, any>\n ch: amqplib.Channel\n msg: amqplib.ConsumeMessage\n // JSON parse msg.content\n data: any\n [key: string]: any\n\n}\n\nexport async function bind(ch: amqplib.Channel, queue: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const existQueue = new Set<string>()\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n function handleMeta() {\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n await ch.assertQueue(queue)\n\n ch.consume(queue, async (msg) => {\n if (msg) {\n const data = JSON.parse(msg.content.toString())\n const { tag, args, queue, id } = data\n const context = new Context(tag, {\n type: 'rabbitmq',\n moduleMap,\n meta: metaMap.get(tag),\n data,\n ch,\n msg,\n })\n if (!existQueue.has(queue))\n await ch.assertQueue(queue)\n if (!metaMap.has(tag)) {\n queue && ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n })))\n\n return\n }\n\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = metaMap.get(tag)!\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: cache, id })))\n\n return\n }\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const ret = await context.usePostInterceptor(funcData)\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: ret, id })))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: true,\n id,\n })))\n }\n }\n }\n }, { noAck: true })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { EventEmitter } from 'events'\nimport { randomUUID } from 'crypto'\nimport type amqplib from 'amqplib'\nimport type { ToControllerMap } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToControllerMap<S>> {\n const ret = {} as any\n const emitter = new EventEmitter()\n const uniQueue = `PS:${randomUUID()}`\n\n await ch.assertQueue(uniQueue)\n ch.consume(uniQueue, (msg) => {\n if (!msg)\n return\n const { data, id, error } = JSON.parse(msg.content.toString())\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('mq'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support rabbitmq`)\n return (...args: any) => {\n ch.sendToQueue(queue, Buffer.from(\n JSON.stringify(\n {\n id,\n tag,\n args,\n queue: isEvent ? undefined : uniQueue,\n },\n ),\n ))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data: any, error: boolean) => {\n if (error)\n reject(data)\n\n else resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"],"mappings":"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","names":["bind","ch","queue","moduleMap","meta","opts","metaMap","Map","existQueue","Set","globalGuards","globalInterceptors","isAopDepInject","guards","interceptors","handleMeta","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","context","Context","get","has","sendToQueue","Buffer","from","stringify","BadRequestException","error","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","noAck","IS_DEV","globalThis","__PS_HMR__","push","EventEmitter","randomUUID","createClient","ch","queue","controllers","ret","emitter","EventEmitter","uniQueue","randomUUID","assertQueue","consume","msg","data","id","error","JSON","parse","content","toString","emit","i","Proxy","get","target","p","Error","tag","rpc","isEvent","includes","args","sendToQueue","Buffer","from","stringify","undefined","Promise","resolve","reject","once"]}
1
+ {"version":3,"sources":["../../../src/rpc/rabbitmq/bind.ts","../../../src/rpc/rabbitmq/client.ts"],"sourcesContent":["import type amqplib from 'amqplib'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\nimport { P } from '../../types'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RabbitmqCtx extends P.BaseContext {\n type: 'rabbitmq'\n ch: amqplib.Channel\n msg: amqplib.ConsumeMessage\n data: any\n}\n\nexport async function bind(ch: amqplib.Channel, queue: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const existQueue = new Set<string>()\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n\n function handleMeta() {\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n await ch.assertQueue(queue)\n\n ch.consume(queue, async (msg) => {\n if (msg) {\n const data = JSON.parse(msg.content.toString())\n const { tag, args, queue, id } = data\n\n if (!existQueue.has(queue))\n await ch.assertQueue(queue)\n if (!metaMap.has(tag)) {\n queue && ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n })))\n\n return\n }\n\n const meta = metaMap.get(tag)!\n const context = new Context<RabbitmqCtx>({\n type: 'rabbitmq',\n moduleMap,\n meta,\n tag,\n data,\n ch,\n msg,\n })\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = meta\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: cache, id })))\n\n return\n }\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const ret = await context.usePostInterceptor(funcData)\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: ret, id })))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: true,\n id,\n })))\n }\n }\n }\n }, { noAck: true })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { EventEmitter } from 'events'\nimport { randomUUID } from 'crypto'\nimport type amqplib from 'amqplib'\nimport type { ToControllerMap } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToControllerMap<S>> {\n const ret = {} as any\n const emitter = new EventEmitter()\n const uniQueue = `PS:${randomUUID()}`\n\n await ch.assertQueue(uniQueue)\n ch.consume(uniQueue, (msg) => {\n if (!msg)\n return\n const { data, id, error } = JSON.parse(msg.content.toString())\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('mq'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support rabbitmq`)\n return (...args: any) => {\n ch.sendToQueue(queue, Buffer.from(\n JSON.stringify(\n {\n id,\n tag,\n args,\n queue: isEvent ? undefined : uniQueue,\n },\n ),\n ))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data: any, error: boolean) => {\n if (error)\n reject(data)\n\n else resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"],"mappings":"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","names":["bind","ch","queue","moduleMap","meta","opts","metaMap","Map","existQueue","Set","globalGuards","globalInterceptors","handleMeta","isAopDepInject","guards","interceptors","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","has","sendToQueue","Buffer","from","stringify","BadRequestException","error","get","context","Context","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","noAck","IS_DEV","globalThis","__PS_HMR__","push","EventEmitter","randomUUID","createClient","ch","queue","controllers","ret","emitter","EventEmitter","uniQueue","randomUUID","assertQueue","consume","msg","data","id","error","JSON","parse","content","toString","emit","i","Proxy","get","target","p","Error","tag","rpc","isEvent","includes","args","sendToQueue","Buffer","from","stringify","undefined","Promise","resolve","reject","once"]}
@@ -1,20 +1,17 @@
1
1
  import Redis from 'ioredis';
2
- import { M as Meta, F as Factory, T as ToControllerMap } from '../../core-72951cf9.js';
2
+ import { P, F as Factory, T as ToControllerMap } from '../../core-d080d872.js';
3
3
  import 'phecda-core';
4
4
 
5
5
  interface Options {
6
6
  globalGuards?: string[];
7
7
  globalInterceptors?: string[];
8
8
  }
9
- interface RedisCtx {
9
+ interface RedisCtx extends P.BaseContext {
10
10
  type: 'redis';
11
- meta?: Meta;
12
- moduleMap: Record<string, any>;
13
11
  redis: Redis;
14
12
  msg: string;
15
13
  channel: string;
16
14
  data: any;
17
- [key: string]: any;
18
15
  }
19
16
  declare function bind(redis: Redis, channel: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options): void;
20
17
 
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkJZGLQ4FQjs = require('../../chunk-JZGLQ4FQ.js');
5
+ var _chunkWBHZCJSNjs = require('../../chunk-WBHZCJSN.js');
6
6
 
7
7
 
8
8
 
9
- var _chunkZZ2QKZ46js = require('../../chunk-ZZ2QKZ46.js');
9
+ var _chunkBDIQWWHNjs = require('../../chunk-BDIQWWHN.js');
10
10
 
11
11
  // src/rpc/redis/bind.ts
12
12
  var _ioredis = require('ioredis'); var _ioredis2 = _interopRequireDefault(_ioredis);
@@ -14,42 +14,44 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
14
14
  const metaMap = /* @__PURE__ */ new Map();
15
15
  const pub = new (0, _ioredis2.default)(redis.options);
16
16
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
17
- _chunkJZGLQ4FQjs.isAopDepInject.call(void 0, meta, {
18
- guards: globalGuards,
19
- interceptors: globalInterceptors
20
- });
21
17
  function handleMeta() {
18
+ _chunkWBHZCJSNjs.isAopDepInject.call(void 0, meta, {
19
+ guards: globalGuards,
20
+ interceptors: globalInterceptors
21
+ });
22
22
  for (const item of meta) {
23
23
  const { data: { rpc, method, name } } = item;
24
24
  if (_optionalChain([rpc, 'optionalAccess', _2 => _2.type]) && rpc.type.includes("mq"))
25
25
  metaMap.set(`${name}-${method}`, item);
26
26
  }
27
27
  }
28
- _chunkZZ2QKZ46js.__name.call(void 0, handleMeta, "handleMeta");
28
+ _chunkBDIQWWHNjs.__name.call(void 0, handleMeta, "handleMeta");
29
29
  handleMeta();
30
30
  redis.subscribe(channel);
31
31
  redis.on("message", async (channel2, msg) => {
32
32
  if (msg) {
33
33
  const data = JSON.parse(msg);
34
34
  const { tag, args, id, queue } = data;
35
- const context = new (0, _chunkJZGLQ4FQjs.Context)(tag, {
36
- type: "redis",
37
- moduleMap,
38
- redis,
39
- meta: metaMap.get(tag),
40
- msg,
41
- channel: channel2,
42
- data
43
- });
44
35
  if (!metaMap.has(tag)) {
45
36
  queue && pub.publish(queue, JSON.stringify({
46
- data: new (0, _chunkJZGLQ4FQjs.BadRequestException)(`service "${tag}" doesn't exist`).data,
37
+ data: new (0, _chunkWBHZCJSNjs.BadRequestException)(`service "${tag}" doesn't exist`).data,
47
38
  error: true,
48
39
  id
49
40
  }));
50
41
  return;
51
42
  }
52
- const { data: { guards, interceptors, params, name, method, filter }, paramsType } = metaMap.get(tag);
43
+ const meta2 = metaMap.get(tag);
44
+ const context = new (0, _chunkWBHZCJSNjs.Context)({
45
+ type: "redis",
46
+ moduleMap,
47
+ redis,
48
+ meta: meta2,
49
+ msg,
50
+ channel: channel2,
51
+ tag,
52
+ data
53
+ });
54
+ const { data: { guards, interceptors, params, name, method, filter }, paramsType } = meta2;
53
55
  try {
54
56
  await context.useGuard([
55
57
  ...globalGuards,
@@ -94,13 +96,13 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
94
96
  }
95
97
  }
96
98
  });
97
- if (_chunkZZ2QKZ46js.IS_DEV) {
99
+ if (_chunkBDIQWWHNjs.IS_DEV) {
98
100
  _optionalChain([globalThis, 'access', _3 => _3.__PS_HMR__, 'optionalAccess', _4 => _4.push, 'call', _5 => _5(async () => {
99
101
  handleMeta();
100
102
  })]);
101
103
  }
102
104
  }
103
- _chunkZZ2QKZ46js.__name.call(void 0, bind, "bind");
105
+ _chunkBDIQWWHNjs.__name.call(void 0, bind, "bind");
104
106
 
105
107
  // src/rpc/redis/client.ts
106
108
  var _crypto = require('crypto');
@@ -148,7 +150,7 @@ function createClient(redis, queue, controllers) {
148
150
  }
149
151
  return ret;
150
152
  }
151
- _chunkZZ2QKZ46js.__name.call(void 0, createClient, "createClient");
153
+ _chunkBDIQWWHNjs.__name.call(void 0, createClient, "createClient");
152
154
 
153
155
 
154
156
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/rpc/redis/bind.ts","../../../src/rpc/redis/client.ts"],"names":["Redis","bind","redis","channel","moduleMap","meta","opts","metaMap","Map","pub","options","globalGuards","globalInterceptors","isAopDepInject","guards","interceptors","handleMeta","item","data","rpc","method","name","type","includes","set","subscribe","on","msg","JSON","parse","tag","args","id","queue","context","Context","get","has","publish","stringify","BadRequestException","error","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","res","usePostInterceptor","e","ret","useFilter","IS_DEV","globalThis","__PS_HMR__","push","randomUUID","EventEmitter","createClient","controllers","sub","uniQueue","emitter","_","emit","Proxy","target","p","Error","isEvent","Promise","resolve","reject","once"],"mappings":"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","sourcesContent":["import Redis from 'ioredis'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n\n}\n\nexport interface RedisCtx {\n type: 'redis'\n meta?: Meta\n moduleMap: Record<string, any>\n redis: Redis\n msg: string\n channel: string\n // JSON parse msg\n data: any\n [key: string]: any\n}\n\nexport function bind(redis: Redis, channel: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const pub = new Redis(redis.options)\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n function handleMeta() {\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n redis.subscribe(channel)\n\n redis.on('message', async (channel, msg) => {\n if (msg) {\n const data = JSON.parse(msg)\n const { tag, args, id, queue } = data\n const context = new Context(tag, {\n type: 'redis',\n moduleMap,\n redis,\n meta: metaMap.get(tag),\n msg,\n channel,\n data,\n })\n if (!metaMap.has(tag)) {\n queue && pub.publish(queue, JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n }))\n return\n }\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = metaMap.get(tag)!\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n pub.publish(queue, JSON.stringify({ data: cache, id }))\n\n return\n }\n\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const res = await context.usePostInterceptor(funcData)\n\n queue && pub.publish(queue, JSON.stringify({ data: res, id }))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n queue && pub.publish(queue, JSON.stringify({\n data: ret,\n error: true,\n id,\n }))\n }\n }\n })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { randomUUID } from 'crypto'\nimport EventEmitter from 'events'\nimport Redis from 'ioredis'\nimport type { ToControllerMap } from '../../types'\n\nexport function createClient<S extends Record<string, any>>(redis: Redis, queue: string, controllers: S): ToControllerMap<S> {\n const ret = {} as any\n const sub = new Redis(redis.options)\n const uniQueue = randomUUID()\n\n const emitter = new EventEmitter()\n sub.subscribe(uniQueue)\n\n sub.on('message', (_, msg) => {\n const { data, id, error } = JSON.parse(msg)\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n return (...args: any) => {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('redis'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support redis`)\n\n redis.publish(queue, JSON.stringify({\n args,\n id,\n tag,\n queue: isEvent ? undefined : uniQueue,\n\n }))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data, error) => {\n if (error)\n reject(data)\n\n else\n resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"]}
1
+ {"version":3,"sources":["../../../src/rpc/redis/bind.ts","../../../src/rpc/redis/client.ts"],"names":["Redis","bind","redis","channel","moduleMap","meta","opts","metaMap","Map","pub","options","globalGuards","globalInterceptors","handleMeta","isAopDepInject","guards","interceptors","item","data","rpc","method","name","type","includes","set","subscribe","on","msg","JSON","parse","tag","args","id","queue","has","publish","stringify","BadRequestException","error","get","context","Context","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","res","usePostInterceptor","e","ret","useFilter","IS_DEV","globalThis","__PS_HMR__","push","randomUUID","EventEmitter","createClient","controllers","sub","uniQueue","emitter","_","emit","Proxy","target","p","Error","isEvent","Promise","resolve","reject","once"],"mappings":"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","sourcesContent":["import Redis from 'ioredis'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\nimport { P } from '../../types'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RedisCtx extends P.BaseContext{\n type: 'redis'\n redis: Redis\n msg: string\n channel: string\n data: any\n\n}\n\n\nexport function bind(redis: Redis, channel: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const pub = new Redis(redis.options)\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n\n function handleMeta() {\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n redis.subscribe(channel)\n\n redis.on('message', async (channel, msg) => {\n if (msg) {\n const data = JSON.parse(msg)\n const { tag, args, id, queue } = data\n if (!metaMap.has(tag)) {\n queue && pub.publish(queue, JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n }))\n return\n }\n\n const meta= metaMap.get(tag)!\n const context = new Context( {\n type: 'redis',\n moduleMap,\n redis,\n meta,\n msg,\n channel,\n tag,\n data,\n })\n \n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = meta\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n pub.publish(queue, JSON.stringify({ data: cache, id }))\n\n return\n }\n\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const res = await context.usePostInterceptor(funcData)\n\n queue && pub.publish(queue, JSON.stringify({ data: res, id }))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n queue && pub.publish(queue, JSON.stringify({\n data: ret,\n error: true,\n id,\n }))\n }\n }\n })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { randomUUID } from 'crypto'\nimport EventEmitter from 'events'\nimport Redis from 'ioredis'\nimport type { ToControllerMap } from '../../types'\n\nexport function createClient<S extends Record<string, any>>(redis: Redis, queue: string, controllers: S): ToControllerMap<S> {\n const ret = {} as any\n const sub = new Redis(redis.options)\n const uniQueue = randomUUID()\n\n const emitter = new EventEmitter()\n sub.subscribe(uniQueue)\n\n sub.on('message', (_, msg) => {\n const { data, id, error } = JSON.parse(msg)\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n return (...args: any) => {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('redis'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support redis`)\n\n redis.publish(queue, JSON.stringify({\n args,\n id,\n tag,\n queue: isEvent ? undefined : uniQueue,\n\n }))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data, error) => {\n if (error)\n reject(data)\n\n else\n resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"]}