phecda-server 4.0.0 → 4.0.2

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 (66) hide show
  1. package/dist/{chunk-FPN7NODB.mjs → chunk-AJ2HYENF.mjs} +13 -5
  2. package/dist/chunk-AJ2HYENF.mjs.map +1 -0
  3. package/dist/{chunk-UEH6FW5I.js → chunk-D3VS53JQ.js} +26 -23
  4. package/dist/chunk-D3VS53JQ.js.map +1 -0
  5. package/dist/{chunk-JGSJIKGN.js → chunk-FAHHXHL5.js} +3 -3
  6. package/dist/{chunk-HY6T4ZWQ.mjs → chunk-JQPX546Z.mjs} +2 -2
  7. package/dist/{chunk-62QDU5FJ.js → chunk-LZAU5FUS.js} +14 -6
  8. package/dist/chunk-LZAU5FUS.js.map +1 -0
  9. package/dist/{chunk-3PXRNECS.mjs → chunk-Q6T7HNEO.mjs} +69 -20
  10. package/dist/chunk-Q6T7HNEO.mjs.map +1 -0
  11. package/dist/{chunk-MFGAP3PV.mjs → chunk-WRMLZ7NU.mjs} +8 -5
  12. package/dist/{chunk-MFGAP3PV.mjs.map → chunk-WRMLZ7NU.mjs.map} +1 -1
  13. package/dist/{chunk-BP7CKHPK.js → chunk-YU7ROHTO.js} +96 -47
  14. package/dist/chunk-YU7ROHTO.js.map +1 -0
  15. package/dist/index.d.ts +30 -17
  16. package/dist/index.js +84 -47
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.mjs +55 -18
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/rpc/rabbitmq/index.js +12 -9
  21. package/dist/rpc/rabbitmq/index.js.map +1 -1
  22. package/dist/rpc/rabbitmq/index.mjs +9 -6
  23. package/dist/rpc/rabbitmq/index.mjs.map +1 -1
  24. package/dist/rpc/redis/index.js +12 -9
  25. package/dist/rpc/redis/index.js.map +1 -1
  26. package/dist/rpc/redis/index.mjs +9 -6
  27. package/dist/rpc/redis/index.mjs.map +1 -1
  28. package/dist/server/express/index.js +27 -23
  29. package/dist/server/express/index.js.map +1 -1
  30. package/dist/server/express/index.mjs +11 -7
  31. package/dist/server/express/index.mjs.map +1 -1
  32. package/dist/server/fastify/index.js +24 -20
  33. package/dist/server/fastify/index.js.map +1 -1
  34. package/dist/server/fastify/index.mjs +11 -7
  35. package/dist/server/fastify/index.mjs.map +1 -1
  36. package/dist/server/h3/index.js +27 -23
  37. package/dist/server/h3/index.js.map +1 -1
  38. package/dist/server/h3/index.mjs +11 -7
  39. package/dist/server/h3/index.mjs.map +1 -1
  40. package/dist/server/koa/index.d.ts +22 -0
  41. package/dist/server/koa/index.js +193 -0
  42. package/dist/server/koa/index.js.map +1 -0
  43. package/dist/server/koa/index.mjs +193 -0
  44. package/dist/server/koa/index.mjs.map +1 -0
  45. package/dist/test.js +7 -9
  46. package/dist/test.js.map +1 -1
  47. package/dist/test.mjs +4 -6
  48. package/dist/test.mjs.map +1 -1
  49. package/package.json +10 -2
  50. package/register/index.mjs +1 -1
  51. package/register/loader.mjs +0 -1
  52. package/dist/chunk-3PXRNECS.mjs.map +0 -1
  53. package/dist/chunk-62QDU5FJ.js.map +0 -1
  54. package/dist/chunk-BP7CKHPK.js.map +0 -1
  55. package/dist/chunk-FPN7NODB.mjs.map +0 -1
  56. package/dist/chunk-IIGNGFDC.js +0 -47
  57. package/dist/chunk-IIGNGFDC.js.map +0 -1
  58. package/dist/chunk-Q4FA4TAV.mjs +0 -47
  59. package/dist/chunk-Q4FA4TAV.mjs.map +0 -1
  60. package/dist/chunk-UEH6FW5I.js.map +0 -1
  61. package/dist/supertest-G6LTYS5C.js +0 -21969
  62. package/dist/supertest-G6LTYS5C.js.map +0 -1
  63. package/dist/supertest-NLMK5OIC.mjs +0 -21969
  64. package/dist/supertest-NLMK5OIC.mjs.map +0 -1
  65. /package/dist/{chunk-JGSJIKGN.js.map → chunk-FAHHXHL5.js.map} +0 -0
  66. /package/dist/{chunk-HY6T4ZWQ.mjs.map → chunk-JQPX546Z.mjs.map} +0 -0
