phecda-server 1.4.0 → 1.5.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.
@@ -0,0 +1,136 @@
1
+ import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
2
+ import { Request, Response } from 'express';
3
+ import amqplib from 'amqplib';
4
+ import { Events } from 'phecda-core';
5
+
6
+ declare class Meta {
7
+ data: P.Meta;
8
+ handlers: P.Handler[];
9
+ reflect: any[];
10
+ constructor(data: P.Meta, handlers: P.Handler[], reflect: any[]);
11
+ }
12
+
13
+ declare class HttpException extends Error {
14
+ message: string;
15
+ status: number;
16
+ description: string;
17
+ constructor(message: string, status: number, description?: string);
18
+ get data(): {
19
+ message: string;
20
+ description: string;
21
+ status: number;
22
+ error: boolean;
23
+ };
24
+ }
25
+
26
+ type Construct<T = any> = new (...args: any[]) => T;
27
+ interface Emitter {
28
+ on<N extends keyof Events>(eventName: N, cb: (args: Events[N]) => void): void;
29
+ once<N extends keyof Events>(eventName: N, cb: (args: Events[N]) => void): void;
30
+ off<N extends keyof Events>(eventName: N, cb: (args: Events[N]) => void): void;
31
+ removeAllListeners<N extends keyof Events>(eventName: N): void;
32
+ emit<N extends keyof Events>(eventName: N, param: Events[N]): void;
33
+ }
34
+ type RequestType = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head';
35
+ type MergeType = <R extends Promise<any>[]>(...args: R) => {
36
+ [K in keyof R]: Awaited<R[K]>;
37
+ };
38
+ interface MqCtx {
39
+ content?: string;
40
+ message?: any;
41
+ channel?: amqplib.Channel;
42
+ }
43
+ interface ServerMergeCtx {
44
+ request: Request;
45
+ response: Response;
46
+ meta: Record<string, Meta>;
47
+ isMerge: true;
48
+ tags?: string[];
49
+ }
50
+ interface ServerCtx {
51
+ request: Request;
52
+ response: Response;
53
+ meta: Meta;
54
+ }
55
+ interface BaseError {
56
+ error: true;
57
+ status: number;
58
+ }
59
+ type ServerFilter<E extends HttpException = any> = (err: E | Error, contextData: ServerMergeCtx | ServerCtx) => any;
60
+ type MQFilter<E extends HttpException = any> = (err: E | Error, contextData: any) => any;
61
+ declare class Base {
62
+ context: ServerMergeCtx | ServerCtx;
63
+ }
64
+ declare namespace P {
65
+ interface Error extends BaseError {
66
+ message: string;
67
+ description: string;
68
+ }
69
+ type ResOrErr<R> = {
70
+ [K in keyof R]: Awaited<R[K]> | Error;
71
+ };
72
+ type Res<T> = T;
73
+ type Guard = ((contextData: ServerCtx, isMerge?: false) => Promise<boolean> | boolean) | ((contextData: ServerMergeCtx, isMerge?: true) => Promise<boolean> | boolean);
74
+ type Interceptor = ((contextData: ServerCtx, isMerge?: false) => any) | ((contextData: ServerMergeCtx, isMerge?: true) => any);
75
+ interface Handler {
76
+ error?: (arg: any) => void;
77
+ }
78
+ interface Meta {
79
+ route?: {
80
+ type: RequestType;
81
+ route: string;
82
+ };
83
+ mq?: {
84
+ queue: string;
85
+ routeKey: string;
86
+ options: amqplib.Options.Consume;
87
+ };
88
+ define?: any;
89
+ header: Record<string, string>;
90
+ params: {
91
+ type: string;
92
+ index: number;
93
+ key: string;
94
+ validate?: boolean;
95
+ }[];
96
+ guards: string[];
97
+ interceptors: string[];
98
+ middlewares: string[];
99
+ method: string;
100
+ name: string;
101
+ tag: string;
102
+ }
103
+ interface Pipe {
104
+ transform(args: {
105
+ arg: any;
106
+ validate?: boolean;
107
+ }[], reflect: any[]): Promise<any[]>;
108
+ }
109
+ }
110
+
111
+ interface RequestArgs {
112
+ body: Record<string, any>;
113
+ query: Record<string, string>;
114
+ params: Record<string, string>;
115
+ realParam: string;
116
+ method: RequestType;
117
+ url: string;
118
+ tag: string;
119
+ }
120
+ type MergedReqArg = Pick<RequestArgs, 'body' | 'query' | 'params' | 'tag'>;
121
+ declare function toReq(arg: RequestArgs): {
122
+ method: RequestType;
123
+ url: string;
124
+ body: Record<string, any>;
125
+ query: string;
126
+ params: string;
127
+ };
128
+ declare const merge: (...args: RequestArgs[]) => MergedReqArg[];
129
+ type RequestMethod = <F extends (...args: any[]) => any>(fn: F, args: Parameters<F>) => Promise<ReturnType<F>>;
130
+ declare function createReq(instance: AxiosInstance): <R>(arg: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<P.Res<Awaited<R>>>>;
131
+ declare function createSeriesReq(instance: AxiosInstance, key?: string): <R extends unknown[]>(args: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<P.ResOrErr<P.Res<R>>>>;
132
+ declare function createParallelReq(instance: AxiosInstance, key?: string): <R extends unknown[]>(args: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<P.ResOrErr<P.Res<R>>>>;
133
+ declare function isError<T = any>(data: T | P.Error): data is P.Error;
134
+ declare function $S(index: number, key?: string): any;
135
+
136
+ export { $S as $, BaseError as B, Construct as C, Emitter as E, HttpException as H, Meta as M, P, RequestType as R, ServerCtx as S, ServerMergeCtx as a, ServerFilter as b, MQFilter as c, MergeType as d, MqCtx as e, Base as f, RequestMethod as g, createReq as h, createSeriesReq as i, createParallelReq as j, isError as k, merge as m, toReq as t };
@@ -1,4 +1,4 @@
1
- export { $ as $S, l as RequestMethod, p as createParallelReq, n as createReq, o as createSeriesReq, q as isError, m as merge, t as toReq } from '../axios-95842cc3.js';
1
+ export { $ as $S, g as RequestMethod, j as createParallelReq, h as createReq, i as createSeriesReq, k as isError, m as merge, t as toReq } from '../axios-646333e3.js';
2
2
  import 'axios';
3
3
  import 'express';
4
4
  import 'amqplib';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/client/index.ts","../../src/common.ts","../../src/client/axios.ts"],"sourcesContent":["import { toReq } from './axios'\nexport * from './axios'\n\nexport function createBeacon(baseUrl: string) {\n return (arg: any) => {\n const { url, params, query, body } = toReq(arg as any)\n\n navigator.sendBeacon(`${baseUrl}${url}${params}${query}`, JSON.stringify(body))\n }\n}\n\nexport function useC<T extends new (...args: any) => any>(Module: T): InstanceType<T> {\n return new Module()\n}\n","export const SERIES_SYMBOL = '__symbol_series__'\nexport const MERGE_SYMBOL = '__symbol_req__'\n","import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport type { PError, PRes, RequestType, ResOrErr } from '../types'\nimport { SERIES_SYMBOL } from '../common'\ninterface RequestArgs {\n body: Record<string, any>\n query: Record<string, string>\n params: Record<string, string>\n realParam: string\n method: RequestType\n url: string\n tag: string\n}\ntype MergedReqArg = Pick<RequestArgs, 'body' | 'query' | 'params' | 'tag' >\nexport function toReq(arg: RequestArgs) {\n const { body, query, realParam, method, url } = arg\n return { method, url, body, query: Object.keys(query).length > 0 ? `?${Object.entries(query).map(([k, v]) => `${k}=${v}`).join('&')}` : '', params: realParam }\n}\n\nexport const merge = (...args: RequestArgs[]) => {\n const ret = [] as MergedReqArg[]\n for (const i of args) {\n const { body, query, params, tag } = i\n ret.push({ tag, body, query, params })\n }\n\n return ret\n}\n\nexport type RequestMethod = <F extends (...args: any[]) => any >(fn: F, args: Parameters<F>) => Promise<ReturnType<F>>\n\nexport function createReq(instance: AxiosInstance): <R>(arg: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<PRes<Awaited<R>>> > {\n // @ts-expect-error methods without route decorator won't send request\n return (arg: any, config?: AxiosRequestConfig) => {\n const { url, params, query, body, method } = toReq(arg as RequestArgs)\n if (!method) {\n console.warn('methods without route decorator won\\'t send request')\n return\n }\n\n const ret = [`${url}${params}${query}`] as any[]\n body && ret.push(body)\n config && ret.push(config)\n // @ts-expect-error misdirction\n return instance[method](...ret)\n }\n}\n\nexport function createSeriesReq(instance: AxiosInstance, key = '/__PHECDA_SERVER__'): < R extends unknown[]>(args: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<ResOrErr<PRes<R>>>> {\n // @ts-expect-error misdirction\n return (args: RequestArgs[], config?: AxiosRequestConfig) => {\n return instance.post(key, {\n category: 'series',\n data: merge(...args),\n }, config)\n }\n}\n\nexport function createParallelReq(instance: AxiosInstance, key = '/__PHECDA_SERVER__'): < R extends unknown[]>(args: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<ResOrErr<PRes<R>>>> {\n // @ts-expect-error misdirction\n return (args: RequestArgs[], config?: AxiosRequestConfig) => {\n return instance.post(key, {\n category: 'parallel',\n data: merge(...args),\n }, config)\n }\n}\n\nexport function isError<T = any>(data: T | PError): data is PError {\n return typeof data === 'object' && (data as any).error\n}\n\nexport function $S(index: number, key = ''): any {\n return `${SERIES_SYMBOL}@${index}@${key}`\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;ACAO,IAAMA,gBAAgB;;;ACatB,SAASC,MAAMC,KAAkB;AACtC,QAAM,EAAEC,MAAMC,OAAOC,WAAWC,QAAQC,IAAG,IAAKL;AAChD,SAAO;IAAEI;IAAQC;IAAKJ;IAAMC,OAAOI,OAAOC,KAAKL,KAAAA,EAAOM,SAAS,IAAI,IAAIF,OAAOG,QAAQP,KAAAA,EAAOQ,IAAI,CAAC,CAACC,GAAGC,CAAAA,MAAO,GAAGD,KAAKC,GAAG,EAAEC,KAAK,GAAA,MAAS;IAAIC,QAAQX;EAAU;AAChK;AAHgBJ;AAKT,IAAMgB,QAAQ,2BAAIC,SAAwB;AAC/C,QAAMC,MAAM,CAAA;AACZ,aAAWC,KAAKF,MAAM;AACpB,UAAM,EAAEf,MAAMC,OAAOY,QAAQK,IAAG,IAAKD;AACrCD,QAAIG,KAAK;MAAED;MAAKlB;MAAMC;MAAOY;IAAO,CAAA;EACtC;AAEA,SAAOG;AACT,GARqB;AAYd,SAASI,UAAUC,UAAgH;AAExI,SAAO,CAACtB,KAAUuB,WAAgC;AAChD,UAAM,EAAElB,KAAKS,QAAQZ,OAAOD,MAAMG,OAAM,IAAKL,MAAMC,GAAAA;AACnD,QAAI,CAACI,QAAQ;AACXoB,cAAQC,KAAK,oDAAA;AACb;IACF;AAEA,UAAMR,MAAM;MAAC,GAAGZ,MAAMS,SAASZ;;AAC/BD,YAAQgB,IAAIG,KAAKnB,IAAAA;AACjBsB,cAAUN,IAAIG,KAAKG,MAAAA;AAEnB,WAAOD,SAASlB,QAAO,GAAIa,GAAAA;EAC7B;AACF;AAfgBI;AAiBT,SAASK,gBAAgBJ,UAAyBK,MAAM,sBAAiI;AAE9L,SAAO,CAACX,MAAqBO,WAAgC;AAC3D,WAAOD,SAASM,KAAKD,KAAK;MACxBE,UAAU;MACVC,MAAMf,MAAAA,GAASC,IAAAA;IACjB,GAAGO,MAAAA;EACL;AACF;AARgBG;AAUT,SAASK,kBAAkBT,UAAyBK,MAAM,sBAAiI;AAEhM,SAAO,CAACX,MAAqBO,WAAgC;AAC3D,WAAOD,SAASM,KAAKD,KAAK;MACxBE,UAAU;MACVC,MAAMf,MAAAA,GAASC,IAAAA;IACjB,GAAGO,MAAAA;EACL;AACF;AARgBQ;AAUT,SAASC,QAAiBF,MAAkC;AACjE,SAAO,OAAOA,SAAS,YAAaA,KAAaG;AACnD;AAFgBD;AAIT,SAASE,GAAGC,OAAeR,MAAM,IAAS;AAC/C,SAAO,GAAGS,iBAAiBD,SAASR;AACtC;AAFgBO;;;AFpET,SAASG,aAAaC,SAAiB;AAC5C,SAAO,CAACC,QAAa;AACnB,UAAM,EAAEC,KAAKC,QAAQC,OAAOC,KAAI,IAAKC,MAAML,GAAAA;AAE3CM,cAAUC,WAAW,GAAGR,UAAUE,MAAMC,SAASC,SAASK,KAAKC,UAAUL,IAAAA,CAAAA;EAC3E;AACF;AANgBN;AAQT,SAASY,KAA0CC,QAA4B;AACpF,SAAO,IAAIA,OAAAA;AACb;AAFgBD;","names":["SERIES_SYMBOL","toReq","arg","body","query","realParam","method","url","Object","keys","length","entries","map","k","v","join","params","merge","args","ret","i","tag","push","createReq","instance","config","console","warn","createSeriesReq","key","post","category","data","createParallelReq","isError","error","$S","index","SERIES_SYMBOL","createBeacon","baseUrl","arg","url","params","query","body","toReq","navigator","sendBeacon","JSON","stringify","useC","Module"]}
1
+ {"version":3,"sources":["../../src/client/index.ts","../../src/common.ts","../../src/client/axios.ts"],"sourcesContent":["import { toReq } from './axios'\nexport * from './axios'\n\nexport function createBeacon(baseUrl: string) {\n return (arg: any) => {\n const { url, params, query, body } = toReq(arg as any)\n\n navigator.sendBeacon(`${baseUrl}${url}${params}${query}`, JSON.stringify(body))\n }\n}\n\nexport function useC<T extends new (...args: any) => any>(Module: T): InstanceType<T> {\n return new Module()\n}\n","export const SERIES_SYMBOL = '__symbol_series__'\nexport const MERGE_SYMBOL = '__symbol_req__'\n","import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport type { P, RequestType } from '../types'\nimport { SERIES_SYMBOL } from '../common'\ninterface RequestArgs {\n body: Record<string, any>\n query: Record<string, string>\n params: Record<string, string>\n realParam: string\n method: RequestType\n url: string\n tag: string\n}\ntype MergedReqArg = Pick<RequestArgs, 'body' | 'query' | 'params' | 'tag' >\nexport function toReq(arg: RequestArgs) {\n const { body, query, realParam, method, url } = arg\n return { method, url, body, query: Object.keys(query).length > 0 ? `?${Object.entries(query).map(([k, v]) => `${k}=${v}`).join('&')}` : '', params: realParam }\n}\n\nexport const merge = (...args: RequestArgs[]) => {\n const ret = [] as MergedReqArg[]\n for (const i of args) {\n const { body, query, params, tag } = i\n ret.push({ tag, body, query, params })\n }\n\n return ret\n}\n\nexport type RequestMethod = <F extends (...args: any[]) => any >(fn: F, args: Parameters<F>) => Promise<ReturnType<F>>\n\nexport function createReq(instance: AxiosInstance): <R>(arg: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<P.Res<Awaited<R>>> > {\n // @ts-expect-error methods without route decorator won't send request\n return (arg: any, config?: AxiosRequestConfig) => {\n const { url, params, query, body, method } = toReq(arg as RequestArgs)\n if (!method) {\n console.warn('methods without route decorator won\\'t send request')\n return\n }\n\n const ret = [`${url}${params}${query}`] as any[]\n body && ret.push(body)\n config && ret.push(config)\n // @ts-expect-error misdirction\n return instance[method](...ret)\n }\n}\n\nexport function createSeriesReq(instance: AxiosInstance, key = '/__PHECDA_SERVER__'): < R extends unknown[]>(args: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<P.ResOrErr<P.Res<R>>>> {\n // @ts-expect-error misdirction\n return (args: RequestArgs[], config?: AxiosRequestConfig) => {\n return instance.post(key, {\n category: 'series',\n data: merge(...args),\n }, config)\n }\n}\n\nexport function createParallelReq(instance: AxiosInstance, key = '/__PHECDA_SERVER__'): < R extends unknown[]>(args: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<P.ResOrErr<P.Res<R>>>> {\n // @ts-expect-error misdirction\n return (args: RequestArgs[], config?: AxiosRequestConfig) => {\n return instance.post(key, {\n category: 'parallel',\n data: merge(...args),\n }, config)\n }\n}\n\nexport function isError<T = any>(data: T | P.Error): data is P.Error {\n return typeof data === 'object' && (data as any).error\n}\n\nexport function $S(index: number, key = ''): any {\n return `${SERIES_SYMBOL}@${index}@${key}`\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;ACAO,IAAMA,gBAAgB;;;ACatB,SAASC,MAAMC,KAAkB;AACtC,QAAM,EAAEC,MAAMC,OAAOC,WAAWC,QAAQC,IAAG,IAAKL;AAChD,SAAO;IAAEI;IAAQC;IAAKJ;IAAMC,OAAOI,OAAOC,KAAKL,KAAAA,EAAOM,SAAS,IAAI,IAAIF,OAAOG,QAAQP,KAAAA,EAAOQ,IAAI,CAAC,CAACC,GAAGC,CAAAA,MAAO,GAAGD,KAAKC,GAAG,EAAEC,KAAK,GAAA,MAAS;IAAIC,QAAQX;EAAU;AAChK;AAHgBJ;AAKT,IAAMgB,QAAQ,2BAAIC,SAAwB;AAC/C,QAAMC,MAAM,CAAA;AACZ,aAAWC,KAAKF,MAAM;AACpB,UAAM,EAAEf,MAAMC,OAAOY,QAAQK,IAAG,IAAKD;AACrCD,QAAIG,KAAK;MAAED;MAAKlB;MAAMC;MAAOY;IAAO,CAAA;EACtC;AAEA,SAAOG;AACT,GARqB;AAYd,SAASI,UAAUC,UAAiH;AAEzI,SAAO,CAACtB,KAAUuB,WAAgC;AAChD,UAAM,EAAElB,KAAKS,QAAQZ,OAAOD,MAAMG,OAAM,IAAKL,MAAMC,GAAAA;AACnD,QAAI,CAACI,QAAQ;AACXoB,cAAQC,KAAK,oDAAA;AACb;IACF;AAEA,UAAMR,MAAM;MAAC,GAAGZ,MAAMS,SAASZ;;AAC/BD,YAAQgB,IAAIG,KAAKnB,IAAAA;AACjBsB,cAAUN,IAAIG,KAAKG,MAAAA;AAEnB,WAAOD,SAASlB,QAAO,GAAIa,GAAAA;EAC7B;AACF;AAfgBI;AAiBT,SAASK,gBAAgBJ,UAAyBK,MAAM,sBAAoI;AAEjM,SAAO,CAACX,MAAqBO,WAAgC;AAC3D,WAAOD,SAASM,KAAKD,KAAK;MACxBE,UAAU;MACVC,MAAMf,MAAAA,GAASC,IAAAA;IACjB,GAAGO,MAAAA;EACL;AACF;AARgBG;AAUT,SAASK,kBAAkBT,UAAyBK,MAAM,sBAAoI;AAEnM,SAAO,CAACX,MAAqBO,WAAgC;AAC3D,WAAOD,SAASM,KAAKD,KAAK;MACxBE,UAAU;MACVC,MAAMf,MAAAA,GAASC,IAAAA;IACjB,GAAGO,MAAAA;EACL;AACF;AARgBQ;AAUT,SAASC,QAAiBF,MAAoC;AACnE,SAAO,OAAOA,SAAS,YAAaA,KAAaG;AACnD;AAFgBD;AAIT,SAASE,GAAGC,OAAeR,MAAM,IAAS;AAC/C,SAAO,GAAGS,iBAAiBD,SAASR;AACtC;AAFgBO;;;AFpET,SAASG,aAAaC,SAAiB;AAC5C,SAAO,CAACC,QAAa;AACnB,UAAM,EAAEC,KAAKC,QAAQC,OAAOC,KAAI,IAAKC,MAAML,GAAAA;AAE3CM,cAAUC,WAAW,GAAGR,UAAUE,MAAMC,SAASC,SAASK,KAAKC,UAAUL,IAAAA,CAAAA;EAC3E;AACF;AANgBN;AAQT,SAASY,KAA0CC,QAA4B;AACpF,SAAO,IAAIA,OAAAA;AACb;AAFgBD;","names":["SERIES_SYMBOL","toReq","arg","body","query","realParam","method","url","Object","keys","length","entries","map","k","v","join","params","merge","args","ret","i","tag","push","createReq","instance","config","console","warn","createSeriesReq","key","post","category","data","createParallelReq","isError","error","$S","index","SERIES_SYMBOL","createBeacon","baseUrl","arg","url","params","query","body","toReq","navigator","sendBeacon","JSON","stringify","useC","Module"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/common.ts","../../src/client/axios.ts","../../src/client/index.ts"],"sourcesContent":["export const SERIES_SYMBOL = '__symbol_series__'\nexport const MERGE_SYMBOL = '__symbol_req__'\n","import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport type { PError, PRes, RequestType, ResOrErr } from '../types'\nimport { SERIES_SYMBOL } from '../common'\ninterface RequestArgs {\n body: Record<string, any>\n query: Record<string, string>\n params: Record<string, string>\n realParam: string\n method: RequestType\n url: string\n tag: string\n}\ntype MergedReqArg = Pick<RequestArgs, 'body' | 'query' | 'params' | 'tag' >\nexport function toReq(arg: RequestArgs) {\n const { body, query, realParam, method, url } = arg\n return { method, url, body, query: Object.keys(query).length > 0 ? `?${Object.entries(query).map(([k, v]) => `${k}=${v}`).join('&')}` : '', params: realParam }\n}\n\nexport const merge = (...args: RequestArgs[]) => {\n const ret = [] as MergedReqArg[]\n for (const i of args) {\n const { body, query, params, tag } = i\n ret.push({ tag, body, query, params })\n }\n\n return ret\n}\n\nexport type RequestMethod = <F extends (...args: any[]) => any >(fn: F, args: Parameters<F>) => Promise<ReturnType<F>>\n\nexport function createReq(instance: AxiosInstance): <R>(arg: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<PRes<Awaited<R>>> > {\n // @ts-expect-error methods without route decorator won't send request\n return (arg: any, config?: AxiosRequestConfig) => {\n const { url, params, query, body, method } = toReq(arg as RequestArgs)\n if (!method) {\n console.warn('methods without route decorator won\\'t send request')\n return\n }\n\n const ret = [`${url}${params}${query}`] as any[]\n body && ret.push(body)\n config && ret.push(config)\n // @ts-expect-error misdirction\n return instance[method](...ret)\n }\n}\n\nexport function createSeriesReq(instance: AxiosInstance, key = '/__PHECDA_SERVER__'): < R extends unknown[]>(args: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<ResOrErr<PRes<R>>>> {\n // @ts-expect-error misdirction\n return (args: RequestArgs[], config?: AxiosRequestConfig) => {\n return instance.post(key, {\n category: 'series',\n data: merge(...args),\n }, config)\n }\n}\n\nexport function createParallelReq(instance: AxiosInstance, key = '/__PHECDA_SERVER__'): < R extends unknown[]>(args: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<ResOrErr<PRes<R>>>> {\n // @ts-expect-error misdirction\n return (args: RequestArgs[], config?: AxiosRequestConfig) => {\n return instance.post(key, {\n category: 'parallel',\n data: merge(...args),\n }, config)\n }\n}\n\nexport function isError<T = any>(data: T | PError): data is PError {\n return typeof data === 'object' && (data as any).error\n}\n\nexport function $S(index: number, key = ''): any {\n return `${SERIES_SYMBOL}@${index}@${key}`\n}\n","import { toReq } from './axios'\nexport * from './axios'\n\nexport function createBeacon(baseUrl: string) {\n return (arg: any) => {\n const { url, params, query, body } = toReq(arg as any)\n\n navigator.sendBeacon(`${baseUrl}${url}${params}${query}`, JSON.stringify(body))\n }\n}\n\nexport function useC<T extends new (...args: any) => any>(Module: T): InstanceType<T> {\n return new Module()\n}\n"],"mappings":";;;;AAAO,IAAMA,gBAAgB;;;ACatB,SAASC,MAAMC,KAAkB;AACtC,QAAM,EAAEC,MAAMC,OAAOC,WAAWC,QAAQC,IAAG,IAAKL;AAChD,SAAO;IAAEI;IAAQC;IAAKJ;IAAMC,OAAOI,OAAOC,KAAKL,KAAAA,EAAOM,SAAS,IAAI,IAAIF,OAAOG,QAAQP,KAAAA,EAAOQ,IAAI,CAAC,CAACC,GAAGC,CAAAA,MAAO,GAAGD,KAAKC,GAAG,EAAEC,KAAK,GAAA,MAAS;IAAIC,QAAQX;EAAU;AAChK;AAHgBJ;AAKT,IAAMgB,QAAQ,2BAAIC,SAAwB;AAC/C,QAAMC,MAAM,CAAA;AACZ,aAAWC,KAAKF,MAAM;AACpB,UAAM,EAAEf,MAAMC,OAAOY,QAAQK,IAAG,IAAKD;AACrCD,QAAIG,KAAK;MAAED;MAAKlB;MAAMC;MAAOY;IAAO,CAAA;EACtC;AAEA,SAAOG;AACT,GARqB;AAYd,SAASI,UAAUC,UAAgH;AAExI,SAAO,CAACtB,KAAUuB,WAAgC;AAChD,UAAM,EAAElB,KAAKS,QAAQZ,OAAOD,MAAMG,OAAM,IAAKL,MAAMC,GAAAA;AACnD,QAAI,CAACI,QAAQ;AACXoB,cAAQC,KAAK,oDAAA;AACb;IACF;AAEA,UAAMR,MAAM;MAAC,GAAGZ,MAAMS,SAASZ;;AAC/BD,YAAQgB,IAAIG,KAAKnB,IAAAA;AACjBsB,cAAUN,IAAIG,KAAKG,MAAAA;AAEnB,WAAOD,SAASlB,QAAO,GAAIa,GAAAA;EAC7B;AACF;AAfgBI;AAiBT,SAASK,gBAAgBJ,UAAyBK,MAAM,sBAAiI;AAE9L,SAAO,CAACX,MAAqBO,WAAgC;AAC3D,WAAOD,SAASM,KAAKD,KAAK;MACxBE,UAAU;MACVC,MAAMf,MAAAA,GAASC,IAAAA;IACjB,GAAGO,MAAAA;EACL;AACF;AARgBG;AAUT,SAASK,kBAAkBT,UAAyBK,MAAM,sBAAiI;AAEhM,SAAO,CAACX,MAAqBO,WAAgC;AAC3D,WAAOD,SAASM,KAAKD,KAAK;MACxBE,UAAU;MACVC,MAAMf,MAAAA,GAASC,IAAAA;IACjB,GAAGO,MAAAA;EACL;AACF;AARgBQ;AAUT,SAASC,QAAiBF,MAAkC;AACjE,SAAO,OAAOA,SAAS,YAAaA,KAAaG;AACnD;AAFgBD;AAIT,SAASE,GAAGC,OAAeR,MAAM,IAAS;AAC/C,SAAO,GAAGS,iBAAiBD,SAASR;AACtC;AAFgBO;;;ACpET,SAASG,aAAaC,SAAiB;AAC5C,SAAO,CAACC,QAAa;AACnB,UAAM,EAAEC,KAAKC,QAAQC,OAAOC,KAAI,IAAKC,MAAML,GAAAA;AAE3CM,cAAUC,WAAW,GAAGR,UAAUE,MAAMC,SAASC,SAASK,KAAKC,UAAUL,IAAAA,CAAAA;EAC3E;AACF;AANgBN;AAQT,SAASY,KAA0CC,QAA4B;AACpF,SAAO,IAAIA,OAAAA;AACb;AAFgBD;","names":["SERIES_SYMBOL","toReq","arg","body","query","realParam","method","url","Object","keys","length","entries","map","k","v","join","params","merge","args","ret","i","tag","push","createReq","instance","config","console","warn","createSeriesReq","key","post","category","data","createParallelReq","isError","error","$S","index","SERIES_SYMBOL","createBeacon","baseUrl","arg","url","params","query","body","toReq","navigator","sendBeacon","JSON","stringify","useC","Module"]}
1
+ {"version":3,"sources":["../../src/common.ts","../../src/client/axios.ts","../../src/client/index.ts"],"sourcesContent":["export const SERIES_SYMBOL = '__symbol_series__'\nexport const MERGE_SYMBOL = '__symbol_req__'\n","import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport type { P, RequestType } from '../types'\nimport { SERIES_SYMBOL } from '../common'\ninterface RequestArgs {\n body: Record<string, any>\n query: Record<string, string>\n params: Record<string, string>\n realParam: string\n method: RequestType\n url: string\n tag: string\n}\ntype MergedReqArg = Pick<RequestArgs, 'body' | 'query' | 'params' | 'tag' >\nexport function toReq(arg: RequestArgs) {\n const { body, query, realParam, method, url } = arg\n return { method, url, body, query: Object.keys(query).length > 0 ? `?${Object.entries(query).map(([k, v]) => `${k}=${v}`).join('&')}` : '', params: realParam }\n}\n\nexport const merge = (...args: RequestArgs[]) => {\n const ret = [] as MergedReqArg[]\n for (const i of args) {\n const { body, query, params, tag } = i\n ret.push({ tag, body, query, params })\n }\n\n return ret\n}\n\nexport type RequestMethod = <F extends (...args: any[]) => any >(fn: F, args: Parameters<F>) => Promise<ReturnType<F>>\n\nexport function createReq(instance: AxiosInstance): <R>(arg: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<P.Res<Awaited<R>>> > {\n // @ts-expect-error methods without route decorator won't send request\n return (arg: any, config?: AxiosRequestConfig) => {\n const { url, params, query, body, method } = toReq(arg as RequestArgs)\n if (!method) {\n console.warn('methods without route decorator won\\'t send request')\n return\n }\n\n const ret = [`${url}${params}${query}`] as any[]\n body && ret.push(body)\n config && ret.push(config)\n // @ts-expect-error misdirction\n return instance[method](...ret)\n }\n}\n\nexport function createSeriesReq(instance: AxiosInstance, key = '/__PHECDA_SERVER__'): < R extends unknown[]>(args: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<P.ResOrErr<P.Res<R>>>> {\n // @ts-expect-error misdirction\n return (args: RequestArgs[], config?: AxiosRequestConfig) => {\n return instance.post(key, {\n category: 'series',\n data: merge(...args),\n }, config)\n }\n}\n\nexport function createParallelReq(instance: AxiosInstance, key = '/__PHECDA_SERVER__'): < R extends unknown[]>(args: R, config?: AxiosRequestConfig) => Promise<AxiosResponse<P.ResOrErr<P.Res<R>>>> {\n // @ts-expect-error misdirction\n return (args: RequestArgs[], config?: AxiosRequestConfig) => {\n return instance.post(key, {\n category: 'parallel',\n data: merge(...args),\n }, config)\n }\n}\n\nexport function isError<T = any>(data: T | P.Error): data is P.Error {\n return typeof data === 'object' && (data as any).error\n}\n\nexport function $S(index: number, key = ''): any {\n return `${SERIES_SYMBOL}@${index}@${key}`\n}\n","import { toReq } from './axios'\nexport * from './axios'\n\nexport function createBeacon(baseUrl: string) {\n return (arg: any) => {\n const { url, params, query, body } = toReq(arg as any)\n\n navigator.sendBeacon(`${baseUrl}${url}${params}${query}`, JSON.stringify(body))\n }\n}\n\nexport function useC<T extends new (...args: any) => any>(Module: T): InstanceType<T> {\n return new Module()\n}\n"],"mappings":";;;;AAAO,IAAMA,gBAAgB;;;ACatB,SAASC,MAAMC,KAAkB;AACtC,QAAM,EAAEC,MAAMC,OAAOC,WAAWC,QAAQC,IAAG,IAAKL;AAChD,SAAO;IAAEI;IAAQC;IAAKJ;IAAMC,OAAOI,OAAOC,KAAKL,KAAAA,EAAOM,SAAS,IAAI,IAAIF,OAAOG,QAAQP,KAAAA,EAAOQ,IAAI,CAAC,CAACC,GAAGC,CAAAA,MAAO,GAAGD,KAAKC,GAAG,EAAEC,KAAK,GAAA,MAAS;IAAIC,QAAQX;EAAU;AAChK;AAHgBJ;AAKT,IAAMgB,QAAQ,2BAAIC,SAAwB;AAC/C,QAAMC,MAAM,CAAA;AACZ,aAAWC,KAAKF,MAAM;AACpB,UAAM,EAAEf,MAAMC,OAAOY,QAAQK,IAAG,IAAKD;AACrCD,QAAIG,KAAK;MAAED;MAAKlB;MAAMC;MAAOY;IAAO,CAAA;EACtC;AAEA,SAAOG;AACT,GARqB;AAYd,SAASI,UAAUC,UAAiH;AAEzI,SAAO,CAACtB,KAAUuB,WAAgC;AAChD,UAAM,EAAElB,KAAKS,QAAQZ,OAAOD,MAAMG,OAAM,IAAKL,MAAMC,GAAAA;AACnD,QAAI,CAACI,QAAQ;AACXoB,cAAQC,KAAK,oDAAA;AACb;IACF;AAEA,UAAMR,MAAM;MAAC,GAAGZ,MAAMS,SAASZ;;AAC/BD,YAAQgB,IAAIG,KAAKnB,IAAAA;AACjBsB,cAAUN,IAAIG,KAAKG,MAAAA;AAEnB,WAAOD,SAASlB,QAAO,GAAIa,GAAAA;EAC7B;AACF;AAfgBI;AAiBT,SAASK,gBAAgBJ,UAAyBK,MAAM,sBAAoI;AAEjM,SAAO,CAACX,MAAqBO,WAAgC;AAC3D,WAAOD,SAASM,KAAKD,KAAK;MACxBE,UAAU;MACVC,MAAMf,MAAAA,GAASC,IAAAA;IACjB,GAAGO,MAAAA;EACL;AACF;AARgBG;AAUT,SAASK,kBAAkBT,UAAyBK,MAAM,sBAAoI;AAEnM,SAAO,CAACX,MAAqBO,WAAgC;AAC3D,WAAOD,SAASM,KAAKD,KAAK;MACxBE,UAAU;MACVC,MAAMf,MAAAA,GAASC,IAAAA;IACjB,GAAGO,MAAAA;EACL;AACF;AARgBQ;AAUT,SAASC,QAAiBF,MAAoC;AACnE,SAAO,OAAOA,SAAS,YAAaA,KAAaG;AACnD;AAFgBD;AAIT,SAASE,GAAGC,OAAeR,MAAM,IAAS;AAC/C,SAAO,GAAGS,iBAAiBD,SAASR;AACtC;AAFgBO;;;ACpET,SAASG,aAAaC,SAAiB;AAC5C,SAAO,CAACC,QAAa;AACnB,UAAM,EAAEC,KAAKC,QAAQC,OAAOC,KAAI,IAAKC,MAAML,GAAAA;AAE3CM,cAAUC,WAAW,GAAGR,UAAUE,MAAMC,SAASC,SAASK,KAAKC,UAAUL,IAAAA,CAAAA;EAC3E;AACF;AANgBN;AAQT,SAASY,KAA0CC,QAA4B;AACpF,SAAO,IAAIA,OAAAA;AACb;AAFgBD;","names":["SERIES_SYMBOL","toReq","arg","body","query","realParam","method","url","Object","keys","length","entries","map","k","v","join","params","merge","args","ret","i","tag","push","createReq","instance","config","console","warn","createSeriesReq","key","post","category","data","createParallelReq","isError","error","$S","index","SERIES_SYMBOL","createBeacon","baseUrl","arg","url","params","query","body","toReq","navigator","sendBeacon","JSON","stringify","useC","Module"]}
package/dist/index.d.ts CHANGED
@@ -1,31 +1,10 @@
1
1
  import { RequestHandler, Express } from 'express';
2
- import { S as ServerMergeCtx, a as ServerCtx, P as Pmeta, b as Pguard, c as Pinterceptor, d as ServerMeta, E as Emitter } from './axios-95842cc3.js';
3
- export { $ as $S, k as Base, B as BaseError, C as Construct, M as MergeType, j as MqContextData, f as PError, e as PHandler, h as PRes, l as RequestMethod, R as RequestType, g as ResOrErr, i as ServerContextData, p as createParallelReq, n as createReq, o as createSeriesReq, q as isError, m as merge, t as toReq } from './axios-95842cc3.js';
2
+ import { H as HttpException, M as Meta, P, S as ServerCtx, a as ServerMergeCtx, b as ServerFilter, c as MQFilter, E as Emitter } from './axios-646333e3.js';
3
+ export { $ as $S, f as Base, B as BaseError, C as Construct, d as MergeType, e as MqCtx, g as RequestMethod, R as RequestType, j as createParallelReq, h as createReq, i as createSeriesReq, k as isError, m as merge, t as toReq } from './axios-646333e3.js';
4
4
  export * from 'phecda-core';
5
5
  import amqplib from 'amqplib';
6
6
  import 'axios';
7
7
 
8
- interface ValidatePipe {
9
- transform(args: {
10
- arg: any;
11
- validate?: boolean;
12
- }[], reflect: any[]): Promise<any[]>;
13
- }
14
- declare const defaultPipe: ValidatePipe;
15
-
16
- declare class HttpException extends Error {
17
- message: string;
18
- status: number;
19
- description: string;
20
- constructor(message: string, status: number, description?: string);
21
- get data(): {
22
- message: string;
23
- description: string;
24
- status: number;
25
- error: boolean;
26
- };
27
- }
28
-
29
8
  declare class UndefinedException extends HttpException {
30
9
  constructor(message: string);
31
10
  }
@@ -82,25 +61,22 @@ declare class FrameworkException extends HttpException {
82
61
  constructor(message: string);
83
62
  }
84
63
 
85
- type ServerFilter<E extends HttpException = any> = (err: E | Error, contextData: ServerMergeCtx | ServerCtx) => any;
86
- type MQFilter<E extends HttpException = any> = (err: E | Error, contextData: any) => any;
87
-
88
64
  declare class Phistroy {
89
65
  guard: string[];
90
66
  interceptor: string[];
91
67
  record(name: string, type: 'guard' | 'interceptor'): boolean;
92
68
  }
93
69
 
94
- declare abstract class Pcontext<Data = any> {
70
+ declare abstract class Context<Data = any> {
95
71
  key: string;
96
72
  data: Data;
97
73
  method: string;
98
74
  params: string[];
99
- static metaRecord: Record<string, Pmeta>;
75
+ static metaRecord: Record<string, Meta>;
100
76
  static metaDataRecord: Record<string, ReturnType<typeof parseMeta>>;
101
77
  static instanceRecord: Record<string, any>;
102
- static guardsRecord: Record<string, (req: any, isMerge: boolean) => boolean>;
103
- static interceptorsRecord: Record<string, (req: any, isMerge: boolean) => any>;
78
+ static guardsRecord: Record<string, any>;
79
+ static interceptorsRecord: Record<string, any>;
104
80
  post: ((...params: any) => any)[];
105
81
  history: Phistroy;
106
82
  constructor(key: string, data: Data);
@@ -110,10 +86,10 @@ declare abstract class Pcontext<Data = any> {
110
86
  useInterceptor(interceptors: string[], isMerge?: boolean): Promise<void>;
111
87
  usePost(data: any): Promise<any>;
112
88
  }
113
- declare function addGuard(key: string, handler: Pguard): void;
114
- declare function addInterceptor(key: string, handler: Pinterceptor): void;
89
+ declare function addGuard(key: string, handler: P.Guard): void;
90
+ declare function addInterceptor(key: string, handler: P.Interceptor): void;
115
91
  declare function getInstance(tag: string): any;
116
- declare function parseMeta(meta: Pmeta): {
92
+ declare function parseMeta(meta: Meta): {
117
93
  guards: string[];
118
94
  reflect: any[];
119
95
  interceptors: string[];
@@ -125,8 +101,8 @@ declare function parseMeta(meta: Pmeta): {
125
101
  }[];
126
102
  };
127
103
 
128
- declare class ServerContext extends Pcontext<ServerCtx | ServerMergeCtx> {
129
- static pipe: ValidatePipe;
104
+ declare class ServerContext extends Context<ServerCtx | ServerMergeCtx> {
105
+ static pipe: P.Pipe;
130
106
  static filter: ServerFilter<any>;
131
107
  static middlewareRecord: Record<string, (...params: any) => any>;
132
108
  static useMiddleware(middlewares: string[]): ((...params: any) => any)[];
@@ -138,11 +114,11 @@ declare class ServerContext extends Pcontext<ServerCtx | ServerMergeCtx> {
138
114
  useFilter(arg: any): any;
139
115
  }
140
116
  declare function addMiddleware(key: string, handler: RequestHandler): void;
141
- declare function useServerPipe(pipe: ValidatePipe): void;
117
+ declare function useServerPipe(pipe: P.Pipe): void;
142
118
  declare function useServerFilter(filter: ServerFilter): void;
143
119
 
144
- declare class RabbitMqContext extends Pcontext {
145
- static pipe: ValidatePipe;
120
+ declare class RabbitMqContext extends Context {
121
+ static pipe: P.Pipe;
146
122
  static filter: MQFilter<any>;
147
123
  static middlewareRecord: Record<string, (...params: any) => boolean>;
148
124
  static useMiddleware(middlewares: string[]): ((...params: any) => boolean)[];
@@ -153,23 +129,24 @@ declare class RabbitMqContext extends Pcontext {
153
129
  static useFilter(arg: any, data: MQFilter): any;
154
130
  useFilter(arg: any): any;
155
131
  }
156
- declare function useMqPipe(pipe: ValidatePipe): void;
132
+ declare function useMqPipe(pipe: P.Pipe): void;
157
133
  declare function useMqFilter(filter: MQFilter): void;
158
134
 
159
- declare class Pcompiler {
160
- content: string;
135
+ declare class Compiler {
161
136
  classMap: Record<string, {
162
137
  [key: string]: string;
163
138
  }>;
139
+ name: string;
164
140
  constructor();
165
141
  getContent(): string;
166
- addMethod(args: ServerMeta): void;
142
+ createRequest(): string;
143
+ addMethod(args: P.Meta): void;
167
144
  }
168
145
 
169
146
  declare const emitter: Emitter;
170
147
  declare function Factory(Modules: (new (...args: any) => any)[]): Promise<{
171
148
  moduleMap: Map<string, any>;
172
- meta: Pmeta[];
149
+ meta: Meta[];
173
150
  output: (p?: string) => void;
174
151
  }>;
175
152
 
@@ -200,7 +177,9 @@ declare function MQ(queue: string, routeKey: string, options?: amqplib.Options.C
200
177
 
201
178
  declare function Inject(_target: any): void;
202
179
  declare function Header(name: string, value: string): (target: any, k: PropertyKey) => void;
203
- declare function Meta(key: string, value: any): (target: any, k: PropertyKey) => void;
180
+ declare function Define(key: string, value: any): (target: any, k: PropertyKey) => void;
181
+
182
+ declare const defaultPipe: P.Pipe;
204
183
 
205
184
  declare function bindMQ(ch: amqplib.Channel, { meta, moduleMap }: Awaited<ReturnType<typeof Factory>>): Promise<void>;
206
185
  type MqMethod<T> = (arg: T) => void;
@@ -208,4 +187,4 @@ declare function createPub<T extends (...args: any[]) => any>(ch: amqplib.Channe
208
187
 
209
188
  declare function createMqReq(channel: amqplib.Channel): <R>(arg: R) => Promise<void>;
210
189
 
211
- export { BadGatewayException, BadRequestException, BaseParam, Body, ConflictException, Controller, Delete, Emitter, Factory, ForbiddenException, FrameworkException, Get, Guard, Header, HttpException, Inject, Interceptor, InvalidInputException, MQ, Meta, Middle, NotFoundException, Options, Param, PayloadLargeException, Pcompiler, Pcontext, Pguard, Pinterceptor, Pmeta, Post, Put, Query, RabbitMqContext, Route, ServerContext, ServerCtx, ServerMergeCtx, ServerMeta, ServiceUnavailableException, TimeoutException, UnauthorizedException, UndefinedException, UnsupportedMediaTypeException, ValidateException, ValidatePipe, addGuard, addInterceptor, addMiddleware, bindApp, bindMQ, createMqReq, createPub, defaultPipe, emitter, getInstance, parseMeta, useMqFilter, useMqPipe, useServerFilter, useServerPipe };
190
+ export { BadGatewayException, BadRequestException, BaseParam, Body, Compiler, ConflictException, Context, Controller, Define, Delete, Emitter, Factory, ForbiddenException, FrameworkException, Get, Guard, Header, HttpException, Inject, Interceptor, InvalidInputException, MQ, MQFilter, Meta, Middle, NotFoundException, Options, P, Param, PayloadLargeException, Post, Put, Query, RabbitMqContext, Route, ServerContext, ServerCtx, ServerFilter, ServerMergeCtx, ServiceUnavailableException, TimeoutException, UnauthorizedException, UndefinedException, UnsupportedMediaTypeException, ValidateException, addGuard, addInterceptor, addMiddleware, bindApp, bindMQ, createMqReq, createPub, defaultPipe, emitter, getInstance, parseMeta, useMqFilter, useMqPipe, useServerFilter, useServerPipe };
package/dist/index.js CHANGED
@@ -39,8 +39,11 @@ __export(src_exports, {
39
39
  Base: () => Base,
40
40
  BaseParam: () => BaseParam,
41
41
  Body: () => Body,
42
+ Compiler: () => Compiler,
42
43
  ConflictException: () => ConflictException,
44
+ Context: () => Context,
43
45
  Controller: () => Controller,
46
+ Define: () => Define,
44
47
  Delete: () => Delete,
45
48
  Factory: () => Factory,
46
49
  ForbiddenException: () => ForbiddenException,
@@ -58,9 +61,6 @@ __export(src_exports, {
58
61
  NotFoundException: () => NotFoundException,
59
62
  Param: () => Param,
60
63
  PayloadLargeException: () => PayloadLargeException,
61
- Pcompiler: () => Pcompiler,
62
- Pcontext: () => Pcontext,
63
- Pmeta: () => Pmeta,
64
64
  Post: () => Post,
65
65
  Put: () => Put,
66
66
  Query: () => Query,
@@ -197,7 +197,7 @@ __name(ConflictException, "ConflictException");
197
197
  // src/exception/bad-gateway.ts
198
198
  var BadGatewayException = class extends HttpException {
199
199
  constructor(message) {
200
- super(message, 400, "Bad Gatrway");
200
+ super(message, 502, "Bad Gatrway");
201
201
  }
202
202
  };
203
203
  __name(BadGatewayException, "BadGatewayException");
@@ -284,7 +284,7 @@ var Phistroy = class {
284
284
  __name(Phistroy, "Phistroy");
285
285
 
286
286
  // src/context/base.ts
287
- var _Pcontext = class {
287
+ var _Context = class {
288
288
  key;
289
289
  data;
290
290
  method;
@@ -297,17 +297,17 @@ var _Pcontext = class {
297
297
  this.history = new Phistroy();
298
298
  }
299
299
  static registerGuard(key, handler) {
300
- _Pcontext.guardsRecord[key] = handler;
300
+ _Context.guardsRecord[key] = handler;
301
301
  }
302
302
  static registerInterceptor(key, handler) {
303
- _Pcontext.interceptorsRecord[key] = handler;
303
+ _Context.interceptorsRecord[key] = handler;
304
304
  }
305
305
  async useGuard(guards, isMerge = false) {
306
306
  for (const guard of guards) {
307
307
  if (this.history.record(guard, "guard")) {
308
- if (!(guard in _Pcontext.guardsRecord))
308
+ if (!(guard in _Context.guardsRecord))
309
309
  throw new FrameworkException(`can't find guard named ${guard}`);
310
- if (!await _Pcontext.guardsRecord[guard](this.data, isMerge))
310
+ if (!await _Context.guardsRecord[guard](this.data, isMerge))
311
311
  throw new ForbiddenException(`Guard exception--${guard}`);
312
312
  }
313
313
  }
@@ -316,9 +316,9 @@ var _Pcontext = class {
316
316
  const ret = [];
317
317
  for (const interceptor of interceptors) {
318
318
  if (this.history.record(interceptor, "interceptor")) {
319
- if (!(interceptor in _Pcontext.interceptorsRecord))
319
+ if (!(interceptor in _Context.interceptorsRecord))
320
320
  throw new FrameworkException(`can't find guard named ${interceptor}`);
321
- const post = await _Pcontext.interceptorsRecord[interceptor](this.data, isMerge);
321
+ const post = await _Context.interceptorsRecord[interceptor](this.data, isMerge);
322
322
  if (post)
323
323
  ret.push(post);
324
324
  }
@@ -333,23 +333,23 @@ var _Pcontext = class {
333
333
  return data;
334
334
  }
335
335
  };
336
- var Pcontext = _Pcontext;
337
- __name(Pcontext, "Pcontext");
338
- __publicField(Pcontext, "metaRecord", {});
339
- __publicField(Pcontext, "metaDataRecord", {});
340
- __publicField(Pcontext, "instanceRecord", {});
341
- __publicField(Pcontext, "guardsRecord", {});
342
- __publicField(Pcontext, "interceptorsRecord", {});
336
+ var Context = _Context;
337
+ __name(Context, "Context");
338
+ __publicField(Context, "metaRecord", {});
339
+ __publicField(Context, "metaDataRecord", {});
340
+ __publicField(Context, "instanceRecord", {});
341
+ __publicField(Context, "guardsRecord", {});
342
+ __publicField(Context, "interceptorsRecord", {});
343
343
  function addGuard(key, handler) {
344
- Pcontext.registerGuard(key, handler);
344
+ Context.registerGuard(key, handler);
345
345
  }
346
346
  __name(addGuard, "addGuard");
347
347
  function addInterceptor(key, handler) {
348
- Pcontext.registerInterceptor(key, handler);
348
+ Context.registerInterceptor(key, handler);
349
349
  }
350
350
  __name(addInterceptor, "addInterceptor");
351
351
  function getInstance(tag) {
352
- return Pcontext.instanceRecord[tag];
352
+ return Context.instanceRecord[tag];
353
353
  }
354
354
  __name(getInstance, "getInstance");
355
355
  function parseMeta(meta) {
@@ -372,7 +372,7 @@ function parseMeta(meta) {
372
372
  __name(parseMeta, "parseMeta");
373
373
 
374
374
  // src/context/server.ts
375
- var _ServerContext = class extends Pcontext {
375
+ var _ServerContext = class extends Context {
376
376
  static useMiddleware(middlewares) {
377
377
  return middlewares.map((m) => {
378
378
  if (!(m in _ServerContext.middlewareRecord))
@@ -409,7 +409,7 @@ function useServerFilter(filter) {
409
409
  __name(useServerFilter, "useServerFilter");
410
410
 
411
411
  // src/context/micro.ts
412
- var _RabbitMqContext = class extends Pcontext {
412
+ var _RabbitMqContext = class extends Context {
413
413
  static useMiddleware(middlewares) {
414
414
  return middlewares.map((m) => {
415
415
  if (!(m in _RabbitMqContext.middlewareRecord))
@@ -448,9 +448,9 @@ var Base = class {
448
448
  __name(Base, "Base");
449
449
 
450
450
  // src/compiler.ts
451
- var Pcompiler = class {
452
- content = "";
451
+ var Compiler = class {
453
452
  classMap = {};
453
+ name;
454
454
  constructor() {
455
455
  }
456
456
  getContent() {
@@ -463,9 +463,17 @@ var Pcompiler = class {
463
463
  }
464
464
  return content;
465
465
  }
466
+ createRequest() {
467
+ let content = "import {useC} from 'phecda-server'\n";
468
+ for (const name in this.classMap)
469
+ content += `export const {${Object.keys(this.classMap[name]).join(",")}}=useC(${name})
470
+ `;
471
+ return content;
472
+ }
466
473
  addMethod(args) {
467
474
  const { route: { route = "/", type = "get" } = {}, name, method, params, tag } = args;
468
475
  const url = route.replace(/\/\:([^\/]*)/g, "");
476
+ this.name = name;
469
477
  if (!this.classMap[name])
470
478
  this.classMap[name] = {};
471
479
  this.classMap[name][method] = `
@@ -479,7 +487,7 @@ return ret
479
487
  `;
480
488
  }
481
489
  };
482
- __name(Pcompiler, "Pcompiler");
490
+ __name(Compiler, "Compiler");
483
491
  function genParams(decorators) {
484
492
  return decorators.map((_, i) => {
485
493
  return `${`arg${i}`}`;
@@ -518,8 +526,8 @@ function bindApp(app, { meta, moduleMap }, options = {}) {
518
526
  const instance = moduleMap.get(tag);
519
527
  const methodTag = `${tag}-${method}`;
520
528
  contextMeta[methodTag] = i;
521
- Pcontext.metaRecord[methodTag] = i;
522
- let { guards, reflect, interceptors, params, middlewares } = Pcontext.metaDataRecord[methodTag] ? Pcontext.metaDataRecord[methodTag] : Pcontext.metaDataRecord[methodTag] = parseMeta(i);
529
+ Context.metaRecord[methodTag] = i;
530
+ let { guards, reflect, interceptors, params, middlewares } = Context.metaDataRecord[methodTag] ? Context.metaDataRecord[methodTag] : Context.metaDataRecord[methodTag] = parseMeta(i);
523
531
  guards = [
524
532
  ...globalGuards,
525
533
  ...guards
@@ -530,7 +538,7 @@ function bindApp(app, { meta, moduleMap }, options = {}) {
530
538
  ];
531
539
  const handler = instance[method].bind(instance);
532
540
  methodMap[methodTag] = handler;
533
- Pcontext.instanceRecord[name] = instance;
541
+ Context.instanceRecord[name] = instance;
534
542
  if (route2) {
535
543
  app[route2.type](route2.route, ...ServerContext.useMiddleware(middlewares), async (req, res) => {
536
544
  const contextData = {
@@ -572,7 +580,8 @@ function bindApp(app, { meta, moduleMap }, options = {}) {
572
580
  const contextData = {
573
581
  request: req,
574
582
  response: res,
575
- meta: contextMeta
583
+ meta: contextMeta,
584
+ isMerge: true
576
585
  };
577
586
  if (!Array.isArray(data))
578
587
  return res.json(await ServerContext.useFilter(new BadRequestException("data format should be an array"), contextData));
@@ -583,7 +592,7 @@ function bindApp(app, { meta, moduleMap }, options = {}) {
583
592
  for (const item of data) {
584
593
  const { tag } = item;
585
594
  const [name] = tag.split("-");
586
- const { guards, reflect, interceptors, params } = Pcontext.metaDataRecord[tag];
595
+ const { guards, reflect, interceptors, params } = Context.metaDataRecord[tag];
587
596
  const instance = moduleMap.get(name);
588
597
  try {
589
598
  if (!params)
@@ -607,7 +616,7 @@ function bindApp(app, { meta, moduleMap }, options = {}) {
607
616
  instance.context = contextData;
608
617
  ret.push(await context.usePost(await methodMap[tag](...args)));
609
618
  } catch (e) {
610
- const m = Pcontext.metaRecord[tag];
619
+ const m = Context.metaRecord[tag];
611
620
  m.handlers.forEach((handler) => handler.error?.(e));
612
621
  ret.push(await context.useFilter(e));
613
622
  }
@@ -619,7 +628,7 @@ function bindApp(app, { meta, moduleMap }, options = {}) {
619
628
  return new Promise(async (resolve) => {
620
629
  const { tag } = item;
621
630
  const [name] = tag.split("-");
622
- const { guards, reflect, interceptors, params } = Pcontext.metaDataRecord[tag];
631
+ const { guards, reflect, interceptors, params } = Context.metaDataRecord[tag];
623
632
  const instance = moduleMap.get(name);
624
633
  try {
625
634
  if (!params)
@@ -636,7 +645,7 @@ function bindApp(app, { meta, moduleMap }, options = {}) {
636
645
  instance.context = contextData;
637
646
  resolve(await context.usePost(await methodMap[tag](...args)));
638
647
  } catch (e) {
639
- const m = Pcontext.metaRecord[tag];
648
+ const m = Context.metaRecord[tag];
640
649
  m.handlers.forEach((handler) => handler.error?.(e));
641
650
  resolve(await context.useFilter(e));
642
651
  }
@@ -657,7 +666,7 @@ var import_fs = __toESM(require("fs"));
657
666
  var import_phecda_core2 = require("phecda-core");
658
667
 
659
668
  // src/meta.ts
660
- var Pmeta = class {
669
+ var Meta = class {
661
670
  data;
662
671
  handlers;
663
672
  reflect;
@@ -667,7 +676,7 @@ var Pmeta = class {
667
676
  this.reflect = reflect;
668
677
  }
669
678
  };
670
- __name(Pmeta, "Pmeta");
679
+ __name(Meta, "Meta");
671
680
 
672
681
  // src/core.ts
673
682
  var emitter = new import_events.default();
@@ -753,7 +762,7 @@ function getMetaFromInstance(instance, name, tag) {
753
762
  ...state.interceptors
754
763
  ])
755
764
  ];
756
- return new Pmeta(state, (0, import_phecda_core2.getHandler)(instance, i), getParamtypes(instance, i) || []);
765
+ return new Meta(state, (0, import_phecda_core2.getHandler)(instance, i), getParamtypes(instance, i) || []);
757
766
  });
758
767
  }
759
768
  __name(getMetaFromInstance, "getMetaFromInstance");
@@ -944,17 +953,17 @@ function Header(name, value) {
944
953
  };
945
954
  }
946
955
  __name(Header, "Header");
947
- function Meta(key, value) {
956
+ function Define(key, value) {
948
957
  return (target, k) => {
949
958
  (0, import_phecda_core6.setModalVar)(target, k);
950
959
  (0, import_phecda_core6.mergeState)(target, k, {
951
- meta: {
960
+ define: {
952
961
  [key]: value
953
962
  }
954
963
  });
955
964
  };
956
965
  }
957
- __name(Meta, "Meta");
966
+ __name(Define, "Define");
958
967
 
959
968
  // src/index.ts
960
969
  __reExport(src_exports, require("phecda-core"), module.exports);
@@ -972,11 +981,11 @@ async function bindMQ(ch, { meta, moduleMap }) {
972
981
  for (const item of meta) {
973
982
  const { route, name, method, mq: { routeKey, queue: queueName, options } = {} } = item.data;
974
983
  const tag = `${name}-${method}`;
975
- Pcontext.metaRecord[tag] = item;
976
- const { guards, reflect, interceptors, params } = Pcontext.metaDataRecord[tag] ? Pcontext.metaDataRecord[tag] : Pcontext.metaDataRecord[tag] = parseMeta(item);
984
+ Context.metaRecord[tag] = item;
985
+ const { guards, reflect, interceptors, params } = Context.metaDataRecord[tag] ? Context.metaDataRecord[tag] : Context.metaDataRecord[tag] = parseMeta(item);
977
986
  const instance = moduleMap.get(name);
978
987
  const handler = instance[method].bind(instance);
979
- Pcontext.instanceRecord[name] = instance;
988
+ Context.instanceRecord[name] = instance;
980
989
  if (route) {
981
990
  const { queue } = await ch.assertQueue(route.route);
982
991
  if (queueName && routeKey)
@@ -1118,8 +1127,11 @@ __name(createMqReq, "createMqReq");
1118
1127
  Base,
1119
1128
  BaseParam,
1120
1129
  Body,
1130
+ Compiler,
1121
1131
  ConflictException,
1132
+ Context,
1122
1133
  Controller,
1134
+ Define,
1123
1135
  Delete,
1124
1136
  Factory,
1125
1137
  ForbiddenException,
@@ -1137,9 +1149,6 @@ __name(createMqReq, "createMqReq");
1137
1149
  NotFoundException,
1138
1150
  Param,
1139
1151
  PayloadLargeException,
1140
- Pcompiler,
1141
- Pcontext,
1142
- Pmeta,
1143
1152
  Post,
1144
1153
  Put,
1145
1154
  Query,