@decaf-ts/for-nest 0.11.2-refactor.2 → 0.11.2-refactor.4
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 +273 -1
- package/dist/for-nest.cjs +219 -193
- package/dist/for-nest.js +235 -208
- package/lib/cjs/auth/AuthInterceptor.cjs +6 -3
- package/lib/cjs/auth/DecafAuthModule.cjs +2 -8
- package/lib/cjs/decaf-model/DecafModelModule.cjs +7 -2
- package/lib/cjs/decaf-model/FromModelController.cjs +121 -68
- package/lib/cjs/decaf-model/decorators/utils.cjs +4 -3
- package/lib/cjs/decaf-model/utils.cjs +10 -4
- package/lib/cjs/decorators.cjs +4 -3
- package/lib/cjs/index.cjs +3 -3
- package/lib/cjs/request/DecafRequestContext.cjs +5 -2
- package/lib/esm/auth/AuthInterceptor.js +6 -3
- package/lib/esm/auth/DecafAuthModule.js +1 -7
- package/lib/esm/decaf-model/DecafModelModule.js +6 -1
- package/lib/esm/decaf-model/FromModelController.js +122 -69
- package/lib/esm/decaf-model/decorators/utils.js +3 -2
- package/lib/esm/decaf-model/utils.js +9 -3
- package/lib/esm/decorators.js +3 -2
- package/lib/esm/index.js +3 -3
- package/lib/esm/request/DecafRequestContext.js +4 -1
- package/lib/types/decaf-model/FromModelController.d.cts +3 -0
- package/lib/types/decaf-model/FromModelController.d.mts +3 -0
- package/lib/types/index.d.cts +3 -3
- package/lib/types/index.d.mts +3 -3
- package/lib/types/request/DecafRequestContext.d.cts +1 -0
- package/lib/types/request/DecafRequestContext.d.mts +1 -0
- package/package.json +1 -1
|
@@ -9,16 +9,10 @@ import { Module } from "@nestjs/common";
|
|
|
9
9
|
import { APP_INTERCEPTOR } from "@nestjs/core";
|
|
10
10
|
import { AuthInterceptor } from "./AuthInterceptor.js";
|
|
11
11
|
import { AUTH_HANDLER } from "./constants.js";
|
|
12
|
-
import { DecafRequestHandlerInterceptor } from "./../interceptors/DecafRequestHandlerInterceptor.js";
|
|
13
12
|
let DecafAuthModule = DecafAuthModule_1 = class DecafAuthModule {
|
|
14
13
|
static forRoot(options = {}) {
|
|
15
14
|
const providers = [
|
|
16
15
|
AuthInterceptor,
|
|
17
|
-
DecafRequestHandlerInterceptor,
|
|
18
|
-
{
|
|
19
|
-
provide: APP_INTERCEPTOR,
|
|
20
|
-
useClass: DecafRequestHandlerInterceptor,
|
|
21
|
-
},
|
|
22
16
|
];
|
|
23
17
|
if (options.handler) {
|
|
24
18
|
providers.push(options.handler);
|
|
@@ -45,4 +39,4 @@ DecafAuthModule = DecafAuthModule_1 = __decorate([
|
|
|
45
39
|
Module({})
|
|
46
40
|
], DecafAuthModule);
|
|
47
41
|
export { DecafAuthModule };
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZBdXRoTW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvRGVjYWZBdXRoTW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPLEVBQWlCLE1BQU0sRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSw2QkFBMEI7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSx1QkFBb0I7QUFTcEMsSUFBTSxlQUFlLHVCQUFyQixNQUFNLGVBQWU7SUFDMUIsTUFBTSxDQUFDLE9BQU8sQ0FDWixVQUFrQyxFQUFFO1FBRXBDLE1BQU0sU0FBUyxHQUErQjtZQUM1QyxlQUFlO1NBQ2hCLENBQUM7UUFFRixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU87YUFDMUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLFNBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUN4QixPQUFPLEVBQUUsZUFBZTtnQkFDeEIsV0FBVyxFQUFFLGVBQWU7YUFDN0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU87WUFDTCxNQUFNLEVBQUUsaUJBQWU7WUFDdkIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSztZQUMvQixTQUFTO1lBQ1QsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQztTQUN6QyxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUE7QUE5QlksZUFBZTtJQUQzQixNQUFNLENBQUMsRUFBRSxDQUFDO0dBQ0UsZUFBZSxDQThCM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljTW9kdWxlLCBNb2R1bGUsIFR5cGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEFQUF9JTlRFUkNFUFRPUiB9IGZyb20gXCJAbmVzdGpzL2NvcmVcIjtcblxuaW1wb3J0IHsgQXV0aEludGVyY2VwdG9yIH0gZnJvbSBcIi4vQXV0aEludGVyY2VwdG9yXCI7XG5pbXBvcnQgeyBBVVRIX0hBTkRMRVIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEF1dGhIYW5kbGVyIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbmV4cG9ydCB0eXBlIERlY2FmQXV0aE1vZHVsZU9wdGlvbnMgPSB7XG4gIGdsb2JhbD86IGJvb2xlYW47XG4gIGhhbmRsZXI/OiBUeXBlPEF1dGhIYW5kbGVyPjtcbn07XG5cbkBNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgRGVjYWZBdXRoTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoXG4gICAgb3B0aW9uczogRGVjYWZBdXRoTW9kdWxlT3B0aW9ucyA9IHt9XG4gICk6IER5bmFtaWNNb2R1bGUge1xuICAgIGNvbnN0IHByb3ZpZGVyczogRHluYW1pY01vZHVsZVtcInByb3ZpZGVyc1wiXSA9IFtcbiAgICAgIEF1dGhJbnRlcmNlcHRvcixcbiAgICBdO1xuXG4gICAgaWYgKG9wdGlvbnMuaGFuZGxlcikge1xuICAgICAgcHJvdmlkZXJzLnB1c2gob3B0aW9ucy5oYW5kbGVyKTtcbiAgICAgIHByb3ZpZGVycy5wdXNoKHtcbiAgICAgICAgcHJvdmlkZTogQVVUSF9IQU5ETEVSLFxuICAgICAgICB1c2VDbGFzczogb3B0aW9ucy5oYW5kbGVyLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZ2xvYmFsKSB7XG4gICAgICAocHJvdmlkZXJzIGFzIGFueVtdKS5wdXNoKHtcbiAgICAgICAgcHJvdmlkZTogQVBQX0lOVEVSQ0VQVE9SLFxuICAgICAgICB1c2VFeGlzdGluZzogQXV0aEludGVyY2VwdG9yLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZHVsZTogRGVjYWZBdXRoTW9kdWxlLFxuICAgICAgZ2xvYmFsOiBvcHRpb25zLmdsb2JhbCA/PyBmYWxzZSxcbiAgICAgIHByb3ZpZGVycyxcbiAgICAgIGV4cG9ydHM6IFtBdXRoSW50ZXJjZXB0b3IsIEFVVEhfSEFORExFUl0sXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -38,6 +38,11 @@ export function getModuleFor(flavour) {
|
|
|
38
38
|
const log = this.log.for(this.forRoot);
|
|
39
39
|
log.info(`Generating controllers for flavour...`);
|
|
40
40
|
const trackedModels = Adapter.models(flavour).filter((model) => this.isExposed(model, options.controllerExposure));
|
|
41
|
+
// Controllers always rely on a backing ModelService, even when Nest providers
|
|
42
|
+
// are not auto-registered. Warm the singleton registry here so shutdown can
|
|
43
|
+
// see the live services created for the generated controllers.
|
|
44
|
+
for (const model of trackedModels)
|
|
45
|
+
ModelService.forModel(model);
|
|
41
46
|
let modelServices = [];
|
|
42
47
|
if (options.autoServices) {
|
|
43
48
|
log.info("Auto-services enabled. Initializing service generation.");
|
|
@@ -67,4 +72,4 @@ export function getModuleFor(flavour) {
|
|
|
67
72
|
});
|
|
68
73
|
return DecafModelModule;
|
|
69
74
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZNb2RlbE1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNhZi1tb2RlbC9EZWNhZk1vZGVsTW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBaUIsTUFBTSxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlDQUE4QjtBQUc1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBcUI7QUFHNUMsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFlOztJQUUxQyxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjs7aUJBQ0osUUFBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxBQUFsRCxDQUFtRDtRQUV0RSxNQUFNLENBQUMsbUJBQW1CLENBQ3hCLE1BQTZCO1lBRTdCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDNUIsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksU0FBUztnQkFDL0IsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBWSxDQUFDO2FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sQ0FBQyxTQUFTLENBQ2QsS0FBNEIsRUFDNUIsUUFBNkM7WUFFN0MsTUFBTSxRQUFRLEdBQUcsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxHQUNULE9BQU8sUUFBUSxLQUFLLFdBQVc7Z0JBQzdCLENBQUMsQ0FBQyxRQUFRO2dCQUNWLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFFdEQsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzlDLElBQUksS0FBSyxLQUFLLElBQUk7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxDQUFDLE9BQU8sQ0FDWixPQUFlLEVBQ2YsVUFBdUMsRUFBRTtZQUV6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsR0FBRyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBRWxELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQ2xELENBQUM7WUFFRiw4RUFBOEU7WUFDOUUsNEVBQTRFO1lBQzVFLCtEQUErRDtZQUMvRCxLQUFLLE1BQU0sS0FBSyxJQUFJLGFBQWE7Z0JBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFZLENBQUMsQ0FBQztZQUV2RSxJQUFJLGFBQWEsR0FBZSxFQUFFLENBQUM7WUFDbkMsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztnQkFDcEUsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDeEQsR0FBRyxDQUFDLElBQUksQ0FDTiw0QkFBNEIsYUFBYSxDQUFDLE1BQU0sd0JBQXdCLENBQ3pFLENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQTBDLEVBQUUsQ0FBQztZQUNqRSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ25DLGNBQWMsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDOUMsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUM5QyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FDNUUsQ0FBQztZQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxXQUFXLENBQUMsTUFBTSxjQUFjLENBQUMsQ0FBQztZQUV4RCxPQUFPO2dCQUNMLE1BQU0sRUFBRSxrQkFBZ0I7Z0JBQ3hCLFdBQVc7Z0JBQ1gsU0FBUyxFQUFFO29CQUNULEdBQUcsYUFBYTtpQkFDakI7YUFDRixDQUFDO1FBQ0osQ0FBQzs7SUF0RUcsZ0JBQWdCO1FBRHJCLE1BQU0sQ0FBQyxFQUFFLENBQUM7T0FDTCxnQkFBZ0IsQ0F1RXJCO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7UUFDdEMsS0FBSyxFQUFFLGNBQWMsT0FBTyxFQUFFO0tBQy9CLENBQUMsQ0FBQztJQUNILE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER5bmFtaWNNb2R1bGUsIE1vZHVsZSwgUHJvdmlkZXIgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEFkYXB0ZXIsIE1vZGVsU2VydmljZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRnJvbU1vZGVsQ29udHJvbGxlciB9IGZyb20gXCIuL0Zyb21Nb2RlbENvbnRyb2xsZXJcIjtcbmltcG9ydCB7IERlY2FmTW9kdWxlT3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgTW9kZWwsIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgREVDQUZfRVhQT1NFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHR5cGUgeyBNb2RlbENvbnRyb2xsZXJGYWN0b3J5Q29uZmlnIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItaHR0cC9zZXJ2ZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZHVsZUZvcihmbGF2b3VyOiBzdHJpbmcpIHtcbiAgQE1vZHVsZSh7fSlcbiAgY2xhc3MgRGVjYWZNb2RlbE1vZHVsZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IGxvZyA9IExvZ2dpbmcuZm9yKERlY2FmTW9kZWxNb2R1bGUubmFtZSkuZm9yKGZsYXZvdXIpO1xuXG4gICAgc3RhdGljIGNyZWF0ZU1vZGVsU2VydmljZXM8VCBleHRlbmRzIE1vZGVsPGJvb2xlYW4+PihcbiAgICAgIG1vZGVsczogTW9kZWxDb25zdHJ1Y3RvcjxUPltdXG4gICAgKTogUHJvdmlkZXJbXSB7XG4gICAgICByZXR1cm4gbW9kZWxzLm1hcCgobW9kZWwpID0+ICh7XG4gICAgICAgIHByb3ZpZGU6IGAke21vZGVsLm5hbWV9U2VydmljZWAsXG4gICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IE1vZGVsU2VydmljZS5mb3JNb2RlbChtb2RlbCBhcyBhbnkpLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc0V4cG9zZWQoXG4gICAgICBtb2RlbDogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICAgICAgZXhwb3N1cmU/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwgc3RyaW5nW10+XG4gICAgKTogYm9vbGVhbiB7XG4gICAgICBjb25zdCBvdmVycmlkZSA9IGV4cG9zdXJlPy5bbW9kZWwubmFtZV07XG4gICAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAgIHR5cGVvZiBvdmVycmlkZSAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgID8gb3ZlcnJpZGVcbiAgICAgICAgICA6IE1ldGFkYXRhLmdldChtb2RlbCwgTWV0YWRhdGEua2V5KERFQ0FGX0VYUE9TRSkpO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5pbmNsdWRlcyhmbGF2b3VyKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZm9yUm9vdChcbiAgICAgIGZsYXZvdXI6IHN0cmluZyxcbiAgICAgIG9wdGlvbnM6IFBhcnRpYWw8RGVjYWZNb2R1bGVPcHRpb25zPiA9IHt9XG4gICAgKTogRHluYW1pY01vZHVsZSB7XG4gICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5mb3JSb290KTtcbiAgICAgIGxvZy5pbmZvKGBHZW5lcmF0aW5nIGNvbnRyb2xsZXJzIGZvciBmbGF2b3VyLi4uYCk7XG5cbiAgICAgIGNvbnN0IHRyYWNrZWRNb2RlbHMgPSBBZGFwdGVyLm1vZGVscyhmbGF2b3VyKS5maWx0ZXIoKG1vZGVsKSA9PlxuICAgICAgICB0aGlzLmlzRXhwb3NlZChtb2RlbCwgb3B0aW9ucy5jb250cm9sbGVyRXhwb3N1cmUpXG4gICAgICApO1xuXG4gICAgICAvLyBDb250cm9sbGVycyBhbHdheXMgcmVseSBvbiBhIGJhY2tpbmcgTW9kZWxTZXJ2aWNlLCBldmVuIHdoZW4gTmVzdCBwcm92aWRlcnNcbiAgICAgIC8vIGFyZSBub3QgYXV0by1yZWdpc3RlcmVkLiBXYXJtIHRoZSBzaW5nbGV0b24gcmVnaXN0cnkgaGVyZSBzbyBzaHV0ZG93biBjYW5cbiAgICAgIC8vIHNlZSB0aGUgbGl2ZSBzZXJ2aWNlcyBjcmVhdGVkIGZvciB0aGUgZ2VuZXJhdGVkIGNvbnRyb2xsZXJzLlxuICAgICAgZm9yIChjb25zdCBtb2RlbCBvZiB0cmFja2VkTW9kZWxzKSBNb2RlbFNlcnZpY2UuZm9yTW9kZWwobW9kZWwgYXMgYW55KTtcblxuICAgICAgbGV0IG1vZGVsU2VydmljZXM6IFByb3ZpZGVyW10gPSBbXTtcbiAgICAgIGlmIChvcHRpb25zLmF1dG9TZXJ2aWNlcykge1xuICAgICAgICBsb2cuaW5mbyhcIkF1dG8tc2VydmljZXMgZW5hYmxlZC4gSW5pdGlhbGl6aW5nIHNlcnZpY2UgZ2VuZXJhdGlvbi5cIik7XG4gICAgICAgIG1vZGVsU2VydmljZXMgPSB0aGlzLmNyZWF0ZU1vZGVsU2VydmljZXModHJhY2tlZE1vZGVscyk7XG4gICAgICAgIGxvZy5pbmZvKFxuICAgICAgICAgIGBBdXRvLXNlcnZpY2VzIGNvbXBsZXRlZC4gJHttb2RlbFNlcnZpY2VzLmxlbmd0aH0gc2VydmljZXMgaW5pdGlhbGl6ZWQuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBnbG9iYWxEZWZhdWx0czogUGFydGlhbDxNb2RlbENvbnRyb2xsZXJGYWN0b3J5Q29uZmlnPiA9IHt9O1xuICAgICAgaWYgKG9wdGlvbnMuYWdncmVnYXRpb25zID09PSBmYWxzZSkge1xuICAgICAgICBnbG9iYWxEZWZhdWx0cy5hbGxvd0dyb3VwaW5nUXVlcmllcyA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250cm9sbGVycyA9IHRyYWNrZWRNb2RlbHMubWFwKChtb2RlbCkgPT5cbiAgICAgICAgRnJvbU1vZGVsQ29udHJvbGxlci5jcmVhdGUobW9kZWwsIG9wdGlvbnMuY29udHJvbGxlckNvbmZpZywgZ2xvYmFsRGVmYXVsdHMpXG4gICAgICApO1xuICAgICAgbG9nLmluZm8oYEdlbmVyYXRlZCAke2NvbnRyb2xsZXJzLmxlbmd0aH0gY29udHJvbGxlcnNgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW9kdWxlOiBEZWNhZk1vZGVsTW9kdWxlLFxuICAgICAgICBjb250cm9sbGVycyxcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgLi4ubW9kZWxTZXJ2aWNlcyxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIE9iamVjdC5hc3NpZ24oRGVjYWZNb2RlbE1vZHVsZSwgXCJuYW1lXCIsIHtcbiAgICB2YWx1ZTogYERlY2FmTW9kdWxlJHtmbGF2b3VyfWAsXG4gIH0pO1xuICByZXR1cm4gRGVjYWZNb2RlbE1vZHVsZTtcbn1cbiJdfQ==
|