@zudojs/middleware 0.0.1

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.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/index.d.ts +17 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +17 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/middlewareCore/index.d.ts +7 -0
  9. package/dist/middlewareCore/index.d.ts.map +1 -0
  10. package/dist/middlewareCore/index.js +7 -0
  11. package/dist/middlewareCore/index.js.map +1 -0
  12. package/dist/middlewareCore/middlewareCore.compose.d.ts +32 -0
  13. package/dist/middlewareCore/middlewareCore.compose.d.ts.map +1 -0
  14. package/dist/middlewareCore/middlewareCore.compose.js +68 -0
  15. package/dist/middlewareCore/middlewareCore.compose.js.map +1 -0
  16. package/dist/middlewareErrors/index.d.ts +7 -0
  17. package/dist/middlewareErrors/index.d.ts.map +1 -0
  18. package/dist/middlewareErrors/index.js +7 -0
  19. package/dist/middlewareErrors/index.js.map +1 -0
  20. package/dist/middlewareErrors/middlewareError.base.d.ts +28 -0
  21. package/dist/middlewareErrors/middlewareError.base.d.ts.map +1 -0
  22. package/dist/middlewareErrors/middlewareError.base.js +43 -0
  23. package/dist/middlewareErrors/middlewareError.base.js.map +1 -0
  24. package/dist/middlewarePipeline/index.d.ts +7 -0
  25. package/dist/middlewarePipeline/index.d.ts.map +1 -0
  26. package/dist/middlewarePipeline/index.js +7 -0
  27. package/dist/middlewarePipeline/index.js.map +1 -0
  28. package/dist/middlewarePipeline/middlewarePipeline.core.d.ts +17 -0
  29. package/dist/middlewarePipeline/middlewarePipeline.core.d.ts.map +1 -0
  30. package/dist/middlewarePipeline/middlewarePipeline.core.js +65 -0
  31. package/dist/middlewarePipeline/middlewarePipeline.core.js.map +1 -0
  32. package/dist/middlewareTypes/index.d.ts +8 -0
  33. package/dist/middlewareTypes/index.d.ts.map +1 -0
  34. package/dist/middlewareTypes/index.js +8 -0
  35. package/dist/middlewareTypes/index.js.map +1 -0
  36. package/dist/middlewareTypes/middlewareContext.type.d.ts +30 -0
  37. package/dist/middlewareTypes/middlewareContext.type.d.ts.map +1 -0
  38. package/dist/middlewareTypes/middlewareContext.type.js +7 -0
  39. package/dist/middlewareTypes/middlewareContext.type.js.map +1 -0
  40. package/dist/middlewareTypes/middlewareDefinition.type.d.ts +30 -0
  41. package/dist/middlewareTypes/middlewareDefinition.type.d.ts.map +1 -0
  42. package/dist/middlewareTypes/middlewareDefinition.type.js +7 -0
  43. package/dist/middlewareTypes/middlewareDefinition.type.js.map +1 -0
  44. package/dist/middlewareUtils/index.d.ts +7 -0
  45. package/dist/middlewareUtils/index.d.ts.map +1 -0
  46. package/dist/middlewareUtils/index.js +7 -0
  47. package/dist/middlewareUtils/index.js.map +1 -0
  48. package/dist/middlewareUtils/middlewareUtils.builtins.d.ts +38 -0
  49. package/dist/middlewareUtils/middlewareUtils.builtins.d.ts.map +1 -0
  50. package/dist/middlewareUtils/middlewareUtils.builtins.js +92 -0
  51. package/dist/middlewareUtils/middlewareUtils.builtins.js.map +1 -0
  52. package/package.json +51 -0
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Compose multiple middleware functions into a single handler.
3
+ *
4
+ * @module middlewareCore/middlewareCore
5
+ *
6
+ * Middleware executes in order (first added = first executed).
7
+ * Each middleware calls `next()` to proceed to the next one.
8
+ */
9
+ const MAX_DEPTH = 100;
10
+ /**
11
+ * Compose an array of middleware into a single function.
12
+ *
13
+ * The returned function executes middleware in order.
14
+ * If no middleware is provided, the handler is called directly.
15
+ *
16
+ * @param middlewareList - Array of middleware functions
17
+ * @param handler - The final handler to execute after all middleware
18
+ * @returns Composed function
19
+ */
20
+ export function compose(middlewareList, handler) {
21
+ if (middlewareList.length === 0) {
22
+ return handler;
23
+ }
24
+ return async (context) => {
25
+ let index = -1;
26
+ async function dispatch(i) {
27
+ if (i <= index) {
28
+ throw new Error("next() called multiple times");
29
+ }
30
+ index = i;
31
+ if (i < middlewareList.length) {
32
+ const mw = middlewareList[i];
33
+ return mw(context, () => dispatch(i + 1));
34
+ }
35
+ return handler(context);
36
+ }
37
+ return dispatch(0);
38
+ };
39
+ }
40
+ /**
41
+ * Sort and filter named middleware by priority.
42
+ *
43
+ * @param middlewareList - Array of named middleware
44
+ * @returns Sorted and filtered array of middleware handler functions
45
+ */
46
+ export function resolveMiddleware(middlewareList) {
47
+ return middlewareList
48
+ .filter((mw) => mw.enabled !== false)
49
+ .sort((a, b) => (a.priority ?? 100) - (b.priority ?? 100))
50
+ .map((mw) => mw.handler);
51
+ }
52
+ /**
53
+ * Create a middleware that wraps another with timing.
54
+ */
55
+ export function withTiming(name, middleware) {
56
+ return {
57
+ name,
58
+ handler: async (ctx, next) => {
59
+ const start = performance.now();
60
+ await middleware(ctx, next);
61
+ const duration = performance.now() - start;
62
+ if (duration > 100) {
63
+ console.warn(`[middleware] ${name} took ${duration.toFixed(1)}ms`);
64
+ }
65
+ },
66
+ };
67
+ }
68
+ //# sourceMappingURL=middlewareCore.compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareCore.compose.js","sourceRoot":"","sources":["../../src/middlewareCore/middlewareCore.compose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CACrB,cAAwD,EACxD,OAAgD;IAEhD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,EAAE,OAAiB,EAAoB,EAAE;QACnD,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QAEf,KAAK,UAAU,QAAQ,CAAC,CAAS;YAC/B,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YACD,KAAK,GAAG,CAAC,CAAC;YAEV,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAE,CAAC;gBAC9B,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,cAA6D;IAE7D,OAAO,cAAc;SAClB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,UAAsC;IAEtC,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAC3C,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,SAAS,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Middleware-specific error types.
3
+ *
4
+ * @module middlewareErrors
5
+ */
6
+ export { MiddlewareError, MiddlewareTimeoutError, MiddlewareNextCalledMultipleTimesError, } from "./middlewareError.base.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middlewareErrors/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,sCAAsC,GACvC,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Middleware-specific error types.
3
+ *
4
+ * @module middlewareErrors
5
+ */
6
+ export { MiddlewareError, MiddlewareTimeoutError, MiddlewareNextCalledMultipleTimesError, } from "./middlewareError.base.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middlewareErrors/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,sCAAsC,GACvC,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Middleware-specific error classes.
3
+ *
4
+ * @module middlewareErrors
5
+ */
6
+ import { BaseError } from "@zudojs/errors";
7
+ /**
8
+ * Error thrown when a middleware pipeline fails.
9
+ */
10
+ export declare class MiddlewareError extends BaseError {
11
+ constructor(message: string, options?: {
12
+ readonly middlewareName?: string;
13
+ readonly cause?: unknown;
14
+ });
15
+ }
16
+ /**
17
+ * Error thrown when a middleware exceeds its timeout.
18
+ */
19
+ export declare class MiddlewareTimeoutError extends MiddlewareError {
20
+ constructor(middlewareName: string, timeoutMs: number);
21
+ }
22
+ /**
23
+ * Error thrown when a middleware calls next() multiple times.
24
+ */
25
+ export declare class MiddlewareNextCalledMultipleTimesError extends MiddlewareError {
26
+ constructor(middlewareName: string);
27
+ }
28
+ //# sourceMappingURL=middlewareError.base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareError.base.d.ts","sourceRoot":"","sources":["../../src/middlewareErrors/middlewareError.base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,SAAS,EAIV,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;KAC1B,EAWF;CACF;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,eAAe;IACzD,YAAY,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAIpD;CACF;AAED;;GAEG;AACH,qBAAa,sCAAuC,SAAQ,eAAe;IACzE,YAAY,cAAc,EAAE,MAAM,EAIjC;CACF"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Middleware-specific error classes.
3
+ *
4
+ * @module middlewareErrors
5
+ */
6
+ import { BaseError, ErrorCode, ErrorCategory, ErrorSeverity, } from "@zudojs/errors";
7
+ /**
8
+ * Error thrown when a middleware pipeline fails.
9
+ */
10
+ export class MiddlewareError extends BaseError {
11
+ constructor(message, options) {
12
+ super(message, {
13
+ code: ErrorCode.OPERATION_FAILED,
14
+ category: ErrorCategory.INTERNAL,
15
+ severity: ErrorSeverity.ERROR,
16
+ metadata: {
17
+ middlewareName: options?.middlewareName,
18
+ },
19
+ cause: options?.cause,
20
+ });
21
+ }
22
+ }
23
+ /**
24
+ * Error thrown when a middleware exceeds its timeout.
25
+ */
26
+ export class MiddlewareTimeoutError extends MiddlewareError {
27
+ constructor(middlewareName, timeoutMs) {
28
+ super(`Middleware "${middlewareName}" timed out after ${timeoutMs}ms`, {
29
+ middlewareName,
30
+ });
31
+ }
32
+ }
33
+ /**
34
+ * Error thrown when a middleware calls next() multiple times.
35
+ */
36
+ export class MiddlewareNextCalledMultipleTimesError extends MiddlewareError {
37
+ constructor(middlewareName) {
38
+ super(`Middleware "${middlewareName}" called next() multiple times`, {
39
+ middlewareName,
40
+ });
41
+ }
42
+ }
43
+ //# sourceMappingURL=middlewareError.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareError.base.js","sourceRoot":"","sources":["../../src/middlewareErrors/middlewareError.base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YACE,OAAe,EACf,OAGC;QAED,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,SAAS,CAAC,gBAAgB;YAChC,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,QAAQ,EAAE,aAAa,CAAC,KAAK;YAC7B,QAAQ,EAAE;gBACR,cAAc,EAAE,OAAO,EAAE,cAAc;aACxC;YACD,KAAK,EAAE,OAAO,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,eAAe;IACzD,YAAY,cAAsB,EAAE,SAAiB;QACnD,KAAK,CAAC,eAAe,cAAc,qBAAqB,SAAS,IAAI,EAAE;YACrE,cAAc;SACf,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sCAAuC,SAAQ,eAAe;IACzE,YAAY,cAAsB;QAChC,KAAK,CAAC,eAAe,cAAc,gCAAgC,EAAE;YACnE,cAAc;SACf,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Middleware pipeline with execution tracking and result reporting.
3
+ *
4
+ * @module middlewarePipeline
5
+ */
6
+ export { createPipeline } from "./middlewarePipeline.core.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middlewarePipeline/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Middleware pipeline with execution tracking and result reporting.
3
+ *
4
+ * @module middlewarePipeline
5
+ */
6
+ export { createPipeline } from "./middlewarePipeline.core.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middlewarePipeline/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Middleware pipeline with execution tracking and result reporting.
3
+ *
4
+ * @module middlewarePipeline/middlewarePipeline
5
+ */
6
+ import type { NamedMiddleware } from "../middlewareTypes/middlewareDefinition.type.js";
7
+ import type { PipelineResult, PipelineOptions } from "../middlewareTypes/middlewareContext.type.js";
8
+ /**
9
+ * Create a middleware pipeline that tracks execution.
10
+ *
11
+ * @param middlewareList - Named middleware to include
12
+ * @param handler - Final handler function
13
+ * @param options - Pipeline configuration
14
+ * @returns Pipeline execution function
15
+ */
16
+ export declare function createPipeline<TContext, TResult>(middlewareList: readonly NamedMiddleware<TContext, TResult>[], handler: (context: TContext) => Promise<TResult>, options?: PipelineOptions): (context: TContext) => Promise<PipelineResult<TResult>>;
17
+ //# sourceMappingURL=middlewarePipeline.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewarePipeline.core.d.ts","sourceRoot":"","sources":["../../src/middlewarePipeline/middlewarePipeline.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,iDAAiD,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAChB,MAAM,8CAA8C,CAAC;AAKtD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAC9C,cAAc,EAAE,SAAS,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAC7D,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,EAChD,OAAO,CAAC,EAAE,eAAe,GACxB,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAuDzD"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Middleware pipeline with execution tracking and result reporting.
3
+ *
4
+ * @module middlewarePipeline/middlewarePipeline
5
+ */
6
+ import { resolveMiddleware } from "../middlewareCore/middlewareCore.compose.js";
7
+ const DEFAULT_MAX = 50;
8
+ /**
9
+ * Create a middleware pipeline that tracks execution.
10
+ *
11
+ * @param middlewareList - Named middleware to include
12
+ * @param handler - Final handler function
13
+ * @param options - Pipeline configuration
14
+ * @returns Pipeline execution function
15
+ */
16
+ export function createPipeline(middlewareList, handler, options) {
17
+ const resolved = resolveMiddleware(middlewareList);
18
+ const maxMiddleware = options?.maxMiddleware ?? DEFAULT_MAX;
19
+ const stopOnError = options?.stopOnError ?? true;
20
+ if (resolved.length > maxMiddleware) {
21
+ throw new Error(`Pipeline has ${resolved.length} middleware, exceeding maximum of ${maxMiddleware}`);
22
+ }
23
+ const enabledNames = middlewareList
24
+ .filter((mw) => mw.enabled !== false)
25
+ .sort((a, b) => (a.priority ?? 100) - (b.priority ?? 100))
26
+ .map((mw) => mw.name);
27
+ return async (context) => {
28
+ const startTime = performance.now();
29
+ const executed = [];
30
+ let index = -1;
31
+ async function dispatch(i) {
32
+ if (i <= index) {
33
+ throw new Error("next() called multiple times");
34
+ }
35
+ index = i;
36
+ if (i < resolved.length) {
37
+ executed.push(enabledNames[i] ?? `middleware-${i}`);
38
+ const mw = resolved[i];
39
+ return mw(context, () => dispatch(i + 1));
40
+ }
41
+ return handler(context);
42
+ }
43
+ try {
44
+ const result = await dispatch(0);
45
+ return {
46
+ success: true,
47
+ result,
48
+ durationMs: performance.now() - startTime,
49
+ executedMiddleware: executed,
50
+ };
51
+ }
52
+ catch (error) {
53
+ if (stopOnError) {
54
+ return {
55
+ success: false,
56
+ error,
57
+ durationMs: performance.now() - startTime,
58
+ executedMiddleware: executed,
59
+ };
60
+ }
61
+ throw error;
62
+ }
63
+ };
64
+ }
65
+ //# sourceMappingURL=middlewarePipeline.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewarePipeline.core.js","sourceRoot":"","sources":["../../src/middlewarePipeline/middlewarePipeline.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,cAA6D,EAC7D,OAAgD,EAChD,OAAyB;IAEzB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,WAAW,CAAC;IAC5D,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;IAEjD,IAAI,QAAQ,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,gBAAgB,QAAQ,CAAC,MAAM,qCAAqC,aAAa,EAAE,CACpF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,cAAc;SAChC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAExB,OAAO,KAAK,EAAE,OAAiB,EAAoC,EAAE;QACnE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QAEf,KAAK,UAAU,QAAQ,CAAC,CAAS;YAC/B,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YACD,KAAK,GAAG,CAAC,CAAC;YAEV,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;gBACpD,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;gBACxB,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM;gBACN,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;gBACzC,kBAAkB,EAAE,QAAQ;aAC7B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK;oBACL,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;oBACzC,kBAAkB,EAAE,QAAQ;iBAC7B,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Core middleware type definitions: functions, contexts, and pipelines.
3
+ *
4
+ * @module middlewareTypes
5
+ */
6
+ export { type Middleware, type NamedMiddleware, type MiddlewareFactory, } from "./middlewareDefinition.type.js";
7
+ export { type PipelineResult, type PipelineOptions, } from "./middlewareContext.type.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middlewareTypes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Core middleware type definitions: functions, contexts, and pipelines.
3
+ *
4
+ * @module middlewareTypes
5
+ */
6
+ export {} from "./middlewareDefinition.type.js";
7
+ export {} from "./middlewareContext.type.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middlewareTypes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAIN,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAGN,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Middleware context and pipeline result types.
3
+ *
4
+ * @module middlewareTypes/middlewareContext
5
+ */
6
+ /**
7
+ * Result of executing a middleware pipeline.
8
+ */
9
+ export interface PipelineResult<TResult> {
10
+ /** Whether the pipeline completed successfully */
11
+ readonly success: boolean;
12
+ /** The result value (if successful) */
13
+ readonly result?: TResult;
14
+ /** Error that occurred (if failed) */
15
+ readonly error?: unknown;
16
+ /** Execution time in milliseconds */
17
+ readonly durationMs: number;
18
+ /** Names of middleware that executed */
19
+ readonly executedMiddleware: readonly string[];
20
+ }
21
+ /**
22
+ * Options for creating a middleware pipeline.
23
+ */
24
+ export interface PipelineOptions {
25
+ /** Maximum number of middleware allowed */
26
+ readonly maxMiddleware?: number;
27
+ /** Whether to stop on first error (default: true) */
28
+ readonly stopOnError?: boolean;
29
+ }
30
+ //# sourceMappingURL=middlewareContext.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareContext.type.d.ts","sourceRoot":"","sources":["../../src/middlewareTypes/middlewareContext.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO;IACrC,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,qDAAqD;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Middleware context and pipeline result types.
3
+ *
4
+ * @module middlewareTypes/middlewareContext
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=middlewareContext.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareContext.type.js","sourceRoot":"","sources":["../../src/middlewareTypes/middlewareContext.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Core middleware type definitions.
3
+ *
4
+ * @module middlewareTypes/middlewareDefinition
5
+ */
6
+ /**
7
+ * A middleware function that processes a context and calls the next middleware.
8
+ *
9
+ * @typeParam TContext - The context type flowing through the pipeline
10
+ * @typeParam TResult - The result type returned by the pipeline
11
+ */
12
+ export type Middleware<TContext, TResult = void> = (context: TContext, next: () => Promise<TResult>) => Promise<TResult>;
13
+ /**
14
+ * A middleware function with metadata.
15
+ */
16
+ export interface NamedMiddleware<TContext, TResult = void> {
17
+ /** Human-readable name for debugging */
18
+ readonly name: string;
19
+ /** The middleware function */
20
+ readonly handler: Middleware<TContext, TResult>;
21
+ /** Execution priority (lower = earlier). Default: 100 */
22
+ readonly priority?: number;
23
+ /** Whether this middleware is enabled */
24
+ readonly enabled?: boolean;
25
+ }
26
+ /**
27
+ * Middleware factory function.
28
+ */
29
+ export type MiddlewareFactory<TContext, TResult = void> = (options?: Record<string, unknown>) => NamedMiddleware<TContext, TResult>;
30
+ //# sourceMappingURL=middlewareDefinition.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareDefinition.type.d.ts","sourceRoot":"","sources":["../../src/middlewareTypes/middlewareDefinition.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,UAAU,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,IAAI,CACjD,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IACvD,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,IAAI,CACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Core middleware type definitions.
3
+ *
4
+ * @module middlewareTypes/middlewareDefinition
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=middlewareDefinition.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareDefinition.type.js","sourceRoot":"","sources":["../../src/middlewareTypes/middlewareDefinition.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Built-in middleware: logging, error handling, timeout, rate limiting.
3
+ *
4
+ * @module middlewareUtils
5
+ */
6
+ export { loggingMiddleware, errorMiddleware, timeoutMiddleware, rateLimitMiddleware, } from "./middlewareUtils.builtins.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middlewareUtils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Built-in middleware: logging, error handling, timeout, rate limiting.
3
+ *
4
+ * @module middlewareUtils
5
+ */
6
+ export { loggingMiddleware, errorMiddleware, timeoutMiddleware, rateLimitMiddleware, } from "./middlewareUtils.builtins.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middlewareUtils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Built-in middleware for common concerns.
3
+ *
4
+ * @module middlewareUtils/middlewareUtils
5
+ */
6
+ import type { NamedMiddleware } from "../middlewareTypes/middlewareDefinition.type.js";
7
+ export interface LoggingContext {
8
+ readonly requestId?: string;
9
+ readonly path?: string;
10
+ readonly method?: string;
11
+ }
12
+ /**
13
+ * Create a logging middleware.
14
+ *
15
+ * Logs request start, completion, and errors.
16
+ */
17
+ export declare function loggingMiddleware(logger?: (msg: string) => void): NamedMiddleware<LoggingContext>;
18
+ /**
19
+ * Create an error-handling middleware.
20
+ *
21
+ * Catches errors and wraps them with context.
22
+ */
23
+ export declare function errorMiddleware(onError?: (error: unknown, ctx: unknown) => void): NamedMiddleware<unknown>;
24
+ /**
25
+ * Create a timeout middleware.
26
+ *
27
+ * Rejects if the pipeline takes too long.
28
+ */
29
+ export declare function timeoutMiddleware<TContext>(timeoutMs: number): NamedMiddleware<TContext>;
30
+ /**
31
+ * Create a rate-limiting middleware.
32
+ *
33
+ * Uses a sliding window counter per key.
34
+ */
35
+ export declare function rateLimitMiddleware<TContext extends {
36
+ readonly key?: string;
37
+ }>(maxRequests: number, windowMs: number): NamedMiddleware<TContext>;
38
+ //# sourceMappingURL=middlewareUtils.builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareUtils.builtins.d.ts","sourceRoot":"","sources":["../../src/middlewareUtils/middlewareUtils.builtins.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,iDAAiD,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC7B,eAAe,CAAC,cAAc,CAAC,CAkBjC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,GAC/C,eAAe,CAAC,OAAO,CAAC,CAa1B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EACxC,SAAS,EAAE,MAAM,GAChB,eAAe,CAAC,QAAQ,CAAC,CAe3B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5E,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,eAAe,CAAC,QAAQ,CAAC,CAyB3B"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Built-in middleware for common concerns.
3
+ *
4
+ * @module middlewareUtils/middlewareUtils
5
+ */
6
+ /**
7
+ * Create a logging middleware.
8
+ *
9
+ * Logs request start, completion, and errors.
10
+ */
11
+ export function loggingMiddleware(logger) {
12
+ const log = logger ?? console.log;
13
+ return {
14
+ name: "logging",
15
+ handler: async (ctx, next) => {
16
+ const start = performance.now();
17
+ log(`[middleware] → ${ctx.method ?? "UNKNOWN"} ${ctx.path ?? "/"}`);
18
+ try {
19
+ await next();
20
+ const ms = (performance.now() - start).toFixed(1);
21
+ log(`[middleware] ✓ completed in ${ms}ms`);
22
+ }
23
+ catch (error) {
24
+ const ms = (performance.now() - start).toFixed(1);
25
+ log(`[middleware] ✗ failed in ${ms}ms: ${error}`);
26
+ throw error;
27
+ }
28
+ },
29
+ };
30
+ }
31
+ /**
32
+ * Create an error-handling middleware.
33
+ *
34
+ * Catches errors and wraps them with context.
35
+ */
36
+ export function errorMiddleware(onError) {
37
+ return {
38
+ name: "error-handler",
39
+ priority: 0,
40
+ handler: async (ctx, next) => {
41
+ try {
42
+ return await next();
43
+ }
44
+ catch (error) {
45
+ onError?.(error, ctx);
46
+ throw error;
47
+ }
48
+ },
49
+ };
50
+ }
51
+ /**
52
+ * Create a timeout middleware.
53
+ *
54
+ * Rejects if the pipeline takes too long.
55
+ */
56
+ export function timeoutMiddleware(timeoutMs) {
57
+ return {
58
+ name: "timeout",
59
+ handler: async (ctx, next) => {
60
+ return Promise.race([
61
+ next(),
62
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`Middleware timeout after ${timeoutMs}ms`)), timeoutMs)),
63
+ ]);
64
+ },
65
+ };
66
+ }
67
+ /**
68
+ * Create a rate-limiting middleware.
69
+ *
70
+ * Uses a sliding window counter per key.
71
+ */
72
+ export function rateLimitMiddleware(maxRequests, windowMs) {
73
+ const counts = new Map();
74
+ return {
75
+ name: "rate-limit",
76
+ handler: async (ctx, next) => {
77
+ const key = ctx.key ?? "global";
78
+ const now = Date.now();
79
+ const entry = counts.get(key);
80
+ if (!entry || now > entry.resetAt) {
81
+ counts.set(key, { count: 1, resetAt: now + windowMs });
82
+ return next();
83
+ }
84
+ if (entry.count >= maxRequests) {
85
+ throw new Error(`Rate limit exceeded: ${maxRequests} requests per ${windowMs}ms`);
86
+ }
87
+ entry.count++;
88
+ return next();
89
+ },
90
+ };
91
+ }
92
+ //# sourceMappingURL=middlewareUtils.builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewareUtils.builtins.js","sourceRoot":"","sources":["../../src/middlewareUtils/middlewareUtils.builtins.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@zudojs/middleware",
3
+ "version": "0.0.1",
4
+ "description": "Composable middleware pipeline with composition, timing, error handling, and context propagation.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "default": "./dist/index.js"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "dependencies": {
21
+ "@zudojs/errors": "0.0.1"
22
+ },
23
+ "engines": {
24
+ "node": ">=24.0.0"
25
+ },
26
+ "devDependencies": {
27
+ "typescript": "^7.0.2",
28
+ "vitest": "^4.1.11"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "keywords": [
34
+ "zudojs",
35
+ "middleware",
36
+ "pipeline",
37
+ "composition"
38
+ ],
39
+ "homepage": "https://github.com/oyinlola-tech/zudo#readme",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "https://github.com/oyinlola-tech/zudo"
43
+ },
44
+ "scripts": {
45
+ "build": "tsc -p tsconfig.json",
46
+ "typecheck": "tsc -p tsconfig.json --noEmit",
47
+ "clean": "rm -rf dist",
48
+ "test": "vitest run",
49
+ "test:watch": "vitest"
50
+ }
51
+ }