@lenne.tech/nest-server 11.24.1 → 11.24.3

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.
Files changed (30) hide show
  1. package/.claude/rules/configurable-features.md +1 -0
  2. package/.claude/rules/package-management.md +61 -2
  3. package/CLAUDE.md +77 -0
  4. package/FRAMEWORK-API.md +1 -1
  5. package/dist/core/common/decorators/unified-field.decorator.d.ts +2 -1
  6. package/dist/core/common/decorators/unified-field.decorator.js +60 -13
  7. package/dist/core/common/decorators/unified-field.decorator.js.map +1 -1
  8. package/dist/core/common/helpers/register-enum.helper.d.ts +6 -0
  9. package/dist/core/common/helpers/register-enum.helper.js +23 -1
  10. package/dist/core/common/helpers/register-enum.helper.js.map +1 -1
  11. package/dist/core/common/inputs/combined-filter.input.js +1 -1
  12. package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
  13. package/dist/core/common/inputs/single-filter.input.js +1 -1
  14. package/dist/core/common/inputs/single-filter.input.js.map +1 -1
  15. package/dist/core/common/inputs/sort.input.js +1 -1
  16. package/dist/core/common/inputs/sort.input.js.map +1 -1
  17. package/dist/core/common/interfaces/server-options.interface.d.ts +7 -1
  18. package/dist/core/common/services/email.service.d.ts +2 -2
  19. package/dist/core/common/services/email.service.js +7 -0
  20. package/dist/core/common/services/email.service.js.map +1 -1
  21. package/dist/tsconfig.build.tsbuildinfo +1 -1
  22. package/migration-guides/11.24.2-to-11.24.3.md +255 -0
  23. package/package.json +32 -13
  24. package/src/core/common/decorators/unified-field.decorator.ts +173 -23
  25. package/src/core/common/helpers/register-enum.helper.ts +89 -1
  26. package/src/core/common/inputs/combined-filter.input.ts +1 -1
  27. package/src/core/common/inputs/single-filter.input.ts +1 -1
  28. package/src/core/common/inputs/sort.input.ts +1 -1
  29. package/src/core/common/interfaces/server-options.interface.ts +34 -2
  30. package/src/core/common/services/email.service.ts +17 -3
@@ -215,6 +215,7 @@ This pattern is currently applied to:
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
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 |
218
+ | JSONTransport Production Guard | `email.smtp` with `jsonTransport` | Runtime Guard | Throws `Error` when `email.smtp` has a truthy `jsonTransport` property in `production` or `staging` environments (read from config `env` field). JSONTransport silently discards all outgoing mail — the guard prevents accidental misconfiguration that causes password-reset, 2FA, and verification emails to vanish. Use `{ jsonTransport: true }` only in CI/e2e/local environments |
218
219
 
219
220
  ## Module Override Pattern (via `ICoreModuleOverrides`)
220
221
 
@@ -99,14 +99,73 @@ The `pnpm-lock.yaml` file must always be committed. It provides additional repro
99
99
 
100
100
  ## Overrides
101
101
 
102
- Package overrides are configured in the `pnpm.overrides` section of `package.json`:
102
+ Package overrides are configured in the `pnpm.overrides` section of `package.json` and are typically used to force transitive dependencies to a security-patched version.
103
+
104
+ ### Rule: Override Targets MUST Be Fixed Versions
105
+
106
+ The **target** of an override (the value on the right-hand side) MUST be a fixed version — the **same exact-versioning rule that applies to direct dependencies applies here**. Never use range selectors (`>=`, `^`, `~`, `*`) as override targets.
107
+
108
+ | Allowed | Not Allowed | Reason |
109
+ |---------|-------------|--------|
110
+ | `"lodash": "4.17.23"` | `"lodash": ">=4.17.23"` | `>=` is unbounded — pnpm installs the latest, possibly crossing a major version |
111
+ | `"vite": "7.3.2"` | `"vite": ">=7.3.2"` | Would allow `vite@8.x.y` to be installed |
112
+ | `"@apollo/server": "5.5.0"` | `"@apollo/server": "^5.5.0"` | Defeats the purpose of an override |
113
+
114
+ ### Key Selector Forms
115
+
116
+ The **key** (left-hand side) of an override entry selects which installed versions the override applies to. Both forms are valid:
103
117
 
104
118
  ```json
105
119
  {
106
120
  "pnpm": {
107
121
  "overrides": {
108
- "lodash": "4.17.23"
122
+ // Form 1: Replace ALL versions of a package with a fixed one
123
+ "lodash": "4.17.23",
124
+
125
+ // Form 2: Replace only vulnerable versions with a fixed patched one
126
+ "minimatch@<3.1.4": "3.1.4",
127
+ "path-to-regexp@>=8.0.0 <8.4.0": "8.4.2"
109
128
  }
110
129
  }
111
130
  }
112
131
  ```