@@ -1,19 +1,22 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunkBP7CKHPKjs = require('../../chunk-BP7CKHPK.js');
5
4
 
5
+ var _chunkYU7ROHTOjs = require('../../chunk-YU7ROHTO.js');
6
6
 
7
- var _chunk62QDU5FJjs = require('../../chunk-62QDU5FJ.js');
8
7
 
9
8
 
10
- var _chunkIIGNGFDCjs = require('../../chunk-IIGNGFDC.js');
9
+ var _chunkLZAU5FUSjs = require('../../chunk-LZAU5FUS.js');
11
10
 
12
11
  // src/rpc/rabbitmq/bind.ts
13
12
  async function bind(ch, queue, { moduleMap, meta }, opts) {
14
13
  const metaMap = /* @__PURE__ */ new Map();
15
14
  const existQueue = /* @__PURE__ */ new Set();
16
15
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
16
+ _chunkYU7ROHTOjs.isAopDepInject.call(void 0, meta, {
17
+ guards: globalGuards,
18
+ interceptors: globalInterceptors
19
+ });
17
20
  function handleMeta() {
18
21
  for (const item of meta) {
19
22
  const { data: { rpc, method, name } } = item;
@@ -21,14 +24,14 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
21
24
  metaMap.set(`${name}-${method}`, item);
22
25
  }
23
26
  }
24
- _chunkIIGNGFDCjs.__name.call(void 0, handleMeta, "handleMeta");
27
+ _chunkLZAU5FUSjs.__name.call(void 0, handleMeta, "handleMeta");
25
28
  handleMeta();
26
29
  await ch.assertQueue(queue);
27
30
  ch.consume(queue, async (msg) => {
28
31
  if (msg) {
29
32
  const data = JSON.parse(msg.content.toString());
30
33
  const { tag, args, queue: queue2, id } = data;
31
- const context = new (0, _chunkBP7CKHPKjs.Context)(tag, {
34
+ const context = new (0, _chunkYU7ROHTOjs.Context)(tag, {
32
35
  type: "rabbitmq",
33
36
  moduleMap,
34
37
  meta: metaMap.get(tag),
@@ -40,7 +43,7 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
40
43
  await ch.assertQueue(queue2);
41
44
  try {
42
45
  if (!metaMap.has(tag))
43
- throw new (0, _chunkBP7CKHPKjs.BadRequestException)(`service "${tag}" doesn't exist`);
46
+ throw new (0, _chunkYU7ROHTOjs.BadRequestException)(`service "${tag}" doesn't exist`);
44
47
  const { data: { guards, interceptors, params, name, method }, paramsType } = metaMap.get(tag);
45
48
  await context.useGuard([
46
49
  ...globalGuards,
@@ -90,7 +93,7 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
90
93
  }, {
91
94
  noAck: true
92
95
  });
93
- if (_chunk62QDU5FJjs.IS_DEV) {
96
+ if (_chunkLZAU5FUSjs.IS_DEV) {
94
97
  const rawMetaHmr = globalThis.__PS_WRITEMETA__;
95
98
  globalThis.__PS_WRITEMETA__ = () => {
96
99
  handleMeta();
@@ -98,7 +101,7 @@ async function bind(ch, queue, { moduleMap, meta }, opts) {
98
101
  };
99
102
  }
100
103
  }
101
- _chunkIIGNGFDCjs.__name.call(void 0, bind, "bind");
104
+ _chunkLZAU5FUSjs.__name.call(void 0, bind, "bind");
102
105
 
103
106
  // src/rpc/rabbitmq/client.ts
104
107
  var _events = require('events');
@@ -146,7 +149,7 @@ async function createClient(ch, queue, controllers) {
146
149
  }
147
150
  return ret;
148
151
  }
149
- _chunkIIGNGFDCjs.__name.call(void 0, createClient, "createClient");
152
+ _chunkLZAU5FUSjs.__name.call(void 0, createClient, "createClient");
150
153
 
151
154
 
152
155
 
@@ -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","handleMeta","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","context","Context","get","has","BadRequestException","guards","interceptors","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 } 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 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","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,19 +1,22 @@
1
1
  import {
2
2
  BadRequestException,
3
- Context
4
- } from "../../chunk-3PXRNECS.mjs";
5
- import {
6
- IS_DEV
7
- } from "../../chunk-FPN7NODB.mjs";
3
+ Context,
4
+ isAopDepInject
5
+ } from "../../chunk-Q6T7HNEO.mjs";
8
6
  import {
7
+ IS_DEV,
9
8
  __name
10
- } from "../../chunk-Q4FA4TAV.mjs";
9
+ } from "../../chunk-AJ2HYENF.mjs";
11
10
 
12
11
  // src/rpc/rabbitmq/bind.ts
13
12
  async function bind(ch, queue, { moduleMap, meta }, opts) {
14
13
  const metaMap = /* @__PURE__ */ new Map();
15
14
  const existQueue = /* @__PURE__ */ new Set();
16
15
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
16
+ isAopDepInject(meta, {
17
+ guards: globalGuards,
18
+ interceptors: globalInterceptors
19
+ });
17
20
  function handleMeta() {
18
21
  for (const item of meta) {
19
22
  const { data: { rpc, method, name } } = item;
@@ -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 } 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 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;AAChE,WAASO,aAAa;AACpB,eAAWC,QAAQT,MAAM;AACvB,YAAM,EAAEU,MAAM,EAAEC,KAAKC,QAAQC,KAAI,EAAE,IAAKJ;AAExC,UAAIE,KAAKG,QAAQH,IAAIG,KAAKC,SAAS,IAAA;AACjCb,gBAAQc,IAAI,GAAGH,QAAQD,UAAUH,IAAAA;IACrC;EACF;AAPSD;AASTA,aAAAA;AAEA,QAAMX,GAAGoB,YAAYnB,KAAAA;AAErBD,KAAGqB,QAAQpB,OAAO,OAAOqB,QAAQ;AAC/B,QAAIA,KAAK;AACP,YAAMT,OAAOU,KAAKC,MAAMF,IAAIG,QAAQC,SAAQ,CAAA;AAC5C,YAAM,EAAEC,KAAKC,MAAM3B,OAAAA,QAAO4B,GAAE,IAAKhB;AACjC,YAAMiB,UAAU,IAAIC,QAAQJ,KAAK;QAC/BV,MAAM;QACNf;QACAC,MAAME,QAAQ2B,IAAIL,GAAAA;QAClBd;QACAb;QACAsB;MACF,CAAA;AACA,UAAI,CAACf,WAAW0B,IAAIhC,MAAAA;AAClB,cAAMD,GAAGoB,YAAYnB,MAAAA;AAEvB,UAAI;AACF,YAAI,CAACI,QAAQ4B,IAAIN,GAAAA;AACf,gBAAM,IAAIO,oBAAoB,YAAYP,oBAAoB;AAEhE,cAAM,EACJd,MAAM,EACJsB,QAAQC,cAAcC,QAAQrB,MAAMD,OAAM,GAE5CuB,WAAU,IACRjC,QAAQ2B,IAAIL,GAAAA;AAEhB,cAAMG,QAAQS,SAAS;aAAI9B;aAAiB0B;SAAO;AACnD,cAAMK,QAAQ,MAAMV,QAAQW,eAAe;aAAI/B;aAAuB0B;SAAa;AACnF,YAAII,UAAUE,QAAW;AACvB,cAAIzC;AACFD,eAAG2C,YAAY1C,QAAO2C,OAAOC,KAAKtB,KAAKuB,UAAU;cAAEjC,MAAM2B;cAAOX;YAAG,CAAA,CAAA,CAAA;AAErE;QACF;AACA,cAAMkB,aAAa,MAAMjB,QAAQkB,QAAQX,OAAOY,IAAI,CAAC,EAAEhC,MAAMiC,KAAKC,MAAMC,UAAUC,MAAK,GAAIC,MAAM;AAC/F,iBAAO;YAAEC,KAAK3B,KAAK0B;YAAIH;YAAMC;YAAUF;YAAKjC;YAAMoC;YAAOG,SAASlB,WAAWe;UAAO;QACtF,CAAA,CAAA;AAEA,cAAMI,WAAW,MAAMvD,UAAU8B,IAAIhB,IAAAA,EAAMD,QAAO,GAAIgC,UAAAA;AACtD,cAAMW,MAAM,MAAM5B,QAAQ6B,mBAAmBF,QAAAA;AAC7C,YAAIxD;AACFD,aAAG2C,YAAY1C,QAAO2C,OAAOC,KAAKtB,KAAKuB,UAAU;YAAEjC,MAAM6C;YAAK7B;UAAG,CAAA,CAAA,CAAA;MACrE,SACO+B,GAAP;AACE,cAAMF,MAAM,MAAM5B,QAAQ+B,UAAUD,CAAAA;AACpC,YAAI3D,QAAO;AACTD,aAAG2C,YAAY1C,QAAO2C,OAAOC,KAAKtB,KAAKuB,UAAU;YAC/CjC,MAAM6C;YACNI,OAAOJ,IAAII;YACXjC;UACF,CAAA,CAAA,CAAA;QACF;MACF;IACF;EACF,GAAG;IAAEkC,OAAO;EAAK,CAAA;AAEjB,MAAIC,QAAQ;AAEV,UAAMC,aAAaC,WAAWC;AAG9BD,eAAWC,mBAAmB,MAAM;AAClCxD,iBAAAA;AACAsD,mBAAAA;IACF;EACF;AACF;AApFsBlE;;;ACvBtB,SAASqE,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","handleMeta","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","context","Context","get","has","BadRequestException","guards","interceptors","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 // @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,13 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunkBP7CKHPKjs = require('../../chunk-BP7CKHPK.js');
5
4
 
5
+ var _chunkYU7ROHTOjs = require('../../chunk-YU7ROHTO.js');
6
6
 
7
- var _chunk62QDU5FJjs = require('../../chunk-62QDU5FJ.js');
8
7
 
9
8
 
10
- var _chunkIIGNGFDCjs = require('../../chunk-IIGNGFDC.js');
9
+ var _chunkLZAU5FUSjs = require('../../chunk-LZAU5FUS.js');
11
10
 
12
11
  // src/rpc/redis/bind.ts
13
12
  var _ioredis = require('ioredis'); var _ioredis2 = _interopRequireDefault(_ioredis);
@@ -15,6 +14,10 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
15
14
  const metaMap = /* @__PURE__ */ new Map();
16
15
  const pub = new (0, _ioredis2.default)(redis.options);
17
16
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
17
+ _chunkYU7ROHTOjs.isAopDepInject.call(void 0, meta, {
18
+ guards: globalGuards,
19
+ interceptors: globalInterceptors
20
+ });
18
21
  function handleMeta() {
19
22
  for (const item of meta) {
20
23
  const { data: { rpc, method, name } } = item;
@@ -22,14 +25,14 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
22
25
  metaMap.set(`${name}-${method}`, item);
23
26
  }
24
27
  }
25
- _chunkIIGNGFDCjs.__name.call(void 0, handleMeta, "handleMeta");
28
+ _chunkLZAU5FUSjs.__name.call(void 0, handleMeta, "handleMeta");
26
29
  handleMeta();
27
30
  redis.subscribe(channel);
28
31
  redis.on("message", async (channel2, msg) => {
29
32
  if (msg) {
30
33
  const data = JSON.parse(msg);
31
34
  const { tag, args, id, queue } = data;
32
- const context = new (0, _chunkBP7CKHPKjs.Context)(tag, {
35
+ const context = new (0, _chunkYU7ROHTOjs.Context)(tag, {
33
36
  type: "redis",
34
37
  moduleMap,
35
38
  redis,
@@ -40,7 +43,7 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
40
43
  });
41
44
  try {
42
45
  if (!metaMap.has(tag))
43
- throw new (0, _chunkBP7CKHPKjs.BadRequestException)(`service "${tag}" doesn't exist`);
46
+ throw new (0, _chunkYU7ROHTOjs.BadRequestException)(`service "${tag}" doesn't exist`);
44
47
  const { data: { guards, interceptors, params, name, method }, paramsType } = metaMap.get(tag);
45
48
  await context.useGuard([
46
49
  ...globalGuards,
@@ -85,7 +88,7 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
85
88
  }
86
89
  }
87
90
  });
88
- if (_chunk62QDU5FJjs.IS_DEV) {
91
+ if (_chunkLZAU5FUSjs.IS_DEV) {
89
92
  const rawMetaHmr = globalThis.__PS_WRITEMETA__;
90
93
  globalThis.__PS_WRITEMETA__ = () => {
91
94
  handleMeta();
@@ -93,7 +96,7 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
93
96
  };
94
97
  }
95
98
  }
96
- _chunkIIGNGFDCjs.__name.call(void 0, bind, "bind");
99
+ _chunkLZAU5FUSjs.__name.call(void 0, bind, "bind");
97
100
 
98
101
  // src/rpc/redis/client.ts
99
102
  var _crypto = require('crypto');
@@ -141,7 +144,7 @@ function createClient(redis, queue, controllers) {
141
144
  }
142
145
  return ret;
143
146
  }
144
- _chunkIIGNGFDCjs.__name.call(void 0, createClient, "createClient");
147
+ _chunkLZAU5FUSjs.__name.call(void 0, createClient, "createClient");
145
148
 
146
149
 
147
150
 
@@ -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","handleMeta","item","data","rpc","method","name","type","includes","set","subscribe","on","msg","JSON","parse","tag","args","id","queue","context","Context","get","has","BadRequestException","guards","interceptors","params","paramsType","useGuard","cache","useInterceptor","undefined","publish","stringify","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","res","usePostInterceptor","e","ret","useFilter","error","IS_DEV","rawMetaHmr","globalThis","__PS_WRITEMETA__","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 } 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 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\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 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)\n queue && pub.publish(queue, JSON.stringify({\n data: ret,\n error: ret.error,\n id,\n }))\n }\n }\n })\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 { randomUUID } from 'crypto'\nimport EventEmitter from 'events'\nimport Redis from 'ioredis'\nimport type { ToInstance } from '../../types'\n\nexport function createClient<S extends Record<string, any>>(redis: Redis, queue: string, controllers: S): ToInstance<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","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","BadRequestException","params","paramsType","useGuard","cache","useInterceptor","undefined","publish","stringify","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","res","usePostInterceptor","e","ret","useFilter","error","IS_DEV","rawMetaHmr","globalThis","__PS_WRITEMETA__","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\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 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)\n queue && pub.publish(queue, JSON.stringify({\n data: ret,\n error: ret.error,\n id,\n }))\n }\n }\n })\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 { randomUUID } from 'crypto'\nimport EventEmitter from 'events'\nimport Redis from 'ioredis'\nimport type { ToInstance } from '../../types'\n\nexport function createClient<S extends Record<string, any>>(redis: Redis, queue: string, controllers: S): ToInstance<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,13 +1,12 @@
1
1
  import {
2
2
  BadRequestException,
3
- Context
4
- } from "../../chunk-3PXRNECS.mjs";
5
- import {
6
- IS_DEV
7
- } from "../../chunk-FPN7NODB.mjs";
3
+ Context,
4
+ isAopDepInject
5
+ } from "../../chunk-Q6T7HNEO.mjs";
8
6
  import {
7
+ IS_DEV,
9
8
  __name
10
- } from "../../chunk-Q4FA4TAV.mjs";
9
+ } from "../../chunk-AJ2HYENF.mjs";
11
10
 
