@nest-boot/middleware 7.2.2 → 7.3.0

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.
@@ -11,8 +11,12 @@ export interface MiddlewareConfig {
11
11
  routes: (string | Type | RouteInfo)[];
12
12
  /** Routes to exclude from the middleware */
13
13
  excludeRoutes: (string | RouteInfo)[];
14
- /** Middlewares that must be applied before this one */
14
+ /** Middlewares that must be registered and applied before this one */
15
15
  dependencyMiddlewares: Type<NestMiddleware>[];
16
+ /** Middlewares that should be applied before this one when registered */
17
+ afterMiddlewares: Type<NestMiddleware>[];
18
+ /** Middlewares that should be applied after this one when registered */
19
+ beforeMiddlewares: Type<NestMiddleware>[];
16
20
  /** Whether to disable global exclude routes for this middleware */
17
21
  disabledGlobalExcludeRoutes: boolean;
18
22
  }
@@ -3,20 +3,78 @@ import { NestMiddleware, RouteInfo } from "@nestjs/common/interfaces";
3
3
  import { MiddlewareManager } from "./middleware.manager";
4
4
  import { MiddlewareInstanceOrFunction } from "./types";
5
5
  /**
6
- * Configurator for applying middlewares to routes.
6
+ * Fluent configurator for applying middlewares to routes.
7
+ *
8
+ * @remarks
9
+ * Provides a chainable API for specifying route patterns, exclusions,
10
+ * and dependency ordering when registering middleware.
7
11
  */
8
12
  export declare class MiddlewareConfigurator {
9
13
  private readonly manager;
10
14
  private readonly middlewares;
15
+ /** Whether global route exclusions are disabled for these middlewares. @internal */
11
16
  private disabledGlobalExcludeRoutes;
17
+ /** Routes excluded from middleware processing. @internal */
12
18
  private readonly excludeRoutes;
19
+ /** Middleware types that must run before this middleware. @internal */
13
20
  private readonly dependencyMiddlewares;
21
+ /** Middleware types that should run before this middleware when registered. @internal */
22
+ private readonly afterMiddlewares;
23
+ /** Middleware types that should run after this middleware when registered. @internal */
24
+ private readonly beforeMiddlewares;
14
25
  /**
15
- * @internal
26
+ * Creates a new MiddlewareConfigurator instance.
27
+ * @param manager - The middleware manager that owns this configurator
28
+ * @param middlewares - The middleware instances or functions to configure
16
29
  */
17
30
  constructor(manager: MiddlewareManager, middlewares: MiddlewareInstanceOrFunction[]);
31
+ /**
32
+ * Disables global route exclusions for these middlewares.
33
+ * @returns This configurator for chaining
34
+ */
18
35
  disableGlobalExcludeRoutes(): this;
36
+ /**
37
+ * Excludes specific routes from middleware processing.
38
+ * @param routes - Route patterns or RouteInfo objects to exclude
39
+ * @returns This configurator for chaining
40
+ */
19
41
  exclude(...routes: (string | RouteInfo)[]): this;
42
+ /**
43
+ * Declares middlewares that should run after this middleware when registered.
44
+ *
45
+ * @remarks
46
+ * This is a soft ordering hint. Unregistered middleware types are ignored.
47
+ *
48
+ * @param beforeMiddlewares - Middleware types that should run after this middleware
49
+ * @returns This configurator for chaining
50
+ */
51
+ before(...beforeMiddlewares: Type<NestMiddleware>[]): this;
52
+ /**
53
+ * Declares middlewares that should run before this middleware when registered.
54
+ *
55
+ * @remarks
56
+ * This is a soft ordering hint. Unregistered middleware types are ignored.
57
+ *
58
+ * @param afterMiddlewares - Middleware types that should run before this middleware
59
+ * @returns This configurator for chaining
60
+ */
61
+ after(...afterMiddlewares: Type<NestMiddleware>[]): this;
62
+ /**
63
+ * Declares middleware dependencies for ordering. Dependencies must be registered
64
+ * and must run before this middleware.
65
+ *
66
+ * @remarks
67
+ * This is a hard prerequisite. An unregistered dependency throws during
68
+ * middleware configuration.
69
+ *
70
+ * @param dependencyMiddlewares - Middleware types that must run before this middleware
71
+ * @returns This configurator for chaining
72
+ */
20
73
  dependencies(...dependencyMiddlewares: Type<NestMiddleware>[]): this;
74
+ /**
75
+ * Applies the configured middlewares to the specified routes.
76
+ * @param routes - Route patterns, controller types, or RouteInfo objects
77
+ * @returns The parent {@link MiddlewareManager} for further configuration
78
+ */
21
79
  forRoutes(...routes: (string | Type | RouteInfo)[]): MiddlewareManager;
22
80
  }