132
+
133
+ Form 2 is preferred for security-driven overrides because it leaves non-vulnerable versions untouched, which reduces the blast radius of the override.
134
+
135
+ ### Never Use Unbounded Range Targets
136
+
137
+ **Incident (TurboOps, April 2026):** A security audit added the override `"vite@>=7.0.0 <=7.3.1": ">=7.3.2"` intending to force `vite` onto the 7.3.2 patched version. Because the target `">=7.3.2"` is unbounded on the upper end, pnpm resolved it to the latest matching version — `vite@8.0.8` — silently performing a major version upgrade. This cascaded into broken peer dependencies in `@nuxt/test-utils`, `better-auth` (drizzle-orm peer dropped), and vitest, and caused 13 e2e test regressions in the `server` module.
138
+
139
+ The fix was to change every override target to a fixed version:
140
+
141
+ ```json
142
+ // WRONG — unbounded, allows major jumps
143
+ "vite@>=7.0.0 <=7.3.1": ">=7.3.2"
144
+ "drizzle-orm@<0.45.2": ">=0.45.2"
145
+ "@apollo/server@<5.5.0": ">=5.5.0"
146
+
147
+ // RIGHT — fixed target, no surprise upgrades
148
+ "vite": "7.3.2"
149
+ "drizzle-orm": "0.45.2"
150
+ "@apollo/server": "5.5.0"
151
+ ```
152
+
153
+ ### Safe Override Workflow
154
+
155
+ When adding an override to fix a vulnerability:
156
+
157
+ 1. Identify the exact patched version from the advisory (e.g. `vite >= 7.3.2`)
158
+ 2. Check the latest fixed version **within the same major** (e.g. `7.x.y`) via `pnpm view <pkg> versions`
159
+ 3. Use that specific version as the override target: `"pkg@<7.3.2": "7.3.2"` (or just `"pkg": "7.3.2"`)
160
+ 4. Run `pnpm install && pnpm run build && pnpm test` — verify nothing regresses
161
+ 5. Run `pnpm audit` — verify the vulnerability is gone
162
+ 6. Commit both `package.json` and `pnpm-lock.yaml`
163
+
164
+ ### Document Why Each Override Exists
165
+
166
+ Override entries without context become unmaintainable over time. Add a brief comment-style key or keep a parallel `OVERRIDES.md` documenting for each entry: which CVE/advisory, which package pulls in the vulnerable version, and when the override can be removed. Example:
167
+
168
+ ```json
169
+ // brace-expansion@1 — RegExp DoS (GHSA-v6h2-p8h4-qcjw), pulled in by @nestjs/cli>fork-ts-checker-webpack-plugin>minimatch
170
+ "brace-expansion@<1.1.13": "1.1.13"
171
+ ```
package/CLAUDE.md CHANGED
@@ -36,6 +36,67 @@ The following documents must be kept up to date when making changes that affect
36
36
  - **CLI**: https://github.com/lenneTech/cli (`lt server module <Name>`)
37
37
  - **Package Manager**: pnpm (development only, published to npm registry)
38
38
 
39
+ ### Consumption in downstream projects — npm vs vendor
40
+
41
+ Consumer projects (created via `lt fullstack init` / `lt server create`)
42
+ can consume this framework in one of two modes. As a framework author
43
+ working in THIS repo, you should understand both so your changes are
44
+ compatible with either downstream layout:
45
+
46
+ - **npm mode (classic)** — consumers install `@lenne.tech/nest-server`
47
+ as an npm dependency. They read framework code from
48
+ `node_modules/@lenne.tech/nest-server/` and import via the bare
49
+ specifier `from '@lenne.tech/nest-server'`. This repo's `dist/` is
50
+ what they actually see at runtime.
51
+
52
+ - **vendor mode (pilot)** — consumers copy this repo's `src/core/`
53
+ (plus `src/index.ts`, `src/core.module.ts`, `src/test/`,
54
+ `src/templates/`, `src/types/`, `LICENSE`, `bin/migrate.js`) directly
55
+ into their project at `<api>/src/core/` as first-class project code.
56
+ No npm dependency. Imports use relative paths. Consumers apply a
57
+ **flatten-fix** that moves `src/index.ts` and `src/core.module.ts`
58
+ under `src/core/` and rewrites `./core/…` → `./…`. Update flow is
59
+ via the `lt-dev:nest-server-core-updater` Claude Code agent, which
60
+ clones this repo at a target ref, computes a structured delta
61
+ against the consumer's baseline, and presents a curated review.
62
+
63
+ **Implications for framework authors:**
64
+
65
+ - **Keep `src/core/` self-contained.** Any new import in `src/core/**`
66
+ that points OUTSIDE `src/core/` (e.g. `../server/...`, `../main`)
67
+ breaks vendor consumers, whose `src/server/` is unrelated to this
68
+ repo's. The `src/server/` here is a framework-testing example, not
69
+ a shipping component.
70
+
71
+ - **Keep top-level `src/index.ts` and `src/core.module.ts` consistent**
72
+ with the core directory structure. The flatten-fix strips `./core/`
73
+ from specifiers in these two files, so if you add re-exports there,
74
+ use `export * from './core/common/...'` (not absolute paths).
75
+
76
+ - **Top-level meta files** like `FRAMEWORK-API.md`, `SHOWCASE.md`,
77
+ `CHANGELOG.md`, and `load-tests/` are stripped from vendor consumer
78
+ projects during `convertCloneToVendored`. They're framework-author-
79
+ only content. `migration-guides/` is kept because the updater agent
80
+ reads it at sync time — keep the migration guides readable outside
81
+ of an npm-install context (no `node_modules/…` path references).
82
+
83
+ - **`package.json` devDeps** used at runtime by framework code (e.g.
84
+ `find-file-up` in the config loader) must be listed in the CLI's
85
+ `src/config/vendor-runtime-deps.json` as a runtime helper, otherwise
86
+ vendor consumers miss them at install time. Prefer putting
87
+ runtime-used packages in `dependencies` directly, not `devDependencies`.
88
+
89
+ - **Vendor-mode projects never run `pnpm update @lenne.tech/nest-server`.**
90
+ They use `/lt-dev:backend:update-nest-server-core` instead, which
91
+ does NOT bump a `package.json` entry but rewrites `src/core/**` in
92
+ place. Do not assume version-bump telemetry from npm for vendored
93
+ installs.
94
+
95
+ See the CLI's `convertCloneToVendored()` in
96
+ `lenneTech/cli/src/extensions/server.ts` for the full vendor
97
+ transformation, and the `lt-dev:nest-server-core-updater` agent for
98
+ the update-agent contract.
99
+
39
100
  ## Common Development Commands
