@pangza/core 1.1.6 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/Application/aop.d.ts +91 -0
- package/dist/Application/aop.d.ts.map +1 -0
- package/dist/Application/aop.js +274 -0
- package/dist/Application/aop.js.map +1 -0
- package/dist/Application/callbackArgs.js +20 -0
- package/dist/Application/callbackArgs.js.map +1 -1
- package/dist/Application/decorators.d.ts +15 -0
- package/dist/Application/decorators.d.ts.map +1 -1
- package/dist/Application/decorators.js +26 -0
- package/dist/Application/decorators.js.map +1 -1
- package/dist/Application/filters.d.ts +67 -0
- package/dist/Application/filters.d.ts.map +1 -0
- package/dist/Application/filters.js +113 -0
- package/dist/Application/filters.js.map +1 -0
- package/dist/Application/index.d.ts +43 -5
- package/dist/Application/index.d.ts.map +1 -1
- package/dist/Application/index.js +166 -6
- package/dist/Application/index.js.map +1 -1
- package/dist/Application/interceptors.d.ts +61 -0
- package/dist/Application/interceptors.d.ts.map +1 -1
- package/dist/Application/interceptors.js +105 -0
- package/dist/Application/interceptors.js.map +1 -1
- package/dist/Application/pathMatch.d.ts +13 -0
- package/dist/Application/pathMatch.d.ts.map +1 -0
- package/dist/Application/pathMatch.js +90 -0
- package/dist/Application/pathMatch.js.map +1 -0
- package/dist/Application/types.d.ts +6 -2
- package/dist/Application/types.d.ts.map +1 -1
- package/dist/Application/types.js +2 -0
- package/dist/Application/types.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
1
2
|
import type { Request, Response } from "express";
|
|
2
3
|
import type { RouteOption } from "./types";
|
|
4
|
+
export declare const HANDLER_INTERCEPTOR_KEY: unique symbol;
|
|
3
5
|
/** 请求前拦截上下文(鉴权 / 限流之后、Controller 之前) */
|
|
4
6
|
export interface RequestInterceptorContext {
|
|
5
7
|
req: Request;
|
|
@@ -40,11 +42,70 @@ export type RequestInterceptor = (ctx: RequestInterceptorContext) => void | Prom
|
|
|
40
42
|
* - 自行写响应后设 `ctx.handled = true`
|
|
41
43
|
*/
|
|
42
44
|
export type ResponseInterceptor = (ctx: ResponseInterceptorContext) => unknown | void | Promise<unknown | void>;
|
|
45
|
+
/**
|
|
46
|
+
* 当前命中的处理器信息(对齐 Spring HandlerInterceptor 的 handler 参数)。
|
|
47
|
+
*/
|
|
48
|
+
export interface HandlerInfo {
|
|
49
|
+
path: string;
|
|
50
|
+
method: string;
|
|
51
|
+
controllerName?: string;
|
|
52
|
+
handlerName?: string;
|
|
53
|
+
option?: RouteOption;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Spring MVC HandlerInterceptor:
|
|
57
|
+
* - preHandle:Controller 前;返回 false 中止(可自行写响应)
|
|
58
|
+
* - postHandle:Controller 后、写出前;返回值非 undefined 时替换业务数据
|
|
59
|
+
* - afterCompletion:请求结束(含异常),在 finally 中调用
|
|
60
|
+
*/
|
|
61
|
+
export interface HandlerInterceptor {
|
|
62
|
+
preHandle?(req: Request, res: Response, handler: HandlerInfo): boolean | void | Promise<boolean | void>;
|
|
63
|
+
postHandle?(req: Request, res: Response, handler: HandlerInfo, data: unknown): unknown | void | Promise<unknown | void>;
|
|
64
|
+
afterCompletion?(req: Request, res: Response, handler: HandlerInfo, error?: unknown): void | Promise<void>;
|
|
65
|
+
}
|
|
66
|
+
/** @Interceptor / addInterceptor 注册选项 */
|
|
67
|
+
export interface InterceptorOptions {
|
|
68
|
+
/** 越小越靠前,默认 0 */
|
|
69
|
+
order?: number;
|
|
70
|
+
/** 生效路径,默认 `["/**"]` */
|
|
71
|
+
include?: string[];
|
|
72
|
+
/** 排除路径 */
|
|
73
|
+
exclude?: string[];
|
|
74
|
+
}
|
|
75
|
+
export interface InterceptorRegistration {
|
|
76
|
+
interceptor: HandlerInterceptor;
|
|
77
|
+
order: number;
|
|
78
|
+
include: string[];
|
|
79
|
+
exclude: string[];
|
|
80
|
+
}
|
|
81
|
+
export declare function isHandlerInterceptor(bean: unknown): bean is HandlerInterceptor;
|
|
43
82
|
export declare function addRequestInterceptor(fn: RequestInterceptor): void;
|
|
44
83
|
export declare function addResponseInterceptor(fn: ResponseInterceptor): void;
|
|
84
|
+
export declare function addInterceptorRegistration(interceptor: HandlerInterceptor, options?: InterceptorOptions): void;
|
|
85
|
+
export declare function getHandlerInterceptorRegistrations(): readonly InterceptorRegistration[];
|
|
45
86
|
export declare function clearInterceptors(): void;
|
|
46
87
|
export declare function getRequestInterceptors(): readonly RequestInterceptor[];
|
|
47
88
|
export declare function getResponseInterceptors(): readonly ResponseInterceptor[];
|
|
48
89
|
export declare function runRequestInterceptors(req: Request, res: Response, option?: RouteOption): Promise<RequestInterceptorContext>;
|
|
49
90
|
export declare function runResponseInterceptors(base: Omit<ResponseInterceptorContext, "wrap" | "handled"> & Partial<Pick<ResponseInterceptorContext, "wrap" | "handled">>): Promise<ResponseInterceptorContext>;
|
|
91
|
+
/**
|
|
92
|
+
* 跑 HandlerInterceptor.preHandle。
|
|
93
|
+
* @returns false 表示应中止后续 Controller
|
|
94
|
+
*/
|
|
95
|
+
export declare function runHandlerPreHandle(req: Request, res: Response, handler: HandlerInfo): Promise<boolean>;
|
|
96
|
+
/** 跑 HandlerInterceptor.postHandle;返回最终 data */
|
|
97
|
+
export declare function runHandlerPostHandle(req: Request, res: Response, handler: HandlerInfo, data: unknown): Promise<unknown>;
|
|
98
|
+
/** 跑 HandlerInterceptor.afterCompletion(逆序,对齐 Spring) */
|
|
99
|
+
export declare function runHandlerAfterCompletion(req: Request, res: Response, handler: HandlerInfo, error?: unknown): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* 类装饰器:标记 HandlerInterceptor(类加载时自动注册)。
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* @Interceptor({ include: ["/api/**"], order: 0 })
|
|
105
|
+
* class LogInterceptor implements HandlerInterceptor {
|
|
106
|
+
* preHandle(req) { console.log(req.method, req.path); return true; }
|
|
107
|
+
* }
|
|
108
|
+
*/
|
|
109
|
+
export declare function Interceptor(options?: InterceptorOptions): ClassDecorator;
|
|
110
|
+
export declare function getHandlerInterceptorOptions(ctor: Function): InterceptorOptions;
|
|
50
111
|
//# sourceMappingURL=interceptors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptors.d.ts","sourceRoot":"","sources":["../../src/Application/interceptors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"interceptors.d.ts","sourceRoot":"","sources":["../../src/Application/interceptors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HANDLER_INTERCEPTOR_KEY = void 0;
|
|
4
|
+
exports.isHandlerInterceptor = isHandlerInterceptor;
|
|
3
5
|
exports.addRequestInterceptor = addRequestInterceptor;
|
|
4
6
|
exports.addResponseInterceptor = addResponseInterceptor;
|
|
7
|
+
exports.addInterceptorRegistration = addInterceptorRegistration;
|
|
8
|
+
exports.getHandlerInterceptorRegistrations = getHandlerInterceptorRegistrations;
|
|
5
9
|
exports.clearInterceptors = clearInterceptors;
|
|
6
10
|
exports.getRequestInterceptors = getRequestInterceptors;
|
|
7
11
|
exports.getResponseInterceptors = getResponseInterceptors;
|
|
8
12
|
exports.runRequestInterceptors = runRequestInterceptors;
|
|
9
13
|
exports.runResponseInterceptors = runResponseInterceptors;
|
|
14
|
+
exports.runHandlerPreHandle = runHandlerPreHandle;
|
|
15
|
+
exports.runHandlerPostHandle = runHandlerPostHandle;
|
|
16
|
+
exports.runHandlerAfterCompletion = runHandlerAfterCompletion;
|
|
17
|
+
exports.Interceptor = Interceptor;
|
|
18
|
+
exports.getHandlerInterceptorOptions = getHandlerInterceptorOptions;
|
|
19
|
+
require("reflect-metadata");
|
|
20
|
+
const pathMatch_1 = require("./pathMatch");
|
|
21
|
+
exports.HANDLER_INTERCEPTOR_KEY = Symbol.for("pangza.handlerInterceptor.options");
|
|
10
22
|
const requestInterceptors = [];
|
|
11
23
|
const responseInterceptors = [];
|
|
24
|
+
const handlerInterceptorRegs = [];
|
|
25
|
+
function isHandlerInterceptor(bean) {
|
|
26
|
+
if (!bean || typeof bean !== "object")
|
|
27
|
+
return false;
|
|
28
|
+
const i = bean;
|
|
29
|
+
return (typeof i.preHandle === "function" ||
|
|
30
|
+
typeof i.postHandle === "function" ||
|
|
31
|
+
typeof i.afterCompletion === "function");
|
|
32
|
+
}
|
|
12
33
|
function addRequestInterceptor(fn) {
|
|
13
34
|
requestInterceptors.push(fn);
|
|
14
35
|
}
|
|
15
36
|
function addResponseInterceptor(fn) {
|
|
16
37
|
responseInterceptors.push(fn);
|
|
17
38
|
}
|
|
39
|
+
function addInterceptorRegistration(interceptor, options = {}) {
|
|
40
|
+
handlerInterceptorRegs.push({
|
|
41
|
+
interceptor,
|
|
42
|
+
order: options.order ?? 0,
|
|
43
|
+
include: options.include?.length ? options.include : ["/**"],
|
|
44
|
+
exclude: options.exclude ?? [],
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function getHandlerInterceptorRegistrations() {
|
|
48
|
+
return handlerInterceptorRegs;
|
|
49
|
+
}
|
|
18
50
|
function clearInterceptors() {
|
|
19
51
|
requestInterceptors.length = 0;
|
|
20
52
|
responseInterceptors.length = 0;
|
|
53
|
+
handlerInterceptorRegs.length = 0;
|
|
21
54
|
}
|
|
22
55
|
function getRequestInterceptors() {
|
|
23
56
|
return requestInterceptors;
|
|
@@ -25,6 +58,12 @@ function getRequestInterceptors() {
|
|
|
25
58
|
function getResponseInterceptors() {
|
|
26
59
|
return responseInterceptors;
|
|
27
60
|
}
|
|
61
|
+
function sortedHandlerInterceptors() {
|
|
62
|
+
return [...handlerInterceptorRegs].sort((a, b) => a.order - b.order);
|
|
63
|
+
}
|
|
64
|
+
function matchingInterceptors(path) {
|
|
65
|
+
return sortedHandlerInterceptors().filter((reg) => (0, pathMatch_1.matchPathPatterns)(path, reg.include, reg.exclude));
|
|
66
|
+
}
|
|
28
67
|
async function runRequestInterceptors(req, res, option) {
|
|
29
68
|
const ctx = { req, res, option };
|
|
30
69
|
for (const fn of requestInterceptors) {
|
|
@@ -55,4 +94,70 @@ async function runResponseInterceptors(base) {
|
|
|
55
94
|
}
|
|
56
95
|
return ctx;
|
|
57
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* 跑 HandlerInterceptor.preHandle。
|
|
99
|
+
* @returns false 表示应中止后续 Controller
|
|
100
|
+
*/
|
|
101
|
+
async function runHandlerPreHandle(req, res, handler) {
|
|
102
|
+
for (const reg of matchingInterceptors(req.path)) {
|
|
103
|
+
const fn = reg.interceptor.preHandle;
|
|
104
|
+
if (!fn)
|
|
105
|
+
continue;
|
|
106
|
+
const ok = await fn(req, res, handler);
|
|
107
|
+
if (ok === false || res.headersSent)
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
/** 跑 HandlerInterceptor.postHandle;返回最终 data */
|
|
113
|
+
async function runHandlerPostHandle(req, res, handler, data) {
|
|
114
|
+
let current = data;
|
|
115
|
+
for (const reg of matchingInterceptors(req.path)) {
|
|
116
|
+
const fn = reg.interceptor.postHandle;
|
|
117
|
+
if (!fn)
|
|
118
|
+
continue;
|
|
119
|
+
const out = await fn(req, res, handler, current);
|
|
120
|
+
if (out !== undefined)
|
|
121
|
+
current = out;
|
|
122
|
+
if (res.headersSent)
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
return current;
|
|
126
|
+
}
|
|
127
|
+
/** 跑 HandlerInterceptor.afterCompletion(逆序,对齐 Spring) */
|
|
128
|
+
async function runHandlerAfterCompletion(req, res, handler, error) {
|
|
129
|
+
const list = matchingInterceptors(req.path);
|
|
130
|
+
for (let i = list.length - 1; i >= 0; i--) {
|
|
131
|
+
const fn = list[i].interceptor.afterCompletion;
|
|
132
|
+
if (!fn)
|
|
133
|
+
continue;
|
|
134
|
+
try {
|
|
135
|
+
await fn(req, res, handler, error);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// afterCompletion 失败不覆盖原错误
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* 类装饰器:标记 HandlerInterceptor(类加载时自动注册)。
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* @Interceptor({ include: ["/api/**"], order: 0 })
|
|
147
|
+
* class LogInterceptor implements HandlerInterceptor {
|
|
148
|
+
* preHandle(req) { console.log(req.method, req.path); return true; }
|
|
149
|
+
* }
|
|
150
|
+
*/
|
|
151
|
+
function Interceptor(options = {}) {
|
|
152
|
+
return (ctor) => {
|
|
153
|
+
const Ctor = ctor;
|
|
154
|
+
Reflect.defineMetadata(exports.HANDLER_INTERCEPTOR_KEY, options, Ctor);
|
|
155
|
+
const { default: Application } = require("./index");
|
|
156
|
+
Application.registerInterceptor(Ctor);
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function getHandlerInterceptorOptions(ctor) {
|
|
160
|
+
return (Reflect.getMetadata(exports.HANDLER_INTERCEPTOR_KEY, ctor) ??
|
|
161
|
+
{});
|
|
162
|
+
}
|
|
58
163
|
//# sourceMappingURL=interceptors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../src/Application/interceptors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../src/Application/interceptors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** 规范化请求/模式路径:保证前导 /,去掉无意义尾 / */
|
|
2
|
+
export declare function normalizePathPattern(p: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* 类 Ant / glob 路径匹配(与 @pangza/auth ignore 规则对齐):
|
|
5
|
+
* - `/api/user` 精确,或该路径下的子路径
|
|
6
|
+
* - `/api/pub/**` 前缀下全部
|
|
7
|
+
* - `/api/pub/*` 仅一层
|
|
8
|
+
* - `/api/aes*` 尾部 * 前缀
|
|
9
|
+
*/
|
|
10
|
+
export declare function matchPathPattern(requestPath: string, pattern: string): boolean;
|
|
11
|
+
/** 是否命中 include(空=全部),且未命中 exclude */
|
|
12
|
+
export declare function matchPathPatterns(requestPath: string, include?: string[], exclude?: string[]): boolean;
|
|
13
|
+
//# sourceMappingURL=pathMatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathMatch.d.ts","sourceRoot":"","sources":["../../src/Application/pathMatch.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAatD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CA0B9E;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,MAAM,EAAY,EAC3B,OAAO,GAAE,MAAM,EAAO,GACrB,OAAO,CAMT"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizePathPattern = normalizePathPattern;
|
|
4
|
+
exports.matchPathPattern = matchPathPattern;
|
|
5
|
+
exports.matchPathPatterns = matchPathPatterns;
|
|
6
|
+
/** 规范化请求/模式路径:保证前导 /,去掉无意义尾 / */
|
|
7
|
+
function normalizePathPattern(p) {
|
|
8
|
+
if (!p)
|
|
9
|
+
return "/";
|
|
10
|
+
let s = p.trim();
|
|
11
|
+
if (!s.startsWith("/"))
|
|
12
|
+
s = `/${s}`;
|
|
13
|
+
if (s.length > 1 &&
|
|
14
|
+
s.endsWith("/") &&
|
|
15
|
+
!s.endsWith("*/") &&
|
|
16
|
+
!s.endsWith("**/")) {
|
|
17
|
+
s = s.slice(0, -1);
|
|
18
|
+
}
|
|
19
|
+
return s;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 类 Ant / glob 路径匹配(与 @pangza/auth ignore 规则对齐):
|
|
23
|
+
* - `/api/user` 精确,或该路径下的子路径
|
|
24
|
+
* - `/api/pub/**` 前缀下全部
|
|
25
|
+
* - `/api/pub/*` 仅一层
|
|
26
|
+
* - `/api/aes*` 尾部 * 前缀
|
|
27
|
+
*/
|
|
28
|
+
function matchPathPattern(requestPath, pattern) {
|
|
29
|
+
const path = normalizePathPattern(requestPath);
|
|
30
|
+
const pat = normalizePathPattern(pattern);
|
|
31
|
+
if (pat.endsWith("/**")) {
|
|
32
|
+
const base = pat.slice(0, -3);
|
|
33
|
+
if (!base || base === "/")
|
|
34
|
+
return true;
|
|
35
|
+
return path === base || path.startsWith(`${base}/`);
|
|
36
|
+
}
|
|
37
|
+
if (pat.endsWith("/*")) {
|
|
38
|
+
const base = pat.slice(0, -2);
|
|
39
|
+
if (!path.startsWith(`${base}/`))
|
|
40
|
+
return false;
|
|
41
|
+
const rest = path.slice(base.length + 1);
|
|
42
|
+
return rest.length > 0 && !rest.includes("/");
|
|
43
|
+
}
|
|
44
|
+
if (pat.endsWith("*") && !pat.slice(0, -1).includes("*")) {
|
|
45
|
+
return path.startsWith(pat.slice(0, -1));
|
|
46
|
+
}
|
|
47
|
+
if (pat.includes("*")) {
|
|
48
|
+
return globToRegExp(pat).test(path);
|
|
49
|
+
}
|
|
50
|
+
return path === pat || path.startsWith(`${pat}/`);
|
|
51
|
+
}
|
|
52
|
+
/** 是否命中 include(空=全部),且未命中 exclude */
|
|
53
|
+
function matchPathPatterns(requestPath, include = ["/**"], exclude = []) {
|
|
54
|
+
const path = normalizePathPattern(requestPath);
|
|
55
|
+
const includes = include.length ? include : ["/**"];
|
|
56
|
+
if (!includes.some((p) => matchPathPattern(path, p)))
|
|
57
|
+
return false;
|
|
58
|
+
if (exclude.some((p) => matchPathPattern(path, p)))
|
|
59
|
+
return false;
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
function globToRegExp(pattern) {
|
|
63
|
+
let i = 0;
|
|
64
|
+
let out = "^";
|
|
65
|
+
while (i < pattern.length) {
|
|
66
|
+
const ch = pattern[i];
|
|
67
|
+
if (ch === "*" && pattern[i + 1] === "*") {
|
|
68
|
+
out += ".*";
|
|
69
|
+
i += 2;
|
|
70
|
+
if (pattern[i] === "/")
|
|
71
|
+
i += 1;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (ch === "*") {
|
|
75
|
+
out += "[^/]*";
|
|
76
|
+
i += 1;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (".+^${}()|[]\\".includes(ch)) {
|
|
80
|
+
out += `\\${ch}`;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
out += ch;
|
|
84
|
+
}
|
|
85
|
+
i += 1;
|
|
86
|
+
}
|
|
87
|
+
out += "/?$";
|
|
88
|
+
return new RegExp(out);
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=pathMatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathMatch.js","sourceRoot":"","sources":["../../src/Application/pathMatch.ts"],"names":[],"mappings":";;AACA,oDAaC;AASD,4CA0BC;AAGD,8CAUC;AA9DD,iCAAiC;AACjC,SAAgB,oBAAoB,CAAC,CAAS;IAC5C,IAAI,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IACnB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjB,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACpC,IACE,CAAC,CAAC,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QACf,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClB,CAAC;QACD,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,WAAmB,EAAE,OAAe;IACnE,MAAM,IAAI,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,sCAAsC;AACtC,SAAgB,iBAAiB,CAC/B,WAAmB,EACnB,UAAoB,CAAC,KAAK,CAAC,EAC3B,UAAoB,EAAE;IAEtB,MAAM,IAAI,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,EAAE,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,GAAG,IAAI,IAAI,CAAC;YACZ,CAAC,IAAI,CAAC,CAAC;YACP,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,IAAI,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,GAAG,IAAI,OAAO,CAAC;YACf,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,GAAG,IAAI,KAAK,EAAE,EAAE,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,EAAE,CAAC;QACZ,CAAC;QACD,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,GAAG,IAAI,KAAK,CAAC;IACb,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -8,10 +8,12 @@ export declare enum ParamType {
|
|
|
8
8
|
PARAMS = "params",
|
|
9
9
|
HEADER = "header",
|
|
10
10
|
COOKIE = "cookie",
|
|
11
|
-
PATH = "path"
|
|
11
|
+
PATH = "path",
|
|
12
|
+
/** application/x-www-form-urlencoded 或 multipart 字段(需 urlencoded / multer 等) */
|
|
13
|
+
FORM = "form"
|
|
12
14
|
}
|
|
13
15
|
/** 参数装饰器注入来源 */
|
|
14
|
-
export type ParamInjectSource = "body" | "query" | "path" | "header" | "cookie";
|
|
16
|
+
export type ParamInjectSource = "body" | "query" | "path" | "header" | "cookie" | "form";
|
|
15
17
|
/** 单个形参的注入元数据 */
|
|
16
18
|
export interface MethodParamMeta {
|
|
17
19
|
/** 形参下标 */
|
|
@@ -19,6 +21,8 @@ export interface MethodParamMeta {
|
|
|
19
21
|
source: ParamInjectSource;
|
|
20
22
|
/** @RequestPath(index) 时按路径参数顺序取值 */
|
|
21
23
|
pathIndex?: number;
|
|
24
|
+
/** @RequestForm("field") 时取单个表单字段 */
|
|
25
|
+
name?: string;
|
|
22
26
|
}
|
|
23
27
|
/** 路由级鉴权 / 入参 / 日志 / 限流 / 防重复提交配置 */
|
|
24
28
|
export interface RouteOption {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Application/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAEvB,4CAA4C;AAC5C,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAED,gBAAgB;AAChB,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,OAAO,GACP,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Application/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAEvB,4CAA4C;AAC5C,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,gFAAgF;IAChF,IAAI,SAAS;CACd;AAED,gBAAgB;AAChB,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,OAAO,GACP,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,MAAM,CAAC;AAEX,iBAAiB;AACjB,MAAM,WAAW,eAAe;IAC9B,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;IAC1B,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE;QACL,uBAAuB;QACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,uBAAuB;QACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,qBAAqB;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB;;;WAGG;QACH,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB;;;WAGG;QACH,cAAc,CAAC,EAAE,aAAa,CAAC;KAChC,CAAC;IACF;;;OAGG;IACH,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,mCAAmC;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,yBAAyB;IACzB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC"}
|
|
@@ -10,5 +10,7 @@ var ParamType;
|
|
|
10
10
|
ParamType["HEADER"] = "header";
|
|
11
11
|
ParamType["COOKIE"] = "cookie";
|
|
12
12
|
ParamType["PATH"] = "path";
|
|
13
|
+
/** application/x-www-form-urlencoded 或 multipart 字段(需 urlencoded / multer 等) */
|
|
14
|
+
ParamType["FORM"] = "form";
|
|
13
15
|
})(ParamType || (exports.ParamType = ParamType = {}));
|
|
14
16
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/Application/types.ts"],"names":[],"mappings":";;;AAOA,4CAA4C;AAC5C,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/Application/types.ts"],"names":[],"mappings":";;;AAOA,4CAA4C;AAC5C,IAAY,SASX;AATD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,4BAAe,CAAA;IACf,8BAAiB,CAAA;IACjB,8BAAiB,CAAA;IACjB,8BAAiB,CAAA;IACjB,0BAAa,CAAA;IACb,gFAAgF;IAChF,0BAAa,CAAA;AACf,CAAC,EATW,SAAS,yBAAT,SAAS,QASpB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { Application, default } from "./Application";
|
|
2
|
-
export { applicationStart, ParamType, Controller, GetMapping, PostMapping, PutMapping, DeleteMapping, AuthCheckLogin, AuthCheckRole, AuthCheckPermission, AuthIgnore, Log, Flux, RequestBody, RequestQuery, RequestPath, RequestHeader, RequestCookie, Value, runApplicationInits, runApplicationDestroys, hookProcessDestroy, isApplicationInit, isApplicationDestroy, } from "./Application";
|
|
3
|
-
export type { RouteOption, ApplicationInit, ApplicationDestroy, RequestInterceptor, ResponseInterceptor, RequestInterceptorContext, ResponseInterceptorContext, } from "./Application";
|
|
2
|
+
export { applicationStart, ParamType, Controller, GetMapping, PostMapping, PutMapping, DeleteMapping, AuthCheckLogin, AuthCheckRole, AuthCheckPermission, AuthIgnore, Log, Flux, RequestBody, RequestQuery, RequestPath, RequestHeader, RequestCookie, RequestForm, Value, WebFilter, Interceptor, Around, Before, After, AfterReturning, AfterThrowing, createAroundDecorator, createBeforeDecorator, createAfterDecorator, createAfterReturningDecorator, createAfterThrowingDecorator, markAdvice, registerAroundAdvice, createMarkDecorator, getMethodInvocationContext, getMethodAdvices, runApplicationInits, runApplicationDestroys, hookProcessDestroy, isApplicationInit, isApplicationDestroy, } from "./Application";
|
|
3
|
+
export type { RouteOption, ApplicationInit, ApplicationDestroy, RequestInterceptor, ResponseInterceptor, RequestInterceptorContext, ResponseInterceptorContext, HandlerInterceptor, HandlerInfo, InterceptorOptions, Filter, FilterChain, FilterOptions, MethodInvocation, MethodInvocationContext, AroundAdvice, BeforeAdvice, AfterAdvice, AfterReturningAdvice, AfterThrowingAdvice, AdviceOptions, } from "./Application";
|
|
4
4
|
export { Logger, getLogger, getRootLogger, logger, configureLogger, ensureUtf8Console, } from "./Logger";
|
|
5
5
|
export type { LoggerOptions, LogLevel, PinoLogger } from "./Logger";
|
|
6
6
|
export { Container, Component, Resource, Service, Inject, Bean, getBeanMethods, registerBeansFromComponent, BaseService, MAPPER_DELEGATE_METHODS, } from "./Application";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,GAAG,EACH,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,EACb,KAAK,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,GAAG,EACH,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,KAAK,EACL,SAAS,EACT,WAAW,EACX,MAAM,EACN,MAAM,EACN,KAAK,EACL,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,MAAM,EACN,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,MAAM,EACN,SAAS,EACT,aAAa,EACb,MAAM,EACN,eAAe,EACf,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEpE,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,MAAM,EACN,IAAI,EACJ,cAAc,EACd,0BAA0B,EAC1B,WAAW,EACX,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,IAAI,EACJ,SAAS,EACT,WAAW,EACX,cAAc,EACd,QAAQ,EACR,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.
|
|
20
|
+
exports.ensureUtf8Console = exports.configureLogger = exports.logger = exports.getRootLogger = exports.getLogger = exports.Logger = exports.isApplicationDestroy = exports.isApplicationInit = exports.hookProcessDestroy = exports.runApplicationDestroys = exports.runApplicationInits = exports.getMethodAdvices = exports.getMethodInvocationContext = exports.createMarkDecorator = exports.registerAroundAdvice = exports.markAdvice = exports.createAfterThrowingDecorator = exports.createAfterReturningDecorator = exports.createAfterDecorator = exports.createBeforeDecorator = exports.createAroundDecorator = exports.AfterThrowing = exports.AfterReturning = exports.After = exports.Before = exports.Around = exports.Interceptor = exports.WebFilter = exports.Value = exports.RequestForm = exports.RequestCookie = exports.RequestHeader = exports.RequestPath = exports.RequestQuery = exports.RequestBody = exports.Flux = exports.Log = exports.AuthIgnore = exports.AuthCheckPermission = exports.AuthCheckRole = exports.AuthCheckLogin = exports.DeleteMapping = exports.PutMapping = exports.PostMapping = exports.GetMapping = exports.Controller = exports.ParamType = exports.applicationStart = exports.default = exports.Application = void 0;
|
|
21
|
+
exports.MAPPER_DELEGATE_METHODS = exports.BaseService = exports.registerBeansFromComponent = exports.getBeanMethods = exports.Bean = exports.Inject = exports.Service = exports.Resource = exports.Component = exports.Container = void 0;
|
|
21
22
|
var Application_1 = require("./Application");
|
|
22
23
|
Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return Application_1.Application; } });
|
|
23
24
|
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(Application_1).default; } });
|
|
@@ -40,7 +41,25 @@ Object.defineProperty(exports, "RequestQuery", { enumerable: true, get: function
|
|
|
40
41
|
Object.defineProperty(exports, "RequestPath", { enumerable: true, get: function () { return Application_2.RequestPath; } });
|
|
41
42
|
Object.defineProperty(exports, "RequestHeader", { enumerable: true, get: function () { return Application_2.RequestHeader; } });
|
|
42
43
|
Object.defineProperty(exports, "RequestCookie", { enumerable: true, get: function () { return Application_2.RequestCookie; } });
|
|
44
|
+
Object.defineProperty(exports, "RequestForm", { enumerable: true, get: function () { return Application_2.RequestForm; } });
|
|
43
45
|
Object.defineProperty(exports, "Value", { enumerable: true, get: function () { return Application_2.Value; } });
|
|
46
|
+
Object.defineProperty(exports, "WebFilter", { enumerable: true, get: function () { return Application_2.WebFilter; } });
|
|
47
|
+
Object.defineProperty(exports, "Interceptor", { enumerable: true, get: function () { return Application_2.Interceptor; } });
|
|
48
|
+
Object.defineProperty(exports, "Around", { enumerable: true, get: function () { return Application_2.Around; } });
|
|
49
|
+
Object.defineProperty(exports, "Before", { enumerable: true, get: function () { return Application_2.Before; } });
|
|
50
|
+
Object.defineProperty(exports, "After", { enumerable: true, get: function () { return Application_2.After; } });
|
|
51
|
+
Object.defineProperty(exports, "AfterReturning", { enumerable: true, get: function () { return Application_2.AfterReturning; } });
|
|
52
|
+
Object.defineProperty(exports, "AfterThrowing", { enumerable: true, get: function () { return Application_2.AfterThrowing; } });
|
|
53
|
+
Object.defineProperty(exports, "createAroundDecorator", { enumerable: true, get: function () { return Application_2.createAroundDecorator; } });
|
|
54
|
+
Object.defineProperty(exports, "createBeforeDecorator", { enumerable: true, get: function () { return Application_2.createBeforeDecorator; } });
|
|
55
|
+
Object.defineProperty(exports, "createAfterDecorator", { enumerable: true, get: function () { return Application_2.createAfterDecorator; } });
|
|
56
|
+
Object.defineProperty(exports, "createAfterReturningDecorator", { enumerable: true, get: function () { return Application_2.createAfterReturningDecorator; } });
|
|
57
|
+
Object.defineProperty(exports, "createAfterThrowingDecorator", { enumerable: true, get: function () { return Application_2.createAfterThrowingDecorator; } });
|
|
58
|
+
Object.defineProperty(exports, "markAdvice", { enumerable: true, get: function () { return Application_2.markAdvice; } });
|
|
59
|
+
Object.defineProperty(exports, "registerAroundAdvice", { enumerable: true, get: function () { return Application_2.registerAroundAdvice; } });
|
|
60
|
+
Object.defineProperty(exports, "createMarkDecorator", { enumerable: true, get: function () { return Application_2.createMarkDecorator; } });
|
|
61
|
+
Object.defineProperty(exports, "getMethodInvocationContext", { enumerable: true, get: function () { return Application_2.getMethodInvocationContext; } });
|
|
62
|
+
Object.defineProperty(exports, "getMethodAdvices", { enumerable: true, get: function () { return Application_2.getMethodAdvices; } });
|
|
44
63
|
Object.defineProperty(exports, "runApplicationInits", { enumerable: true, get: function () { return Application_2.runApplicationInits; } });
|
|
45
64
|
Object.defineProperty(exports, "runApplicationDestroys", { enumerable: true, get: function () { return Application_2.runApplicationDestroys; } });
|
|
46
65
|
Object.defineProperty(exports, "hookProcessDestroy", { enumerable: true, get: function () { return Application_2.hookProcessDestroy; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,6CAAqD;AAA5C,0GAAA,WAAW,OAAA;AAAE,uHAAA,OAAO,OAAA;AAC7B,6CA2CuB;AA1CrB,+GAAA,gBAAgB,OAAA;AAChB,wGAAA,SAAS,OAAA;AACT,yGAAA,UAAU,OAAA;AACV,yGAAA,UAAU,OAAA;AACV,0GAAA,WAAW,OAAA;AACX,yGAAA,UAAU,OAAA;AACV,4GAAA,aAAa,OAAA;AACb,6GAAA,cAAc,OAAA;AACd,4GAAA,aAAa,OAAA;AACb,kHAAA,mBAAmB,OAAA;AACnB,yGAAA,UAAU,OAAA;AACV,kGAAA,GAAG,OAAA;AACH,mGAAA,IAAI,OAAA;AACJ,0GAAA,WAAW,OAAA;AACX,2GAAA,YAAY,OAAA;AACZ,0GAAA,WAAW,OAAA;AACX,4GAAA,aAAa,OAAA;AACb,4GAAA,aAAa,OAAA;AACb,0GAAA,WAAW,OAAA;AACX,oGAAA,KAAK,OAAA;AACL,wGAAA,SAAS,OAAA;AACT,0GAAA,WAAW,OAAA;AACX,qGAAA,MAAM,OAAA;AACN,qGAAA,MAAM,OAAA;AACN,oGAAA,KAAK,OAAA;AACL,6GAAA,cAAc,OAAA;AACd,4GAAA,aAAa,OAAA;AACb,oHAAA,qBAAqB,OAAA;AACrB,oHAAA,qBAAqB,OAAA;AACrB,mHAAA,oBAAoB,OAAA;AACpB,4HAAA,6BAA6B,OAAA;AAC7B,2HAAA,4BAA4B,OAAA;AAC5B,yGAAA,UAAU,OAAA;AACV,mHAAA,oBAAoB,OAAA;AACpB,kHAAA,mBAAmB,OAAA;AACnB,yHAAA,0BAA0B,OAAA;AAC1B,+GAAA,gBAAgB,OAAA;AAChB,kHAAA,mBAAmB,OAAA;AACnB,qHAAA,sBAAsB,OAAA;AACtB,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AA0BtB,mCAOkB;AANhB,gGAAA,MAAM,OAAA;AACN,mGAAA,SAAS,OAAA;AACT,uGAAA,aAAa,OAAA;AACb,gGAAA,MAAM,OAAA;AACN,yGAAA,eAAe,OAAA;AACf,2GAAA,iBAAiB,OAAA;AAInB,6CAWuB;AAVrB,wGAAA,SAAS,OAAA;AACT,wGAAA,SAAS,OAAA;AACT,uGAAA,QAAQ,OAAA;AACR,sGAAA,OAAO,OAAA;AACP,qGAAA,MAAM,OAAA;AACN,mGAAA,IAAI,OAAA;AACJ,6GAAA,cAAc,OAAA;AACd,yHAAA,0BAA0B,OAAA;AAC1B,0GAAA,WAAW,OAAA;AACX,sHAAA,uBAAuB,OAAA;AAUzB,2CAAyB;AACzB,yCAAuB;AACvB,8CAA4B;AAC5B,0CAAwB;AACxB,0CAAwB;AACxB,gDAA8B;AAC9B,6CAA2B"}
|