@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 +2 -1
- package/adapters/index.js +1 -1
- package/discovery/discovery-module.js +1 -1
- package/discovery/discovery-service.js +2 -2
- package/discovery/index.js +2 -2
- package/errors/messages.js +6 -6
- package/exceptions/base-exception-filter.js +2 -2
- package/exceptions/index.js +1 -1
- package/helpers/index.js +2 -2
- package/helpers/interfaces/index.js +2 -2
- package/hooks/index.js +5 -5
- package/index.js +12 -12
- package/injector/compiler.js +1 -1
- package/injector/index.js +5 -5
- package/injector/injector.d.ts +4 -1
- package/injector/injector.js +37 -8
- package/injector/inquirer/index.js +1 -1
- package/injector/instance-links-host.js +1 -2
- package/injector/instance-wrapper.d.ts +2 -1
- package/injector/instance-wrapper.js +1 -1
- package/injector/internal-core-module.js +1 -1
- package/injector/module.d.ts +12 -8
- package/injector/module.js +3 -6
- package/middleware/index.js +1 -1
- package/middleware/middleware-module.js +4 -3
- package/nest-application-context.js +1 -2
- package/package.json +3 -3
- package/router/index.js +2 -2
- package/router/interfaces/index.js +1 -1
- package/router/router-explorer.js +24 -0
- package/router/router-module.js +3 -3
- package/router/utils/index.js +2 -2
- package/scanner.js +1 -1
- package/services/index.js +1 -1
- package/CHANGELOG.md +0 -12
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
|
|
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
|
@@ -10,7 +10,7 @@ const discovery_service_1 = require("./discovery-service");
|
|
|
10
10
|
*/
|
|
11
11
|
let DiscoveryModule = class DiscoveryModule {
|
|
12
12
|
};
|
|
13
|
-
DiscoveryModule =
|
|
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 =
|
|
35
|
+
DiscoveryService = tslib_1.__decorate([
|
|
36
36
|
(0, common_1.Injectable)(),
|
|
37
|
-
|
|
37
|
+
tslib_1.__metadata("design:paramtypes", [modules_container_1.ModulesContainer])
|
|
38
38
|
], DiscoveryService);
|
|
39
39
|
exports.DiscoveryService = DiscoveryService;
|
package/discovery/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
|
-
|
|
5
|
-
|
|
4
|
+
tslib_1.__exportStar(require("./discovery-module"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./discovery-service"), exports);
|
package/errors/messages.js
CHANGED
|
@@ -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
|
|
11
|
-
if (
|
|
12
|
-
return (
|
|
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 (
|
|
15
|
-
return (
|
|
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
|
|
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
|
-
|
|
56
|
+
tslib_1.__decorate([
|
|
57
57
|
(0, common_1.Optional)(),
|
|
58
58
|
(0, common_1.Inject)(),
|
|
59
|
-
|
|
59
|
+
tslib_1.__metadata("design:type", http_adapter_host_1.HttpAdapterHost)
|
|
60
60
|
], BaseExceptionFilter.prototype, "httpAdapterHost", void 0);
|
|
61
61
|
exports.BaseExceptionFilter = BaseExceptionFilter;
|
package/exceptions/index.js
CHANGED
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
|
-
|
|
5
|
-
|
|
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
|
-
|
|
5
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
13
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
30
|
-
|
|
29
|
+
tslib_1.__exportStar(require("./router"), exports);
|
|
30
|
+
tslib_1.__exportStar(require("./services"), exports);
|
package/injector/compiler.js
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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);
|
package/injector/injector.d.ts
CHANGED
|
@@ -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 =
|
|
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[];
|
package/injector/injector.js
CHANGED
|
@@ -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
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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 &&
|
|
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)) {
|
|
@@ -47,8 +47,7 @@ class InstanceLinksHost {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
getInstanceNameByToken(token) {
|
|
50
|
-
|
|
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?:
|
|
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 =
|
|
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 =
|
|
23
|
+
InternalCoreModule = InternalCoreModule_1 = tslib_1.__decorate([
|
|
24
24
|
(0, common_1.Global)(),
|
|
25
25
|
(0, common_1.Module)({
|
|
26
26
|
providers: [
|
package/injector/module.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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>):
|
|
50
|
-
addProvider(provider: Provider):
|
|
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>):
|
|
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<
|
|
63
|
-
addCustomExportedProvider(provider: FactoryProvider | ValueProvider | ClassProvider | ExistingProvider): Set<
|
|
64
|
-
validateExportedProvider(token: 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;
|
package/injector/module.js
CHANGED
|
@@ -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: (
|
|
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: (
|
|
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: (
|
|
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,
|
package/middleware/index.js
CHANGED
|
@@ -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,
|
|
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
|
+
"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": "
|
|
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.
|
|
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
|
-
|
|
6
|
-
|
|
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; } });
|
|
@@ -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';
|
package/router/router-module.js
CHANGED
|
@@ -69,9 +69,9 @@ let RouterModule = RouterModule_1 = class RouterModule {
|
|
|
69
69
|
moduleClassSet.add(moduleRef);
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
|
-
RouterModule = RouterModule_1 =
|
|
72
|
+
RouterModule = RouterModule_1 = tslib_1.__decorate([
|
|
73
73
|
(0, common_1.Module)({}),
|
|
74
|
-
|
|
75
|
-
|
|
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;
|
package/router/utils/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
|
-
|
|
5
|
-
|
|
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
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
|