12
11
  // src/rpc/redis/bind.ts
13
12
  import Redis from "ioredis";
@@ -15,6 +14,10 @@ function bind(redis, channel, { moduleMap, meta }, opts) {
15
14
  const metaMap = /* @__PURE__ */ new Map();
16
15
  const pub = new Redis(redis.options);
17
16
  const { globalGuards = [], globalInterceptors = [] } = opts || {};
17
+ isAopDepInject(meta, {
18
+ guards: globalGuards,
19
+ interceptors: globalInterceptors
20
+ });
18
21
  function handleMeta() {
19
22
  for (const item of meta) {
20
23
  const { data: { rpc, method, name } } = item;
@@ -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 } 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 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\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 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)\n queue && pub.publish(queue, JSON.stringify({\n data: ret,\n error: ret.error,\n id,\n }))\n }\n }\n })\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 { randomUUID } from 'crypto'\nimport EventEmitter from 'events'\nimport Redis from 'ioredis'\nimport type { ToInstance } from '../../types'\n\nexport function createClient<S extends Record<string, any>>(redis: Redis, queue: string, controllers: S): ToInstance<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","item","data","rpc","method","name","type","includes","set","subscribe","on","msg","JSON","parse","tag","args","id","queue","context","Context","get","has","BadRequestException","guards","interceptors","params","paramsType","useGuard","cache","useInterceptor","undefined","publish","stringify","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","res","usePostInterceptor","e","ret","useFilter","error","IS_DEV","rawMetaHmr","globalThis","__PS_WRITEMETA__","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'\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\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 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)\n queue && pub.publish(queue, JSON.stringify({\n data: ret,\n error: ret.error,\n id,\n }))\n }\n }\n })\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 { randomUUID } from 'crypto'\nimport EventEmitter from 'events'\nimport Redis from 'ioredis'\nimport type { ToInstance } from '../../types'\n\nexport function createClient<S extends Record<string, any>>(redis: Redis, queue: string, controllers: S): ToInstance<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","BadRequestException","params","paramsType","useGuard","cache","useInterceptor","undefined","publish","stringify","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","res","usePostInterceptor","e","ret","useFilter","error","IS_DEV","rawMetaHmr","globalThis","__PS_WRITEMETA__","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,20 +1,19 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkJGSJIKGNjs = require('../../chunk-JGSJIKGN.js');
3
+ var _chunkFAHHXHL5js = require('../../chunk-FAHHXHL5.js');
4
4
 
