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.
- package/dist/{chunk-FPN7NODB.mjs → chunk-AJ2HYENF.mjs} +13 -5
- package/dist/chunk-AJ2HYENF.mjs.map +1 -0
- package/dist/{chunk-UEH6FW5I.js → chunk-D3VS53JQ.js} +26 -23
- package/dist/chunk-D3VS53JQ.js.map +1 -0
- package/dist/{chunk-JGSJIKGN.js → chunk-FAHHXHL5.js} +3 -3
- package/dist/{chunk-HY6T4ZWQ.mjs → chunk-JQPX546Z.mjs} +2 -2
- package/dist/{chunk-62QDU5FJ.js → chunk-LZAU5FUS.js} +14 -6
- package/dist/chunk-LZAU5FUS.js.map +1 -0
- package/dist/{chunk-3PXRNECS.mjs → chunk-Q6T7HNEO.mjs} +69 -20
- package/dist/chunk-Q6T7HNEO.mjs.map +1 -0
- package/dist/{chunk-MFGAP3PV.mjs → chunk-WRMLZ7NU.mjs} +8 -5
- package/dist/{chunk-MFGAP3PV.mjs.map → chunk-WRMLZ7NU.mjs.map} +1 -1
- package/dist/{chunk-BP7CKHPK.js → chunk-YU7ROHTO.js} +96 -47
- package/dist/chunk-YU7ROHTO.js.map +1 -0
- package/dist/index.d.ts +30 -17
- package/dist/index.js +84 -47
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +55 -18
- package/dist/index.mjs.map +1 -1
- package/dist/rpc/rabbitmq/index.js +12 -9
- package/dist/rpc/rabbitmq/index.js.map +1 -1
- package/dist/rpc/rabbitmq/index.mjs +9 -6
- package/dist/rpc/rabbitmq/index.mjs.map +1 -1
- package/dist/rpc/redis/index.js +12 -9
- package/dist/rpc/redis/index.js.map +1 -1
- package/dist/rpc/redis/index.mjs +9 -6
- package/dist/rpc/redis/index.mjs.map +1 -1
- package/dist/server/express/index.js +27 -23
- package/dist/server/express/index.js.map +1 -1
- package/dist/server/express/index.mjs +11 -7
- package/dist/server/express/index.mjs.map +1 -1
- package/dist/server/fastify/index.js +24 -20
- package/dist/server/fastify/index.js.map +1 -1
- package/dist/server/fastify/index.mjs +11 -7
- package/dist/server/fastify/index.mjs.map +1 -1
- package/dist/server/h3/index.js +27 -23
- package/dist/server/h3/index.js.map +1 -1
- package/dist/server/h3/index.mjs +11 -7
- package/dist/server/h3/index.mjs.map +1 -1
- package/dist/server/koa/index.d.ts +22 -0
- package/dist/server/koa/index.js +193 -0
- package/dist/server/koa/index.js.map +1 -0
- package/dist/server/koa/index.mjs +193 -0
- package/dist/server/koa/index.mjs.map +1 -0
- package/dist/test.js +7 -9
- package/dist/test.js.map +1 -1
- package/dist/test.mjs +4 -6
- package/dist/test.mjs.map +1 -1
- package/package.json +10 -2
- package/register/index.mjs +1 -1
- package/register/loader.mjs +0 -1
- package/dist/chunk-3PXRNECS.mjs.map +0 -1
- package/dist/chunk-62QDU5FJ.js.map +0 -1
- package/dist/chunk-BP7CKHPK.js.map +0 -1
- package/dist/chunk-FPN7NODB.mjs.map +0 -1
- package/dist/chunk-IIGNGFDC.js +0 -47
- package/dist/chunk-IIGNGFDC.js.map +0 -1
- package/dist/chunk-Q4FA4TAV.mjs +0 -47
- package/dist/chunk-Q4FA4TAV.mjs.map +0 -1
- package/dist/chunk-UEH6FW5I.js.map +0 -1
- package/dist/supertest-G6LTYS5C.js +0 -21969
- package/dist/supertest-G6LTYS5C.js.map +0 -1
- package/dist/supertest-NLMK5OIC.mjs +0 -21969
- package/dist/supertest-NLMK5OIC.mjs.map +0 -1
- /package/dist/{chunk-JGSJIKGN.js.map → chunk-FAHHXHL5.js.map} +0 -0
- /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
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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","
|
|
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
|
-
|
|
5
|
-
|
|
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-
|
|
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":"
|
|
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":"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","names":["bind","ch","queue","moduleMap","meta","opts","metaMap","Map","existQueue","Set","globalGuards","globalInterceptors","isAopDepInject","guards","interceptors","handleMeta","item","data","rpc","method","name","type","includes","set","assertQueue","consume","msg","JSON","parse","content","toString","tag","args","id","context","Context","get","has","BadRequestException","params","paramsType","useGuard","cache","useInterceptor","undefined","sendToQueue","Buffer","from","stringify","handleArgs","usePipe","map","key","pipe","pipeOpts","index","i","arg","reflect","funcData","ret","usePostInterceptor","e","useFilter","error","noAck","IS_DEV","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"]}
|
package/dist/rpc/redis/index.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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","
|
|
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"]}
|
package/dist/rpc/redis/index.mjs
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BadRequestException,
|
|
3
|
-
Context
|
|
4
|
-
|
|
5
|
-
|
|
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-
|
|
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":"
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
47
|
+
_chunkLZAU5FUSjs.__name.call(void 0, handleMeta, "handleMeta");
|
|
44
48
|
async function createRoute() {
|
|
45
49
|
app.post(route, (req, _res, next) => {
|
|
46
|
-
req[
|
|
47
|
-
req[
|
|
48
|
-
req[
|
|
50
|
+
req[_chunkLZAU5FUSjs.MERGE_SYMBOL] = true;
|
|
51
|
+
req[_chunkLZAU5FUSjs.MODULE_SYMBOL] = moduleMap;
|
|
52
|
+
req[_chunkLZAU5FUSjs.META_SYMBOL] = meta;
|
|
49
53
|
next();
|
|
50
|
-
}, ...
|
|
54
|
+
}, ..._chunkYU7ROHTOjs.Context.usePlugin(plugins), async (req, res) => {
|
|
51
55
|
const { body } = req;
|
|
52
56
|
async function errorHandler(e) {
|
|
53
|
-
const error = await
|
|
57
|
+
const error = await _chunkYU7ROHTOjs.Context.filter(e);
|
|
54
58
|
return res.status(error.status).json(error);
|
|
55
59
|
}
|
|
56
|
-
|
|
60
|
+
_chunkLZAU5FUSjs.__name.call(void 0, errorHandler, "errorHandler");
|
|
57
61
|
if (!Array.isArray(body))
|
|
58
|
-
return errorHandler(new (0,
|
|
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
|
|
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,
|
|
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[
|
|
122
|
-
req[
|
|
125
|
+
req[_chunkLZAU5FUSjs.MODULE_SYMBOL] = moduleMap;
|
|
126
|
+
req[_chunkLZAU5FUSjs.META_SYMBOL] = meta;
|
|
123
127
|
next();
|
|
124
|
-
}, ...
|
|
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,
|
|
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:
|
|
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
|
-
|
|
182
|
+
_chunkLZAU5FUSjs.__name.call(void 0, createRoute, "createRoute");
|
|
179
183
|
handleMeta();
|
|
180
184
|
createRoute();
|
|
181
|
-
if (
|
|
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
|
-
|
|
195
|
+
_chunkLZAU5FUSjs.__name.call(void 0, bindApp, "bindApp");
|
|
192
196
|
|
|
193
197
|
|
|
194
198
|
exports.bindApp = bindApp;
|