@nestjs/core 8.3.0 → 8.4.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/Readme.md CHANGED
@@ -54,7 +54,7 @@ With official support, you can get expert help straight from Nest core team. We
54
54
 
55
55
  ## Support
56
56
 
57
- Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
57
+ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support from the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
58
58
 
59
59
  #### Principal Sponsors
60
60
  <table style="text-align:center;"><tr>
@@ -123,6 +123,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
123
123
  <td align="center" valign="middle"><a href="https://thecasinowizard.com/bonuses/no-deposit-bonuses/" target="_blank"><img src="https://nestjs.com/img/casinowizard-logo.png" width="120" valign="middle" /></a></td></tr><tr>
124
124
  <td align="center" valign="middle"><a href="https://polygon-software.ch/" target="_blank"><img src="https://nestjs.com/img/polygon-logo.svg" width="120" valign="middle" /></a></td>
125
125
  <td align="center" valign="middle"><a href="https://mobilereality.pl/" target="_blank"><img src="https://nestjs.com/img/mobile-reality-logo.png" width="45" valign="middle" /></a></td>
126
+ <td align="center" valign="middle"><a href="https://boringowl.io/" target="_blank"><img src="https://nestjs.com/img/boringowl-logo.svg" width="120" valign="middle" /></a></td>
126
127
  </tr></table>
127
128
 
128
129
  ## Backers
package/adapters/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./http-adapter"), exports);
4
+ tslib_1.__exportStar(require("./http-adapter"), exports);
@@ -10,7 +10,7 @@ const discovery_service_1 = require("./discovery-service");
10
10
  */
11
11
  let DiscoveryModule = class DiscoveryModule {
12
12
  };
