@lenne.tech/nest-server 11.22.1 → 11.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/rules/configurable-features.md +1 -0
- package/CLAUDE.md +77 -0
- package/FRAMEWORK-API.md +6 -2
- 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/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.x-to-11.23.0.md +235 -0
- package/package.json +16 -16
- 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
|
@@ -214,6 +214,7 @@ This pattern is currently applied to:
|
|
|
214
214
|
| Secret Fields Removal | `security.secretFields` | Array | `['password', 'verificationToken', ...]` |
|
|
215
215
|
| Multi-Tenancy | `multiTenancy` | Presence Implies Enabled | `headerName: 'x-tenant-id'`, `membershipModel: 'TenantMember'`, `adminBypass: true`, `excludeSchemas: []`, `roleHierarchy: { member: 1, manager: 2, owner: 3 }`, `cacheTtlMs: 30000` (0 disables, process-local). System roles (`S_EVERYONE`, `S_USER`, `S_VERIFIED`) are checked as OR alternatives before real roles; method-level system roles take precedence; membership validated for context when system role grants access + header present. Hierarchy roles use level comparison, normal roles use exact match. Use `DefaultHR` or `createHierarchyRoles()` for type-safe role constants. Bypass: `RequestContext.runWithBypassTenantGuard()`. Cache invalidation: `CoreTenantGuard.invalidateUser(userId)` / `invalidateAll()` |
|
|
216
216
|
| BetterAuth Tenant Skip | `betterAuth.skipTenantCheck` | Explicit Boolean | `true` (default). When `true` and no `X-Tenant-Id` header is sent, IAM endpoints (controller + resolver) skip `CoreTenantGuard` tenant validation. When header IS present, normal membership validation runs regardless. Set `false` for tenant-aware auth scenarios (subdomain-based, invite links, SSO per tenant) |
|
|
217
|
+
| Debug Process Input | `debugProcessInput` | Explicit Boolean | `false` (default). When `true`, logs a debug message when `prepareInput()` changes the input type during `process()`. Has performance cost due to `JSON.stringify` on every `process()` call — enable only for debugging |
|
|
217
218
|
|
|
218
219
|
## Module Override Pattern (via `ICoreModuleOverrides`)
|
|
219
220
|
|
package/CLAUDE.md
CHANGED
|
@@ -167,8 +167,85 @@ Detailed documentation in `.claude/rules/`:
|
|
|
167
167
|
| `package-management.md` | Fixed package versions only - no `^`, `~`, or ranges |
|
|
168
168
|
| `framework-compatibility.md` | Maintenance obligations for FRAMEWORK-API.md, shipped docs, cross-repo dependencies |
|
|
169
169
|
|
|
170
|
+
## Native MongoDB Driver — Security Rules
|
|
171
|
+
|
|
172
|
+
### model.collection / model.db — BLOCKED
|
|
173
|
+
|
|
174
|
+
Access to `this.mainDbModel.collection` and `this.mainDbModel.db` is blocked via TypeScript type (`SafeModel = Omit<Model, 'collection' | 'db'>`).
|
|
175
|
+
For additionally injected models (`@InjectModel`): **NEVER** use `.collection.*` or `.db.*`.
|
|
176
|
+
All Mongoose plugins (Tenant, Audit, RoleGuard, Password) are bypassed.
|
|
177
|
+
|
|
178
|
+
**Use Mongoose Model methods instead:**
|
|
179
|
+
|
|
180
|
+
| Forbidden | Allowed |
|
|
181
|
+
|-----------|---------|
|
|
182
|
+
| `collection.insertOne(doc)` | `Model.insertMany([doc])` |
|
|
183
|
+
| `collection.bulkWrite(ops)` | `Model.bulkWrite(ops)` |
|
|
184
|
+
| `collection.updateOne(f, u)` | `Model.updateOne(f, u)` |
|
|
185
|
+
| `collection.updateMany(f, u)` | `Model.updateMany(f, u)` |
|
|
186
|
+
| `collection.deleteOne(f)` | `Model.deleteOne(f)` |
|
|
187
|
+
| `collection.deleteMany(f)` | `Model.deleteMany(f)` |
|
|
188
|
+
| `collection.find(f)` | `Model.find(f)` or `Model.find(f).lean()` |
|
|
189
|
+
| `collection.aggregate(p)` | `Model.aggregate(p)` |
|
|
190
|
+
|
|
191
|
+
If native access is unavoidable: use `this.getNativeCollection(reason)` or `this.getNativeConnection(reason)` from CrudService.
|
|
192
|
+
|
|
193
|
+
### connection.db.collection() — Use With Caution
|
|
194
|
+
|
|
195
|
+
Allowed for:
|
|
196
|
+
- Collections without Mongoose schema (OAuth, BetterAuth, MCP)
|
|
197
|
+
- Read-only aggregations/counts on other collections
|
|
198
|
+
- Admin operations (indexes, drops, backups)
|
|
199
|
+
|
|
200
|
+
**NOT allowed for:**
|
|
201
|
+
- Write operations on tenant-scoped collections → use Mongoose Model instead
|
|
202
|
+
- CRUD on collections that have a Mongoose schema → use CrudService instead
|
|
203
|
+
|
|
204
|
+
Details: [`docs/native-driver-security.md`](docs/native-driver-security.md)
|
|
205
|
+
|
|
206
|
+
### CrudService process() Pipeline — Memory Considerations
|
|
207
|
+
|
|
208
|
+
The `process()` pipeline (prepareInput → checkRights → serviceFunc → processFieldSelection → prepareOutput → checkRights) adds memory overhead per call through object cloning, Mongoose hydration, and populate operations. For typical API usage this is negligible, but it can become significant in:
|
|
209
|
+
|
|
210
|
+
- **High-frequency operations** (e.g. monitor checks running every 10-60 seconds per monitor)
|
|
211
|
+
- **Service cascades** (Service A → Service B → Service C, each going through process())
|
|
212
|
+
- **Populate chains** (3-5 levels of nested population)
|
|
213
|
+
|
|
214
|
+
**If a project experiences memory issues under high traffic**, check whether `process()` wrapping is the cause. Alternatives that preserve security:
|
|
215
|
+
|
|
216
|
+
| Instead of | Use | Speed | Memory | Security |
|
|
217
|
+
|-----------|-----|-------|--------|----------|
|
|
218
|
+
| `CrudService.create(input)` | `Model.create(input)` — fastest for single docs | 0.19ms | 98 KB | All plugins active |
|
|
219
|
+
| `CrudService.create(input)` (batch N) | `Model.insertMany(docs)` — fastest for N>1 docs | 0.89ms/20 | 196 KB/20 | All plugins active |
|
|
220
|
+
| `CrudService.update(id, input)` | `Model.findByIdAndUpdate(id, input).lean()` | 0.16ms | 64 KB | All plugins active |
|
|
221
|
+
| `CrudService.get(id)` / `getForce(id)` | `Model.findById(id).lean()` — 5x less memory | 0.33ms | 51 KB | Tenant filter active |
|
|
222
|
+
|
|
223
|
+
> **Note:** `new Model().save()` (0.57ms, 867 KB) is 3x slower and 9x more memory than `Model.create()`.
|
|
224
|
+
> `findById().lean()` is 2x slower than hydrated `findById()` but uses 5x less memory — prefer lean in high-frequency paths where memory stability matters more than per-call latency.
|
|
225
|
+
> `Model.create()` internally calls `new Model().save()` but is optimized by Mongoose — it triggers all `pre('save')` hooks (Tenant, Audit, RoleGuard, Password).
|
|
226
|
+
|
|
227
|
+
**NEVER** bypass Mongoose entirely via `collection.*` — see section above. The CheckSecurityInterceptor acts as a safety net on HTTP responses regardless of how data was written.
|
|
228
|
+
|
|
229
|
+
### High-Frequency Path Design Rules
|
|
230
|
+
|
|
231
|
+
These rules apply when building features that execute many times per minute (monitoring, metrics, queue processors):
|
|
232
|
+
|
|
233
|
+
1. **`Model.create(doc)` over `new Model().save()`** for single documents — `create()` is 3x faster (0.19ms vs 0.57ms) and uses 9x less memory (98 KB vs 867 KB). For batch inserts (N>1), use `Model.insertMany(docs)` — a single call with N documents is 2.5x faster than N parallel `save()` calls.
|
|
234
|
+
|
|
235
|
+
2. **`Model.findById().lean()` over `getForce()`** for read-only lookups in high-frequency paths — lean uses 5x less memory (51 KB vs 250 KB) but is 2x slower per call (0.33ms vs 0.16ms). In hot paths, the memory savings outweigh the latency cost because reduced GC pressure improves overall throughput. For low-frequency paths, hydrated `findById()` is faster.
|
|
236
|
+
|
|
237
|
+
3. **Defer complex logic to cron/queue** — high-frequency paths should only write data (checks, metrics). Processing that data (incident creation, notifications, escalation) belongs in low-frequency cron jobs or separate queue processors that run in bounded batches.
|
|
238
|
+
|
|
239
|
+
4. **Avoid service cascades in hot paths** — if Service A calls Service B which calls Service C, each with `process()`, the objects from all three levels live in the heap simultaneously. In hot paths, call Mongoose directly instead of going through other services.
|
|
240
|
+
|
|
241
|
+
5. **WebSocket emits should use lean data** — `emitUpdated()` with `getForce()` triggers a full `process()` pipeline per emit. Use `Model.findById().lean()` instead — WebSocket clients receive JSON, not Mongoose Documents.
|
|
242
|
+
|
|
243
|
+
Details: [`docs/process-performance-optimization.md`](docs/process-performance-optimization.md)
|
|
244
|
+
|
|
170
245
|
## In-Depth Documentation
|
|
171
246
|
|
|
172
247
|
| File | Content |
|
|
173
248
|
|------|---------|
|
|
174
249
|
| [`docs/REQUEST-LIFECYCLE.md`](docs/REQUEST-LIFECYCLE.md) | Complete request lifecycle, security architecture, interceptor chain, decorator reference, CrudService pipeline, Safety Net, diagrams |
|
|
250
|
+
| [`docs/native-driver-security.md`](docs/native-driver-security.md) | Native MongoDB Driver restrictions, secure alternatives, review checklist |
|
|
251
|
+
| [`docs/process-performance-optimization.md`](docs/process-performance-optimization.md) | process() pipeline performance optimizations |
|
package/FRAMEWORK-API.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @lenne.tech/nest-server — Framework API Reference
|
|
2
2
|
|
|
3
|
-
> Auto-generated from source code on 2026-04-
|
|
3
|
+
> Auto-generated from source code on 2026-04-07 (v11.23.1)
|
|
4
4
|
> File: `FRAMEWORK-API.md` — compact, machine-readable API surface for Claude Code
|
|
5
5
|
|
|
6
6
|
## CoreModule.forRoot()
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
- `compression?`: `boolean | compression.CompressionOptions` — Whether to use the compression middleware package to enable gzip compression.
|
|
22
22
|
- `cookies?`: `boolean` — Whether to use cookies for authentication handling
|
|
23
23
|
- `cronJobs?`: `Record<string, string | false | 0 | CronJobConfigWithTimeZone<null, null> | C...` — Cron jobs configuration object with the name of the cron job function as key
|
|
24
|
+
- `debugProcessInput?`: `boolean` (default: `false`) — When true, logs a debug message when prepareInput() changes the input type during process().
|
|
24
25
|
- `email?`: `{ defaultSender?: { email?: string; name?: string; }; mailjet?: MailjetOption...` — SMTP and template configuration for sending emails
|
|
25
26
|
- `env?`: `string` — Environment
|
|
26
27
|
- `errorCode?`: `IErrorCode` — Configuration for the error code module
|
|
@@ -183,7 +184,10 @@ Generic: `CrudService<Model, CreateInput, UpdateInput>`
|
|
|
183
184
|
- `async findOne(filter?: FilterArgs | { filterQuery?: QueryFilter<any>; queryOptions?: QueryOptions; }, serviceOptions?: ServiceOptions)`: `Promise<Model>` — Find one item via filter
|
|
184
185
|
- `async findOneForce(filter?: FilterArgs | { filterQuery?: QueryFilter<any>; queryOptions?: QueryOptions; s..., serviceOptions?: ServiceOptions)`: `Promise<Model>` — Find one item via filter without checks or restrictions
|
|
185
186
|
- `async findOneRaw(filter?: FilterArgs | { filterQuery?: QueryFilter<any>; queryOptions?: QueryOptions; s..., serviceOptions?: ServiceOptions)`: `Promise<Model>` — Find one item via filter without checks, restrictions or preparations
|
|
186
|
-
- `getModel()`: `MongooseModel<Document<Types.ObjectId, any, any, Record<string, any>, {}> & M...` — Get service model to process queries directly
|
|
187
|
+
- `getModel()`: `MongooseModel<Document<Types.ObjectId, any, any, Record<string, any>, {}> & M...` — Get service model to process queries directly.
|
|
188
|
+
- `getNativeCollection(reason: string)`: `Collection<Document>` — Get the native MongoDB Collection, bypassing all Mongoose plugins.
|
|
189
|
+
- `getNativeConnection(reason: string)`: `Connection` — Get the Mongoose Connection (which provides access to the native MongoDB Db and MongoClient).
|
|
190
|
+
- `validateNativeAccessReason(reason: string, method: string)`: `void`
|
|
187
191
|
- `async read(input: string | FilterArgs | { filterQuery?: QueryFilter<any>; queryOptions?: QueryO..., serviceOptions?: ServiceOptions)`: `Promise<Model | Model[]>` — CRUD alias for get or find
|
|
188
192
|
- `async readForce(input: string | FilterArgs | { filterQuery?: QueryFilter<any>; queryOptions?: QueryO..., serviceOptions?: ServiceOptions)`: `Promise<Model | Model[]>` — CRUD alias for getForce or findForce
|
|
189
193
|
- `async readRaw(input: string | FilterArgs | { filterQuery?: QueryFilter<any>; queryOptions?: QueryO..., serviceOptions?: ServiceOptions)`: `Promise<Model | Model[]>` — CRUD alias for getRaw or findRaw
|
|
@@ -13,14 +13,31 @@ const Restricted = (...rolesOrMember) => {
|
|
|
13
13
|
return Reflect.metadata(restrictedMetaKey, rolesOrMember);
|
|
14
14
|
};
|
|
15
15
|
exports.Restricted = Restricted;
|
|
16
|
+
const restrictedMetadataCache = new WeakMap();
|
|
16
17
|
const getRestricted = (object, propertyKey) => {
|
|
17
18
|
if (!object) {
|
|
18
19
|
return null;
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
const cacheTarget = typeof object === 'function' ? object : object.constructor;
|
|
22
|
+
if (!cacheTarget) {
|
|
23
|
+
return propertyKey
|
|
24
|
+
? Reflect.getMetadata(restrictedMetaKey, object, propertyKey)
|
|
25
|
+
: Reflect.getMetadata(restrictedMetaKey, object);
|
|
22
26
|
}
|
|
23
|
-
|
|
27
|
+
let classCache = restrictedMetadataCache.get(cacheTarget);
|
|
28
|
+
if (!classCache) {
|
|
29
|
+
classCache = new Map();
|
|
30
|
+
restrictedMetadataCache.set(cacheTarget, classCache);
|
|
31
|
+
}
|
|
32
|
+
const cacheKey = propertyKey || '__class__';
|
|
33
|
+
if (classCache.has(cacheKey)) {
|
|
34
|
+
return classCache.get(cacheKey);
|
|
35
|
+
}
|
|
36
|
+
const metadata = propertyKey
|
|
37
|
+
? Reflect.getMetadata(restrictedMetaKey, object, propertyKey)
|
|
38
|
+
: Reflect.getMetadata(restrictedMetaKey, object);
|
|
39
|
+
classCache.set(cacheKey, metadata);
|
|
40
|
+
return metadata;
|
|
24
41
|
};
|
|
25
42
|
exports.getRestricted = getRestricted;
|
|
26
43
|
const checkRestricted = (data, user, options = {}, processedObjects = []) => {
|
|
@@ -148,7 +165,7 @@ const checkRestricted = (data, user, options = {}, processedObjects = []) => {
|
|
|
148
165
|
continue;
|
|
149
166
|
}
|
|
150
167
|
const restricted = (0, exports.getRestricted)(data, propertyKey) || [];
|
|
151
|
-
const concatenatedRestrictions = config.mergeRoles ? _.uniq(objectRestrictions.concat(restricted)) : restricted;
|
|
168
|
+
const concatenatedRestrictions = config.mergeRoles && objectRestrictions.length ? _.uniq(objectRestrictions.concat(restricted)) : restricted;
|
|
152
169
|
const valid = validateRestricted(concatenatedRestrictions);
|
|
153
170
|
if (valid) {
|
|
154
171
|
config.isCreatorOfParent =
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restricted.decorator.js","sourceRoot":"","sources":["../../../../src/core/common/decorators/restricted.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AACvD,4BAA0B;AAC1B,4BAA6B;AAG7B,kDAA8C;AAC9C,oDAAgE;AAChE,iFAAqE;AAErE,kFAA2E;AAK3E,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AA4BxC,MAAM,UAAU,GAAG,CAAC,GAAG,aAA6B,EAAsC,EAAE;IACjG,OAAO,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;
|
|
1
|
+
{"version":3,"file":"restricted.decorator.js","sourceRoot":"","sources":["../../../../src/core/common/decorators/restricted.decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -134,6 +134,7 @@ export interface IServerOptions {
|
|
|
134
134
|
compression?: boolean | compression.CompressionOptions;
|
|
135
135
|
cookies?: boolean;
|
|
136
136
|
cronJobs?: Record<string, CronExpression | CronJobConfigWithTimeZone | CronJobConfigWithUtcOffset | Date | Falsy | string>;
|
|
137
|
+
debugProcessInput?: boolean;
|
|
137
138
|
email?: {
|
|
138
139
|
defaultSender?: {
|
|
139
140
|
email?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AggregateOptions, Document, Model as MongooseModel, PipelineStage, Query, QueryFilter, QueryOptions } from 'mongoose';
|
|
1
|
+
import { AggregateOptions, Collection, Connection, Document, Model as MongooseModel, PipelineStage, Query, QueryFilter, QueryOptions } from 'mongoose';
|
|
2
2
|
import { FilterArgs } from '../args/filter.args';
|
|
3
3
|
import { ServiceOptions } from '../interfaces/service-options.interface';
|
|
4
4
|
import { CoreModel } from '../models/core-model.model';
|
|
@@ -90,6 +90,9 @@ export declare abstract class CrudService<Model extends CoreModel = any, CreateI
|
|
|
90
90
|
samples?: number;
|
|
91
91
|
}, serviceOptions?: ServiceOptions): Promise<Model>;
|
|
92
92
|
getModel(): MongooseModel<Document & Model>;
|
|
93
|
+
protected getNativeCollection(reason: string): Collection;
|
|
94
|
+
protected getNativeConnection(reason: string): Connection;
|
|
95
|
+
private validateNativeAccessReason;
|
|
93
96
|
read(id: string, serviceOptions?: ServiceOptions): Promise<Model>;
|
|
94
97
|
read(filter: FilterArgs | {
|
|
95
98
|
filterQuery?: QueryFilter<any>;
|
|
@@ -35,7 +35,11 @@ class CrudService extends module_service_1.ModuleService {
|
|
|
35
35
|
serviceOptions = (0, input_helper_1.prepareServiceOptionsForCreate)(serviceOptions);
|
|
36
36
|
return this.process(async (data) => {
|
|
37
37
|
const currentUserId = serviceOptions?.currentUser?.id;
|
|
38
|
-
return new this.mainDbModel({
|
|
38
|
+
return new this.mainDbModel({
|
|
39
|
+
...data.input,
|
|
40
|
+
createdBy: currentUserId,
|
|
41
|
+
updatedBy: currentUserId,
|
|
42
|
+
}).save();
|
|
39
43
|
}, { input, serviceOptions });
|
|
40
44
|
}
|
|
41
45
|
async createForce(input, serviceOptions = {}) {
|
|
@@ -160,7 +164,7 @@ class CrudService extends module_service_1.ModuleService {
|
|
|
160
164
|
}, { input: filter, outputPath: 'items', serviceOptions });
|
|
161
165
|
}
|
|
162
166
|
async findAndCountForce(filter, serviceOptions = {}) {
|
|
163
|
-
serviceOptions.
|
|
167
|
+
serviceOptions.force = true;
|
|
164
168
|
return this.findAndCount(filter, serviceOptions);
|
|
165
169
|
}
|
|
166
170
|
async findAndCountRaw(filter, serviceOptions = {}) {
|
|
@@ -224,6 +228,24 @@ class CrudService extends module_service_1.ModuleService {
|
|
|
224
228
|
getModel() {
|
|
225
229
|
return this.mainDbModel;
|
|
226
230
|
}
|
|
231
|
+
getNativeCollection(reason) {
|
|
232
|
+
this.validateNativeAccessReason(reason, 'getNativeCollection');
|
|
233
|
+
const modelName = this.mainDbModel?.modelName || 'Unknown';
|
|
234
|
+
common_1.Logger.warn(`[SECURITY] Native collection access: ${reason} (Model: ${modelName})`, this.constructor.name);
|
|
235
|
+
return this.mainDbModel.collection;
|
|
236
|
+
}
|
|
237
|
+
getNativeConnection(reason) {
|
|
238
|
+
this.validateNativeAccessReason(reason, 'getNativeConnection');
|
|
239
|
+
const modelName = this.mainDbModel?.modelName || 'Unknown';
|
|
240
|
+
common_1.Logger.warn(`[SECURITY] Native connection access: ${reason} (Model: ${modelName})`, this.constructor.name);
|
|
241
|
+
return this.mainDbModel.db;
|
|
242
|
+
}
|
|
243
|
+
validateNativeAccessReason(reason, method) {
|
|
244
|
+
const trimmed = reason?.trim();
|
|
245
|
+
if (!trimmed || trimmed.length < 20) {
|
|
246
|
+
throw new Error(`${method} requires a meaningful reason (min 20 chars) — explain why native access is needed`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
227
249
|
async read(input, serviceOptions) {
|
|
228
250
|
if (typeof input === 'string') {
|
|
229
251
|
return this.get(input, serviceOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/crud.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/crud.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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"}
|