phecda-server 4.0.2 → 4.0.4

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 (40) hide show
  1. package/bin/cli.js +5 -0
  2. package/dist/{chunk-WRMLZ7NU.mjs → chunk-JUXEUWOU.mjs} +13 -9
  3. package/dist/chunk-JUXEUWOU.mjs.map +1 -0
  4. package/dist/{chunk-D3VS53JQ.js → chunk-W64EUEDU.js} +14 -10
  5. package/dist/chunk-W64EUEDU.js.map +1 -0
  6. package/dist/index.js +5 -3
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs +3 -1
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/rpc/rabbitmq/index.js +2 -4
  11. package/dist/rpc/rabbitmq/index.js.map +1 -1
  12. package/dist/rpc/rabbitmq/index.mjs +2 -4
  13. package/dist/rpc/rabbitmq/index.mjs.map +1 -1
  14. package/dist/rpc/redis/index.js +2 -4
  15. package/dist/rpc/redis/index.js.map +1 -1
  16. package/dist/rpc/redis/index.mjs +2 -4
  17. package/dist/rpc/redis/index.mjs.map +1 -1
  18. package/dist/server/express/index.js +6 -5
  19. package/dist/server/express/index.js.map +1 -1
  20. package/dist/server/express/index.mjs +6 -5
  21. package/dist/server/express/index.mjs.map +1 -1
  22. package/dist/server/fastify/index.js +6 -5
  23. package/dist/server/fastify/index.js.map +1 -1
  24. package/dist/server/fastify/index.mjs +6 -5
  25. package/dist/server/fastify/index.mjs.map +1 -1
  26. package/dist/server/h3/index.js +16 -10
  27. package/dist/server/h3/index.js.map +1 -1
  28. package/dist/server/h3/index.mjs +16 -10
  29. package/dist/server/h3/index.mjs.map +1 -1
  30. package/dist/server/koa/index.js +6 -5
  31. package/dist/server/koa/index.js.map +1 -1
  32. package/dist/server/koa/index.mjs +6 -5
  33. package/dist/server/koa/index.mjs.map +1 -1
  34. package/dist/test.js +2 -2
  35. package/dist/test.mjs +1 -1
  36. package/package.json +1 -1
  37. package/register/index.mjs +2 -4
  38. package/register/loader.mjs +26 -8
  39. package/dist/chunk-D3VS53JQ.js.map +0 -1
  40. package/dist/chunk-WRMLZ7NU.mjs.map +0 -1
package/bin/cli.js CHANGED
@@ -65,6 +65,11 @@ process.stdin.on('data', (data) => {
65
65
  startChild()
66
66
  })
67
67
  }
68
+ else {
69
+ log('relunch...')
70
+
71
+ startChild()
72
+ }
68
73
  }
69
74
  if (input === 'e')
70
75
  exit()
