@arikajs/middleware 0.0.3 β 0.0.5
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 +61 -24
- package/dist/Pipeline.d.ts +5 -0
- package/dist/Pipeline.d.ts.map +1 -1
- package/dist/Pipeline.js +39 -11
- package/dist/Pipeline.js.map +1 -1
- package/dist/src/Contracts/Container.d.ts +5 -0
- package/dist/src/Contracts/Container.d.ts.map +1 -0
- package/dist/src/Contracts/Container.js +3 -0
- package/dist/src/Contracts/Container.js.map +1 -0
- package/dist/src/Middleware.d.ts +14 -0
- package/dist/src/Middleware.d.ts.map +1 -0
- package/dist/src/Middleware.js +3 -0
- package/dist/src/Middleware.js.map +1 -0
- package/dist/src/Pipeline.d.ts +48 -0
- package/dist/src/Pipeline.d.ts.map +1 -0
- package/dist/src/Pipeline.js +146 -0
- package/dist/src/Pipeline.js.map +1 -0
- package/dist/tests/EnterpriseMiddleware.test.d.ts +2 -0
- package/dist/tests/EnterpriseMiddleware.test.d.ts.map +1 -0
- package/dist/tests/EnterpriseMiddleware.test.js +77 -0
- package/dist/tests/EnterpriseMiddleware.test.js.map +1 -0
- package/dist/tests/Pipeline.test.d.ts +2 -0
- package/dist/tests/Pipeline.test.d.ts.map +1 -0
- package/dist/tests/Pipeline.test.js +108 -0
- package/dist/tests/Pipeline.test.js.map +1 -0
- package/package.json +47 -45
package/README.md
CHANGED
|
@@ -164,6 +164,45 @@ Route.get('/dashboard', handler)
|
|
|
164
164
|
kernel.use(logger);
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
+
### 5. Middleware with Arguments
|
|
168
|
+
|
|
169
|
+
You can pass arguments to middleware using a colon `:` separator.
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
// In your middleware definition:
|
|
173
|
+
export const checkRole = async (req, next, role) => {
|
|
174
|
+
if (req.user.role !== role) {
|
|
175
|
+
return new Response('Unauthorized', 403);
|
|
176
|
+
}
|
|
177
|
+
return next(req);
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
// When usage:
|
|
181
|
+
pipeline.pipe('auth:admin');
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## π Named Middleware & Groups
|
|
187
|
+
|
|
188
|
+
You can register aliases and groups to keep your middleware definitions clean.
|
|
189
|
+
|
|
190
|
+
```ts
|
|
191
|
+
pipeline.setAliases({
|
|
192
|
+
'auth': AuthMiddleware,
|
|
193
|
+
'guest': GuestMiddleware
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
pipeline.setMiddlewareGroups({
|
|
197
|
+
'web': ['cookie', 'session', 'verifyCsrf'],
|
|
198
|
+
'api': ['throttle', 'auth:api']
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
// Usage
|
|
202
|
+
pipeline.pipe('web');
|
|
203
|
+
pipeline.pipe('auth:admin');
|
|
204
|
+
```
|
|
205
|
+
|
|
167
206
|
---
|
|
168
207
|
|
|
169
208
|
## Middleware Pipeline
|
|
@@ -203,20 +242,27 @@ pipeline.pipe(authStack);
|
|
|
203
242
|
|
|
204
243
|
---
|
|
205
244
|
|
|
206
|
-
##
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
245
|
+
## π Architecture
|
|
246
|
+
|
|
247
|
+
```text
|
|
248
|
+
middleware/
|
|
249
|
+
βββ src/
|
|
250
|
+
β βββ Contracts
|
|
251
|
+
β β βββ Container.d.ts.map
|
|
252
|
+
β β βββ Container.ts
|
|
253
|
+
β βββ Compose.d.ts.map
|
|
254
|
+
β βββ Compose.ts
|
|
255
|
+
β βββ index.d.ts.map
|
|
256
|
+
β βββ index.ts
|
|
257
|
+
β βββ Middleware.d.ts.map
|
|
258
|
+
β βββ Middleware.ts
|
|
259
|
+
β βββ Pipeline.d.ts.map
|
|
260
|
+
β βββ Pipeline.ts
|
|
261
|
+
βββ tests/
|
|
262
|
+
βββ package.json
|
|
263
|
+
βββ tsconfig.json
|
|
264
|
+
βββ README.md
|
|
265
|
+
```
|
|
220
266
|
|
|
221
267
|
---
|
|
222
268
|
|
|
@@ -238,13 +284,4 @@ pipeline.pipe(authStack);
|
|
|
238
284
|
|
|
239
285
|
> βMiddleware is not logic β it is flow control.β
|
|
240
286
|
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## π Next Packages (Recommended Order)
|
|
244
|
-
|
|
245
|
-
β
Dispatcher
|
|
246
|
-
β
Middleware
|
|
247
|
-
π View Engine
|
|
248
|
-
π Validation
|
|
249
|
-
π Authentication
|
|
250
|
-
π CLI
|
|
287
|
+
---
|
package/dist/Pipeline.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare class Pipeline<TRequest = any, TResponse = any> {
|
|
|
11
11
|
private handlers;
|
|
12
12
|
private middlewareGroups;
|
|
13
13
|
private aliases;
|
|
14
|
+
private static isClassCache;
|
|
14
15
|
/**
|
|
15
16
|
* Create a new Pipeline instance.
|
|
16
17
|
*/
|
|
@@ -39,5 +40,9 @@ export declare class Pipeline<TRequest = any, TResponse = any> {
|
|
|
39
40
|
* Flatten handlers by resolving groups and aliases.
|
|
40
41
|
*/
|
|
41
42
|
private flattenHandlers;
|
|
43
|
+
/**
|
|
44
|
+
* Parse handler string to extract arguments.
|
|
45
|
+
*/
|
|
46
|
+
private parseHandler;
|
|
42
47
|
}
|
|
43
48
|
//# sourceMappingURL=Pipeline.d.ts.map
|
package/dist/Pipeline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pipeline.d.ts","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAc,MAAM,cAAc,CAAC;AAG7D;;GAEG;AACH,qBAAa,QAAQ,CAAC,QAAQ,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG;
|
|
1
|
+
{"version":3,"file":"Pipeline.d.ts","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAc,MAAM,cAAc,CAAC;AAG7D;;GAEG;AACH,qBAAa,QAAQ,CAAC,QAAQ,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG;IAarC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAZvC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAgD;IAChE,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAoC;IAE/D;;OAEG;gBAC0B,SAAS,CAAC,EAAE,SAAS,YAAA;IAElD;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;IAK/D;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAKrD;;OAEG;IACI,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI;IAShH;;OAEG;IACU,MAAM,CACf,OAAO,EAAE,QAAQ,EACjB,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,EACxF,QAAQ,CAAC,EAAE,SAAS,GACrB,OAAO,CAAC,SAAS,CAAC;IAyBrB;;OAEG;IACH,OAAO,CAAC,OAAO;IAkCf;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,YAAY;CAWvB"}
|
package/dist/Pipeline.js
CHANGED
|
@@ -52,12 +52,13 @@ class Pipeline {
|
|
|
52
52
|
if (index >= flattened.length) {
|
|
53
53
|
return destination(req, response);
|
|
54
54
|
}
|
|
55
|
-
const handler = this.
|
|
55
|
+
const { handler: rawHandler, args } = this.parseHandler(flattened[index]);
|
|
56
|
+
const handler = this.resolve(rawHandler);
|
|
56
57
|
if (typeof handler === 'function') {
|
|
57
|
-
return handler(req, (nextReq) => invoke(index + 1, nextReq), response);
|
|
58
|
+
return handler(req, (nextReq) => invoke(index + 1, nextReq), response, ...args);
|
|
58
59
|
}
|
|
59
60
|
if (typeof handler === 'object' && 'handle' in handler && typeof handler.handle === 'function') {
|
|
60
|
-
return handler.handle(req, (nextReq) => invoke(index + 1, nextReq), response);
|
|
61
|
+
return handler.handle(req, (nextReq) => invoke(index + 1, nextReq), response, ...args);
|
|
61
62
|
}
|
|
62
63
|
throw new Error(`Invalid middleware handler: ${typeof handler}`);
|
|
63
64
|
};
|
|
@@ -67,8 +68,11 @@ class Pipeline {
|
|
|
67
68
|
* Resolve the middleware handler.
|
|
68
69
|
*/
|
|
69
70
|
resolve(handler) {
|
|
70
|
-
// If it's a string, try resolving from
|
|
71
|
+
// If it's a string, try resolving from aliases first, then container
|
|
71
72
|
if (typeof handler === 'string') {
|
|
73
|
+
if (this.aliases[handler]) {
|
|
74
|
+
return this.resolve(this.aliases[handler]);
|
|
75
|
+
}
|
|
72
76
|
if (this.container && this.container.has(handler)) {
|
|
73
77
|
return this.container.make(handler);
|
|
74
78
|
}
|
|
@@ -76,8 +80,13 @@ class Pipeline {
|
|
|
76
80
|
}
|
|
77
81
|
// If it's a class/constructor (has handle on prototype), instantiate it
|
|
78
82
|
if (typeof handler === 'function') {
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
let isClass = Pipeline.isClassCache.get(handler);
|
|
84
|
+
if (isClass === undefined) {
|
|
85
|
+
const check = /^\s*class\s+/.test(handler.toString()) ||
|
|
86
|
+
(handler.prototype && typeof handler.prototype.handle === 'function');
|
|
87
|
+
isClass = !!check;
|
|
88
|
+
Pipeline.isClassCache.set(handler, isClass);
|
|
89
|
+
}
|
|
81
90
|
if (isClass) {
|
|
82
91
|
if (this.container) {
|
|
83
92
|
return this.container.make(handler);
|
|
@@ -94,13 +103,18 @@ class Pipeline {
|
|
|
94
103
|
let flattened = [];
|
|
95
104
|
for (const handler of handlers) {
|
|
96
105
|
if (typeof handler === 'string') {
|
|
97
|
-
|
|
98
|
-
|
|
106
|
+
const [name, args] = handler.split(':');
|
|
107
|
+
if (this.middlewareGroups[name]) {
|
|
108
|
+
flattened.push(...this.flattenHandlers(this.middlewareGroups[name]));
|
|
99
109
|
continue;
|
|
100
110
|
}
|
|
101
|
-
if (this.aliases[
|
|
102
|
-
const resolved = this.aliases[
|
|
103
|
-
|
|
111
|
+
if (this.aliases[name]) {
|
|
112
|
+
const resolved = this.aliases[name];
|
|
113
|
+
// If it's an alias but we have args, we keep it as a string to parse later in handle()
|
|
114
|
+
if (args) {
|
|
115
|
+
flattened.push(handler);
|
|
116
|
+
}
|
|
117
|
+
else if (Array.isArray(resolved)) {
|
|
104
118
|
flattened.push(...this.flattenHandlers(resolved));
|
|
105
119
|
}
|
|
106
120
|
else {
|
|
@@ -113,6 +127,20 @@ class Pipeline {
|
|
|
113
127
|
}
|
|
114
128
|
return flattened;
|
|
115
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Parse handler string to extract arguments.
|
|
132
|
+
*/
|
|
133
|
+
parseHandler(handler) {
|
|
134
|
+
if (typeof handler !== 'string') {
|
|
135
|
+
return { handler, args: [] };
|
|
136
|
+
}
|
|
137
|
+
const [name, ...args] = handler.split(':');
|
|
138
|
+
return {
|
|
139
|
+
handler: name,
|
|
140
|
+
args: args.length > 0 ? args[0].split(',') : []
|
|
141
|
+
};
|
|
142
|
+
}
|
|
116
143
|
}
|
|
117
144
|
exports.Pipeline = Pipeline;
|
|
145
|
+
Pipeline.isClassCache = new WeakMap();
|
|
118
146
|
//# sourceMappingURL=Pipeline.js.map
|
package/dist/Pipeline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pipeline.js","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,MAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"Pipeline.js","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/Contracts/Container.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,SAAS;IACtB,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;IAC7B,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../src/Contracts/Container.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware contract for ArikaJS.
|
|
3
|
+
*/
|
|
4
|
+
export interface Middleware<TRequest = any, TResponse = any> {
|
|
5
|
+
/**
|
|
6
|
+
* Handle an incoming request.
|
|
7
|
+
*/
|
|
8
|
+
handle(request: TRequest, next: (request: TRequest) => Promise<TResponse> | TResponse, response?: TResponse): Promise<TResponse> | TResponse;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Type for middleware that can be either a class, a function, or a string key.
|
|
12
|
+
*/
|
|
13
|
+
export type MiddlewareHandler<TRequest = any, TResponse = any> = Middleware<TRequest, TResponse> | ((request: TRequest, next: (request: TRequest) => Promise<TResponse> | TResponse, response?: TResponse) => Promise<TResponse> | TResponse) | string | any;
|
|
14
|
+
//# sourceMappingURL=Middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Middleware.d.ts","sourceRoot":"","sources":["../../src/Middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,QAAQ,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG;IACvD;;OAEG;IACH,MAAM,CACF,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,EAC3D,QAAQ,CAAC,EAAE,SAAS,GACrB,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,QAAQ,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,IACvD,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,GAC/B,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,GAC1I,MAAM,GACN,GAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Middleware.js","sourceRoot":"","sources":["../../src/Middleware.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Container } from './Contracts/Container';
|
|
2
|
+
import { MiddlewareHandler } from './Middleware';
|
|
3
|
+
/**
|
|
4
|
+
* Pipeline executes a stack of middleware in an onion-style model.
|
|
5
|
+
*/
|
|
6
|
+
export declare class Pipeline<TRequest = any, TResponse = any> {
|
|
7
|
+
private readonly container?;
|
|
8
|
+
/**
|
|
9
|
+
* The stack of middleware handlers.
|
|
10
|
+
*/
|
|
11
|
+
private handlers;
|
|
12
|
+
private middlewareGroups;
|
|
13
|
+
private aliases;
|
|
14
|
+
private static isClassCache;
|
|
15
|
+
/**
|
|
16
|
+
* Create a new Pipeline instance.
|
|
17
|
+
*/
|
|
18
|
+
constructor(container?: Container | undefined);
|
|
19
|
+
/**
|
|
20
|
+
* Set the middleware groups.
|
|
21
|
+
*/
|
|
22
|
+
setMiddlewareGroups(groups: Record<string, any[]>): this;
|
|
23
|
+
/**
|
|
24
|
+
* Set the middleware aliases.
|
|
25
|
+
*/
|
|
26
|
+
setAliases(aliases: Record<string, any>): this;
|
|
27
|
+
/**
|
|
28
|
+
* Add middleware to the pipeline.
|
|
29
|
+
*/
|
|
30
|
+
pipe(middleware: MiddlewareHandler<TRequest, TResponse> | MiddlewareHandler<TRequest, TResponse>[]): this;
|
|
31
|
+
/**
|
|
32
|
+
* Run the pipeline through the given destination.
|
|
33
|
+
*/
|
|
34
|
+
handle(request: TRequest, destination: (request: TRequest, response?: TResponse) => Promise<TResponse> | TResponse, response?: TResponse): Promise<TResponse>;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve the middleware handler.
|
|
37
|
+
*/
|
|
38
|
+
private resolve;
|
|
39
|
+
/**
|
|
40
|
+
* Flatten handlers by resolving groups and aliases.
|
|
41
|
+
*/
|
|
42
|
+
private flattenHandlers;
|
|
43
|
+
/**
|
|
44
|
+
* Parse handler string to extract arguments.
|
|
45
|
+
*/
|
|
46
|
+
private parseHandler;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=Pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pipeline.d.ts","sourceRoot":"","sources":["../../src/Pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAc,MAAM,cAAc,CAAC;AAG7D;;GAEG;AACH,qBAAa,QAAQ,CAAC,QAAQ,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG;IAarC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAZvC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAgD;IAChE,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAoC;IAE/D;;OAEG;gBAC0B,SAAS,CAAC,EAAE,SAAS,YAAA;IAElD;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;IAK/D;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAKrD;;OAEG;IACI,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI;IAShH;;OAEG;IACU,MAAM,CACf,OAAO,EAAE,QAAQ,EACjB,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,EACxF,QAAQ,CAAC,EAAE,SAAS,GACrB,OAAO,CAAC,SAAS,CAAC;IAyBrB;;OAEG;IACH,OAAO,CAAC,OAAO;IAkCf;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,YAAY;CAWvB"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Pipeline = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Pipeline executes a stack of middleware in an onion-style model.
|
|
6
|
+
*/
|
|
7
|
+
class Pipeline {
|
|
8
|
+
/**
|
|
9
|
+
* Create a new Pipeline instance.
|
|
10
|
+
*/
|
|
11
|
+
constructor(container) {
|
|
12
|
+
this.container = container;
|
|
13
|
+
/**
|
|
14
|
+
* The stack of middleware handlers.
|
|
15
|
+
*/
|
|
16
|
+
this.handlers = [];
|
|
17
|
+
this.middlewareGroups = {};
|
|
18
|
+
this.aliases = {};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Set the middleware groups.
|
|
22
|
+
*/
|
|
23
|
+
setMiddlewareGroups(groups) {
|
|
24
|
+
this.middlewareGroups = groups;
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Set the middleware aliases.
|
|
29
|
+
*/
|
|
30
|
+
setAliases(aliases) {
|
|
31
|
+
this.aliases = aliases;
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Add middleware to the pipeline.
|
|
36
|
+
*/
|
|
37
|
+
pipe(middleware) {
|
|
38
|
+
if (Array.isArray(middleware)) {
|
|
39
|
+
this.handlers.push(...middleware);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.handlers.push(middleware);
|
|
43
|
+
}
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Run the pipeline through the given destination.
|
|
48
|
+
*/
|
|
49
|
+
async handle(request, destination, response) {
|
|
50
|
+
const flattened = this.flattenHandlers(this.handlers);
|
|
51
|
+
const invoke = async (index, req) => {
|
|
52
|
+
if (index >= flattened.length) {
|
|
53
|
+
return destination(req, response);
|
|
54
|
+
}
|
|
55
|
+
const { handler: rawHandler, args } = this.parseHandler(flattened[index]);
|
|
56
|
+
const handler = this.resolve(rawHandler);
|
|
57
|
+
if (typeof handler === 'function') {
|
|
58
|
+
return handler(req, (nextReq) => invoke(index + 1, nextReq), response, ...args);
|
|
59
|
+
}
|
|
60
|
+
if (typeof handler === 'object' && 'handle' in handler && typeof handler.handle === 'function') {
|
|
61
|
+
return handler.handle(req, (nextReq) => invoke(index + 1, nextReq), response, ...args);
|
|
62
|
+
}
|
|
63
|
+
throw new Error(`Invalid middleware handler: ${typeof handler}`);
|
|
64
|
+
};
|
|
65
|
+
return invoke(0, request);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Resolve the middleware handler.
|
|
69
|
+
*/
|
|
70
|
+
resolve(handler) {
|
|
71
|
+
// If it's a string, try resolving from aliases first, then container
|
|
72
|
+
if (typeof handler === 'string') {
|
|
73
|
+
if (this.aliases[handler]) {
|
|
74
|
+
return this.resolve(this.aliases[handler]);
|
|
75
|
+
}
|
|
76
|
+
if (this.container && this.container.has(handler)) {
|
|
77
|
+
return this.container.make(handler);
|
|
78
|
+
}
|
|
79
|
+
return handler;
|
|
80
|
+
}
|
|
81
|
+
// If it's a class/constructor (has handle on prototype), instantiate it
|
|
82
|
+
if (typeof handler === 'function') {
|
|
83
|
+
let isClass = Pipeline.isClassCache.get(handler);
|
|
84
|
+
if (isClass === undefined) {
|
|
85
|
+
const check = /^\s*class\s+/.test(handler.toString()) ||
|
|
86
|
+
(handler.prototype && typeof handler.prototype.handle === 'function');
|
|
87
|
+
isClass = !!check;
|
|
88
|
+
Pipeline.isClassCache.set(handler, isClass);
|
|
89
|
+
}
|
|
90
|
+
if (isClass) {
|
|
91
|
+
if (this.container) {
|
|
92
|
+
return this.container.make(handler);
|
|
93
|
+
}
|
|
94
|
+
return new handler();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return handler;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Flatten handlers by resolving groups and aliases.
|
|
101
|
+
*/
|
|
102
|
+
flattenHandlers(handlers) {
|
|
103
|
+
let flattened = [];
|
|
104
|
+
for (const handler of handlers) {
|
|
105
|
+
if (typeof handler === 'string') {
|
|
106
|
+
const [name, args] = handler.split(':');
|
|
107
|
+
if (this.middlewareGroups[name]) {
|
|
108
|
+
flattened.push(...this.flattenHandlers(this.middlewareGroups[name]));
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (this.aliases[name]) {
|
|
112
|
+
const resolved = this.aliases[name];
|
|
113
|
+
// If it's an alias but we have args, we keep it as a string to parse later in handle()
|
|
114
|
+
if (args) {
|
|
115
|
+
flattened.push(handler);
|
|
116
|
+
}
|
|
117
|
+
else if (Array.isArray(resolved)) {
|
|
118
|
+
flattened.push(...this.flattenHandlers(resolved));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
flattened.push(...this.flattenHandlers([resolved]));
|
|
122
|
+
}
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
flattened.push(handler);
|
|
127
|
+
}
|
|
128
|
+
return flattened;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Parse handler string to extract arguments.
|
|
132
|
+
*/
|
|
133
|
+
parseHandler(handler) {
|
|
134
|
+
if (typeof handler !== 'string') {
|
|
135
|
+
return { handler, args: [] };
|
|
136
|
+
}
|
|
137
|
+
const [name, ...args] = handler.split(':');
|
|
138
|
+
return {
|
|
139
|
+
handler: name,
|
|
140
|
+
args: args.length > 0 ? args[0].split(',') : []
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.Pipeline = Pipeline;
|
|
145
|
+
Pipeline.isClassCache = new WeakMap();
|
|
146
|
+
//# sourceMappingURL=Pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pipeline.js","sourceRoot":"","sources":["../../src/Pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnterpriseMiddleware.test.d.ts","sourceRoot":"","sources":["../../tests/EnterpriseMiddleware.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Pipeline_1 = require("../src/Pipeline");
|
|
7
|
+
const http_1 = require("@arikajs/http");
|
|
8
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
9
|
+
const node_test_1 = require("node:test");
|
|
10
|
+
const mockServerResponse = () => ({
|
|
11
|
+
setHeader: () => { },
|
|
12
|
+
end: () => { },
|
|
13
|
+
});
|
|
14
|
+
(0, node_test_1.test)('Enterprise Middleware with arguments', async () => {
|
|
15
|
+
const pipeline = new Pipeline_1.Pipeline();
|
|
16
|
+
const calls = [];
|
|
17
|
+
// Functional middleware with arguments
|
|
18
|
+
// Signature is (req, next, ...args)
|
|
19
|
+
pipeline.pipe(async (req, next, res, role) => {
|
|
20
|
+
calls.push(`role:${role}`);
|
|
21
|
+
return next(req);
|
|
22
|
+
});
|
|
23
|
+
const request = {};
|
|
24
|
+
const destination = async (req) => {
|
|
25
|
+
calls.push('destination');
|
|
26
|
+
return new http_1.Response(mockServerResponse()).send('OK');
|
|
27
|
+
};
|
|
28
|
+
// We need to pass the handler as a string to trigger parsing in this simple test,
|
|
29
|
+
// but usually it's used with aliases. Let's register an alias.
|
|
30
|
+
pipeline.setAliases({
|
|
31
|
+
'checkRole': async (req, next, res, role) => {
|
|
32
|
+
calls.push(`role:${role}`);
|
|
33
|
+
return next(req);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
pipeline.pipe('checkRole:admin');
|
|
37
|
+
await pipeline.handle(request, destination);
|
|
38
|
+
// Note: Since we piped the anonymous function first (without args)
|
|
39
|
+
// and then the alias with 'admin', we expect 'role:undefined' then 'role:admin'
|
|
40
|
+
node_assert_1.default.deepStrictEqual(calls, ['role:undefined', 'role:admin', 'destination']);
|
|
41
|
+
});
|
|
42
|
+
(0, node_test_1.test)('Middleware with multiple arguments', async () => {
|
|
43
|
+
const pipeline = new Pipeline_1.Pipeline();
|
|
44
|
+
const calls = [];
|
|
45
|
+
pipeline.setAliases({
|
|
46
|
+
'gate': async (req, next, res, p1, p2) => {
|
|
47
|
+
calls.push(`params:${p1},${p2}`);
|
|
48
|
+
return next(req);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
pipeline.pipe('gate:foo,bar');
|
|
52
|
+
const request = {};
|
|
53
|
+
const destination = async (req) => {
|
|
54
|
+
return new http_1.Response(mockServerResponse()).send('OK');
|
|
55
|
+
};
|
|
56
|
+
await pipeline.handle(request, destination);
|
|
57
|
+
node_assert_1.default.deepStrictEqual(calls, ['params:foo,bar']);
|
|
58
|
+
});
|
|
59
|
+
(0, node_test_1.test)('Middleware groups resolution', async () => {
|
|
60
|
+
const pipeline = new Pipeline_1.Pipeline();
|
|
61
|
+
const calls = [];
|
|
62
|
+
pipeline.setAliases({
|
|
63
|
+
'm1': async (req, next) => { calls.push('m1'); return next(req); },
|
|
64
|
+
'm2': async (req, next) => { calls.push('m2'); return next(req); }
|
|
65
|
+
});
|
|
66
|
+
pipeline.setMiddlewareGroups({
|
|
67
|
+
'web': ['m1', 'm2']
|
|
68
|
+
});
|
|
69
|
+
pipeline.pipe('web');
|
|
70
|
+
const request = {};
|
|
71
|
+
const destination = async (req) => {
|
|
72
|
+
return new http_1.Response(mockServerResponse()).send('OK');
|
|
73
|
+
};
|
|
74
|
+
await pipeline.handle(request, destination);
|
|
75
|
+
node_assert_1.default.deepStrictEqual(calls, ['m1', 'm2']);
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=EnterpriseMiddleware.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnterpriseMiddleware.test.js","sourceRoot":"","sources":["../../tests/EnterpriseMiddleware.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pipeline.test.d.ts","sourceRoot":"","sources":["../../tests/Pipeline.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Pipeline_1 = require("../src/Pipeline");
|
|
7
|
+
const http_1 = require("@arikajs/http");
|
|
8
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
9
|
+
const node_test_1 = require("node:test");
|
|
10
|
+
const mockServerResponse = () => ({
|
|
11
|
+
setHeader: () => { },
|
|
12
|
+
end: () => { },
|
|
13
|
+
});
|
|
14
|
+
(0, node_test_1.test)('Pipeline executes middleware in order', async () => {
|
|
15
|
+
const pipeline = new Pipeline_1.Pipeline();
|
|
16
|
+
const calls = [];
|
|
17
|
+
pipeline.pipe(async (req, next) => {
|
|
18
|
+
calls.push('start 1');
|
|
19
|
+
const res = await next(req);
|
|
20
|
+
calls.push('end 1');
|
|
21
|
+
return res;
|
|
22
|
+
});
|
|
23
|
+
pipeline.pipe(async (req, next) => {
|
|
24
|
+
calls.push('start 2');
|
|
25
|
+
const res = await next(req);
|
|
26
|
+
calls.push('end 2');
|
|
27
|
+
return res;
|
|
28
|
+
});
|
|
29
|
+
const request = {};
|
|
30
|
+
const destination = async (req) => {
|
|
31
|
+
calls.push('destination');
|
|
32
|
+
return new http_1.Response(mockServerResponse()).send('OK');
|
|
33
|
+
};
|
|
34
|
+
const response = await pipeline.handle(request, destination);
|
|
35
|
+
node_assert_1.default.strictEqual(response.getContent(), 'OK');
|
|
36
|
+
node_assert_1.default.deepStrictEqual(calls, [
|
|
37
|
+
'start 1',
|
|
38
|
+
'start 2',
|
|
39
|
+
'destination',
|
|
40
|
+
'end 2',
|
|
41
|
+
'end 1'
|
|
42
|
+
]);
|
|
43
|
+
});
|
|
44
|
+
(0, node_test_1.test)('Middleware can short-circuit', async () => {
|
|
45
|
+
const pipeline = new Pipeline_1.Pipeline();
|
|
46
|
+
const calls = [];
|
|
47
|
+
pipeline.pipe(async (req, next) => {
|
|
48
|
+
calls.push('m1');
|
|
49
|
+
return new http_1.Response(mockServerResponse()).send('Short-circuit');
|
|
50
|
+
});
|
|
51
|
+
pipeline.pipe(async (req, next) => {
|
|
52
|
+
calls.push('m2');
|
|
53
|
+
return next(req);
|
|
54
|
+
});
|
|
55
|
+
const request = {};
|
|
56
|
+
const destination = async (req) => {
|
|
57
|
+
calls.push('destination');
|
|
58
|
+
return new http_1.Response(mockServerResponse()).send('OK');
|
|
59
|
+
};
|
|
60
|
+
const response = await pipeline.handle(request, destination);
|
|
61
|
+
node_assert_1.default.strictEqual(response.getContent(), 'Short-circuit');
|
|
62
|
+
node_assert_1.default.deepStrictEqual(calls, ['m1']);
|
|
63
|
+
});
|
|
64
|
+
(0, node_test_1.test)('Middleware can be a class', async () => {
|
|
65
|
+
const pipeline = new Pipeline_1.Pipeline();
|
|
66
|
+
const calls = [];
|
|
67
|
+
class Logger {
|
|
68
|
+
async handle(req, next) {
|
|
69
|
+
calls.push('logger');
|
|
70
|
+
return next(req);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
pipeline.pipe(new Logger());
|
|
74
|
+
const request = {};
|
|
75
|
+
const destination = async (req) => {
|
|
76
|
+
calls.push('destination');
|
|
77
|
+
return new http_1.Response(mockServerResponse()).send('OK');
|
|
78
|
+
};
|
|
79
|
+
await pipeline.handle(request, destination);
|
|
80
|
+
node_assert_1.default.deepStrictEqual(calls, ['logger', 'destination']);
|
|
81
|
+
});
|
|
82
|
+
(0, node_test_1.test)('Middleware can be resolved from container', async () => {
|
|
83
|
+
const container = {
|
|
84
|
+
has: (token) => token === 'auth',
|
|
85
|
+
make: (token) => {
|
|
86
|
+
if (token === 'auth')
|
|
87
|
+
return new AuthMiddleware();
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const calls = [];
|
|
92
|
+
class AuthMiddleware {
|
|
93
|
+
async handle(req, next) {
|
|
94
|
+
calls.push('auth');
|
|
95
|
+
return next(req);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const pipeline = new Pipeline_1.Pipeline(container);
|
|
99
|
+
pipeline.pipe('auth');
|
|
100
|
+
const request = {};
|
|
101
|
+
const destination = async (req) => {
|
|
102
|
+
calls.push('destination');
|
|
103
|
+
return new http_1.Response(mockServerResponse()).send('OK');
|
|
104
|
+
};
|
|
105
|
+
await pipeline.handle(request, destination);
|
|
106
|
+
node_assert_1.default.deepStrictEqual(calls, ['auth', 'destination']);
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=Pipeline.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pipeline.test.js","sourceRoot":"","sources":["../../tests/Pipeline.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,47 +1,49 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
2
|
+
"name": "@arikajs/middleware",
|
|
3
|
+
"version": "0.0.5",
|
|
4
|
+
"description": "Flexible, composable middleware system for the ArikaJS framework.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc -p tsconfig.json",
|
|
10
|
+
"build:tests": "tsc -p tsconfig.test.json",
|
|
11
|
+
"clean": "rm -rf dist",
|
|
12
|
+
"prepare": "echo skip",
|
|
13
|
+
"test": "npm run build && npm run build:tests && node --test 'dist/tests/**/*.test.js'",
|
|
14
|
+
"test:watch": "npm run build && npm run build:tests && node --test --watch 'dist/tests/**/*.test.js'",
|
|
15
|
+
"dev": "tsc -p tsconfig.json --watch"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"keywords": [
|
|
21
|
+
"arika",
|
|
22
|
+
"arika-js",
|
|
23
|
+
"framework",
|
|
24
|
+
"middleware",
|
|
25
|
+
"pipeline",
|
|
26
|
+
"onion"
|
|
27
|
+
],
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=20.0.0"
|
|
30
|
+
},
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/ArikaJs/arikajs.git",
|
|
34
|
+
"directory": "packages/middleware"
|
|
35
|
+
},
|
|
36
|
+
"bugs": {
|
|
37
|
+
"url": "https://github.com/ArikaJs/arikajs/issues"
|
|
38
|
+
},
|
|
39
|
+
"homepage": "https://github.com/ArikaJs/arikajs/tree/main/packages/middleware#readme",
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@arikajs/http": "*",
|
|
42
|
+
"@arikajs/logging": "*"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^20.11.24",
|
|
46
|
+
"typescript": "^5.3.3"
|
|
47
|
+
},
|
|
48
|
+
"author": "Prakash Tank"
|
|
47
49
|
}
|