Skip to content

Commit ac999ea

Browse files
committed
feat: 当注册相同key的middle的时候报错
1 parent 59b232f commit ac999ea

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "kever",
3-
"version": "0.4.1",
3+
"version": "0.4.2",
44
"description": "A lightweight inversion of control container for Node.js apps powered by TypeScript and Koa runtime",
55
"main": "./lib/index.js",
66
"types": "./dts/index.d.ts",

src/runtime/koa/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ function KoaRuntime(controllers: Set<any>, options: RuntimeOptions) {
1515
const app: Koa = new Koa()
1616
const router: Router = new Router()
1717
// 注册全局中间件
18-
installMiddleware(app, middlePoll.golbalMiddle)
18+
let globalMiddles: Set<Koa.Middleware> = new Set()
19+
for (let globalMiddle of middlePoll.globalMiddle.values()) {
20+
globalMiddles.add(globalMiddle)
21+
}
22+
installMiddleware(app, globalMiddles)
1923
for (let controllerMeta of controllers) {
2024
const { path: rootPath, controller } = controllerMeta
2125
if (!rootPath) {

src/runtime/koa/middleware/index.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as Koa from 'koa'
22
import * as koaBody from 'koa-body'
33
import koaCookie from 'koa-cookie'
44
import { Tag } from '../../../types/index'
5-
5+
const Logger = console
66
export const installMiddleware = (app: Koa, middles: Set<Koa.Middleware>) => {
77
app.use(koaBody())
88
app.use(koaCookie())
@@ -20,11 +20,11 @@ export interface BaseMiddle {
2020

2121
interface MiddlePoll<T> {
2222
routeMiddle: Map<Tag, T>
23-
golbalMiddle: Set<T>
23+
globalMiddle: Map<Tag, T>
2424
}
2525
export const middlePoll: MiddlePoll<Koa.Middleware> = {
2626
routeMiddle: new Map(),
27-
golbalMiddle: new Set()
27+
globalMiddle: new Map()
2828
}
2929

3030
type registerMiddleType = (
@@ -33,12 +33,20 @@ type registerMiddleType = (
3333

3434
export const registerMiddle: registerMiddleType = (tag: Tag) => target => {
3535
const instance: BaseMiddle = new target() as BaseMiddle
36-
middlePoll.routeMiddle.set(tag, instance.ready)
36+
if (middlePoll.routeMiddle.has(tag)) {
37+
Logger.error(`[kever|err]: ${String(tag)} middleware Registered`)
38+
} else {
39+
middlePoll.routeMiddle.set(tag, instance.ready)
40+
}
3741
}
3842

3943
export const registerGlobalMiddle: registerMiddleType = (
4044
tag: Tag
4145
) => target => {
4246
const instance: BaseMiddle = new target() as BaseMiddle
43-
middlePoll.golbalMiddle.add(instance.ready)
47+
if (middlePoll.globalMiddle.has(tag)) {
48+
Logger.error(`[kever|err]: ${String(tag)} middleware Registered`)
49+
} else {
50+
middlePoll.globalMiddle.set(tag, instance.ready)
51+
}
4452
}

0 commit comments

Comments
 (0)