Skip to content

Commit 16fdb35

Browse files
committed
fix: do not re-assign args to same middleware node
1 parent edd9297 commit 16fdb35

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

src/Server/PreCompiler/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,10 @@ export class PreCompiler {
132132
throw error
133133
}
134134

135-
resolvedMiddleware.args = args
136-
return resolvedMiddleware
135+
return {
136+
...resolvedMiddleware,
137+
args,
138+
}
137139
})
138140
}
139141

test/server.spec.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,41 @@ test.group('Server | middleware', (group) => {
504504
assert.isDefined(hookPacket!.parent_id)
505505
assert.equal(hookPacket!.parent_id, requestPacket!.id)
506506
})
507+
508+
test('use same middleware twice with different args', async ({ assert }) => {
509+
const stack: string[] = []
510+
511+
const app = await setupApp()
512+
const server = new Server(app, encryption, serverConfig)
513+
514+
const httpServer = createServer(server.handle.bind(server))
515+
516+
server.middleware.registerNamed({
517+
access: async function middlewareFn1() {
518+
return {
519+
default: class Middleware {
520+
public async handle(_ctx: HttpContextContract, next: any, args: string[]) {
521+
stack.push(args[0])
522+
await next()
523+
}
524+
},
525+
}
526+
},
527+
})
528+
529+
server.router
530+
.get('/', async () => {
531+
return 'done'
532+
})
533+
.middleware('access:client')
534+
.middleware('access:site')
535+
536+
server.optimize()
537+
538+
const { text } = await supertest(httpServer).get('/').expect(200)
539+
assert.deepEqual(stack, ['client', 'site'])
540+
assert.equal(text, 'done')
541+
})
507542
})
508543

509544
test.group('Server | hooks', (group) => {

0 commit comments

Comments
 (0)