@@ -215,15 +215,19 @@ async function Factory(Modules, opts = {}) {
215
215
  __name(writeCode, "writeCode");
216
216
  writeCode();
217
217
  if (IS_DEV) {
218
- globalThis.__PS_HMR__ = async (file) => {
219
- debug(`reload file ${file}`);
220
- const module = await import(file);
221
- for (const i in module) {
222
- if (isPhecda(module[i]))
223
- await update(module[i]);
218
+ if (!globalThis.__PS_HMR__)
219
+ globalThis.__PS_HMR__ = [];
220
+ globalThis.__PS_HMR__?.push(async (files) => {
221
+ for (const file of files) {
222
+ debug(`reload file ${file}`);
223
+ const module = await import(file);
224
+ for (const i in module) {
225
+ if (isPhecda(module[i]))
226
+ await update(module[i]);
227
+ }
224
228
  }
225
- };
226
- globalThis.__PS_WRITEMETA__ = writeCode;
229
+ writeCode();
230
+ });
227
231
  }
228
232
  return {
229
233
  moduleMap,
@@ -321,4 +325,4 @@ export {
321
325
  emitter,
322
326
  Factory
323
327
  };
324
- //# sourceMappingURL=chunk-WRMLZ7NU.mjs.map
328
+ //# sourceMappingURL=chunk-JUXEUWOU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/meta.ts","../src/compiler/rpc.ts","../src/compiler/http.ts","../src/core.ts"],"sourcesContent":["import type { P } from './types'\n\nexport class Meta {\n constructor(public data: P.Meta, public handlers: P.Handler[], public paramsType: any[]) {\n\n }\n}\n","import type { P } from '../types'\n\nclass Compiler {\n classMap: Record<string, { [key: string]: string }> = {}\n constructor() { }\n\n getContent() {\n let content = ''\n\n for (const name in this.classMap) {\n content += `\n export class ${name}{\n ${Object.values(this.classMap[name]).reduce((p, c) => p + c)}\n }`\n }\n return content\n }\n\n addMethod(args: P.Meta) {\n const {\n rpc, name, method, tag,\n } = args\n if (!rpc || !rpc.type)\n return\n if (!this.classMap[name])\n this.classMap[name] = {}\n this.classMap[name][method] = `\n ${method}(){\n return {tag:'${tag}-${method}',isEvent:${!!rpc.isEvent},rpc:[${rpc.type.reduce((p, c) => {\n return `${p}\"${c}\",`\n }, '')}]}\n\n }\n `\n }\n}\n\nexport function generateRPCCode(meta: P.Meta[]) {\n const compiler = new Compiler()\n\n for (const i of meta)\n compiler.addMethod(i)\n return compiler.getContent()\n}\n","import type { P } from '../types'\n\nclass Compiler {\n classMap: Record<string, { [key: string]: string }> = {}\n constructor() { }\n\n getContent() {\n let content = ''\n\n for (const name in this.classMap) {\n content += `\n export class ${name}{\n ${Object.values(this.classMap[name]).reduce((p, c) => p + c)}\n }`\n }\n return content\n }\n\n // createRequest() {\n // let content = 'import {useC} from \\'phecda-server\\'\\n'\n // for (const name in this.classMap)\n // content += `export const {${Object.keys(this.classMap[name]).join(',')}}=useC(${name})\\n`\n // return content\n // }\n\n addMethod(args: P.Meta) {\n const {\n http, name, method, params, tag,\n } = args\n if (!http)\n return\n const url = http.route.replace(/\\/\\:([^\\/]*)/g, (_, js) => `/{{${js}}}`)\n if (!this.classMap[name])\n this.classMap[name] = {}\n this.classMap[name][method] = `\n ${method}(...args){\nconst ret={tag:\"${tag}-${method}\",body:{},headers:{},query:{},params:{},method:\"${http.type}\",url:\"${url}\",args}\n\n${params.reduce((p, c, i) => `${p}ret.${c.type}${c.key ? `['${c.key}']` : ''}=args[${i}]\\n${c.type === 'params' ? `ret.url=ret.url.replace('{{${c.key}}}',args[${i}])` : ''}\\n`, '')}\nreturn ret\n }\n `\n }\n}\n\nexport function generateHTTPCode(meta: P.Meta[]) {\n const compiler = new Compiler()\n\n for (const i of meta)\n compiler.addMethod(i)\n return compiler.getContent()\n}\n","import 'reflect-metadata'\nimport fs from 'fs'\nimport EventEmitter from 'node:events'\nimport type { Phecda } from 'phecda-core'\nimport { Empty, getExposeKey, getHandler, getState, injectProperty, isPhecda, registerAsync } from 'phecda-core'\nimport Debug from 'debug'\nimport pc from 'picocolors'\nimport type { Construct, Emitter, P } from './types'\nimport { Meta } from './meta'\nimport { log } from './utils'\nimport { IS_DEV, UNMOUNT_SYMBOL } from './common'\nimport { generateHTTPCode, generateRPCCode } from './compiler'\nexport function Injectable() {\n return (target: any) => Empty(target)\n}\nconst debug = Debug('phecda-server')\n// TODO: support both emitter types and origin emitter type in future\nexport const emitter: Emitter = new EventEmitter() as any\n\nexport async function Factory(Modules: (new (...args: any) => any)[], opts: {\n\n // HTTP generate code path\n http?: string\n // rpc generate code path\n rpc?: string\n} = {}) {\n const moduleMap = new Map<string, InstanceType<Construct>>()\n const meta: Meta[] = []\n const constructorMap = new Map()\n\n // only work for warn\n const constructorSet = new WeakSet()\n const moduleGraph = new Map<string, Set<string>>()\n const { http, rpc } = opts\n injectProperty('watcher', ({ eventName, instance, key, options }: { eventName: string; instance: any; key: string; options?: { once: boolean } }) => {\n const fn = typeof instance[key] === 'function' ? instance[key].bind(instance) : (v: any) => instance[key] = v\n\n // work for hmr\n if (!instance[UNMOUNT_SYMBOL])\n instance[UNMOUNT_SYMBOL] = []\n\n instance[UNMOUNT_SYMBOL].push(() => {\n (emitter as any).off(eventName, fn)\n })\n\n if (options?.once)\n (emitter as any).once(eventName, fn)\n\n else\n (emitter as any).on(eventName, fn)\n })\n\n async function update(Module: Construct) {\n const tag = Module.prototype?.__TAG__ || Module.name\n if (!moduleMap.has(tag))\n return\n debug(`update module \"${tag}\"`)\n\n const instance = moduleMap.get(tag)\n\n if (instance?.[UNMOUNT_SYMBOL]) {\n for (const cb of instance[UNMOUNT_SYMBOL])\n await cb()\n }\n log(`Module ${pc.yellow(`[${tag}]`)} unmount`)\n moduleMap.delete(tag)\n constructorMap.delete(tag)\n for (let i = meta.length - 1; i >= 0; i--) {\n if (meta[i].data.tag === tag)\n meta.splice(i, 1)\n }\n\n const { instance: newModule } = await buildNestModule(Module)\n if (moduleGraph.has(tag)) {\n [...moduleGraph.get(tag)!].forEach((tag) => {\n const module = moduleMap.get(tag)\n for (const key in module) {\n if (module[key] === instance)\n module[key] = newModule\n }\n })\n }\n\n moduleMap.set(tag, newModule)\n }\n async function buildNestModule(Module: Construct) {\n const paramtypes = getParamTypes(Module) as Construct[]\n let instance: InstanceType<Construct>\n const tag = Module.prototype?.__TAG__ || Module.name\n if (moduleMap.has(tag)) {\n instance = moduleMap.get(tag)\n if (!instance)\n throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${tag}--[module] ${Module}`)\n\n if (constructorMap.get(tag) !== Module && !constructorSet.has(Module)) {\n constructorSet.add(Module)// a module will only warn once\n log(`Synonym module: Module taged \"${tag}\" has been loaded before, so phecda-server won't load Module \"${Module.name}\"`, 'warn')\n }\n return { instance, tag }\n }\n moduleMap.set(tag, undefined)\n if (paramtypes) {\n const paramtypesInstances = [] as any[]\n for (const i in paramtypes) {\n const { instance: sub, tag: subTag } = await buildNestModule(paramtypes[i])\n paramtypesInstances[i] = sub\n if (!moduleGraph.has(subTag))\n moduleGraph.set(subTag, new Set())\n moduleGraph.get(subTag)!.add(tag)\n }\n instance = new Module(...paramtypesInstances)\n }\n else {\n instance = new Module()\n }\n meta.push(...getMetaFromInstance(instance, tag, Module.name))\n await registerAsync(instance)\n moduleMap.set(tag, instance)\n log(`Module ${pc.yellow(`[${tag}]`)} mount\"`)\n constructorMap.set(tag, Module)\n return { instance, tag }\n }\n\n for (const Module of Modules)\n await buildNestModule(Module)\n\n function writeCode() {\n debug('write code')\n\n http && fs.promises.writeFile(http, generateHTTPCode(meta.map(item => item.data)))\n rpc && fs.promises.writeFile(rpc, generateRPCCode(meta.map(item => item.data)))\n }\n\n writeCode()\n if (IS_DEV) {\n if (!globalThis.__PS_HMR__)\n globalThis.__PS_HMR__ = []\n\n globalThis.__PS_HMR__?.push(async (files: string[]) => {\n for (const file of files) {\n debug(`reload file ${file}`)\n const module = await import(file)\n for (const i in module) {\n if (isPhecda(module[i]))\n await update(module[i])\n }\n }\n writeCode()\n })\n }\n\n return {\n moduleMap,\n meta,\n constructorMap,\n update,\n }\n}\n\nfunction getMetaFromInstance(instance: Phecda, tag: string, name: string) {\n const vars = getExposeKey(instance).filter(item => item !== '__CLASS')\n const baseState = (getState(instance, '__CLASS') || {}) as P.Meta\n initState(baseState)\n\n return vars.map((i) => {\n const meta = {} as P.Meta\n const state = (getState(instance, i) || {}) as P.Meta\n initState(state)\n if (state.http) {\n meta.http = {\n route: (baseState.http?.route || '') + (state.http.route),\n type: state.http.type,\n }\n }\n if (baseState.rpc)\n meta.rpc = baseState.rpc\n if (state.rpc) {\n meta.rpc = {\n ...meta.rpc,\n ...state.rpc,\n }\n }\n\n meta.name = name\n meta.tag = tag\n meta.method = i as string\n const params = [] as any[]\n for (const i of state.params || []) {\n params.unshift(i)\n if (i.index === 0)\n break\n }\n\n meta.params = params\n meta.define = { ...baseState.define, ...state.define }\n meta.header = { ...baseState.header, ...state.header }\n meta.plugins = [...new Set([...baseState.plugins, ...state.plugins])]\n meta.guards = [...new Set([...baseState.guards, ...state.guards])]\n meta.interceptors = [...new Set([...baseState.interceptors, ...state.interceptors])]\n\n return new Meta(meta as unknown as P.Meta, getHandler(instance, i), getParamTypes(instance, i as string) || [])\n })\n}\n\nfunction getParamTypes(Module: any, key?: string | symbol) {\n return Reflect.getMetadata('design:paramtypes', Module, key!)\n}\n\nfunction initState(state: any) {\n if (!state.define)\n state.define = {}\n if (!state.header)\n state.header = {}\n if (!state.plugins)\n state.plugins = []\n if (!state.guards)\n state.guards = []\n if (!state.interceptors)\n state.interceptors = []\n}\n"],"mappings":"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","names":["Meta","data","handlers","paramsType","constructor","Compiler","classMap","constructor","getContent","content","name","Object","values","reduce","p","c","addMethod","args","rpc","method","tag","type","isEvent","generateRPCCode","meta","compiler","i","Compiler","classMap","constructor","getContent","content","name","Object","values","reduce","p","c","addMethod","args","http","method","params","tag","url","route","replace","_","js","type","i","key","generateHTTPCode","meta","compiler","fs","EventEmitter","Empty","getExposeKey","getHandler","getState","injectProperty","isPhecda","registerAsync","Debug","pc","Injectable","target","Empty","debug","Debug","emitter","EventEmitter","Factory","Modules","opts","moduleMap","Map","meta","constructorMap","constructorSet","WeakSet","moduleGraph","http","rpc","injectProperty","eventName","instance","key","options","fn","bind","v","UNMOUNT_SYMBOL","push","off","once","on","update","Module","tag","prototype","__TAG__","name","has","get","cb","log","pc","yellow","delete","i","length","data","splice","newModule","buildNestModule","forEach","module","set","paramtypes","getParamTypes","Error","add","undefined","paramtypesInstances","sub","subTag","Set","getMetaFromInstance","registerAsync","writeCode","fs","promises","writeFile","generateHTTPCode","map","item","generateRPCCode","IS_DEV","globalThis","__PS_HMR__","files","file","isPhecda","vars","getExposeKey","filter","baseState","getState","initState","state","route","type","method","params","unshift","index","define","header","plugins","guards","interceptors","Meta","getHandler","Reflect","getMetadata"]}
@@ -215,15 +215,19 @@ async function Factory(Modules, opts = {}) {
215
215
  _chunkLZAU5FUSjs.__name.call(void 0, writeCode, "writeCode");
216
216
  writeCode();
217
217
  if (_chunkLZAU5FUSjs.IS_DEV) {
218
- globalThis.__PS_HMR__ = async (file) => {
219
- debug(`reload file ${file}`);
220
- const module = await Promise.resolve().then(() => require(file));
221
- for (const i in module) {
222
- if (_phecdacore.isPhecda.call(void 0, module[i]))
223
- await update(module[i]);
218
+ if (!globalThis.__PS_HMR__)
219
+ globalThis.__PS_HMR__ = [];
220
+ _optionalChain([globalThis, 'access', _8 => _8.__PS_HMR__, 'optionalAccess', _9 => _9.push, 'call', _10 => _10(async (files) => {
221
+ for (const file of files) {
222
+ debug(`reload file ${file}`);
223
+ const module = await Promise.resolve().then(() => require(file));
224
+ for (const i in module) {
225
+ if (_phecdacore.isPhecda.call(void 0, module[i]))
226
+ await update(module[i]);
227
+ }
224
228
  }
225
- };
226
- globalThis.__PS_WRITEMETA__ = writeCode;
229
+ writeCode();
230
+ })]);
227
231
  }
228
232
  return {
229
233
  moduleMap,
@@ -243,7 +247,7 @@ function getMetaFromInstance(instance, tag, name) {
243
247
  initState(state);
244
248
  if (state.http) {
245
249
  meta.http = {
246
- route: (_optionalChain([baseState, 'access', _8 => _8.http, 'optionalAccess', _9 => _9.route]) || "") + state.http.route,
250
+ route: (_optionalChain([baseState, 'access', _11 => _11.http, 'optionalAccess', _12 => _12.route]) || "") + state.http.route,
247
251
  type: state.http.type
248
252
  };
249
253
  }
@@ -321,4 +325,4 @@ _chunkLZAU5FUSjs.__name.call(void 0, initState, "initState");
321
325
 
322
326
 
323
327
  exports.Meta = Meta; exports.generateRPCCode = generateRPCCode; exports.generateHTTPCode = generateHTTPCode; exports.Injectable = Injectable; exports.emitter = emitter; exports.Factory = Factory;
324
- //# sourceMappingURL=chunk-D3VS53JQ.js.map
328
+ //# sourceMappingURL=chunk-W64EUEDU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/meta.ts","../src/compiler/rpc.ts","../src/compiler/http.ts","../src/core.ts"],"names":["Meta","data","handlers","paramsType","constructor","Compiler","classMap","getContent","content","name","Object","values","reduce","p","c","addMethod","args","rpc","method","tag","type","isEvent","generateRPCCode","meta","compiler","i","http","params","url","route","replace","_","js","key","generateHTTPCode","fs","EventEmitter","Empty","getExposeKey","getHandler","getState","injectProperty","isPhecda","registerAsync","Debug","pc","Injectable","target","debug","emitter","Factory","Modules","opts","moduleMap","Map","constructorMap","constructorSet","WeakSet","moduleGraph","eventName","instance","options","fn","bind","v","UNMOUNT_SYMBOL","push","off","once","on","update","Module","prototype","__TAG__","has","get","cb","log","yellow","delete","length","splice","newModule","buildNestModule","forEach","module","set","paramtypes","getParamTypes","Error","add","undefined","paramtypesInstances","sub","subTag","Set","getMetaFromInstance","writeCode","promises","writeFile","map","item","IS_DEV","globalThis","__PS_HMR__","files","file","vars","filter","baseState","initState","state","unshift","index","define","header","plugins","guards","interceptors","Reflect","getMetadata"],"mappings":"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","sourcesContent":["import type { P } from './types'\n\nexport class Meta {\n constructor(public data: P.Meta, public handlers: P.Handler[], public paramsType: any[]) {\n\n }\n}\n","import type { P } from '../types'\n\nclass Compiler {\n classMap: Record<string, { [key: string]: string }> = {}\n constructor() { }\n\n getContent() {\n let content = ''\n\n for (const name in this.classMap) {\n content += `\n export class ${name}{\n ${Object.values(this.classMap[name]).reduce((p, c) => p + c)}\n }`\n }\n return content\n }\n\n addMethod(args: P.Meta) {\n const {\n rpc, name, method, tag,\n } = args\n if (!rpc || !rpc.type)\n return\n if (!this.classMap[name])\n this.classMap[name] = {}\n this.classMap[name][method] = `\n ${method}(){\n return {tag:'${tag}-${method}',isEvent:${!!rpc.isEvent},rpc:[${rpc.type.reduce((p, c) => {\n return `${p}\"${c}\",`\n }, '')}]}\n\n }\n `\n }\n}\n\nexport function generateRPCCode(meta: P.Meta[]) {\n const compiler = new Compiler()\n\n for (const i of meta)\n compiler.addMethod(i)\n return compiler.getContent()\n}\n","import type { P } from '../types'\n\nclass Compiler {\n classMap: Record<string, { [key: string]: string }> = {}\n constructor() { }\n\n getContent() {\n let content = ''\n\n for (const name in this.classMap) {\n content += `\n export class ${name}{\n ${Object.values(this.classMap[name]).reduce((p, c) => p + c)}\n }`\n }\n return content\n }\n\n // createRequest() {\n // let content = 'import {useC} from \\'phecda-server\\'\\n'\n // for (const name in this.classMap)\n // content += `export const {${Object.keys(this.classMap[name]).join(',')}}=useC(${name})\\n`\n // return content\n // }\n\n addMethod(args: P.Meta) {\n const {\n http, name, method, params, tag,\n } = args\n if (!http)\n return\n const url = http.route.replace(/\\/\\:([^\\/]*)/g, (_, js) => `/{{${js}}}`)\n if (!this.classMap[name])\n this.classMap[name] = {}\n this.classMap[name][method] = `\n ${method}(...args){\nconst ret={tag:\"${tag}-${method}\",body:{},headers:{},query:{},params:{},method:\"${http.type}\",url:\"${url}\",args}\n\n${params.reduce((p, c, i) => `${p}ret.${c.type}${c.key ? `['${c.key}']` : ''}=args[${i}]\\n${c.type === 'params' ? `ret.url=ret.url.replace('{{${c.key}}}',args[${i}])` : ''}\\n`, '')}\nreturn ret\n }\n `\n }\n}\n\nexport function generateHTTPCode(meta: P.Meta[]) {\n const compiler = new Compiler()\n\n for (const i of meta)\n compiler.addMethod(i)\n return compiler.getContent()\n}\n","import 'reflect-metadata'\nimport fs from 'fs'\nimport EventEmitter from 'node:events'\nimport type { Phecda } from 'phecda-core'\nimport { Empty, getExposeKey, getHandler, getState, injectProperty, isPhecda, registerAsync } from 'phecda-core'\nimport Debug from 'debug'\nimport pc from 'picocolors'\nimport type { Construct, Emitter, P } from './types'\nimport { Meta } from './meta'\nimport { log } from './utils'\nimport { IS_DEV, UNMOUNT_SYMBOL } from './common'\nimport { generateHTTPCode, generateRPCCode } from './compiler'\nexport function Injectable() {\n return (target: any) => Empty(target)\n}\nconst debug = Debug('phecda-server')\n// TODO: support both emitter types and origin emitter type in future\nexport const emitter: Emitter = new EventEmitter() as any\n\nexport async function Factory(Modules: (new (...args: any) => any)[], opts: {\n\n // HTTP generate code path\n http?: string\n // rpc generate code path\n rpc?: string\n} = {}) {\n const moduleMap = new Map<string, InstanceType<Construct>>()\n const meta: Meta[] = []\n const constructorMap = new Map()\n\n // only work for warn\n const constructorSet = new WeakSet()\n const moduleGraph = new Map<string, Set<string>>()\n const { http, rpc } = opts\n injectProperty('watcher', ({ eventName, instance, key, options }: { eventName: string; instance: any; key: string; options?: { once: boolean } }) => {\n const fn = typeof instance[key] === 'function' ? instance[key].bind(instance) : (v: any) => instance[key] = v\n\n // work for hmr\n if (!instance[UNMOUNT_SYMBOL])\n instance[UNMOUNT_SYMBOL] = []\n\n instance[UNMOUNT_SYMBOL].push(() => {\n (emitter as any).off(eventName, fn)\n })\n\n if (options?.once)\n (emitter as any).once(eventName, fn)\n\n else\n (emitter as any).on(eventName, fn)\n })\n\n async function update(Module: Construct) {\n const tag = Module.prototype?.__TAG__ || Module.name\n if (!moduleMap.has(tag))\n return\n debug(`update module \"${tag}\"`)\n\n const instance = moduleMap.get(tag)\n\n if (instance?.[UNMOUNT_SYMBOL]) {\n for (const cb of instance[UNMOUNT_SYMBOL])\n await cb()\n }\n log(`Module ${pc.yellow(`[${tag}]`)} unmount`)\n moduleMap.delete(tag)\n constructorMap.delete(tag)\n for (let i = meta.length - 1; i >= 0; i--) {\n if (meta[i].data.tag === tag)\n meta.splice(i, 1)\n }\n\n const { instance: newModule } = await buildNestModule(Module)\n if (moduleGraph.has(tag)) {\n [...moduleGraph.get(tag)!].forEach((tag) => {\n const module = moduleMap.get(tag)\n for (const key in module) {\n if (module[key] === instance)\n module[key] = newModule\n }\n })\n }\n\n moduleMap.set(tag, newModule)\n }\n async function buildNestModule(Module: Construct) {\n const paramtypes = getParamTypes(Module) as Construct[]\n let instance: InstanceType<Construct>\n const tag = Module.prototype?.__TAG__ || Module.name\n if (moduleMap.has(tag)) {\n instance = moduleMap.get(tag)\n if (!instance)\n throw new Error(`exist Circular-Dependency or Multiple modules with the same name/tag [tag] ${tag}--[module] ${Module}`)\n\n if (constructorMap.get(tag) !== Module && !constructorSet.has(Module)) {\n constructorSet.add(Module)// a module will only warn once\n log(`Synonym module: Module taged \"${tag}\" has been loaded before, so phecda-server won't load Module \"${Module.name}\"`, 'warn')\n }\n return { instance, tag }\n }\n moduleMap.set(tag, undefined)\n if (paramtypes) {\n const paramtypesInstances = [] as any[]\n for (const i in paramtypes) {\n const { instance: sub, tag: subTag } = await buildNestModule(paramtypes[i])\n paramtypesInstances[i] = sub\n if (!moduleGraph.has(subTag))\n moduleGraph.set(subTag, new Set())\n moduleGraph.get(subTag)!.add(tag)\n }\n instance = new Module(...paramtypesInstances)\n }\n else {\n instance = new Module()\n }\n meta.push(...getMetaFromInstance(instance, tag, Module.name))\n await registerAsync(instance)\n moduleMap.set(tag, instance)\n log(`Module ${pc.yellow(`[${tag}]`)} mount\"`)\n constructorMap.set(tag, Module)\n return { instance, tag }\n }\n\n for (const Module of Modules)\n await buildNestModule(Module)\n\n function writeCode() {\n debug('write code')\n\n http && fs.promises.writeFile(http, generateHTTPCode(meta.map(item => item.data)))\n rpc && fs.promises.writeFile(rpc, generateRPCCode(meta.map(item => item.data)))\n }\n\n writeCode()\n if (IS_DEV) {\n if (!globalThis.__PS_HMR__)\n globalThis.__PS_HMR__ = []\n\n globalThis.__PS_HMR__?.push(async (files: string[]) => {\n for (const file of files) {\n debug(`reload file ${file}`)\n const module = await import(file)\n for (const i in module) {\n if (isPhecda(module[i]))\n await update(module[i])\n }\n }\n writeCode()\n })\n }\n\n return {\n moduleMap,\n meta,\n constructorMap,\n update,\n }\n}\n\nfunction getMetaFromInstance(instance: Phecda, tag: string, name: string) {\n const vars = getExposeKey(instance).filter(item => item !== '__CLASS')\n const baseState = (getState(instance, '__CLASS') || {}) as P.Meta\n initState(baseState)\n\n return vars.map((i) => {\n const meta = {} as P.Meta\n const state = (getState(instance, i) || {}) as P.Meta\n initState(state)\n if (state.http) {\n meta.http = {\n route: (baseState.http?.route || '') + (state.http.route),\n type: state.http.type,\n }\n }\n if (baseState.rpc)\n meta.rpc = baseState.rpc\n if (state.rpc) {\n meta.rpc = {\n ...meta.rpc,\n ...state.rpc,\n }\n }\n\n meta.name = name\n meta.tag = tag\n meta.method = i as string\n const params = [] as any[]\n for (const i of state.params || []) {\n params.unshift(i)\n if (i.index === 0)\n break\n }\n\n meta.params = params\n meta.define = { ...baseState.define, ...state.define }\n meta.header = { ...baseState.header, ...state.header }\n meta.plugins = [...new Set([...baseState.plugins, ...state.plugins])]\n meta.guards = [...new Set([...baseState.guards, ...state.guards])]\n meta.interceptors = [...new Set([...baseState.interceptors, ...state.interceptors])]\n\n return new Meta(meta as unknown as P.Meta, getHandler(instance, i), getParamTypes(instance, i as string) || [])\n })\n}\n\nfunction getParamTypes(Module: any, key?: string | symbol) {\n return Reflect.getMetadata('design:paramtypes', Module, key!)\n}\n\nfunction initState(state: any) {\n if (!state.define)\n state.define = {}\n if (!state.header)\n state.header = {}\n if (!state.plugins)\n state.plugins = []\n if (!state.guards)\n state.guards = []\n if (!state.interceptors)\n state.interceptors = []\n}\n"]}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkD3VS53JQjs = require('./chunk-D3VS53JQ.js');
8
+ var _chunkW64EUEDUjs = require('./chunk-W64EUEDU.js');
9
9
 
10
10
 
11
11
  var _chunkFAHHXHL5js = require('./chunk-FAHHXHL5.js');
@@ -78,6 +78,8 @@ function Pipe(key, opts) {
78
78
  return (target, k, index) => {
79
79
  _phecdacore.setModelVar.call(void 0, target, k);
80
80
  const state = target._namespace.__STATE_NAMESPACE__.get(k) || {};
81
+ if (!state.params)
82
+ state.params = [];
81
83
  const existItem = state.params.find((item) => item.index === index);
82
84
  if (existItem)
83
85
  Object.assign(existItem, {
@@ -274,7 +276,7 @@ var __decorate = function(decorators, target, key, desc) {
274
276
  return c > 3 && r && Object.defineProperty(target, key, r), r;
275
277
  };
276
278
  var Dev = /* @__PURE__ */ _chunkLZAU5FUSjs.__name.call(void 0, (_class =class Dev2 {constructor() { _class.prototype.__init.call(this);_class.prototype.__init2.call(this); }
277
- __init() {this.emitter = exports.emitter = _chunkD3VS53JQjs.emitter}
279
+ __init() {this.emitter = exports.emitter = _chunkW64EUEDUjs.emitter}
278
280
  __init2() {this[_chunkLZAU5FUSjs.UNMOUNT_SYMBOL] = []}
279
281
  onUnmount(cb) {
280
282
  this[_chunkLZAU5FUSjs.UNMOUNT_SYMBOL].push(cb);
@@ -417,5 +419,5 @@ _chunkLZAU5FUSjs.__name.call(void 0, PPlugin, "PPlugin");
417
419
 
418
420
 
419
421
 
420
- exports.APP_SYMBOL = _chunkLZAU5FUSjs.APP_SYMBOL; exports.Arg = Arg; exports.BadGatewayException = _chunkYU7ROHTOjs.BadGatewayException; exports.BadRequestException = _chunkYU7ROHTOjs.BadRequestException; exports.BaseParam = BaseParam; exports.Body = Body; exports.ConflictException = _chunkYU7ROHTOjs.ConflictException; exports.Context = _chunkYU7ROHTOjs.Context; exports.Controller = Controller; exports.Define = Define; exports.Delete = Delete; exports.Dev = Dev; exports.Event = Event; exports.Exception = _chunkYU7ROHTOjs.Exception; exports.Factory = _chunkD3VS53JQjs.Factory; exports.ForbiddenException = _chunkYU7ROHTOjs.ForbiddenException; exports.FrameworkException = _chunkYU7ROHTOjs.FrameworkException; exports.Get = Get; exports.Guard = Guard; exports.Head = Head; exports.Header = Header; exports.IS_DEV = _chunkLZAU5FUSjs.IS_DEV; exports.IS_STRICT = _chunkLZAU5FUSjs.IS_STRICT; exports.Injectable = _chunkD3VS53JQjs.Injectable; exports.Interceptor = Interceptor; exports.InvalidInputException = _chunkYU7ROHTOjs.InvalidInputException; exports.MERGE_SYMBOL = _chunkLZAU5FUSjs.MERGE_SYMBOL; exports.META_SYMBOL = _chunkLZAU5FUSjs.META_SYMBOL; exports.MODULE_SYMBOL = _chunkLZAU5FUSjs.MODULE_SYMBOL; exports.Meta = _chunkD3VS53JQjs.Meta; exports.NotFoundException = _chunkYU7ROHTOjs.NotFoundException; exports.PFilter = PFilter; exports.PGuard = PGuard; exports.PInterceptor = PInterceptor; exports.PPipe = PPipe; exports.PPlugin = PPlugin; exports.Param = Param; exports.Patch = Patch; exports.PayloadLargeException = _chunkYU7ROHTOjs.PayloadLargeException; exports.Pipe = Pipe; exports.Plugin = Plugin; exports.Post = Post; exports.Put = Put; exports.Query = Query; exports.Route = Route; exports.Rpc = Rpc; exports.ServiceUnavailableException = _chunkYU7ROHTOjs.ServiceUnavailableException; exports.TimeoutException = _chunkYU7ROHTOjs.TimeoutException; exports.UNMOUNT_SYMBOL = _chunkLZAU5FUSjs.UNMOUNT_SYMBOL; exports.UnauthorizedException = _chunkYU7ROHTOjs.UnauthorizedException; exports.UndefinedException = _chunkYU7ROHTOjs.UndefinedException; exports.UnsupportedMediaTypeException = _chunkYU7ROHTOjs.UnsupportedMediaTypeException; exports.ValidateException = _chunkYU7ROHTOjs.ValidateException; exports.addGuard = _chunkYU7ROHTOjs.addGuard; exports.addInterceptor = _chunkYU7ROHTOjs.addInterceptor; exports.addPipe = _chunkYU7ROHTOjs.addPipe; exports.addPlugin = _chunkYU7ROHTOjs.addPlugin; exports.defaultPipe = _chunkYU7ROHTOjs.defaultPipe; exports.emitter = _chunkD3VS53JQjs.emitter; exports.generateHTTPCode = _chunkD3VS53JQjs.generateHTTPCode; exports.generateRPCCode = _chunkD3VS53JQjs.generateRPCCode; exports.guardRecord = _chunkYU7ROHTOjs.guardRecord; exports.isAopDepInject = _chunkYU7ROHTOjs.isAopDepInject; exports.resolveDep = _chunkFAHHXHL5js.resolveDep; exports.setFilter = _chunkYU7ROHTOjs.setFilter;
422
+ exports.APP_SYMBOL = _chunkLZAU5FUSjs.APP_SYMBOL; exports.Arg = Arg; exports.BadGatewayException = _chunkYU7ROHTOjs.BadGatewayException; exports.BadRequestException = _chunkYU7ROHTOjs.BadRequestException; exports.BaseParam = BaseParam; exports.Body = Body; exports.ConflictException = _chunkYU7ROHTOjs.ConflictException; exports.Context = _chunkYU7ROHTOjs.Context; exports.Controller = Controller; exports.Define = Define; exports.Delete = Delete; exports.Dev = Dev; exports.Event = Event; exports.Exception = _chunkYU7ROHTOjs.Exception; exports.Factory = _chunkW64EUEDUjs.Factory; exports.ForbiddenException = _chunkYU7ROHTOjs.ForbiddenException; exports.FrameworkException = _chunkYU7ROHTOjs.FrameworkException; exports.Get = Get; exports.Guard = Guard; exports.Head = Head; exports.Header = Header; exports.IS_DEV = _chunkLZAU5FUSjs.IS_DEV; exports.IS_STRICT = _chunkLZAU5FUSjs.IS_STRICT; exports.Injectable = _chunkW64EUEDUjs.Injectable; exports.Interceptor = Interceptor; exports.InvalidInputException = _chunkYU7ROHTOjs.InvalidInputException; exports.MERGE_SYMBOL = _chunkLZAU5FUSjs.MERGE_SYMBOL; exports.META_SYMBOL = _chunkLZAU5FUSjs.META_SYMBOL; exports.MODULE_SYMBOL = _chunkLZAU5FUSjs.MODULE_SYMBOL; exports.Meta = _chunkW64EUEDUjs.Meta; exports.NotFoundException = _chunkYU7ROHTOjs.NotFoundException; exports.PFilter = PFilter; exports.PGuard = PGuard; exports.PInterceptor = PInterceptor; exports.PPipe = PPipe; exports.PPlugin = PPlugin; exports.Param = Param; exports.Patch = Patch; exports.PayloadLargeException = _chunkYU7ROHTOjs.PayloadLargeException; exports.Pipe = Pipe; exports.Plugin = Plugin; exports.Post = Post; exports.Put = Put; exports.Query = Query; exports.Route = Route; exports.Rpc = Rpc; exports.ServiceUnavailableException = _chunkYU7ROHTOjs.ServiceUnavailableException; exports.TimeoutException = _chunkYU7ROHTOjs.TimeoutException; exports.UNMOUNT_SYMBOL = _chunkLZAU5FUSjs.UNMOUNT_SYMBOL; exports.UnauthorizedException = _chunkYU7ROHTOjs.UnauthorizedException; exports.UndefinedException = _chunkYU7ROHTOjs.UndefinedException; exports.UnsupportedMediaTypeException = _chunkYU7ROHTOjs.UnsupportedMediaTypeException; exports.ValidateException = _chunkYU7ROHTOjs.ValidateException; exports.addGuard = _chunkYU7ROHTOjs.addGuard; exports.addInterceptor = _chunkYU7ROHTOjs.addInterceptor; exports.addPipe = _chunkYU7ROHTOjs.addPipe; exports.addPlugin = _chunkYU7ROHTOjs.addPlugin; exports.defaultPipe = _chunkYU7ROHTOjs.defaultPipe; exports.emitter = _chunkW64EUEDUjs.emitter; exports.generateHTTPCode = _chunkW64EUEDUjs.generateHTTPCode; exports.generateRPCCode = _chunkW64EUEDUjs.generateRPCCode; exports.guardRecord = _chunkYU7ROHTOjs.guardRecord; exports.isAopDepInject = _chunkYU7ROHTOjs.isAopDepInject; exports.resolveDep = _chunkFAHHXHL5js.resolveDep; exports.setFilter = _chunkYU7ROHTOjs.setFilter;
421
423
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -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"],"names":["setModelVar","setState","BaseParam","type","key","target","k","index","state","_namespace","__STATE_NAMESPACE__","get","params","existItem","find","item","Object","assign","push","Pipe","opts","pipe","pipeOpts","Body","Head","toLowerCase","Query","Param","Arg","Route","route","prototype","http","Get","Post","Put","Patch","Delete","Controller","Rpc","types","rpc","Event","isEvent","Guard","guards","Plugin","plugins","Interceptor","interceptors","Header","name","value","header","Define","define","Empty","Dev","emitter","UNMOUNT_SYMBOL","onUnmount","cb","PFilter","constructor","setFilter","use","bind","defaultFilter","getSymbol","PGuard","addGuard","Context","guardRecord","PInterceptor","interceptorRecord","addInterceptor","PPipe","addPipe","pipeRecord","PPlugin","addPlugin","pluginRecord"],"mappings":"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","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 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}\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'\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 { setFilter } from '../context'\nimport type { Exception } from '../exception'\nimport { defaultFilter } from '../filter'\nimport { Dev } from './dev'\n\nexport abstract class PFilter<C = any, S = any, E extends Exception = Exception > extends Dev {\n constructor() {\n super()\n setFilter(this.use.bind(this))\n this.onUnmount(() => {\n setFilter(defaultFilter)\n })\n }\n\n abstract use(error: Error | E, tag?: string, ctx?: C): S\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\n constructor() {\n super()\n const key = getSymbol(this)\n\n addGuard(key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.guardRecord[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): ((arg: any) => any) | void\n\n constructor() {\n super()\n\n const key = getSymbol(this)\n\n this.onUnmount(() => {\n delete Context.interceptorRecord[key]\n })\n addInterceptor(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 constructor() {\n super()\n\n const key = getSymbol(this)\n addPipe(key, this.use.bind(this))\n this.onUnmount(() => {\n delete Context.pipeRecord[key]\n })\n }\n\n abstract use(args: { arg: any; option?: any; key: string; type: string; index: number; reflect: any }, tag: string, ctx: C): Promise<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 constructor() {\n super()\n const key = getSymbol(this)\n\n addPlugin(key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.pluginRecord[key]\n })\n }\n\n abstract use(...args: any): void\n}\n"]}
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"],"names":["setModelVar","setState","BaseParam","type","key","target","k","index","state","_namespace","__STATE_NAMESPACE__","get","params","existItem","find","item","Object","assign","push","Pipe","opts","pipe","pipeOpts","Body","Head","toLowerCase","Query","Param","Arg","Route","route","prototype","http","Get","Post","Put","Patch","Delete","Controller","Rpc","types","rpc","Event","isEvent","Guard","guards","Plugin","plugins","Interceptor","interceptors","Header","name","value","header","Define","define","Empty","Dev","emitter","UNMOUNT_SYMBOL","onUnmount","cb","PFilter","constructor","setFilter","use","bind","defaultFilter","getSymbol","PGuard","addGuard","Context","guardRecord","PInterceptor","interceptorRecord","addInterceptor","PPipe","addPipe","pipeRecord","PPlugin","addPlugin","pluginRecord"],"mappings":"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","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}\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'\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 { setFilter } from '../context'\nimport type { Exception } from '../exception'\nimport { defaultFilter } from '../filter'\nimport { Dev } from './dev'\n\nexport abstract class PFilter<C = any, S = any, E extends Exception = Exception > extends Dev {\n constructor() {\n super()\n setFilter(this.use.bind(this))\n this.onUnmount(() => {\n setFilter(defaultFilter)\n })\n }\n\n abstract use(error: Error | E, tag?: string, ctx?: C): S\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\n constructor() {\n super()\n const key = getSymbol(this)\n\n addGuard(key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.guardRecord[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): ((arg: any) => any) | void\n\n constructor() {\n super()\n\n const key = getSymbol(this)\n\n this.onUnmount(() => {\n delete Context.interceptorRecord[key]\n })\n addInterceptor(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 constructor() {\n super()\n\n const key = getSymbol(this)\n addPipe(key, this.use.bind(this))\n this.onUnmount(() => {\n delete Context.pipeRecord[key]\n })\n }\n\n abstract use(args: { arg: any; option?: any; key: string; type: string; index: number; reflect: any }, tag: string, ctx: C): Promise<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 constructor() {\n super()\n const key = getSymbol(this)\n\n addPlugin(key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.pluginRecord[key]\n })\n }\n\n abstract use(...args: any): void\n}\n"]}
package/dist/index.mjs CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  emitter,
6
6
  generateHTTPCode,
7
7
  generateRPCCode
8
- } from "./chunk-WRMLZ7NU.mjs";
8
+ } from "./chunk-JUXEUWOU.mjs";
9
9
  import {
10
10
  resolveDep
11
11
  } from "./chunk-JQPX546Z.mjs";
@@ -78,6 +78,8 @@ function Pipe(key, opts) {
78
78
  return (target, k, index) => {
79
79
  setModelVar(target, k);
80
80
  const state = target._namespace.__STATE_NAMESPACE__.get(k) || {};
81
+ if (!state.params)
82
+ state.params = [];
81
83
  const existItem = state.params.find((item) => item.index === index);
82
84
  if (existItem)
83
85
  Object.assign(existItem, {
@@ -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"],"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 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}\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'\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 { setFilter } from '../context'\nimport type { Exception } from '../exception'\nimport { defaultFilter } from '../filter'\nimport { Dev } from './dev'\n\nexport abstract class PFilter<C = any, S = any, E extends Exception = Exception > extends Dev {\n constructor() {\n super()\n setFilter(this.use.bind(this))\n this.onUnmount(() => {\n setFilter(defaultFilter)\n })\n }\n\n abstract use(error: Error | E, tag?: string, ctx?: C): S\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\n constructor() {\n super()\n const key = getSymbol(this)\n\n addGuard(key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.guardRecord[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): ((arg: any) => any) | void\n\n constructor() {\n super()\n\n const key = getSymbol(this)\n\n this.onUnmount(() => {\n delete Context.interceptorRecord[key]\n })\n addInterceptor(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 constructor() {\n super()\n\n const key = getSymbol(this)\n addPipe(key, this.use.bind(this))\n this.onUnmount(() => {\n delete Context.pipeRecord[key]\n })\n }\n\n abstract use(args: { arg: any; option?: any; key: string; type: string; index: number; reflect: any }, tag: string, ctx: C): Promise<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 constructor() {\n super()\n const key = getSymbol(this)\n\n addPlugin(key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.pluginRecord[key]\n })\n }\n\n abstract use(...args: any): void\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","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","PFilter","Dev","constructor","setFilter","use","bind","onUnmount","defaultFilter","getSymbol","PGuard","Dev","constructor","key","getSymbol","addGuard","use","bind","onUnmount","Context","guardRecord","getSymbol","PInterceptor","Dev","constructor","key","getSymbol","onUnmount","Context","interceptorRecord","addInterceptor","use","bind","getSymbol","PPipe","Dev","constructor","key","getSymbol","addPipe","use","bind","onUnmount","Context","pipeRecord","getSymbol","PPlugin","Dev","constructor","key","getSymbol","addPlugin","use","bind","onUnmount","Context","pluginRecord"]}
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"],"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}\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'\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 { setFilter } from '../context'\nimport type { Exception } from '../exception'\nimport { defaultFilter } from '../filter'\nimport { Dev } from './dev'\n\nexport abstract class PFilter<C = any, S = any, E extends Exception = Exception > extends Dev {\n constructor() {\n super()\n setFilter(this.use.bind(this))\n this.onUnmount(() => {\n setFilter(defaultFilter)\n })\n }\n\n abstract use(error: Error | E, tag?: string, ctx?: C): S\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\n constructor() {\n super()\n const key = getSymbol(this)\n\n addGuard(key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.guardRecord[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): ((arg: any) => any) | void\n\n constructor() {\n super()\n\n const key = getSymbol(this)\n\n this.onUnmount(() => {\n delete Context.interceptorRecord[key]\n })\n addInterceptor(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 constructor() {\n super()\n\n const key = getSymbol(this)\n addPipe(key, this.use.bind(this))\n this.onUnmount(() => {\n delete Context.pipeRecord[key]\n })\n }\n\n abstract use(args: { arg: any; option?: any; key: string; type: string; index: number; reflect: any }, tag: string, ctx: C): Promise<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 constructor() {\n super()\n const key = getSymbol(this)\n\n addPlugin(key, this.use.bind(this))\n\n this.onUnmount(() => {\n delete Context.pluginRecord[key]\n })\n }\n\n abstract use(...args: any): void\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,eAAAA,cAAaC,YAAAA,iBAAgB;;;ACAtC,SAASC,aAAaC,gBAAgB;AAE/B,SAASC,UAAUC,MAAcC,KAAkB;AACxD,SAAO,CAACC,QAAaC,GAAgBC,UAAkB;AACrDC,gBAAYH,QAAQC,CAAAA;AAEpB,UAAMG,QAAQJ,OAAOK,WAAWC,oBAAoBC,IAAIN,CAAAA,KAAM,CAAC;AAC/D,QAAI,CAACG,MAAMI;AACTJ,YAAMI,SAAS,CAAA;AACjB,UAAMC,YAAYL,MAAMI,OAAOE,KAAK,CAACC,SAAcA,KAAKT,UAAUA,KAAAA;AAClE,QAAIO;AACFG,aAAOC,OAAOJ,WAAW;QAAEX;QAAMC;MAAI,CAAA;;AAGrCK,YAAMI,OAAOM,KAAK;QAAEhB;QAAMC;QAAKG;MAAM,CAAA;AAEvCa,aAASf,QAAQC,GAAGG,KAAAA;EACtB;AACF;AAhBgBP;AAkBT,SAASmB,KAAKjB,KAAckB,MAAY;AAC7C,SAAO,CAACjB,QAAaC,GAAgBC,UAAkB;AACrDC,gBAAYH,QAAQC,CAAAA;AAEpB,UAAMG,QAAQJ,OAAOK,WAAWC,oBAAoBC,IAAIN,CAAAA,KAAM,CAAC;AAE/D,QAAI,CAACG,MAAMI;AACTJ,YAAMI,SAAS,CAAA;AAEjB,UAAMC,YAAYL,MAAMI,OAAOE,KAAK,CAACC,SAAcA,KAAKT,UAAUA,KAAAA;AAClE,QAAIO;AACFG,aAAOC,OAAOJ,WAAW;QAAES,MAAMnB;QAAKoB,UAAUF;MAAK,CAAA;;AAGrDb,YAAMI,OAAOM,KAAK;QAAEI,MAAMnB;QAAKoB,UAAUF;QAAMf;MAAM,CAAA;AAEvDa,aAASf,QAAQC,GAAGG,KAAAA;EACtB;AACF;AAlBgBY;AAoBT,SAASI,KAAKrB,MAAM,IAAI;AAC7B,SAAOF,UAAU,QAAQE,GAAAA;AAC3B;AAFgBqB;AAIT,SAASC,KAAKtB,KAAa;AAChC,SAAOF,UAAU,WAAWE,IAAIuB,YAAW,CAAA;AAC7C;AAFgBD;AAIT,SAASE,MAAMxB,MAAM,IAAI;AAC9B,SAAOF,UAAU,SAASE,GAAAA;AAC5B;AAFgBwB;AAGT,SAASC,MAAMzB,KAAa;AACjC,SAAOF,UAAU,UAAUE,GAAAA;AAC7B;AAFgByB;AAKT,SAASC,MAAM;AACpB,SAAO5B,UAAU,UAAU,EAAA;AAC7B;AAFgB4B;;;ACxDhB,SAASC,eAAAA,cAAaC,YAAAA,iBAAgB;AAE/B,SAASC,MAAMC,OAAeC,MAAoB;AACvD,SAAO,CAACC,QAAaC,QAAsB;AACzC,QAAI,CAACA;AACHA,YAAM;AACRD,aAASC,QAAQ,YAAYD,OAAOE,YAAYF;AAEhDG,IAAAA,aAAYH,QAAQC,GAAAA;AAEpB,UAAMG,QAAQJ,OAAOK,WAAWC,oBAAoBC,IAAIN,GAAAA,KAAQ,CAAC;AACjEG,UAAMI,OAAO;MACXV;MACAC;IACF;AACAU,IAAAA,UAAST,QAAQC,KAAKG,KAAAA;EACxB;AACF;AAfgBP;AAiBT,SAASa,IAAIZ,OAAe;AACjC,SAAOD,MAAMC,OAAO,KAAA;AACtB;AAFgBY;AAIT,SAASC,KAAKb,OAAe;AAClC,SAAOD,MAAMC,OAAO,MAAA;AACtB;AAFgBa;AAGT,SAASC,IAAId,OAAe;AACjC,SAAOD,MAAMC,OAAO,KAAA;AACtB;AAFgBc;AAIT,SAASC,MAAMf,OAAe;AACnC,SAAOD,MAAMC,OAAO,OAAA;AACtB;AAFgBe;AAGT,SAASC,OAAOhB,OAAe;AACpC,SAAOD,MAAMC,OAAO,QAAA;AACtB;AAFgBgB;AAIT,SAASC,WAAWjB,QAAQ,IAAI;AACrC,SAAOD,MAAMC,KAAAA;AACf;AAFgBiB;AAIT,SAASC,OAAOC,OAAoC;AACzD,SAAO,CAACjB,QAAaC,QAAsB;AACzC,QAAI,CAACA;AACHA,YAAM;AACRD,aAASC,QAAQ,YAAYD,OAAOE,YAAYF;AAChDG,IAAAA,aAAYH,QAAQC,GAAAA;AACpB,UAAMG,QAAQJ,OAAOK,WAAWC,oBAAoBC,IAAIN,GAAAA,KAAQ,CAAC;AACjE,QAAI,CAACG,MAAMc;AACTd,YAAMc,MAAM,CAAC;AAEfd,UAAMc,IAAInB,OAAOkB;AACjBR,IAAAA,UAAST,QAAQC,KAAKG,KAAAA;EACxB;AACF;AAbgBY;AAcT,SAASG,MAAMC,UAAU,MAAM;AACpC,SAAO,CAACpB,QAAaC,QAAsB;AACzC,QAAI,CAACA;AACHA,YAAM;AACRD,aAASC,QAAQ,YAAYD,OAAOE,YAAYF;AAChDG,IAAAA,aAAYH,QAAQC,GAAAA;AACpB,UAAMG,QAAQJ,OAAOK,WAAWC,oBAAoBC,IAAIN,GAAAA,KAAQ,CAAC;AACjE,QAAI,CAACG,MAAMc;AACTd,YAAMc,MAAM,CAAC;AAEfd,UAAMc,IAAIE,UAAUA;AACpBX,IAAAA,UAAST,QAAQC,KAAKG,KAAAA;EACxB;AACF;AAbgBe;;;ACvDhB,SAASE,eAAAA,cAAaC,YAAAA,iBAAgB;AAE/B,SAASC,SAASC,QAAuB;AAC9C,SAAO,CAACC,QAAaC,QAAsB;AACzC,QAAI,CAACA;AACHA,YAAM;AACRD,aAASC,QAAQ,YAAYD,OAAOE,YAAYF;AAEhDG,IAAAA,aAAYH,QAAQC,GAAAA;AAEpB,UAAMG,QAAQJ,OAAOK,WAAWC,oBAAoBC,IAAIN,GAAAA,KAAQ,CAAC;AACjE,QAAI,CAACG,MAAML;AACTK,YAAML,SAAS,CAAA;AACjBK,UAAML,OAAOS,KAAI,GAAIT,MAAAA;AACrBU,IAAAA,UAAST,QAAQC,KAAKG,KAAAA;EACxB;AACF;AAdgBN;AAgBT,SAASY,UAAUC,SAAwB;AAChD,SAAO,CAACX,QAAaC,QAAsB;AACzC,QAAI,CAACA;AACHA,YAAM;AACRD,aAASC,QAAQ,YAAYD,OAAOE,YAAYF;AAEhDG,IAAAA,aAAYH,QAAQC,GAAAA;AAEpB,UAAMG,QAAQJ,OAAOK,WAAWC,oBAAoBC,IAAIN,GAAAA,KAAQ,CAAC;AACjE,QAAI,CAACG,MAAMO;AACTP,YAAMO,UAAU,CAAA;AAClBP,UAAMO,QAAQH,KAAI,GAAIG,OAAAA;AACtBF,IAAAA,UAAST,QAAQC,KAAKG,KAAAA;EACxB;AACF;AAdgBM;AAgBT,SAASE,eAAeC,cAA6B;AAC1D,SAAO,CAACb,QAAaC,QAAsB;AACzC,QAAI,CAACA;AACHA,YAAM;AACRD,aAASC,QAAQ,YAAYD,OAAOE,YAAYF;AAEhDG,IAAAA,aAAYH,QAAQC,GAAAA;AAEpB,UAAMG,QAAQJ,OAAOK,WAAWC,oBAAoBC,IAAIN,GAAAA,KAAQ,CAAC;AACjE,QAAI,CAACG,MAAMS;AACTT,YAAMS,eAAe,CAAA;AACvBT,UAAMS,aAAaL,KAAI,GAAIK,YAAAA;AAC3BJ,IAAAA,UAAST,QAAQC,KAAKG,KAAAA;EACxB;AACF;AAdgBQ;;;AHhCT,SAASE,OAAOC,MAAcC,OAAe;AAClD,SAAO,CAACC,QAAaC,MAAmB;AACtCC,IAAAA,aAAYF,QAAQC,CAAAA;AACpB,UAAME,QAAQH,OAAOI,WAAWC,oBAAoBC,IAAIL,CAAAA,KAAM,CAAC;AAC/D,QAAI,CAACE,MAAMI;AACTJ,YAAMI,SAAS,CAAC;AAElBJ,UAAMI,OAAOT,QAAQC;AACrBS,IAAAA,UAASR,QAAQC,GAAGE,KAAAA;EACtB;AACF;AAVgBN;AAYT,SAASY,OAAOC,KAAaX,OAAY;AAC9C,SAAO,CAACC,QAAaC,MAAoB;AACvC,QAAI,CAACA,GAAG;AACNA,UAAI;AACJD,eAASA,OAAOW;IAClB;AAEAT,IAAAA,aAAYF,QAAQC,CAAAA;AACpB,UAAME,QAAQH,OAAOI,WAAWC,oBAAoBC,IAAIL,CAAAA,KAAM,CAAC;AAC/D,QAAI,CAACE,MAAMS;AACTT,YAAMS,SAAS,CAAC;AAElBT,UAAMS,OAAOF,OAAOX;AACpBS,IAAAA,UAASR,QAAQC,GAAGE,KAAAA;EACtB;AACF;AAfgBM;;;AIPhB,cAAc;;;ACPd,SAASI,aAAa;;;;;;;;;;;AAKtB,IAAaC,MAAN,6BAAAA,KAAA;EACcC,UAAUA;EACZ,CAACC,kBAAkC,CAAA;EAEpDC,UAAUC,IAAgB;AACxB,SAAKF,gBAAgBG,KAAKD,EAAAA;EAC5B;AACF,GAPO;AAAMJ,MAAAA,WAAAA;EADZM;GACYN,GAAAA;;;ACAN,IAAeO,UAAf,cAAmFC,IAAAA;EACxFC,cAAc;AACZ,UAAK;AACLC,cAAU,KAAKC,IAAIC,KAAK,IAAI,CAAA;AAC5B,SAAKC,UAAU,MAAM;AACnBH,gBAAUI,aAAAA;IACZ,CAAA;EACF;AAGF;AAVsBP;;;ACLtB,SAASQ,iBAAiB;AAInB,IAAeC,SAAf,cAAuCC,IAAAA;EAG5CC,cAAc;AACZ,UAAK;AACL,UAAMC,MAAMC,UAAU,IAAI;AAE1BC,aAASF,KAAK,KAAKG,IAAIC,KAAK,IAAI,CAAA;AAEhC,SAAKC,UAAU,MAAM;AACnB,aAAOC,QAAQC,YAAYP;IAC7B,CAAA;EACF;AACF;AAbsBH;;;ACJtB,SAASW,aAAAA,kBAAiB;AAInB,IAAeC,eAAf,cAA6CC,IAAAA;EAGlDC,cAAc;AACZ,UAAK;AAEL,UAAMC,MAAMC,WAAU,IAAI;AAE1B,SAAKC,UAAU,MAAM;AACnB,aAAOC,QAAQC,kBAAkBJ;IACnC,CAAA;AACAK,mBAAeL,KAAK,KAAKM,IAAIC,KAAK,IAAI,CAAA;EACxC;AACF;AAbsBV;;;ACJtB,SAASW,aAAAA,kBAAiB;AAGnB,IAAeC,QAAf,cAAsCC,IAAAA;EAC3CC,cAAc;AACZ,UAAK;AAEL,UAAMC,MAAMC,WAAU,IAAI;AAC1BC,YAAQF,KAAK,KAAKG,IAAIC,KAAK,IAAI,CAAA;AAC/B,SAAKC,UAAU,MAAM;AACnB,aAAOC,QAAQC,WAAWP;IAC5B,CAAA;EACF;AAGF;AAZsBH;;;ACHtB,SAASW,aAAAA,kBAAiB;AAInB,IAAeC,UAAf,cAA+BC,IAAAA;EACpCC,cAAc;AACZ,UAAK;AACL,UAAMC,MAAMC,WAAU,IAAI;AAE1BC,cAAUF,KAAK,KAAKG,IAAIC,KAAK,IAAI,CAAA;AAEjC,SAAKC,UAAU,MAAM;AACnB,aAAOC,QAAQC,aAAaP;IAC9B,CAAA;EACF;AAGF;AAbsBH;","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","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","PFilter","Dev","constructor","setFilter","use","bind","onUnmount","defaultFilter","getSymbol","PGuard","Dev","constructor","key","getSymbol","addGuard","use","bind","onUnmount","Context","guardRecord","getSymbol","PInterceptor","Dev","constructor","key","getSymbol","onUnmount","Context","interceptorRecord","addInterceptor","use","bind","getSymbol","PPipe","Dev","constructor","key","getSymbol","addPipe","use","bind","onUnmount","Context","pipeRecord","getSymbol","PPlugin","Dev","constructor","key","getSymbol","addPlugin","use","bind","onUnmount","Context","pluginRecord"]}
@@ -94,11 +94,9 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
94
94
  noAck: true
95
95
  });
96
96
  if (_chunkLZAU5FUSjs.IS_DEV) {
97
- const rawMetaHmr = globalThis.__PS_WRITEMETA__;
98
- globalThis.__PS_WRITEMETA__ = () => {
97
+ _optionalChain([globalThis, 'access', _2 => _2.__PS_HMR__, 'optionalAccess', _3 => _3.push, 'call', _4 => _4(async () => {
99
98
  handleMeta();
100
- _optionalChain([rawMetaHmr, 'optionalCall', _2 => _2()]);
101
- };
99
+ })]);
102
100
  }
103
101
  }
104
102
  _chunkLZAU5FUSjs.__name.call(void 0, bind, "bind");
@@ -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","BadRequestException","params","paramsType","useGuard","cache","useInterceptor","undefined","sendToQueue","Buffer","from","stringify","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","error","noAck","IS_DEV","rawMetaHmr","globalThis","__PS_WRITEMETA__","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\n try {\n if (!metaMap.has(tag))\n throw new BadRequestException(`service \"${tag}\" doesn't exist`)\n\n const {\n data: {\n guards, interceptors, params, name, method,\n },\n paramsType,\n } = metaMap.get(tag)!\n\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)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: ret.error,\n id,\n })))\n }\n }\n }\n }, { noAck: true })\n\n if (IS_DEV) {\n // @ts-expect-error globalThis\n const rawMetaHmr = globalThis.__PS_WRITEMETA__\n // @ts-expect-error globalThis\n\n globalThis.__PS_WRITEMETA__ = () => {\n handleMeta()\n rawMetaHmr?.()\n }\n }\n}\n","import { EventEmitter } from 'events'\nimport { randomUUID } from 'crypto'\nimport type amqplib from 'amqplib'\nimport type { ToInstance } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToInstance<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","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","BadRequestException","params","paramsType","useGuard","cache","useInterceptor","undefined","sendToQueue","Buffer","from","stringify","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","error","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\n try {\n if (!metaMap.has(tag))\n throw new BadRequestException(`service \"${tag}\" doesn't exist`)\n\n const {\n data: {\n guards, interceptors, params, name, method,\n },\n paramsType,\n } = metaMap.get(tag)!\n\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)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: ret.error,\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 { ToInstance } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToInstance<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"]}
@@ -94,11 +94,9 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
94
94
  noAck: true
95
95
  });
