phecda-server 4.0.7 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/{chunk-JZGLQ4FQ.js → chunk-32E425F6.js} +55 -55
  2. package/dist/chunk-32E425F6.js.map +1 -0
  3. package/dist/{chunk-DQUH5BP6.mjs → chunk-5KOB2WHH.mjs} +1 -1
  4. package/dist/{chunk-DQUH5BP6.mjs.map → chunk-5KOB2WHH.mjs.map} +1 -1
  5. package/dist/{chunk-WWYSLFOI.js → chunk-5L4K7XEB.js} +33 -31
  6. package/dist/chunk-5L4K7XEB.js.map +1 -0
  7. package/dist/{chunk-FCLWCFQS.js → chunk-63KBHOSB.js} +3 -3
  8. package/dist/{chunk-ZZ2QKZ46.js → chunk-BDIQWWHN.js} +1 -1
  9. package/dist/{chunk-ZZ2QKZ46.js.map → chunk-BDIQWWHN.js.map} +1 -1
  10. package/dist/{chunk-43ZXHSVH.mjs → chunk-Q3V3ERU3.mjs} +2 -2
  11. package/dist/{chunk-F5PQVQTY.mjs → chunk-WQBXOVND.mjs} +16 -14
  12. package/dist/chunk-WQBXOVND.mjs.map +1 -0
  13. package/dist/{chunk-ATMZNJSE.mjs → chunk-Z6LSJTOF.mjs} +11 -11
  14. package/dist/chunk-Z6LSJTOF.mjs.map +1 -0
  15. package/dist/{core-72951cf9.d.ts → core-d080d872.d.ts} +21 -13
  16. package/dist/index.d.ts +24 -25
  17. package/dist/index.js +57 -57
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +4 -4
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/rpc/rabbitmq/index.d.ts +2 -5
  22. package/dist/rpc/rabbitmq/index.js +22 -20
  23. package/dist/rpc/rabbitmq/index.js.map +1 -1
  24. package/dist/rpc/rabbitmq/index.mjs +17 -15
  25. package/dist/rpc/rabbitmq/index.mjs.map +1 -1
  26. package/dist/rpc/redis/index.d.ts +2 -5
  27. package/dist/rpc/redis/index.js +23 -21
  28. package/dist/rpc/redis/index.js.map +1 -1
  29. package/dist/rpc/redis/index.mjs +18 -16
  30. package/dist/rpc/redis/index.mjs.map +1 -1
  31. package/dist/server/express/index.d.ts +2 -5
  32. package/dist/server/express/index.js +28 -26
  33. package/dist/server/express/index.js.map +1 -1
  34. package/dist/server/express/index.mjs +9 -7
  35. package/dist/server/express/index.mjs.map +1 -1
  36. package/dist/server/fastify/index.d.ts +2 -5
  37. package/dist/server/fastify/index.js +26 -24
  38. package/dist/server/fastify/index.js.map +1 -1
  39. package/dist/server/fastify/index.mjs +9 -7
  40. package/dist/server/fastify/index.mjs.map +1 -1
  41. package/dist/server/h3/index.d.ts +2 -5
  42. package/dist/server/h3/index.js +28 -26
  43. package/dist/server/h3/index.js.map +1 -1
  44. package/dist/server/h3/index.mjs +9 -7
  45. package/dist/server/h3/index.mjs.map +1 -1
  46. package/dist/server/koa/index.d.ts +2 -5
  47. package/dist/server/koa/index.js +28 -26
  48. package/dist/server/koa/index.js.map +1 -1
  49. package/dist/server/koa/index.mjs +9 -7
  50. package/dist/server/koa/index.mjs.map +1 -1
  51. package/dist/test.d.ts +1 -1
  52. package/dist/test.js +5 -5
  53. package/dist/test.mjs +2 -2
  54. package/package.json +1 -1
  55. package/dist/chunk-ATMZNJSE.mjs.map +0 -1
  56. package/dist/chunk-F5PQVQTY.mjs.map +0 -1
  57. package/dist/chunk-JZGLQ4FQ.js.map +0 -1
  58. package/dist/chunk-WWYSLFOI.js.map +0 -1
  59. /package/dist/{chunk-FCLWCFQS.js.map → chunk-63KBHOSB.js.map} +0 -0
  60. /package/dist/{chunk-43ZXHSVH.mjs.map → chunk-Q3V3ERU3.mjs.map} +0 -0
@@ -2,54 +2,56 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkJZGLQ4FQjs = require('../../chunk-JZGLQ4FQ.js');
5
+ var _chunk32E425F6js = require('../../chunk-32E425F6.js');
6
6
 
7
7
 
8
8
 
9
- var _chunkZZ2QKZ46js = require('../../chunk-ZZ2QKZ46.js');
9
+ var _chunkBDIQWWHNjs = require('../../chunk-BDIQWWHN.js');
10
10
 
11
11
  // src/rpc/rabbitmq/bind.ts
