@stemy/backend 5.2.1 → 6.0.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/commands/clear-command.d.ts +6 -6
- package/commands/fixtures-command.d.ts +9 -9
- package/commands/index.d.ts +2 -2
- package/common-types.d.ts +325 -326
- package/esm2020/services/assets.mjs +2 -2
- package/esm2022/commands/clear-command.mjs +15 -0
- package/esm2022/commands/fixtures-command.mjs +26 -0
- package/esm2022/commands/index.mjs +7 -0
- package/esm2022/common-types.mjs +26 -0
- package/esm2022/fixtures/index.mjs +5 -0
- package/esm2022/fixtures/ttl.fixture.mjs +23 -0
- package/esm2022/public_api.mjs +378 -0
- package/esm2022/requests/asset-image-params.mjs +60 -0
- package/esm2022/rest-controllers/assets.controller.mjs +177 -0
- package/esm2022/rest-controllers/auth.controller.mjs +57 -0
- package/esm2022/rest-controllers/gallery.controller.mjs +27 -0
- package/esm2022/rest-controllers/progresses.controller.mjs +38 -0
- package/esm2022/rest-controllers/terminal-styles.mjs +67 -0
- package/esm2022/rest-controllers/terminal.controller.mjs +132 -0
- package/esm2022/rest-middlewares/container.middleware.mjs +22 -0
- package/esm2022/rest-middlewares/error-handler.middleware.mjs +79 -0
- package/esm2022/rest-middlewares/language.middleware.mjs +21 -0
- package/esm2022/rest-middlewares/request-ended.middleware.mjs +26 -0
- package/esm2022/rest-middlewares/request-started.middleware.mjs +25 -0
- package/esm2022/services/asset-processor.mjs +90 -0
- package/esm2022/services/asset-resolver.mjs +36 -0
- package/esm2022/services/assets.mjs +154 -0
- package/esm2022/services/backend-provider.mjs +83 -0
- package/esm2022/services/cache-processor.mjs +16 -0
- package/esm2022/services/cache.mjs +70 -0
- package/esm2022/services/configuration.mjs +68 -0
- package/esm2022/services/drivers/asset-grid.driver.mjs +27 -0
- package/esm2022/services/drivers/asset-local.driver.mjs +41 -0
- package/esm2022/services/endpoint-provider.mjs +13 -0
- package/esm2022/services/entities/asset.mjs +61 -0
- package/esm2022/services/entities/base-entity.mjs +32 -0
- package/esm2022/services/entities/lazy-asset.mjs +87 -0
- package/esm2022/services/entities/progress.mjs +182 -0
- package/esm2022/services/entities/temp-asset.mjs +53 -0
- package/esm2022/services/fixtures.mjs +38 -0
- package/esm2022/services/gallery-cache.mjs +29 -0
- package/esm2022/services/gallery-image.mjs +42 -0
- package/esm2022/services/gallery.mjs +124 -0
- package/esm2022/services/id-generator.mjs +49 -0
- package/esm2022/services/job-manager.mjs +198 -0
- package/esm2022/services/lazy-assets.mjs +68 -0
- package/esm2022/services/logger.mjs +26 -0
- package/esm2022/services/mail-sender.mjs +42 -0
- package/esm2022/services/memory-cache.mjs +61 -0
- package/esm2022/services/mongo-connector.mjs +36 -0
- package/esm2022/services/open-api.mjs +124 -0
- package/esm2022/services/progresses.mjs +93 -0
- package/esm2022/services/template-renderer.mjs +71 -0
- package/esm2022/services/terminal-manager.mjs +88 -0
- package/esm2022/services/token-generator.mjs +37 -0
- package/esm2022/services/translation-provider.mjs +39 -0
- package/esm2022/services/translator.mjs +67 -0
- package/esm2022/services/user-manager.mjs +27 -0
- package/esm2022/socket-controllers/progress.controller.mjs +63 -0
- package/esm2022/socket-controllers/terminal.controller.mjs +61 -0
- package/esm2022/socket-controllers/terminal.mjs +89 -0
- package/esm2022/socket-middlewares/compression.middleware.mjs +14 -0
- package/esm2022/static.mjs +23 -0
- package/esm2022/stemy-backend.mjs +5 -0
- package/esm2022/utilities/base-doc.mjs +33 -0
- package/esm2022/utilities/decorators.mjs +51 -0
- package/esm2022/utilities/di-container.mjs +88 -0
- package/esm2022/utilities/empty-job.mjs +13 -0
- package/esm2022/utilities/lazy-asset-generator.mjs +38 -0
- package/esm2022/utilities/mongoose.mjs +216 -0
- package/esm2022/utilities/tree.mjs +119 -0
- package/esm2022/utils.mjs +726 -0
- package/esm2022/validators.mjs +46 -0
- package/fesm2015/stemy-backend.mjs +1 -1
- package/fesm2015/stemy-backend.mjs.map +1 -1
- package/fesm2020/stemy-backend.mjs +1 -1
- package/fesm2020/stemy-backend.mjs.map +1 -1
- package/fesm2022/stemy-backend.mjs +4690 -0
- package/fesm2022/stemy-backend.mjs.map +1 -0
- package/fixtures/index.d.ts +2 -2
- package/fixtures/ttl.fixture.d.ts +7 -7
- package/index.d.ts +5 -5
- package/package.json +43 -49
- package/public_api.d.ts +44 -44
- package/requests/asset-image-params.d.ts +12 -12
- package/rest-controllers/assets.controller.d.ts +25 -27
- package/rest-controllers/auth.controller.d.ts +14 -14
- package/rest-controllers/gallery.controller.d.ts +6 -7
- package/rest-controllers/progresses.controller.d.ts +9 -9
- package/rest-controllers/terminal-styles.d.ts +2 -2
- package/rest-controllers/terminal.controller.d.ts +10 -10
- package/rest-middlewares/container.middleware.d.ts +8 -8
- package/rest-middlewares/error-handler.middleware.d.ts +13 -13
- package/rest-middlewares/language.middleware.d.ts +8 -8
- package/rest-middlewares/request-ended.middleware.d.ts +8 -8
- package/rest-middlewares/request-started.middleware.d.ts +8 -8
- package/services/asset-processor.d.ts +10 -11
- package/services/asset-resolver.d.ts +10 -10
- package/services/assets.d.ts +24 -26
- package/services/backend-provider.d.ts +19 -20
- package/services/cache-processor.d.ts +4 -4
- package/services/cache.d.ts +23 -23
- package/services/configuration.d.ts +15 -15
- package/services/drivers/asset-grid.driver.d.ts +11 -11
- package/services/drivers/asset-local.driver.d.ts +10 -11
- package/services/endpoint-provider.d.ts +4 -4
- package/services/entities/asset.d.ts +19 -21
- package/services/entities/base-entity.d.ts +13 -13
- package/services/entities/lazy-asset.d.ts +25 -25
- package/services/entities/progress.d.ts +49 -49
- package/services/entities/temp-asset.d.ts +20 -22
- package/services/fixtures.d.ts +8 -8
- package/services/gallery-cache.d.ts +8 -9
- package/services/gallery-image.d.ts +10 -11
- package/services/gallery.d.ts +13 -13
- package/services/id-generator.d.ts +11 -11
- package/services/job-manager.d.ts +35 -35
- package/services/lazy-assets.d.ts +22 -22
- package/services/logger.d.ts +8 -8
- package/services/mail-sender.d.ts +20 -20
- package/services/memory-cache.d.ts +10 -10
- package/services/mongo-connector.d.ts +12 -12
- package/services/open-api.d.ts +13 -13
- package/services/progresses.d.ts +20 -20
- package/services/template-renderer.d.ts +14 -14
- package/services/terminal-manager.d.ts +15 -15
- package/services/token-generator.d.ts +6 -6
- package/services/translation-provider.d.ts +9 -9
- package/services/translator.d.ts +15 -15
- package/services/user-manager.d.ts +6 -6
- package/socket-controllers/progress.controller.d.ts +10 -10
- package/socket-controllers/terminal.controller.d.ts +13 -13
- package/socket-controllers/terminal.d.ts +19 -20
- package/socket-middlewares/compression.middleware.d.ts +4 -4
- package/static.d.ts +2 -2
- package/utilities/base-doc.d.ts +40 -40
- package/utilities/decorators.d.ts +10 -10
- package/utilities/di-container.d.ts +43 -43
- package/utilities/empty-job.d.ts +4 -4
- package/utilities/lazy-asset-generator.d.ts +15 -15
- package/utilities/mongoose.d.ts +36 -36
- package/utilities/tree.d.ts +15 -15
- package/utils.d.ts +120 -123
- package/validators.d.ts +7 -7
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
+
import { inject, singleton } from "tsyringe";
|
|
3
|
+
import { getMetadataArgsStorage } from "routing-controllers";
|
|
4
|
+
import { routingControllersToSpec } from "routing-controllers-openapi";
|
|
5
|
+
import { defaultMetadataStorage } from "class-transformer/cjs/storage";
|
|
6
|
+
import { validationMetadatasToSchemas } from "class-validator-jsonschema";
|
|
7
|
+
import { ValidationTypes } from "class-validator";
|
|
8
|
+
import { isDefined, isFunction, isObject } from "../utils";
|
|
9
|
+
import { IsFile, IsObjectId } from "../validators";
|
|
10
|
+
import { DI_CONTAINER, OPENAPI_VALIDATION } from "../common-types";
|
|
11
|
+
let OpenApi = class OpenApi {
|
|
12
|
+
container;
|
|
13
|
+
customValidation;
|
|
14
|
+
docs;
|
|
15
|
+
docsStr;
|
|
16
|
+
get apiDocs() {
|
|
17
|
+
if (!this.docs)
|
|
18
|
+
this.docs = this.createApiDocs();
|
|
19
|
+
return this.docs;
|
|
20
|
+
}
|
|
21
|
+
get apiDocsStr() {
|
|
22
|
+
if (!this.docsStr)
|
|
23
|
+
this.docsStr = JSON.stringify(this.apiDocs);
|
|
24
|
+
return this.docsStr;
|
|
25
|
+
}
|
|
26
|
+
constructor(container, customValidation) {
|
|
27
|
+
this.container = container;
|
|
28
|
+
this.customValidation = customValidation;
|
|
29
|
+
this.docs = null;
|
|
30
|
+
}
|
|
31
|
+
async schemaToExample(src, req) {
|
|
32
|
+
const maybeRef = src;
|
|
33
|
+
if (maybeRef.$ref) {
|
|
34
|
+
const schemas = this.apiDocs.components.schemas;
|
|
35
|
+
const schema = maybeRef.$ref
|
|
36
|
+
.replace("#/components/schemas/", "")
|
|
37
|
+
.replace("#/definitions/", "");
|
|
38
|
+
return this.schemaToExample(schemas[schema], req);
|
|
39
|
+
}
|
|
40
|
+
let schema = src;
|
|
41
|
+
if (schema.oneOf) {
|
|
42
|
+
schema = Object.assign({}, schema, schema.oneOf[0]);
|
|
43
|
+
}
|
|
44
|
+
if (schema.type === "object") {
|
|
45
|
+
const result = {};
|
|
46
|
+
await Promise.all(Object.keys(schema.properties).map(async (key) => {
|
|
47
|
+
result[key] = await this.schemaToExample(schema.properties[key], req);
|
|
48
|
+
}));
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
if (schema.type === "array") {
|
|
52
|
+
return [await this.schemaToExample(schema.items, req)];
|
|
53
|
+
}
|
|
54
|
+
if (schema.type === "string") {
|
|
55
|
+
if (isDefined(schema.default)) {
|
|
56
|
+
if (isFunction(schema.default)) {
|
|
57
|
+
return schema.default(this.container);
|
|
58
|
+
}
|
|
59
|
+
return schema.default;
|
|
60
|
+
}
|
|
61
|
+
if (schema.format == "date") {
|
|
62
|
+
return new Date().toISOString().substr(0, 10);
|
|
63
|
+
}
|
|
64
|
+
if (schema.format == "date-time") {
|
|
65
|
+
return new Date().toISOString();
|
|
66
|
+
}
|
|
67
|
+
if (schema.enum) {
|
|
68
|
+
return schema.enum[0];
|
|
69
|
+
}
|
|
70
|
+
return "string";
|
|
71
|
+
}
|
|
72
|
+
if (schema.type === "number") {
|
|
73
|
+
return schema.default ?? 0;
|
|
74
|
+
}
|
|
75
|
+
else if (schema.type === "boolean") {
|
|
76
|
+
return schema.default ?? false;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
return schema.default ?? null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
createApiDocs() {
|
|
83
|
+
const storage = getMetadataArgsStorage();
|
|
84
|
+
const docs = routingControllersToSpec(storage);
|
|
85
|
+
// docs.basePath = "/api/";
|
|
86
|
+
docs.components = {
|
|
87
|
+
...(docs.components || {}),
|
|
88
|
+
schemas: validationMetadatasToSchemas({
|
|
89
|
+
classTransformerMetadataStorage: defaultMetadataStorage,
|
|
90
|
+
additionalConverters: {
|
|
91
|
+
[ValidationTypes.CUSTOM_VALIDATION]: (meta, options) => {
|
|
92
|
+
const res = isFunction(this.customValidation) ? this.customValidation(meta, options) : this.customValidation;
|
|
93
|
+
if (isObject(res))
|
|
94
|
+
return res;
|
|
95
|
+
const constraints = meta.constraints || [];
|
|
96
|
+
if (meta.constraintCls === IsFile) {
|
|
97
|
+
return {
|
|
98
|
+
multi: constraints[0] || false,
|
|
99
|
+
type: "file"
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (meta.constraintCls === IsObjectId) {
|
|
103
|
+
return {
|
|
104
|
+
endpoint: constraints[0] || false,
|
|
105
|
+
multi: constraints[1] || false,
|
|
106
|
+
type: "list"
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
})
|
|
113
|
+
};
|
|
114
|
+
return docs;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
OpenApi = __decorate([
|
|
118
|
+
singleton(),
|
|
119
|
+
__param(0, inject(DI_CONTAINER)),
|
|
120
|
+
__param(1, inject(OPENAPI_VALIDATION)),
|
|
121
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
122
|
+
], OpenApi);
|
|
123
|
+
export { OpenApi };
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvb3Blbi1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTNDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDekQsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLFlBQVksRUFBa0Msa0JBQWtCLEVBQW9CLE1BQU0saUJBQWlCLENBQUM7QUFHN0csSUFBTSxPQUFPLEdBQWIsTUFBTSxPQUFPO0lBZTRCO0lBQ007SUFkeEMsSUFBSSxDQUFnQjtJQUNwQixPQUFPLENBQVM7SUFFMUIsSUFBSSxPQUFPO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFBNEMsU0FBK0IsRUFDekIsZ0JBQW1DO1FBRHpDLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDakYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBbUMsRUFBRSxHQUFjO1FBQ3JFLE1BQU0sUUFBUSxHQUFHLEdBQXNCLENBQUM7UUFDeEMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ2hELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJO2lCQUN2QixPQUFPLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDO2lCQUNwQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxNQUFNLEdBQUcsR0FBbUIsQ0FBQztRQUNqQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO2dCQUM3RCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNKLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQzdCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzFDLENBQUM7Z0JBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLENBQUM7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE9BQU8sTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGFBQWE7UUFDbkIsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQywyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNkLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztZQUMxQixPQUFPLEVBQUUsNEJBQTRCLENBQUM7Z0JBQ2xDLCtCQUErQixFQUFFLHNCQUFzQjtnQkFDdkQsb0JBQW9CLEVBQUU7b0JBQ2xCLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUU7d0JBQ25ELE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO3dCQUM3RyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUM7NEJBQUUsT0FBTyxHQUFHLENBQUM7d0JBQzlCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO3dCQUMzQyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssTUFBTSxFQUFFLENBQUM7NEJBQ2hDLE9BQU87Z0NBQ0gsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO2dDQUM5QixJQUFJLEVBQUUsTUFBTTs2QkFDUixDQUFDO3dCQUNiLENBQUM7d0JBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFVBQVUsRUFBRSxDQUFDOzRCQUNwQyxPQUFPO2dDQUNILFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSztnQ0FDakMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO2dDQUM5QixJQUFJLEVBQUUsTUFBTTs2QkFDUixDQUFDO3dCQUNiLENBQUM7d0JBQ0QsT0FBTyxJQUFJLENBQUM7b0JBQ2hCLENBQUM7aUJBQ0o7YUFDSixDQUFDO1NBQ0wsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSixDQUFBO0FBdkdZLE9BQU87SUFEbkIsU0FBUyxFQUFFO0lBZ0JLLFdBQUEsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ3BCLFdBQUEsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7O0dBaEI5QixPQUFPLENBdUduQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge09wZW5BUElPYmplY3QsIFJlZmVyZW5jZU9iamVjdCwgU2NoZW1hT2JqZWN0fSBmcm9tIFwib3BlbmFwaTMtdHNcIjtcclxuaW1wb3J0IHtnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlfSBmcm9tIFwicm91dGluZy1jb250cm9sbGVyc1wiO1xyXG5pbXBvcnQge3JvdXRpbmdDb250cm9sbGVyc1RvU3BlY30gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnMtb3BlbmFwaVwiO1xyXG5pbXBvcnQge2RlZmF1bHRNZXRhZGF0YVN0b3JhZ2V9IGZyb20gXCJjbGFzcy10cmFuc2Zvcm1lci9janMvc3RvcmFnZVwiO1xyXG5pbXBvcnQge3ZhbGlkYXRpb25NZXRhZGF0YXNUb1NjaGVtYXN9IGZyb20gXCJjbGFzcy12YWxpZGF0b3ItanNvbnNjaGVtYVwiO1xyXG5pbXBvcnQge1ZhbGlkYXRpb25UeXBlc30gZnJvbSBcImNsYXNzLXZhbGlkYXRvclwiO1xyXG5pbXBvcnQge2lzRGVmaW5lZCwgaXNGdW5jdGlvbiwgaXNPYmplY3R9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQge0lzRmlsZSwgSXNPYmplY3RJZH0gZnJvbSBcIi4uL3ZhbGlkYXRvcnNcIjtcclxuaW1wb3J0IHtESV9DT05UQUlORVIsIElEZXBlbmRlbmN5Q29udGFpbmVyLCBJUmVxdWVzdCwgT1BFTkFQSV9WQUxJREFUSU9OLCBPcGVuQXBpVmFsaWRhdGlvbn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQHNpbmdsZXRvbigpXHJcbmV4cG9ydCBjbGFzcyBPcGVuQXBpIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZG9jczogT3BlbkFQSU9iamVjdDtcclxuICAgIHByb3RlY3RlZCBkb2NzU3RyOiBzdHJpbmc7XHJcblxyXG4gICAgZ2V0IGFwaURvY3MoKTogT3BlbkFQSU9iamVjdCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRvY3MpIHRoaXMuZG9jcyA9IHRoaXMuY3JlYXRlQXBpRG9jcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRvY3M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGFwaURvY3NTdHIoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIXRoaXMuZG9jc1N0cikgdGhpcy5kb2NzU3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy5hcGlEb2NzKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kb2NzU3RyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBpbmplY3QoRElfQ09OVEFJTkVSKSBwcm90ZWN0ZWQgY29udGFpbmVyOiBJRGVwZW5kZW5jeUNvbnRhaW5lcixcclxuICAgICAgICAgICAgICAgIEBpbmplY3QoT1BFTkFQSV9WQUxJREFUSU9OKSBwcm90ZWN0ZWQgY3VzdG9tVmFsaWRhdGlvbjogT3BlbkFwaVZhbGlkYXRpb24pIHtcclxuICAgICAgICB0aGlzLmRvY3MgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNjaGVtYVRvRXhhbXBsZShzcmM6IFJlZmVyZW5jZU9iamVjdCB8IFNjaGVtYU9iamVjdCwgcmVxPzogSVJlcXVlc3QpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IG1heWJlUmVmID0gc3JjIGFzIFJlZmVyZW5jZU9iamVjdDtcclxuICAgICAgICBpZiAobWF5YmVSZWYuJHJlZikge1xyXG4gICAgICAgICAgICBjb25zdCBzY2hlbWFzID0gdGhpcy5hcGlEb2NzLmNvbXBvbmVudHMuc2NoZW1hcztcclxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hID0gbWF5YmVSZWYuJHJlZlxyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXCIjL2NvbXBvbmVudHMvc2NoZW1hcy9cIiwgXCJcIilcclxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiIy9kZWZpbml0aW9ucy9cIiwgXCJcIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNjaGVtYVRvRXhhbXBsZShzY2hlbWFzW3NjaGVtYV0sIHJlcSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzY2hlbWEgPSBzcmMgYXMgU2NoZW1hT2JqZWN0O1xyXG4gICAgICAgIGlmIChzY2hlbWEub25lT2YpIHtcclxuICAgICAgICAgICAgc2NoZW1hID0gT2JqZWN0LmFzc2lnbih7fSwgc2NoZW1hLCBzY2hlbWEub25lT2ZbMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XHJcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKE9iamVjdC5rZXlzKHNjaGVtYS5wcm9wZXJ0aWVzKS5tYXAoYXN5bmMga2V5ID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gYXdhaXQgdGhpcy5zY2hlbWFUb0V4YW1wbGUoc2NoZW1hLnByb3BlcnRpZXNba2V5XSwgcmVxKTtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2NoZW1hLnR5cGUgPT09IFwiYXJyYXlcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gW2F3YWl0IHRoaXMuc2NoZW1hVG9FeGFtcGxlKHNjaGVtYS5pdGVtcywgcmVxKV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBpZiAoaXNEZWZpbmVkKHNjaGVtYS5kZWZhdWx0KSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oc2NoZW1hLmRlZmF1bHQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjaGVtYS5kZWZhdWx0KHRoaXMuY29udGFpbmVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBzY2hlbWEuZGVmYXVsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2NoZW1hLmZvcm1hdCA9PSBcImRhdGVcIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMTApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzY2hlbWEuZm9ybWF0ID09IFwiZGF0ZS10aW1lXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNjaGVtYS5lbnVtKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NoZW1hLmVudW1bMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFwic3RyaW5nXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY2hlbWEudHlwZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gc2NoZW1hLmRlZmF1bHQgPz8gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS50eXBlID09PSBcImJvb2xlYW5cIikge1xyXG4gICAgICAgICAgICByZXR1cm4gc2NoZW1hLmRlZmF1bHQgPz8gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNjaGVtYS5kZWZhdWx0ID8/IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjcmVhdGVBcGlEb2NzKCk6IE9wZW5BUElPYmplY3Qge1xyXG4gICAgICAgIGNvbnN0IHN0b3JhZ2UgPSBnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlKCk7XHJcbiAgICAgICAgY29uc3QgZG9jcyA9IHJvdXRpbmdDb250cm9sbGVyc1RvU3BlYyhzdG9yYWdlKTtcclxuICAgICAgICAvLyBkb2NzLmJhc2VQYXRoID0gXCIvYXBpL1wiO1xyXG4gICAgICAgIGRvY3MuY29tcG9uZW50cyA9IHtcclxuICAgICAgICAgICAgLi4uKGRvY3MuY29tcG9uZW50cyB8fCB7fSksXHJcbiAgICAgICAgICAgIHNjaGVtYXM6IHZhbGlkYXRpb25NZXRhZGF0YXNUb1NjaGVtYXMoe1xyXG4gICAgICAgICAgICAgICAgY2xhc3NUcmFuc2Zvcm1lck1ldGFkYXRhU3RvcmFnZTogZGVmYXVsdE1ldGFkYXRhU3RvcmFnZSxcclxuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb252ZXJ0ZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgW1ZhbGlkYXRpb25UeXBlcy5DVVNUT01fVkFMSURBVElPTl06IChtZXRhLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGlzRnVuY3Rpb24odGhpcy5jdXN0b21WYWxpZGF0aW9uKSA/IHRoaXMuY3VzdG9tVmFsaWRhdGlvbihtZXRhLCBvcHRpb25zKSA6IHRoaXMuY3VzdG9tVmFsaWRhdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHJlcykpIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gbWV0YS5jb25zdHJhaW50cyB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGEuY29uc3RyYWludENscyA9PT0gSXNGaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpOiBjb25zdHJhaW50c1swXSB8fCBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGEuY29uc3RyYWludENscyA9PT0gSXNPYmplY3RJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogY29uc3RyYWludHNbMF0gfHwgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGk6IGNvbnN0cmFpbnRzWzFdIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwibGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gZG9jcztcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { singleton } from "tsyringe";
|
|
3
|
+
import { ObjectId } from "bson";
|
|
4
|
+
import { promiseTimeout } from "../utils";
|
|
5
|
+
import { MongoConnector } from "./mongo-connector";
|
|
6
|
+
import { JobManager } from "./job-manager";
|
|
7
|
+
import { Progress } from "./entities/progress";
|
|
8
|
+
let Progresses = class Progresses {
|
|
9
|
+
connector;
|
|
10
|
+
jobMan;
|
|
11
|
+
collection;
|
|
12
|
+
progresses;
|
|
13
|
+
constructor(connector, jobMan) {
|
|
14
|
+
this.connector = connector;
|
|
15
|
+
this.jobMan = jobMan;
|
|
16
|
+
this.collection = connector.database.collection("progresses");
|
|
17
|
+
this.progresses = {};
|
|
18
|
+
this.jobMan.on("progress-changed", progress => {
|
|
19
|
+
const id = progress.id;
|
|
20
|
+
this.progresses[id] = new Progress(new ObjectId(id), progress, this.collection);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async waitToFinish(id) {
|
|
24
|
+
return Promise.race([
|
|
25
|
+
this.waitForProgress(id, async () => {
|
|
26
|
+
let progress = this.progresses[id];
|
|
27
|
+
if (!progress || progress.percent < 100) {
|
|
28
|
+
progress = await this.get(id);
|
|
29
|
+
}
|
|
30
|
+
if (!progress) {
|
|
31
|
+
throw new Error(`Progress does not exists with id: ${id}`);
|
|
32
|
+
}
|
|
33
|
+
return progress;
|
|
34
|
+
}, 500),
|
|
35
|
+
this.waitForProgress(id, async () => {
|
|
36
|
+
return this.progresses[id] || null;
|
|
37
|
+
}, 25)
|
|
38
|
+
]);
|
|
39
|
+
}
|
|
40
|
+
async get(id) {
|
|
41
|
+
return !id ? null : this.find({ _id: new ObjectId(id) });
|
|
42
|
+
}
|
|
43
|
+
async find(where) {
|
|
44
|
+
const data = await this.collection.findOne(where);
|
|
45
|
+
return !data ? null : new Progress(data._id, data, this.collection);
|
|
46
|
+
}
|
|
47
|
+
async create(max = 100) {
|
|
48
|
+
if (isNaN(max) || max <= 0) {
|
|
49
|
+
throw new Error(`Max progress value must be bigger than zero`);
|
|
50
|
+
}
|
|
51
|
+
const data = {
|
|
52
|
+
current: 0,
|
|
53
|
+
max: max,
|
|
54
|
+
message: "",
|
|
55
|
+
error: "",
|
|
56
|
+
canceled: false
|
|
57
|
+
};
|
|
58
|
+
const res = await this.collection.insertOne(data);
|
|
59
|
+
return new Progress(res.insertedId, data, this.collection);
|
|
60
|
+
}
|
|
61
|
+
async remove(id) {
|
|
62
|
+
await this.collection.deleteOne({ _id: new ObjectId(id) });
|
|
63
|
+
return id;
|
|
64
|
+
}
|
|
65
|
+
async waitForProgress(id, cb, delay) {
|
|
66
|
+
let isFinished = false;
|
|
67
|
+
let progress = null;
|
|
68
|
+
let waitTime = 0;
|
|
69
|
+
while (!isFinished) {
|
|
70
|
+
progress = await cb();
|
|
71
|
+
waitTime += delay;
|
|
72
|
+
if (progress) {
|
|
73
|
+
if (progress.error) {
|
|
74
|
+
throw new Error(progress.error);
|
|
75
|
+
}
|
|
76
|
+
isFinished = progress.percent >= 100;
|
|
77
|
+
}
|
|
78
|
+
if (!isFinished) {
|
|
79
|
+
if (waitTime >= this.jobMan.maxTimeout) {
|
|
80
|
+
throw new Error(`Progress with id: ${id} probably never will be finished!`);
|
|
81
|
+
}
|
|
82
|
+
await promiseTimeout(delay);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return progress;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
Progresses = __decorate([
|
|
89
|
+
singleton(),
|
|
90
|
+
__metadata("design:paramtypes", [MongoConnector, JobManager])
|
|
91
|
+
], Progresses);
|
|
92
|
+
export { Progresses };
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Nlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9wcm9ncmVzc2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHdEMsSUFBTSxVQUFVLEdBQWhCLE1BQU0sVUFBVTtJQUtFO0lBQW9DO0lBSC9DLFVBQVUsQ0FBaUM7SUFDM0MsVUFBVSxDQUE0QjtJQUVoRCxZQUFxQixTQUF5QixFQUFXLE1BQWtCO1FBQXRELGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQVcsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUN2RSxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQzFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFZLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVE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QUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLFFBQVEsSUFBSSxLQUFLLENBQUM7WUFDbEIsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDWCxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7Z0JBQ0QsVUFBVSxHQUFHLFFBQVEsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO2dCQUNoRixDQUFDO2dCQUNELE1BQU0sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKLENBQUE7QUFuRlksVUFBVTtJQUR0QixTQUFTLEVBQUU7cUNBTXdCLGNBQWMsRUFBbUIsVUFBVTtHQUxsRSxVQUFVLENBbUZ0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IHtDb2xsZWN0aW9ufSBmcm9tIFwibW9uZ29kYlwiO1xyXG5pbXBvcnQge0ZpbHRlclF1ZXJ5fSBmcm9tIFwibW9uZ29vc2VcIjtcclxuaW1wb3J0IHtJUHJvZ3Jlc3N9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtwcm9taXNlVGltZW91dH0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gXCIuL21vbmdvLWNvbm5lY3RvclwiO1xyXG5pbXBvcnQge0pvYk1hbmFnZXJ9IGZyb20gXCIuL2pvYi1tYW5hZ2VyXCI7XHJcbmltcG9ydCB7UHJvZ3Jlc3N9IGZyb20gXCIuL2VudGl0aWVzL3Byb2dyZXNzXCI7XHJcblxyXG5Ac2luZ2xldG9uKClcclxuZXhwb3J0IGNsYXNzIFByb2dyZXNzZXMge1xyXG5cclxuICAgIHByb3RlY3RlZCBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFBhcnRpYWw8SVByb2dyZXNzPj47XHJcbiAgICBwcm90ZWN0ZWQgcHJvZ3Jlc3Nlczoge1tpZDogc3RyaW5nXTogSVByb2dyZXNzfTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb25uZWN0b3I6IE1vbmdvQ29ubmVjdG9yLCByZWFkb25seSBqb2JNYW46IEpvYk1hbmFnZXIpIHtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb24gPSBjb25uZWN0b3IuZGF0YWJhc2UuY29sbGVjdGlvbihcInByb2dyZXNzZXNcIik7XHJcbiAgICAgICAgdGhpcy5wcm9ncmVzc2VzID0ge307XHJcbiAgICAgICAgdGhpcy5qb2JNYW4ub24oXCJwcm9ncmVzcy1jaGFuZ2VkXCIsIHByb2dyZXNzID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaWQgPSBwcm9ncmVzcy5pZCBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3Nlc1tpZF0gPSBuZXcgUHJvZ3Jlc3MobmV3IE9iamVjdElkKGlkKSwgcHJvZ3Jlc3MgYXMgYW55LCB0aGlzLmNvbGxlY3Rpb24pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHdhaXRUb0ZpbmlzaChpZDogc3RyaW5nKTogUHJvbWlzZTxJUHJvZ3Jlc3M+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcclxuICAgICAgICAgICAgdGhpcy53YWl0Rm9yUHJvZ3Jlc3MoaWQsIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBwcm9ncmVzcyA9IHRoaXMucHJvZ3Jlc3Nlc1tpZF07XHJcbiAgICAgICAgICAgICAgICBpZiAoIXByb2dyZXNzIHx8IHByb2dyZXNzLnBlcmNlbnQgPCAxMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyA9IGF3YWl0IHRoaXMuZ2V0KGlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghcHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2dyZXNzIGRvZXMgbm90IGV4aXN0cyB3aXRoIGlkOiAke2lkfWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb2dyZXNzO1xyXG4gICAgICAgICAgICB9LCA1MDApLFxyXG4gICAgICAgICAgICB0aGlzLndhaXRGb3JQcm9ncmVzcyhpZCwgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3Nlc1tpZF0gfHwgbnVsbDtcclxuICAgICAgICAgICAgfSwgMjUpXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0KGlkOiBzdHJpbmcpOiBQcm9taXNlPElQcm9ncmVzcz4ge1xyXG4gICAgICAgIHJldHVybiAhaWQgPyBudWxsIDogdGhpcy5maW5kKHtfaWQ6IG5ldyBPYmplY3RJZChpZCl9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaW5kKHdoZXJlOiBGaWx0ZXJRdWVyeTxJUHJvZ3Jlc3M+KTogUHJvbWlzZTxJUHJvZ3Jlc3M+IHtcclxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uLmZpbmRPbmUod2hlcmUpO1xyXG4gICAgICAgIHJldHVybiAhZGF0YSA/IG51bGwgOiBuZXcgUHJvZ3Jlc3MoZGF0YS5faWQsIGRhdGEsIHRoaXMuY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlKG1heDogbnVtYmVyID0gMTAwKTogUHJvbWlzZTxJUHJvZ3Jlc3M+IHtcclxuICAgICAgICBpZiAoaXNOYU4obWF4KSB8fCBtYXggPD0gMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1heCBwcm9ncmVzcyB2YWx1ZSBtdXN0IGJlIGJpZ2dlciB0aGFuIHplcm9gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgICAgY3VycmVudDogMCxcclxuICAgICAgICAgICAgbWF4OiBtYXgsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiXCIsXHJcbiAgICAgICAgICAgIGVycm9yOiBcIlwiLFxyXG4gICAgICAgICAgICBjYW5jZWxlZDogZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY29sbGVjdGlvbi5pbnNlcnRPbmUoZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9ncmVzcyhyZXMuaW5zZXJ0ZWRJZCwgZGF0YSwgdGhpcy5jb2xsZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZW1vdmUoaWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jb2xsZWN0aW9uLmRlbGV0ZU9uZSh7X2lkOiBuZXcgT2JqZWN0SWQoaWQpfSk7XHJcbiAgICAgICAgcmV0dXJuIGlkO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyB3YWl0Rm9yUHJvZ3Jlc3MoaWQ6IHN0cmluZywgY2I6ICgpID0+IFByb21pc2U8SVByb2dyZXNzPiwgZGVsYXk6IG51bWJlcik6IFByb21pc2U8SVByb2dyZXNzPiB7XHJcbiAgICAgICAgbGV0IGlzRmluaXNoZWQgPSBmYWxzZTtcclxuICAgICAgICBsZXQgcHJvZ3Jlc3M6IElQcm9ncmVzcyA9IG51bGw7XHJcbiAgICAgICAgbGV0IHdhaXRUaW1lOiBudW1iZXIgPSAwO1xyXG4gICAgICAgIHdoaWxlICghaXNGaW5pc2hlZCkge1xyXG4gICAgICAgICAgICBwcm9ncmVzcyA9IGF3YWl0IGNiKCk7XHJcbiAgICAgICAgICAgIHdhaXRUaW1lICs9IGRlbGF5O1xyXG4gICAgICAgICAgICBpZiAocHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9ncmVzcy5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihwcm9ncmVzcy5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkID0gcHJvZ3Jlc3MucGVyY2VudCA+PSAxMDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFpc0ZpbmlzaGVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAod2FpdFRpbWUgPj0gdGhpcy5qb2JNYW4ubWF4VGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvZ3Jlc3Mgd2l0aCBpZDogJHtpZH0gcHJvYmFibHkgbmV2ZXIgd2lsbCBiZSBmaW5pc2hlZCFgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGF3YWl0IHByb21pc2VUaW1lb3V0KGRlbGF5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { singleton } from "tsyringe";
|
|
3
|
+
import { lstatSync, readdir, readFileSync } from "fs";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
import * as Handlebars from "handlebars";
|
|
6
|
+
import { Translator } from "./translator";
|
|
7
|
+
import { Configuration } from "./configuration";
|
|
8
|
+
let TemplateRenderer = class TemplateRenderer {
|
|
9
|
+
translator;
|
|
10
|
+
config;
|
|
11
|
+
templates;
|
|
12
|
+
initPromise;
|
|
13
|
+
constructor(translator, config) {
|
|
14
|
+
this.translator = translator;
|
|
15
|
+
this.config = config;
|
|
16
|
+
this.templates = {};
|
|
17
|
+
Handlebars.registerHelper(`object`, function ({ hash }) {
|
|
18
|
+
return hash;
|
|
19
|
+
});
|
|
20
|
+
Handlebars.registerHelper(`now`, function () {
|
|
21
|
+
return new Date().getTime();
|
|
22
|
+
});
|
|
23
|
+
Handlebars.registerHelper(`keys`, function (obj) {
|
|
24
|
+
return !obj ? [] : Object.keys(obj);
|
|
25
|
+
});
|
|
26
|
+
Handlebars.registerHelper(`translate`, function (key, params) {
|
|
27
|
+
return translator.getTranslationSync(this.language, key, params);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
init() {
|
|
31
|
+
this.initPromise = this.initPromise || this.parseTemplates(this.config.resolve("templatesDir"), []);
|
|
32
|
+
return this.initPromise;
|
|
33
|
+
}
|
|
34
|
+
async parseTemplates(dir, dirPath) {
|
|
35
|
+
return new Promise(resolve => {
|
|
36
|
+
readdir(dir, async (err, files) => {
|
|
37
|
+
for (let file of files) {
|
|
38
|
+
const path = join(dir, file);
|
|
39
|
+
if (lstatSync(path).isDirectory()) {
|
|
40
|
+
await this.parseTemplates(join(dir, file), dirPath.concat([file]));
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const parts = file.split(".");
|
|
44
|
+
parts.pop();
|
|
45
|
+
const name = parts.join(".");
|
|
46
|
+
const fullName = dirPath.concat([name]).join("-");
|
|
47
|
+
const content = readFileSync(path).toString("utf8");
|
|
48
|
+
this.templates[fullName] = Handlebars.compile(content);
|
|
49
|
+
Handlebars.registerPartial(fullName, content);
|
|
50
|
+
}
|
|
51
|
+
resolve();
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async render(template, language, context) {
|
|
56
|
+
await this.init();
|
|
57
|
+
await this.translator.getDictionary(language);
|
|
58
|
+
if (!this.templates[template]) {
|
|
59
|
+
return Promise.reject(`Template not found with name: ${template}`);
|
|
60
|
+
}
|
|
61
|
+
context = Object.assign({ language }, context || {});
|
|
62
|
+
const res = this.templates[template](context);
|
|
63
|
+
return res instanceof Error ? await Promise.reject(res) : res;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
TemplateRenderer = __decorate([
|
|
67
|
+
singleton(),
|
|
68
|
+
__metadata("design:paramtypes", [Translator, Configuration])
|
|
69
|
+
], TemplateRenderer);
|
|
70
|
+
export { TemplateRenderer };
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdGVtcGxhdGUtcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQ3BELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFFekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHdkMsSUFBTSxnQkFBZ0IsR0FBdEIsTUFBTSxnQkFBZ0I7SUFNSjtJQUFpQztJQUp0RCxTQUFTLENBQTZCO0lBRTVCLFdBQVcsQ0FBZTtJQUVwQyxZQUFxQixVQUFzQixFQUFXLE1BQXFCO1FBQXRELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLFVBQVUsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBQyxJQUFJLEVBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxVQUFVLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRTtZQUM3QixPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxVQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxVQUFTLEdBQVE7WUFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxN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LENBQUMsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2xFLENBQUM7Q0FDSixDQUFBO0FBM0RZLGdCQUFnQjtJQUQ1QixTQUFTLEVBQUU7cUNBT3lCLFVBQVUsRUFBbUIsYUFBYTtHQU5sRSxnQkFBZ0IsQ0EyRDVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge2xzdGF0U3luYywgcmVhZGRpciwgcmVhZEZpbGVTeW5jfSBmcm9tIFwiZnNcIjtcclxuaW1wb3J0IHtqb2lufSBmcm9tIFwicGF0aFwiO1xyXG5pbXBvcnQgKiBhcyBIYW5kbGViYXJzIGZyb20gXCJoYW5kbGViYXJzXCI7XHJcblxyXG5pbXBvcnQge1RyYW5zbGF0b3J9IGZyb20gXCIuL3RyYW5zbGF0b3JcIjtcclxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XHJcblxyXG5Ac2luZ2xldG9uKClcclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlUmVuZGVyZXIge1xyXG5cclxuICAgIHRlbXBsYXRlczoge1tuYW1lOiBzdHJpbmddOiBGdW5jdGlvbn07XHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXRQcm9taXNlOiBQcm9taXNlPGFueT47XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgdHJhbnNsYXRvcjogVHJhbnNsYXRvciwgcmVhZG9ubHkgY29uZmlnOiBDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSB7fTtcclxuICAgICAgICBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKGBvYmplY3RgLCBmdW5jdGlvbih7aGFzaH0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGhhc2g7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcihgbm93YCwgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKGBrZXlzYCwgZnVuY3Rpb24ob2JqOiBhbnkpIHtcclxuICAgICAgICAgICAgcmV0dXJuICFvYmogPyBbXSA6IE9iamVjdC5rZXlzKG9iaik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcihgdHJhbnNsYXRlYCwgZnVuY3Rpb24gKGtleTogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRvci5nZXRUcmFuc2xhdGlvblN5bmModGhpcy5sYW5ndWFnZSwga2V5LCBwYXJhbXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBpbml0KCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgdGhpcy5pbml0UHJvbWlzZSA9IHRoaXMuaW5pdFByb21pc2UgfHwgdGhpcy5wYXJzZVRlbXBsYXRlcyh0aGlzLmNvbmZpZy5yZXNvbHZlKFwidGVtcGxhdGVzRGlyXCIpLCBbXSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5pdFByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcGFyc2VUZW1wbGF0ZXMoZGlyOiBzdHJpbmcsIGRpclBhdGg6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICByZWFkZGlyKGRpciwgYXN5bmMgKGVyciwgZmlsZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gam9pbihkaXIsIGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsc3RhdFN5bmMocGF0aCkuaXNEaXJlY3RvcnkoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBhcnNlVGVtcGxhdGVzKGpvaW4oZGlyLCBmaWxlKSwgZGlyUGF0aC5jb25jYXQoW2ZpbGVdKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGZpbGUuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcnRzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBwYXJ0cy5qb2luKFwiLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmdWxsTmFtZSA9IGRpclBhdGguY29uY2F0KFtuYW1lXSkuam9pbihcIi1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhwYXRoKS50b1N0cmluZyhcInV0ZjhcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXNbZnVsbE5hbWVdID0gSGFuZGxlYmFycy5jb21waWxlKGNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJQYXJ0aWFsKGZ1bGxOYW1lLCBjb250ZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcmVuZGVyKHRlbXBsYXRlOiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcsIGNvbnRleHQ/OiBhbnkpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRvci5nZXREaWN0aW9uYXJ5KGxhbmd1YWdlKTtcclxuICAgICAgICBpZiAoIXRoaXMudGVtcGxhdGVzW3RlbXBsYXRlXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoYFRlbXBsYXRlIG5vdCBmb3VuZCB3aXRoIG5hbWU6ICR7dGVtcGxhdGV9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQgPSBPYmplY3QuYXNzaWduKHtsYW5ndWFnZX0sIGNvbnRleHQgfHwge30pO1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudGVtcGxhdGVzW3RlbXBsYXRlXShjb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gcmVzIGluc3RhbmNlb2YgRXJyb3IgPyBhd2FpdCBQcm9taXNlLnJlamVjdChyZXMpIDogcmVzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
+
import { injectAll, singleton } from "tsyringe";
|
|
3
|
+
import { CommandsAddon } from "@stemy/terminal-commands-addon";
|
|
4
|
+
import { TERMINAL_COMMAND } from "../common-types";
|
|
5
|
+
import { Logger } from "./logger";
|
|
6
|
+
import { Configuration } from "./configuration";
|
|
7
|
+
import { camelCaseToDash, colorize, ConsoleColor } from "../utils";
|
|
8
|
+
let TerminalManager = class TerminalManager {
|
|
9
|
+
logger;
|
|
10
|
+
config;
|
|
11
|
+
servicePassword;
|
|
12
|
+
suggestions;
|
|
13
|
+
commands;
|
|
14
|
+
loggedOutCommands;
|
|
15
|
+
loggedInCommands;
|
|
16
|
+
constructor(logger, config, commands) {
|
|
17
|
+
this.logger = logger;
|
|
18
|
+
this.config = config;
|
|
19
|
+
this.servicePassword = config.resolve("servicePassword");
|
|
20
|
+
this.suggestions = {
|
|
21
|
+
login: async (args) => {
|
|
22
|
+
if (args.length > 2) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const input = `${args.at(1).label}`;
|
|
26
|
+
return (!input) ? [] : [{
|
|
27
|
+
id: input,
|
|
28
|
+
label: input,
|
|
29
|
+
masked: true
|
|
30
|
+
}];
|
|
31
|
+
},
|
|
32
|
+
...commands.reduce((acc, command) => {
|
|
33
|
+
command.name = camelCaseToDash(command.name || command.constructor.name || "");
|
|
34
|
+
if (!command.name || !command.suggest)
|
|
35
|
+
return acc;
|
|
36
|
+
acc[command.name] = async (a, t) => command.suggest(a, t);
|
|
37
|
+
return acc;
|
|
38
|
+
}, {})
|
|
39
|
+
};
|
|
40
|
+
this.commands = commands.reduce((acc, command) => {
|
|
41
|
+
if (!command.name)
|
|
42
|
+
return acc;
|
|
43
|
+
acc[command.name] = async (a, t) => command.execute(a, t);
|
|
44
|
+
return acc;
|
|
45
|
+
}, {});
|
|
46
|
+
this.loggedOutCommands = ["login", "clear"];
|
|
47
|
+
this.loggedInCommands = Object.keys(this.commands);
|
|
48
|
+
this.loggedInCommands.push("logout");
|
|
49
|
+
console.log(`Current service password is: ${colorize(this.servicePassword, ConsoleColor.FgGreen)}`);
|
|
50
|
+
}
|
|
51
|
+
loadAddons(terminal) {
|
|
52
|
+
let loggedIn = false;
|
|
53
|
+
const addon = new CommandsAddon({
|
|
54
|
+
commands: {
|
|
55
|
+
login: async (args, terminal) => {
|
|
56
|
+
if (args.at(1).label === this.servicePassword) {
|
|
57
|
+
loggedIn = true;
|
|
58
|
+
terminal.writeln("Logged in as admin");
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
throw new Error("Invalid login");
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
logout: async (args, terminal) => {
|
|
65
|
+
loggedIn = false;
|
|
66
|
+
terminal.writeln("Logged out");
|
|
67
|
+
},
|
|
68
|
+
...this.commands
|
|
69
|
+
},
|
|
70
|
+
suggestCommands: async () => {
|
|
71
|
+
if (loggedIn) {
|
|
72
|
+
return this.loggedInCommands;
|
|
73
|
+
}
|
|
74
|
+
return this.loggedOutCommands;
|
|
75
|
+
},
|
|
76
|
+
suggestions: this.suggestions
|
|
77
|
+
});
|
|
78
|
+
terminal.loadAddon(addon);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
TerminalManager = __decorate([
|
|
82
|
+
singleton(),
|
|
83
|
+
__param(2, injectAll(TERMINAL_COMMAND)),
|
|
84
|
+
__metadata("design:paramtypes", [Logger,
|
|
85
|
+
Configuration, Array])
|
|
86
|
+
], TerminalManager);
|
|
87
|
+
export { TerminalManager };
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90ZXJtaW5hbC1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUMsYUFBYSxFQUE4QixNQUFNLGdDQUFnQyxDQUFDO0FBQzFGLE9BQU8sRUFBOEIsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFHMUQsSUFBTSxlQUFlLEdBQXJCLE1BQU0sZUFBZTtJQU9GO0lBQ0E7SUFQWixlQUFlLENBQVM7SUFDeEIsV0FBVyxDQUFpQjtJQUM1QixRQUFRLENBQWM7SUFDdEIsaUJBQWlCLENBQVc7SUFDNUIsZ0JBQWdCLENBQVc7SUFFckMsWUFBc0IsTUFBYyxFQUNkLE1BQXFCLEVBQ0YsUUFBNEI7UUFGL0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFFdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNmLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDbEIsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMs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eEIsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDWCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDakMsQ0FBQztnQkFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQ2hDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNKLENBQUE7QUFyRVksZUFBZTtJQUQzQixTQUFTLEVBQUU7SUFVSyxXQUFBLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO3FDQUZWLE1BQU07UUFDTixhQUFhO0dBUmxDLGVBQWUsQ0FxRTNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RBbGwsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7Q29tbWFuZHNBZGRvbiwgSUNvbW1hbmRNYXAsIElTdWdnZXN0aW9uTWFwfSBmcm9tIFwiQHN0ZW15L3Rlcm1pbmFsLWNvbW1hbmRzLWFkZG9uXCI7XHJcbmltcG9ydCB7SVRlcm1pbmFsLCBJVGVybWluYWxDb21tYW5kLCBURVJNSU5BTF9DT01NQU5EfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7TG9nZ2VyfSBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7Y2FtZWxDYXNlVG9EYXNoLCBjb2xvcml6ZSwgQ29uc29sZUNvbG9yfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuXHJcbkBzaW5nbGV0b24oKVxyXG5leHBvcnQgY2xhc3MgVGVybWluYWxNYW5hZ2VyIHtcclxuICAgIHByb3RlY3RlZCBzZXJ2aWNlUGFzc3dvcmQ6IHN0cmluZztcclxuICAgIHByb3RlY3RlZCBzdWdnZXN0aW9uczogSVN1Z2dlc3Rpb25NYXA7XHJcbiAgICBwcm90ZWN0ZWQgY29tbWFuZHM6IElDb21tYW5kTWFwO1xyXG4gICAgcHJvdGVjdGVkIGxvZ2dlZE91dENvbW1hbmRzOiBzdHJpbmdbXTtcclxuICAgIHByb3RlY3RlZCBsb2dnZWRJbkNvbW1hbmRzOiBzdHJpbmdbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbG9nZ2VyOiBMb2dnZXIsXHJcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgY29uZmlnOiBDb25maWd1cmF0aW9uLFxyXG4gICAgICAgICAgICAgICAgQGluamVjdEFsbChURVJNSU5BTF9DT01NQU5EKSBjb21tYW5kczogSVRlcm1pbmFsQ29tbWFuZFtdKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlUGFzc3dvcmQgPSBjb25maWcucmVzb2x2ZShcInNlcnZpY2VQYXNzd29yZFwiKTtcclxuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zID0ge1xyXG4gICAgICAgICAgICBsb2dpbjogYXN5bmMgKGFyZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gYCR7YXJncy5hdCgxKS5sYWJlbH1gO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICghaW5wdXQpID8gW10gOiBbe1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpbnB1dCxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogaW5wdXQsXHJcbiAgICAgICAgICAgICAgICAgICAgbWFza2VkOiB0cnVlXHJcbiAgICAgICAgICAgICAgICB9XTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLi4uY29tbWFuZHMucmVkdWNlKChhY2MsIGNvbW1hbmQpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbW1hbmQubmFtZSA9IGNhbWVsQ2FzZVRvRGFzaChjb21tYW5kLm5hbWUgfHwgY29tbWFuZC5jb25zdHJ1Y3Rvci5uYW1lIHx8IFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjb21tYW5kLm5hbWUgfHwgIWNvbW1hbmQuc3VnZ2VzdCkgcmV0dXJuIGFjYztcclxuICAgICAgICAgICAgICAgIGFjY1tjb21tYW5kLm5hbWVdID0gYXN5bmMgKGEsIHQpID0+IGNvbW1hbmQuc3VnZ2VzdChhLCB0KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgICAgIH0sIHt9KVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5jb21tYW5kcyA9IGNvbW1hbmRzLnJlZHVjZSgoYWNjLCBjb21tYW5kKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghY29tbWFuZC5uYW1lKSByZXR1cm4gYWNjO1xyXG4gICAgICAgICAgICBhY2NbY29tbWFuZC5uYW1lXSA9IGFzeW5jIChhLCB0KSA9PiBjb21tYW5kLmV4ZWN1dGUoYSwgdCk7XHJcbiAgICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfSwge30pO1xyXG4gICAgICAgIHRoaXMubG9nZ2VkT3V0Q29tbWFuZHMgPSBbXCJsb2dpblwiLCBcImNsZWFyXCJdO1xyXG4gICAgICAgIHRoaXMubG9nZ2VkSW5Db21tYW5kcyA9IE9iamVjdC5rZXlzKHRoaXMuY29tbWFuZHMpO1xyXG4gICAgICAgIHRoaXMubG9nZ2VkSW5Db21tYW5kcy5wdXNoKFwibG9nb3V0XCIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBDdXJyZW50IHNlcnZpY2UgcGFzc3dvcmQgaXM6ICR7Y29sb3JpemUodGhpcy5zZXJ2aWNlUGFzc3dvcmQsIENvbnNvbGVDb2xvci5GZ0dyZWVuKX1gKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQWRkb25zKHRlcm1pbmFsOiBJVGVybWluYWwpOiB2b2lkIHtcclxuICAgICAgICBsZXQgbG9nZ2VkSW4gPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IG5ldyBDb21tYW5kc0FkZG9uKHtcclxuICAgICAgICAgICAgY29tbWFuZHM6IHtcclxuICAgICAgICAgICAgICAgIGxvZ2luOiBhc3luYyAoYXJncywgdGVybWluYWwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJncy5hdCgxKS5sYWJlbCA9PT0gdGhpcy5zZXJ2aWNlUGFzc3dvcmQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VkSW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hbC53cml0ZWxuKFwiTG9nZ2VkIGluIGFzIGFkbWluXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbG9naW5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGxvZ291dDogYXN5bmMgKGFyZ3MsIHRlcm1pbmFsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VkSW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hbC53cml0ZWxuKFwiTG9nZ2VkIG91dFwiKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmNvbW1hbmRzXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Z2dlc3RDb21tYW5kczogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlZEluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9nZ2VkSW5Db21tYW5kcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvZ2dlZE91dENvbW1hbmRzO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdWdnZXN0aW9uczogdGhpcy5zdWdnZXN0aW9uc1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRlcm1pbmFsLmxvYWRBZGRvbihhZGRvbik7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { singleton } from "tsyringe";
|
|
3
|
+
import { rand } from "../utils";
|
|
4
|
+
let TokenGenerator = class TokenGenerator {
|
|
5
|
+
chars;
|
|
6
|
+
constructor() {
|
|
7
|
+
this.chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
|
8
|
+
}
|
|
9
|
+
async generate(checkCb) {
|
|
10
|
+
let token = null;
|
|
11
|
+
let tries = 0;
|
|
12
|
+
let notGood = true;
|
|
13
|
+
while (notGood && tries < 5) {
|
|
14
|
+
token = this.generateToken();
|
|
15
|
+
notGood = await checkCb(token);
|
|
16
|
+
tries++;
|
|
17
|
+
}
|
|
18
|
+
if (notGood) {
|
|
19
|
+
throw new Error(`Couldn't generate an unique token..`);
|
|
20
|
+
}
|
|
21
|
+
return token;
|
|
22
|
+
}
|
|
23
|
+
generateToken() {
|
|
24
|
+
let s = "";
|
|
25
|
+
for (let i = 0; i < 15; i++) {
|
|
26
|
+
const ix = rand(0, this.chars.length - 1);
|
|
27
|
+
s += this.chars[ix];
|
|
28
|
+
}
|
|
29
|
+
return s;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
TokenGenerator = __decorate([
|
|
33
|
+
singleton(),
|
|
34
|
+
__metadata("design:paramtypes", [])
|
|
35
|
+
], TokenGenerator);
|
|
36
|
+
export { TokenGenerator };
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3Rva2VuLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR3ZCLElBQU0sY0FBYyxHQUFwQixNQUFNLGNBQWM7SUFFYixLQUFLLENBQVM7SUFFeEI7UUFDSSxJQUFJLENBQUMsS0FBSyxHQUFHLGdFQUFnRSxDQUFDO0lBQ2xGLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQTRDO1FBQ3ZELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsT0FBTyxPQUFPLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FDSixDQUFBO0FBL0JZLGNBQWM7SUFEMUIsU0FBUyxFQUFFOztHQUNDLGNBQWMsQ0ErQjFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzaW5nbGV0b259IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge3JhbmR9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5cclxuQHNpbmdsZXRvbigpXHJcbmV4cG9ydCBjbGFzcyBUb2tlbkdlbmVyYXRvciB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGNoYXJzOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5jaGFycyA9IFwiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZW5lcmF0ZShjaGVja0NiOiAodG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgbGV0IHRva2VuID0gbnVsbDtcclxuICAgICAgICBsZXQgdHJpZXMgPSAwO1xyXG4gICAgICAgIGxldCBub3RHb29kID0gdHJ1ZTtcclxuICAgICAgICB3aGlsZSAobm90R29vZCAmJiB0cmllcyA8IDUpIHtcclxuICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmdlbmVyYXRlVG9rZW4oKTtcclxuICAgICAgICAgICAgbm90R29vZCA9IGF3YWl0IGNoZWNrQ2IodG9rZW4pO1xyXG4gICAgICAgICAgICB0cmllcysrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm90R29vZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGdlbmVyYXRlIGFuIHVuaXF1ZSB0b2tlbi4uYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0b2tlbjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlVG9rZW4oKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcyA9IFwiXCI7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNTsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl4ID0gcmFuZCgwLCB0aGlzLmNoYXJzLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgICAgICBzICs9IHRoaXMuY2hhcnNbaXhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { singleton } from "tsyringe";
|
|
3
|
+
import axios from "axios";
|
|
4
|
+
import { isObject } from "../utils";
|
|
5
|
+
import { Configuration } from "./configuration";
|
|
6
|
+
import { Cache } from "./cache";
|
|
7
|
+
let TranslationProvider = class TranslationProvider {
|
|
8
|
+
config;
|
|
9
|
+
cache;
|
|
10
|
+
constructor(config, cache) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.cache = cache;
|
|
13
|
+
}
|
|
14
|
+
getDictionary(language) {
|
|
15
|
+
return this.cache.getOrSet(`translations-${language}`, async () => {
|
|
16
|
+
try {
|
|
17
|
+
const url = this.config.resolve("translationsTemplate")
|
|
18
|
+
.replace(`__lang__`, language)
|
|
19
|
+
.replace(`[lang]`, language);
|
|
20
|
+
const data = await axios.get(url).then(t => t.data);
|
|
21
|
+
if (isObject(data[language])) {
|
|
22
|
+
return data[language];
|
|
23
|
+
}
|
|
24
|
+
return data;
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
return {
|
|
28
|
+
message: `${e}`
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}, 5 * 60);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
TranslationProvider = __decorate([
|
|
35
|
+
singleton(),
|
|
36
|
+
__metadata("design:paramtypes", [Configuration, Cache])
|
|
37
|
+
], TranslationProvider);
|
|
38
|
+
export { TranslationProvider };
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHJhbnNsYXRpb24tcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFHdkIsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBbUI7SUFFUDtJQUFnQztJQUFyRCxZQUFxQixNQUFxQixFQUFXLEtBQVk7UUFBNUMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFXLFVBQUssR0FBTCxLQUFLLENBQU87SUFFakUsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFnQjtRQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixRQUFRLEVBQUUsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM5RCxJQUFJLENBQUM7Z0JBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUM7cUJBQ2xELE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDO3FCQUM3QixPQUFPLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMzQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztnQkFDRCxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDVCxPQUFPO29CQUNILE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRTtpQkFDbEIsQ0FBQTtZQUNMLENBQUM7UUFDTCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztDQUNKLENBQUE7QUF4QlksbUJBQW1CO0lBRC9CLFNBQVMsRUFBRTtxQ0FHcUIsYUFBYSxFQUFrQixLQUFLO0dBRnhELG1CQUFtQixDQXdCL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcclxuaW1wb3J0IHtpc09iamVjdH0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQge0lUcmFuc2xhdGlvbnN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtDYWNoZX0gZnJvbSBcIi4vY2FjaGVcIjtcclxuXHJcbkBzaW5nbGV0b24oKVxyXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25Qcm92aWRlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29uZmlnOiBDb25maWd1cmF0aW9uLCByZWFkb25seSBjYWNoZTogQ2FjaGUpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGljdGlvbmFyeShsYW5ndWFnZTogc3RyaW5nKTogUHJvbWlzZTxJVHJhbnNsYXRpb25zPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuZ2V0T3JTZXQoYHRyYW5zbGF0aW9ucy0ke2xhbmd1YWdlfWAsIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHRoaXMuY29uZmlnLnJlc29sdmUoXCJ0cmFuc2xhdGlvbnNUZW1wbGF0ZVwiKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGBfX2xhbmdfX2AsIGxhbmd1YWdlKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGBbbGFuZ11gLCBsYW5ndWFnZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgYXhpb3MuZ2V0KHVybCkudGhlbih0ID0+IHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QoZGF0YVtsYW5ndWFnZV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbbGFuZ3VhZ2VdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7ZX1gXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCA1ICogNjApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { injectable, singleton } from "tsyringe";
|
|
3
|
+
import { getValue, isDefined, isString } from "../utils";
|
|
4
|
+
import { TranslationProvider } from "./translation-provider";
|
|
5
|
+
let Translator = class Translator {
|
|
6
|
+
translationProvider;
|
|
7
|
+
dictionaries;
|
|
8
|
+
constructor(translationProvider) {
|
|
9
|
+
this.translationProvider = translationProvider;
|
|
10
|
+
this.dictionaries = {};
|
|
11
|
+
}
|
|
12
|
+
async getDictionary(language) {
|
|
13
|
+
this.dictionaries[language] = await this.translationProvider.getDictionary(language);
|
|
14
|
+
return this.dictionaries[language];
|
|
15
|
+
}
|
|
16
|
+
getTranslationSync(language, key, params) {
|
|
17
|
+
if (!isString(key) || !key.length) {
|
|
18
|
+
throw new Error(`Parameter "key" required`);
|
|
19
|
+
}
|
|
20
|
+
const dictionary = this.dictionaries[language];
|
|
21
|
+
const translation = getValue(dictionary, key, key) || key;
|
|
22
|
+
return this.interpolate(translation, params);
|
|
23
|
+
}
|
|
24
|
+
getTranslation(language, key, params) {
|
|
25
|
+
if (!isString(key) || !key.length) {
|
|
26
|
+
throw new Error(`Parameter "key" required`);
|
|
27
|
+
}
|
|
28
|
+
return this.getDictionary(language).then(dictionary => {
|
|
29
|
+
const translation = getValue(dictionary, key, key) || key;
|
|
30
|
+
return this.interpolate(translation, params);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
getTranslations(language, ...keys) {
|
|
34
|
+
return new Promise(resolve => {
|
|
35
|
+
Promise.all(keys.map(key => this.getTranslation(language, key))).then(translations => {
|
|
36
|
+
resolve(keys.reduce((result, key, i) => {
|
|
37
|
+
result[key] = translations[i];
|
|
38
|
+
return result;
|
|
39
|
+
}, {}));
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
interpolate(expr, params) {
|
|
44
|
+
if (typeof expr === "string") {
|
|
45
|
+
return this.interpolateString(expr, params);
|
|
46
|
+
}
|
|
47
|
+
if (typeof expr === "function") {
|
|
48
|
+
return expr(params);
|
|
49
|
+
}
|
|
50
|
+
return expr;
|
|
51
|
+
}
|
|
52
|
+
interpolateString(expr, params) {
|
|
53
|
+
if (!expr || !params)
|
|
54
|
+
return expr;
|
|
55
|
+
return expr.replace(/{{\s?([^{}\s]*)\s?}}/g, (substring, b) => {
|
|
56
|
+
const r = getValue(params, b);
|
|
57
|
+
return isDefined(r) ? r : substring;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
Translator = __decorate([
|
|
62
|
+
injectable(),
|
|
63
|
+
singleton(),
|
|
64
|
+
__metadata("design:paramtypes", [TranslationProvider])
|
|
65
|
+
], Translator);
|
|
66
|
+
export { Translator };
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90cmFuc2xhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFdkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFJcEQsSUFBTSxVQUFVLEdBQWhCLE1BQU0sVUFBVTtJQUlDO0lBRlYsWUFBWSxDQUFvQztJQUUxRCxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFnQjtRQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGtCQUFrQixDQUFDLFFBQWdCLEVBQUUsR0FBVyxFQUFFLE1BQVk7UUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQixFQUFFLEdBQVcsRUFBRSxNQUFZO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2xELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUMxRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFnQixFQUFFLEdBQUcsSUFBYztRQUMvQyxPQUFPLElBQUksT0FBTyxDQUFnQixPQUFPLENBQUMsRUFBRTtZQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNqRixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ25DLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLE9BQU8sTUFBTSxDQUFDO2dCQUNsQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNaLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsV0FBVyxDQUFDLElBQXVCLEVBQUUsTUFBWTtRQUN2RCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsT0FBTyxJQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVTLGlCQUFpQixDQUFDLElBQVksRUFBRSxNQUFZO1FBQ2xELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBaUIsRUFBRSxDQUFTLEVBQUUsRUFBRTtZQUMxRSxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSixDQUFBO0FBNURZLFVBQVU7SUFGdEIsVUFBVSxFQUFFO0lBQ1osU0FBUyxFQUFFO3FDQUtpQyxtQkFBbUI7R0FKbkQsVUFBVSxDQTREdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7Z2V0VmFsdWUsIGlzRGVmaW5lZCwgaXNTdHJpbmd9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQge0lUcmFuc2xhdGlvbnN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGlvblByb3ZpZGVyfSBmcm9tIFwiLi90cmFuc2xhdGlvbi1wcm92aWRlclwiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2luZ2xldG9uKClcclxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0b3Ige1xyXG5cclxuICAgIHByb3RlY3RlZCBkaWN0aW9uYXJpZXM6IHsgW2xhbmc6IHN0cmluZ106IElUcmFuc2xhdGlvbnMgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0aW9uUHJvdmlkZXI6IFRyYW5zbGF0aW9uUHJvdmlkZXIpIHtcclxuICAgICAgICB0aGlzLmRpY3Rpb25hcmllcyA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldERpY3Rpb25hcnkobGFuZ3VhZ2U6IHN0cmluZyk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz4ge1xyXG4gICAgICAgIHRoaXMuZGljdGlvbmFyaWVzW2xhbmd1YWdlXSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25Qcm92aWRlci5nZXREaWN0aW9uYXJ5KGxhbmd1YWdlKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaWN0aW9uYXJpZXNbbGFuZ3VhZ2VdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRyYW5zbGF0aW9uU3luYyhsYW5ndWFnZTogc3RyaW5nLCBrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIWlzU3RyaW5nKGtleSkgfHwgIWtleS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXJhbWV0ZXIgXCJrZXlcIiByZXF1aXJlZGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkaWN0aW9uYXJ5ID0gdGhpcy5kaWN0aW9uYXJpZXNbbGFuZ3VhZ2VdO1xyXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gZ2V0VmFsdWUoZGljdGlvbmFyeSwga2V5LCBrZXkpIHx8IGtleTtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZSh0cmFuc2xhdGlvbiwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUcmFuc2xhdGlvbihsYW5ndWFnZTogc3RyaW5nLCBrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBpZiAoIWlzU3RyaW5nKGtleSkgfHwgIWtleS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYXJhbWV0ZXIgXCJrZXlcIiByZXF1aXJlZGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXREaWN0aW9uYXJ5KGxhbmd1YWdlKS50aGVuKGRpY3Rpb25hcnkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IGdldFZhbHVlKGRpY3Rpb25hcnksIGtleSwga2V5KSB8fCBrZXk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlKHRyYW5zbGF0aW9uLCBwYXJhbXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRyYW5zbGF0aW9ucyhsYW5ndWFnZTogc3RyaW5nLCAuLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8SVRyYW5zbGF0aW9ucz4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJVHJhbnNsYXRpb25zPihyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgUHJvbWlzZS5hbGwoa2V5cy5tYXAoa2V5ID0+IHRoaXMuZ2V0VHJhbnNsYXRpb24obGFuZ3VhZ2UsIGtleSkpKS50aGVuKHRyYW5zbGF0aW9ucyA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGtleXMucmVkdWNlKChyZXN1bHQsIGtleSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNsYXRpb25zW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9LCB7fSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaW50ZXJwb2xhdGUoZXhwcjogc3RyaW5nIHwgRnVuY3Rpb24sIHBhcmFtcz86IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBleHByID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlU3RyaW5nKGV4cHIsIHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgZXhwciA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBleHByKHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBleHByIGFzIHN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaW50ZXJwb2xhdGVTdHJpbmcoZXhwcjogc3RyaW5nLCBwYXJhbXM/OiBhbnkpIHtcclxuICAgICAgICBpZiAoIWV4cHIgfHwgIXBhcmFtcykgcmV0dXJuIGV4cHI7XHJcbiAgICAgICAgcmV0dXJuIGV4cHIucmVwbGFjZSgve3tcXHM/KFtee31cXHNdKilcXHM/fX0vZywgKHN1YnN0cmluZzogc3RyaW5nLCBiOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgciA9IGdldFZhbHVlKHBhcmFtcywgYik7XHJcbiAgICAgICAgICAgIHJldHVybiBpc0RlZmluZWQocikgPyByIDogc3Vic3RyaW5nO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { injectable, Lifecycle, scoped } from "tsyringe";
|
|
3
|
+
const sampleUser = {
|
|
4
|
+
id: "5a3cdf7c6a9cf0ba32feccdf",
|
|
5
|
+
email: "admin@site.com",
|
|
6
|
+
password: "",
|
|
7
|
+
roles: ["admin"]
|
|
8
|
+
};
|
|
9
|
+
let UserManager = class UserManager {
|
|
10
|
+
async getByCredentials(credentials) {
|
|
11
|
+
return (sampleUser.email == credentials.email) ? sampleUser : await Promise.reject("message.login.error");
|
|
12
|
+
}
|
|
13
|
+
async getById(id) {
|
|
14
|
+
return (sampleUser.id == id) ? sampleUser : null;
|
|
15
|
+
}
|
|
16
|
+
async serialize(user) {
|
|
17
|
+
const res = Object.assign({}, user);
|
|
18
|
+
delete res.password;
|
|
19
|
+
return res;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
UserManager = __decorate([
|
|
23
|
+
injectable(),
|
|
24
|
+
scoped(Lifecycle.ContainerScoped)
|
|
25
|
+
], UserManager);
|
|
26
|
+
export { UserManager };
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3VzZXItbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR3ZELE1BQU0sVUFBVSxHQUFVO0lBQ3RCLEVBQUUsRUFBRSwwQkFBMEI7SUFDOUIsS0FBSyxFQUFFLGdCQUFnQjtJQUN2QixRQUFRLEVBQUUsRUFBRTtJQUNaLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQztDQUNuQixDQUFDO0FBSUssSUFBTSxXQUFXLEdBQWpCLE1BQU0sV0FBVztJQUVwQixLQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBZ0I7UUFDbkMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQVU7UUFDcEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQVc7UUFDdkIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztDQUNKLENBQUE7QUFmWSxXQUFXO0lBRnZCLFVBQVUsRUFBRTtJQUNaLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO0dBQ3JCLFdBQVcsQ0FldkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtJVXNlcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuY29uc3Qgc2FtcGxlVXNlcjogSVVzZXIgPSB7XHJcbiAgICBpZDogXCI1YTNjZGY3YzZhOWNmMGJhMzJmZWNjZGZcIixcclxuICAgIGVtYWlsOiBcImFkbWluQHNpdGUuY29tXCIsXHJcbiAgICBwYXNzd29yZDogXCJcIixcclxuICAgIHJvbGVzOiBbXCJhZG1pblwiXVxyXG59O1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBVc2VyTWFuYWdlciB7XHJcblxyXG4gICAgYXN5bmMgZ2V0QnlDcmVkZW50aWFscyhjcmVkZW50aWFsczogYW55KTogUHJvbWlzZTxJVXNlcj4ge1xyXG4gICAgICAgIHJldHVybiAoc2FtcGxlVXNlci5lbWFpbCA9PSBjcmVkZW50aWFscy5lbWFpbCkgPyBzYW1wbGVVc2VyIDogYXdhaXQgUHJvbWlzZS5yZWplY3QoXCJtZXNzYWdlLmxvZ2luLmVycm9yXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8SVVzZXI+IHtcclxuICAgICAgICByZXR1cm4gKHNhbXBsZVVzZXIuaWQgPT0gaWQpID8gc2FtcGxlVXNlciA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VyaWFsaXplKHVzZXI6IElVc2VyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCByZXMgPSBPYmplY3QuYXNzaWduKHt9LCB1c2VyKTtcclxuICAgICAgICBkZWxldGUgcmVzLnBhc3N3b3JkO1xyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbn1cclxuIl19
|