phecda-server 5.0.2 → 5.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.
- package/README.md +10 -108
- package/bin/cli.mjs +189 -186
- package/bin/schema.json +55 -55
- package/dist/{chunk-F5YWXY5W.js → chunk-423JPSEB.js} +18 -17
- package/dist/chunk-423JPSEB.js.map +1 -0
- package/dist/chunk-4R55T3HG.js +253 -0
- package/dist/chunk-4R55T3HG.js.map +1 -0
- package/dist/chunk-4YVAW3L4.mjs +76 -0
- package/dist/chunk-4YVAW3L4.mjs.map +1 -0
- package/dist/{chunk-W5EOVGQD.mjs → chunk-5DOVDDO7.mjs} +3 -2
- package/dist/chunk-5DOVDDO7.mjs.map +1 -0
- package/dist/{chunk-BXLBWRHS.js → chunk-5WQ2SMIK.js} +39 -38
- package/dist/chunk-5WQ2SMIK.js.map +1 -0
- package/dist/chunk-6MQP6OHU.mjs +295 -0
- package/dist/chunk-6MQP6OHU.mjs.map +1 -0
- package/dist/chunk-6Q2PCC3A.mjs +295 -0
- package/dist/chunk-6Q2PCC3A.mjs.map +1 -0
- package/dist/chunk-6UQYEBAN.js +253 -0
- package/dist/chunk-6UQYEBAN.js.map +1 -0
- package/dist/chunk-6W7CGOZC.mjs +565 -0
- package/dist/chunk-6W7CGOZC.mjs.map +1 -0
- package/dist/{chunk-YR5Q5F2K.js → chunk-7Y37NSBM.js} +1 -0
- package/dist/chunk-7Y37NSBM.js.map +1 -0
- package/dist/{chunk-RCTOVYZY.mjs → chunk-BQBSVGMG.mjs} +2 -1
- package/dist/chunk-BQBSVGMG.mjs.map +1 -0
- package/dist/chunk-BZP6GKM6.mjs +565 -0
- package/dist/chunk-BZP6GKM6.mjs.map +1 -0
- package/dist/{chunk-ITTD2GBR.mjs → chunk-C5JAHCS2.mjs} +1 -0
- package/dist/chunk-C5JAHCS2.mjs.map +1 -0
- package/dist/chunk-DTBKDALR.mjs +295 -0
- package/dist/chunk-DTBKDALR.mjs.map +1 -0
- package/dist/chunk-GHOKWS5V.js +295 -0
- package/dist/chunk-GHOKWS5V.js.map +1 -0
- package/dist/chunk-H4N6SHNG.mjs +76 -0
- package/dist/chunk-H4N6SHNG.mjs.map +1 -0
- package/dist/chunk-ICYHM4UM.js +565 -0
- package/dist/chunk-ICYHM4UM.js.map +1 -0
- package/dist/chunk-LOLXPM4J.mjs +529 -0
- package/dist/chunk-LOLXPM4J.mjs.map +1 -0
- package/dist/chunk-MSS6A2TU.js +585 -0
- package/dist/chunk-MSS6A2TU.js.map +1 -0
- package/dist/{chunk-AB4OX3WV.mjs → chunk-NEM3FY7C.mjs} +2 -1
- package/dist/chunk-NEM3FY7C.mjs.map +1 -0
- package/dist/chunk-OTHER3YM.mjs +253 -0
- package/dist/chunk-OTHER3YM.mjs.map +1 -0
- package/dist/chunk-Q2FYFIEY.js +295 -0
- package/dist/chunk-Q2FYFIEY.js.map +1 -0
- package/dist/chunk-QG4X6H5Y.js +565 -0
- package/dist/chunk-QG4X6H5Y.js.map +1 -0
- package/dist/chunk-QIEZ6YTG.mjs +295 -0
- package/dist/chunk-QIEZ6YTG.mjs.map +1 -0
- package/dist/chunk-QOAKHCM7.js +295 -0
- package/dist/chunk-QOAKHCM7.js.map +1 -0
- package/dist/chunk-QVUD6L5X.js +565 -0
- package/dist/chunk-QVUD6L5X.js.map +1 -0
- package/dist/{chunk-YERBWZCS.js → chunk-RGLTGKAU.js} +64 -63
- package/dist/chunk-RGLTGKAU.js.map +1 -0
- package/dist/chunk-SHRK3TVB.js +295 -0
- package/dist/chunk-SHRK3TVB.js.map +1 -0
- package/dist/chunk-TCH6S42Z.js +529 -0
- package/dist/chunk-TCH6S42Z.js.map +1 -0
- package/dist/chunk-UCGRFVHC.mjs +253 -0
- package/dist/chunk-UCGRFVHC.mjs.map +1 -0
- package/dist/chunk-VOISXWVF.mjs +295 -0
- package/dist/chunk-VOISXWVF.mjs.map +1 -0
- package/dist/chunk-W6BC5INO.mjs +295 -0
- package/dist/chunk-W6BC5INO.mjs.map +1 -0
- package/dist/chunk-X5WQRO4R.js +295 -0
- package/dist/chunk-X5WQRO4R.js.map +1 -0
- package/dist/chunk-XDMCVVD3.mjs +585 -0
- package/dist/chunk-XDMCVVD3.mjs.map +1 -0
- package/dist/chunk-XNTMYLK6.js +76 -0
- package/dist/chunk-XNTMYLK6.js.map +1 -0
- package/dist/chunk-Y6LI4FDO.js +537 -0
- package/dist/chunk-Y6LI4FDO.js.map +1 -0
- package/dist/chunk-YZ2AQ6IL.mjs +537 -0
- package/dist/chunk-YZ2AQ6IL.mjs.map +1 -0
- package/dist/chunk-Z4YJHEXT.js +76 -0
- package/dist/chunk-Z4YJHEXT.js.map +1 -0
- package/dist/chunk-ZE336SKZ.js +295 -0
- package/dist/chunk-ZE336SKZ.js.map +1 -0
- package/dist/chunk-ZJD235TO.mjs +565 -0
- package/dist/chunk-ZJD235TO.mjs.map +1 -0
- package/dist/core-39f27fe8.d.ts +131 -0
- package/dist/core-930ea883.d.ts +131 -0
- package/dist/core-eb646fe5.d.ts +139 -0
- package/dist/helper-06d25b37.d.ts +19 -0
- package/dist/helper-48454c0b.d.ts +20 -0
- package/dist/helper-6133f78f.d.ts +18 -0
- package/dist/helper-867a598d.d.ts +18 -0
- package/dist/helper-88b19c66.d.ts +12 -0
- package/dist/helper-9e206c66.d.ts +12 -0
- package/dist/helper-fcbf6aa8.d.ts +20 -0
- package/dist/index.d.ts +27 -32
- package/dist/index.js +45 -40
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +15 -10
- package/dist/index.mjs.map +1 -0
- package/dist/rpc/bullmq/index.d.ts +10 -6
- package/dist/rpc/bullmq/index.js +33 -53
- package/dist/rpc/bullmq/index.js.map +1 -0
- package/dist/rpc/bullmq/index.mjs +27 -47
- package/dist/rpc/bullmq/index.mjs.map +1 -0
- package/dist/rpc/kafka/index.d.ts +10 -4
- package/dist/rpc/kafka/index.js +21 -37
- package/dist/rpc/kafka/index.js.map +1 -0
- package/dist/rpc/kafka/index.mjs +16 -32
- package/dist/rpc/kafka/index.mjs.map +1 -0
- package/dist/rpc/nats/index.d.ts +2 -2
- package/dist/rpc/nats/index.js +21 -34
- package/dist/rpc/nats/index.js.map +1 -0
- package/dist/rpc/nats/index.mjs +14 -27
- package/dist/rpc/nats/index.mjs.map +1 -0
- package/dist/rpc/rabbitmq/index.d.ts +2 -2
- package/dist/rpc/rabbitmq/index.js +24 -37
- package/dist/rpc/rabbitmq/index.js.map +1 -0
- package/dist/rpc/rabbitmq/index.mjs +15 -28
- package/dist/rpc/rabbitmq/index.mjs.map +1 -0
- package/dist/rpc/redis/index.d.ts +10 -4
- package/dist/rpc/redis/index.js +24 -37
- package/dist/rpc/redis/index.js.map +1 -0
- package/dist/rpc/redis/index.mjs +17 -30
- package/dist/rpc/redis/index.mjs.map +1 -0
- package/dist/server/elysia/index.d.ts +4 -3
- package/dist/server/elysia/index.js +78 -94
- package/dist/server/elysia/index.js.map +1 -0
- package/dist/server/elysia/index.mjs +75 -91
- package/dist/server/elysia/index.mjs.map +1 -0
- package/dist/server/express/index.d.ts +5 -4
- package/dist/server/express/index.js +80 -93
- package/dist/server/express/index.js.map +1 -0
- package/dist/server/express/index.mjs +78 -91
- package/dist/server/express/index.mjs.map +1 -0
- package/dist/server/fastify/index.d.ts +8 -5
- package/dist/server/fastify/index.js +84 -102
- package/dist/server/fastify/index.js.map +1 -0
- package/dist/server/fastify/index.mjs +80 -98
- package/dist/server/fastify/index.mjs.map +1 -0
- package/dist/server/h3/index.d.ts +5 -4
- package/dist/server/h3/index.js +82 -97
- package/dist/server/h3/index.js.map +1 -0
- package/dist/server/h3/index.mjs +81 -96
- package/dist/server/h3/index.mjs.map +1 -0
- package/dist/server/hono/index.d.ts +5 -4
- package/dist/server/hono/index.js +74 -90
- package/dist/server/hono/index.js.map +1 -0
- package/dist/server/hono/index.mjs +73 -89
- package/dist/server/hono/index.mjs.map +1 -0
- package/dist/server/hyper-express/index.d.ts +6 -5
- package/dist/server/hyper-express/index.js +79 -96
- package/dist/server/hyper-express/index.js.map +1 -0
- package/dist/server/hyper-express/index.mjs +78 -95
- package/dist/server/hyper-express/index.mjs.map +1 -0
- package/dist/server/koa/index.d.ts +5 -4
- package/dist/server/koa/index.js +80 -92
- package/dist/server/koa/index.js.map +1 -0
- package/dist/server/koa/index.mjs +77 -89
- package/dist/server/koa/index.mjs.map +1 -0
- package/dist/test.d.ts +1 -1
- package/dist/test.js +7 -6
- package/dist/test.js.map +1 -0
- package/dist/test.mjs +3 -2
- package/dist/test.mjs.map +1 -0
- package/package.json +8 -7
- package/register/index.mjs +40 -40
- package/register/loader.mjs +341 -340
- package/register/utils.mjs +81 -81
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/rpc/bullmq/bind.ts","../../../src/rpc/bullmq/client.ts"],"names":["Queue","Worker","Debug","debug","create","moduleMap","meta","opts","globalGuards","globalInterceptors","globalFilter","globalPipe","workerOpts","queueOpts","workerMap","queueMap","existQueue","Set","metaMap","createControllerMetaMap","controller","rpc","func","tag","data","queue","undefined","detectAopDep","guards","interceptors","subscribeQueues","clear","record","get","has","add","handleRequest","job","args","id","clientQueue","_ps","isEvent","context","Context","type","queueName","run","returnData","err","error","HMR","i","close","EventEmitter","createClient","controllers","eventId","eventCount","max","timeout","key","ret","emitter","genClientQueue","emit","Proxy","target","p","Error","Promise","resolve","reject","isEnd","timer","setTimeout","off","listener","clearTimeout","once"],"mappings":"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","sourcesContent":["import type { Job, QueueOptions, WorkerOptions } from 'bullmq'\r\nimport { Queue, Worker } from 'bullmq'\r\nimport Debug from 'debug'\r\nimport type { Factory } from '../../core'\r\nimport { Context } from '../../context'\r\nimport type { RpcContext, RpcServerOptions } from '../helper'\r\nimport { HMR } from '../../hmr'\r\n\r\nimport { createControllerMetaMap, detectAopDep } from '../../helper'\r\n\r\nconst debug = Debug('phecda-server/bullmq')\r\n\r\nexport interface BullmqCtx extends RpcContext {\r\n type: 'bullmq'\r\n}\r\n\r\nexport interface BullmqOptions {\r\n workerOpts?: WorkerOptions\r\n queueOpts?: QueueOptions\r\n}\r\n\r\nexport async function create({ moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts: BullmqOptions & RpcServerOptions = {}) {\r\n const { globalGuards, globalInterceptors, globalFilter, globalPipe, workerOpts, queueOpts } = opts\r\n\r\n const workerMap: Record<string, Worker> = {}\r\n const queueMap: Record<string, Queue> = {}\r\n const existQueue = new Set<string>()\r\n const metaMap = createControllerMetaMap(meta, (meta) => {\r\n const { controller, rpc, func, tag } = meta.data\r\n if (controller === 'rpc' && rpc?.queue !== undefined) {\r\n debug(`register method \"${func}\" in module \"${tag}\"`)\r\n return true\r\n }\r\n })\r\n\r\n detectAopDep(meta, {\r\n guards: globalGuards,\r\n interceptors: globalInterceptors,\r\n }, 'rpc')\r\n\r\n async function subscribeQueues() {\r\n existQueue.clear()\r\n for (const [tag, record] of metaMap) {\r\n for (const func in record) {\r\n const meta = metaMap.get(tag)![func]\r\n\r\n const {\r\n data: {\r\n rpc,\r\n },\r\n } = meta\r\n\r\n if (rpc) {\r\n const queue = rpc.queue || tag\r\n if (existQueue.has(queue))\r\n continue\r\n existQueue.add(queue)\r\n workerMap[queue] = new Worker(queue, handleRequest, workerOpts)\r\n }\r\n }\r\n }\r\n }\r\n\r\n async function handleRequest(job: Job) {\r\n const { data } = job\r\n const { tag, func, args, id, queue: clientQueue, _ps } = data\r\n if (_ps !== 1)\r\n return\r\n debug(`invoke method \"${func}\" in module \"${tag}\"`)\r\n const meta = metaMap.get(tag)![func]\r\n\r\n const {\r\n data: {\r\n\r\n rpc: { isEvent } = {},\r\n },\r\n } = meta\r\n\r\n if (!isEvent && !(clientQueue in queueMap))\r\n queueMap[clientQueue] = new Queue(clientQueue, queueOpts)\r\n\r\n const context = new Context<BullmqCtx>({\r\n type: 'bullmq',\r\n moduleMap,\r\n meta,\r\n tag,\r\n func,\r\n data,\r\n args,\r\n id,\r\n queue: job.queueName,\r\n isEvent,\r\n })\r\n\r\n await context.run({ globalGuards, globalInterceptors, globalFilter, globalPipe }, (returnData) => {\r\n if (!isEvent)\r\n\r\n queueMap[clientQueue].add(`${tag}-${func}`, { data: returnData, id })\r\n }, (err) => {\r\n if (!isEvent) {\r\n queueMap[clientQueue].add(`${tag}-${func}`, {\r\n data: err,\r\n error: true,\r\n id,\r\n })\r\n }\r\n })\r\n }\r\n\r\n subscribeQueues()\r\n\r\n HMR(async () => {\r\n for (const i in workerMap)\r\n await workerMap[i].close(true)\r\n for (const i in queueMap)\r\n await queueMap[i].close()\r\n\r\n await subscribeQueues()\r\n })\r\n\r\n return { workerMap, queueMap }\r\n}\r\n","/* eslint-disable no-new */\r\n/* eslint-disable prefer-promise-reject-errors */\r\nimport { EventEmitter } from 'events'\r\nimport { Queue, Worker } from 'bullmq'\r\nimport type { ToClientMap } from '../../types'\r\nimport type { RpcClientOptions } from '../helper'\r\nimport { genClientQueue } from '../helper'\r\nimport { BullmqOptions } from './bind'\r\n\r\nexport async function createClient<S extends Record<string, any>>(controllers: S, opts: RpcClientOptions & BullmqOptions = {}) {\r\n let eventId = 1\r\n let eventCount = 0\r\n const { max, workerOpts, queueOpts, timeout, key } = opts\r\n const ret = {} as ToClientMap<S>\r\n const emitter = new EventEmitter()\r\n\r\n const clientQueue = genClientQueue(key)\r\n\r\n const queueMap: Record<string, Queue> = {}\r\n\r\n new Worker(clientQueue, async (job) => {\r\n const { data, id, error } = job.data\r\n emitter.emit(id, data, error)\r\n }, workerOpts)\r\n\r\n for (const i in controllers) {\r\n ret[i] = new Proxy(new controllers[i](), {\r\n get(target, p: string) {\r\n if (typeof target[p] !== 'function')\r\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\r\n\r\n let { tag, queue, isEvent } = target[p]()\r\n\r\n return async (...args: any) => {\r\n if (!queue)\r\n queue = tag\r\n if (!(queue in queueMap))\r\n queueMap[queue] = new Queue(queue, queueOpts)\r\n\r\n const id = `${eventId++}`\r\n\r\n queueMap[queue].add(`${tag}-${p}`, {\r\n _ps: 1,\r\n id,\r\n args,\r\n tag,\r\n queue: clientQueue,\r\n func: p,\r\n })\r\n\r\n if (isEvent)\r\n return null\r\n\r\n return new Promise((resolve, reject) => {\r\n if (max && eventCount >= max)\r\n reject({ type: 'exceeded' })\r\n\r\n let isEnd = false\r\n const timer = setTimeout(() => {\r\n if (!isEnd) {\r\n eventCount--\r\n emitter.off(id, listener)\r\n reject({ type: 'timeout' })\r\n }\r\n }, timeout || 5000)\r\n\r\n function listener(data: any, error: boolean) {\r\n eventCount--\r\n isEnd = true\r\n clearTimeout(timer)\r\n if (error)\r\n reject(data)\r\n\r\n else\r\n resolve(data)\r\n }\r\n eventCount++\r\n emitter.once(id, listener)\r\n })\r\n }\r\n },\r\n })\r\n }\r\n\r\n return ret\r\n}\r\n"]}
|
|
@@ -1,38 +1,34 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Context,
|
|
3
3
|
HMR,
|
|
4
|
+
createControllerMetaMap,
|
|
4
5
|
detectAopDep,
|
|
5
6
|
genClientQueue
|
|
6
|
-
} from "../../chunk-
|
|
7
|
+
} from "../../chunk-ZJD235TO.mjs";
|
|
7
8
|
import {
|
|
8
9
|
__name
|
|
9
|
-
} from "../../chunk-
|
|
10
|
+
} from "../../chunk-H4N6SHNG.mjs";
|
|
10
11
|
|
|
11
12
|
// src/rpc/bullmq/bind.ts
|
|
12
13
|
import { Queue, Worker } from "bullmq";
|
|
13
14
|
import Debug from "debug";
|
|
14
15
|
var debug = Debug("phecda-server/bullmq");
|
|
15
|
-
async function
|
|
16
|
-
const { globalGuards, globalInterceptors, globalFilter, globalPipe } = opts;
|
|
17
|
-
const metaMap = /* @__PURE__ */ new Map();
|
|
16
|
+
async function create({ moduleMap, meta }, opts = {}) {
|
|
17
|
+
const { globalGuards, globalInterceptors, globalFilter, globalPipe, workerOpts, queueOpts } = opts;
|
|
18
18
|
const workerMap = {};
|
|
19
19
|
const queueMap = {};
|
|
20
20
|
const existQueue = /* @__PURE__ */ new Set();
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
continue;
|
|
27
|
-
if (metaMap.has(tag))
|
|
28
|
-
metaMap.get(tag)[func] = item;
|
|
29
|
-
else
|
|
30
|
-
metaMap.set(tag, {
|
|
31
|
-
[func]: item
|
|
32
|
-
});
|
|
21
|
+
const metaMap = createControllerMetaMap(meta, (meta2) => {
|
|
22
|
+
const { controller, rpc, func, tag } = meta2.data;
|
|
23
|
+
if (controller === "rpc" && rpc?.queue !== void 0) {
|
|
24
|
+
debug(`register method "${func}" in module "${tag}"`);
|
|
25
|
+
return true;
|
|
33
26
|
}
|
|
34
|
-
}
|
|
35
|
-
|
|
27
|
+
});
|
|
28
|
+
detectAopDep(meta, {
|
|
29
|
+
guards: globalGuards,
|
|
30
|
+
interceptors: globalInterceptors
|
|
31
|
+
}, "rpc");
|
|
36
32
|
async function subscribeQueues() {
|
|
37
33
|
existQueue.clear();
|
|
38
34
|
for (const [tag, record] of metaMap) {
|
|
@@ -44,9 +40,7 @@ async function bind(connectOpts, { moduleMap, meta }, opts = {}) {
|
|
|
44
40
|
if (existQueue.has(queue))
|
|
45
41
|
continue;
|
|
46
42
|
existQueue.add(queue);
|
|
47
|
-
workerMap[queue] = new Worker(queue, handleRequest,
|
|
48
|
-
connection: connectOpts
|
|
49
|
-
});
|
|
43
|
+
workerMap[queue] = new Worker(queue, handleRequest, workerOpts);
|
|
50
44
|
}
|
|
51
45
|
}
|
|
52
46
|
}
|
|
@@ -61,9 +55,7 @@ async function bind(connectOpts, { moduleMap, meta }, opts = {}) {
|
|
|
61
55
|
const meta2 = metaMap.get(tag)[func];
|
|
62
56
|
const { data: { rpc: { isEvent } = {} } } = meta2;
|
|
63
57
|
if (!isEvent && !(clientQueue in queueMap))
|
|
64
|
-
queueMap[clientQueue] = new Queue(clientQueue,
|
|
65
|
-
connection: connectOpts
|
|
66
|
-
});
|
|
58
|
+
queueMap[clientQueue] = new Queue(clientQueue, queueOpts);
|
|
67
59
|
const context = new Context({
|
|
68
60
|
type: "bullmq",
|
|
69
61
|
moduleMap,
|
|
@@ -98,18 +90,8 @@ async function bind(connectOpts, { moduleMap, meta }, opts = {}) {
|
|
|
98
90
|
});
|
|
99
91
|
}
|
|
100
92
|
__name(handleRequest, "handleRequest");
|
|
101
|
-
detectAopDep(meta, {
|
|
102
|
-
guards: globalGuards,
|
|
103
|
-
interceptors: globalInterceptors
|
|
104
|
-
}, "rpc");
|
|
105
|
-
handleMeta();
|
|
106
93
|
subscribeQueues();
|
|
107
94
|
HMR(async () => {
|
|
108
|
-
detectAopDep(meta, {
|
|
109
|
-
guards: globalGuards,
|
|
110
|
-
interceptors: globalInterceptors
|
|
111
|
-
}, "rpc");
|
|
112
|
-
handleMeta();
|
|
113
95
|
for (const i in workerMap)
|
|
114
96
|
await workerMap[i].close(true);
|
|
115
97
|
for (const i in queueMap)
|
|
@@ -121,24 +103,23 @@ async function bind(connectOpts, { moduleMap, meta }, opts = {}) {
|
|
|
121
103
|
queueMap
|
|
122
104
|
};
|
|
123
105
|
}
|
|
124
|
-
__name(
|
|
106
|
+
__name(create, "create");
|
|
125
107
|
|
|
126
108
|
// src/rpc/bullmq/client.ts
|
|
127
109
|
import { EventEmitter } from "events";
|
|
128
110
|
import { Queue as Queue2, Worker as Worker2 } from "bullmq";
|
|
129
|
-
async function createClient(
|
|
111
|
+
async function createClient(controllers, opts = {}) {
|
|
130
112
|
let eventId = 1;
|
|
131
113
|
let eventCount = 0;
|
|
114
|
+
const { max, workerOpts, queueOpts, timeout, key } = opts;
|
|
132
115
|
const ret = {};
|
|
133
116
|
const emitter = new EventEmitter();
|
|
134
|
-
const clientQueue = genClientQueue(
|
|
117
|
+
const clientQueue = genClientQueue(key);
|
|
135
118
|
const queueMap = {};
|
|
136
119
|
new Worker2(clientQueue, async (job) => {
|
|
137
120
|
const { data, id, error } = job.data;
|
|
138
121
|
emitter.emit(id, data, error);
|
|
139
|
-
},
|
|
140
|
-
connection: connectOpts
|
|
141
|
-
});
|
|
122
|
+
}, workerOpts);
|
|
142
123
|
for (const i in controllers) {
|
|
143
124
|
ret[i] = new Proxy(new controllers[i](), {
|
|
144
125
|
get(target, p) {
|
|
@@ -149,9 +130,7 @@ async function createClient(connectOpts, controllers, opts) {
|
|
|
149
130
|
if (!queue)
|
|
150
131
|
queue = tag;
|
|
151
132
|
if (!(queue in queueMap))
|
|
152
|
-
queueMap[queue] = new Queue2(queue,
|
|
153
|
-
connection: connectOpts
|
|
154
|
-
});
|
|
133
|
+
queueMap[queue] = new Queue2(queue, queueOpts);
|
|
155
134
|
const id = `${eventId++}`;
|
|
156
135
|
queueMap[queue].add(`${tag}-${p}`, {
|
|
157
136
|
_ps: 1,
|
|
@@ -164,7 +143,7 @@ async function createClient(connectOpts, controllers, opts) {
|
|
|
164
143
|
if (isEvent)
|
|
165
144
|
return null;
|
|
166
145
|
return new Promise((resolve, reject) => {
|
|
167
|
-
if (
|
|
146
|
+
if (max && eventCount >= max)
|
|
168
147
|
reject({
|
|
169
148
|
type: "exceeded"
|
|
170
149
|
});
|
|
@@ -177,7 +156,7 @@ async function createClient(connectOpts, controllers, opts) {
|
|
|
177
156
|
type: "timeout"
|
|
178
157
|
});
|
|
179
158
|
}
|
|
180
|
-
},
|
|
159
|
+
}, timeout || 5e3);
|
|
181
160
|
function listener(data, error) {
|
|
182
161
|
eventCount--;
|
|
183
162
|
isEnd = true;
|
|
@@ -199,6 +178,7 @@ async function createClient(connectOpts, controllers, opts) {
|
|
|
199
178
|
}
|
|
200
179
|
__name(createClient, "createClient");
|
|
201
180
|
export {
|
|
202
|
-
|
|
181
|
+
create,
|
|
203
182
|
createClient
|
|
204
183
|
};
|
|
184
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/rpc/bullmq/bind.ts","../../../src/rpc/bullmq/client.ts"],"sourcesContent":["import type { Job, QueueOptions, WorkerOptions } from 'bullmq'\r\nimport { Queue, Worker } from 'bullmq'\r\nimport Debug from 'debug'\r\nimport type { Factory } from '../../core'\r\nimport { Context } from '../../context'\r\nimport type { RpcContext, RpcServerOptions } from '../helper'\r\nimport { HMR } from '../../hmr'\r\n\r\nimport { createControllerMetaMap, detectAopDep } from '../../helper'\r\n\r\nconst debug = Debug('phecda-server/bullmq')\r\n\r\nexport interface BullmqCtx extends RpcContext {\r\n type: 'bullmq'\r\n}\r\n\r\nexport interface BullmqOptions {\r\n workerOpts?: WorkerOptions\r\n queueOpts?: QueueOptions\r\n}\r\n\r\nexport async function create({ moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts: BullmqOptions & RpcServerOptions = {}) {\r\n const { globalGuards, globalInterceptors, globalFilter, globalPipe, workerOpts, queueOpts } = opts\r\n\r\n const workerMap: Record<string, Worker> = {}\r\n const queueMap: Record<string, Queue> = {}\r\n const existQueue = new Set<string>()\r\n const metaMap = createControllerMetaMap(meta, (meta) => {\r\n const { controller, rpc, func, tag } = meta.data\r\n if (controller === 'rpc' && rpc?.queue !== undefined) {\r\n debug(`register method \"${func}\" in module \"${tag}\"`)\r\n return true\r\n }\r\n })\r\n\r\n detectAopDep(meta, {\r\n guards: globalGuards,\r\n interceptors: globalInterceptors,\r\n }, 'rpc')\r\n\r\n async function subscribeQueues() {\r\n existQueue.clear()\r\n for (const [tag, record] of metaMap) {\r\n for (const func in record) {\r\n const meta = metaMap.get(tag)![func]\r\n\r\n const {\r\n data: {\r\n rpc,\r\n },\r\n } = meta\r\n\r\n if (rpc) {\r\n const queue = rpc.queue || tag\r\n if (existQueue.has(queue))\r\n continue\r\n existQueue.add(queue)\r\n workerMap[queue] = new Worker(queue, handleRequest, workerOpts)\r\n }\r\n }\r\n }\r\n }\r\n\r\n async function handleRequest(job: Job) {\r\n const { data } = job\r\n const { tag, func, args, id, queue: clientQueue, _ps } = data\r\n if (_ps !== 1)\r\n return\r\n debug(`invoke method \"${func}\" in module \"${tag}\"`)\r\n const meta = metaMap.get(tag)![func]\r\n\r\n const {\r\n data: {\r\n\r\n rpc: { isEvent } = {},\r\n },\r\n } = meta\r\n\r\n if (!isEvent && !(clientQueue in queueMap))\r\n queueMap[clientQueue] = new Queue(clientQueue, queueOpts)\r\n\r\n const context = new Context<BullmqCtx>({\r\n type: 'bullmq',\r\n moduleMap,\r\n meta,\r\n tag,\r\n func,\r\n data,\r\n args,\r\n id,\r\n queue: job.queueName,\r\n isEvent,\r\n })\r\n\r\n await context.run({ globalGuards, globalInterceptors, globalFilter, globalPipe }, (returnData) => {\r\n if (!isEvent)\r\n\r\n queueMap[clientQueue].add(`${tag}-${func}`, { data: returnData, id })\r\n }, (err) => {\r\n if (!isEvent) {\r\n queueMap[clientQueue].add(`${tag}-${func}`, {\r\n data: err,\r\n error: true,\r\n id,\r\n })\r\n }\r\n })\r\n }\r\n\r\n subscribeQueues()\r\n\r\n HMR(async () => {\r\n for (const i in workerMap)\r\n await workerMap[i].close(true)\r\n for (const i in queueMap)\r\n await queueMap[i].close()\r\n\r\n await subscribeQueues()\r\n })\r\n\r\n return { workerMap, queueMap }\r\n}\r\n","/* eslint-disable no-new */\r\n/* eslint-disable prefer-promise-reject-errors */\r\nimport { EventEmitter } from 'events'\r\nimport { Queue, Worker } from 'bullmq'\r\nimport type { ToClientMap } from '../../types'\r\nimport type { RpcClientOptions } from '../helper'\r\nimport { genClientQueue } from '../helper'\r\nimport { BullmqOptions } from './bind'\r\n\r\nexport async function createClient<S extends Record<string, any>>(controllers: S, opts: RpcClientOptions & BullmqOptions = {}) {\r\n let eventId = 1\r\n let eventCount = 0\r\n const { max, workerOpts, queueOpts, timeout, key } = opts\r\n const ret = {} as ToClientMap<S>\r\n const emitter = new EventEmitter()\r\n\r\n const clientQueue = genClientQueue(key)\r\n\r\n const queueMap: Record<string, Queue> = {}\r\n\r\n new Worker(clientQueue, async (job) => {\r\n const { data, id, error } = job.data\r\n emitter.emit(id, data, error)\r\n }, workerOpts)\r\n\r\n for (const i in controllers) {\r\n ret[i] = new Proxy(new controllers[i](), {\r\n get(target, p: string) {\r\n if (typeof target[p] !== 'function')\r\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\r\n\r\n let { tag, queue, isEvent } = target[p]()\r\n\r\n return async (...args: any) => {\r\n if (!queue)\r\n queue = tag\r\n if (!(queue in queueMap))\r\n queueMap[queue] = new Queue(queue, queueOpts)\r\n\r\n const id = `${eventId++}`\r\n\r\n queueMap[queue].add(`${tag}-${p}`, {\r\n _ps: 1,\r\n id,\r\n args,\r\n tag,\r\n queue: clientQueue,\r\n func: p,\r\n })\r\n\r\n if (isEvent)\r\n return null\r\n\r\n return new Promise((resolve, reject) => {\r\n if (max && eventCount >= max)\r\n reject({ type: 'exceeded' })\r\n\r\n let isEnd = false\r\n const timer = setTimeout(() => {\r\n if (!isEnd) {\r\n eventCount--\r\n emitter.off(id, listener)\r\n reject({ type: 'timeout' })\r\n }\r\n }, timeout || 5000)\r\n\r\n function listener(data: any, error: boolean) {\r\n eventCount--\r\n isEnd = true\r\n clearTimeout(timer)\r\n if (error)\r\n reject(data)\r\n\r\n else\r\n resolve(data)\r\n }\r\n eventCount++\r\n emitter.once(id, listener)\r\n })\r\n }\r\n },\r\n })\r\n }\r\n\r\n return ret\r\n}\r\n"],"mappings":"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","names":["Queue","Worker","Debug","debug","Debug","create","moduleMap","meta","opts","globalGuards","globalInterceptors","globalFilter","globalPipe","workerOpts","queueOpts","workerMap","queueMap","existQueue","Set","metaMap","createControllerMetaMap","controller","rpc","func","tag","data","queue","undefined","detectAopDep","guards","interceptors","subscribeQueues","clear","record","get","has","add","Worker","handleRequest","job","args","id","clientQueue","_ps","isEvent","Queue","context","Context","type","queueName","run","returnData","err","error","HMR","i","close","EventEmitter","Queue","Worker","createClient","controllers","opts","eventId","eventCount","max","workerOpts","queueOpts","timeout","key","ret","emitter","EventEmitter","clientQueue","genClientQueue","queueMap","Worker","job","data","id","error","emit","i","Proxy","get","target","p","Error","tag","queue","isEvent","args","Queue","add","_ps","func","Promise","resolve","reject","type","isEnd","timer","setTimeout","off","listener","clearTimeout","once"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Consumer, Producer } from 'kafkajs';
|
|
2
|
-
import { F as Factory, T as ToClientMap } from '../../core-
|
|
3
|
-
import { b as RpcContext, R as RpcServerOptions, a as RpcClientOptions } from '../../helper-
|
|
2
|
+
import { F as Factory, T as ToClientMap } from '../../core-39f27fe8.js';
|
|
3
|
+
import { b as RpcContext, R as RpcServerOptions, a as RpcClientOptions } from '../../helper-6133f78f.js';
|
|
4
4
|
import 'phecda-core';
|
|
5
5
|
|
|
6
6
|
interface KafkaCtx extends RpcContext {
|
|
@@ -10,8 +10,14 @@ interface KafkaCtx extends RpcContext {
|
|
|
10
10
|
heartbeat(): Promise<void>;
|
|
11
11
|
pause(): () => void;
|
|
12
12
|
}
|
|
13
|
-
declare function bind(consumer
|
|
13
|
+
declare function bind({ consumer, producer }: {
|
|
14
|
+
consumer: Consumer;
|
|
15
|
+
producer: Producer;
|
|
16
|
+
}, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts?: RpcServerOptions): Promise<void>;
|
|
14
17
|
|
|
15
|
-
declare function createClient<S extends Record<string, any>>(producer
|
|
18
|
+
declare function createClient<S extends Record<string, any>>({ producer, consumer }: {
|
|
19
|
+
producer: Producer;
|
|
20
|
+
consumer: Consumer;
|
|
21
|
+
}, controllers: S, opts?: RpcClientOptions): Promise<ToClientMap<S>>;
|
|
16
22
|
|
|
17
23
|
export { KafkaCtx, bind, createClient };
|
package/dist/rpc/kafka/index.js
CHANGED
|
@@ -3,33 +3,28 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkQG4X6H5Yjs = require('../../chunk-QG4X6H5Y.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkXNTMYLK6js = require('../../chunk-XNTMYLK6.js');
|
|
10
10
|
|
|
11
11
|
// src/rpc/kafka/bind.ts
|
|
12
12
|
var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
|
|
13
13
|
var debug = _debug2.default.call(void 0, "phecda-server/kafka");
|
|
14
|
-
async function bind(consumer, producer, { moduleMap, meta }, opts = {}) {
|
|
14
|
+
async function bind({ consumer, producer }, { moduleMap, meta }, opts = {}) {
|
|
15
15
|
const { globalGuards, globalInterceptors, globalFilter, globalPipe } = opts;
|
|
16
|
-
const metaMap = /* @__PURE__ */ new Map();
|
|
17
16
|
const existQueue = /* @__PURE__ */ new Set();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
continue;
|
|
24
|
-
if (metaMap.has(tag))
|
|
25
|
-
metaMap.get(tag)[func] = item;
|
|
26
|
-
else
|
|
27
|
-
metaMap.set(tag, {
|
|
28
|
-
[func]: item
|
|
29
|
-
});
|
|
17
|
+
const metaMap = _chunkQG4X6H5Yjs.createControllerMetaMap.call(void 0, meta, (meta2) => {
|
|
18
|
+
const { controller, rpc, func, tag } = meta2.data;
|
|
19
|
+
if (controller === "rpc" && _optionalChain([rpc, 'optionalAccess', _ => _.queue]) !== void 0) {
|
|
20
|
+
debug(`register method "${func}" in module "${tag}"`);
|
|
21
|
+
return true;
|
|
30
22
|
}
|
|
31
|
-
}
|
|
32
|
-
|
|
23
|
+
});
|
|
24
|
+
_chunkQG4X6H5Yjs.detectAopDep.call(void 0, meta, {
|
|
25
|
+
guards: globalGuards,
|
|
26
|
+
interceptors: globalInterceptors
|
|
27
|
+
}, "rpc");
|
|
33
28
|
async function subscribeQueues() {
|
|
34
29
|
existQueue.clear();
|
|
35
30
|
for (const [tag, record] of metaMap) {
|
|
@@ -49,12 +44,7 @@ async function bind(consumer, producer, { moduleMap, meta }, opts = {}) {
|
|
|
49
44
|
}
|
|
50
45
|
}
|
|
51
46
|
}
|
|
52
|
-
|
|
53
|
-
_chunkYERBWZCSjs.detectAopDep.call(void 0, meta, {
|
|
54
|
-
guards: globalGuards,
|
|
55
|
-
interceptors: globalInterceptors
|
|
56
|
-
}, "rpc");
|
|
57
|
-
handleMeta();
|
|
47
|
+
_chunkXNTMYLK6js.__name.call(void 0, subscribeQueues, "subscribeQueues");
|
|
58
48
|
await subscribeQueues();
|
|
59
49
|
await consumer.run({
|
|
60
50
|
eachMessage: async ({ message, partition, topic, heartbeat, pause }) => {
|
|
@@ -68,7 +58,7 @@ async function bind(consumer, producer, { moduleMap, meta }, opts = {}) {
|
|
|
68
58
|
const meta2 = metaMap.get(tag)[func];
|
|
69
59
|
const { data: { rpc } } = meta2;
|
|
70
60
|
const isEvent = rpc.isEvent;
|
|
71
|
-
const context = new (0,
|
|
61
|
+
const context = new (0, _chunkQG4X6H5Yjs.Context)({
|
|
72
62
|
type: "kafka",
|
|
73
63
|
moduleMap,
|
|
74
64
|
meta: meta2,
|
|
@@ -120,24 +110,17 @@ async function bind(consumer, producer, { moduleMap, meta }, opts = {}) {
|
|
|
120
110
|
});
|
|
121
111
|
}
|
|
122
112
|
});
|
|
123
|
-
_chunkYERBWZCSjs.HMR.call(void 0, async () => {
|
|
124
|
-
_chunkYERBWZCSjs.detectAopDep.call(void 0, meta, {
|
|
125
|
-
guards: globalGuards,
|
|
126
|
-
interceptors: globalInterceptors
|
|
127
|
-
}, "rpc");
|
|
128
|
-
handleMeta();
|
|
129
|
-
});
|
|
130
113
|
}
|
|
131
|
-
|
|
114
|
+
_chunkXNTMYLK6js.__name.call(void 0, bind, "bind");
|
|
132
115
|
|
|
133
116
|
// src/rpc/kafka/client.ts
|
|
134
117
|
var _events = require('events');
|
|
135
|
-
async function createClient(producer, consumer, controllers, opts) {
|
|
118
|
+
async function createClient({ producer, consumer }, controllers, opts) {
|
|
136
119
|
let eventId = 1;
|
|
137
120
|
let eventCount = 1;
|
|
138
121
|
const ret = {};
|
|
139
122
|
const emitter = new (0, _events.EventEmitter)();
|
|
140
|
-
const clientQueue =
|
|
123
|
+
const clientQueue = _chunkQG4X6H5Yjs.genClientQueue.call(void 0, _optionalChain([opts, 'optionalAccess', _2 => _2.key]));
|
|
141
124
|
await consumer.subscribe({
|
|
142
125
|
topic: clientQueue,
|
|
143
126
|
fromBeginning: true
|
|
@@ -193,7 +176,7 @@ async function createClient(producer, consumer, controllers, opts) {
|
|
|
193
176
|
else
|
|
194
177
|
resolve(data);
|
|
195
178
|
}
|
|
196
|
-
|
|
179
|
+
_chunkXNTMYLK6js.__name.call(void 0, listener, "listener");
|
|
197
180
|
eventCount++;
|
|
198
181
|
emitter.once(id, listener);
|
|
199
182
|
});
|
|
@@ -211,8 +194,9 @@ async function createClient(producer, consumer, controllers, opts) {
|
|
|
211
194
|
});
|
|
212
195
|
return ret;
|
|
213
196
|
}
|
|
214
|
-
|
|
197
|
+
_chunkXNTMYLK6js.__name.call(void 0, createClient, "createClient");
|
|
215
198
|
|
|
216
199
|
|
|
217
200
|
|
|
218
201
|
exports.bind = bind; exports.createClient = createClient;
|
|
202
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/rpc/kafka/bind.ts","../../../src/rpc/kafka/client.ts"],"names":["Debug","debug","bind","consumer","producer","moduleMap","meta","opts","globalGuards","globalInterceptors","globalFilter","globalPipe","existQueue","Set","metaMap","createControllerMetaMap","controller","rpc","func","tag","data","queue","undefined","detectAopDep","guards","interceptors","subscribeQueues","clear","record","get","has","add","subscribe","topic","fromBeginning","run","eachMessage","message","partition","heartbeat","pause","JSON","parse","value","toString","id","clientQueue","_ps","args","isEvent","context","Context","type","returnData","send","messages","stringify","err","error","EventEmitter","createClient","controllers","eventId","eventCount","ret","emitter","genClientQueue","key","i","Proxy","target","p","Error","Promise","resolve","reject","max","isEnd","timer","setTimeout","off","listener","timeout","clearTimeout","once","emit"],"mappings":"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","sourcesContent":["import type { Consumer, Producer } from 'kafkajs'\r\nimport Debug from 'debug'\r\nimport type { Factory } from '../../core'\r\nimport { Context } from '../../context'\r\nimport type { RpcContext, RpcServerOptions } from '../helper'\r\nimport { createControllerMetaMap, detectAopDep } from '../../helper'\r\n\r\nconst debug = Debug('phecda-server/kafka')\r\n\r\nexport interface KafkaCtx extends RpcContext {\r\n type: 'kafka'\r\n topic: string\r\n partition: number\r\n heartbeat(): Promise<void>\r\n pause(): () => void\r\n\r\n}\r\n// @experiment\r\n\r\nexport async function bind({ consumer, producer }: { consumer: Consumer; producer: Producer }, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts: RpcServerOptions = {}) {\r\n const { globalGuards, globalInterceptors, globalFilter, globalPipe } = opts\r\n\r\n const existQueue = new Set<string>()\r\n const metaMap = createControllerMetaMap(meta, (meta) => {\r\n const { controller, rpc, func, tag } = meta.data\r\n if (controller === 'rpc' && rpc?.queue !== undefined) {\r\n debug(`register method \"${func}\" in module \"${tag}\"`)\r\n return true\r\n }\r\n })\r\n\r\n detectAopDep(meta, {\r\n guards: globalGuards,\r\n interceptors: globalInterceptors,\r\n }, 'rpc')\r\n\r\n async function subscribeQueues() {\r\n existQueue.clear()\r\n for (const [tag, record] of metaMap) {\r\n for (const func in record) {\r\n const meta = metaMap.get(tag)![func]\r\n\r\n const {\r\n data: {\r\n rpc,\r\n },\r\n } = meta\r\n if (rpc) {\r\n const queue = rpc.queue || tag\r\n if (existQueue.has(queue))\r\n continue\r\n existQueue.add(queue)\r\n await consumer.subscribe({ topic: queue, fromBeginning: true })\r\n }\r\n }\r\n }\r\n }\r\n\r\n await subscribeQueues()\r\n await consumer.run({\r\n eachMessage: async ({ message, partition, topic, heartbeat, pause }) => {\r\n if (!existQueue.has(topic))\r\n return\r\n\r\n const data = JSON.parse(message.value!.toString())\r\n\r\n const { tag, func, id, queue: clientQueue, _ps, args } = data\r\n\r\n if (_ps !== 1)\r\n return\r\n debug(`invoke method \"${func}\" in module \"${tag}\"`)\r\n const meta = metaMap.get(tag)![func]\r\n\r\n const {\r\n data: {\r\n rpc,\r\n },\r\n } = meta\r\n const isEvent = rpc!.isEvent\r\n\r\n const context = new Context<KafkaCtx>({\r\n type: 'kafka',\r\n moduleMap,\r\n meta,\r\n args,\r\n id,\r\n tag,\r\n func,\r\n partition,\r\n topic,\r\n heartbeat,\r\n pause,\r\n\r\n isEvent,\r\n queue: topic,\r\n })\r\n\r\n await context.run({ globalGuards, globalInterceptors, globalFilter, globalPipe }, (returnData) => {\r\n if (!isEvent) {\r\n producer.send({\r\n topic: clientQueue,\r\n messages: [\r\n { value: JSON.stringify({ data: returnData, id }) },\r\n ],\r\n })\r\n }\r\n }, (err) => {\r\n if (!isEvent) {\r\n producer.send({\r\n topic: clientQueue,\r\n messages: [\r\n {\r\n value: JSON.stringify({\r\n data: err,\r\n error: true,\r\n id,\r\n }),\r\n },\r\n ],\r\n })\r\n }\r\n })\r\n },\r\n })\r\n}\r\n","/* eslint-disable prefer-promise-reject-errors */\r\nimport { EventEmitter } from 'events'\r\nimport type { Consumer, Producer } from 'kafkajs'\r\nimport type { ToClientMap } from '../../types'\r\nimport type { RpcClientOptions } from '../helper'\r\nimport { genClientQueue } from '../helper'\r\n// @experiment\r\nexport async function createClient<S extends Record<string, any>>({ producer, consumer }: { producer: Producer; consumer: Consumer }, controllers: S, opts?: RpcClientOptions) {\r\n let eventId = 1\r\n let eventCount = 1\r\n\r\n const ret = {} as ToClientMap<S>\r\n const emitter = new EventEmitter()\r\n\r\n const clientQueue = genClientQueue(opts?.key)\r\n\r\n await consumer.subscribe({ topic: clientQueue, fromBeginning: true })\r\n for (const i in controllers) {\r\n ret[i] = new Proxy(new controllers[i](), {\r\n get(target, p: string) {\r\n if (typeof target[p] !== 'function')\r\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\r\n\r\n let { tag, queue, isEvent } = target[p]()\r\n\r\n return async (...args: any) => {\r\n if (!queue)\r\n queue = tag\r\n\r\n const id = `${eventId++}`\r\n\r\n producer.send({\r\n topic: queue,\r\n messages: [\r\n {\r\n value: JSON.stringify({\r\n _ps: 1,\r\n id,\r\n tag,\r\n queue: clientQueue,\r\n func: p,\r\n args,\r\n }),\r\n },\r\n ],\r\n })\r\n\r\n if (isEvent)\r\n return null\r\n\r\n return new Promise((resolve, reject) => {\r\n if (opts?.max && eventCount >= opts.max)\r\n reject({ type: 'exceeded' })\r\n\r\n let isEnd = false\r\n const timer = setTimeout(() => {\r\n if (!isEnd) {\r\n eventCount--\r\n emitter.off(id, listener)\r\n reject({ type: 'timeout' })\r\n }\r\n }, opts?.timeout || 5000)\r\n\r\n function listener(data: any, error: boolean) {\r\n eventCount--\r\n isEnd = true\r\n clearTimeout(timer)\r\n if (error)\r\n reject(data)\r\n\r\n else\r\n resolve(data)\r\n }\r\n eventCount++\r\n emitter.once(id, listener)\r\n })\r\n }\r\n },\r\n })\r\n }\r\n await consumer.run(\r\n {\r\n eachMessage: async ({ message, topic }) => {\r\n if (clientQueue === topic && message.value) {\r\n const { data, id, error } = JSON.parse(message.value.toString())\r\n\r\n emitter.emit(id, data, error)\r\n }\r\n },\r\n },\r\n )\r\n\r\n return ret\r\n}\r\n"]}
|
package/dist/rpc/kafka/index.mjs
CHANGED
|
@@ -1,35 +1,30 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Context,
|
|
3
|
-
|
|
3
|
+
createControllerMetaMap,
|
|
4
4
|
detectAopDep,
|
|
5
5
|
genClientQueue
|
|
6
|
-
} from "../../chunk-
|
|
6
|
+
} from "../../chunk-ZJD235TO.mjs";
|
|
7
7
|
import {
|
|
8
8
|
__name
|
|
9
|
-
} from "../../chunk-
|
|
9
|
+
} from "../../chunk-H4N6SHNG.mjs";
|
|
10
10
|
|
|
11
11
|
// src/rpc/kafka/bind.ts
|
|
12
12
|
import Debug from "debug";
|
|
13
13
|
var debug = Debug("phecda-server/kafka");
|
|
14
|
-
async function bind(consumer, producer, { moduleMap, meta }, opts = {}) {
|
|
14
|
+
async function bind({ consumer, producer }, { moduleMap, meta }, opts = {}) {
|
|
15
15
|
const { globalGuards, globalInterceptors, globalFilter, globalPipe } = opts;
|
|
16
|
-
const metaMap = /* @__PURE__ */ new Map();
|
|
17
16
|
const existQueue = /* @__PURE__ */ new Set();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
continue;
|
|
24
|
-
if (metaMap.has(tag))
|
|
25
|
-
metaMap.get(tag)[func] = item;
|
|
26
|
-
else
|
|
27
|
-
metaMap.set(tag, {
|
|
28
|
-
[func]: item
|
|
29
|
-
});
|
|
17
|
+
const metaMap = createControllerMetaMap(meta, (meta2) => {
|
|
18
|
+
const { controller, rpc, func, tag } = meta2.data;
|
|
19
|
+
if (controller === "rpc" && rpc?.queue !== void 0) {
|
|
20
|
+
debug(`register method "${func}" in module "${tag}"`);
|
|
21
|
+
return true;
|
|
30
22
|
}
|
|
31
|
-
}
|
|
32
|
-
|
|
23
|
+
});
|
|
24
|
+
detectAopDep(meta, {
|
|
25
|
+
guards: globalGuards,
|
|
26
|
+
interceptors: globalInterceptors
|
|
27
|
+
}, "rpc");
|
|
33
28
|
async function subscribeQueues() {
|
|
34
29
|
existQueue.clear();
|
|
35
30
|
for (const [tag, record] of metaMap) {
|
|
@@ -50,11 +45,6 @@ async function bind(consumer, producer, { moduleMap, meta }, opts = {}) {
|
|
|
50
45
|
}
|
|
51
46
|
}
|
|
52
47
|
__name(subscribeQueues, "subscribeQueues");
|
|
53
|
-
detectAopDep(meta, {
|
|
54
|
-
guards: globalGuards,
|
|
55
|
-
interceptors: globalInterceptors
|
|
56
|
-
}, "rpc");
|
|
57
|
-
handleMeta();
|
|
58
48
|
await subscribeQueues();
|
|
59
49
|
await consumer.run({
|
|
60
50
|
eachMessage: async ({ message, partition, topic, heartbeat, pause }) => {
|
|
@@ -120,19 +110,12 @@ async function bind(consumer, producer, { moduleMap, meta }, opts = {}) {
|
|
|
120
110
|
});
|
|
121
111
|
}
|
|
122
112
|
});
|
|
123
|
-
HMR(async () => {
|
|
124
|
-
detectAopDep(meta, {
|
|
125
|
-
guards: globalGuards,
|
|
126
|
-
interceptors: globalInterceptors
|
|
127
|
-
}, "rpc");
|
|
128
|
-
handleMeta();
|
|
129
|
-
});
|
|
130
113
|
}
|
|
131
114
|
__name(bind, "bind");
|
|
132
115
|
|
|
133
116
|
// src/rpc/kafka/client.ts
|
|
134
117
|
import { EventEmitter } from "events";
|
|
135
|
-
async function createClient(producer, consumer, controllers, opts) {
|
|
118
|
+
async function createClient({ producer, consumer }, controllers, opts) {
|
|
136
119
|
let eventId = 1;
|
|
137
120
|
let eventCount = 1;
|
|
138
121
|
const ret = {};
|
|
@@ -216,3 +199,4 @@ export {
|
|
|
216
199
|
bind,
|
|
217
200
|
createClient
|
|
218
201
|
};
|
|
202
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/rpc/kafka/bind.ts","../../../src/rpc/kafka/client.ts"],"sourcesContent":["import type { Consumer, Producer } from 'kafkajs'\r\nimport Debug from 'debug'\r\nimport type { Factory } from '../../core'\r\nimport { Context } from '../../context'\r\nimport type { RpcContext, RpcServerOptions } from '../helper'\r\nimport { createControllerMetaMap, detectAopDep } from '../../helper'\r\n\r\nconst debug = Debug('phecda-server/kafka')\r\n\r\nexport interface KafkaCtx extends RpcContext {\r\n type: 'kafka'\r\n topic: string\r\n partition: number\r\n heartbeat(): Promise<void>\r\n pause(): () => void\r\n\r\n}\r\n// @experiment\r\n\r\nexport async function bind({ consumer, producer }: { consumer: Consumer; producer: Producer }, { moduleMap, meta }: Awaited<ReturnType<typeof Factory>>, opts: RpcServerOptions = {}) {\r\n const { globalGuards, globalInterceptors, globalFilter, globalPipe } = opts\r\n\r\n const existQueue = new Set<string>()\r\n const metaMap = createControllerMetaMap(meta, (meta) => {\r\n const { controller, rpc, func, tag } = meta.data\r\n if (controller === 'rpc' && rpc?.queue !== undefined) {\r\n debug(`register method \"${func}\" in module \"${tag}\"`)\r\n return true\r\n }\r\n })\r\n\r\n detectAopDep(meta, {\r\n guards: globalGuards,\r\n interceptors: globalInterceptors,\r\n }, 'rpc')\r\n\r\n async function subscribeQueues() {\r\n existQueue.clear()\r\n for (const [tag, record] of metaMap) {\r\n for (const func in record) {\r\n const meta = metaMap.get(tag)![func]\r\n\r\n const {\r\n data: {\r\n rpc,\r\n },\r\n } = meta\r\n if (rpc) {\r\n const queue = rpc.queue || tag\r\n if (existQueue.has(queue))\r\n continue\r\n existQueue.add(queue)\r\n await consumer.subscribe({ topic: queue, fromBeginning: true })\r\n }\r\n }\r\n }\r\n }\r\n\r\n await subscribeQueues()\r\n await consumer.run({\r\n eachMessage: async ({ message, partition, topic, heartbeat, pause }) => {\r\n if (!existQueue.has(topic))\r\n return\r\n\r\n const data = JSON.parse(message.value!.toString())\r\n\r\n const { tag, func, id, queue: clientQueue, _ps, args } = data\r\n\r\n if (_ps !== 1)\r\n return\r\n debug(`invoke method \"${func}\" in module \"${tag}\"`)\r\n const meta = metaMap.get(tag)![func]\r\n\r\n const {\r\n data: {\r\n rpc,\r\n },\r\n } = meta\r\n const isEvent = rpc!.isEvent\r\n\r\n const context = new Context<KafkaCtx>({\r\n type: 'kafka',\r\n moduleMap,\r\n meta,\r\n args,\r\n id,\r\n tag,\r\n func,\r\n partition,\r\n topic,\r\n heartbeat,\r\n pause,\r\n\r\n isEvent,\r\n queue: topic,\r\n })\r\n\r\n await context.run({ globalGuards, globalInterceptors, globalFilter, globalPipe }, (returnData) => {\r\n if (!isEvent) {\r\n producer.send({\r\n topic: clientQueue,\r\n messages: [\r\n { value: JSON.stringify({ data: returnData, id }) },\r\n ],\r\n })\r\n }\r\n }, (err) => {\r\n if (!isEvent) {\r\n producer.send({\r\n topic: clientQueue,\r\n messages: [\r\n {\r\n value: JSON.stringify({\r\n data: err,\r\n error: true,\r\n id,\r\n }),\r\n },\r\n ],\r\n })\r\n }\r\n })\r\n },\r\n })\r\n}\r\n","/* eslint-disable prefer-promise-reject-errors */\r\nimport { EventEmitter } from 'events'\r\nimport type { Consumer, Producer } from 'kafkajs'\r\nimport type { ToClientMap } from '../../types'\r\nimport type { RpcClientOptions } from '../helper'\r\nimport { genClientQueue } from '../helper'\r\n// @experiment\r\nexport async function createClient<S extends Record<string, any>>({ producer, consumer }: { producer: Producer; consumer: Consumer }, controllers: S, opts?: RpcClientOptions) {\r\n let eventId = 1\r\n let eventCount = 1\r\n\r\n const ret = {} as ToClientMap<S>\r\n const emitter = new EventEmitter()\r\n\r\n const clientQueue = genClientQueue(opts?.key)\r\n\r\n await consumer.subscribe({ topic: clientQueue, fromBeginning: true })\r\n for (const i in controllers) {\r\n ret[i] = new Proxy(new controllers[i](), {\r\n get(target, p: string) {\r\n if (typeof target[p] !== 'function')\r\n throw new Error(`\"${p}\" in \"${i}\" is not an exposed rpc `)\r\n\r\n let { tag, queue, isEvent } = target[p]()\r\n\r\n return async (...args: any) => {\r\n if (!queue)\r\n queue = tag\r\n\r\n const id = `${eventId++}`\r\n\r\n producer.send({\r\n topic: queue,\r\n messages: [\r\n {\r\n value: JSON.stringify({\r\n _ps: 1,\r\n id,\r\n tag,\r\n queue: clientQueue,\r\n func: p,\r\n args,\r\n }),\r\n },\r\n ],\r\n })\r\n\r\n if (isEvent)\r\n return null\r\n\r\n return new Promise((resolve, reject) => {\r\n if (opts?.max && eventCount >= opts.max)\r\n reject({ type: 'exceeded' })\r\n\r\n let isEnd = false\r\n const timer = setTimeout(() => {\r\n if (!isEnd) {\r\n eventCount--\r\n emitter.off(id, listener)\r\n reject({ type: 'timeout' })\r\n }\r\n }, opts?.timeout || 5000)\r\n\r\n function listener(data: any, error: boolean) {\r\n eventCount--\r\n isEnd = true\r\n clearTimeout(timer)\r\n if (error)\r\n reject(data)\r\n\r\n else\r\n resolve(data)\r\n }\r\n eventCount++\r\n emitter.once(id, listener)\r\n })\r\n }\r\n },\r\n })\r\n }\r\n await consumer.run(\r\n {\r\n eachMessage: async ({ message, topic }) => {\r\n if (clientQueue === topic && message.value) {\r\n const { data, id, error } = JSON.parse(message.value.toString())\r\n\r\n emitter.emit(id, data, error)\r\n }\r\n },\r\n },\r\n )\r\n\r\n return ret\r\n}\r\n"],"mappings":"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","names":["Debug","debug","Debug","bind","consumer","producer","moduleMap","meta","opts","globalGuards","globalInterceptors","globalFilter","globalPipe","existQueue","Set","metaMap","createControllerMetaMap","controller","rpc","func","tag","data","queue","undefined","detectAopDep","guards","interceptors","subscribeQueues","clear","record","get","has","add","subscribe","topic","fromBeginning","run","eachMessage","message","partition","heartbeat","pause","JSON","parse","value","toString","id","clientQueue","_ps","args","isEvent","context","Context","type","returnData","send","messages","stringify","err","error","EventEmitter","createClient","producer","consumer","controllers","opts","eventId","eventCount","ret","emitter","EventEmitter","clientQueue","genClientQueue","key","subscribe","topic","fromBeginning","i","Proxy","get","target","p","Error","tag","queue","isEvent","args","id","send","messages","value","JSON","stringify","_ps","func","Promise","resolve","reject","max","type","isEnd","timer","setTimeout","off","listener","timeout","data","error","clearTimeout","once","run","eachMessage","message","parse","toString","emit"]}
|
package/dist/rpc/nats/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NatsConnection } from 'nats';
|
|
2
|
-
import { F as Factory, T as ToClientMap } from '../../core-
|
|
3
|
-
import { b as RpcContext, R as RpcServerOptions, a as RpcClientOptions } from '../../helper-
|
|
2
|
+
import { F as Factory, T as ToClientMap } from '../../core-39f27fe8.js';
|
|
3
|
+
import { b as RpcContext, R as RpcServerOptions, a as RpcClientOptions } from '../../helper-6133f78f.js';
|
|
4
4
|
import 'phecda-core';
|
|
5
5
|
|
|
6
6
|
interface NatsCtx extends RpcContext {
|
package/dist/rpc/nats/index.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var _chunkYERBWZCSjs = require('../../chunk-YERBWZCS.js');
|
|
6
5
|
|
|
6
|
+
var _chunkQG4X6H5Yjs = require('../../chunk-QG4X6H5Y.js');
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
var _chunkXNTMYLK6js = require('../../chunk-XNTMYLK6.js');
|
|
9
10
|
|
|
10
11
|
// src/rpc/nats/bind.ts
|
|
11
12
|
var _nats = require('nats');
|
|
@@ -15,23 +16,18 @@ async function bind(nc, { moduleMap, meta }, opts = {}) {
|
|
|
15
16
|
const { globalGuards, globalInterceptors, globalFilter, globalPipe } = opts;
|
|
16
17
|
const sc = _nats.StringCodec.call(void 0, );
|
|
17
18
|
const subscriptionMap = {};
|
|
18
|
-
const metaMap = /* @__PURE__ */ new Map();
|
|
19
19
|
const existQueue = /* @__PURE__ */ new Set();
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
continue;
|
|
26
|
-
if (metaMap.has(tag))
|
|
27
|
-
metaMap.get(tag)[func] = item;
|
|
28
|
-
else
|
|
29
|
-
metaMap.set(tag, {
|
|
30
|
-
[func]: item
|
|
31
|
-
});
|
|
20
|
+
const metaMap = _chunkQG4X6H5Yjs.createControllerMetaMap.call(void 0, meta, (meta2) => {
|
|
21
|
+
const { controller, rpc, func, tag } = meta2.data;
|
|
22
|
+
if (controller === "rpc" && _optionalChain([rpc, 'optionalAccess', _2 => _2.queue]) !== void 0) {
|
|
23
|
+
debug(`register method "${func}" in module "${tag}"`);
|
|
24
|
+
return true;
|
|
32
25
|
}
|
|
33
|
-
}
|
|
34
|
-
|
|
26
|
+
});
|
|
27
|
+
_chunkQG4X6H5Yjs.detectAopDep.call(void 0, meta, {
|
|
28
|
+
guards: globalGuards,
|
|
29
|
+
interceptors: globalInterceptors
|
|
30
|
+
}, "rpc");
|
|
35
31
|
async function subscribeQueues() {
|
|
36
32
|
existQueue.clear();
|
|
37
33
|
for (const [tag, record] of metaMap) {
|
|
@@ -51,7 +47,7 @@ async function bind(nc, { moduleMap, meta }, opts = {}) {
|
|
|
51
47
|
}
|
|
52
48
|
}
|
|
53
49
|
}
|
|
54
|
-
|
|
50
|
+
_chunkXNTMYLK6js.__name.call(void 0, subscribeQueues, "subscribeQueues");
|
|
55
51
|
async function handleRequest(_, msg) {
|
|
56
52
|
const data = JSON.parse(sc.decode(msg.data));
|
|
57
53
|
const { tag, func, id, _ps, args } = data;
|
|
@@ -62,7 +58,7 @@ async function bind(nc, { moduleMap, meta }, opts = {}) {
|
|
|
62
58
|
const { data: { rpc: { isEvent } = {} } } = meta2;
|
|
63
59
|
if (isEvent)
|
|
64
60
|
msg.respond("{}");
|
|
65
|
-
const context = new (0,
|
|
61
|
+
const context = new (0, _chunkQG4X6H5Yjs.Context)({
|
|
66
62
|
type: "nats",
|
|
67
63
|
moduleMap,
|
|
68
64
|
meta: meta2,
|
|
@@ -94,25 +90,15 @@ async function bind(nc, { moduleMap, meta }, opts = {}) {
|
|
|
94
90
|
})));
|
|
95
91
|
});
|
|
96
92
|
}
|
|
97
|
-
|
|
98
|
-
_chunkYERBWZCSjs.detectAopDep.call(void 0, meta, {
|
|
99
|
-
guards: globalGuards,
|
|
100
|
-
interceptors: globalInterceptors
|
|
101
|
-
}, "rpc");
|
|
102
|
-
handleMeta();
|
|
93
|
+
_chunkXNTMYLK6js.__name.call(void 0, handleRequest, "handleRequest");
|
|
103
94
|
subscribeQueues();
|
|
104
|
-
|
|
105
|
-
_chunkYERBWZCSjs.detectAopDep.call(void 0, meta, {
|
|
106
|
-
guards: globalGuards,
|
|
107
|
-
interceptors: globalInterceptors
|
|
108
|
-
}, "rpc");
|
|
109
|
-
handleMeta();
|
|
95
|
+
_chunkQG4X6H5Yjs.HMR.call(void 0, async () => {
|
|
110
96
|
for (const i in subscriptionMap)
|
|
111
97
|
subscriptionMap[i].unsubscribe();
|
|
112
98
|
await subscribeQueues();
|
|
113
99
|
});
|
|
114
100
|
}
|
|
115
|
-
|
|
101
|
+
_chunkXNTMYLK6js.__name.call(void 0, bind, "bind");
|
|
116
102
|
|
|
117
103
|
// src/rpc/nats/client.ts
|
|
118
104
|
|
|
@@ -169,7 +155,7 @@ async function createClient(nc, controllers, opts) {
|
|
|
169
155
|
else
|
|
170
156
|
resolve(data);
|
|
171
157
|
}
|
|
172
|
-
|
|
158
|
+
_chunkXNTMYLK6js.__name.call(void 0, handler, "handler");
|
|
173
159
|
eventCount++;
|
|
174
160
|
});
|
|
175
161
|
};
|
|
@@ -178,8 +164,9 @@ async function createClient(nc, controllers, opts) {
|
|
|
178
164
|
}
|
|
179
165
|
return ret;
|
|
180
166
|
}
|
|
181
|
-
|
|
167
|
+
_chunkXNTMYLK6js.__name.call(void 0, createClient, "createClient");
|
|
182
168
|
|
|
183
169
|
|
|
184
170
|
|
|
185
171
|
exports.bind = bind; exports.createClient = createClient;
|
|
172
|
+
//# sourceMappingURL=index.js.map
|