12
12
  async function bind(ch, queue, { moduleMap, meta }, opts) {
13
13
  const metaMap = /* @__PURE__ */ new Map();
14
14
  const existQueue = /* @__PURE__ */ new Set();
15
15
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
16
- _chunkJZGLQ4FQjs.isAopDepInject.call(void 0, meta, {
17
- guards: globalGuards,
18
- interceptors: globalInterceptors
19
- });
20
16
  function handleMeta() {
17
+ _chunk32E425F6js.isAopDepInject.call(void 0, meta, {
18
+ guards: globalGuards,
19
+ interceptors: globalInterceptors
20
+ });
21
21
  for (const item of meta) {
22
22
  const { data: { rpc, method, name } } = item;
23
23
  if (_optionalChain([rpc, 'optionalAccess', _ => _.type]) && rpc.type.includes("mq"))
24
24
  metaMap.set(`${name}-${method}`, item);
25
25
  }
26
26
  }
27
- _chunkZZ2QKZ46js.__name.call(void 0, handleMeta, "handleMeta");
27
+ _chunkBDIQWWHNjs.__name.call(void 0, handleMeta, "handleMeta");
28
28
  handleMeta();
29
29
  await ch.assertQueue(queue);
30
30
  ch.consume(queue, async (msg) => {
31
31
  if (msg) {
32
32
  const data = JSON.parse(msg.content.toString());
33
33
  const { tag, args, queue: queue2, id } = data;
34
- const context = new (0, _chunkJZGLQ4FQjs.Context)(tag, {
35
- type: "rabbitmq",
36
- moduleMap,
37
- meta: metaMap.get(tag),
38
- data,
39
- ch,
40
- msg
41
- });
42
34
  if (!existQueue.has(queue2))
43
35
  await ch.assertQueue(queue2);
44
36
  if (!metaMap.has(tag)) {
45
37
  queue2 && ch.sendToQueue(queue2, Buffer.from(JSON.stringify({
46
- data: new (0, _chunkJZGLQ4FQjs.BadRequestException)(`service "${tag}" doesn't exist`).data,
38
+ data: new (0, _chunk32E425F6js.BadRequestException)(`service "${tag}" doesn't exist`).data,
47
39
  error: true,
48
40
  id
49
41
  })));
50
42
  return;
51
43
  }
52
- const { data: { guards, interceptors, params, name, method, filter }, paramsType } = metaMap.get(tag);
44
+ const meta2 = metaMap.get(tag);
45
+ const context = new (0, _chunk32E425F6js.Context)({
46
+ type: "rabbitmq",
47
+ moduleMap,
48
+ meta: meta2,
49
+ tag,
50
+ data,
51
+ ch,
52
+ msg
53
+ });
54
+ const { data: { guards, interceptors, params, name, method, filter }, paramsType } = meta2;
53
55
  try {
54
56
  await context.useGuard([
55
57
  ...globalGuards,
@@ -99,13 +101,13 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
99
101
  }, {
100
102
  noAck: true
101
103
  });
102
- if (_chunkZZ2QKZ46js.IS_DEV) {
104
+ if (_chunkBDIQWWHNjs.IS_DEV) {
103
105
  _optionalChain([globalThis, 'access', _2 => _2.__PS_HMR__, 'optionalAccess', _3 => _3.push, 'call', _4 => _4(async () => {
104
106
  handleMeta();
105
107
  })]);
106
108
  }
107
109
  }
108
- _chunkZZ2QKZ46js.__name.call(void 0, bind, "bind");
110
+ _chunkBDIQWWHNjs.__name.call(void 0, bind, "bind");
109
111
 
110
112
  // src/rpc/rabbitmq/client.ts
111
113
  var _events = require('events');
@@ -153,7 +155,7 @@ async function createClient(ch, queue, controllers) {
153
155
  }
154
156
  return ret;
155
157
  }
156
- _chunkZZ2QKZ46js.__name.call(void 0, createClient, "createClient");
158
+ _chunkBDIQWWHNjs.__name.call(void 0, createClient, "createClient");
157
159
 
158
160
 
159
161
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/rpc/rabbitmq/bind.ts","../../../src/rpc/rabbitmq/client.ts"],"names":["bind","ch","queue","moduleMap","meta","opts","metaMap","Map","existQueue","Set","globalGuards","globalInterceptors","isAopDepInject","guards","interceptors","handleMeta","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","context","Context","get","has","sendToQueue","Buffer","from","stringify","BadRequestException","error","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","noAck","IS_DEV","globalThis","__PS_HMR__","push","EventEmitter","randomUUID","createClient","controllers","emitter","uniQueue","emit","Proxy","target","p","Error","isEvent","Promise","resolve","reject","once"],"mappings":"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","sourcesContent":["import type amqplib from 'amqplib'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RabbitmqCtx {\n type: 'rabbitmq'\n meta?: Meta\n moduleMap: Record<string, any>\n ch: amqplib.Channel\n msg: amqplib.ConsumeMessage\n // JSON parse msg.content\n data: any\n [key: string]: any\n\n}\n\nexport async function bind(ch: amqplib.Channel, queue: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const existQueue = new Set<string>()\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n function handleMeta() {\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n await ch.assertQueue(queue)\n\n ch.consume(queue, async (msg) => {\n if (msg) {\n const data = JSON.parse(msg.content.toString())\n const { tag, args, queue, id } = data\n const context = new Context(tag, {\n type: 'rabbitmq',\n moduleMap,\n meta: metaMap.get(tag),\n data,\n ch,\n msg,\n })\n if (!existQueue.has(queue))\n await ch.assertQueue(queue)\n if (!metaMap.has(tag)) {\n queue && ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n })))\n\n return\n }\n\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = metaMap.get(tag)!\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: cache, id })))\n\n return\n }\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const ret = await context.usePostInterceptor(funcData)\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: ret, id })))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: true,\n id,\n })))\n }\n }\n }\n }, { noAck: true })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { EventEmitter } from 'events'\nimport { randomUUID } from 'crypto'\nimport type amqplib from 'amqplib'\nimport type { ToControllerMap } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToControllerMap<S>> {\n const ret = {} as any\n const emitter = new EventEmitter()\n const uniQueue = `PS:${randomUUID()}`\n\n await ch.assertQueue(uniQueue)\n ch.consume(uniQueue, (msg) => {\n if (!msg)\n return\n const { data, id, error } = JSON.parse(msg.content.toString())\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('mq'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support rabbitmq`)\n return (...args: any) => {\n ch.sendToQueue(queue, Buffer.from(\n JSON.stringify(\n {\n id,\n tag,\n args,\n queue: isEvent ? undefined : uniQueue,\n },\n ),\n ))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data: any, error: boolean) => {\n if (error)\n reject(data)\n\n else resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"]}
1
+ {"version":3,"sources":["../../../src/rpc/rabbitmq/bind.ts","../../../src/rpc/rabbitmq/client.ts"],"names":["bind","ch","queue","moduleMap","meta","opts","metaMap","Map","existQueue","Set","globalGuards","globalInterceptors","handleMeta","isAopDepInject","guards","interceptors","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","has","sendToQueue","Buffer","from","stringify","BadRequestException","error","get","context","Context","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","noAck","IS_DEV","globalThis","__PS_HMR__","push","EventEmitter","randomUUID","createClient","controllers","emitter","uniQueue","emit","Proxy","target","p","Error","isEvent","Promise","resolve","reject","once"],"mappings":"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","sourcesContent":["import type amqplib from 'amqplib'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\nimport { P } from '../../types'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RabbitmqCtx extends P.BaseContext {\n type: 'rabbitmq'\n ch: amqplib.Channel\n msg: amqplib.ConsumeMessage\n data: any\n}\n\nexport async function bind(ch: amqplib.Channel, queue: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const existQueue = new Set<string>()\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n\n function handleMeta() {\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n await ch.assertQueue(queue)\n\n ch.consume(queue, async (msg) => {\n if (msg) {\n const data = JSON.parse(msg.content.toString())\n const { tag, args, queue, id } = data\n\n if (!existQueue.has(queue))\n await ch.assertQueue(queue)\n if (!metaMap.has(tag)) {\n queue && ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n })))\n\n return\n }\n\n const meta = metaMap.get(tag)!\n const context = new Context<RabbitmqCtx>({\n type: 'rabbitmq',\n moduleMap,\n meta,\n tag,\n data,\n ch,\n msg,\n })\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = meta\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: cache, id })))\n\n return\n }\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const ret = await context.usePostInterceptor(funcData)\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: ret, id })))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: true,\n id,\n })))\n }\n }\n }\n }, { noAck: true })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { EventEmitter } from 'events'\nimport { randomUUID } from 'crypto'\nimport type amqplib from 'amqplib'\nimport type { ToControllerMap } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToControllerMap<S>> {\n const ret = {} as any\n const emitter = new EventEmitter()\n const uniQueue = `PS:${randomUUID()}`\n\n await ch.assertQueue(uniQueue)\n ch.consume(uniQueue, (msg) => {\n if (!msg)\n return\n const { data, id, error } = JSON.parse(msg.content.toString())\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('mq'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support rabbitmq`)\n return (...args: any) => {\n ch.sendToQueue(queue, Buffer.from(\n JSON.stringify(\n {\n id,\n tag,\n args,\n queue: isEvent ? undefined : uniQueue,\n },\n ),\n ))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data: any, error: boolean) => {\n if (error)\n reject(data)\n\n else resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"]}
@@ -2,22 +2,22 @@ import {
2
2
  BadRequestException,
3
3
  Context,
4
4
  isAopDepInject
5
- } from "../../chunk-ATMZNJSE.mjs";
5
+ } from "../../chunk-Z6LSJTOF.mjs";
6
6
  import {
7
7
  IS_DEV,
8
8
  __name
9
- } from "../../chunk-DQUH5BP6.mjs";
9
+ } from "../../chunk-5KOB2WHH.mjs";
10
10
 
11
11
  // src/rpc/rabbitmq/bind.ts
12
12
  async function bind(ch, queue, { moduleMap, meta }, opts) {
13
13
  const metaMap = /* @__PURE__ */ new Map();
14
14
  const existQueue = /* @__PURE__ */ new Set();
15
15
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
16
- isAopDepInject(meta, {
17
- guards: globalGuards,
18
- interceptors: globalInterceptors
19
- });
20
16
  function handleMeta() {
17
+ isAopDepInject(meta, {
18
+ guards: globalGuards,
19
+ interceptors: globalInterceptors
20
+ });
21
21
  for (const item of meta) {
22
22
  const { data: { rpc, method, name } } = item;
23
23
  if (rpc?.type && rpc.type.includes("mq"))
@@ -31,14 +31,6 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
31
31
  if (msg) {
32
32
  const data = JSON.parse(msg.content.toString());
33
33
  const { tag, args, queue: queue2, id } = data;
34
- const context = new Context(tag, {
35
- type: "rabbitmq",
36
- moduleMap,
37
- meta: metaMap.get(tag),
38
- data,
39
- ch,
40
- msg
41
- });
42
34
  if (!existQueue.has(queue2))
43
35
  await ch.assertQueue(queue2);
44
36
  if (!metaMap.has(tag)) {
@@ -49,7 +41,17 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
49
41
  })));
50
42
  return;
51
43
  }
52
- const { data: { guards, interceptors, params, name, method, filter }, paramsType } = metaMap.get(tag);
44
+ const meta2 = metaMap.get(tag);
45
+ const context = new Context({
46
+ type: "rabbitmq",
47
+ moduleMap,
48
+ meta: meta2,
49
+ tag,
50
+ data,
51
+ ch,
52
+ msg
53
+ });
54
+ const { data: { guards, interceptors, params, name, method, filter }, paramsType } = meta2;
53
55
  try {
54
56
  await context.useGuard([
55
57
  ...globalGuards,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/rpc/rabbitmq/bind.ts","../../../src/rpc/rabbitmq/client.ts"],"sourcesContent":["import type amqplib from 'amqplib'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RabbitmqCtx {\n type: 'rabbitmq'\n meta?: Meta\n moduleMap: Record<string, any>\n ch: amqplib.Channel\n msg: amqplib.ConsumeMessage\n // JSON parse msg.content\n data: any\n [key: string]: any\n\n}\n\nexport async function bind(ch: amqplib.Channel, queue: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const existQueue = new Set<string>()\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n function handleMeta() {\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n await ch.assertQueue(queue)\n\n ch.consume(queue, async (msg) => {\n if (msg) {\n const data = JSON.parse(msg.content.toString())\n const { tag, args, queue, id } = data\n const context = new Context(tag, {\n type: 'rabbitmq',\n moduleMap,\n meta: metaMap.get(tag),\n data,\n ch,\n msg,\n })\n if (!existQueue.has(queue))\n await ch.assertQueue(queue)\n if (!metaMap.has(tag)) {\n queue && ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n })))\n\n return\n }\n\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = metaMap.get(tag)!\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: cache, id })))\n\n return\n }\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const ret = await context.usePostInterceptor(funcData)\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: ret, id })))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: true,\n id,\n })))\n }\n }\n }\n }, { noAck: true })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { EventEmitter } from 'events'\nimport { randomUUID } from 'crypto'\nimport type amqplib from 'amqplib'\nimport type { ToControllerMap } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToControllerMap<S>> {\n const ret = {} as any\n const emitter = new EventEmitter()\n const uniQueue = `PS:${randomUUID()}`\n\n await ch.assertQueue(uniQueue)\n ch.consume(uniQueue, (msg) => {\n if (!msg)\n return\n const { data, id, error } = JSON.parse(msg.content.toString())\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('mq'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support rabbitmq`)\n return (...args: any) => {\n ch.sendToQueue(queue, Buffer.from(\n JSON.stringify(\n {\n id,\n tag,\n args,\n queue: isEvent ? undefined : uniQueue,\n },\n ),\n ))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data: any, error: boolean) => {\n if (error)\n reject(data)\n\n else resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"],"mappings":"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","names":["bind","ch","queue","moduleMap","meta","opts","metaMap","Map","existQueue","Set","globalGuards","globalInterceptors","isAopDepInject","guards","interceptors","handleMeta","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","context","Context","get","has","sendToQueue","Buffer","from","stringify","BadRequestException","error","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","noAck","IS_DEV","globalThis","__PS_HMR__","push","EventEmitter","randomUUID","createClient","ch","queue","controllers","ret","emitter","EventEmitter","uniQueue","randomUUID","assertQueue","consume","msg","data","id","error","JSON","parse","content","toString","emit","i","Proxy","get","target","p","Error","tag","rpc","isEvent","includes","args","sendToQueue","Buffer","from","stringify","undefined","Promise","resolve","reject","once"]}
1
+ {"version":3,"sources":["../../../src/rpc/rabbitmq/bind.ts","../../../src/rpc/rabbitmq/client.ts"],"sourcesContent":["import type amqplib from 'amqplib'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\nimport { P } from '../../types'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RabbitmqCtx extends P.BaseContext {\n type: 'rabbitmq'\n ch: amqplib.Channel\n msg: amqplib.ConsumeMessage\n data: any\n}\n\nexport async function bind(ch: amqplib.Channel, queue: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const existQueue = new Set<string>()\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n\n function handleMeta() {\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n await ch.assertQueue(queue)\n\n ch.consume(queue, async (msg) => {\n if (msg) {\n const data = JSON.parse(msg.content.toString())\n const { tag, args, queue, id } = data\n\n if (!existQueue.has(queue))\n await ch.assertQueue(queue)\n if (!metaMap.has(tag)) {\n queue && ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n })))\n\n return\n }\n\n const meta = metaMap.get(tag)!\n const context = new Context<RabbitmqCtx>({\n type: 'rabbitmq',\n moduleMap,\n meta,\n tag,\n data,\n ch,\n msg,\n })\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = meta\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: cache, id })))\n\n return\n }\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const ret = await context.usePostInterceptor(funcData)\n if (queue)\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({ data: ret, id })))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n if (queue) {\n ch.sendToQueue(queue, Buffer.from(JSON.stringify({\n data: ret,\n error: true,\n id,\n })))\n }\n }\n }\n }, { noAck: true })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { EventEmitter } from 'events'\nimport { randomUUID } from 'crypto'\nimport type amqplib from 'amqplib'\nimport type { ToControllerMap } from '../../types'\nexport async function createClient<S extends Record<string, any>>(ch: amqplib.Channel, queue: string, controllers: S): Promise<ToControllerMap<S>> {\n const ret = {} as any\n const emitter = new EventEmitter()\n const uniQueue = `PS:${randomUUID()}`\n\n await ch.assertQueue(uniQueue)\n ch.consume(uniQueue, (msg) => {\n if (!msg)\n return\n const { data, id, error } = JSON.parse(msg.content.toString())\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('mq'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support rabbitmq`)\n return (...args: any) => {\n ch.sendToQueue(queue, Buffer.from(\n JSON.stringify(\n {\n id,\n tag,\n args,\n queue: isEvent ? undefined : uniQueue,\n },\n ),\n ))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data: any, error: boolean) => {\n if (error)\n reject(data)\n\n else resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"],"mappings":"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","names":["bind","ch","queue","moduleMap","meta","opts","metaMap","Map","existQueue","Set","globalGuards","globalInterceptors","handleMeta","isAopDepInject","guards","interceptors","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","has","sendToQueue","Buffer","from","stringify","BadRequestException","error","get","context","Context","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","noAck","IS_DEV","globalThis","__PS_HMR__","push","EventEmitter","randomUUID","createClient","ch","queue","controllers","ret","emitter","EventEmitter","uniQueue","randomUUID","assertQueue","consume","msg","data","id","error","JSON","parse","content","toString","emit","i","Proxy","get","target","p","Error","tag","rpc","isEvent","includes","args","sendToQueue","Buffer","from","stringify","undefined","Promise","resolve","reject","once"]}
@@ -1,20 +1,17 @@
1
1
  import Redis from 'ioredis';
2
- import { M as Meta, F as Factory, T as ToControllerMap } from '../../core-72951cf9.js';
2
+ import { P, F as Factory, T as ToControllerMap } from '../../core-d080d872.js';
3
3
  import 'phecda-core';
4
4
 
5
5
  interface Options {
6
6
  globalGuards?: string[];
7
7
  globalInterceptors?: string[];
8
8
  }
9
- interface RedisCtx {
9
+ interface RedisCtx extends P.BaseContext {
10
10
  type: 'redis';
11
- meta?: Meta;
12
- moduleMap: Record<string, any>;
13
11
  redis: Redis;
14
12
  msg: string;
15
13
  channel: string;
16
14
  data: any;
17
- [key: string]: any;
18
15
  }
19
16
  declare function bind(redis: Redis, channel: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options): void;
20
17
 
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkJZGLQ4FQjs = require('../../chunk-JZGLQ4FQ.js');
5
+ var _chunk32E425F6js = require('../../chunk-32E425F6.js');
6
6
 
7
7
 
8
8
 
9
- var _chunkZZ2QKZ46js = require('../../chunk-ZZ2QKZ46.js');
9
+ var _chunkBDIQWWHNjs = require('../../chunk-BDIQWWHN.js');
10
10
 
11
11
  // src/rpc/redis/bind.ts
12
12
  var _ioredis = require('ioredis'); var _ioredis2 = _interopRequireDefault(_ioredis);
@@ -14,42 +14,44 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
14
14
  const metaMap = /* @__PURE__ */ new Map();
15
15
  const pub = new (0, _ioredis2.default)(redis.options);
16
16
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
17
- _chunkJZGLQ4FQjs.isAopDepInject.call(void 0, meta, {
18
- guards: globalGuards,
19
- interceptors: globalInterceptors
20
- });
21
17
  function handleMeta() {
18
+ _chunk32E425F6js.isAopDepInject.call(void 0, meta, {
19
+ guards: globalGuards,
20
+ interceptors: globalInterceptors
21
+ });
22
22
  for (const item of meta) {
23
23
  const { data: { rpc, method, name } } = item;
24
24
  if (_optionalChain([rpc, 'optionalAccess', _2 => _2.type]) && rpc.type.includes("mq"))
25
25
  metaMap.set(`${name}-${method}`, item);
26
26
  }
27
27
  }
28
- _chunkZZ2QKZ46js.__name.call(void 0, handleMeta, "handleMeta");
28
+ _chunkBDIQWWHNjs.__name.call(void 0, handleMeta, "handleMeta");
29
29
  handleMeta();
30
30
  redis.subscribe(channel);
31
31
  redis.on("message", async (channel2, msg) => {
32
32
  if (msg) {
33
33
  const data = JSON.parse(msg);
34
34
  const { tag, args, id, queue } = data;
35
- const context = new (0, _chunkJZGLQ4FQjs.Context)(tag, {
36
- type: "redis",
37
- moduleMap,
38
- redis,
39
- meta: metaMap.get(tag),
40
- msg,
41
- channel: channel2,
42
- data
43
- });
44
35
  if (!metaMap.has(tag)) {
45
36
  queue && pub.publish(queue, JSON.stringify({
46
- data: new (0, _chunkJZGLQ4FQjs.BadRequestException)(`service "${tag}" doesn't exist`).data,
37
+ data: new (0, _chunk32E425F6js.BadRequestException)(`service "${tag}" doesn't exist`).data,
47
38
  error: true,
48
39
  id
49
40
  }));
50
41
  return;
51
42
  }
52
- const { data: { guards, interceptors, params, name, method, filter }, paramsType } = metaMap.get(tag);
43
+ const meta2 = metaMap.get(tag);
44
+ const context = new (0, _chunk32E425F6js.Context)({
45
+ type: "redis",
46
+ moduleMap,
47
+ redis,
48
+ meta: meta2,
49
+ msg,
50
+ channel: channel2,
51
+ tag,
52
+ data
53
+ });
54
+ const { data: { guards, interceptors, params, name, method, filter }, paramsType } = meta2;
53
55
  try {
54
56
  await context.useGuard([
55
57
  ...globalGuards,
@@ -94,13 +96,13 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
94
96
  }
95
97
  }
96
98
  });
97
- if (_chunkZZ2QKZ46js.IS_DEV) {
99
+ if (_chunkBDIQWWHNjs.IS_DEV) {
98
100
  _optionalChain([globalThis, 'access', _3 => _3.__PS_HMR__, 'optionalAccess', _4 => _4.push, 'call', _5 => _5(async () => {
99
101
  handleMeta();
100
102
  })]);
101
103
  }
102
104
  }
103
- _chunkZZ2QKZ46js.__name.call(void 0, bind, "bind");
105
+ _chunkBDIQWWHNjs.__name.call(void 0, bind, "bind");
104
106
 
105
107
  // src/rpc/redis/client.ts
106
108
  var _crypto = require('crypto');
@@ -148,7 +150,7 @@ function createClient(redis, queue, controllers) {
148
150
  }
149
151
  return ret;
150
152
  }
151
- _chunkZZ2QKZ46js.__name.call(void 0, createClient, "createClient");
153
+ _chunkBDIQWWHNjs.__name.call(void 0, createClient, "createClient");
152
154
 
153
155
 
154
156
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/rpc/redis/bind.ts","../../../src/rpc/redis/client.ts"],"names":["Redis","bind","redis","channel","moduleMap","meta","opts","metaMap","Map","pub","options","globalGuards","globalInterceptors","isAopDepInject","guards","interceptors","handleMeta","item","data","rpc","method","name","type","includes","set","subscribe","on","msg","JSON","parse","tag","args","id","queue","context","Context","get","has","publish","stringify","BadRequestException","error","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","res","usePostInterceptor","e","ret","useFilter","IS_DEV","globalThis","__PS_HMR__","push","randomUUID","EventEmitter","createClient","controllers","sub","uniQueue","emitter","_","emit","Proxy","target","p","Error","isEvent","Promise","resolve","reject","once"],"mappings":"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","sourcesContent":["import Redis from 'ioredis'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n\n}\n\nexport interface RedisCtx {\n type: 'redis'\n meta?: Meta\n moduleMap: Record<string, any>\n redis: Redis\n msg: string\n channel: string\n // JSON parse msg\n data: any\n [key: string]: any\n}\n\nexport function bind(redis: Redis, channel: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const pub = new Redis(redis.options)\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n function handleMeta() {\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n redis.subscribe(channel)\n\n redis.on('message', async (channel, msg) => {\n if (msg) {\n const data = JSON.parse(msg)\n const { tag, args, id, queue } = data\n const context = new Context(tag, {\n type: 'redis',\n moduleMap,\n redis,\n meta: metaMap.get(tag),\n msg,\n channel,\n data,\n })\n if (!metaMap.has(tag)) {\n queue && pub.publish(queue, JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n }))\n return\n }\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = metaMap.get(tag)!\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n pub.publish(queue, JSON.stringify({ data: cache, id }))\n\n return\n }\n\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const res = await context.usePostInterceptor(funcData)\n\n queue && pub.publish(queue, JSON.stringify({ data: res, id }))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n queue && pub.publish(queue, JSON.stringify({\n data: ret,\n error: true,\n id,\n }))\n }\n }\n })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { randomUUID } from 'crypto'\nimport EventEmitter from 'events'\nimport Redis from 'ioredis'\nimport type { ToControllerMap } from '../../types'\n\nexport function createClient<S extends Record<string, any>>(redis: Redis, queue: string, controllers: S): ToControllerMap<S> {\n const ret = {} as any\n const sub = new Redis(redis.options)\n const uniQueue = randomUUID()\n\n const emitter = new EventEmitter()\n sub.subscribe(uniQueue)\n\n sub.on('message', (_, msg) => {\n const { data, id, error } = JSON.parse(msg)\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n return (...args: any) => {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('redis'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support redis`)\n\n redis.publish(queue, JSON.stringify({\n args,\n id,\n tag,\n queue: isEvent ? undefined : uniQueue,\n\n }))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data, error) => {\n if (error)\n reject(data)\n\n else\n resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"]}
1
+ {"version":3,"sources":["../../../src/rpc/redis/bind.ts","../../../src/rpc/redis/client.ts"],"names":["Redis","bind","redis","channel","moduleMap","meta","opts","metaMap","Map","pub","options","globalGuards","globalInterceptors","handleMeta","isAopDepInject","guards","interceptors","item","data","rpc","method","name","type","includes","set","subscribe","on","msg","JSON","parse","tag","args","id","queue","has","publish","stringify","BadRequestException","error","get","context","Context","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","res","usePostInterceptor","e","ret","useFilter","IS_DEV","globalThis","__PS_HMR__","push","randomUUID","EventEmitter","createClient","controllers","sub","uniQueue","emitter","_","emit","Proxy","target","p","Error","isEvent","Promise","resolve","reject","once"],"mappings":"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","sourcesContent":["import Redis from 'ioredis'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\nimport { P } from '../../types'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RedisCtx extends P.BaseContext{\n type: 'redis'\n redis: Redis\n msg: string\n channel: string\n data: any\n\n}\n\n\nexport function bind(redis: Redis, channel: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const pub = new Redis(redis.options)\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n\n function handleMeta() {\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n redis.subscribe(channel)\n\n redis.on('message', async (channel, msg) => {\n if (msg) {\n const data = JSON.parse(msg)\n const { tag, args, id, queue } = data\n if (!metaMap.has(tag)) {\n queue && pub.publish(queue, JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n }))\n return\n }\n\n const meta= metaMap.get(tag)!\n const context = new Context( {\n type: 'redis',\n moduleMap,\n redis,\n meta,\n msg,\n channel,\n tag,\n data,\n })\n \n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = meta\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n pub.publish(queue, JSON.stringify({ data: cache, id }))\n\n return\n }\n\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const res = await context.usePostInterceptor(funcData)\n\n queue && pub.publish(queue, JSON.stringify({ data: res, id }))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n queue && pub.publish(queue, JSON.stringify({\n data: ret,\n error: true,\n id,\n }))\n }\n }\n })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { randomUUID } from 'crypto'\nimport EventEmitter from 'events'\nimport Redis from 'ioredis'\nimport type { ToControllerMap } from '../../types'\n\nexport function createClient<S extends Record<string, any>>(redis: Redis, queue: string, controllers: S): ToControllerMap<S> {\n const ret = {} as any\n const sub = new Redis(redis.options)\n const uniQueue = randomUUID()\n\n const emitter = new EventEmitter()\n sub.subscribe(uniQueue)\n\n sub.on('message', (_, msg) => {\n const { data, id, error } = JSON.parse(msg)\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n return (...args: any) => {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('redis'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support redis`)\n\n redis.publish(queue, JSON.stringify({\n args,\n id,\n tag,\n queue: isEvent ? undefined : uniQueue,\n\n }))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data, error) => {\n if (error)\n reject(data)\n\n else\n resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"]}
@@ -2,11 +2,11 @@ import {
2
2
  BadRequestException,
3
3
  Context,
4
4
  isAopDepInject
5
- } from "../../chunk-ATMZNJSE.mjs";
5
+ } from "../../chunk-Z6LSJTOF.mjs";
6
6
  import {
7
7
  IS_DEV,
8
8
  __name
9
- } from "../../chunk-DQUH5BP6.mjs";
9
+ } from "../../chunk-5KOB2WHH.mjs";
10
10
 
11
11
  // src/rpc/redis/bind.ts
12
12
  import Redis from "ioredis";
@@ -14,11 +14,11 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
14
14
  const metaMap = /* @__PURE__ */ new Map();
15
15
  const pub = new Redis(redis.options);
16
16
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
17
- isAopDepInject(meta, {
18
- guards: globalGuards,
19
- interceptors: globalInterceptors
20
- });
21
17
  function handleMeta() {
18
+ isAopDepInject(meta, {
19
+ guards: globalGuards,
20
+ interceptors: globalInterceptors
21
+ });
22
22
  for (const item of meta) {
23
23
  const { data: { rpc, method, name } } = item;
24
24
  if (rpc?.type && rpc.type.includes("mq"))
@@ -32,15 +32,6 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
32
32
  if (msg) {
33
33
  const data = JSON.parse(msg);
34
34
  const { tag, args, id, queue } = data;
35
- const context = new Context(tag, {
36
- type: "redis",
37
- moduleMap,
38
- redis,
39
- meta: metaMap.get(tag),
40
- msg,
41
- channel: channel2,
42
- data
43
- });
44
35
  if (!metaMap.has(tag)) {
45
36
  queue && pub.publish(queue, JSON.stringify({
46
37
  data: new BadRequestException(`service "${tag}" doesn't exist`).data,
@@ -49,7 +40,18 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
49
40
  }));
50
41
  return;
51
42
  }
52
- const { data: { guards, interceptors, params, name, method, filter }, paramsType } = metaMap.get(tag);
43
+ const meta2 = metaMap.get(tag);
44
+ const context = new Context({
45
+ type: "redis",
46
+ moduleMap,
47
+ redis,
48
+ meta: meta2,
49
+ msg,
50
+ channel: channel2,
51
+ tag,
52
+ data
53
+ });
54
+ const { data: { guards, interceptors, params, name, method, filter }, paramsType } = meta2;
53
55
  try {
54
56
  await context.useGuard([
55
57
  ...globalGuards,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/rpc/redis/bind.ts","../../../src/rpc/redis/client.ts"],"sourcesContent":["import Redis from 'ioredis'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n\n}\n\nexport interface RedisCtx {\n type: 'redis'\n meta?: Meta\n moduleMap: Record<string, any>\n redis: Redis\n msg: string\n channel: string\n // JSON parse msg\n data: any\n [key: string]: any\n}\n\nexport function bind(redis: Redis, channel: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const pub = new Redis(redis.options)\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n function handleMeta() {\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n redis.subscribe(channel)\n\n redis.on('message', async (channel, msg) => {\n if (msg) {\n const data = JSON.parse(msg)\n const { tag, args, id, queue } = data\n const context = new Context(tag, {\n type: 'redis',\n moduleMap,\n redis,\n meta: metaMap.get(tag),\n msg,\n channel,\n data,\n })\n if (!metaMap.has(tag)) {\n queue && pub.publish(queue, JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n }))\n return\n }\n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = metaMap.get(tag)!\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n pub.publish(queue, JSON.stringify({ data: cache, id }))\n\n return\n }\n\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const res = await context.usePostInterceptor(funcData)\n\n queue && pub.publish(queue, JSON.stringify({ data: res, id }))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n queue && pub.publish(queue, JSON.stringify({\n data: ret,\n error: true,\n id,\n }))\n }\n }\n })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { randomUUID } from 'crypto'\nimport EventEmitter from 'events'\nimport Redis from 'ioredis'\nimport type { ToControllerMap } from '../../types'\n\nexport function createClient<S extends Record<string, any>>(redis: Redis, queue: string, controllers: S): ToControllerMap<S> {\n const ret = {} as any\n const sub = new Redis(redis.options)\n const uniQueue = randomUUID()\n\n const emitter = new EventEmitter()\n sub.subscribe(uniQueue)\n\n sub.on('message', (_, msg) => {\n const { data, id, error } = JSON.parse(msg)\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n return (...args: any) => {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('redis'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support redis`)\n\n redis.publish(queue, JSON.stringify({\n args,\n id,\n tag,\n queue: isEvent ? undefined : uniQueue,\n\n }))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data, error) => {\n if (error)\n reject(data)\n\n else\n resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"],"mappings":"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","names":["Redis","bind","redis","channel","moduleMap","meta","opts","metaMap","Map","pub","Redis","options","globalGuards","globalInterceptors","isAopDepInject","guards","interceptors","handleMeta","item","data","rpc","method","name","type","includes","set","subscribe","on","msg","JSON","parse","tag","args","id","queue","context","Context","get","has","publish","stringify","BadRequestException","error","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","res","usePostInterceptor","e","ret","useFilter","IS_DEV","globalThis","__PS_HMR__","push","randomUUID","EventEmitter","Redis","createClient","redis","queue","controllers","ret","sub","Redis","options","uniQueue","randomUUID","emitter","EventEmitter","subscribe","on","_","msg","data","id","error","JSON","parse","emit","i","Proxy","get","target","p","args","Error","tag","rpc","isEvent","includes","publish","stringify","undefined","Promise","resolve","reject","once"]}
1
+ {"version":3,"sources":["../../../src/rpc/redis/bind.ts","../../../src/rpc/redis/client.ts"],"sourcesContent":["import Redis from 'ioredis'\nimport type { Factory } from '../../core'\nimport type { Meta } from '../../meta'\nimport { BadRequestException } from '../../exception'\nimport { Context, isAopDepInject } from '../../context'\nimport { IS_DEV } from '../../common'\nimport { P } from '../../types'\n\nexport interface Options {\n globalGuards?: string[]\n globalInterceptors?: string[]\n}\nexport interface RedisCtx extends P.BaseContext{\n type: 'redis'\n redis: Redis\n msg: string\n channel: string\n data: any\n\n}\n\n\nexport function bind(redis: Redis, channel: string, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: Options) {\n const metaMap = new Map<string, Meta>()\n\n const pub = new Redis(redis.options)\n const { globalGuards = [], globalInterceptors = [] } = opts || {}\n\n\n function handleMeta() {\n isAopDepInject(meta, {\n guards: globalGuards,\n interceptors: globalInterceptors,\n })\n\n for (const item of meta) {\n const { data: { rpc, method, name } } = item\n\n if (rpc?.type && rpc.type.includes('mq'))\n metaMap.set(`${name}-${method}`, item)\n }\n }\n\n handleMeta()\n\n redis.subscribe(channel)\n\n redis.on('message', async (channel, msg) => {\n if (msg) {\n const data = JSON.parse(msg)\n const { tag, args, id, queue } = data\n if (!metaMap.has(tag)) {\n queue && pub.publish(queue, JSON.stringify({\n data: new BadRequestException(`service \"${tag}\" doesn't exist`).data,\n error: true,\n id,\n }))\n return\n }\n\n const meta= metaMap.get(tag)!\n const context = new Context( {\n type: 'redis',\n moduleMap,\n redis,\n meta,\n msg,\n channel,\n tag,\n data,\n })\n \n const {\n data: {\n guards, interceptors, params, name, method, filter,\n },\n paramsType,\n } = meta\n try {\n await context.useGuard([...globalGuards, ...guards])\n const cache = await context.useInterceptor([...globalInterceptors, ...interceptors])\n if (cache !== undefined) {\n if (queue)\n pub.publish(queue, JSON.stringify({ data: cache, id }))\n\n return\n }\n\n const handleArgs = await context.usePipe(params.map(({ type, key, pipe, pipeOpts, index }, i) => {\n return { arg: args[i], pipe, pipeOpts, key, type, index, reflect: paramsType[index] }\n }))\n\n const funcData = await moduleMap.get(name)[method](...handleArgs)\n const res = await context.usePostInterceptor(funcData)\n\n queue && pub.publish(queue, JSON.stringify({ data: res, id }))\n }\n catch (e) {\n const ret = await context.useFilter(e, filter)\n queue && pub.publish(queue, JSON.stringify({\n data: ret,\n error: true,\n id,\n }))\n }\n }\n })\n\n if (IS_DEV) {\n globalThis.__PS_HMR__?.push(async () => {\n handleMeta()\n })\n }\n}\n","import { randomUUID } from 'crypto'\nimport EventEmitter from 'events'\nimport Redis from 'ioredis'\nimport type { ToControllerMap } from '../../types'\n\nexport function createClient<S extends Record<string, any>>(redis: Redis, queue: string, controllers: S): ToControllerMap<S> {\n const ret = {} as any\n const sub = new Redis(redis.options)\n const uniQueue = randomUUID()\n\n const emitter = new EventEmitter()\n sub.subscribe(uniQueue)\n\n sub.on('message', (_, msg) => {\n const { data, id, error } = JSON.parse(msg)\n emitter.emit(id, data, error)\n })\n\n for (const i in controllers) {\n ret[i] = new Proxy(new controllers[i](), {\n get(target, p: string) {\n return (...args: any) => {\n const id = randomUUID()\n if (typeof target[p] !== 'function')\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\n\n const { tag, rpc, isEvent } = target[p]()\n if (!rpc.includes('redis'))\n throw new Error(`\"${p}\" in \"${i}\" doesn't support redis`)\n\n redis.publish(queue, JSON.stringify({\n args,\n id,\n tag,\n queue: isEvent ? undefined : uniQueue,\n\n }))\n if (isEvent)\n return null\n\n return new Promise((resolve, reject) => {\n emitter.once(id, (data, error) => {\n if (error)\n reject(data)\n\n else\n resolve(data)\n })\n })\n }\n },\n })\n }\n\n return ret\n}\n"],"mappings":"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","names":["Redis","bind","redis","channel","moduleMap","meta","opts","metaMap","Map","pub","Redis","options","globalGuards","globalInterceptors","handleMeta","isAopDepInject","guards","interceptors","item","data","rpc","method","name","type","includes","set","subscribe","on","msg","JSON","parse","tag","args","id","queue","has","publish","stringify","BadRequestException","error","get","context","Context","params","filter","paramsType","useGuard","cache","useInterceptor","undefined","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","res","usePostInterceptor","e","ret","useFilter","IS_DEV","globalThis","__PS_HMR__","push","randomUUID","EventEmitter","Redis","createClient","redis","queue","controllers","ret","sub","Redis","options","uniQueue","randomUUID","emitter","EventEmitter","subscribe","on","_","msg","data","id","error","JSON","parse","emit","i","Proxy","get","target","p","args","Error","tag","rpc","isEvent","includes","publish","stringify","undefined","Promise","resolve","reject","once"]}
@@ -1,15 +1,12 @@
1
1
  import { Request, Response, Router } from 'express';
2
- import { M as Meta, F as Factory } from '../../core-72951cf9.js';
2
+ import { P, F as Factory } from '../../core-d080d872.js';
3
3
  import 'phecda-core';
4
4
 
5
- interface ExpressCtx {
5
+ interface ExpressCtx extends P.BaseContext {
6
6
  type: 'express';
7
7
  request: Request;
8
8
  response: Response;
9
- meta: Meta;
10
- moduleMap: Record<string, any>;
11
9
  parallel: boolean;
12
- [key: string]: any;
13
10
  }
14
11
  interface Options {
15
12
  route?: string;