@@ -2,31 +2,95 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MiddlewareConfigurator = void 0;
4
4
  /**
5
- * Configurator for applying middlewares to routes.
5
+ * Fluent configurator for applying middlewares to routes.
6
+ *
7
+ * @remarks
8
+ * Provides a chainable API for specifying route patterns, exclusions,
9
+ * and dependency ordering when registering middleware.
6
10
  */
7
11
  class MiddlewareConfigurator {
8
12
  /**
9
- * @internal
13
+ * Creates a new MiddlewareConfigurator instance.
14
+ * @param manager - The middleware manager that owns this configurator
15
+ * @param middlewares - The middleware instances or functions to configure
10
16
  */
11
17
  constructor(manager, middlewares) {
12
18
  this.manager = manager;
13
19
  this.middlewares = middlewares;
20
+ /** Whether global route exclusions are disabled for these middlewares. @internal */
14
21
  this.disabledGlobalExcludeRoutes = false;
22
+ /** Routes excluded from middleware processing. @internal */
15
23
  this.excludeRoutes = [];
24
+ /** Middleware types that must run before this middleware. @internal */
16
25
  this.dependencyMiddlewares = [];
26
+ /** Middleware types that should run before this middleware when registered. @internal */
27
+ this.afterMiddlewares = [];
28
+ /** Middleware types that should run after this middleware when registered. @internal */
29
+ this.beforeMiddlewares = [];
17
30
  }
31
+ /**
32
+ * Disables global route exclusions for these middlewares.
33
+ * @returns This configurator for chaining
34
+ */
18
35
  disableGlobalExcludeRoutes() {
19
36
  this.disabledGlobalExcludeRoutes = true;
20
37
  return this;
21
38
  }
39
+ /**
40
+ * Excludes specific routes from middleware processing.
41
+ * @param routes - Route patterns or RouteInfo objects to exclude
42
+ * @returns This configurator for chaining
43
+ */
22
44
  exclude(...routes) {
23
45
  this.excludeRoutes.push(...routes);
24
46
  return this;
25
47
  }
48
+ /**
49
+ * Declares middlewares that should run after this middleware when registered.
50
+ *
51
+ * @remarks
52
+ * This is a soft ordering hint. Unregistered middleware types are ignored.
53
+ *
54
+ * @param beforeMiddlewares - Middleware types that should run after this middleware
55
+ * @returns This configurator for chaining
56
+ */
57
+ before(...beforeMiddlewares) {
58
+ this.beforeMiddlewares.push(...beforeMiddlewares);
59
+ return this;
60
+ }
61
+ /**
62
+ * Declares middlewares that should run before this middleware when registered.
63
+ *
64
+ * @remarks
65
+ * This is a soft ordering hint. Unregistered middleware types are ignored.
66
+ *
67
+ * @param afterMiddlewares - Middleware types that should run before this middleware
68
+ * @returns This configurator for chaining
69
+ */
70
+ after(...afterMiddlewares) {
71
+ this.afterMiddlewares.push(...afterMiddlewares);
72
+ return this;
73
+ }
74
+ /**
75
+ * Declares middleware dependencies for ordering. Dependencies must be registered
76
+ * and must run before this middleware.
77
+ *
78
+ * @remarks
79
+ * This is a hard prerequisite. An unregistered dependency throws during
80
+ * middleware configuration.
81
+ *
82
+ * @param dependencyMiddlewares - Middleware types that must run before this middleware
83
+ * @returns This configurator for chaining
84
+ */
26
85
  dependencies(...dependencyMiddlewares) {
27
86
  this.dependencyMiddlewares.push(...dependencyMiddlewares);
28
87
  return this;
29
88
  }
89
+ /**
90
+ * Applies the configured middlewares to the specified routes.
91
+ * @param routes - Route patterns, controller types, or RouteInfo objects
92
+ * @returns The parent {@link MiddlewareManager} for further configuration
93
+ */
30
94
  forRoutes(...routes) {
31
95
  if (routes.length === 0) {
32
96
  return this.manager;
@@ -44,6 +108,8 @@ class MiddlewareConfigurator {
44
108
  routes,
45
109
  excludeRoutes: this.excludeRoutes,
46
110
  dependencyMiddlewares: this.dependencyMiddlewares,
111
+ afterMiddlewares: this.afterMiddlewares,
112
+ beforeMiddlewares: this.beforeMiddlewares,
47
113
  disabledGlobalExcludeRoutes: this.disabledGlobalExcludeRoutes,
48
114
  });
49
115
  });
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.configurator.js","sourceRoot":"","sources":["../src/middleware.configurator.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,MAAa,sBAAsB;IAOjC;;OAEG;IACH,YACmB,OAA0B,EAC1B,WAA2C;QAD3C,YAAO,GAAP,OAAO,CAAmB;QAC1B,gBAAW,GAAX,WAAW,CAAgC;QAXtD,gCAA2B,GAAG,KAAK,CAAC;QAE3B,kBAAa,GAA2B,EAAE,CAAC;QAE3C,0BAAqB,GAA2B,EAAE,CAAC;IAQjE,CAAC;IAEG,0BAA0B;QAC/B,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,OAAO,CAAC,GAAG,MAA8B;QAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,YAAY,CAAC,GAAG,qBAA6C;QAClE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,SAAS,CACd,GAAG,MAAqC;QAExC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC/C,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC7B,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;wBACxB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;oBACjC,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;gBACD,MAAM;gBACN,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;aAC9D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAvDD,wDAuDC"}
1
+ {"version":3,"file":"middleware.configurator.js","sourceRoot":"","sources":["../src/middleware.configurator.ts"],"names":[],"mappings":";;;AAMA;;;;;;GAMG;AACH,MAAa,sBAAsB;IAgBjC;;;;OAIG;IACH,YACmB,OAA0B,EAC1B,WAA2C;QAD3C,YAAO,GAAP,OAAO,CAAmB;QAC1B,gBAAW,GAAX,WAAW,CAAgC;QAtB9D,oFAAoF;QAC5E,gCAA2B,GAAG,KAAK,CAAC;QAE5C,4DAA4D;QAC3C,kBAAa,GAA2B,EAAE,CAAC;QAE5D,uEAAuE;QACtD,0BAAqB,GAA2B,EAAE,CAAC;QAEpE,yFAAyF;QACxE,qBAAgB,GAA2B,EAAE,CAAC;QAE/D,wFAAwF;QACvE,sBAAiB,GAA2B,EAAE,CAAC;IAU7D,CAAC;IAEJ;;;OAGG;IACI,0BAA0B;QAC/B,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,GAAG,MAA8B;QAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,iBAAyC;QACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,GAAG,gBAAwC;QACtD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACI,YAAY,CAAC,GAAG,qBAA6C;QAClE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,SAAS,CACd,GAAG,MAAqC;QAExC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC/C,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC7B,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;wBACxB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;oBACjC,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;gBACD,MAAM;gBACN,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;aAC9D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAzHD,wDAyHC"}
@@ -3,21 +3,34 @@ import { MiddlewareConfig } from "./interfaces";
3
3
  import { MiddlewareConfigurator } from "./middleware.configurator";
