@nestjs/core 9.3.6 → 9.3.8

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.
@@ -17,6 +17,7 @@ export declare class Module {
17
17
  private readonly _injectables;
18
18
  private readonly _middlewares;
19
19
  private readonly _controllers;
20
+ private readonly _entryProviderKeys;
20
21
  private readonly _exports;
21
22
  private _distance;
22
23
  private _initOnPreview;
@@ -48,6 +49,7 @@ export declare class Module {
48
49
  get routes(): Map<InstanceToken, InstanceWrapper<Controller>>;
49
50
  get injectables(): Map<InstanceToken, InstanceWrapper<Injectable>>;
50
51
  get controllers(): Map<InstanceToken, InstanceWrapper<Controller>>;
52
+ get entryProviders(): Array<InstanceWrapper<Injectable>>;
51
53
  get exports(): Set<InstanceToken>;
52
54
  get instance(): NestModule;
53
55
  get metatype(): Type<any>;
@@ -90,5 +92,6 @@ export declare class Module {
90
92
  InstanceWrapper<Injectable>
91
93
  ]>;
92
94
  createModuleReferenceType(): Type<ModuleRef>;
95
+ private isEntryProvider;
93
96
  private generateUuid;
94
97
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Module = void 0;
4
+ const constants_1 = require("@nestjs/common/constants");
4
5
  const random_string_generator_util_1 = require("@nestjs/common/utils/random-string-generator.util");
5
6
  const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
6
7
  const iterare_1 = require("iterare");
@@ -10,7 +11,7 @@ const context_id_factory_1 = require("../helpers/context-id-factory");
10
11
  const get_class_scope_1 = require("../helpers/get-class-scope");
11
12
  const is_durable_1 = require("../helpers/is-durable");
12
13
  const uuid_factory_1 = require("../inspector/uuid-factory");
13
- const constants_1 = require("./constants");
14
+ const constants_2 = require("./constants");
14
15
  const instance_wrapper_1 = require("./instance-wrapper");
15
16
  const module_ref_1 = require("./module-ref");
16
17
  class Module {
@@ -22,6 +23,7 @@ class Module {
22
23
  this._injectables = new Map();
23
24
  this._middlewares = new Map();
24
25
  this._controllers = new Map();
26
+ this._entryProviderKeys = new Set();
25
27
  this._exports = new Set();
26
28
  this._distance = 0;
27
29
  this._initOnPreview = false;
@@ -86,6 +88,9 @@ class Module {
86
88
  get controllers() {
87
89
  return this._controllers;
88
90
  }
91
+ get entryProviders() {
92
+ return Array.from(this._entryProviderKeys).map(token => this.providers.get(token));
93
+ }
89
94
  get exports() {
90
95
  return this._exports;
91
96
  }
@@ -142,7 +147,7 @@ class Module {
142
147
  }
143
148
  addInjectable(injectable, enhancerSubtype, host) {
144
149
  if (this.isCustomProvider(injectable)) {
145
- return this.addCustomProvider(injectable, this._injectables);
150
+ return this.addCustomProvider(injectable, this._injectables, enhancerSubtype);
146
151
  }
147
152
  let instanceWrapper = this.injectables.get(injectable);
148
153
  if (!instanceWrapper) {
@@ -167,6 +172,9 @@ class Module {
167
172
  }
168
173
  addProvider(provider, enhancerSubtype) {
169
174
  if (this.isCustomProvider(provider)) {
175
+ if (this.isEntryProvider(provider.provide)) {
176
+ this._entryProviderKeys.add(provider.provide);
177
+ }
170
178
  return this.addCustomProvider(provider, this._providers, enhancerSubtype);
171
179
  }
172
180
  this._providers.set(provider, new instance_wrapper_1.InstanceWrapper({
@@ -179,6 +187,9 @@ class Module {
179
187
  durable: (0, is_durable_1.isDurable)(provider),
180
188
  host: this,
181
189
  }));
190
+ if (this.isEntryProvider(provider)) {
191
+ this._entryProviderKeys.add(provider);
192
+ }
182
193
  return provider;
183
194
  }
184
195
  isCustomProvider(provider) {
@@ -223,8 +234,9 @@ class Module {
223
234
  if ((0, shared_utils_1.isUndefined)(durable)) {
224
235
  durable = (0, is_durable_1.isDurable)(useClass);
225
236
  }
226
- collection.set(provider.provide, new instance_wrapper_1.InstanceWrapper({
227
- token: provider.provide,
237
+ const token = provider.provide;
238
+ collection.set(token, new instance_wrapper_1.InstanceWrapper({
239
+ token,
228
240
  name: (useClass === null || useClass === void 0 ? void 0 : useClass.name) || useClass,
229
241
  metatype: useClass,
230
242
  instance: null,
@@ -328,7 +340,7 @@ class Module {
328
340
  this.assignControllerUniqueId(controller);
329
341
  }
330
342
  assignControllerUniqueId(controller) {
331
- Object.defineProperty(controller, constants_1.CONTROLLER_ID_KEY, {
343
+ Object.defineProperty(controller, constants_2.CONTROLLER_ID_KEY, {
332
344
  enumerable: false,
333
345
  writable: false,
334
346
  configurable: true,
@@ -404,6 +416,11 @@ class Module {
404
416
  }
405
417
  };
406
418
  }
419
+ isEntryProvider(metatype) {
420
+ return typeof metatype === 'function'
421
+ ? !!Reflect.getMetadata(constants_1.ENTRY_PROVIDER_WATERMARK, metatype)
422
+ : false;
423
+ }
407
424
  generateUuid() {
408
425
  var _a, _b, _c;
409
426
  const prefix = 'M_';
@@ -3,11 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DeterministicUuidRegistry = void 0;
4
4
  class DeterministicUuidRegistry {
5
5
  static get(str, inc = 0) {
6
- const key = inc ? `${str}_${inc}` : `${str}`;
7
- if (this.registry.has(key)) {
6
+ const id = inc ? this.hashCode(`${str}_${inc}`) : this.hashCode(str);
7
+ if (this.registry.has(id)) {
8
8
  return this.get(str, inc + 1);
9
9
  }
10
- const id = this.hashCode(key);
11
10
  this.registry.set(id, true);
12
11
  return id;
13
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestjs/core",
3
- "version": "9.3.6",
3
+ "version": "9.3.8",
4
4
  "description": "Nest - modern, fast, powerful node.js web framework (@core)",
5
5
  "author": "Kamil Mysliwiec",
6
6
  "license": "MIT",
@@ -35,7 +35,7 @@
35
35
  "uid": "2.0.1"
36
36
  },
37
37
  "devDependencies": {
38
- "@nestjs/common": "9.3.6"
38
+ "@nestjs/common": "9.3.8"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "@nestjs/common": "^9.0.0",
package/scanner.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { DynamicModule, ForwardReference, Provider } from '@nestjs/common';
2
2
  import { EnhancerSubtype } from '@nestjs/common/constants';
3
- import { ClassProvider, ExistingProvider, FactoryProvider, ValueProvider, Controller, Injectable, Type } from '@nestjs/common/interfaces';
3
+ import { ClassProvider, Controller, ExistingProvider, FactoryProvider, Injectable, Type, ValueProvider } from '@nestjs/common/interfaces';
4
4
  import { ApplicationConfig } from './application-config';
5
5
  import { NestContainer } from './injector/container';
6
6
  import { InstanceWrapper } from './injector/instance-wrapper';
package/scanner.js CHANGED
@@ -290,10 +290,11 @@ class DependenciesScanner {
290
290
  const modulesContainer = this.container.getModules();
291
291
  const { injectables } = modulesContainer.get(moduleKey);
292
292
  const instanceWrapper = injectables.get(providerKey);
293
- (0, iterare_1.iterate)(modulesContainer.values())
294
- .map(module => module.controllers.values())
293
+ const iterableIterator = modulesContainer.values();
294
+ (0, iterare_1.iterate)(iterableIterator)
295
+ .map(moduleRef => Array.from(moduleRef.controllers.values()).concat(moduleRef.entryProviders))
295
296
  .flatten()
296
- .forEach(controller => controller.addEnhancerMetadata(instanceWrapper));
297
+ .forEach(controllerOrEntryProvider => controllerOrEntryProvider.addEnhancerMetadata(instanceWrapper));
297
298
  });
298
299
  }
299
300
  applyApplicationProviders() {