@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.
- package/dist/interfaces/middleware-config.interface.d.ts +5 -1
- package/dist/middleware.configurator.d.ts +60 -2
- package/dist/middleware.configurator.js +68 -2
- package/dist/middleware.configurator.js.map +1 -1
- package/dist/middleware.manager.d.ts +20 -7
- package/dist/middleware.manager.js +48 -16
- package/dist/middleware.manager.js.map +1 -1
- package/dist/middleware.manager.spec.d.ts +1 -0
- package/dist/middleware.manager.spec.js +197 -0
- package/dist/middleware.manager.spec.js.map +1 -0
- package/dist/middleware.module.d.ts +8 -0
- package/dist/middleware.module.js +8 -0
- package/dist/middleware.module.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +19 -10
|
@@ -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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
17
|
-
* @param middlewares -
|
|
18
|
-
* @returns A
|
|
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
|
-
*
|
|
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
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
*
|
|
64
|
-
* @param middlewares -
|
|
65
|
-
* @returns A
|
|
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":";;;;;;;;;AAAA,2CAAkE;AAIlE,uEAAmE;AAGnE
|
|
1
|
+
{"version":3,"file":"middleware.manager.js","sourceRoot":"","sources":["../src/middleware.manager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAkE;AAIlE,uEAAmE;AAGnE;;;;;;GAMG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAAvB;QACL,uEAAuE;QAC/D,wBAAmB,GAA2B,EAAE,CAAC;QAEzD,qEAAqE;QACrD,wBAAmB,GAAG,IAAI,GAAG,EAG1C,CAAC;IAkIN,CAAC;IAhIC,uEAAuE;IACvE,IAAY,iBAAiB;QAC3B,MAAM,MAAM,GAAmC,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;QAEzD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAwC,CAAC;QACzE,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;YACzD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC7D,gBAAgB,CAAC,GAAG,CAClB,UAAU,CAAC,WAAmC,EAC9C,UAAU,CACX,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,2BAA2B,GAAG,CAClC,cAAoC,EACpC,EAAE;YACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,yBAAyB,cAAc,CAAC,IAAI,oBAAoB,CACjE,CAAC;YACJ,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,GAAG,EAG1B,CAAC;QAEJ,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5D,aAAa,CAAC,GAAG,CACf,UAAU,EACV,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,EAAE,CACxD,2BAA2B,CAAC,oBAAoB,CAAC,CAClD,CACF,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5D,KAAK,MAAM,eAAe,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBACtD,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBACzD,IAAI,UAAU,EAAE,CAAC;oBACf,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YAED,KAAK,MAAM,gBAAgB,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACxD,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACzD,IAAI,SAAS,EAAE,CAAC;oBACd,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,UAAwC,EAAE,EAAE;YACzD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEzB,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACzD,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;gBACtC,KAAK,CAAC,UAAU,CAAC,CAAC;YACpB,CAAC;YAED,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;YACzD,KAAK,CAAC,UAAU,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,MAAM;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,MAAM,EAA8B,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACH,KAAK,CACH,GAAG,WAA2C;QAE9C,OAAO,IAAI,gDAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,GAAG,MAA8B;QAC7C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,QAA4B;QACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAEhD,MAAM,aAAa,GAAG,MAAM,CAAC,2BAA2B;gBACtD,CAAC,CAAC,MAAM,CAAC,aAAa;gBACtB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;YAE3D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,KAAK,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;YAClC,CAAC;YAED,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;CACF,CAAA;AA1IY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;GACA,iBAAiB,CA0I7B"}
|
|
@@ -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;
|
|
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"}
|