4
4
  import { MiddlewareInstanceOrFunction } from "./types";
5
5
  /**
6
- * Manages middleware registration and configuration.
6
+ * Service that manages middleware registration and topological ordering.
7
+ *
8
+ * @remarks
9
+ * Provides an API similar to NestJS `MiddlewareConsumer` but adds support
10
+ * for dependency-based ordering and global route exclusions.
7
11
  */
8
12
  export declare class MiddlewareManager {
13
+ /** Global routes excluded from all middleware processing. @internal */
9
14
  private globalExcludeRoutes;
10
- /**
11
- * @internal
12
- */
15
+ /** Map of middleware instances to their configurations. @internal */
13
16
  readonly middlewareConfigMap: Map<MiddlewareInstanceOrFunction, MiddlewareConfig>;
17
+ /** Returns middleware configs sorted by dependency order. @internal */
14
18
  private get middlewareConfigs();
15
19
  /**
16
- * Applies middlewares to routes.
17
- * @param middlewares - The middlewares to apply
18
- * @returns A configurator for specifying routes
20
+ * Creates a middleware configurator for the given middlewares.
21
+ * @param middlewares - Middleware instances or functions to apply
22
+ * @returns A {@link MiddlewareConfigurator} for specifying routes and options
19
23
  */
20
24
  apply(...middlewares: MiddlewareInstanceOrFunction[]): MiddlewareConfigurator;
25
+ /**
26
+ * Adds routes to the global exclusion list (applies to all middlewares).
27
+ * @param routes - Route patterns or RouteInfo objects to exclude globally
28
+ * @returns This manager for chaining
29
+ */
21
30
  globalExclude(...routes: (string | RouteInfo)[]): this;
31
+ /**
32
+ * Applies all registered middleware configurations to the NestJS middleware consumer.
33
+ * @param consumer - The NestJS middleware consumer from the module's configure method
34
+ */
22
35
  configure(consumer: MiddlewareConsumer): void;
23
36
  }