13
- DiscoveryModule = (0, tslib_1.__decorate)([
13
+ DiscoveryModule = tslib_1.__decorate([
14
14
  (0, common_1.Module)({
15
15
  providers: [metadata_scanner_1.MetadataScanner, discovery_service_1.DiscoveryService],
16
16
  exports: [metadata_scanner_1.MetadataScanner, discovery_service_1.DiscoveryService],
@@ -32,8 +32,8 @@ let DiscoveryService = class DiscoveryService {
32
32
  return moduleRefs.filter(({ metatype }) => include.some(item => item === metatype));
33
33
  }
34
34
  };
35
- DiscoveryService = (0, tslib_1.__decorate)([
35
+ DiscoveryService = tslib_1.__decorate([
36
36
  (0, common_1.Injectable)(),
37
- (0, tslib_1.__metadata)("design:paramtypes", [modules_container_1.ModulesContainer])
37
+ tslib_1.__metadata("design:paramtypes", [modules_container_1.ModulesContainer])
38
38
  ], DiscoveryService);
39
39
  exports.DiscoveryService = DiscoveryService;
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./discovery-module"), exports);
5
- (0, tslib_1.__exportStar)(require("./discovery-service"), exports);
4
+ tslib_1.__exportStar(require("./discovery-module"), exports);
5
+ tslib_1.__exportStar(require("./discovery-service"), exports);
@@ -7,14 +7,14 @@ const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
7
7
  * @param instance The instance which should get the name from
8
8
  */
9
9
  const getInstanceName = (instance) => {
10
- var _a, _b, _c, _d, _e;
11
- if ((_a = instance) === null || _a === void 0 ? void 0 : _a.forwardRef) {
12
- return (_b = instance.forwardRef()) === null || _b === void 0 ? void 0 : _b.name;
10
+ var _a, _b;
11
+ if (instance === null || instance === void 0 ? void 0 : instance.forwardRef) {
12
+ return (_a = instance.forwardRef()) === null || _a === void 0 ? void 0 : _a.name;
13
13
  }
14
- if ((_c = instance) === null || _c === void 0 ? void 0 : _c.module) {
15
- return (_d = instance.module) === null || _d === void 0 ? void 0 : _d.name;
14
+ if (instance === null || instance === void 0 ? void 0 : instance.module) {
15
+ return (_b = instance.module) === null || _b === void 0 ? void 0 : _b.name;
16
16
  }
17
- return (_e = instance) === null || _e === void 0 ? void 0 : _e.name;
17
+ return instance === null || instance === void 0 ? void 0 : instance.name;
18
18
  };
19
19
  /**
20
20
  * Returns the name of the dependency
@@ -53,9 +53,9 @@ class BaseExceptionFilter {
53
53
  }
54
54
  }
55
55
  BaseExceptionFilter.logger = new common_1.Logger('ExceptionsHandler');
56
- (0, tslib_1.__decorate)([
56
+ tslib_1.__decorate([
57
57
  (0, common_1.Optional)(),
58
58
  (0, common_1.Inject)(),
59
- (0, tslib_1.__metadata)("design:type", http_adapter_host_1.HttpAdapterHost)
59
+ tslib_1.__metadata("design:type", http_adapter_host_1.HttpAdapterHost)
60
60
  ], BaseExceptionFilter.prototype, "httpAdapterHost", void 0);
61
61
  exports.BaseExceptionFilter = BaseExceptionFilter;
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./base-exception-filter"), exports);
4
+ tslib_1.__exportStar(require("./base-exception-filter"), exports);
package/helpers/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./context-id-factory"), exports);
5
- (0, tslib_1.__exportStar)(require("./http-adapter-host"), exports);
4
+ tslib_1.__exportStar(require("./context-id-factory"), exports);
5
+ tslib_1.__exportStar(require("./http-adapter-host"), exports);
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./external-handler-metadata.interface"), exports);
5
- (0, tslib_1.__exportStar)(require("./params-metadata.interface"), exports);
4
+ tslib_1.__exportStar(require("./external-handler-metadata.interface"), exports);
5
+ tslib_1.__exportStar(require("./params-metadata.interface"), exports);
package/hooks/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./on-app-bootstrap.hook"), exports);
5
- (0, tslib_1.__exportStar)(require("./on-app-shutdown.hook"), exports);
6
- (0, tslib_1.__exportStar)(require("./on-module-destroy.hook"), exports);
7
- (0, tslib_1.__exportStar)(require("./on-module-init.hook"), exports);
8
- (0, tslib_1.__exportStar)(require("./before-app-shutdown.hook"), exports);
4
+ tslib_1.__exportStar(require("./on-app-bootstrap.hook"), exports);
5
+ tslib_1.__exportStar(require("./on-app-shutdown.hook"), exports);
6
+ tslib_1.__exportStar(require("./on-module-destroy.hook"), exports);
7
+ tslib_1.__exportStar(require("./on-module-init.hook"), exports);
8
+ tslib_1.__exportStar(require("./before-app-shutdown.hook"), exports);
package/index.js CHANGED
@@ -9,22 +9,22 @@ const tslib_1 = require("tslib");
9
9
  * MIT Licensed
10
10
  */
11
11
  require("reflect-metadata");
12
- (0, tslib_1.__exportStar)(require("./adapters"), exports);
13
- (0, tslib_1.__exportStar)(require("./application-config"), exports);
12
+ tslib_1.__exportStar(require("./adapters"), exports);
13
+ tslib_1.__exportStar(require("./application-config"), exports);
14
14
  var constants_1 = require("./constants");
15
15
  Object.defineProperty(exports, "APP_FILTER", { enumerable: true, get: function () { return constants_1.APP_FILTER; } });
16
16
  Object.defineProperty(exports, "APP_GUARD", { enumerable: true, get: function () { return constants_1.APP_GUARD; } });
17
17
  Object.defineProperty(exports, "APP_INTERCEPTOR", { enumerable: true, get: function () { return constants_1.APP_INTERCEPTOR; } });
18
18
  Object.defineProperty(exports, "APP_PIPE", { enumerable: true, get: function () { return constants_1.APP_PIPE; } });
19
- (0, tslib_1.__exportStar)(require("./discovery"), exports);
20
- (0, tslib_1.__exportStar)(require("./exceptions"), exports);
21
- (0, tslib_1.__exportStar)(require("./helpers"), exports);
22
- (0, tslib_1.__exportStar)(require("./injector"), exports);
23
- (0, tslib_1.__exportStar)(require("./metadata-scanner"), exports);
24
- (0, tslib_1.__exportStar)(require("./middleware"), exports);
25
- (0, tslib_1.__exportStar)(require("./nest-application"), exports);
26
- (0, tslib_1.__exportStar)(require("./nest-application-context"), exports);
19
+ tslib_1.__exportStar(require("./discovery"), exports);
20
+ tslib_1.__exportStar(require("./exceptions"), exports);
21
+ tslib_1.__exportStar(require("./helpers"), exports);
22
+ tslib_1.__exportStar(require("./injector"), exports);
23
+ tslib_1.__exportStar(require("./metadata-scanner"), exports);
24
+ tslib_1.__exportStar(require("./middleware"), exports);
25
+ tslib_1.__exportStar(require("./nest-application"), exports);
26
+ tslib_1.__exportStar(require("./nest-application-context"), exports);
27
27
  var nest_factory_1 = require("./nest-factory");
28
28
  Object.defineProperty(exports, "NestFactory", { enumerable: true, get: function () { return nest_factory_1.NestFactory; } });
29
- (0, tslib_1.__exportStar)(require("./router"), exports);
30
- (0, tslib_1.__exportStar)(require("./services"), exports);
29
+ tslib_1.__exportStar(require("./router"), exports);
30
+ tslib_1.__exportStar(require("./services"), exports);
@@ -16,7 +16,7 @@ class ModuleCompiler {
16
16
  if (!this.isDynamicModule(metatype)) {
17
17
  return { type: metatype };
18
18
  }
19
- const { module: type } = metatype, dynamicMetadata = (0, tslib_1.__rest)(metatype, ["module"]);
19
+ const { module: type } = metatype, dynamicMetadata = tslib_1.__rest(metatype, ["module"]);
20
20
  return { type, dynamicMetadata };
21
21
  }
22
22
  isDynamicModule(module) {
package/injector/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./container"), exports);
5
- (0, tslib_1.__exportStar)(require("./inquirer"), exports);
6
- (0, tslib_1.__exportStar)(require("./lazy-module-loader"), exports);
7
- (0, tslib_1.__exportStar)(require("./module-ref"), exports);
8
- (0, tslib_1.__exportStar)(require("./modules-container"), exports);
4
+ tslib_1.__exportStar(require("./container"), exports);
5
+ tslib_1.__exportStar(require("./inquirer"), exports);
6
+ tslib_1.__exportStar(require("./lazy-module-loader"), exports);
7
+ tslib_1.__exportStar(require("./module-ref"), exports);
8
+ tslib_1.__exportStar(require("./modules-container"), exports);
@@ -1,3 +1,4 @@
1
+ import { InjectionToken } from '@nestjs/common';
1
2
  import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
2
3
  import { Injectable } from '@nestjs/common/interfaces/injectable.interface';
3
4
  import { Type } from '@nestjs/common/interfaces/type.interface';
@@ -6,7 +7,7 @@ import { InstanceToken, Module } from './module';
6
7
  /**
7
8
  * The type of an injectable dependency
8
9
  */
9
- export declare type InjectorDependency = Type<any> | Function | string | symbol;
10
+ export declare type InjectorDependency = InjectionToken;
10
11
  /**
11
12
  * The property-based dependency
12
13
  */
@@ -49,6 +50,8 @@ export declare class Injector {
49
50
  loadProvider(wrapper: InstanceWrapper<Injectable>, moduleRef: Module, contextId?: ContextId, inquirer?: InstanceWrapper): Promise<void>;
50
51
  applyDoneHook<T>(wrapper: InstancePerContext<T>): () => void;
51
52
  resolveConstructorParams<T>(wrapper: InstanceWrapper<T>, moduleRef: Module, inject: InjectorDependency[], callback: (args: unknown[]) => void | Promise<void>, contextId?: ContextId, inquirer?: InstanceWrapper, parentInquirer?: InstanceWrapper): Promise<void>;
53
+ getClassDependencies<T>(wrapper: InstanceWrapper<T>): [InjectorDependency[], number[]];
54
+ getFactoryProviderDependencies<T>(wrapper: InstanceWrapper<T>): [InjectorDependency[], number[]];
52
55
  reflectConstructorParams<T>(type: Type<T>): any[];
53
56
  reflectOptionalParams<T>(type: Type<T>): any[];
54
57
  reflectSelfParams<T>(type: Type<T>): any[];
@@ -89,12 +89,10 @@ class Injector {
89
89
  const deps = await this.loadCtorMetadata(metadata, contextId, inquirer, parentInquirer);
90
90
  return callback(deps);
91
91
  }
92
- const dependencies = (0, shared_utils_1.isNil)(inject)
93
- ? this.reflectConstructorParams(wrapper.metatype)
94
- : inject;
95
- const optionalDependenciesIds = (0, shared_utils_1.isNil)(inject)
96
- ? this.reflectOptionalParams(wrapper.metatype)
97
- : [];
92
+ const isFactoryProvider = !(0, shared_utils_1.isNil)(inject);
93
+ const [dependencies, optionalDependenciesIds] = isFactoryProvider
94
+ ? this.getFactoryProviderDependencies(wrapper)
95
+ : this.getClassDependencies(wrapper);
98
96
  let isResolved = true;
99
97
  const resolveParam = async (param, index) => {
100
98
  try {
@@ -123,6 +121,35 @@ class Injector {
123
121
  const instances = await Promise.all(dependencies.map(resolveParam));
124
122
  isResolved && (await callback(instances));
125
123
  }
124
+ getClassDependencies(wrapper) {
125
+ const ctorRef = wrapper.metatype;
126
+ return [
127
+ this.reflectConstructorParams(ctorRef),
128
+ this.reflectOptionalParams(ctorRef),
129
+ ];
130
+ }
131
+ getFactoryProviderDependencies(wrapper) {
132
+ var _a, _b;
133
+ const optionalDependenciesIds = [];
134
+ const isOptionalFactoryDep = (item) => !(0, shared_utils_1.isUndefined)(item.token) &&
135
+ !(0, shared_utils_1.isUndefined)(item.optional);
136
+ const mapFactoryProviderInjectArray = (item, index) => {
137
+ if (typeof item !== 'object') {
138
+ return item;
139
+ }
140
+ if (isOptionalFactoryDep(item)) {
141
+ if (item.optional) {
142
+ optionalDependenciesIds.push(index);
143
+ }
144
+ return item === null || item === void 0 ? void 0 : item.token;
145
+ }
146
+ return item;
147
+ };
148
+ return [
149
+ (_b = (_a = wrapper.inject) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.call(_a, mapFactoryProviderInjectArray),
150
+ optionalDependenciesIds,
151
+ ];
152
+ }
126
153
  reflectConstructorParams(type) {
127
154
  const paramtypes = Reflect.getMetadata(constants_1.PARAMTYPES_METADATA, type) || [];
128
155
  const selfParams = this.reflectSelfParams(type);
@@ -158,10 +185,11 @@ class Injector {
158
185
  return this.resolveComponentHost(moduleRef, instanceWrapper, contextId, inquirer);
159
186
  }
160
187
  async resolveComponentHost(moduleRef, instanceWrapper, contextId = constants_2.STATIC_CONTEXT, inquirer) {
188
+ var _a;
161
189
  const inquirerId = this.getInquirerId(inquirer);
162
190
  const instanceHost = instanceWrapper.getInstanceByContextId(contextId, inquirerId);
163
191
  if (!instanceHost.isResolved && !instanceWrapper.forwardRef) {
164
- await this.loadProvider(instanceWrapper, moduleRef, contextId, inquirer);
192
+ await this.loadProvider(instanceWrapper, (_a = instanceWrapper.host) !== null && _a !== void 0 ? _a : moduleRef, contextId, inquirer);
165
193
  }
166
194
  else if (!instanceHost.isResolved &&
167
195
  instanceWrapper.forwardRef &&
@@ -184,8 +212,9 @@ class Injector {
184
212
  return instanceWrapper;
185
213
  }
186
214
  async lookupComponent(providers, moduleRef, dependencyContext, wrapper, contextId = constants_2.STATIC_CONTEXT, inquirer, keyOrIndex) {
215
+ const token = wrapper.token || wrapper.name;
187
216
  const { name } = dependencyContext;
188
- if (wrapper && wrapper.name === name) {
217
+ if (wrapper && token === name) {
189
218
  throw new unknown_dependencies_exception_1.UnknownDependenciesException(wrapper.name, dependencyContext, moduleRef);
190
219
  }
191
220
  if (providers.has(name)) {
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./inquirer-constants"), exports);
4
+ tslib_1.__exportStar(require("./inquirer-constants"), exports);
@@ -47,8 +47,7 @@ class InstanceLinksHost {
47
47
  }
48
48
  }
49
49
  getInstanceNameByToken(token) {
50
- var _a;
51
- return (0, shared_utils_1.isFunction)(token) ? (_a = token) === null || _a === void 0 ? void 0 : _a.name : token;
50
+ return (0, shared_utils_1.isFunction)(token) ? token === null || token === void 0 ? void 0 : token.name : token;
52
51
  }
53
52
  }
54
53
  exports.InstanceLinksHost = InstanceLinksHost;
@@ -1,4 +1,5 @@
1
1
  import { Provider, Scope, Type } from '@nestjs/common';
2
+ import { FactoryProvider } from '@nestjs/common/interfaces';
2
3
  import { InstanceToken, Module } from './module';
3
4
  export declare const INSTANCE_METADATA_SYMBOL: unique symbol;
4
5
  export declare const INSTANCE_ID_SYMBOL: unique symbol;
@@ -23,7 +24,7 @@ export declare class InstanceWrapper<T = any> {
23
24
  readonly isAlias: boolean;
24
25
  scope?: Scope;
25
26
  metatype: Type<T> | Function;
26
- inject?: (string | symbol | Function | Type<any>)[];
27
+ inject?: FactoryProvider['inject'];
27
28
  forwardRef?: boolean;
28
29
  private readonly values;
29
30
  private readonly [INSTANCE_METADATA_SYMBOL];
@@ -222,7 +222,7 @@ class InstanceWrapper {
222
222
  return tree.every((item) => item.isDependencyTreeStatic(lookupRegistry));
223
223
  }
224
224
  initialize(metadata) {
225
- const { instance, isResolved } = metadata, wrapperPartial = (0, tslib_1.__rest)(metadata, ["instance", "isResolved"]);
225
+ const { instance, isResolved } = metadata, wrapperPartial = tslib_1.__rest(metadata, ["instance", "isResolved"]);
226
226
  Object.assign(this, wrapperPartial);
227
227
  this.setInstanceByContextId(constants_1.STATIC_CONTEXT, {
228
228
  instance,
@@ -20,7 +20,7 @@ let InternalCoreModule = InternalCoreModule_1 = class InternalCoreModule {
20
20
  };
21
21
  }
22
22
  };
23
- InternalCoreModule = InternalCoreModule_1 = (0, tslib_1.__decorate)([
23
+ InternalCoreModule = InternalCoreModule_1 = tslib_1.__decorate([
24
24
  (0, common_1.Global)(),
25
25
  (0, common_1.Module)({
26
26
  providers: [
@@ -1,9 +1,13 @@
1
- import { Abstract, ClassProvider, Controller, DynamicModule, ExistingProvider, FactoryProvider, Injectable, NestModule, Provider, ValueProvider } from '@nestjs/common/interfaces';
1
+ import { ClassProvider, Controller, DynamicModule, ExistingProvider, FactoryProvider, Injectable, InjectionToken, NestModule, Provider, ValueProvider } from '@nestjs/common/interfaces';
2
2
  import { Type } from '@nestjs/common/interfaces/type.interface';
3
3
  import { NestContainer } from './container';
4
4
  import { InstanceWrapper } from './instance-wrapper';
5
5
  import { ModuleRef } from './module-ref';
6
- export declare type InstanceToken = string | symbol | Type<any> | Abstract<any> | Function;
6
+ /**
7
+ * @note
8
+ * Left for backward compatibility
9
+ */
10
+ export declare type InstanceToken = InjectionToken;
7
11
  export declare class Module {
8
12
  private readonly _metatype;
9
13
  private readonly container;
@@ -46,10 +50,10 @@ export declare class Module {
46
50
  addModuleRef(): void;
47
51
  addModuleAsProvider(): void;
48
52
  addApplicationConfig(): void;
49
- addInjectable<T extends Injectable>(injectable: Provider, host?: Type<T>): string | symbol | Function | Type<any> | Abstract<any>;
50
- addProvider(provider: Provider): string | symbol | Function;
53
+ addInjectable<T extends Injectable>(injectable: Provider, host?: Type<T>): InjectionToken;
54
+ addProvider(provider: Provider): InjectionToken;
51
55
  isCustomProvider(provider: Provider): provider is ClassProvider | FactoryProvider | ValueProvider | ExistingProvider;
52
- addCustomProvider(provider: ClassProvider | FactoryProvider | ValueProvider | ExistingProvider, collection: Map<Function | string | symbol, any>): string | symbol | Function | Type<any> | Abstract<any>;
56
+ addCustomProvider(provider: ClassProvider | FactoryProvider | ValueProvider | ExistingProvider, collection: Map<Function | string | symbol, any>): InjectionToken;
53
57
  isCustomClass(provider: any): provider is ClassProvider;
54
58
  isCustomValue(provider: any): provider is ValueProvider;
55
59
  isCustomFactory(provider: any): provider is FactoryProvider;
@@ -59,9 +63,9 @@ export declare class Module {
59
63
  addCustomValue(provider: ValueProvider, collection: Map<Function | string | symbol, InstanceWrapper>): void;
60
64
  addCustomFactory(provider: FactoryProvider, collection: Map<Function | string | symbol, InstanceWrapper>): void;
61
65
  addCustomUseExisting(provider: ExistingProvider, collection: Map<Function | string | symbol, InstanceWrapper>): void;
62
- addExportedProvider(provider: Provider | string | symbol | DynamicModule): Set<InstanceToken>;
63
- addCustomExportedProvider(provider: FactoryProvider | ValueProvider | ClassProvider | ExistingProvider): Set<InstanceToken>;
64
- validateExportedProvider(token: InstanceToken): InstanceToken;
66
+ addExportedProvider(provider: Provider | string | symbol | DynamicModule): Set<InjectionToken>;
67
+ addCustomExportedProvider(provider: FactoryProvider | ValueProvider | ClassProvider | ExistingProvider): Set<InjectionToken>;
68
+ validateExportedProvider(token: InstanceToken): InjectionToken;
65
69
  addController(controller: Type<Controller>): void;
66
70
  assignControllerUniqueId(controller: Type<Controller>): void;
67
71
  addRelatedModule(module: Module): void;
@@ -210,11 +210,10 @@ class Module {
210
210
  }));
211
211
  }
212
212
  addCustomValue(provider, collection) {
213
- var _a;
214
213
  const { useValue: value, provide: providerToken } = provider;
215
214
  collection.set(providerToken, new instance_wrapper_1.InstanceWrapper({
216
215
  token: providerToken,
217
- name: ((_a = providerToken) === null || _a === void 0 ? void 0 : _a.name) || providerToken,
216
+ name: (providerToken === null || providerToken === void 0 ? void 0 : providerToken.name) || providerToken,
218
217
  metatype: null,
219
218
  instance: value,
220
219
  isResolved: true,
@@ -223,11 +222,10 @@ class Module {
223
222
  }));
224
223
  }
225
224
  addCustomFactory(provider, collection) {
226
- var _a;
227
225
  const { useFactory: factory, inject, scope, provide: providerToken, } = provider;
228
226
  collection.set(providerToken, new instance_wrapper_1.InstanceWrapper({
229
227
  token: providerToken,
230
- name: ((_a = providerToken) === null || _a === void 0 ? void 0 : _a.name) || providerToken,
228
+ name: (providerToken === null || providerToken === void 0 ? void 0 : providerToken.name) || providerToken,
231
229
  metatype: factory,
232
230
  instance: null,
233
231
  isResolved: false,
@@ -237,11 +235,10 @@ class Module {
237
235
  }));
238
236
  }
239
237
  addCustomUseExisting(provider, collection) {
240
- var _a;
241
238
  const { useExisting, provide: providerToken } = provider;
242
239
  collection.set(providerToken, new instance_wrapper_1.InstanceWrapper({
243
240
  token: providerToken,
244
- name: ((_a = providerToken) === null || _a === void 0 ? void 0 : _a.name) || providerToken,
241
+ name: (providerToken === null || providerToken === void 0 ? void 0 : providerToken.name) || providerToken,
245
242
  metatype: (instance => instance),
246
243
  instance: null,
247
244
  isResolved: false,
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./builder"), exports);
4
+ tslib_1.__exportStar(require("./builder"), exports);
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MiddlewareModule = void 0;
4
4
  const request_method_enum_1 = require("@nestjs/common/enums/request-method.enum");
5
5
  const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
6
- const utils_1 = require("../router/utils");
7
6
  const invalid_middleware_exception_1 = require("../errors/exceptions/invalid-middleware.exception");
8
7
  const runtime_exception_1 = require("../errors/exceptions/runtime.exception");
9
8
  const context_id_factory_1 = require("../helpers/context-id-factory");
@@ -12,6 +11,7 @@ const constants_1 = require("../injector/constants");
12
11
  const request_constants_1 = require("../router/request/request-constants");
13
12
  const router_exception_filters_1 = require("../router/router-exception-filters");
14
13
  const router_proxy_1 = require("../router/router-proxy");
14
+ const utils_1 = require("../router/utils");
15
15
  const builder_1 = require("./builder");
16
16
  const resolver_1 = require("./resolver");
17
17
  const routes_mapper_1 = require("./routes-mapper");
@@ -134,8 +134,9 @@ class MiddlewareModule {
134
134
  async registerHandler(applicationRef, method, path, proxy) {
135
135
  const prefix = this.config.getGlobalPrefix();
136
136
  const excludedRoutes = this.config.getGlobalPrefixOptions().exclude;
137
- if (Array.isArray(excludedRoutes) &&
138
- (0, utils_1.isRouteExcluded)(excludedRoutes, path, method)) {
137
+ if ((Array.isArray(excludedRoutes) &&
138
+ (0, utils_1.isRouteExcluded)(excludedRoutes, path, method)) ||
139
+ ['*', '/*', '(.*)', '/(.*)'].includes(path)) {
139
140
  path = (0, shared_utils_1.addLeadingSlash)(path);
140
141
  }
141
142
  else {
@@ -138,7 +138,6 @@ class NestApplicationContext {
138
138
  */
139
139
  listenToShutdownSignals(signals) {
140
140
  const cleanup = async (signal) => {
141
- var _a;
142
141
  try {
143
142
  signals.forEach(sig => process.removeListener(sig, cleanup));
144
143
  await this.callDestroyHook();
@@ -148,7 +147,7 @@ class NestApplicationContext {
148
147
  process.kill(process.pid, signal);
149
148
  }
150
149
  catch (err) {
151
- common_1.Logger.error(constants_1.MESSAGES.ERROR_DURING_SHUTDOWN, (_a = err) === null || _a === void 0 ? void 0 : _a.stack, NestApplicationContext.name);
150
+ common_1.Logger.error(constants_1.MESSAGES.ERROR_DURING_SHUTDOWN, err === null || err === void 0 ? void 0 : err.stack, NestApplicationContext.name);
152
151
  process.exit(1);
153
152
  }
154
153
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestjs/core",
3
- "version": "8.3.0",
3
+ "version": "8.4.1",
4
4
  "description": "Nest - modern, fast, powerful node.js web framework (@core)",
5
5
  "author": "Kamil Mysliwiec",
6
6
  "license": "MIT",
@@ -30,13 +30,13 @@
30
30
  "@nuxtjs/opencollective": "0.3.2",
31
31
  "fast-safe-stringify": "2.1.1",
32
32
  "iterare": "1.2.1",
33
- "object-hash": "2.2.0",
33
+ "object-hash": "3.0.0",
34
34
  "path-to-regexp": "3.2.0",
35
35
  "tslib": "2.3.1",
36
36
  "uuid": "8.3.2"
37
37
  },
38
38
  "devDependencies": {
39
- "@nestjs/common": "8.3.0"
39
+ "@nestjs/common": "8.4.1"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "@nestjs/common": "^8.0.0",
package/router/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RouterModule = void 0;
4
4
  const tslib_1 = require("tslib");
5
- (0, tslib_1.__exportStar)(require("./interfaces"), exports);
6
- (0, tslib_1.__exportStar)(require("./request"), exports);
5
+ tslib_1.__exportStar(require("./interfaces"), exports);
6
+ tslib_1.__exportStar(require("./request"), exports);
7
7
  var router_module_1 = require("./router-module");
8
8
  Object.defineProperty(exports, "RouterModule", { enumerable: true, get: function () { return router_module_1.RouterModule; } });
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./routes.interface"), exports);
4
+ tslib_1.__exportStar(require("./routes.interface"), exports);
@@ -178,6 +178,30 @@ class RouterExplorer {
178
178
  if (versioningOptions.type === version_type_enum_1.VersioningType.URI) {
179
179
  return handler(req, res, next);
180
180
  }
181
+ // Custom Extractor Versioning Handler
182
+ if (versioningOptions.type === version_type_enum_1.VersioningType.CUSTOM) {
183
+ const extractedVersion = versioningOptions.extractor(req);
184
+ if (Array.isArray(version)) {
185
+ if (Array.isArray(extractedVersion) &&
186
+ version.filter(extractedVersion.includes).length) {
187
+ return handler(req, res, next);
188
+ }
189
+ else if ((0, shared_utils_1.isString)(extractedVersion) &&
190
+ version.includes(extractedVersion)) {
191
+ return handler(req, res, next);
192
+ }
193
+ }
194
+ else {
195
+ if (Array.isArray(extractedVersion) &&
196
+ extractedVersion.includes(version)) {
197
+ return handler(req, res, next);
198
+ }
199
+ else if ((0, shared_utils_1.isString)(extractedVersion) &&
200
+ version === extractedVersion) {
201
+ return handler(req, res, next);
202
+ }
203
+ }
204
+ }
181
205
  // Media Type (Accept Header) Versioning Handler
182
206
  if (versioningOptions.type === version_type_enum_1.VersioningType.MEDIA_TYPE) {
183
207
  const MEDIA_TYPE_HEADER = 'Accept';
@@ -69,9 +69,9 @@ let RouterModule = RouterModule_1 = class RouterModule {
69
69
  moduleClassSet.add(moduleRef);
70
70
  }
71
71
  };
72
- RouterModule = RouterModule_1 = (0, tslib_1.__decorate)([
72
+ RouterModule = RouterModule_1 = tslib_1.__decorate([
73
73
  (0, common_1.Module)({}),
74
- (0, tslib_1.__param)(1, (0, common_1.Inject)(exports.ROUTES)),
75
- (0, tslib_1.__metadata)("design:paramtypes", [modules_container_1.ModulesContainer, Array])
74
+ tslib_1.__param(1, (0, common_1.Inject)(exports.ROUTES)),
75
+ tslib_1.__metadata("design:paramtypes", [modules_container_1.ModulesContainer, Array])
76
76
  ], RouterModule);
77
77
  exports.RouterModule = RouterModule;
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./exclude-route.util"), exports);
5
- (0, tslib_1.__exportStar)(require("./flatten-route-paths.util"), exports);
4
+ tslib_1.__exportStar(require("./exclude-route.util"), exports);
5
+ tslib_1.__exportStar(require("./flatten-route-paths.util"), exports);
package/scanner.js CHANGED
@@ -10,8 +10,8 @@ const iterare_1 = require("iterare");
10
10
  const application_config_1 = require("./application-config");
11
11
  const constants_2 = require("./constants");
12
12
  const circular_dependency_exception_1 = require("./errors/exceptions/circular-dependency.exception");
13
- const invalid_module_exception_1 = require("./errors/exceptions/invalid-module.exception");
14
13
  const invalid_class_module_exception_1 = require("./errors/exceptions/invalid-class-module.exception");
14
+ const invalid_module_exception_1 = require("./errors/exceptions/invalid-module.exception");
15
15
  const undefined_module_exception_1 = require("./errors/exceptions/undefined-module.exception");
16
16
  const get_class_scope_1 = require("./helpers/get-class-scope");
17
17
  const internal_core_module_factory_1 = require("./injector/internal-core-module-factory");
package/services/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./reflector.service"), exports);
4
+ tslib_1.__exportStar(require("./reflector.service"), exports);
package/CHANGELOG.md DELETED
@@ -1,12 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- <a name="8.2.0"></a>
7
- # [8.2.0](https://github.com/nestjs/nest/compare/v8.1.2...v8.2.0) (2021-11-08)
8
-
9
-
10
-
11
-
12
- **Note:** Version bump only for package @nestjs/core