@lenne.tech/nest-server 11.22.0 → 11.23.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/.claude/rules/configurable-features.md +1 -0
- package/.claude/rules/framework-compatibility.md +79 -0
- package/CLAUDE.md +60 -0
- package/FRAMEWORK-API.md +235 -0
- package/dist/core/common/decorators/restricted.decorator.js +21 -4
- package/dist/core/common/decorators/restricted.decorator.js.map +1 -1
- package/dist/core/common/interfaces/server-options.interface.d.ts +1 -0
- package/dist/core/common/services/crud.service.d.ts +4 -1
- package/dist/core/common/services/crud.service.js +24 -2
- package/dist/core/common/services/crud.service.js.map +1 -1
- package/dist/core/common/services/module.service.d.ts +3 -2
- package/dist/core/common/services/module.service.js +43 -20
- package/dist/core/common/services/module.service.js.map +1 -1
- package/dist/core/common/services/request-context.service.d.ts +3 -0
- package/dist/core/common/services/request-context.service.js +12 -0
- package/dist/core/common/services/request-context.service.js.map +1 -1
- package/dist/server/modules/file/file-info.model.d.ts +1 -5
- package/dist/server/modules/user/user.model.d.ts +1 -5
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/docs/REQUEST-LIFECYCLE.md +25 -2
- package/docs/native-driver-security.md +153 -0
- package/docs/process-performance-optimization.md +493 -0
- package/migration-guides/11.22.0-to-11.22.1.md +105 -0
- package/migration-guides/11.22.x-to-11.23.0.md +235 -0
- package/package.json +33 -31
- package/src/core/common/decorators/restricted.decorator.ts +44 -4
- package/src/core/common/interfaces/server-options.interface.ts +8 -0
- package/src/core/common/services/crud.service.ts +77 -5
- package/src/core/common/services/module.service.ts +96 -35
- package/src/core/common/services/request-context.service.ts +47 -0
|
@@ -4,10 +4,11 @@ import { ServiceOptions } from '../interfaces/service-options.interface';
|
|
|
4
4
|
import { CoreModel } from '../models/core-model.model';
|
|
5
5
|
import { FieldSelection } from '../types/field-selection.type';
|
|
6
6
|
import { ConfigService } from './config.service';
|
|
7
|
+
export type SafeModel<T> = Omit<Model<T>, 'collection' | 'db'>;
|
|
7
8
|
export declare abstract class ModuleService<T extends CoreModel = any> {
|
|
8
9
|
protected configService: ConfigService;
|
|
9
10
|
protected mainModelConstructor: new (...args: any[]) => T;
|
|
10
|
-
protected mainDbModel:
|
|
11
|
+
protected mainDbModel: SafeModel<Document & T>;
|
|
11
12
|
protected constructor(options?: {
|
|
12
13
|
configService?: ConfigService;
|
|
13
14
|
mainDbModel?: Model<Document & T>;
|
|
@@ -40,7 +41,7 @@ export declare abstract class ModuleService<T extends CoreModel = any> {
|
|
|
40
41
|
prepareInput(input: Record<string, any>, options?: ServiceOptions): Promise<any>;
|
|
41
42
|
prepareOutput(output: any, options?: ServiceOptions): Promise<any>;
|
|
42
43
|
processFieldSelection(data: any, fieldsSelection: FieldSelection, options?: {
|
|
43
|
-
dbModel?: Model<Document & T>;
|
|
44
|
+
dbModel?: Model<Document & T> | SafeModel<Document & T>;
|
|
44
45
|
ignoreSelections?: boolean;
|
|
45
46
|
model?: new (...args: any[]) => T;
|
|
46
47
|
}): Promise<T | T[]>;
|
|
@@ -42,6 +42,8 @@ class ModuleService {
|
|
|
42
42
|
setCreateOrUpdateUserId: false,
|
|
43
43
|
...options?.serviceOptions,
|
|
44
44
|
};
|
|
45
|
+
const currentDepth = request_context_service_1.RequestContext.getProcessDepth();
|
|
46
|
+
const isNested = currentDepth > 0;
|
|
45
47
|
if (config.raw) {
|
|
46
48
|
config.prepareInput = null;
|
|
47
49
|
config.prepareOutput = null;
|
|
@@ -72,22 +74,37 @@ class ModuleService {
|
|
|
72
74
|
if (!opts.targetModel && config.inputType) {
|
|
73
75
|
opts.targetModel = config.inputType;
|
|
74
76
|
}
|
|
75
|
-
const originalInput = config.input;
|
|
76
|
-
const inputJSON = JSON.stringify(originalInput);
|
|
77
77
|
const preparedInput = await this.prepareInput(config.input, config);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
if (this.configService?.getFastButReadOnly('debugProcessInput', false)) {
|
|
79
|
+
try {
|
|
80
|
+
const secretFields = this.configService?.getFastButReadOnly('security.secretFields', [
|
|
81
|
+
'password',
|
|
82
|
+
'verificationToken',
|
|
83
|
+
'passwordResetToken',
|
|
84
|
+
'refreshTokens',
|
|
85
|
+
'tempTokens',
|
|
86
|
+
]);
|
|
87
|
+
const redact = (json) => secretFields.reduce((s, field) => s.replace(new RegExp(`"${field}":\\s*"[^"]*"`, 'g'), `"${field}":"[REDACTED]"`), json || '');
|
|
88
|
+
const originalJSON = redact(JSON.stringify(config.input));
|
|
89
|
+
const preparedJSON = redact(JSON.stringify(preparedInput));
|
|
90
|
+
if (originalJSON !== preparedJSON) {
|
|
91
|
+
console.debug('process: prepareInput changed input of type', config.input?.constructor?.name, 'to type', preparedInput?.constructor?.name);
|
|
92
|
+
}
|
|
82
93
|
}
|
|
83
|
-
|
|
94
|
+
catch {
|
|
95
|
+
}
|
|
96
|
+
}
|
|
84
97
|
config.input = preparedInput;
|
|
85
98
|
}
|
|
86
99
|
if (config.dbObject && config.checkRights && this.checkRights) {
|
|
87
100
|
if (typeof config.dbObject === 'string' || config.dbObject instanceof mongoose_1.Types.ObjectId) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
101
|
+
if (this.mainDbModel) {
|
|
102
|
+
const rawDoc = await this.mainDbModel.findById((0, db_helper_1.getStringIds)(config.dbObject)).lean().exec();
|
|
103
|
+
if (rawDoc) {
|
|
104
|
+
config.dbObject = this.mainModelConstructor?.map
|
|
105
|
+
? this.mainModelConstructor.map(rawDoc)
|
|
106
|
+
: rawDoc;
|
|
107
|
+
}
|
|
91
108
|
}
|
|
92
109
|
}
|
|
93
110
|
}
|
|
@@ -107,17 +124,20 @@ class ModuleService {
|
|
|
107
124
|
}
|
|
108
125
|
config.input.updatedBy = config.currentUser.id;
|
|
109
126
|
}
|
|
127
|
+
const executeServiceFunc = () => request_context_service_1.RequestContext.runWithIncrementedProcessDepth(() => serviceFunc(config));
|
|
110
128
|
let result = config.force
|
|
111
|
-
? await request_context_service_1.RequestContext.runWithBypassRoleGuard(
|
|
112
|
-
: await
|
|
129
|
+
? await request_context_service_1.RequestContext.runWithBypassRoleGuard(executeServiceFunc)
|
|
130
|
+
: await executeServiceFunc();
|
|
113
131
|
if (config.processFieldSelection && config.fieldSelection && this.processFieldSelection) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
|
|
132
|
+
if (!isNested || config.populate) {
|
|
133
|
+
let temps = result;
|
|
134
|
+
if (!Array.isArray(result)) {
|
|
135
|
+
temps = [result];
|
|
136
|
+
}
|
|
137
|
+
for (const temp of temps) {
|
|
138
|
+
const field = config.outputPath ? _.get(temp, config.outputPath) : temp;
|
|
139
|
+
await this.processFieldSelection(field, config.fieldSelection, config.processFieldSelection);
|
|
140
|
+
}
|
|
121
141
|
}
|
|
122
142
|
}
|
|
123
143
|
if (config.prepareOutput && this.prepareOutput) {
|
|
@@ -125,6 +145,9 @@ class ModuleService {
|
|
|
125
145
|
if (!opts.targetModel && config.outputType) {
|
|
126
146
|
opts.targetModel = config.outputType;
|
|
127
147
|
}
|
|
148
|
+
if (isNested && !config.populate && typeof opts === 'object') {
|
|
149
|
+
opts.targetModel = undefined;
|
|
150
|
+
}
|
|
128
151
|
if (config.outputPath) {
|
|
129
152
|
let temps = result;
|
|
130
153
|
if (!Array.isArray(result)) {
|
|
@@ -138,7 +161,7 @@ class ModuleService {
|
|
|
138
161
|
result = await this.prepareOutput(result, config);
|
|
139
162
|
}
|
|
140
163
|
}
|
|
141
|
-
if (config.checkRights && (await this.checkRights(undefined, config.currentUser, config))) {
|
|
164
|
+
if (!isNested && config.checkRights && (await this.checkRights(undefined, config.currentUser, config))) {
|
|
142
165
|
const opts = {
|
|
143
166
|
dbObject: config.dbObject,
|
|
144
167
|
processType: process_type_enum_1.ProcessType.OUTPUT,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/module.service.ts"],"names":[],"mappings":";;;AAAA,4BAA6B;AAC7B,uCAAkD;AAElD,kEAAyD;AACzD,oDAA+D;AAC/D,0DAAgD;AAChD,8DAAwE;AACxE,iFAAmG;AAKnG,qEAAyD;AACzD,uEAA2D;
|
|
1
|
+
{"version":3,"file":"module.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/module.service.ts"],"names":[],"mappings":";;;AAAA,4BAA6B;AAC7B,uCAAkD;AAElD,kEAAyD;AACzD,oDAA+D;AAC/D,0DAAgD;AAChD,8DAAwE;AACxE,iFAAmG;AAKnG,qEAAyD;AACzD,uEAA2D;AAkB3D,MAAsB,aAAa;IAIvB,aAAa,CAAgB;IAK7B,oBAAoB,CAA4B;IAWhD,WAAW,CAA0B;IAK/C,YAAsB,OAIrB;QACC,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAsC,CAAC;QACnE,IAAI,CAAC,oBAAoB,GAAG,OAAO,EAAE,oBAAoB,CAAC;QAG1D,IAAI,OAAO,EAAE,oBAAoB,IAAI,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;YACrE,sCAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAKD,WAAW,CACT,KAAU,EACV,WAA+D,EAC/D,OAMC;QAED,MAAM,MAAM,GAAG;YACb,GAAG,OAAO;SACX,CAAC;QACF,OAAO,IAAA,oBAAK,EAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAUD,KAAK,CAAC,OAAO,CACX,WAAoG,EACpG,OAMC;QAGD,MAAM,MAAM,GAIR;YACF,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,OAAO,EAAE,QAAQ;YAC3B,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,UAAU,EAAE,OAAO,EAAE,UAAU;YAC/B,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,EAAE;YACjB,qBAAqB,EAAE,EAAE;YACzB,MAAM,EAAE,IAAI;YACZ,uBAAuB,EAAE,KAAK;YAC9B,GAAG,OAAO,EAAE,cAAc;SAC3B,CAAC;QAGF,MAAM,YAAY,GAAG,wCAAc,CAAC,eAAe,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,YAAY,GAAG,CAAC,CAAC;QAGlC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACf,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;YAC3B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;QAGD,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;QACrG,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAChE,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YACnE,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;YAC3B,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACnE,MAAM,CAAC,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC;YACzC,CAAC;YACD,IAAI,MAAM,CAAC,aAAa,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;gBACrE,MAAM,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC;YAC7C,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC;YACxC,IAAI,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,CAAC;gBACnD,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,GAAG,KAAK,CAAC;YACxD,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC1C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;YACtC,CAAC;YACD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEpE,IAAI,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;gBACvE,IAAI,CAAC;oBACH,MAAM,YAAY,GAAa,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,uBAAuB,EAAE;wBAC7F,UAAU;wBACV,mBAAmB;wBACnB,oBAAoB;wBACpB,eAAe;wBACf,YAAY;qBACb,CAAC,CAAC;oBACH,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAC9B,YAAY,CAAC,MAAM,CACjB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,GAAG,CAAC,EAAE,IAAI,KAAK,gBAAgB,CAAC,EAC7F,IAAI,IAAI,EAAE,CACX,CAAC;oBACJ,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC1D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;oBAC3D,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;wBAClC,OAAO,CAAC,KAAK,CACX,6CAA6C,EAC7C,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAC/B,SAAS,EACT,aAAa,EAAE,WAAW,EAAE,IAAI,CACjC,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;gBAET,CAAC;YACH,CAAC;YAED,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;QAC/B,CAAC;QAMD,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9D,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,YAAY,gBAAK,CAAC,QAAQ,EAAE,CAAC;gBACrF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAA,wBAAY,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;oBAC5F,IAAI,MAAM,EAAE,CAAC;wBACX,MAAM,CAAC,QAAQ,GAAI,IAAI,CAAC,oBAA4B,EAAE,GAAG;4BACvD,CAAC,CAAE,IAAI,CAAC,oBAA4B,CAAC,GAAG,CAAC,MAAM,CAAC;4BAChD,CAAC,CAAC,MAAM,CAAC;oBACb,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3D,MAAM,IAAI,GAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,+BAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACrG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;YACnC,CAAC;YACD,MAAM,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAkB,EAAE,IAAI,CAAC,CAAC;QAGvF,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnE,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,WAAkB,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;YAEzE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,KAA6B,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1E,CAAC;YAGA,MAAM,CAAC,KAA6B,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1E,CAAC;QAID,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,wCAAc,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAE1G,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK;YACvB,CAAC,CAAC,MAAM,wCAAc,CAAC,sBAAsB,CAAC,kBAAkB,CAAC;YACjE,CAAC,CAAC,MAAM,kBAAkB,EAAE,CAAC;QAK/B,IAAI,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACxF,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,MAAM,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnB,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACxE,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC3C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;YACvC,CAAC;YAKD,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC/B,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,IAAI,KAAK,GAAG,MAAM,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnB,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAKD,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,WAAkB,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAC9G,MAAM,IAAI,GAAQ;gBAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,WAAW,EAAE,+BAAW,CAAC,MAAM;gBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,KAAK;aAClB,CAAC;YACF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;YACpC,CAAC;YACD,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,WAAkB,EAAE,IAAI,CAAC,CAAC;QAC3E,CAAC;QAGD,OAAO,MAAM,CAAC;IAChB,CAAC;IA2BD,KAAK,CAAC,aAAa,CAAC,MAAW,EAAE,iBAAiC,EAAE;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC;QAChB,CAAC;QAGD,IAAI,cAAc,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChE,MAAM,YAAY,GAAG,cAAc,CAAC,qBAAqB,IAAI,EAAE,CAAC;YAChE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QAGD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAoBS,qBAAqB,CAAC,KAAU,EAAE,MAAW,EAAE,QAAiB;QACxE,QAAQ,GAAG,QAAQ,IAAI,wCAAc,CAAC,WAAW,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAA,oDAA2B,EAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAA,uCAAc,EAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAKD,KAAK,CAAC,YAAY,CAAC,KAA0B,EAAE,UAA0B,EAAE;QACzE,MAAM,MAAM,GAAG;YACb,GAAG,OAAO,EAAE,YAAY;SACzB,CAAC;QACF,OAAO,IAAA,6BAAY,EAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAKD,KAAK,CAAC,aAAa,CAAC,MAAW,EAAE,UAA0B,EAAE;QAC3D,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,OAAO,EAAE,QAAQ;YAC3B,WAAW,EAAE,IAAI,CAAC,oBAAoB;YACtC,GAAG,OAAO,EAAE,aAAa;SAC1B,CAAC;QACF,OAAO,IAAA,8BAAa,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAMD,KAAK,CAAC,qBAAqB,CACzB,IAAS,EACT,eAA+B,EAC/B,UAII,EAAE;QAEN,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,WAAW;YACzB,KAAK,EAAE,IAAI,CAAC,oBAAoB;YAChC,GAAG,OAAO;SACX,CAAC;QACF,OAAO,IAAA,qBAAS,EAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAA8B,EAAE;YAC3F,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;SAC1C,CAAC,CAAC;IACL,CAAC;CACF;AAxZD,sCAwZC"}
|
|
@@ -11,6 +11,7 @@ export interface IRequestContext {
|
|
|
11
11
|
tenantIds?: string[];
|
|
12
12
|
tenantRole?: string;
|
|
13
13
|
isAdminBypass?: boolean;
|
|
14
|
+
processDepth?: number;
|
|
14
15
|
}
|
|
15
16
|
export declare class RequestContext {
|
|
16
17
|
private static storage;
|
|
@@ -20,6 +21,8 @@ export declare class RequestContext {
|
|
|
20
21
|
static getLanguage(): string | undefined;
|
|
21
22
|
static isBypassRoleGuard(): boolean;
|
|
22
23
|
static runWithBypassRoleGuard<T>(fn: () => T): T;
|
|
24
|
+
static getProcessDepth(): number;
|
|
25
|
+
static runWithIncrementedProcessDepth<T>(fn: () => T): T;
|
|
23
26
|
static getTenantId(): string | undefined;
|
|
24
27
|
static isBypassTenantGuard(): boolean;
|
|
25
28
|
static runWithBypassTenantGuard<T>(fn: () => T): T;
|
|
@@ -30,6 +30,18 @@ class RequestContext {
|
|
|
30
30
|
};
|
|
31
31
|
return this.storage.run(context, fn);
|
|
32
32
|
}
|
|
33
|
+
static getProcessDepth() {
|
|
34
|
+
return this.storage.getStore()?.processDepth || 0;
|
|
35
|
+
}
|
|
36
|
+
static runWithIncrementedProcessDepth(fn) {
|
|
37
|
+
const currentStore = this.storage.getStore();
|
|
38
|
+
const currentDepth = currentStore?.processDepth || 0;
|
|
39
|
+
const context = {
|
|
40
|
+
...currentStore,
|
|
41
|
+
processDepth: currentDepth + 1,
|
|
42
|
+
};
|
|
43
|
+
return this.storage.run(context, fn);
|
|
44
|
+
}
|
|
33
45
|
static getTenantId() {
|
|
34
46
|
return this.storage.getStore()?.tenantId;
|
|
35
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/request-context.service.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;
|
|
1
|
+
{"version":3,"file":"request-context.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/request-context.service.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAmChD,MAAa,cAAc;IACjB,MAAM,CAAC,OAAO,GAAG,IAAI,+BAAiB,EAAmB,CAAC;IAElE,MAAM,CAAC,GAAG,CAAI,OAAwB,EAAE,EAAW;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC;IAC3C,CAAC;IAKD,MAAM,CAAC,iBAAiB;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3D,CAAC;IAkBD,MAAM,CAAC,sBAAsB,CAAI,EAAW;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAE7C,IAAI,YAAY,EAAE,eAAe,EAAE,CAAC;YAClC,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAoB;YAC/B,GAAG,YAAY;YACf,eAAe,EAAE,IAAI;SACtB,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;IAMD,MAAM,CAAC,eAAe;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,YAAY,IAAI,CAAC,CAAC;IACpD,CAAC;IAwBD,MAAM,CAAC,8BAA8B,CAAI,EAAW;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,YAAY,EAAE,YAAY,IAAI,CAAC,CAAC;QACrD,MAAM,OAAO,GAAoB;YAC/B,GAAG,YAAY;YACf,YAAY,EAAE,YAAY,GAAG,CAAC;SAC/B,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,mBAAmB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7D,CAAC;IAkBD,MAAM,CAAC,wBAAwB,CAAI,EAAW;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAE7C,IAAI,YAAY,EAAE,iBAAiB,EAAE,CAAC;YACpC,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAoB;YAC/B,GAAG,YAAY;YACf,iBAAiB,EAAE,IAAI;SACxB,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;;AAlIH,wCAmIC"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { CoreFileInfo } from '../../../core/modules/file/core-file-info.model';
|
|
2
2
|
export declare class FileInfo extends CoreFileInfo {
|
|
3
3
|
}
|
|
4
|
-
export declare const FileInfoSchema: import("mongoose").Schema<FileInfo, import("mongoose").Model<FileInfo, any, any, any, import("mongoose").Document<unknown,
|
|
5
|
-
_id: import("mongoose").Types.ObjectId;
|
|
6
|
-
}> & {
|
|
7
|
-
__v: number;
|
|
8
|
-
}, any, FileInfo>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, FileInfo, import("mongoose").Document<unknown, {}, FileInfo, {}, import("mongoose").DefaultSchemaOptions> & FileInfo & Required<{
|
|
4
|
+
export declare const FileInfoSchema: import("mongoose").Schema<FileInfo, import("mongoose").Model<FileInfo, any, any, any, any, any, FileInfo>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, FileInfo, import("mongoose").Document<unknown, {}, FileInfo, {}, import("mongoose").DefaultSchemaOptions> & FileInfo & Required<{
|
|
9
5
|
_id: import("mongoose").Types.ObjectId;
|
|
10
6
|
}> & {
|
|
11
7
|
__v: number;
|
|
@@ -14,11 +14,7 @@ export declare class User extends CoreUserModel implements PersistenceModel {
|
|
|
14
14
|
map(input: any): this;
|
|
15
15
|
securityCheck(user: User, force?: boolean): this;
|
|
16
16
|
}
|
|
17
|
-
export declare const UserSchema: Schema<User, import("mongoose").Model<User, any, any, any, Document<unknown,
|
|
18
|
-
_id: import("mongoose").Types.ObjectId;
|
|
19
|
-
}> & {
|
|
20
|
-
__v: number;
|
|
21
|
-
}, any, User>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, User, Document<unknown, {}, User, {}, import("mongoose").DefaultSchemaOptions> & User & Required<{
|
|
17
|
+
export declare const UserSchema: Schema<User, import("mongoose").Model<User, any, any, any, any, any, User>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, User, Document<unknown, {}, User, {}, import("mongoose").DefaultSchemaOptions> & User & Required<{
|
|
22
18
|
_id: import("mongoose").Types.ObjectId;
|
|
23
19
|
}> & {
|
|
24
20
|
__v: number;
|