@arikajs/middleware 0.0.4 β†’ 0.0.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 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
- ## Project Structure
207
-
208
- - `src/`
209
- - `Middleware.ts` – Middleware contract and types
210
- - `Pipeline.ts` – Core execution logic
211
- - `Compose.ts` – Middleware composition utility
212
- - `index.ts` – Public exports
213
- - `tests/`
214
- - `Pipeline.test.ts` – Integration tests for pipeline execution and order
215
- - `package.json`
216
- - `tsconfig.json`
217
- - `tsconfig.test.json`
218
- - `README.md`
219
- - `LICENSE`
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
+ ---
@@ -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
@@ -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;IAWrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAVvC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAgD;IAChE,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,OAAO,CAA2B;IAE1C;;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;IAwBrB;;OAEG;IACH,OAAO,CAAC,OAAO;IAyBf;;OAEG;IACH,OAAO,CAAC,eAAe;CA0B1B"}
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.resolve(flattened[index]);
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 container first
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
- const isClass = /^\s*class\s+/.test(handler.toString()) ||
80
- (handler.prototype && typeof handler.prototype.handle === '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
+ }
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
- if (this.middlewareGroups[handler]) {
98
- flattened.push(...this.flattenHandlers(this.middlewareGroups[handler]));
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[handler]) {
102
- const resolved = this.aliases[handler];
103
- if (Array.isArray(resolved)) {
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
@@ -1 +1 @@
1
- {"version":3,"file":"Pipeline.js","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Pipeline.js","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface Container {
2
+ make<T = any>(token: any): T;
3
+ has(token: any): boolean;
4
+ }
5
+ //# sourceMappingURL=Container.d.ts.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Container.js.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Middleware.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=EnterpriseMiddleware.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Pipeline.test.d.ts.map
@@ -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
- "name": "@arikajs/middleware",
3
- "version": "0.0.4",
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 scripts/fix-test-imports.js && node --test 'dist/tests/**/*.test.js'",
14
- "test:watch": "npm run build && npm run build:tests && node --test --watch 'dist/tests/**/*.test.js'"
15
- },
16
- "files": [
17
- "dist"
18
- ],
19
- "keywords": [
20
- "arika",
21
- "arika-js",
22
- "framework",
23
- "middleware",
24
- "pipeline",
25
- "onion"
26
- ],
27
- "engines": {
28
- "node": ">=20.0.0"
29
- },
30
- "repository": {
31
- "type": "git",
32
- "url": "git+https://github.com/arikajs/middleware.git"
33
- },
34
- "bugs": {
35
- "url": "https://github.com/arikajs/middleware/issues"
36
- },
37
- "homepage": "https://github.com/arikajs/middleware#readme",
38
- "dependencies": {
39
- "@arikajs/http": "^0.0.4",
40
- "@arikajs/logging": "^0.0.4"
41
- },
42
- "devDependencies": {
43
- "@types/node": "^20.11.24",
44
- "typescript": "^5.3.3"
45
- },
46
- "author": "Prakash Tank"
2
+ "name": "@arikajs/middleware",
3
+ "version": "0.0.6",
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
  }