5
5
 
6
6
 
7
- var _chunkBP7CKHPKjs = require('../../chunk-BP7CKHPK.js');
8
7
 
8
+ var _chunkYU7ROHTOjs = require('../../chunk-YU7ROHTO.js');
9
9
 
10
10
 
11
11
 
12
12
 
13
13
 
14
- var _chunk62QDU5FJjs = require('../../chunk-62QDU5FJ.js');
15
14
 
16
15
 
17
- var _chunkIIGNGFDCjs = require('../../chunk-IIGNGFDC.js');
16
+ var _chunkLZAU5FUSjs = require('../../chunk-LZAU5FUS.js');
18
17
 
19
18
  // src/server/express/bind.ts
20
19
  function bindApp(app, { moduleMap, meta }, options = {}) {
@@ -25,7 +24,12 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
25
24
  plugins: [],
26
25
  ...options
27
26
  };
28
- app[_chunk62QDU5FJjs.APP_SYMBOL] = {
27
+ _chunkYU7ROHTOjs.isAopDepInject.call(void 0, meta, {
28
+ plugins,
29
+ guards: globalGuards,
30
+ interceptors: globalInterceptors
31
+ });
32
+ app[_chunkLZAU5FUSjs.APP_SYMBOL] = {
29
33
  moduleMap,
30
34
  meta
31
35
  };
@@ -40,29 +44,29 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
40
44
  metaMap.set(methodTag, item);
41
45
  }