@@ -10,16 +10,20 @@ exports.MiddlewareManager = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const middleware_configurator_1 = require("./middleware.configurator");
12
12
  /**
13
- * Manages middleware registration and configuration.
13
+ * Service that manages middleware registration and topological ordering.
14
+ *
15
+ * @remarks
16
+ * Provides an API similar to NestJS `MiddlewareConsumer` but adds support
17
+ * for dependency-based ordering and global route exclusions.
14
18
  */
15
19
  let MiddlewareManager = class MiddlewareManager {
16
20
  constructor() {
21
+ /** Global routes excluded from all middleware processing. @internal */
17
22
  this.globalExcludeRoutes = [];
18
- /**
19
- * @internal
20
- */
23
+ /** Map of middleware instances to their configurations. @internal */
21
24
  this.middlewareConfigMap = new Map();
22
25
  }
26
+ /** Returns middleware configs sorted by dependency order. @internal */
23
27
  get middlewareConfigs() {
24
28
  const sorted = [];
25
29
  const visited = new Set();
@@ -30,6 +34,31 @@ let MiddlewareManager = class MiddlewareManager {
30
34
  typeToMiddleware.set(middleware.constructor, middleware);
31
35
  }
32
36
  }
37
+ const resolveDependencyMiddleware = (middlewareType) => {
38
+ const middleware = typeToMiddleware.get(middlewareType);
39
+ if (!middleware) {
40
+ throw new Error(`Dependency middleware ${middlewareType.name} is not registered`);
41
+ }
42
+ return middleware;
43
+ };
44
+ const dependencyMap = new Map();
45
+ for (const [middleware, config] of this.middlewareConfigMap) {
46
+ dependencyMap.set(middleware, config.dependencyMiddlewares.map((dependencyMiddleware) => resolveDependencyMiddleware(dependencyMiddleware)));
47
+ }
48
+ for (const [middleware, config] of this.middlewareConfigMap) {
49
+ for (const afterMiddleware of config.afterMiddlewares) {
50
+ const dependency = typeToMiddleware.get(afterMiddleware);
51
+ if (dependency) {
52
+ dependencyMap.get(middleware)?.push(dependency);
53
+ }
54
+ }
55
+ for (const beforeMiddleware of config.beforeMiddlewares) {
56
+ const dependent = typeToMiddleware.get(beforeMiddleware);
57
+ if (dependent) {
58
+ dependencyMap.get(dependent)?.push(middleware);
59
+ }
60
+ }
61
+ }
33
62
  const visit = (middleware) => {
34
63
  if (visited.has(middleware)) {
35
64
  return;
@@ -38,15 +67,9 @@ let MiddlewareManager = class MiddlewareManager {
38
67
  throw new Error("Circular dependency detected in middleware");
39
68
  }
40
69
  visiting.add(middleware);
41
- const config = this.middlewareConfigMap.get(middleware);
42
- if (config?.dependencyMiddlewares) {
43
- for (const dependencyMiddleware of config.dependencyMiddlewares) {
44
- const depMiddleware = typeToMiddleware.get(dependencyMiddleware);
45
- if (!depMiddleware) {
46
- throw new Error(`Dependency middleware ${dependencyMiddleware.name} is not registered`);
47
- }
48
- visit(depMiddleware);
49
- }
70
+ const dependencies = dependencyMap.get(middleware) ?? [];
71
+ for (const dependency of dependencies) {
72
+ visit(dependency);
50
73
  }
51
74
  visiting.delete(middleware);
52
75
  visited.add(middleware);
@@ -60,17 +83,26 @@ let MiddlewareManager = class MiddlewareManager {
60
83
  .filter((config) => config !== undefined);
61
84
  }
62
85
  /**
63
- * Applies middlewares to routes.
64
- * @param middlewares - The middlewares to apply
65
- * @returns A configurator for specifying routes
86
+ * Creates a middleware configurator for the given middlewares.
87
+ * @param middlewares - Middleware instances or functions to apply
88
+ * @returns A {@link MiddlewareConfigurator} for specifying routes and options
66
89
  */
67
90
  apply(...middlewares) {
68
91
  return new middleware_configurator_1.MiddlewareConfigurator(this, middlewares);
69
92
  }
93
+ /**
94
+ * Adds routes to the global exclusion list (applies to all middlewares).
95
+ * @param routes - Route patterns or RouteInfo objects to exclude globally
96
+ * @returns This manager for chaining
97
+ */
70
98
  globalExclude(...routes) {
71
99
  this.globalExcludeRoutes.push(...routes);
72
100
  return this;
73
101
  }
102
+ /**
103
+ * Applies all registered middleware configurations to the NestJS middleware consumer.
104
+ * @param consumer - The NestJS middleware consumer from the module's configure method
105
+ */
74
106
  configure(consumer) {
75
107
  for (const config of this.middlewareConfigs) {
76
108
  const proxy = consumer.apply(config.middleware);
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.manager.js","sourceRoot":"","sources":["../src/middleware.manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.manager.js","sourceRoot":"","sources":["../src/middleware.manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const MiddlewareExports = __importStar(require("."));
37
+ const middleware_manager_1 = require("./middleware.manager");
38
+ const middleware_module_1 = require("./middleware.module");
39
+ class RecordingMiddleware {
40
+ constructor(name, calls) {
41
+ this.name = name;
42
+ this.calls = calls;
43
+ }
44
+ use(_req, _res, next) {
45
+ this.calls.push(this.name);
46
+ next();
47
+ }
48
+ }
49
+ class FirstMiddleware extends RecordingMiddleware {
50
+ }
51
+ class SecondMiddleware extends RecordingMiddleware {
52
+ }
53
+ class MissingMiddleware extends RecordingMiddleware {
54
+ }
55
+ const createMiddlewareConsumer = () => {
56
+ const middlewares = [];
57
+ const proxy = {
58
+ exclude: jest.fn().mockReturnThis(),
59
+ forRoutes: jest.fn().mockReturnThis(),
60
+ };
61
+ const consumer = {
62
+ apply: jest.fn((middleware) => {
63
+ middlewares.push(middleware);
64
+ return proxy;
65
+ }),
66
+ };
67
+ return { consumer, middlewares, proxy };
68
+ };
69
+ const collectMiddlewares = (manager) => {
70
+ const { consumer, middlewares } = createMiddlewareConsumer();
71
+ manager.configure(consumer);
72
+ return middlewares;
73
+ };
74
+ const runMiddlewares = (middlewares) => {
75
+ for (const middleware of middlewares) {
76
+ middleware({}, {}, jest.fn());
77
+ }
78
+ };
79
+ describe("MiddlewareManager", () => {
80
+ it("exports middleware APIs from the package entrypoint", () => {
81
+ expect(MiddlewareExports.MiddlewareManager).toBe(middleware_manager_1.MiddlewareManager);
82
+ expect(MiddlewareExports.MiddlewareModule).toBe(middleware_module_1.MiddlewareModule);
83
+ });
84
+ it("applies middleware after target middleware", () => {
85
+ const calls = [];
86
+ const first = new FirstMiddleware("first", calls);
87
+ const second = new SecondMiddleware("second", calls);
88
+ const manager = new middleware_manager_1.MiddlewareManager();
89
+ manager.apply(second).after(FirstMiddleware).forRoutes("*");
90
+ manager.apply(first).forRoutes("*");
91
+ runMiddlewares(collectMiddlewares(manager));
92
+ expect(calls).toEqual(["first", "second"]);
93
+ });
94
+ it("applies hard dependency middleware before current middleware", () => {
95
+ const calls = [];
96
+ const first = new FirstMiddleware("first", calls);
97
+ const second = new SecondMiddleware("second", calls);
98
+ const manager = new middleware_manager_1.MiddlewareManager();
99
+ manager.apply(second).dependencies(FirstMiddleware).forRoutes("*");
100
+ manager.apply(first).forRoutes("*");
101
+ runMiddlewares(collectMiddlewares(manager));
102
+ expect(calls).toEqual(["first", "second"]);
103
+ });
104
+ it("applies middleware before target middleware", () => {
105
+ const calls = [];
106
+ const first = new FirstMiddleware("first", calls);
107
+ const second = new SecondMiddleware("second", calls);
108
+ const manager = new middleware_manager_1.MiddlewareManager();
109
+ manager.apply(second).forRoutes("*");
110
+ manager.apply(first).before(SecondMiddleware).forRoutes("*");
111
+ runMiddlewares(collectMiddlewares(manager));
112
+ expect(calls).toEqual(["first", "second"]);
113
+ });
114
+ it("ignores after target middleware when it is not registered", () => {
115
+ const calls = [];
116
+ const first = new FirstMiddleware("first", calls);
117
+ const manager = new middleware_manager_1.MiddlewareManager();
118
+ manager.apply(first).after(MissingMiddleware).forRoutes("*");
119
+ runMiddlewares(collectMiddlewares(manager));
120
+ expect(calls).toEqual(["first"]);
121
+ });
122
+ it("ignores before target middleware when it is not registered", () => {
123
+ const calls = [];
124
+ const first = new FirstMiddleware("first", calls);
125
+ const manager = new middleware_manager_1.MiddlewareManager();
126
+ manager.apply(first).before(MissingMiddleware).forRoutes("*");
127
+ runMiddlewares(collectMiddlewares(manager));
128
+ expect(calls).toEqual(["first"]);
129
+ });
130
+ it("throws when dependencies reference an unregistered middleware", () => {
131
+ const calls = [];
132
+ const first = new FirstMiddleware("first", calls);
133
+ const manager = new middleware_manager_1.MiddlewareManager();
134
+ manager.apply(first).dependencies(MissingMiddleware).forRoutes("*");
135
+ expect(() => collectMiddlewares(manager)).toThrow("Dependency middleware MissingMiddleware is not registered");
136
+ });
137
+ it("throws when middleware ordering is circular", () => {
138
+ const calls = [];
139
+ const first = new FirstMiddleware("first", calls);
140
+ const second = new SecondMiddleware("second", calls);
141
+ const manager = new middleware_manager_1.MiddlewareManager();
142
+ manager.apply(first).before(SecondMiddleware).forRoutes("*");
143
+ manager.apply(second).before(FirstMiddleware).forRoutes("*");
144
+ expect(() => collectMiddlewares(manager)).toThrow("Circular dependency detected in middleware");
145
+ });
146
+ it("applies function middleware with route exclusions", () => {
147
+ const calls = [];
148
+ const manager = new middleware_manager_1.MiddlewareManager();
149
+ const { consumer, middlewares, proxy } = createMiddlewareConsumer();
150
+ manager
151
+ .globalExclude("/global")
152
+ .apply((_req, _res, next) => {
153
+ calls.push("function");
154
+ next();
155
+ })
156
+ .exclude("/local")
157
+ .forRoutes("/route");
158
+ manager.configure(consumer);
159
+ runMiddlewares(middlewares);
160
+ expect(proxy.exclude).toHaveBeenCalledWith("/global", "/local");
161
+ expect(proxy.forRoutes).toHaveBeenCalledWith("/route");
162
+ expect(calls).toEqual(["function"]);
163
+ });
164
+ it("can disable global exclude routes for a middleware", () => {
165
+ const calls = [];
166
+ const first = new FirstMiddleware("first", calls);
167
+ const manager = new middleware_manager_1.MiddlewareManager();
168
+ const { consumer, proxy } = createMiddlewareConsumer();
169
+ manager
170
+ .globalExclude("/global")
171
+ .apply(first)
172
+ .disableGlobalExcludeRoutes()
173
+ .exclude("/local")
174
+ .forRoutes("/route");
175
+ manager.configure(consumer);
176
+ expect(proxy.exclude).toHaveBeenCalledWith("/local");
177
+ expect(proxy.exclude).not.toHaveBeenCalledWith("/global");
178
+ });
179
+ it("returns manager without registering middleware when no routes are provided", () => {
180
+ const calls = [];
181
+ const first = new FirstMiddleware("first", calls);
182
+ const manager = new middleware_manager_1.MiddlewareManager();
183
+ expect(manager.apply(first).forRoutes()).toBe(manager);
184
+ expect(collectMiddlewares(manager)).toEqual([]);
185
+ });
186
+ it("delegates module configuration to the middleware manager", () => {
187
+ const configure = jest.fn();
188
+ const manager = {
189
+ configure,
190
+ };
191
+ const consumer = {};
192
+ const module = new middleware_module_1.MiddlewareModule(manager);
193
+ module.configure(consumer);
194
+ expect(configure).toHaveBeenCalledWith(consumer);
195
+ });
196
+ });
197
+ //# sourceMappingURL=middleware.manager.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.manager.spec.js","sourceRoot":"","sources":["../src/middleware.manager.spec.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,15 @@
1
1
  import { MiddlewareConsumer, NestModule } from "@nestjs/common";
2
2
  import { MiddlewareManager } from "./middleware.manager";
3
+ /**
4
+ * Global module that provides the {@link MiddlewareManager} for registering
5
+ * and configuring middleware with dependency ordering support.
6
+ */
3
7
  export declare class MiddlewareModule implements NestModule {
4
8
  private readonly middlewareManager;
9
+ /** Creates a new MiddlewareModule instance.
10
+ * @param middlewareManager - The middleware manager instance
11
+ */
5
12
  constructor(middlewareManager: MiddlewareManager);
13
+ /** Configures all registered middlewares through the NestJS middleware consumer. */
6
14
  configure(consumer: MiddlewareConsumer): void;
7
15
  }
@@ -12,10 +12,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.MiddlewareModule = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const middleware_manager_1 = require("./middleware.manager");
15
+ /**
16
+ * Global module that provides the {@link MiddlewareManager} for registering
17
+ * and configuring middleware with dependency ordering support.
18
+ */
15
19
  let MiddlewareModule = class MiddlewareModule {
20
+ /** Creates a new MiddlewareModule instance.
21
+ * @param middlewareManager - The middleware manager instance
22
+ */
16
23
  constructor(middlewareManager) {
17
24
  this.middlewareManager = middlewareManager;
18
25
  }
26
+ /** Configures all registered middlewares through the NestJS middleware consumer. */
19
27
  configure(consumer) {
20
28
  this.middlewareManager.configure(consumer);
21
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.module.js","sourceRoot":"","sources":["../src/middleware.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAgF;AAEhF,6DAAyD;AAOlD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAAG,CAAC;IAErE,SAAS,CAAC,QAA4B;QACpC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;CACF,CAAA;AANY,4CAAgB;2BAAhB,gBAAgB;IAL5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,sCAAiB,CAAC;QAC9B,OAAO,EAAE,CAAC,sCAAiB,CAAC;KAC7B,CAAC;qCAEgD,sCAAiB;GADtD,gBAAgB,CAM5B"}
1
+ {"version":3,"file":"middleware.module.js","sourceRoot":"","sources":["../src/middleware.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAgF;AAEhF,6DAAyD;AAEzD;;;GAGG;AAMI,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B;;OAEG;IACH,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAAG,CAAC;IAErE,oFAAoF;IACpF,SAAS,CAAC,QAA4B;QACpC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;CACF,CAAA;AAVY,4CAAgB;2BAAhB,gBAAgB;IAL5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,sCAAiB,CAAC;QAC9B,OAAO,EAAE,CAAC,sCAAiB,CAAC;KAC7B,CAAC;qCAKgD,sCAAiB;GAJtD,gBAAgB,CAU5B"}