40
101
 
41
102
  ```bash
@@ -295,6 +356,22 @@ These rules apply when building features that execute many times per minute (mon
295
356
  Details: [`docs/process-performance-optimization.md`](docs/process-performance-optimization.md)
296
357
  Details: [`docs/subdocument-array-optimization-plan.md`](docs/subdocument-array-optimization-plan.md)
297
358
 
359
+ ## Mongoose Index Placement
360
+
361
+ **Rule:** Single-field indexes live on the property. `Schema.index()` is reserved for compound (multi-field) indexes only.
362
+
363
+ 1. **Single-field indexes** → declare directly on the property via `@Prop({ index: true })` or `@UnifiedField({ mongoose: { index: true } })`. Keeps all property info in one place and visible during code review.
364
+
365
+ 2. **Framework-managed indexes** → do NOT set manually. Example: `tenantId` is automatically indexed by the `mongooseTenantPlugin` (`src/core/common/plugins/mongoose-tenant.plugin.ts` → `schema.index({ tenantId: 1 })`). Adding `index: true` on `tenantId` in a consumer project triggers Mongoose `"Duplicate schema index"` warnings. Any future plugin that auto-indexes a field must be documented here.
366
+
367
+ 3. **Compound (multi-field) indexes** → only these belong in `Schema.index({ field1: 1, field2: 1 })` after `SchemaFactory.createForClass(...)`. This is the only acceptable use of `Schema.index()`.
368
+
369
+ 4. **TTL indexes** → declare inline: `@Prop({ required: true, index: { expireAfterSeconds: 3600 } })`. Do NOT duplicate with a separate `Schema.index()` call — the single-field TTL belongs on the property.
370
+
371
+ 5. **`unique: true` implies an index** → Mongoose auto-creates a unique index for `@Prop({ unique: true })`. Do not additionally declare `Schema.index({ field: 1 }, { unique: true })`.
372
+
373
+ **Why:** Property-local indexes are immediately visible when reviewing a field. Hidden `Schema.index()` calls at the bottom of the file are easy to miss, leading to duplicate definitions and Mongoose warnings when multiple developers touch the same model. When building plugins that auto-index fields, always emit a warning in the plugin's docstring so consumers know not to set the index manually.
374
+
298
375
  ## In-Depth Documentation
299
376
 
300
377
  | File | Content |
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-08 (v11.24.1)
3
+ > Auto-generated from source code on 2026-04-12 (v11.24.3)
4
4
  > File: `FRAMEWORK-API.md` — compact, machine-readable API surface for Claude Code
5
5
 
6
6
  ## CoreModule.forRoot()
@@ -15,11 +15,12 @@ export declare function getUnifiedFieldKeys(metatype: Function): Set<string>;
15
15
  export interface UnifiedFieldOptions {
16
16
  description?: string;
17
17
  exclude?: boolean;
18
- enum?: {
18
+ enum?: EnumAllowedTypes | {
19
19
  enum: EnumAllowedTypes;
20
20
  enumName?: string;
21
21
  options?: ValidationOptions;
22
22
  };
23
+ enumName?: string | null;
23
24
  example?: any;
24
25
  gqlOptions?: FieldOptions;
25
26
  gqlType?: GraphQLScalarType | (new (...args: any[]) => any) | Record<number | string, number | string>;
@@ -57,9 +57,47 @@ function getUnifiedFieldKeys(metatype) {
57
57
  Reflect.defineMetadata(cacheKey, result, metatype);
58
58
  return result;
59
59
  }
60
+ function isEnumOptionsObject(value) {
61
+ if (typeof value !== 'object' || value === null)
62
+ return false;
63
+ if (!Object.prototype.hasOwnProperty.call(value, 'enum'))
64
+ return false;
65
+ const inner = value.enum;
66
+ if (typeof inner !== 'object' || inner === null)
67
+ return false;
68
+ const vals = Object.values(inner);
69
+ return vals.length > 0 && vals.every((v) => typeof v === 'string' || typeof v === 'number');
70
+ }
71
+ function warnIfLikelyMisconfiguredEnumOptions(value, propertyHint) {
72
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
73
+ return;
74
+ const obj = value;
75
+ if (!Object.prototype.hasOwnProperty.call(obj, 'enum') &&
76
+ (Object.prototype.hasOwnProperty.call(obj, 'enumName') || Object.prototype.hasOwnProperty.call(obj, 'options'))) {
77
+ console.warn(`[@UnifiedField] Probable misconfiguration on "${propertyHint}": the enum option has ` +
78
+ `"enumName" or "options" but no "enum" key. Did you mean { enum: MyEnum, enumName: ... }? ` +
79
+ `The object will be treated as the enum itself (shortcut form), which is likely wrong.`);
80
+ }
81
+ }
60
82
  function UnifiedField(opts = {}) {
83
+ const isLongForm = opts.enum ? isEnumOptionsObject(opts.enum) : false;
84
+ const normalizedEnum = opts.enum
85
+ ? isLongForm
86
+ ? opts.enum
87
+ : { enum: opts.enum }
88
+ : undefined;
89
+ const originalEnumOpts = isLongForm ? opts.enum : undefined;
61
90
  return (target, propertyKey) => {
62
91
  const key = String(propertyKey);
92
+ if (opts.enum && !originalEnumOpts) {
93
+ warnIfLikelyMisconfiguredEnumOptions(opts.enum, `${target.constructor?.name || '?'}.${key}`);
94
+ }
95
+ if (originalEnumOpts) {
96
+ console.warn(`[@UnifiedField] Deprecated long-form enum on "${target.constructor?.name || '?'}.${key}": ` +
97
+ `enum: { enum: ... } is deprecated. Use enum: MyEnum` +
98
+ (originalEnumOpts.enumName ? `, enumName: '${originalEnumOpts.enumName}'` : '') +
99
+ ` instead. The long-form will be removed in a future version.`);
100
+ }
63
101
  if (opts.exclude === true) {
64
102
  const excludedKeys = Reflect.getOwnMetadata(exports.EXCLUDED_FIELD_KEYS, target) || [];
65
103
  if (!excludedKeys.includes(key)) {
@@ -144,7 +182,7 @@ function UnifiedField(opts = {}) {
144
182
  swaggerOpts.required = true;
145
183
  }
146
184
  if (baseType) {
147
- if (opts.enum) {
185
+ if (normalizedEnum) {
148
186
  swaggerOpts.type = () => String;
149
187
  }
150
188
  else {
@@ -157,18 +195,20 @@ function UnifiedField(opts = {}) {
157
195
  if (opts.example !== undefined) {
158
196
  swaggerOpts.example = swaggerOpts.example ?? opts.example;
159
197
  }
160
- if (opts.enum && opts.enum.enum) {
161
- swaggerOpts.enum = opts.enum.enum;
162
- if (!('enumName' in opts.enum)) {
163
- const autoDetectedName = getEnumName(opts.enum.enum);
198
+ if (normalizedEnum && normalizedEnum.enum) {
199
+ swaggerOpts.enum = normalizedEnum.enum;
200
+ if ('enumName' in opts && opts.enumName !== undefined) {
201
+ swaggerOpts.enumName = opts.enumName ?? undefined;
202
+ }
203
+ else if (originalEnumOpts && 'enumName' in originalEnumOpts) {
204
+ swaggerOpts.enumName = originalEnumOpts.enumName;
205
+ }
206
+ else {
207
+ const autoDetectedName = getEnumName(normalizedEnum.enum);
164
208
  if (autoDetectedName) {
165
209
  swaggerOpts.enumName = autoDetectedName;
166
210
  }
167
211
  }
168
- else {
169
- swaggerOpts.enumName = opts.enum.enumName;
170
- }
171
- (0, class_validator_1.IsEnum)(opts.enum.enum, opts.enum.options)(target, propertyKey);
172
212
  }
173
213
  if (isArrayField) {
174
214
  swaggerOpts.isArray = true;
@@ -179,12 +219,19 @@ function UnifiedField(opts = {}) {
179
219
  swaggerOpts.isArray = false;
180
220
  valOpts.each = false;
181
221
  }
222
+ if (normalizedEnum && normalizedEnum.enum && !opts.isAny && !opts.validator) {
223
+ const enumValOpts = { ...normalizedEnum.options };
224
+ if (isArrayField && enumValOpts.each === undefined) {
225
+ enumValOpts.each = true;
226
+ }
227
+ (0, class_validator_1.IsEnum)(normalizedEnum.enum, enumValOpts)(target, propertyKey);
228
+ }
182
229
  const gqlTypeFn = isArrayField
183
230
  ? () => {
184
- const resolved = opts.enum?.enum || opts.gqlType || resolvedTypeFn();
231
+ const resolved = normalizedEnum?.enum || opts.gqlType || resolvedTypeFn();
185
232
  return [Array.isArray(resolved) && resolved.length === 1 ? resolved[0] : resolved];
186
233
  }
187
- : () => opts.enum?.enum || opts.gqlType || resolvedTypeFn();
234
+ : () => normalizedEnum?.enum || opts.gqlType || resolvedTypeFn();
188
235
  (0, graphql_1.Field)(gqlTypeFn, gqlOpts)(target, propertyKey);
189
236
  (0, swagger_1.ApiProperty)(swaggerOpts)(target, propertyKey);
190
237
  if (opts.validateIf) {
@@ -193,7 +240,7 @@ function UnifiedField(opts = {}) {
193
240
  if (opts.validator) {
194
241
  opts.validator(valOpts).forEach((d) => d(target, propertyKey));
195
242
  }
196
- else if (!opts.isAny) {
243
+ else if (!opts.isAny && !normalizedEnum) {
197
244
  const validator = getBuiltInValidator(baseType, valOpts, isArrayField, target);
198
245
  if (validator) {
199
246
  validator(target, propertyKey);
@@ -203,7 +250,7 @@ function UnifiedField(opts = {}) {
203
250
  if (baseType === Date) {
204
251
  (0, class_transformer_1.Type)(() => Date)(target, propertyKey);
205
252
  }
206
- else if (!isPrimitive(baseType) && !opts.enum && !isGraphQLScalar(baseType)) {
253
+ else if (!isPrimitive(baseType) && !normalizedEnum && !isGraphQLScalar(baseType)) {
207
254
  (0, class_transformer_1.Type)(() => baseType)(target, propertyKey);
208
255
  (0, class_validator_1.ValidateNested)({ each: isArrayField })(target, propertyKey);
209
256
  const className = target.constructor.name;
@@ -1 +1 @@
1
- {"version":3,"file":"unified-field.decorator.js","sourceRoot":"","sources":["../../../../src/core/common/decorators/unified-field.decorator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unified-field.decorator.js","sourceRoot":"","sources":["../../../../src/core/common/decorators/unified-field.decorator.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export declare const graphqlEnumRegistry: WeakSet<object>;
1
2
  export interface RegisterEnumOptions<T extends object = any> {
2
3
  description?: string;
3
4
  graphql?: boolean;
@@ -9,3 +10,8 @@ export interface RegisterEnumOptions<T extends object = any> {
9
10
  }>>;
10
11
  }
11
12
  export declare function registerEnum<T extends object = any>(enumRef: T, options: RegisterEnumOptions<T>): void;
13
+ export interface RegisterEnumsOptions {
14
+ graphql?: boolean;
15
+ swagger?: boolean;
16
+ }
17
+ export declare function registerEnums(namespace: Record<string, any>, options?: RegisterEnumsOptions): void;
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.graphqlEnumRegistry = void 0;
3
4
  exports.registerEnum = registerEnum;
5
+ exports.registerEnums = registerEnums;
4
6
  const graphql_1 = require("@nestjs/graphql");
5
7
  const unified_field_decorator_1 = require("../decorators/unified-field.decorator");
8
+ exports.graphqlEnumRegistry = new WeakSet();
6
9
  function registerEnum(enumRef, options) {
7
10
  const { description, graphql = true, name, swagger = true, valuesMap } = options;
8
11
  if (!name) {
@@ -11,12 +14,31 @@ function registerEnum(enumRef, options) {
11
14
  if (swagger) {
12
15
  unified_field_decorator_1.enumNameRegistry.set(enumRef, name);
13
16
  }
14
- if (graphql) {
17
+ if (graphql && !exports.graphqlEnumRegistry.has(enumRef)) {
15
18
  (0, graphql_1.registerEnumType)(enumRef, {
16
19
  description,
17
20
  name,
18
21
  valuesMap,
19
22
  });
23
+ exports.graphqlEnumRegistry.add(enumRef);
24
+ }
25
+ }
26
+ function registerEnums(namespace, options) {
27
+ const { graphql = true, swagger = true } = options ?? {};
28
+ for (const [name, value] of Object.entries(namespace)) {
29
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
30
+ continue;
31
+ }
32
+ const alreadySwagger = !swagger || unified_field_decorator_1.enumNameRegistry.has(value);
33
+ const alreadyGraphql = !graphql || exports.graphqlEnumRegistry.has(value);
34
+ if (alreadySwagger && alreadyGraphql) {
35
+ continue;
36
+ }
37
+ const vals = Object.values(value);
38
+ if (vals.length === 0 || !vals.every((v) => typeof v === 'string' || typeof v === 'number')) {
39
+ continue;
40
+ }
41
+ registerEnum(value, { graphql, name, swagger });
20
42
  }
21
43
  }
22
44
  //# sourceMappingURL=register-enum.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-enum.helper.js","sourceRoot":"","sources":["../../../../src/core/common/helpers/register-enum.helper.ts"],"names":[],"mappings":";;AAwEA,oCAoBC;AA5FD,6CAAmD;AAEnD,mFAAyE;AAsEzE,SAAgB,YAAY,CAAyB,OAAU,EAAE,OAA+B;IAC9F,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAEjF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAGD,IAAI,OAAO,EAAE,CAAC;QACZ,0CAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAGD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAA,0BAAgB,EAAC,OAAO,EAAE;YACxB,WAAW;YACX,IAAI;YACJ,SAAS;SACV,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"register-enum.helper.js","sourceRoot":"","sources":["../../../../src/core/common/helpers/register-enum.helper.ts"],"names":[],"mappings":";;;AAoFA,oCAqBC;AAmDD,sCAwBC;AApLD,6CAAmD;AAEnD,mFAAyE;AAY5D,QAAA,mBAAmB,GAAG,IAAI,OAAO,EAAU,CAAC;AAsEzD,SAAgB,YAAY,CAAyB,OAAU,EAAE,OAA+B;IAC9F,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAEjF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAGD,IAAI,OAAO,EAAE,CAAC;QACZ,0CAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAGD,IAAI,OAAO,IAAI,CAAC,2BAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,IAAA,0BAAgB,EAAC,OAAO,EAAE;YACxB,WAAW;YACX,IAAI;YACJ,SAAS;SACV,CAAC,CAAC;QACH,2BAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAmDD,SAAgB,aAAa,CAAC,SAA8B,EAAE,OAA8B;IAC1F,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEzD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAEtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAGD,MAAM,cAAc,GAAG,CAAC,OAAO,IAAI,0CAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,CAAC,OAAO,IAAI,2BAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,cAAc,IAAI,cAAc,EAAE,CAAC;YACrC,SAAS;QACX,CAAC;QAGD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC5F,SAAS;QACX,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
@@ -32,7 +32,7 @@ exports.CombinedFilterInput = CombinedFilterInput;
32
32
  __decorate([
33
33
  (0, unified_field_decorator_1.UnifiedField)({
34
34
  description: 'Logical Operator to combine filters',
35
- enum: { enum: logical_operator_enum_1.LogicalOperatorEnum },
35
+ enum: logical_operator_enum_1.LogicalOperatorEnum,
36
36
  roles: role_enum_1.RoleEnum.S_EVERYONE,
37
37
  }),
38
38
  __metadata("design:type", String)
@@ -1 +1 @@
1
- {"version":3,"file":"combined-filter.input.js","sourceRoot":"","sources":["../../../../src/core/common/inputs/combined-filter.input.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAE5C,6EAAgE;AAChE,mFAAqE;AACrE,0EAAqE;AACrE,kDAA8C;AAC9C,0DAA+C;AAC/C,yDAA+C;AAC/C,iDAA6C;AAMtC,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,4BAAS;IAShD,eAAe,GAAwB,SAAS,CAAC;IAWjD,OAAO,GAAkB,SAAS,CAAC;IAS1B,GAAG,CACV,IAAyC,EACzC,UAII,EAAE;QAEN,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAA,mBAAI,EAAC,IAAI,CAAC,OAAO,EAAE,0BAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA1CY,kDAAmB;AAS9B;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,EAAE,IAAI,EAAE,2CAAmB,EAAE;QACnC,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;4DAC+C;AAWjD;IANC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,yCAAyC;QACtD,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;QAC1B,IAAI,EAAE,GAAG,EAAE,CAAC,0BAAW;KACxB,CAAC;;oDACiC;8BApBxB,mBAAmB;IAJ/B,IAAA,mBAAS,EAAC;QACT,WAAW,EAAE,sDAAsD;KACpE,CAAC;IACD,IAAA,iCAAU,EAAC,oBAAQ,CAAC,UAAU,CAAC;GACnB,mBAAmB,CA0C/B"}
1
+ {"version":3,"file":"combined-filter.input.js","sourceRoot":"","sources":["../../../../src/core/common/inputs/combined-filter.input.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAE5C,6EAAgE;AAChE,mFAAqE;AACrE,0EAAqE;AACrE,kDAA8C;AAC9C,0DAA+C;AAC/C,yDAA+C;AAC/C,iDAA6C;AAMtC,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,4BAAS;IAShD,eAAe,GAAwB,SAAS,CAAC;IAWjD,OAAO,GAAkB,SAAS,CAAC;IAS1B,GAAG,CACV,IAAyC,EACzC,UAII,EAAE;QAEN,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAA,mBAAI,EAAC,IAAI,CAAC,OAAO,EAAE,0BAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA1CY,kDAAmB;AAS9B;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,2CAAmB;QACzB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;4DAC+C;AAWjD;IANC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,yCAAyC;QACtD,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;QAC1B,IAAI,EAAE,GAAG,EAAE,CAAC,0BAAW;KACxB,CAAC;;oDACiC;8BApBxB,mBAAmB;IAJ/B,IAAA,mBAAS,EAAC;QACT,WAAW,EAAE,sDAAsD;KACpE,CAAC;IACD,IAAA,iCAAU,EAAC,oBAAQ,CAAC,UAAU,CAAC;GACnB,mBAAmB,CA0C/B"}
@@ -61,7 +61,7 @@ __decorate([
61
61
  __decorate([
62
62
  (0, unified_field_decorator_1.UnifiedField)({
63
63
  description: '[Comparison operator](https://docs.mongodb.com/manual/reference/operator/query-comparison/)',
64
- enum: { enum: comparison_operator_enum_1.ComparisonOperatorEnum },
64
+ enum: comparison_operator_enum_1.ComparisonOperatorEnum,
65
65
  roles: role_enum_1.RoleEnum.S_EVERYONE,
66
66
  }),
67
67
  __metadata("design:type", String)
@@ -1 +1 @@
1
- {"version":3,"file":"single-filter.input.js","sourceRoot":"","sources":["../../../../src/core/common/inputs/single-filter.input.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAE5C,6EAAgE;AAChE,mFAAqE;AACrE,gFAA2E;AAC3E,kDAA8C;AAC9C,wDAA8C;AAC9C,yDAA+C;AAOxC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,4BAAS;IAU9C,iBAAiB,GAAa,SAAS,CAAC;IASxC,KAAK,GAAW,SAAS,CAAC;IAU1B,WAAW,GAAa,SAAS,CAAC;IAUlC,GAAG,GAAa,SAAS,CAAC;IAU1B,QAAQ,GAA2B,SAAS,CAAC;IAa7C,OAAO,GAAY,SAAS,CAAC;IAS7B,KAAK,GAAQ,SAAS,CAAC;CACxB,CAAA;AAxEY,8CAAiB;AAU5B;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,2BAA2B;QACxC,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;4DACsC;AASxC;IAJC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,gDAAgD;QAC7D,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;gDACwB;AAU1B;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,4BAA4B;QACzC,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;sDACgC;AAUlC;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,kFAAkF;QAC/F,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;8CACwB;AAU1B;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,6FAA6F;QAC1G,IAAI,EAAE,EAAE,IAAI,EAAE,iDAAsB,EAAE;QACtC,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;mDAC2C;AAa7C;IAPC,IAAA,sCAAY,EAAC;QACZ,WAAW,EACT,+FAA+F;YAC/F,mFAAmF;QACrF,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;kDAC2B;AAS7B;IAPC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,kBAAI;QACb,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;gDACqB;4BAvEZ,iBAAiB;IAF7B,IAAA,mBAAS,EAAC,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;IACnE,IAAA,iCAAU,EAAC,oBAAQ,CAAC,UAAU,CAAC;GACnB,iBAAiB,CAwE7B"}
1
+ {"version":3,"file":"single-filter.input.js","sourceRoot":"","sources":["../../../../src/core/common/inputs/single-filter.input.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAE5C,6EAAgE;AAChE,mFAAqE;AACrE,gFAA2E;AAC3E,kDAA8C;AAC9C,wDAA8C;AAC9C,yDAA+C;AAOxC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,4BAAS;IAU9C,iBAAiB,GAAa,SAAS,CAAC;IASxC,KAAK,GAAW,SAAS,CAAC;IAU1B,WAAW,GAAa,SAAS,CAAC;IAUlC,GAAG,GAAa,SAAS,CAAC;IAU1B,QAAQ,GAA2B,SAAS,CAAC;IAa7C,OAAO,GAAY,SAAS,CAAC;IAS7B,KAAK,GAAQ,SAAS,CAAC;CACxB,CAAA;AAxEY,8CAAiB;AAU5B;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,2BAA2B;QACxC,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;4DACsC;AASxC;IAJC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,gDAAgD;QAC7D,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;gDACwB;AAU1B;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,4BAA4B;QACzC,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;sDACgC;AAUlC;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,kFAAkF;QAC/F,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;8CACwB;AAU1B;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,6FAA6F;QAC1G,IAAI,EAAE,iDAAsB;QAC5B,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;mDAC2C;AAa7C;IAPC,IAAA,sCAAY,EAAC;QACZ,WAAW,EACT,+FAA+F;YAC/F,mFAAmF;QACrF,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;kDAC2B;AAS7B;IAPC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,kBAAI;QACb,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;gDACqB;4BAvEZ,iBAAiB;IAF7B,IAAA,mBAAS,EAAC,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;IACnE,IAAA,iCAAU,EAAC,oBAAQ,CAAC,UAAU,CAAC;GACnB,iBAAiB,CAwE7B"}
@@ -31,7 +31,7 @@ __decorate([
31
31
  __decorate([
32
32
  (0, unified_field_decorator_1.UnifiedField)({
33
33
  description: 'SortInput order of the field',
34
- enum: { enum: sort_order_emum_1.SortOrderEnum },
34
+ enum: sort_order_emum_1.SortOrderEnum,
35
35
  roles: role_enum_1.RoleEnum.S_EVERYONE,
36
36
  }),
37
37
  __metadata("design:type", String)
@@ -1 +1 @@
1
- {"version":3,"file":"sort.input.js","sourceRoot":"","sources":["../../../../src/core/common/inputs/sort.input.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAE5C,6EAAgE;AAChE,mFAAqE;AACrE,kDAA8C;AAC9C,8DAAyD;AACzD,yDAA+C;AAOxC,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,4BAAS;IAQtC,KAAK,GAAW,SAAS,CAAC;IAU1B,KAAK,GAAkB,SAAS,CAAC;CAClC,CAAA;AAnBY,8BAAS;AAQpB;IAJC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,sCAAsC;QACnD,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;wCACwB;AAU1B;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,8BAA8B;QAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,+BAAa,EAAE;QAC7B,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;wCAC+B;oBAlBtB,SAAS;IAFrB,IAAA,mBAAS,EAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;IAC3D,IAAA,iCAAU,EAAC,oBAAQ,CAAC,UAAU,CAAC;GACnB,SAAS,CAmBrB"}
1
+ {"version":3,"file":"sort.input.js","sourceRoot":"","sources":["../../../../src/core/common/inputs/sort.input.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAE5C,6EAAgE;AAChE,mFAAqE;AACrE,kDAA8C;AAC9C,8DAAyD;AACzD,yDAA+C;AAOxC,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,4BAAS;IAQtC,KAAK,GAAW,SAAS,CAAC;IAU1B,KAAK,GAAkB,SAAS,CAAC;CAClC,CAAA;AAnBY,8BAAS;AAQpB;IAJC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,sCAAsC;QACnD,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;wCACwB;AAU1B;IALC,IAAA,sCAAY,EAAC;QACZ,WAAW,EAAE,8BAA8B;QAC3C,IAAI,EAAE,+BAAa;QACnB,KAAK,EAAE,oBAAQ,CAAC,UAAU;KAC3B,CAAC;;wCAC+B;oBAlBtB,SAAS;IAFrB,IAAA,mBAAS,EAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;IAC3D,IAAA,iCAAU,EAAC,oBAAQ,CAAC,UAAU,CAAC;GACnB,SAAS,CAmBrB"}
@@ -10,13 +10,19 @@ import { MongoosePingCheckSettings } from '@nestjs/terminus/dist/health-indicato
10
10
  import { DiskHealthIndicatorOptions } from '@nestjs/terminus/dist/health-indicator/disk/disk-health-options.type';
11
11
  import compression from 'compression';
12
12
  import { CollationOptions } from 'mongodb';
13
+ import type * as JSONTransport from 'nodemailer/lib/json-transport';
14
+ import type * as SendmailTransport from 'nodemailer/lib/sendmail-transport';
15
+ import type * as SESTransport from 'nodemailer/lib/ses-transport';
16
+ import type * as SMTPPool from 'nodemailer/lib/smtp-pool';
13
17
  import * as SMTPTransport from 'nodemailer/lib/smtp-transport';
18
+ import type * as StreamTransport from 'nodemailer/lib/stream-transport';
14
19
  import { Falsy } from '../types/falsy.type';
15
20
  import { IPermissions } from '../../modules/permissions/interfaces/permissions.interface';
16
21
  import { CronJobConfigWithTimeZone } from './cron-job-config-with-time-zone.interface';
17
22
  import { CronJobConfigWithUtcOffset } from './cron-job-config-with-utc-offset.interface';
18
23
  import { MailjetOptions } from './mailjet-options.interface';
19
24
  export type BetterAuthFieldType = 'boolean' | 'date' | 'json' | 'number' | 'number[]' | 'string' | 'string[]';
25
+ export type MailTransportOptions = JSONTransport | JSONTransport.Options | SendmailTransport | SendmailTransport.Options | SESTransport | SESTransport.Options | SMTPPool | SMTPPool.Options | SMTPTransport | SMTPTransport.Options | StreamTransport | StreamTransport.Options | string;
20
26
  export interface IAuth {
21
27
  legacyEndpoints?: IAuthLegacyEndpoints;
22
28
  preventUserEnumeration?: boolean;
@@ -142,7 +148,7 @@ export interface IServerOptions {
142
148
  };
143
149
  mailjet?: MailjetOptions;
144
150
  passwordResetLink?: string;
145
- smtp?: SMTPTransport | SMTPTransport.Options | string;
151
+ smtp?: MailTransportOptions;
146
152
  verificationLink?: string;
147
153
  };
148
154
  env?: string;
@@ -1,6 +1,6 @@
1
- import type SMTPPool = require('nodemailer/lib/smtp-pool');
2
1
  import { OnModuleDestroy } from '@nestjs/common';
3
2
  import { Attachment } from 'nodemailer/lib/mailer';
3
+ import { MailTransportOptions } from '../interfaces/server-options.interface';
4
4
  import { ConfigService } from './config.service';
5
5
  import { TemplateService } from './template.service';
6
6
  export declare class EmailService implements OnModuleDestroy {
@@ -16,7 +16,7 @@ export declare class EmailService implements OnModuleDestroy {
16
16
  htmlTemplate?: string;
17
17
  senderEmail?: string;
18
18
  senderName?: string;
19
- smtp?: SMTPPool | SMTPPool.Options;
19
+ smtp?: MailTransportOptions;
20
20
  templateData?: {
21
21
  [key: string]: any;
22
22
  };
@@ -57,6 +57,13 @@ let EmailService = class EmailService {
57
57
  if (!(0, input_helper_1.isNonEmptyString)(text, input_helper_1.returnFalse)) {
58
58
  (0, input_helper_1.isNonEmptyString)(html);
59
59
  }
60
+ const env = this.configService.getFastButReadOnly('env');
61
+ if (env === 'production' || env === 'staging') {
62
+ if (typeof smtp === 'object' && smtp !== null && !!smtp.jsonTransport) {
63
+ throw new Error('JSONTransport (jsonTransport: true) is not permitted in production/staging environments. ' +
64
+ 'It silently discards all outgoing email. Check email.smtp in your config.');
65
+ }
66
+ }
60
67
  const smtpKey = (0, crypto_1.createHash)('sha256').update(JSON.stringify(smtp)).digest('hex');
61
68
  if (!this.cachedTransporter || this.cachedSmtpConfig !== smtpKey) {
62
69
  this.cachedTransporter = nodemailer.createTransport(smtp);
@@ -1 +1 @@
1
- {"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/email.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/email.service.ts"],"names":[],"mappings":"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"}