@nestjs/core 8.4.6 → 9.0.0-next.2
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 +4 -3
- package/adapters/http-adapter.d.ts +5 -2
- package/errors/messages.js +3 -4
- package/exceptions/base-exception-filter.js +14 -2
- package/helpers/context-id-factory.d.ts +18 -1
- package/helpers/context-id-factory.js +14 -1
- package/helpers/is-durable.d.ts +2 -0
- package/helpers/is-durable.js +9 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/injector/index.d.ts +1 -1
- package/injector/injector.d.ts +2 -1
- package/injector/injector.js +36 -18
- package/injector/instance-wrapper.d.ts +20 -2
- package/injector/instance-wrapper.js +61 -20
- package/injector/module-ref.js +2 -0
- package/injector/module.js +11 -2
- package/middleware/container.js +3 -1
- package/nest-application.d.ts +0 -2
- package/nest-application.js +0 -8
- package/package.json +2 -2
- package/repl/assign-to-object.util.d.ts +5 -0
- package/repl/assign-to-object.util.js +15 -0
- package/repl/constants.d.ts +1 -0
- package/repl/constants.js +4 -0
- package/repl/index.d.ts +1 -0
- package/repl/index.js +4 -0
- package/repl/native-functions/debug-repl-fn.d.ts +9 -0
- package/repl/native-functions/debug-repl-fn.js +46 -0
- package/repl/native-functions/get-relp-fn.d.ts +7 -0
- package/repl/native-functions/get-relp-fn.js +19 -0
- package/repl/native-functions/help-repl-fn.d.ts +7 -0
- package/repl/native-functions/help-repl-fn.js +29 -0
- package/repl/native-functions/index.d.ts +6 -0
- package/repl/native-functions/index.js +9 -0
- package/repl/native-functions/methods-repl-fn.d.ts +8 -0
- package/repl/native-functions/methods-repl-fn.js +28 -0
- package/repl/native-functions/resolve-repl-fn.d.ts +7 -0
- package/repl/native-functions/resolve-repl-fn.js +18 -0
- package/repl/native-functions/select-relp-fn.d.ts +7 -0
- package/repl/native-functions/select-relp-fn.js +18 -0
- package/repl/repl-context.d.ts +26 -0
- package/repl/repl-context.js +124 -0
- package/repl/repl-function.d.ts +18 -0
- package/repl/repl-function.js +19 -0
- package/repl/repl-logger.d.ts +5 -0
- package/repl/repl-logger.js +22 -0
- package/repl/repl.d.ts +4 -0
- package/repl/repl.interfaces.d.ts +16 -0
- package/repl/repl.interfaces.js +2 -0
- package/repl/repl.js +27 -0
- package/router/router-explorer.js +1 -101
- package/router/router-response-controller.js +3 -3
- package/scanner.d.ts +1 -2
- package/scanner.js +9 -11
|
@@ -4,7 +4,6 @@ exports.RouterExplorer = void 0;
|
|
|
4
4
|
const constants_1 = require("@nestjs/common/constants");
|
|
5
5
|
const version_type_enum_1 = require("@nestjs/common/enums/version-type.enum");
|
|
6
6
|
const exceptions_1 = require("@nestjs/common/exceptions");
|
|
7
|
-
const version_options_interface_1 = require("@nestjs/common/interfaces/version-options.interface");
|
|
8
7
|
const logger_service_1 = require("@nestjs/common/services/logger.service");
|
|
9
8
|
const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
|
10
9
|
const pathToRegexp = require("path-to-regexp");
|
|
@@ -160,107 +159,8 @@ class RouterExplorer {
|
|
|
160
159
|
};
|
|
161
160
|
}
|
|
162
161
|
applyVersionFilter(router, routePathMetadata, handler) {
|
|
163
|
-
const { versioningOptions } = routePathMetadata;
|
|
164
162
|
const version = this.routePathFactory.getVersion(routePathMetadata);
|
|
165
|
-
|
|
166
|
-
return router.applyVersionFilter(handler, version, versioningOptions);
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* TODO(v9): This was left for backward-compatibility and can be removed.
|
|
170
|
-
*/
|
|
171
|
-
return (req, res, next) => {
|
|
172
|
-
var _a, _b, _c, _d;
|
|
173
|
-
if (version === version_options_interface_1.VERSION_NEUTRAL) {
|
|
174
|
-
return handler(req, res, next);
|
|
175
|
-
}
|
|
176
|
-
// URL Versioning is done via the path, so the filter continues forward
|
|
177
|
-
if (versioningOptions.type === version_type_enum_1.VersioningType.URI) {
|
|
178
|
-
return handler(req, res, next);
|
|
179
|
-
}
|
|
180
|
-
// Custom Extractor Versioning Handler
|
|
181
|
-
if (versioningOptions.type === version_type_enum_1.VersioningType.CUSTOM) {
|
|
182
|
-
const extractedVersion = versioningOptions.extractor(req);
|
|
183
|
-
if (Array.isArray(version)) {
|
|
184
|
-
if (Array.isArray(extractedVersion) &&
|
|
185
|
-
version.filter(extractedVersion.includes).length) {
|
|
186
|
-
return handler(req, res, next);
|
|
187
|
-
}
|
|
188
|
-
else if ((0, shared_utils_1.isString)(extractedVersion) &&
|
|
189
|
-
version.includes(extractedVersion)) {
|
|
190
|
-
return handler(req, res, next);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
if (Array.isArray(extractedVersion) &&
|
|
195
|
-
extractedVersion.includes(version)) {
|
|
196
|
-
return handler(req, res, next);
|
|
197
|
-
}
|
|
198
|
-
else if ((0, shared_utils_1.isString)(extractedVersion) &&
|
|
199
|
-
version === extractedVersion) {
|
|
200
|
-
return handler(req, res, next);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
// Media Type (Accept Header) Versioning Handler
|
|
205
|
-
if (versioningOptions.type === version_type_enum_1.VersioningType.MEDIA_TYPE) {
|
|
206
|
-
const MEDIA_TYPE_HEADER = 'Accept';
|
|
207
|
-
const acceptHeaderValue = ((_a = req.headers) === null || _a === void 0 ? void 0 : _a[MEDIA_TYPE_HEADER]) ||
|
|
208
|
-
((_b = req.headers) === null || _b === void 0 ? void 0 : _b[MEDIA_TYPE_HEADER.toLowerCase()]);
|
|
209
|
-
const acceptHeaderVersionParameter = acceptHeaderValue
|
|
210
|
-
? acceptHeaderValue.split(';')[1]
|
|
211
|
-
: undefined;
|
|
212
|
-
// No version was supplied
|
|
213
|
-
if ((0, shared_utils_1.isUndefined)(acceptHeaderVersionParameter)) {
|
|
214
|
-
if (Array.isArray(version)) {
|
|
215
|
-
if (version.includes(version_options_interface_1.VERSION_NEUTRAL)) {
|
|
216
|
-
return handler(req, res, next);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
const headerVersion = acceptHeaderVersionParameter.split(versioningOptions.key)[1];
|
|
222
|
-
if (Array.isArray(version)) {
|
|
223
|
-
if (version.includes(headerVersion)) {
|
|
224
|
-
return handler(req, res, next);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
else if ((0, shared_utils_1.isString)(version)) {
|
|
228
|
-
if (version === headerVersion) {
|
|
229
|
-
return handler(req, res, next);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
// Header Versioning Handler
|
|
235
|
-
else if (versioningOptions.type === version_type_enum_1.VersioningType.HEADER) {
|
|
236
|
-
const customHeaderVersionParameter = ((_c = req.headers) === null || _c === void 0 ? void 0 : _c[versioningOptions.header]) ||
|
|
237
|
-
((_d = req.headers) === null || _d === void 0 ? void 0 : _d[versioningOptions.header.toLowerCase()]);
|
|
238
|
-
// No version was supplied
|
|
239
|
-
if ((0, shared_utils_1.isUndefined)(customHeaderVersionParameter)) {
|
|
240
|
-
if (Array.isArray(version)) {
|
|
241
|
-
if (version.includes(version_options_interface_1.VERSION_NEUTRAL)) {
|
|
242
|
-
return handler(req, res, next);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
if (Array.isArray(version)) {
|
|
248
|
-
if (version.includes(customHeaderVersionParameter)) {
|
|
249
|
-
return handler(req, res, next);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
else if ((0, shared_utils_1.isString)(version)) {
|
|
253
|
-
if (version === customHeaderVersionParameter) {
|
|
254
|
-
return handler(req, res, next);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
if (!next) {
|
|
260
|
-
throw new exceptions_1.InternalServerErrorException('HTTP adapter does not support filtering on version');
|
|
261
|
-
}
|
|
262
|
-
return next();
|
|
263
|
-
};
|
|
163
|
+
return router.applyVersionFilter(handler, version, routePathMetadata.versioningOptions);
|
|
264
164
|
}
|
|
265
165
|
createCallbackProxy(instance, callback, methodName, moduleRef, requestMethod, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
|
266
166
|
const executionContext = this.executionContextCreator.create(instance, callback, methodName, moduleRef, requestMethod, contextId, inquirerId);
|
|
@@ -29,7 +29,7 @@ class RouterResponseController {
|
|
|
29
29
|
return this.applicationRef.render(response, template, result);
|
|
30
30
|
}
|
|
31
31
|
async transformToResult(resultOrDeferred) {
|
|
32
|
-
if (
|
|
32
|
+
if ((0, rxjs_1.isObservable)(resultOrDeferred)) {
|
|
33
33
|
return (0, rxjs_1.lastValueFrom)(resultOrDeferred);
|
|
34
34
|
}
|
|
35
35
|
return resultOrDeferred;
|
|
@@ -80,8 +80,8 @@ class RouterResponseController {
|
|
|
80
80
|
subscription.unsubscribe();
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
|
-
assertObservable(
|
|
84
|
-
if (!(0,
|
|
83
|
+
assertObservable(value) {
|
|
84
|
+
if (!(0, rxjs_1.isObservable)(value)) {
|
|
85
85
|
throw new ReferenceError('You must return an Observable stream to use Server-Sent Events (SSE).');
|
|
86
86
|
}
|
|
87
87
|
}
|
package/scanner.d.ts
CHANGED
|
@@ -11,7 +11,6 @@ export declare class DependenciesScanner {
|
|
|
11
11
|
private readonly container;
|
|
12
12
|
private readonly metadataScanner;
|
|
13
13
|
private readonly applicationConfig;
|
|
14
|
-
private readonly logger;
|
|
15
14
|
private readonly applicationProvidersApplyMap;
|
|
16
15
|
constructor(container: NestContainer, metadataScanner: MetadataScanner, applicationConfig?: ApplicationConfig);
|
|
17
16
|
scan(module: Type<any>): Promise<void>;
|
|
@@ -33,7 +32,7 @@ export declare class DependenciesScanner {
|
|
|
33
32
|
insertInjectable(injectable: Type<Injectable>, token: string, host: Type<Injectable>): void;
|
|
34
33
|
insertExportedProvider(exportedProvider: Type<Injectable>, token: string): void;
|
|
35
34
|
insertController(controller: Type<Controller>, token: string): void;
|
|
36
|
-
reflectMetadata(metatype: Type<any
|
|
35
|
+
reflectMetadata(metadataKey: string, metatype: Type<any>): any;
|
|
37
36
|
registerCoreModule(): Promise<void>;
|
|
38
37
|
/**
|
|
39
38
|
* Add either request or transient globally scoped enhancers
|
package/scanner.js
CHANGED
|
@@ -20,7 +20,6 @@ class DependenciesScanner {
|
|
|
20
20
|
this.container = container;
|
|
21
21
|
this.metadataScanner = metadataScanner;
|
|
22
22
|
this.applicationConfig = applicationConfig;
|
|
23
|
-
this.logger = new common_1.Logger(DependenciesScanner.name);
|
|
24
23
|
this.applicationProvidersApplyMap = [];
|
|
25
24
|
}
|
|
26
25
|
async scan(module) {
|
|
@@ -42,9 +41,9 @@ class DependenciesScanner {
|
|
|
42
41
|
moduleDefinition = moduleDefinition.forwardRef();
|
|
43
42
|
}
|
|
44
43
|
const modules = !this.isDynamicModule(moduleDefinition)
|
|
45
|
-
? this.reflectMetadata(
|
|
44
|
+
? this.reflectMetadata(constants_1.MODULE_METADATA.IMPORTS, moduleDefinition)
|
|
46
45
|
: [
|
|
47
|
-
...this.reflectMetadata(
|
|
46
|
+
...this.reflectMetadata(constants_1.MODULE_METADATA.IMPORTS, moduleDefinition.module),
|
|
48
47
|
...(moduleDefinition.imports || []),
|
|
49
48
|
];
|
|
50
49
|
let registeredModuleRefs = [];
|
|
@@ -74,8 +73,7 @@ class DependenciesScanner {
|
|
|
74
73
|
if (this.isInjectable(moduleToAdd) ||
|
|
75
74
|
this.isController(moduleToAdd) ||
|
|
76
75
|
this.isExceptionFilter(moduleToAdd)) {
|
|
77
|
-
|
|
78
|
-
this.logger.warn(new invalid_class_module_exception_1.InvalidClassModuleException(moduleDefinition, scope).message);
|
|
76
|
+
throw new invalid_class_module_exception_1.InvalidClassModuleException(moduleDefinition, scope);
|
|
79
77
|
}
|
|
80
78
|
return this.container.addModule(moduleToAdd, scope);
|
|
81
79
|
}
|
|
@@ -89,7 +87,7 @@ class DependenciesScanner {
|
|
|
89
87
|
}
|
|
90
88
|
async reflectImports(module, token, context) {
|
|
91
89
|
const modules = [
|
|
92
|
-
...this.reflectMetadata(
|
|
90
|
+
...this.reflectMetadata(constants_1.MODULE_METADATA.IMPORTS, module),
|
|
93
91
|
...this.container.getDynamicMetadataByToken(token, constants_1.MODULE_METADATA.IMPORTS),
|
|
94
92
|
];
|
|
95
93
|
for (const related of modules) {
|
|
@@ -98,7 +96,7 @@ class DependenciesScanner {
|
|
|
98
96
|
}
|
|
99
97
|
reflectProviders(module, token) {
|
|
100
98
|
const providers = [
|
|
101
|
-
...this.reflectMetadata(
|
|
99
|
+
...this.reflectMetadata(constants_1.MODULE_METADATA.PROVIDERS, module),
|
|
102
100
|
...this.container.getDynamicMetadataByToken(token, constants_1.MODULE_METADATA.PROVIDERS),
|
|
103
101
|
];
|
|
104
102
|
providers.forEach(provider => {
|
|
@@ -108,7 +106,7 @@ class DependenciesScanner {
|
|
|
108
106
|
}
|
|
109
107
|
reflectControllers(module, token) {
|
|
110
108
|
const controllers = [
|
|
111
|
-
...this.reflectMetadata(
|
|
109
|
+
...this.reflectMetadata(constants_1.MODULE_METADATA.CONTROLLERS, module),
|
|
112
110
|
...this.container.getDynamicMetadataByToken(token, constants_1.MODULE_METADATA.CONTROLLERS),
|
|
113
111
|
];
|
|
114
112
|
controllers.forEach(item => {
|
|
@@ -128,13 +126,13 @@ class DependenciesScanner {
|
|
|
128
126
|
}
|
|
129
127
|
reflectExports(module, token) {
|
|
130
128
|
const exports = [
|
|
131
|
-
...this.reflectMetadata(
|
|
129
|
+
...this.reflectMetadata(constants_1.MODULE_METADATA.EXPORTS, module),
|
|
132
130
|
...this.container.getDynamicMetadataByToken(token, constants_1.MODULE_METADATA.EXPORTS),
|
|
133
131
|
];
|
|
134
132
|
exports.forEach(exportedProvider => this.insertExportedProvider(exportedProvider, token));
|
|
135
133
|
}
|
|
136
134
|
reflectInjectables(component, token, metadataKey) {
|
|
137
|
-
const controllerInjectables = this.reflectMetadata(
|
|
135
|
+
const controllerInjectables = this.reflectMetadata(metadataKey, component);
|
|
138
136
|
const methodsInjectables = this.metadataScanner.scanFromPrototype(null, component.prototype, this.reflectKeyMetadata.bind(this, component, metadataKey));
|
|
139
137
|
const flattenMethodsInjectables = this.flatten(methodsInjectables);
|
|
140
138
|
const combinedInjectables = [
|
|
@@ -233,7 +231,7 @@ class DependenciesScanner {
|
|
|
233
231
|
insertController(controller, token) {
|
|
234
232
|
this.container.addController(controller, token);
|
|
235
233
|
}
|
|
236
|
-
reflectMetadata(
|
|
234
|
+
reflectMetadata(metadataKey, metatype) {
|
|
237
235
|
return Reflect.getMetadata(metadataKey, metatype) || [];
|
|
238
236
|
}
|
|
239
237
|
async registerCoreModule() {
|