@tsed/common 6.86.2 → 6.87.0
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/lib/builder/PlatformControllerBuilder.d.ts +12 -14
- package/lib/domain/ControllerProvider.d.ts +1 -4
- package/lib/index.d.ts +0 -1
- package/lib/index.js +146 -145
- package/lib/index.js.map +1 -1
- package/lib/index.modern.js +145 -146
- package/lib/index.modern.js.map +1 -1
- package/lib/interfaces/index.d.ts +0 -1
- package/lib/services/Platform.d.ts +0 -1
- package/lib/services/PlatformMiddlewaresChain.d.ts +6 -0
- package/lib/services/PlatformRouter.d.ts +1 -0
- package/lib/services/index.d.ts +1 -0
- package/package.json +15 -15
- package/lib/interfaces/PlatformRouterMethods.d.ts +0 -10
- package/lib/registries/ControllerRegistry.d.ts +0 -1
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { InjectorService } from "@tsed/di";
|
|
2
2
|
import { ControllerProvider } from "../domain/ControllerProvider";
|
|
3
|
-
import {
|
|
3
|
+
import { PlatformRouter } from "../services/PlatformRouter";
|
|
4
4
|
/**
|
|
5
5
|
* @ignore
|
|
6
6
|
*/
|
|
7
|
-
export declare
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
private buildMiddlewares;
|
|
19
|
-
}
|
|
7
|
+
export declare function getRouter(injector: InjectorService, provider: ControllerProvider): any;
|
|
8
|
+
/**
|
|
9
|
+
* @ignore
|
|
10
|
+
*/
|
|
11
|
+
export declare function createRouter(injector: InjectorService, provider: ControllerProvider): PlatformRouter;
|
|
12
|
+
/**
|
|
13
|
+
* @ignore
|
|
14
|
+
* @param injector
|
|
15
|
+
* @param provider
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildRouter(injector: InjectorService, provider: ControllerProvider): PlatformRouter<TsED.Router>;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ControllerMiddlewares, Provider, TokenProvider } from "@tsed/di";
|
|
2
|
-
import { PlatformRouterMethods } from "../interfaces/PlatformRouterMethods";
|
|
3
2
|
export declare class ControllerProvider<T = any> extends Provider<T> {
|
|
4
|
-
|
|
3
|
+
readonly tokenRouter: string;
|
|
5
4
|
constructor(provide: TokenProvider, options?: Partial<Provider>);
|
|
6
5
|
/**
|
|
7
6
|
*
|
|
@@ -22,6 +21,4 @@ export declare class ControllerProvider<T = any> extends Provider<T> {
|
|
|
22
21
|
* @param middlewares
|
|
23
22
|
*/
|
|
24
23
|
set middlewares(middlewares: ControllerMiddlewares);
|
|
25
|
-
getRouter<T extends PlatformRouterMethods = any>(): T;
|
|
26
|
-
setRouter(router: PlatformRouterMethods): this;
|
|
27
24
|
}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -986,6 +986,7 @@ const PLATFORM_ROUTER_OPTIONS = Symbol.for("PlatformRouterOptions");
|
|
|
986
986
|
exports.PlatformRouter = PlatformRouter_1 = class PlatformRouter {
|
|
987
987
|
constructor(platformHandler) {
|
|
988
988
|
this.platformHandler = platformHandler;
|
|
989
|
+
this.isBuilt = false;
|
|
989
990
|
this.rawRouter = this.raw = PlatformRouter_1.createRawRouter();
|
|
990
991
|
}
|
|
991
992
|
/**
|
|
@@ -1292,72 +1293,77 @@ tslib.__decorate([tslib.__param(0, platformParams.Context()), tslib.__metadata("
|
|
|
1292
1293
|
|
|
1293
1294
|
exports.AcceptMimesMiddleware = tslib.__decorate([platformMiddlewares.Middleware()], exports.AcceptMimesMiddleware);
|
|
1294
1295
|
|
|
1295
|
-
|
|
1296
|
-
* Create Ts.ED context handler
|
|
1297
|
-
* @param fn
|
|
1298
|
-
* @ignore
|
|
1299
|
-
*/
|
|
1296
|
+
const ROUTER_OPTIONS = Symbol.for("ROUTER_OPTIONS");
|
|
1300
1297
|
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1298
|
+
let AUTO_INC = 0;
|
|
1299
|
+
class ControllerProvider extends di.Provider {
|
|
1300
|
+
constructor(provide, options = {}) {
|
|
1301
|
+
super(provide, options);
|
|
1302
|
+
this.type = di.ProviderType.CONTROLLER;
|
|
1303
|
+
this.tokenRouter = `${this.name}_ROUTER_${AUTO_INC++}`;
|
|
1304
|
+
}
|
|
1305
|
+
/**
|
|
1306
|
+
*
|
|
1307
|
+
*/
|
|
1305
1308
|
|
|
1306
|
-
/**
|
|
1307
|
-
* @ignore
|
|
1308
|
-
*/
|
|
1309
1309
|
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
}
|
|
1313
|
-
/**
|
|
1314
|
-
|
|
1315
|
-
|
|
1310
|
+
get routerOptions() {
|
|
1311
|
+
return this.store.get(ROUTER_OPTIONS) || {};
|
|
1312
|
+
}
|
|
1313
|
+
/**
|
|
1314
|
+
*
|
|
1315
|
+
* @param value
|
|
1316
|
+
*/
|
|
1316
1317
|
|
|
1317
1318
|
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
this.provider = provider;
|
|
1319
|
+
set routerOptions(value) {
|
|
1320
|
+
this.store.set(ROUTER_OPTIONS, value);
|
|
1321
1321
|
}
|
|
1322
1322
|
/**
|
|
1323
|
-
*
|
|
1323
|
+
*
|
|
1324
|
+
* @returns {any[]}
|
|
1324
1325
|
*/
|
|
1325
1326
|
|
|
1326
1327
|
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
}
|
|
1328
|
+
get middlewares() {
|
|
1329
|
+
return Object.assign({
|
|
1330
|
+
use: [],
|
|
1331
|
+
useAfter: [],
|
|
1332
|
+
useBefore: []
|
|
1333
|
+
}, this.store.get("middlewares", {}));
|
|
1334
|
+
}
|
|
1335
|
+
/**
|
|
1336
|
+
*
|
|
1337
|
+
* @param middlewares
|
|
1338
|
+
*/
|
|
1333
1339
|
|
|
1334
|
-
this.buildMiddlewares(useBefore) // Controller before-middleware
|
|
1335
|
-
.buildEndpoints() // All endpoints and his middlewares
|
|
1336
|
-
.buildChildrenCtrls(injector); // Children controllers
|
|
1337
1340
|
|
|
1338
|
-
|
|
1339
|
-
|
|
1341
|
+
set middlewares(middlewares) {
|
|
1342
|
+
const mdlwrs = this.middlewares;
|
|
1340
1343
|
|
|
1341
|
-
|
|
1342
|
-
schema.getOperationsRoutes(this.provider.token).forEach(operationRoute => {
|
|
1343
|
-
this.buildEndpoint(operationRoute);
|
|
1344
|
-
});
|
|
1345
|
-
return this;
|
|
1346
|
-
}
|
|
1344
|
+
const concat = (key, a, b) => a[key] = a[key].concat(b[key]);
|
|
1347
1345
|
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
const router = this.provider.getRouter();
|
|
1351
|
-
router.addRoute({
|
|
1352
|
-
handlers,
|
|
1353
|
-
token: operationRoute.token,
|
|
1354
|
-
method: formatMethod(operationRoute.method),
|
|
1355
|
-
path: operationRoute.path,
|
|
1356
|
-
isFinal: operationRoute.isFinal
|
|
1346
|
+
Object.keys(middlewares).forEach(key => {
|
|
1347
|
+
concat(key, mdlwrs, middlewares);
|
|
1357
1348
|
});
|
|
1349
|
+
this.store.set("middlewares", mdlwrs);
|
|
1358
1350
|
}
|
|
1359
1351
|
|
|
1360
|
-
|
|
1352
|
+
}
|
|
1353
|
+
|
|
1354
|
+
/**
|
|
1355
|
+
* Create Ts.ED context handler
|
|
1356
|
+
* @param fn
|
|
1357
|
+
* @ignore
|
|
1358
|
+
*/
|
|
1359
|
+
|
|
1360
|
+
function useCtxHandler(fn) {
|
|
1361
|
+
fn.type = exports.HandlerType.CTX_FN;
|
|
1362
|
+
return fn;
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
exports.PlatformMiddlewaresChain = class PlatformMiddlewaresChain {
|
|
1366
|
+
get(provider, operationRoute) {
|
|
1361
1367
|
const {
|
|
1362
1368
|
endpoint
|
|
1363
1369
|
} = operationRoute;
|
|
@@ -1371,11 +1377,10 @@ class PlatformControllerBuilder {
|
|
|
1371
1377
|
use,
|
|
1372
1378
|
useAfter
|
|
1373
1379
|
}
|
|
1374
|
-
} =
|
|
1380
|
+
} = provider;
|
|
1375
1381
|
const hasFiles = [...operationRoute.endpoint.children.values()].find(item => item.paramType === platformParams.ParamTypes.FILES);
|
|
1376
1382
|
return [].concat(useCtxHandler(bindEndpointMiddleware(endpoint))).concat(exports.PlatformAcceptMimesMiddleware).concat(hasFiles && exports.PlatformMulterMiddleware).concat(beforeMiddlewares) // Endpoint before-middlewares
|
|
1377
1383
|
.concat(use) // Controller use-middlewares
|
|
1378
|
-
// .concat(endpoint.cache && PlatformCacheMiddleware)
|
|
1379
1384
|
.concat(mldwrs) // Endpoint middlewares
|
|
1380
1385
|
.concat(endpoint) // Endpoint metadata
|
|
1381
1386
|
.concat(afterMiddlewares) // Endpoint after-middlewares
|
|
@@ -1383,32 +1388,97 @@ class PlatformControllerBuilder {
|
|
|
1383
1388
|
.filter(item => !!item);
|
|
1384
1389
|
}
|
|
1385
1390
|
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
+
};
|
|
1392
|
+
exports.PlatformMiddlewaresChain = tslib.__decorate([di.Injectable()], exports.PlatformMiddlewaresChain);
|
|
1393
|
+
|
|
1394
|
+
di.GlobalProviders.createRegistry(di.ProviderType.CONTROLLER, ControllerProvider, {
|
|
1395
|
+
onInvoke(provider, locals, {
|
|
1396
|
+
injector
|
|
1397
|
+
}) {
|
|
1398
|
+
const router = createRouter(injector, provider);
|
|
1399
|
+
locals.set(exports.PlatformRouter, router);
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
});
|
|
1403
|
+
/**
|
|
1404
|
+
* @ignore
|
|
1405
|
+
*/
|
|
1406
|
+
|
|
1407
|
+
function formatMethod(method) {
|
|
1408
|
+
return (method === schema.OperationMethods.CUSTOM ? "use" : method || "use").toLowerCase();
|
|
1409
|
+
}
|
|
1410
|
+
/**
|
|
1411
|
+
* @ignore
|
|
1412
|
+
*/
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
function getRouter(injector, provider) {
|
|
1416
|
+
return injector.get(provider.tokenRouter);
|
|
1417
|
+
}
|
|
1418
|
+
/**
|
|
1419
|
+
* @ignore
|
|
1420
|
+
*/
|
|
1421
|
+
|
|
1422
|
+
function createRouter(injector, provider) {
|
|
1423
|
+
const token = provider.tokenRouter;
|
|
1424
|
+
|
|
1425
|
+
if (injector.has(token)) {
|
|
1426
|
+
return getRouter(injector, provider);
|
|
1427
|
+
}
|
|
1428
|
+
|
|
1429
|
+
const router = exports.PlatformRouter.create(injector, provider.routerOptions);
|
|
1430
|
+
return injector.add(token, {
|
|
1431
|
+
useValue: router
|
|
1432
|
+
}).invoke(token);
|
|
1433
|
+
}
|
|
1434
|
+
/**
|
|
1435
|
+
* @ignore
|
|
1436
|
+
* @param injector
|
|
1437
|
+
* @param provider
|
|
1438
|
+
*/
|
|
1439
|
+
|
|
1440
|
+
function buildRouter(injector, provider) {
|
|
1441
|
+
const {
|
|
1442
|
+
middlewares: {
|
|
1443
|
+
useBefore
|
|
1444
|
+
},
|
|
1445
|
+
children
|
|
1446
|
+
} = provider; // Controller lifecycle
|
|
1447
|
+
|
|
1448
|
+
const router = createRouter(injector, provider);
|
|
1449
|
+
|
|
1450
|
+
if (!router.isBuilt) {
|
|
1451
|
+
router.isBuilt = true;
|
|
1452
|
+
const platformMiddlewaresChain = injector.get(exports.PlatformMiddlewaresChain);
|
|
1453
|
+
useBefore // Controller before-middleware
|
|
1454
|
+
.filter(o => typeof o === "function").forEach(middleware => {
|
|
1455
|
+
router.use(middleware);
|
|
1456
|
+
}); // build all endpoints and his middlewares
|
|
1457
|
+
|
|
1458
|
+
schema.getOperationsRoutes(provider.token).forEach(operationRoute => {
|
|
1459
|
+
const handlers = platformMiddlewaresChain == null ? void 0 : platformMiddlewaresChain.get(provider, operationRoute);
|
|
1460
|
+
router.addRoute({
|
|
1461
|
+
handlers,
|
|
1462
|
+
token: operationRoute.token,
|
|
1463
|
+
method: formatMethod(operationRoute.method),
|
|
1464
|
+
path: operationRoute.path,
|
|
1465
|
+
isFinal: operationRoute.isFinal
|
|
1466
|
+
});
|
|
1467
|
+
}); // build children controllers
|
|
1468
|
+
|
|
1391
1469
|
children.forEach(child => {
|
|
1392
|
-
const
|
|
1470
|
+
const childProvider = injector.getProvider(child);
|
|
1393
1471
|
/* istanbul ignore next */
|
|
1394
1472
|
|
|
1395
|
-
if (!
|
|
1473
|
+
if (!childProvider) {
|
|
1396
1474
|
throw new Error("Controller component not found in the ControllerRegistry");
|
|
1397
1475
|
}
|
|
1398
1476
|
|
|
1399
|
-
|
|
1400
|
-
router.use(provider.path, provider.getRouter());
|
|
1401
|
-
});
|
|
1402
|
-
}
|
|
1403
|
-
|
|
1404
|
-
buildMiddlewares(middlewares) {
|
|
1405
|
-
const router = this.provider.getRouter();
|
|
1406
|
-
middlewares.filter(o => typeof o === "function").forEach(middleware => {
|
|
1407
|
-
router.use(middleware);
|
|
1477
|
+
router.use(childProvider.path, buildRouter(injector, childProvider));
|
|
1408
1478
|
});
|
|
1409
|
-
return this;
|
|
1410
1479
|
}
|
|
1411
1480
|
|
|
1481
|
+
return router;
|
|
1412
1482
|
}
|
|
1413
1483
|
|
|
1414
1484
|
/**
|
|
@@ -2005,71 +2075,6 @@ class PlatformRouteDetails extends schema.JsonOperationRoute {
|
|
|
2005
2075
|
|
|
2006
2076
|
}
|
|
2007
2077
|
|
|
2008
|
-
const ROUTER_OPTIONS = Symbol.for("ROUTER_OPTIONS");
|
|
2009
|
-
|
|
2010
|
-
class ControllerProvider extends di.Provider {
|
|
2011
|
-
constructor(provide, options = {}) {
|
|
2012
|
-
super(provide, options);
|
|
2013
|
-
this.type = di.ProviderType.CONTROLLER;
|
|
2014
|
-
}
|
|
2015
|
-
/**
|
|
2016
|
-
*
|
|
2017
|
-
*/
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
get routerOptions() {
|
|
2021
|
-
return this.store.get(ROUTER_OPTIONS) || {};
|
|
2022
|
-
}
|
|
2023
|
-
/**
|
|
2024
|
-
*
|
|
2025
|
-
* @param value
|
|
2026
|
-
*/
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
set routerOptions(value) {
|
|
2030
|
-
this.store.set(ROUTER_OPTIONS, value);
|
|
2031
|
-
}
|
|
2032
|
-
/**
|
|
2033
|
-
*
|
|
2034
|
-
* @returns {any[]}
|
|
2035
|
-
*/
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
get middlewares() {
|
|
2039
|
-
return Object.assign({
|
|
2040
|
-
use: [],
|
|
2041
|
-
useAfter: [],
|
|
2042
|
-
useBefore: []
|
|
2043
|
-
}, this.store.get("middlewares", {}));
|
|
2044
|
-
}
|
|
2045
|
-
/**
|
|
2046
|
-
*
|
|
2047
|
-
* @param middlewares
|
|
2048
|
-
*/
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
set middlewares(middlewares) {
|
|
2052
|
-
const mdlwrs = this.middlewares;
|
|
2053
|
-
|
|
2054
|
-
const concat = (key, a, b) => a[key] = a[key].concat(b[key]);
|
|
2055
|
-
|
|
2056
|
-
Object.keys(middlewares).forEach(key => {
|
|
2057
|
-
concat(key, mdlwrs, middlewares);
|
|
2058
|
-
});
|
|
2059
|
-
this.store.set("middlewares", mdlwrs);
|
|
2060
|
-
}
|
|
2061
|
-
|
|
2062
|
-
getRouter() {
|
|
2063
|
-
return this.router;
|
|
2064
|
-
}
|
|
2065
|
-
|
|
2066
|
-
setRouter(router) {
|
|
2067
|
-
this.router = router;
|
|
2068
|
-
return this;
|
|
2069
|
-
}
|
|
2070
|
-
|
|
2071
|
-
}
|
|
2072
|
-
|
|
2073
2078
|
/**
|
|
2074
2079
|
* @deprecated Since 2020-11-11. Use getProperties from @tsed/schema
|
|
2075
2080
|
*/
|
|
@@ -2093,13 +2098,6 @@ exports.PropertyMetadata = class PropertyMetadata extends schema.JsonPropertySto
|
|
|
2093
2098
|
};
|
|
2094
2099
|
exports.PropertyMetadata = tslib.__decorate([schema.JsonEntityComponent(core.DecoratorTypes.PROP)], exports.PropertyMetadata);
|
|
2095
2100
|
|
|
2096
|
-
di.GlobalProviders.createRegistry(di.ProviderType.CONTROLLER, ControllerProvider, {
|
|
2097
|
-
onInvoke(provider, locals) {
|
|
2098
|
-
locals.set(exports.PlatformRouter, provider.getRouter());
|
|
2099
|
-
}
|
|
2100
|
-
|
|
2101
|
-
});
|
|
2102
|
-
|
|
2103
2101
|
/**
|
|
2104
2102
|
* `Platform` is used to provide all routes collected by annotation `@Controller`.
|
|
2105
2103
|
*
|
|
@@ -2146,7 +2144,7 @@ exports.Platform = class Platform {
|
|
|
2146
2144
|
provider
|
|
2147
2145
|
});
|
|
2148
2146
|
|
|
2149
|
-
this.app.use(ctrlPath, ...[].concat(
|
|
2147
|
+
this.app.use(ctrlPath, ...[].concat(getRouter(injector, provider).callback()));
|
|
2150
2148
|
this._routes = schema.getOperationsRoutes(provider.token, {
|
|
2151
2149
|
withChildren: true,
|
|
2152
2150
|
basePath
|
|
@@ -2191,7 +2189,7 @@ exports.Platform = class Platform {
|
|
|
2191
2189
|
injector
|
|
2192
2190
|
} = this;
|
|
2193
2191
|
injector.getProviders(di.ProviderType.CONTROLLER).map(provider => {
|
|
2194
|
-
|
|
2192
|
+
createRouter(injector, provider);
|
|
2195
2193
|
});
|
|
2196
2194
|
}
|
|
2197
2195
|
/**
|
|
@@ -2206,14 +2204,15 @@ exports.Platform = class Platform {
|
|
|
2206
2204
|
} = this;
|
|
2207
2205
|
injector.getProviders(di.ProviderType.CONTROLLER).map(provider => {
|
|
2208
2206
|
if (!provider.hasParent()) {
|
|
2209
|
-
return
|
|
2207
|
+
return buildRouter(injector, provider);
|
|
2210
2208
|
}
|
|
2211
2209
|
});
|
|
2212
2210
|
}
|
|
2213
2211
|
|
|
2214
2212
|
};
|
|
2215
2213
|
exports.Platform = tslib.__decorate([di.Injectable({
|
|
2216
|
-
scope: di.ProviderScope.SINGLETON
|
|
2214
|
+
scope: di.ProviderScope.SINGLETON,
|
|
2215
|
+
imports: [exports.PlatformMiddlewaresChain]
|
|
2217
2216
|
}), tslib.__metadata("design:paramtypes", [di.InjectorService, exports.PlatformApplication])], exports.Platform);
|
|
2218
2217
|
|
|
2219
2218
|
logger.$log.name = "TSED";
|
|
@@ -3510,7 +3509,6 @@ exports.Next = Next;
|
|
|
3510
3509
|
exports.PLATFORM_ROUTER_OPTIONS = PLATFORM_ROUTER_OPTIONS;
|
|
3511
3510
|
exports.PlatformBuilder = PlatformBuilder;
|
|
3512
3511
|
exports.PlatformContext = PlatformContext;
|
|
3513
|
-
exports.PlatformControllerBuilder = PlatformControllerBuilder;
|
|
3514
3512
|
exports.PlatformModule = PlatformModule;
|
|
3515
3513
|
exports.PlatformRouteDetails = PlatformRouteDetails;
|
|
3516
3514
|
exports.PlatformTest = PlatformTest;
|
|
@@ -3521,11 +3519,14 @@ exports.Res = Res;
|
|
|
3521
3519
|
exports.Response = Response;
|
|
3522
3520
|
exports.ResponseData = ResponseData;
|
|
3523
3521
|
exports.bindEndpointMiddleware = bindEndpointMiddleware;
|
|
3522
|
+
exports.buildRouter = buildRouter;
|
|
3524
3523
|
exports.createContext = createContext;
|
|
3525
3524
|
exports.createHttpServer = createHttpServer;
|
|
3526
3525
|
exports.createHttpsServer = createHttpsServer;
|
|
3527
3526
|
exports.createInjector = createInjector;
|
|
3528
3527
|
exports.createPlatformApplication = createPlatformApplication;
|
|
3528
|
+
exports.createRouter = createRouter;
|
|
3529
|
+
exports.getRouter = getRouter;
|
|
3529
3530
|
exports.listenHttpServer = listenHttpServer;
|
|
3530
3531
|
exports.listenHttpsServer = listenHttpsServer;
|
|
3531
3532
|
exports.listenServer = listenServer;
|