42
46
  }
43
- _chunkIIGNGFDCjs.__name.call(void 0, handleMeta, "handleMeta");
47
+ _chunkLZAU5FUSjs.__name.call(void 0, handleMeta, "handleMeta");
44
48
  async function createRoute() {
45
49
  app.post(route, (req, _res, next) => {
46
- req[_chunk62QDU5FJjs.MERGE_SYMBOL] = true;
47
- req[_chunk62QDU5FJjs.MODULE_SYMBOL] = moduleMap;
48
- req[_chunk62QDU5FJjs.META_SYMBOL] = meta;
50
+ req[_chunkLZAU5FUSjs.MERGE_SYMBOL] = true;
51
+ req[_chunkLZAU5FUSjs.MODULE_SYMBOL] = moduleMap;
52
+ req[_chunkLZAU5FUSjs.META_SYMBOL] = meta;
49
53
  next();
50
- }, ..._chunkBP7CKHPKjs.Context.usePlugin(plugins), async (req, res) => {
54
+ }, ..._chunkYU7ROHTOjs.Context.usePlugin(plugins), async (req, res) => {
51
55
  const { body } = req;
52
56
  async function errorHandler(e) {
53
- const error = await _chunkBP7CKHPKjs.Context.filter(e);
57
+ const error = await _chunkYU7ROHTOjs.Context.filter(e);
54
58
  return res.status(error.status).json(error);
55
59
  }
56
- _chunkIIGNGFDCjs.__name.call(void 0, errorHandler, "errorHandler");
60
+ _chunkLZAU5FUSjs.__name.call(void 0, errorHandler, "errorHandler");
57
61
  if (!Array.isArray(body))
58
- return errorHandler(new (0, _chunkBP7CKHPKjs.BadRequestException)("data format should be an array"));
62
+ return errorHandler(new (0, _chunkYU7ROHTOjs.BadRequestException)("data format should be an array"));
59
63
  try {
60
64
  return Promise.all(body.map((item) => {
61
65
  return new Promise(async (resolve) => {
62
66
  const { tag } = item;
63
67
  const meta2 = metaMap.get(tag);
64
68
  if (!meta2)
65
- return resolve(await _chunkBP7CKHPKjs.Context.filter(new (0, _chunkBP7CKHPKjs.BadRequestException)(`"${tag}" doesn't exist`)));
69
+ return resolve(await _chunkYU7ROHTOjs.Context.filter(new (0, _chunkYU7ROHTOjs.BadRequestException)(`"${tag}" doesn't exist`)));
66
70
  const contextData = {
67
71
  type: "express",
68
72
  request: req,
@@ -70,7 +74,7 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
70
74
  response: res,
71
75
  moduleMap
72
76
  };
73
- const context = new (0, _chunkBP7CKHPKjs.Context)(tag, contextData);
77
+ const context = new (0, _chunkYU7ROHTOjs.Context)(tag, contextData);
74
78
  const [name, method] = tag.split("-");
75
79
  const { paramsType, handlers, data: { params, guards, interceptors } } = meta2;
76
80
  const instance = moduleMap.get(name);
@@ -118,10 +122,10 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
118
122
  const methodTag = `${tag}-${method}`;
119
123
  const { paramsType, handlers, data: { interceptors, guards, params, plugins: plugins2 } } = metaMap.get(methodTag);
120
124
  app[http.type](http.route, (req, _res, next) => {
121
- req[_chunk62QDU5FJjs.MODULE_SYMBOL] = moduleMap;
122
- req[_chunk62QDU5FJjs.META_SYMBOL] = meta;
125
+ req[_chunkLZAU5FUSjs.MODULE_SYMBOL] = moduleMap;
126
+ req[_chunkLZAU5FUSjs.META_SYMBOL] = meta;
123
127
  next();
124
- }, ..._chunkBP7CKHPKjs.Context.usePlugin(plugins2), async (req, res) => {
128
+ }, ..._chunkYU7ROHTOjs.Context.usePlugin(plugins2), async (req, res) => {
125
129
  const instance = moduleMap.get(tag);
126
130
  const contextData = {
127
131
  type: "express",
@@ -130,7 +134,7 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
130
134
  response: res,
131
135
  moduleMap
132
136
  };
133
- const context = new (0, _chunkBP7CKHPKjs.Context)(methodTag, contextData);
137
+ const context = new (0, _chunkYU7ROHTOjs.Context)(methodTag, contextData);
134
138
  try {
135
139
  for (const name in header)
136
140
  res.set(name, header[name]);
@@ -151,7 +155,7 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
151
155
  }
152
156
  const args = await context.usePipe(params.map(({ type, key, pipeOpts, index, pipe }) => {
153
157
  return {
154
- arg: _chunkJGSJIKGNjs.resolveDep.call(void 0, req[type], key),
158
+ arg: _chunkFAHHXHL5js.resolveDep.call(void 0, req[type], key),
155
159
  pipeOpts,
156
160
  pipe,
157
161
  key,
@@ -175,10 +179,10 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
175
179
  });
176
180
  }
177
181
  }
178
- _chunkIIGNGFDCjs.__name.call(void 0, createRoute, "createRoute");
182
+ _chunkLZAU5FUSjs.__name.call(void 0, createRoute, "createRoute");
179
183
  handleMeta();
180
184
  createRoute();
181
- if (_chunk62QDU5FJjs.IS_DEV) {
185
+ if (_chunkLZAU5FUSjs.IS_DEV) {
182
186
  const rawMetaHmr = globalThis.__PS_WRITEMETA__;
183
187
  globalThis.__PS_WRITEMETA__ = () => {
184
188
  app.stack = [];
@@ -188,7 +192,7 @@ function bindApp(app, { moduleMap, meta }, options = {}) {
188
192
  };
189
193
  }
190
194
  }
191
- _chunkIIGNGFDCjs.__name.call(void 0, bindApp, "bindApp");
195
+ _chunkLZAU5FUSjs.__name.call(void 0, bindApp, "bindApp");
192
196
 
193
197
 
194
198
  exports.bindApp = bindApp;