96
96
  if (IS_DEV) {
97
- const rawMetaHmr = globalThis.__PS_WRITEMETA__;
98
- globalThis.__PS_WRITEMETA__ = () => {
97
+ globalThis.__PS_HMR__?.push(async () => {
99
98
  handleMeta();
100
- rawMetaHmr?.();
101
- };
99
+ });
102
100
  }
103
101
  }
104
102
  __name(bind, "bind");
@@ -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\n try {\n if (!metaMap.has(tag))\n throw new BadRequestException(`service \"${tag}\" doesn't exist`)\n\n const {\n data: {\n guards, interceptors, params, name, method,\n },\n paramsType,\n } = metaMap.get(tag)!\n\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)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: ret.error,\n id,\n })))\n }\n }\n }\n }, { noAck: true })\n\n if (IS_DEV) {\n // @ts-expect-error globalThis\n const rawMetaHmr = globalThis.__PS_WRITEMETA__\n // @ts-expect-error globalThis\n\n globalThis.__PS_WRITEMETA__ = () => {\n handleMeta()\n rawMetaHmr?.()\n }\n }\n}\n","import { EventEmitter } from 'events'\nimport { randomUUID } from 'crypto'\nimport type amqplib from 'amqplib'\nimport type { ToInstance } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToInstance<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":";;;;;;;;;;;AAuBA,eAAsBA,KAAKC,IAAqBC,OAAe,EAAEC,WAAWC,KAAI,GAAyCC,MAAgB;AACvI,QAAMC,UAAU,oBAAIC,IAAAA;AAEpB,QAAMC,aAAa,oBAAIC,IAAAA;AACvB,QAAM,EAAEC,eAAe,CAAA,GAAIC,qBAAqB,CAAA,EAAE,IAAKN,QAAQ,CAAC;AAEhEO,iBAAeR,MAAM;IACnBS,QAAQH;IACRI,cAAcH;EAChB,CAAA;AAEA,WAASI,aAAa;AACpB,eAAWC,QAAQZ,MAAM;AACvB,YAAM,EAAEa,MAAM,EAAEC,KAAKC,QAAQC,KAAI,EAAE,IAAKJ;AAExC,UAAIE,KAAKG,QAAQH,IAAIG,KAAKC,SAAS,IAAA;AACjChB,gBAAQiB,IAAI,GAAGH,QAAQD,UAAUH,IAAAA;IACrC;EACF;AAPSD;AASTA,aAAAA;AAEA,QAAMd,GAAGuB,YAAYtB,KAAAA;AAErBD,KAAGwB,QAAQvB,OAAO,OAAOwB,QAAQ;AAC/B,QAAIA,KAAK;AACP,YAAMT,OAAOU,KAAKC,MAAMF,IAAIG,QAAQC,SAAQ,CAAA;AAC5C,YAAM,EAAEC,KAAKC,MAAM9B,OAAAA,QAAO+B,GAAE,IAAKhB;AACjC,YAAMiB,UAAU,IAAIC,QAAQJ,KAAK;QAC/BV,MAAM;QACNlB;QACAC,MAAME,QAAQ8B,IAAIL,GAAAA;QAClBd;QACAhB;QACAyB;MACF,CAAA;AACA,UAAI,CAAClB,WAAW6B,IAAInC,MAAAA;AAClB,cAAMD,GAAGuB,YAAYtB,MAAAA;AAEvB,UAAI;AACF,YAAI,CAACI,QAAQ+B,IAAIN,GAAAA;AACf,gBAAM,IAAIO,oBAAoB,YAAYP,oBAAoB;AAEhE,cAAM,EACJd,MAAM,EACJJ,QAAQC,cAAcyB,QAAQnB,MAAMD,OAAM,GAE5CqB,WAAU,IACRlC,QAAQ8B,IAAIL,GAAAA;AAEhB,cAAMG,QAAQO,SAAS;aAAI/B;aAAiBG;SAAO;AACnD,cAAM6B,QAAQ,MAAMR,QAAQS,eAAe;aAAIhC;aAAuBG;SAAa;AACnF,YAAI4B,UAAUE,QAAW;AACvB,cAAI1C;AACFD,eAAG4C,YAAY3C,QAAO4C,OAAOC,KAAKpB,KAAKqB,UAAU;cAAE/B,MAAMyB;cAAOT;YAAG,CAAA,CAAA,CAAA;AAErE;QACF;AACA,cAAMgB,aAAa,MAAMf,QAAQgB,QAAQX,OAAOY,IAAI,CAAC,EAAE9B,MAAM+B,KAAKC,MAAMC,UAAUC,MAAK,GAAIC,MAAM;AAC/F,iBAAO;YAAEC,KAAKzB,KAAKwB;YAAIH;YAAMC;YAAUF;YAAK/B;YAAMkC;YAAOG,SAASlB,WAAWe;UAAO;QACtF,CAAA,CAAA;AAEA,cAAMI,WAAW,MAAMxD,UAAUiC,IAAIhB,IAAAA,EAAMD,QAAO,GAAI8B,UAAAA;AACtD,cAAMW,MAAM,MAAM1B,QAAQ2B,mBAAmBF,QAAAA;AAC7C,YAAIzD;AACFD,aAAG4C,YAAY3C,QAAO4C,OAAOC,KAAKpB,KAAKqB,UAAU;YAAE/B,MAAM2C;YAAK3B;UAAG,CAAA,CAAA,CAAA;MACrE,SACO6B,GAAP;AACE,cAAMF,MAAM,MAAM1B,QAAQ6B,UAAUD,CAAAA;AACpC,YAAI5D,QAAO;AACTD,aAAG4C,YAAY3C,QAAO4C,OAAOC,KAAKpB,KAAKqB,UAAU;YAC/C/B,MAAM2C;YACNI,OAAOJ,IAAII;YACX/B;UACF,CAAA,CAAA,CAAA;QACF;MACF;IACF;EACF,GAAG;IAAEgC,OAAO;EAAK,CAAA;AAEjB,MAAIC,QAAQ;AAEV,UAAMC,aAAaC,WAAWC;AAG9BD,eAAWC,mBAAmB,MAAM;AAClCtD,iBAAAA;AACAoD,mBAAAA;IACF;EACF;AACF;AA1FsBnE;;;ACvBtB,SAASsE,oBAAoB;AAC7B,SAASC,kBAAkB;AAG3B,eAAsBC,aAA4CC,IAAqBC,OAAeC,aAAwC;AAC5I,QAAMC,MAAM,CAAC;AACb,QAAMC,UAAU,IAAIC,aAAAA;AACpB,QAAMC,WAAW,MAAMC,WAAAA;AAEvB,QAAMP,GAAGQ,YAAYF,QAAAA;AACrBN,KAAGS,QAAQH,UAAU,CAACI,QAAQ;AAC5B,QAAI,CAACA;AACH;AACF,UAAM,EAAEC,MAAMC,IAAIC,MAAK,IAAKC,KAAKC,MAAML,IAAIM,QAAQC,SAAQ,CAAA;AAC3Db,YAAQc,KAAKN,IAAID,MAAME,KAAAA;EACzB,CAAA;AAEA,aAAWM,KAAKjB,aAAa;AAC3BC,QAAIgB,KAAK,IAAIC,MAAM,IAAIlB,YAAYiB,GAAE,GAAI;MACvCE,IAAIC,QAAQC,GAAW;AACrB,cAAMX,KAAKL,WAAAA;AACX,YAAI,OAAOe,OAAOC,OAAO;AACvB,gBAAM,IAAIC,MAAM,IAAID,UAAUJ,2BAA2B;AAE3D,cAAM,EAAEM,KAAKC,KAAKC,QAAO,IAAKL,OAAOC,GAAE;AACvC,YAAI,CAACG,IAAIE,SAAS,IAAA;AAChB,gBAAM,IAAIJ,MAAM,IAAID,UAAUJ,6BAA6B;AAC7D,eAAO,IAAIU,SAAc;AACvB7B,aAAG8B,YAAY7B,OAAO8B,OAAOC,KAC3BlB,KAAKmB,UACH;YACErB;YACAa;YACAI;YACA5B,OAAO0B,UAAUO,SAAY5B;UAC/B,CAAA,CAAA,CAAA;AAGJ,cAAIqB;AACF,mBAAO;AAET,iBAAO,IAAIQ,QAAQ,CAACC,SAASC,WAAW;AACtCjC,oBAAQkC,KAAK1B,IAAI,CAACD,MAAWE,UAAmB;AAC9C,kBAAIA;AACFwB,uBAAO1B,IAAAA;;AAEJyB,wBAAQzB,IAAAA;YACf,CAAA;UACF,CAAA;QACF;MACF;IACF,CAAA;EACF;AAEA,SAAOR;AACT;AAnDsBJ;","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","BadRequestException","params","paramsType","useGuard","cache","useInterceptor","undefined","sendToQueue","Buffer","from","stringify","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","error","noAck","IS_DEV","rawMetaHmr","globalThis","__PS_WRITEMETA__","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'\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\n try {\n if (!metaMap.has(tag))\n throw new BadRequestException(`service \"${tag}\" doesn't exist`)\n\n const {\n data: {\n guards, interceptors, params, name, method,\n },\n paramsType,\n } = metaMap.get(tag)!\n\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)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: ret.error,\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 { ToInstance } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToInstance<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","BadRequestException","params","paramsType","useGuard","cache","useInterceptor","undefined","sendToQueue","Buffer","from","stringify","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","error","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"]}
@@ -89,11 +89,9 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
89
89
  }
90
90
  });
91
91
  if (_chunkLZAU5FUSjs.IS_DEV) {
92
- const rawMetaHmr = globalThis.__PS_WRITEMETA__;
93
- globalThis.__PS_WRITEMETA__ = () => {
92
+ _optionalChain([globalThis, 'access', _3 => _3.__PS_HMR__, 'optionalAccess', _4 => _4.push, 'call', _5 => _5(async () => {
94
93
  handleMeta();
95
- _optionalChain([rawMetaHmr, 'optionalCall', _3 => _3()]);
96
- };
94
+ })]);
97
95
  }
98
96
  }
99
97
  _chunkLZAU5FUSjs.__name.call(void 0, bind, "bind");