@nest-boot/request-context 8.0.0-beta.2 → 8.0.0-beta.4
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/nest-dependency-resolver.d.ts +3 -0
- package/dist/nest-dependency-resolver.js +19 -0
- package/dist/nest-dependency-resolver.js.map +1 -0
- package/dist/request-context.d.ts +21 -7
- package/dist/request-context.interceptor.d.ts +3 -0
- package/dist/request-context.interceptor.js +14 -1
- package/dist/request-context.interceptor.js.map +1 -1
- package/dist/request-context.js +94 -2
- package/dist/request-context.js.map +1 -1
- package/dist/request-context.middleware.d.ts +3 -0
- package/dist/request-context.middleware.js +14 -1
- package/dist/request-context.middleware.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InvalidClassScopeException } from "@nestjs/core/errors/exceptions/invalid-class-scope.exception";
|
|
2
|
+
import { UnknownElementException } from "@nestjs/core/errors/exceptions/unknown-element.exception";
|
|
3
|
+
export function createNestDependencyResolver(moduleRef) {
|
|
4
|
+
return (token) => {
|
|
5
|
+
try {
|
|
6
|
+
return moduleRef.get(token, {
|
|
7
|
+
strict: false,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
if (error instanceof UnknownElementException ||
|
|
12
|
+
error instanceof InvalidClassScopeException) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
throw error;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=nest-dependency-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nest-dependency-resolver.js","sourceRoot":"","sources":["../src/nest-dependency-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AAKnG,MAAM,UAAU,4BAA4B,CAC1C,SAAoB;IAEpB,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,GAAG,CAAC,KAAwC,EAAE;gBAC7D,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,uBAAuB;gBACxC,KAAK,YAAY,0BAA0B,EAC3C,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type InjectionToken } from "@nestjs/common";
|
|
2
2
|
export type RequestContextMiddlewareType = <T>(ctx: RequestContext, next: () => Promise<T>) => Promise<T>;
|
|
3
|
+
export type RequestContextToken<T = unknown> = InjectionToken<T>;
|
|
4
|
+
export type RequestContextDependencyResolver = (token: RequestContextToken) => unknown;
|
|
3
5
|
export interface RequestContextCreateOptions {
|
|
6
|
+
dependencyResolver?: RequestContextDependencyResolver;
|
|
4
7
|
id?: string;
|
|
5
8
|
type: string;
|
|
6
9
|
parent?: RequestContext;
|
|
@@ -9,18 +12,29 @@ export declare class RequestContext {
|
|
|
9
12
|
readonly id: string;
|
|
10
13
|
readonly type: string;
|
|
11
14
|
readonly parent?: RequestContext;
|
|
15
|
+
private readonly dependencyResolver?;
|
|
12
16
|
private readonly container;
|
|
17
|
+
private readonly aliases;
|
|
13
18
|
private static readonly storage;
|
|
14
19
|
private static readonly middlewares;
|
|
15
20
|
private static readonly middlewareDependencies;
|
|
16
21
|
private static middlewaresStack;
|
|
17
22
|
constructor(options: RequestContextCreateOptions);
|
|
18
|
-
get<T>(token:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
static
|
|
23
|
+
get<T>(token: RequestContextToken<T>): T | undefined;
|
|
24
|
+
private findContextValue;
|
|
25
|
+
private resolveDependency;
|
|
26
|
+
private getAliasTarget;
|
|
27
|
+
private resolveToken;
|
|
28
|
+
private static formatToken;
|
|
29
|
+
set<T>(typeOrToken: RequestContextToken<T>, value: T): void;
|
|
30
|
+
alias(aliasToken: RequestContextToken, targetToken: RequestContextToken): void;
|
|
31
|
+
unalias(aliasToken: RequestContextToken): void;
|
|
32
|
+
getOrSet<T>(typeOrToken: RequestContextToken<T>, value: T): T;
|
|
33
|
+
static get<T>(key: RequestContextToken<T>): T | undefined;
|
|
34
|
+
static set<T>(key: RequestContextToken<T>, value: T): void;
|
|
35
|
+
static alias(aliasToken: RequestContextToken, targetToken: RequestContextToken): void;
|
|
36
|
+
static unalias(aliasToken: RequestContextToken): void;
|
|
37
|
+
static getOrSet<T>(key: RequestContextToken<T>, value: T): T;
|
|
24
38
|
static get id(): string;
|
|
25
39
|
static current(): RequestContext;
|
|
26
40
|
static isActive(): boolean;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type CallHandler, type ExecutionContext, type NestInterceptor } from "@nestjs/common";
|
|
2
|
+
import { ModuleRef } from "@nestjs/core";
|
|
2
3
|
import { Observable } from "rxjs";
|
|
3
4
|
export declare class RequestContextInterceptor implements NestInterceptor {
|
|
5
|
+
private readonly moduleRef?;
|
|
6
|
+
constructor(moduleRef?: ModuleRef | undefined);
|
|
4
7
|
intercept<T>(executionContext: ExecutionContext, next: CallHandler<T>): Observable<T>;
|
|
5
8
|
}
|
|
@@ -4,10 +4,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
7
10
|
import { Injectable, } from "@nestjs/common";
|
|
11
|
+
import { ModuleRef } from "@nestjs/core";
|
|
8
12
|
import { Observable } from "rxjs";
|
|
13
|
+
import { createNestDependencyResolver } from "./nest-dependency-resolver.js";
|
|
9
14
|
import { RequestContext } from "./request-context.js";
|
|
10
15
|
let RequestContextInterceptor = class RequestContextInterceptor {
|
|
16
|
+
moduleRef;
|
|
17
|
+
constructor(moduleRef) {
|
|
18
|
+
this.moduleRef = moduleRef;
|
|
19
|
+
}
|
|
11
20
|
intercept(executionContext, next) {
|
|
12
21
|
if (RequestContext.isActive() ||
|
|
13
22
|
!["http", "graphql"].includes(executionContext.getType())) {
|
|
@@ -16,6 +25,9 @@ let RequestContextInterceptor = class RequestContextInterceptor {
|
|
|
16
25
|
const id = (executionContext.switchToHttp().getRequest() ??
|
|
17
26
|
executionContext.getArgByIndex(2).req)?.get?.("x-request-id");
|
|
18
27
|
const ctx = new RequestContext({
|
|
28
|
+
dependencyResolver: this.moduleRef
|
|
29
|
+
? createNestDependencyResolver(this.moduleRef)
|
|
30
|
+
: undefined,
|
|
19
31
|
id,
|
|
20
32
|
type: "http",
|
|
21
33
|
});
|
|
@@ -82,7 +94,8 @@ let RequestContextInterceptor = class RequestContextInterceptor {
|
|
|
82
94
|
}
|
|
83
95
|
};
|
|
84
96
|
RequestContextInterceptor = __decorate([
|
|
85
|
-
Injectable()
|
|
97
|
+
Injectable(),
|
|
98
|
+
__metadata("design:paramtypes", [ModuleRef])
|
|
86
99
|
], RequestContextInterceptor);
|
|
87
100
|
export { RequestContextInterceptor };
|
|
88
101
|
//# sourceMappingURL=request-context.interceptor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.interceptor.js","sourceRoot":"","sources":["../src/request-context.interceptor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request-context.interceptor.js","sourceRoot":"","sources":["../src/request-context.interceptor.ts"],"names":[],"mappings":"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"}
|
package/dist/request-context.js
CHANGED
|
@@ -4,7 +4,9 @@ export class RequestContext {
|
|
|
4
4
|
id;
|
|
5
5
|
type;
|
|
6
6
|
parent;
|
|
7
|
+
dependencyResolver;
|
|
7
8
|
container = new Map();
|
|
9
|
+
aliases = new Map();
|
|
8
10
|
static storage = new AsyncLocalStorage();
|
|
9
11
|
static middlewares = new Map();
|
|
10
12
|
static middlewareDependencies = new Map();
|
|
@@ -13,12 +15,96 @@ export class RequestContext {
|
|
|
13
15
|
this.id = options.id ?? randomUUID();
|
|
14
16
|
this.type = options.type;
|
|
15
17
|
this.parent = options.parent;
|
|
18
|
+
this.dependencyResolver = options.dependencyResolver;
|
|
19
|
+
if (this.parent) {
|
|
20
|
+
for (const [aliasToken, targetToken] of this.parent.aliases) {
|
|
21
|
+
this.aliases.set(aliasToken, targetToken);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
16
24
|
}
|
|
17
25
|
get(token) {
|
|
18
|
-
|
|
26
|
+
const resolvedToken = this.resolveToken(token);
|
|
27
|
+
const contextValue = this.findContextValue(resolvedToken);
|
|
28
|
+
if (contextValue.found) {
|
|
29
|
+
return contextValue.value;
|
|
30
|
+
}
|
|
31
|
+
return this.resolveDependency(resolvedToken);
|
|
32
|
+
}
|
|
33
|
+
findContextValue(token) {
|
|
34
|
+
if (this.container.has(token)) {
|
|
35
|
+
return {
|
|
36
|
+
found: true,
|
|
37
|
+
value: this.container.get(token),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return (this.parent?.findContextValue(token) ?? {
|
|
41
|
+
found: false,
|
|
42
|
+
value: undefined,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
resolveDependency(token) {
|
|
46
|
+
const parentValue = this.parent?.resolveDependency(token);
|
|
47
|
+
if (typeof parentValue !== "undefined") {
|
|
48
|
+
return parentValue;
|
|
49
|
+
}
|
|
50
|
+
return this.dependencyResolver?.(token);
|
|
51
|
+
}
|
|
52
|
+
getAliasTarget(aliasToken) {
|
|
53
|
+
return this.aliases.get(aliasToken);
|
|
54
|
+
}
|
|
55
|
+
resolveToken(aliasToken) {
|
|
56
|
+
const path = [aliasToken];
|
|
57
|
+
const seen = new Map([[aliasToken, 0]]);
|
|
58
|
+
let token = aliasToken;
|
|
59
|
+
while (true) {
|
|
60
|
+
const targetToken = this.getAliasTarget(token);
|
|
61
|
+
if (typeof targetToken === "undefined") {
|
|
62
|
+
return token;
|
|
63
|
+
}
|
|
64
|
+
path.push(targetToken);
|
|
65
|
+
const cycleStart = seen.get(targetToken);
|
|
66
|
+
if (typeof cycleStart !== "undefined") {
|
|
67
|
+
const cycle = path
|
|
68
|
+
.slice(cycleStart)
|
|
69
|
+
.map((currentToken) => RequestContext.formatToken(currentToken))
|
|
70
|
+
.join(" -> ");
|
|
71
|
+
throw new Error(`Circular request context alias detected: ${cycle}`);
|
|
72
|
+
}
|
|
73
|
+
seen.set(targetToken, path.length - 1);
|
|
74
|
+
token = targetToken;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
static formatToken(token) {
|
|
78
|
+
if (typeof token === "string") {
|
|
79
|
+
return JSON.stringify(token);
|
|
80
|
+
}
|
|
81
|
+
if (typeof token === "symbol") {
|
|
82
|
+
return token.toString();
|
|
83
|
+
}
|
|
84
|
+
return token.name || "(anonymous function)";
|
|
19
85
|
}
|
|
20
86
|
set(typeOrToken, value) {
|
|
21
|
-
this.container.set(typeOrToken, value);
|
|
87
|
+
this.container.set(this.resolveToken(typeOrToken), value);
|
|
88
|
+
}
|
|
89
|
+
alias(aliasToken, targetToken) {
|
|
90
|
+
const hadAlias = this.aliases.has(aliasToken);
|
|
91
|
+
const previousTarget = this.aliases.get(aliasToken);
|
|
92
|
+
this.aliases.set(aliasToken, targetToken);
|
|
93
|
+
try {
|
|
94
|
+
this.resolveToken(aliasToken);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (hadAlias && typeof previousTarget !== "undefined") {
|
|
98
|
+
this.aliases.set(aliasToken, previousTarget);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
this.aliases.delete(aliasToken);
|
|
102
|
+
}
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
unalias(aliasToken) {
|
|
107
|
+
this.aliases.delete(aliasToken);
|
|
22
108
|
}
|
|
23
109
|
getOrSet(typeOrToken, value) {
|
|
24
110
|
const existing = this.get(typeOrToken);
|
|
@@ -38,6 +124,12 @@ export class RequestContext {
|
|
|
38
124
|
ctx.set(key, value);
|
|
39
125
|
}
|
|
40
126
|
}
|
|
127
|
+
static alias(aliasToken, targetToken) {
|
|
128
|
+
this.current().alias(aliasToken, targetToken);
|
|
129
|
+
}
|
|
130
|
+
static unalias(aliasToken) {
|
|
131
|
+
this.current().unalias(aliasToken);
|
|
132
|
+
}
|
|
41
133
|
static getOrSet(key, value) {
|
|
42
134
|
const ctx = this.current();
|
|
43
135
|
return ctx.getOrSet(key, value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../src/request-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../src/request-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type NestMiddleware } from "@nestjs/common";
|
|
2
|
+
import { ModuleRef } from "@nestjs/core";
|
|
2
3
|
import { type NextFunction, type Request, type Response } from "express";
|
|
3
4
|
export declare class RequestContextMiddleware implements NestMiddleware {
|
|
5
|
+
private readonly moduleRef?;
|
|
6
|
+
constructor(moduleRef?: ModuleRef | undefined);
|
|
4
7
|
use(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
5
8
|
}
|
|
@@ -4,16 +4,28 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
7
10
|
import { Injectable } from "@nestjs/common";
|
|
11
|
+
import { ModuleRef } from "@nestjs/core";
|
|
12
|
+
import { createNestDependencyResolver } from "./nest-dependency-resolver.js";
|
|
8
13
|
import { REQUEST as CTX_REQUEST_TOKEN, RESPONSE as CTX_RESPONSE_TOKEN, } from "./request-context.constants.js";
|
|
9
14
|
import { RequestContext } from "./request-context.js";
|
|
10
15
|
let RequestContextMiddleware = class RequestContextMiddleware {
|
|
16
|
+
moduleRef;
|
|
17
|
+
constructor(moduleRef) {
|
|
18
|
+
this.moduleRef = moduleRef;
|
|
19
|
+
}
|
|
11
20
|
async use(req, res, next) {
|
|
12
21
|
if (RequestContext.isActive()) {
|
|
13
22
|
next();
|
|
14
23
|
return;
|
|
15
24
|
}
|
|
16
25
|
const ctx = new RequestContext({
|
|
26
|
+
dependencyResolver: this.moduleRef
|
|
27
|
+
? createNestDependencyResolver(this.moduleRef)
|
|
28
|
+
: undefined,
|
|
17
29
|
id: req.get("x-request-id"),
|
|
18
30
|
type: "http",
|
|
19
31
|
});
|
|
@@ -36,7 +48,8 @@ let RequestContextMiddleware = class RequestContextMiddleware {
|
|
|
36
48
|
}
|
|
37
49
|
};
|
|
38
50
|
RequestContextMiddleware = __decorate([
|
|
39
|
-
Injectable()
|
|
51
|
+
Injectable(),
|
|
52
|
+
__metadata("design:paramtypes", [ModuleRef])
|
|
40
53
|
], RequestContextMiddleware);
|
|
41
54
|
export { RequestContextMiddleware };
|
|
42
55
|
//# sourceMappingURL=request-context.middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.middleware.js","sourceRoot":"","sources":["../src/request-context.middleware.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request-context.middleware.js","sourceRoot":"","sources":["../src/request-context.middleware.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,QAAQ,IAAI,kBAAkB,GAC/B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAuB/C,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAEN;IAA7B,YAA6B,SAAqB;QAArB,cAAS,GAAT,SAAS,CAAY;IAAG,CAAC;IAStD,KAAK,CAAC,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;QACvD,IAAI,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC9B,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC;YAC7B,kBAAkB,EAAE,IAAI,CAAC,SAAS;gBAChC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC9C,CAAC,CAAC,SAAS;YACb,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;YAC3B,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAU,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACzC,GAAG,CAAC,GAAG,CAAW,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAE3C,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;YACjC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACnC,MAAM,kBAAkB,GAAG,GAAG,EAAE;oBAC9B,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;oBAChD,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;oBACjD,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;oBAChD,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBAEF,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;gBACrC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;gBACpC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;gBAEpC,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA7CY,wBAAwB;IADpC,UAAU,EAAE;qCAG8B,SAAS;GAFvC,wBAAwB,CA6CpC"}
|