@eggjs/tegg-controller-plugin 4.0.0-beta.4 → 4.0.0-beta.6
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 +15 -3
- package/dist/app/middleware/tegg_root_proto.d.ts +6 -0
- package/dist/app/middleware/tegg_root_proto.js +12 -0
- package/dist/app.d.ts +27 -0
- package/dist/app.js +67 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/lib/AppLoadUnitControllerHook.d.ts +14 -0
- package/dist/lib/AppLoadUnitControllerHook.js +29 -0
- package/dist/lib/ControllerLoadUnit.d.ts +25 -0
- package/dist/lib/ControllerLoadUnit.js +63 -0
- package/dist/lib/ControllerLoadUnitHandler.d.ts +16 -0
- package/dist/lib/ControllerLoadUnitHandler.js +29 -0
- package/dist/lib/ControllerLoadUnitInstance.d.ts +21 -0
- package/dist/lib/ControllerLoadUnitInstance.js +40 -0
- package/dist/lib/ControllerMetadataManager.d.ts +12 -0
- package/dist/lib/ControllerMetadataManager.js +23 -0
- package/dist/lib/ControllerRegister.d.ts +9 -0
- package/dist/lib/ControllerRegister.js +4 -0
- package/dist/lib/ControllerRegisterFactory.d.ts +16 -0
- package/dist/lib/ControllerRegisterFactory.js +24 -0
- package/dist/lib/EggControllerLoader.d.ts +11 -0
- package/dist/lib/EggControllerLoader.js +29 -0
- package/dist/lib/EggControllerPrototypeHook.d.ts +9 -0
- package/dist/lib/EggControllerPrototypeHook.js +13 -0
- package/dist/lib/RootProtoManager.d.ts +12 -0
- package/dist/lib/RootProtoManager.js +28 -0
- package/dist/lib/errors.d.ts +9 -0
- package/dist/lib/errors.js +16 -0
- package/dist/lib/impl/http/Acl.d.ts +6 -0
- package/dist/lib/impl/http/Acl.js +29 -0
- package/dist/lib/impl/http/HTTPControllerRegister.d.ts +22 -0
- package/dist/lib/impl/http/HTTPControllerRegister.js +60 -0
- package/dist/lib/impl/http/HTTPMethodRegister.d.ts +23 -0
- package/dist/lib/impl/http/HTTPMethodRegister.js +139 -0
- package/dist/lib/impl/http/Req.d.ts +9 -0
- package/dist/lib/impl/http/Req.js +16 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +4 -0
- package/package.json +55 -46
- package/app/middleware/tegg_root_proto.d.ts +0 -3
- package/app/middleware/tegg_root_proto.js +0 -8
- package/app.d.ts +0 -13
- package/app.js +0 -75
- package/index.d.ts +0 -13
- package/index.js +0 -2
- package/lib/AppLoadUnitControllerHook.d.ts +0 -10
- package/lib/AppLoadUnitControllerHook.js +0 -26
- package/lib/ControllerLoadUnit.d.ts +0 -21
- package/lib/ControllerLoadUnit.js +0 -72
- package/lib/ControllerLoadUnitHandler.d.ts +0 -12
- package/lib/ControllerLoadUnitHandler.js +0 -27
- package/lib/ControllerLoadUnitInstance.d.ts +0 -17
- package/lib/ControllerLoadUnitInstance.js +0 -34
- package/lib/ControllerMetadataManager.d.ts +0 -8
- package/lib/ControllerMetadataManager.js +0 -26
- package/lib/ControllerRegister.d.ts +0 -5
- package/lib/ControllerRegister.js +0 -2
- package/lib/ControllerRegisterFactory.d.ts +0 -12
- package/lib/ControllerRegisterFactory.js +0 -19
- package/lib/EggControllerLoader.d.ts +0 -7
- package/lib/EggControllerLoader.js +0 -31
- package/lib/EggControllerPrototypeHook.d.ts +0 -5
- package/lib/EggControllerPrototypeHook.js +0 -10
- package/lib/RootProtoManager.d.ts +0 -8
- package/lib/RootProtoManager.js +0 -32
- package/lib/errors.d.ts +0 -5
- package/lib/errors.js +0 -12
- package/lib/impl/http/Acl.d.ts +0 -2
- package/lib/impl/http/Acl.js +0 -32
- package/lib/impl/http/HTTPControllerRegister.d.ts +0 -18
- package/lib/impl/http/HTTPControllerRegister.js +0 -59
- package/lib/impl/http/HTTPMethodRegister.d.ts +0 -19
- package/lib/impl/http/HTTPMethodRegister.js +0 -161
- package/lib/impl/http/Req.d.ts +0 -5
- package/lib/impl/http/Req.js +0 -13
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import "@eggjs/tegg";
|
|
2
|
+
|
|
3
|
+
//#region src/lib/impl/http/Acl.ts
|
|
4
|
+
function aclMiddlewareFactory(controllerMeta, methodMeta) {
|
|
5
|
+
if (!controllerMeta.hasMethodAcl(methodMeta)) return;
|
|
6
|
+
const code = controllerMeta.getMethodAcl(methodMeta);
|
|
7
|
+
return async function aclMiddleware(ctx, next) {
|
|
8
|
+
try {
|
|
9
|
+
await ctx.acl(code);
|
|
10
|
+
} catch (e) {
|
|
11
|
+
const { redirectUrl, status } = e.data || {};
|
|
12
|
+
if (!redirectUrl) throw e;
|
|
13
|
+
if (ctx.acceptJSON) {
|
|
14
|
+
ctx.body = {
|
|
15
|
+
target: redirectUrl,
|
|
16
|
+
stat: "deny"
|
|
17
|
+
};
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (status) ctx.realStatus = status;
|
|
21
|
+
ctx.redirect(redirectUrl);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
return next();
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { aclMiddlewareFactory };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RootProtoManager } from "../../RootProtoManager.js";
|
|
2
|
+
import { ControllerRegister } from "../../ControllerRegister.js";
|
|
3
|
+
import { EggPrototype } from "@eggjs/tegg-metadata";
|
|
4
|
+
import { ControllerMetadata } from "@eggjs/tegg";
|
|
5
|
+
import { EggContainerFactory } from "@eggjs/tegg-runtime";
|
|
6
|
+
import { Application, Router } from "egg";
|
|
7
|
+
|
|
8
|
+
//#region src/lib/impl/http/HTTPControllerRegister.d.ts
|
|
9
|
+
declare class HTTPControllerRegister implements ControllerRegister {
|
|
10
|
+
static instance?: HTTPControllerRegister;
|
|
11
|
+
private readonly router;
|
|
12
|
+
private readonly checkRouters;
|
|
13
|
+
private readonly eggContainerFactory;
|
|
14
|
+
private controllerProtos;
|
|
15
|
+
static create(proto: EggPrototype, controllerMeta: ControllerMetadata, app: Application): HTTPControllerRegister;
|
|
16
|
+
constructor(router: Router, eggContainerFactory: typeof EggContainerFactory);
|
|
17
|
+
register(): Promise<void>;
|
|
18
|
+
static clean(): void;
|
|
19
|
+
doRegister(rootProtoManager: RootProtoManager): void;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { HTTPControllerRegister };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import "../../RootProtoManager.js";
|
|
2
|
+
import "../../ControllerRegister.js";
|
|
3
|
+
import { HTTPMethodRegister } from "./HTTPMethodRegister.js";
|
|
4
|
+
import "@eggjs/tegg-metadata";
|
|
5
|
+
import { CONTROLLER_META_DATA, ControllerType, HTTPControllerMeta, HTTPMethodMeta } from "@eggjs/tegg";
|
|
6
|
+
import { EggContainerFactory } from "@eggjs/tegg-runtime";
|
|
7
|
+
import assert from "node:assert/strict";
|
|
8
|
+
import { Application, Router } from "egg";
|
|
9
|
+
|
|
10
|
+
//#region src/lib/impl/http/HTTPControllerRegister.ts
|
|
11
|
+
var HTTPControllerRegister = class HTTPControllerRegister {
|
|
12
|
+
static instance;
|
|
13
|
+
router;
|
|
14
|
+
checkRouters;
|
|
15
|
+
eggContainerFactory;
|
|
16
|
+
controllerProtos = [];
|
|
17
|
+
static create(proto, controllerMeta, app) {
|
|
18
|
+
assert(controllerMeta.type === ControllerType.HTTP, "controller meta type is not HTTP");
|
|
19
|
+
if (!HTTPControllerRegister.instance) HTTPControllerRegister.instance = new HTTPControllerRegister(app.router, app.eggContainerFactory);
|
|
20
|
+
HTTPControllerRegister.instance.controllerProtos.push(proto);
|
|
21
|
+
return HTTPControllerRegister.instance;
|
|
22
|
+
}
|
|
23
|
+
constructor(router, eggContainerFactory) {
|
|
24
|
+
this.router = router;
|
|
25
|
+
this.checkRouters = /* @__PURE__ */ new Map();
|
|
26
|
+
this.checkRouters.set("default", router);
|
|
27
|
+
this.eggContainerFactory = eggContainerFactory;
|
|
28
|
+
}
|
|
29
|
+
register() {
|
|
30
|
+
return Promise.resolve();
|
|
31
|
+
}
|
|
32
|
+
static clean() {
|
|
33
|
+
if (this.instance) {
|
|
34
|
+
this.instance.controllerProtos = [];
|
|
35
|
+
this.instance.checkRouters.clear();
|
|
36
|
+
}
|
|
37
|
+
this.instance = void 0;
|
|
38
|
+
}
|
|
39
|
+
doRegister(rootProtoManager) {
|
|
40
|
+
const methodMap = /* @__PURE__ */ new Map();
|
|
41
|
+
for (const proto of this.controllerProtos) {
|
|
42
|
+
const metadata = proto.getMetaData(CONTROLLER_META_DATA);
|
|
43
|
+
for (const method of metadata.methods) methodMap.set(method, proto);
|
|
44
|
+
}
|
|
45
|
+
const allMethods = Array.from(methodMap.keys()).sort((a, b) => b.priority - a.priority);
|
|
46
|
+
for (const method of allMethods) {
|
|
47
|
+
const controllerProto = methodMap.get(method);
|
|
48
|
+
const controllerMeta = controllerProto.getMetaData(CONTROLLER_META_DATA);
|
|
49
|
+
new HTTPMethodRegister(controllerProto, controllerMeta, method, this.router, this.checkRouters, this.eggContainerFactory).checkDuplicate();
|
|
50
|
+
}
|
|
51
|
+
for (const method of allMethods) {
|
|
52
|
+
const controllerProto = methodMap.get(method);
|
|
53
|
+
const controllerMeta = controllerProto.getMetaData(CONTROLLER_META_DATA);
|
|
54
|
+
new HTTPMethodRegister(controllerProto, controllerMeta, method, this.router, this.checkRouters, this.eggContainerFactory).register(rootProtoManager);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
//#endregion
|
|
60
|
+
export { HTTPControllerRegister };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RootProtoManager } from "../../RootProtoManager.js";
|
|
2
|
+
import { EggPrototype } from "@eggjs/tegg-metadata";
|
|
3
|
+
import { HTTPControllerMeta, HTTPMethodMeta } from "@eggjs/tegg";
|
|
4
|
+
import { EggContainerFactory } from "@eggjs/tegg-runtime";
|
|
5
|
+
import { Router } from "egg";
|
|
6
|
+
|
|
7
|
+
//#region src/lib/impl/http/HTTPMethodRegister.d.ts
|
|
8
|
+
declare class HTTPMethodRegister {
|
|
9
|
+
private readonly router;
|
|
10
|
+
private readonly checkRouters;
|
|
11
|
+
private readonly controllerMeta;
|
|
12
|
+
private readonly methodMeta;
|
|
13
|
+
private readonly proto;
|
|
14
|
+
private readonly eggContainerFactory;
|
|
15
|
+
constructor(proto: EggPrototype, controllerMeta: HTTPControllerMeta, methodMeta: HTTPMethodMeta, router: Router, checkRouters: Map<string, Router>, eggContainerFactory: typeof EggContainerFactory);
|
|
16
|
+
private createHandler;
|
|
17
|
+
checkDuplicate(): void;
|
|
18
|
+
private registerToRouter;
|
|
19
|
+
private checkDuplicateInRouter;
|
|
20
|
+
register(rootProtoManager: RootProtoManager): void;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { HTTPMethodRegister };
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import "../../RootProtoManager.js";
|
|
2
|
+
import { aclMiddlewareFactory } from "./Acl.js";
|
|
3
|
+
import { HTTPRequest as HTTPRequest$1 } from "./Req.js";
|
|
4
|
+
import { RouterConflictError } from "../../errors.js";
|
|
5
|
+
import "@eggjs/tegg-metadata";
|
|
6
|
+
import { HTTPControllerMeta, HTTPCookies, HTTPMethodMeta, HTTPParamType } from "@eggjs/tegg";
|
|
7
|
+
import { EggContainerFactory } from "@eggjs/tegg-runtime";
|
|
8
|
+
import { Context, Router } from "egg";
|
|
9
|
+
import assert from "node:assert";
|
|
10
|
+
import pathToRegexp from "path-to-regexp";
|
|
11
|
+
import { EggRouter } from "@eggjs/router";
|
|
12
|
+
import { FrameworkErrorFormater } from "egg-errors";
|
|
13
|
+
|
|
14
|
+
//#region src/lib/impl/http/HTTPMethodRegister.ts
|
|
15
|
+
const noop = () => {};
|
|
16
|
+
var HTTPMethodRegister = class {
|
|
17
|
+
router;
|
|
18
|
+
checkRouters;
|
|
19
|
+
controllerMeta;
|
|
20
|
+
methodMeta;
|
|
21
|
+
proto;
|
|
22
|
+
eggContainerFactory;
|
|
23
|
+
constructor(proto, controllerMeta, methodMeta, router, checkRouters, eggContainerFactory) {
|
|
24
|
+
this.proto = proto;
|
|
25
|
+
this.controllerMeta = controllerMeta;
|
|
26
|
+
this.router = router;
|
|
27
|
+
this.methodMeta = methodMeta;
|
|
28
|
+
this.checkRouters = checkRouters;
|
|
29
|
+
this.eggContainerFactory = eggContainerFactory;
|
|
30
|
+
}
|
|
31
|
+
createHandler(methodMeta, host) {
|
|
32
|
+
const argsLength = methodMeta.paramMap.size;
|
|
33
|
+
const hasContext = methodMeta.contextParamIndex !== void 0;
|
|
34
|
+
const contextIndex = methodMeta.contextParamIndex;
|
|
35
|
+
const methodArgsLength = argsLength + (hasContext ? 1 : 0);
|
|
36
|
+
const self = this;
|
|
37
|
+
return async function(ctx, next) {
|
|
38
|
+
if (host && host !== ctx.host) return await next();
|
|
39
|
+
const realObj = (await self.eggContainerFactory.getOrCreateEggObject(self.proto, self.proto.name)).obj;
|
|
40
|
+
const realMethod = realObj[methodMeta.name];
|
|
41
|
+
const args = Array.from({ length: methodArgsLength });
|
|
42
|
+
if (hasContext) args[contextIndex] = ctx;
|
|
43
|
+
for (const [index, param] of methodMeta.paramMap) switch (param.type) {
|
|
44
|
+
case HTTPParamType.BODY:
|
|
45
|
+
args[index] = ctx.request.body;
|
|
46
|
+
break;
|
|
47
|
+
case HTTPParamType.PARAM: {
|
|
48
|
+
const pathParam = param;
|
|
49
|
+
args[index] = ctx.params[pathParam.name];
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case HTTPParamType.QUERY: {
|
|
53
|
+
const queryParam = param;
|
|
54
|
+
args[index] = ctx.query[queryParam.name];
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
case HTTPParamType.QUERIES: {
|
|
58
|
+
const queryParam = param;
|
|
59
|
+
args[index] = ctx.queries[queryParam.name];
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
case HTTPParamType.HEADERS:
|
|
63
|
+
args[index] = ctx.request.headers;
|
|
64
|
+
break;
|
|
65
|
+
case HTTPParamType.REQUEST:
|
|
66
|
+
args[index] = new HTTPRequest$1(ctx);
|
|
67
|
+
break;
|
|
68
|
+
case HTTPParamType.COOKIES:
|
|
69
|
+
args[index] = new HTTPCookies(ctx, []);
|
|
70
|
+
break;
|
|
71
|
+
default: assert.fail("never arrive");
|
|
72
|
+
}
|
|
73
|
+
const body = await Reflect.apply(realMethod, realObj, args);
|
|
74
|
+
const explicitStatus = ctx.response._explicitStatus;
|
|
75
|
+
if (body !== null && body !== void 0 || !explicitStatus) ctx.body = body;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
checkDuplicate() {
|
|
79
|
+
this.checkDuplicateInRouter(this.router);
|
|
80
|
+
let hostRouter;
|
|
81
|
+
(this.controllerMeta.getMethodHosts(this.methodMeta) || []).forEach((h) => {
|
|
82
|
+
if (h) {
|
|
83
|
+
hostRouter = this.checkRouters.get(h);
|
|
84
|
+
if (!hostRouter) {
|
|
85
|
+
hostRouter = new EggRouter({ sensitive: true }, this.router.app);
|
|
86
|
+
this.checkRouters.set(h, hostRouter);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (hostRouter) {
|
|
90
|
+
this.checkDuplicateInRouter(hostRouter);
|
|
91
|
+
this.registerToRouter(hostRouter);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
registerToRouter(router) {
|
|
96
|
+
const routerFunc = router[this.methodMeta.method.toLowerCase()];
|
|
97
|
+
const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
|
|
98
|
+
const methodName = this.controllerMeta.getMethodName(this.methodMeta);
|
|
99
|
+
Reflect.apply(routerFunc, router, [
|
|
100
|
+
methodName,
|
|
101
|
+
methodRealPath,
|
|
102
|
+
noop
|
|
103
|
+
]);
|
|
104
|
+
}
|
|
105
|
+
checkDuplicateInRouter(router) {
|
|
106
|
+
const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
|
|
107
|
+
const matched = router.match(methodRealPath, this.methodMeta.method);
|
|
108
|
+
const methodName = this.controllerMeta.getMethodName(this.methodMeta);
|
|
109
|
+
if (matched.route) {
|
|
110
|
+
const [layer] = matched.path;
|
|
111
|
+
const err = new RouterConflictError(`register http controller ${methodName} failed, ${this.methodMeta.method} ${methodRealPath} is conflict with exists rule ${layer.path}`);
|
|
112
|
+
throw FrameworkErrorFormater.format(err);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
register(rootProtoManager) {
|
|
116
|
+
const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
|
|
117
|
+
const methodName = this.controllerMeta.getMethodName(this.methodMeta);
|
|
118
|
+
const routerFunc = this.router[this.methodMeta.method.toLowerCase()];
|
|
119
|
+
const methodMiddlewares = this.controllerMeta.getMethodMiddlewares(this.methodMeta);
|
|
120
|
+
const aclMiddleware = aclMiddlewareFactory(this.controllerMeta, this.methodMeta);
|
|
121
|
+
if (aclMiddleware) methodMiddlewares.push(aclMiddleware);
|
|
122
|
+
(this.controllerMeta.getMethodHosts(this.methodMeta) || [void 0]).forEach((h) => {
|
|
123
|
+
const handler = this.createHandler(this.methodMeta, h);
|
|
124
|
+
Reflect.apply(routerFunc, this.router, [
|
|
125
|
+
methodName,
|
|
126
|
+
methodRealPath,
|
|
127
|
+
...methodMiddlewares,
|
|
128
|
+
handler
|
|
129
|
+
]);
|
|
130
|
+
const regExp = pathToRegexp(methodRealPath, { sensitive: true });
|
|
131
|
+
rootProtoManager.registerRootProto(this.methodMeta.method, (ctx) => {
|
|
132
|
+
if (regExp.test(ctx.path)) return this.proto;
|
|
133
|
+
}, h || "");
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
//#endregion
|
|
139
|
+
export { HTTPMethodRegister };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { HTTPRequest as HTTPRequest$1 } from "@eggjs/tegg";
|
|
2
|
+
|
|
3
|
+
//#region src/lib/impl/http/Req.ts
|
|
4
|
+
var HTTPRequest = class extends HTTPRequest$1 {
|
|
5
|
+
constructor(ctx) {
|
|
6
|
+
const request = ctx.request;
|
|
7
|
+
super(request.href, {
|
|
8
|
+
method: request.method,
|
|
9
|
+
headers: request.headers,
|
|
10
|
+
body: ctx.request.rawBody
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { HTTPRequest };
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "@eggjs/tegg-plugin/types";
|
package/dist/types.js
ADDED
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"tegg"
|
|
8
8
|
]
|
|
9
9
|
},
|
|
10
|
-
"version": "4.0.0-beta.
|
|
10
|
+
"version": "4.0.0-beta.6",
|
|
11
11
|
"description": "controller decorator for egg",
|
|
12
12
|
"keywords": [
|
|
13
13
|
"egg",
|
|
@@ -17,32 +17,32 @@
|
|
|
17
17
|
"tegg"
|
|
18
18
|
],
|
|
19
19
|
"files": [
|
|
20
|
-
"
|
|
21
|
-
"app.d.ts",
|
|
22
|
-
"lib/**/*.js",
|
|
23
|
-
"lib/**/*.d.ts",
|
|
24
|
-
"app/**/*.js",
|
|
25
|
-
"app/**/*.d.ts",
|
|
26
|
-
"index.js",
|
|
27
|
-
"index.d.ts"
|
|
20
|
+
"dist"
|
|
28
21
|
],
|
|
29
22
|
"type": "module",
|
|
30
23
|
"exports": {
|
|
31
|
-
".":
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
24
|
+
".": "./dist/index.js",
|
|
25
|
+
"./app": "./dist/app.js",
|
|
26
|
+
"./app/middleware/tegg_root_proto": "./dist/app/middleware/tegg_root_proto.js",
|
|
27
|
+
"./lib/AppLoadUnitControllerHook": "./dist/lib/AppLoadUnitControllerHook.js",
|
|
28
|
+
"./lib/ControllerLoadUnit": "./dist/lib/ControllerLoadUnit.js",
|
|
29
|
+
"./lib/ControllerLoadUnitHandler": "./dist/lib/ControllerLoadUnitHandler.js",
|
|
30
|
+
"./lib/ControllerLoadUnitInstance": "./dist/lib/ControllerLoadUnitInstance.js",
|
|
31
|
+
"./lib/ControllerMetadataManager": "./dist/lib/ControllerMetadataManager.js",
|
|
32
|
+
"./lib/ControllerRegister": "./dist/lib/ControllerRegister.js",
|
|
33
|
+
"./lib/ControllerRegisterFactory": "./dist/lib/ControllerRegisterFactory.js",
|
|
34
|
+
"./lib/EggControllerLoader": "./dist/lib/EggControllerLoader.js",
|
|
35
|
+
"./lib/EggControllerPrototypeHook": "./dist/lib/EggControllerPrototypeHook.js",
|
|
36
|
+
"./lib/errors": "./dist/lib/errors.js",
|
|
37
|
+
"./lib/impl/http/Acl": "./dist/lib/impl/http/Acl.js",
|
|
38
|
+
"./lib/impl/http/HTTPControllerRegister": "./dist/lib/impl/http/HTTPControllerRegister.js",
|
|
39
|
+
"./lib/impl/http/HTTPMethodRegister": "./dist/lib/impl/http/HTTPMethodRegister.js",
|
|
40
|
+
"./lib/impl/http/Req": "./dist/lib/impl/http/Req.js",
|
|
41
|
+
"./lib/RootProtoManager": "./dist/lib/RootProtoManager.js",
|
|
42
|
+
"./types": "./dist/types.js",
|
|
35
43
|
"./package.json": "./package.json"
|
|
36
44
|
},
|
|
37
|
-
"
|
|
38
|
-
"test": "egg-bin test",
|
|
39
|
-
"cov": "egg-bin cov",
|
|
40
|
-
"clean": "tsc -b --clean",
|
|
41
|
-
"tsc": "npm run clean && tsc -p ./tsconfig.pub.json",
|
|
42
|
-
"tsc:pub": "npm run tsc",
|
|
43
|
-
"prepublishOnly": "npm run tsc"
|
|
44
|
-
},
|
|
45
|
-
"homepage": "https://github.com/eggjs/tegg",
|
|
45
|
+
"homepage": "https://github.com/eggjs/tegg/tree/next/plugin/controller",
|
|
46
46
|
"bugs": {
|
|
47
47
|
"url": "https://github.com/eggjs/tegg/issues"
|
|
48
48
|
},
|
|
@@ -52,38 +52,47 @@
|
|
|
52
52
|
"directory": "plugin/controller"
|
|
53
53
|
},
|
|
54
54
|
"engines": {
|
|
55
|
-
"node": ">=
|
|
55
|
+
"node": ">=22.18.0"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@eggjs/
|
|
59
|
-
"@eggjs/egg-module-common": "^4.0.0-beta.4",
|
|
60
|
-
"@eggjs/router": "^3.0.5",
|
|
61
|
-
"@eggjs/tegg": "^4.0.0-beta.4",
|
|
62
|
-
"@eggjs/tegg-common-util": "^4.0.0-beta.4",
|
|
63
|
-
"@eggjs/tegg-loader": "^4.0.0-beta.4",
|
|
64
|
-
"@eggjs/tegg-metadata": "^4.0.0-beta.4",
|
|
65
|
-
"@eggjs/tegg-runtime": "^4.0.0-beta.4",
|
|
66
|
-
"@eggjs/tegg-types": "^4.0.0-beta.4",
|
|
58
|
+
"@eggjs/router": "beta",
|
|
67
59
|
"egg-errors": "^2.3.0",
|
|
68
60
|
"globby": "^14.1.0",
|
|
69
61
|
"path-to-regexp": "^1.9.0",
|
|
70
|
-
"sdk-base": "^5.0.1"
|
|
62
|
+
"sdk-base": "^5.0.1",
|
|
63
|
+
"@eggjs/egg-module-common": "4.0.0-beta.6",
|
|
64
|
+
"@eggjs/tegg": "4.0.0-beta.6",
|
|
65
|
+
"@eggjs/tegg-common-util": "4.0.0-beta.6",
|
|
66
|
+
"@eggjs/tegg-loader": "4.0.0-beta.6",
|
|
67
|
+
"@eggjs/tegg-runtime": "4.0.0-beta.6",
|
|
68
|
+
"@eggjs/tegg-metadata": "4.0.0-beta.6",
|
|
69
|
+
"@eggjs/tegg-types": "4.0.0-beta.6"
|
|
70
|
+
},
|
|
71
|
+
"peerDependencies": {
|
|
72
|
+
"egg": "beta",
|
|
73
|
+
"@eggjs/tegg-plugin": "4.0.0-beta.6"
|
|
71
74
|
},
|
|
72
75
|
"devDependencies": {
|
|
73
|
-
"@eggjs/
|
|
74
|
-
"@eggjs/
|
|
75
|
-
"@
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"@
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"typescript": "5"
|
|
76
|
+
"@eggjs/mock": "beta",
|
|
77
|
+
"@eggjs/tracer": "beta",
|
|
78
|
+
"@types/node": "^22.10.5",
|
|
79
|
+
"egg": "beta",
|
|
80
|
+
"typescript": "^5.9.3",
|
|
81
|
+
"tsdown": "^0.15.6",
|
|
82
|
+
"unplugin-unused": "^0.5.3",
|
|
83
|
+
"@eggjs/module-test-util": "4.0.0-beta.4",
|
|
84
|
+
"@eggjs/tegg-config": "4.0.0-beta.6",
|
|
85
|
+
"@eggjs/tegg-plugin": "4.0.0-beta.6"
|
|
84
86
|
},
|
|
85
87
|
"publishConfig": {
|
|
86
88
|
"access": "public"
|
|
87
89
|
},
|
|
88
|
-
"
|
|
89
|
-
|
|
90
|
+
"main": "./dist/index.js",
|
|
91
|
+
"module": "./dist/index.js",
|
|
92
|
+
"types": "./dist/index.d.ts",
|
|
93
|
+
"scripts": {
|
|
94
|
+
"clean": "rimraf dist",
|
|
95
|
+
"build": "tsdown",
|
|
96
|
+
"typecheck": "tsc --noEmit"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ROOT_PROTO } from '@eggjs/egg-module-common';
|
|
2
|
-
export default function (_, app) {
|
|
3
|
-
return async function teggRootProto(ctx, next) {
|
|
4
|
-
ctx[ROOT_PROTO] = app.rootProtoManager.getRootProto(ctx);
|
|
5
|
-
return next();
|
|
6
|
-
};
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVnZ19yb290X3Byb3RvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVnZ19yb290X3Byb3RvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxNQUFNLENBQUMsT0FBTyxXQUFVLENBQVUsRUFBRSxHQUFZO0lBQzlDLE9BQU8sS0FBSyxVQUFVLGFBQWEsQ0FBQyxHQUFlLEVBQUUsSUFBVTtRQUM3RCxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
package/app.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { EggCore as Application, ILifecycleBoot } from '@eggjs/core';
|
|
2
|
-
export default class ControllerAppBootHook implements ILifecycleBoot {
|
|
3
|
-
private readonly app;
|
|
4
|
-
private readonly loadUnitHook;
|
|
5
|
-
private readonly controllerRegisterFactory;
|
|
6
|
-
private controllerLoadUnitHandler;
|
|
7
|
-
private readonly controllerPrototypeHook;
|
|
8
|
-
constructor(app: Application);
|
|
9
|
-
configWillLoad(): void;
|
|
10
|
-
prepareMiddleware(middlewareNames: string[]): string[];
|
|
11
|
-
didLoad(): Promise<void>;
|
|
12
|
-
beforeClose(): Promise<void>;
|
|
13
|
-
}
|
package/app.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { CONTROLLER_LOAD_UNIT, ControllerLoadUnit } from './lib/ControllerLoadUnit.js';
|
|
2
|
-
import { AppLoadUnitControllerHook } from './lib/AppLoadUnitControllerHook.js';
|
|
3
|
-
import { ControllerMetaBuilderFactory, ControllerType } from '@eggjs/tegg';
|
|
4
|
-
import { HTTPControllerRegister } from './lib/impl/http/HTTPControllerRegister.js';
|
|
5
|
-
import { ControllerRegisterFactory } from './lib/ControllerRegisterFactory.js';
|
|
6
|
-
import { ControllerLoadUnitHandler } from './lib/ControllerLoadUnitHandler.js';
|
|
7
|
-
import { ModuleLoadUnitInstance } from '@eggjs/tegg-runtime';
|
|
8
|
-
import { ControllerMetadataManager } from './lib/ControllerMetadataManager.js';
|
|
9
|
-
import { EggControllerPrototypeHook } from './lib/EggControllerPrototypeHook.js';
|
|
10
|
-
import { RootProtoManager } from './lib/RootProtoManager.js';
|
|
11
|
-
import { EggControllerLoader } from './lib/EggControllerLoader.js';
|
|
12
|
-
// Load Controller process
|
|
13
|
-
// 1. await add load unit is ready, controller may depend other load unit
|
|
14
|
-
// 2. load ${app_base_dir}app/controller file
|
|
15
|
-
// 3. ControllerRegister register controller implement
|
|
16
|
-
export default class ControllerAppBootHook {
|
|
17
|
-
app;
|
|
18
|
-
loadUnitHook;
|
|
19
|
-
controllerRegisterFactory;
|
|
20
|
-
controllerLoadUnitHandler;
|
|
21
|
-
controllerPrototypeHook;
|
|
22
|
-
constructor(app) {
|
|
23
|
-
this.app = app;
|
|
24
|
-
this.controllerRegisterFactory = new ControllerRegisterFactory(this.app);
|
|
25
|
-
this.app.rootProtoManager = new RootProtoManager();
|
|
26
|
-
this.app.controllerRegisterFactory = this.controllerRegisterFactory;
|
|
27
|
-
this.app.controllerMetaBuilderFactory = ControllerMetaBuilderFactory;
|
|
28
|
-
this.loadUnitHook = new AppLoadUnitControllerHook(this.controllerRegisterFactory, this.app.rootProtoManager);
|
|
29
|
-
this.controllerPrototypeHook = new EggControllerPrototypeHook();
|
|
30
|
-
}
|
|
31
|
-
configWillLoad() {
|
|
32
|
-
this.app.loadUnitLifecycleUtil.registerLifecycle(this.loadUnitHook);
|
|
33
|
-
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.controllerPrototypeHook);
|
|
34
|
-
this.app.loaderFactory.registerLoader(CONTROLLER_LOAD_UNIT, unitPath => {
|
|
35
|
-
return new EggControllerLoader(unitPath);
|
|
36
|
-
});
|
|
37
|
-
this.controllerRegisterFactory.registerControllerRegister(ControllerType.HTTP, HTTPControllerRegister.create);
|
|
38
|
-
this.app.loadUnitFactory.registerLoadUnitCreator(CONTROLLER_LOAD_UNIT, (ctx) => {
|
|
39
|
-
return new ControllerLoadUnit(`tegg-app-controller:${ctx.unitPath}`, ctx.unitPath, ctx.loader, this.app.eggPrototypeFactory, this.app.eggPrototypeCreatorFactory);
|
|
40
|
-
});
|
|
41
|
-
this.app.loadUnitInstanceFactory.registerLoadUnitInstanceClass(CONTROLLER_LOAD_UNIT, (ctx) => {
|
|
42
|
-
return new ModuleLoadUnitInstance(ctx.loadUnit);
|
|
43
|
-
});
|
|
44
|
-
// init http root proto middleware
|
|
45
|
-
this.prepareMiddleware(this.app.config.coreMiddleware);
|
|
46
|
-
}
|
|
47
|
-
prepareMiddleware(middlewareNames) {
|
|
48
|
-
if (!middlewareNames.includes('teggCtxLifecycleMiddleware')) {
|
|
49
|
-
middlewareNames.unshift('teggCtxLifecycleMiddleware');
|
|
50
|
-
}
|
|
51
|
-
const index = middlewareNames.indexOf('teggCtxLifecycleMiddleware');
|
|
52
|
-
middlewareNames.splice(index, 0, 'teggRootProto');
|
|
53
|
-
return middlewareNames;
|
|
54
|
-
}
|
|
55
|
-
async didLoad() {
|
|
56
|
-
await this.app.moduleHandler.ready();
|
|
57
|
-
this.controllerLoadUnitHandler = new ControllerLoadUnitHandler(this.app);
|
|
58
|
-
await this.controllerLoadUnitHandler.ready();
|
|
59
|
-
// The real register HTTP controller/method.
|
|
60
|
-
// HTTP method should sort by priority
|
|
61
|
-
// The HTTPControllerRegister will collect all the methods
|
|
62
|
-
// and register methods after collect is done.
|
|
63
|
-
HTTPControllerRegister.instance?.doRegister(this.app.rootProtoManager);
|
|
64
|
-
}
|
|
65
|
-
async beforeClose() {
|
|
66
|
-
if (this.controllerLoadUnitHandler) {
|
|
67
|
-
await this.controllerLoadUnitHandler.destroy();
|
|
68
|
-
}
|
|
69
|
-
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.loadUnitHook);
|
|
70
|
-
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.controllerPrototypeHook);
|
|
71
|
-
ControllerMetadataManager.instance.clear();
|
|
72
|
-
HTTPControllerRegister.clean();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFvQyxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRW5FLDBCQUEwQjtBQUMxQix5RUFBeUU7QUFDekUsNkNBQTZDO0FBQzdDLHNEQUFzRDtBQUV0RCxNQUFNLENBQUMsT0FBTyxPQUFPLHFCQUFxQjtJQUN2QixHQUFHLENBQWM7SUFDakIsWUFBWSxDQUE0QjtJQUN4Qyx5QkFBeUIsQ0FBNEI7SUFDOUQseUJBQXlCLENBQTRCO0lBQzVDLHVCQUF1QixDQUE2QjtJQUVyRSxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUkseUJBQXlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFD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
|
package/index.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import '@eggjs/tegg-plugin';
|
|
2
|
-
import { ControllerMetaBuilderFactory } from '@eggjs/tegg';
|
|
3
|
-
import { RootProtoManager } from './lib/RootProtoManager.js';
|
|
4
|
-
import { ControllerRegisterFactory } from './lib/ControllerRegisterFactory.js';
|
|
5
|
-
declare module '@eggjs/core' {
|
|
6
|
-
interface TEggControllerApp {
|
|
7
|
-
rootProtoManager: RootProtoManager;
|
|
8
|
-
controllerRegisterFactory: ControllerRegisterFactory;
|
|
9
|
-
controllerMetaBuilderFactory: typeof ControllerMetaBuilderFactory;
|
|
10
|
-
}
|
|
11
|
-
interface EggCore extends TEggControllerApp {
|
|
12
|
-
}
|
|
13
|
-
}
|
package/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { LoadUnit, LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { LifecycleHook } from '@eggjs/tegg';
|
|
3
|
-
import { ControllerRegisterFactory } from './ControllerRegisterFactory.js';
|
|
4
|
-
import { RootProtoManager } from './RootProtoManager.js';
|
|
5
|
-
export declare class AppLoadUnitControllerHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
6
|
-
private readonly controllerRegisterFactory;
|
|
7
|
-
private readonly rootProtoManager;
|
|
8
|
-
constructor(controllerRegisterFactory: ControllerRegisterFactory, rootProtoManager: RootProtoManager);
|
|
9
|
-
postCreate(_: LoadUnitLifecycleContext, obj: LoadUnit): Promise<void>;
|
|
10
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { CONTROLLER_META_DATA } from '@eggjs/tegg';
|
|
2
|
-
import { ControllerMetadataManager } from './ControllerMetadataManager.js';
|
|
3
|
-
export class AppLoadUnitControllerHook {
|
|
4
|
-
controllerRegisterFactory;
|
|
5
|
-
rootProtoManager;
|
|
6
|
-
constructor(controllerRegisterFactory, rootProtoManager) {
|
|
7
|
-
this.controllerRegisterFactory = controllerRegisterFactory;
|
|
8
|
-
this.rootProtoManager = rootProtoManager;
|
|
9
|
-
}
|
|
10
|
-
async postCreate(_, obj) {
|
|
11
|
-
const iterator = obj.iterateEggPrototype();
|
|
12
|
-
for (const proto of iterator) {
|
|
13
|
-
const metadata = proto.getMetaData(CONTROLLER_META_DATA);
|
|
14
|
-
if (!metadata) {
|
|
15
|
-
continue;
|
|
16
|
-
}
|
|
17
|
-
const register = this.controllerRegisterFactory.getControllerRegister(proto, metadata);
|
|
18
|
-
if (!register) {
|
|
19
|
-
throw new Error(`not find controller implement for ${String(proto.name)} which type is ${metadata.type}`);
|
|
20
|
-
}
|
|
21
|
-
ControllerMetadataManager.instance.addController(metadata);
|
|
22
|
-
await register.register(this.rootProtoManager, obj);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwTG9hZFVuaXRDb250cm9sbGVySG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkFwcExvYWRVbml0Q29udHJvbGxlckhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFxQyxNQUFNLGFBQWEsQ0FBQztBQUV0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUczRSxNQUFNLE9BQU8seUJBQXlCO0lBQ25CLHlCQUF5QixDQUE0QjtJQUNyRCxnQkFBZ0IsQ0FBbUI7SUFFcEQsWUFBWSx5QkFBb0QsRUFBRSxnQkFBa0M7UUFDbEcsSUFBSSxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO1FBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUEyQixFQUFFLEdBQWE7UUFDekQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0MsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM3QixNQUFNLFFBQVEsR0FBbUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3pGLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxTQUFTO1lBQ1gsQ0FBQztZQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RyxDQUFDO1lBQ0QseUJBQXlCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRCxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { EggPrototype, EggPrototypeFactory, Loader, LoadUnit, EggPrototypeCreatorFactory } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { QualifierInfo, Id } from '@eggjs/tegg';
|
|
3
|
-
export declare const CONTROLLER_LOAD_UNIT = "app#controller";
|
|
4
|
-
export declare class ControllerLoadUnit implements LoadUnit {
|
|
5
|
-
private readonly loader;
|
|
6
|
-
id: Id;
|
|
7
|
-
readonly name: string;
|
|
8
|
-
readonly type = "app#controller";
|
|
9
|
-
readonly unitPath: string;
|
|
10
|
-
private eggPrototypeFactory;
|
|
11
|
-
private eggPrototypeCreatorFactory;
|
|
12
|
-
private protoMap;
|
|
13
|
-
constructor(name: string, unitPath: string, loader: Loader, eggPrototypeFactory: EggPrototypeFactory, eggPrototypeCreatorFactory: typeof EggPrototypeCreatorFactory);
|
|
14
|
-
init(): Promise<void>;
|
|
15
|
-
containPrototype(proto: EggPrototype): boolean;
|
|
16
|
-
getEggPrototype(name: string, qualifiers: QualifierInfo[]): EggPrototype[];
|
|
17
|
-
registerEggPrototype(proto: EggPrototype): void;
|
|
18
|
-
deletePrototype(proto: EggPrototype): void;
|
|
19
|
-
destroy(): Promise<void>;
|
|
20
|
-
iterateEggPrototype(): IterableIterator<EggPrototype>;
|
|
21
|
-
}
|