@stemy/backend 2.6.1 → 2.7.3

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.
Files changed (117) hide show
  1. package/README.md +2 -2
  2. package/bundles/stemy-backend.umd.js +5553 -5465
  3. package/bundles/stemy-backend.umd.js.map +1 -1
  4. package/bundles/stemy-backend.umd.min.js +1 -1
  5. package/bundles/stemy-backend.umd.min.js.map +1 -1
  6. package/common-types.d.ts +226 -214
  7. package/esm2015/common-types.js +18 -18
  8. package/esm2015/public_api.js +338 -338
  9. package/esm2015/rest-controllers/assets.controller.js +116 -116
  10. package/esm2015/rest-controllers/auth.controller.js +75 -75
  11. package/esm2015/rest-controllers/gallery.controller.js +37 -37
  12. package/esm2015/rest-controllers/progresses.controller.js +57 -57
  13. package/esm2015/rest-middlewares/container.middleware.js +32 -32
  14. package/esm2015/rest-middlewares/error-handler.middleware.js +83 -83
  15. package/esm2015/rest-middlewares/language.middleware.js +28 -28
  16. package/esm2015/rest-middlewares/request-ended.middleware.js +25 -25
  17. package/esm2015/rest-middlewares/request-started.middleware.js +24 -24
  18. package/esm2015/rest-openapi.js +44 -44
  19. package/esm2015/services/asset-processor.js +101 -101
  20. package/esm2015/services/asset-resolver.js +53 -53
  21. package/esm2015/services/assets.js +110 -110
  22. package/esm2015/services/backend-provider.js +32 -32
  23. package/esm2015/services/cache-processor.js +34 -34
  24. package/esm2015/services/cache.js +94 -94
  25. package/esm2015/services/configuration.js +55 -55
  26. package/esm2015/services/endpoint-provider.js +29 -29
  27. package/esm2015/services/entities/asset.js +166 -112
  28. package/esm2015/services/entities/lazy-asset.js +93 -93
  29. package/esm2015/services/entities/progress.js +181 -181
  30. package/esm2015/services/fixtures.js +45 -45
  31. package/esm2015/services/gallery-cache.js +36 -36
  32. package/esm2015/services/gallery-image.js +48 -48
  33. package/esm2015/services/gallery.js +138 -138
  34. package/esm2015/services/id-generator.js +63 -63
  35. package/esm2015/services/job-manager.js +203 -203
  36. package/esm2015/services/lazy-assets.js +74 -74
  37. package/esm2015/services/mail-sender.js +59 -59
  38. package/esm2015/services/memory-cache.js +84 -84
  39. package/esm2015/services/mongo-connector.js +61 -61
  40. package/esm2015/services/progresses.js +91 -91
  41. package/esm2015/services/template-renderer.js +89 -89
  42. package/esm2015/services/translation-provider.js +31 -31
  43. package/esm2015/services/translator.js +85 -85
  44. package/esm2015/services/user-manager.js +47 -47
  45. package/esm2015/socket-controllers/progress.controller.js +82 -82
  46. package/esm2015/socket-middlewares/compression.middleware.js +19 -19
  47. package/esm2015/static.js +33 -33
  48. package/esm2015/stemy-backend.js +4 -4
  49. package/esm2015/utilities/di-container.js +84 -84
  50. package/esm2015/utilities/lazy-asset-generator.js +40 -40
  51. package/esm2015/utilities/tree.js +111 -111
  52. package/esm2015/utils.js +618 -601
  53. package/esm2015/validators.js +51 -51
  54. package/fesm2015/stemy-backend.js +3656 -3585
  55. package/fesm2015/stemy-backend.js.map +1 -1
  56. package/package.json +1 -1
  57. package/public_api.d.ts +33 -33
  58. package/rest-controllers/assets.controller.d.ts +16 -16
  59. package/rest-controllers/auth.controller.d.ts +14 -14
  60. package/rest-controllers/gallery.controller.d.ts +7 -7
  61. package/rest-controllers/progresses.controller.d.ts +9 -9
  62. package/rest-middlewares/container.middleware.d.ts +8 -8
  63. package/rest-middlewares/error-handler.middleware.d.ts +13 -13
  64. package/rest-middlewares/language.middleware.d.ts +8 -8
  65. package/rest-middlewares/request-ended.middleware.d.ts +5 -5
  66. package/rest-middlewares/request-started.middleware.d.ts +5 -5
  67. package/rest-openapi.d.ts +3 -3
  68. package/services/asset-processor.d.ts +12 -12
  69. package/services/asset-resolver.d.ts +9 -9
  70. package/services/assets.d.ts +19 -19
  71. package/services/backend-provider.d.ts +11 -11
  72. package/services/cache-processor.d.ts +4 -4
  73. package/services/cache.d.ts +23 -23
  74. package/services/configuration.d.ts +10 -10
  75. package/services/endpoint-provider.d.ts +4 -4
  76. package/services/entities/asset.d.ts +25 -23
  77. package/services/entities/lazy-asset.d.ts +29 -29
  78. package/services/entities/progress.d.ts +49 -49
  79. package/services/fixtures.d.ts +6 -6
  80. package/services/gallery-cache.d.ts +9 -9
  81. package/services/gallery-image.d.ts +11 -11
  82. package/services/gallery.d.ts +13 -13
  83. package/services/id-generator.d.ts +11 -11
  84. package/services/job-manager.d.ts +27 -27
  85. package/services/lazy-assets.d.ts +19 -19
  86. package/services/mail-sender.d.ts +20 -20
  87. package/services/memory-cache.d.ts +10 -10
  88. package/services/mongo-connector.d.ts +14 -14
  89. package/services/progresses.d.ts +18 -18
  90. package/services/template-renderer.d.ts +14 -14
  91. package/services/translation-provider.d.ts +10 -10
  92. package/services/translator.d.ts +15 -15
  93. package/services/user-manager.d.ts +6 -6
  94. package/socket-controllers/progress.controller.d.ts +10 -10
  95. package/socket-middlewares/compression.middleware.d.ts +4 -4
  96. package/static.d.ts +2 -2
  97. package/stemy-backend.d.ts +4 -4
  98. package/stemy-backend.metadata.json +1 -1
  99. package/utilities/di-container.d.ts +43 -43
  100. package/utilities/lazy-asset-generator.d.ts +15 -15
  101. package/utilities/tree.d.ts +14 -14
  102. package/utils.d.ts +76 -73
  103. package/validators.d.ts +7 -7
  104. package/di-container.d.ts +0 -40
  105. package/esm2015/di-container.js +0 -75
  106. package/esm2015/models/lazy-asset.js +0 -12
  107. package/esm2015/models/progress.js +0 -23
  108. package/esm2015/rest-middlewares/injector.middleware.js +0 -26
  109. package/esm2015/services/lazy-asset-helper.js +0 -74
  110. package/esm2015/services/logger.js +0 -14
  111. package/esm2015/services/progress-helper.js +0 -168
  112. package/models/lazy-asset.d.ts +0 -45
  113. package/models/progress.d.ts +0 -56
  114. package/rest-middlewares/injector.middleware.d.ts +0 -8
  115. package/services/lazy-asset-helper.d.ts +0 -15
  116. package/services/logger.d.ts +0 -2
  117. package/services/progress-helper.d.ts +0 -37
@@ -1,116 +1,116 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- import { injectable } from "tsyringe";
23
- import { Authorized, Controller, Get, HttpError, Param, Post, QueryParam, QueryParams, Res, UploadedFile } from "routing-controllers";
24
- import { Assets } from "../services/assets";
25
- import { AssetResolver } from "../services/asset-resolver";
26
- let AssetsController = class AssetsController {
27
- constructor(assets, assetResolver) {
28
- this.assets = assets;
29
- this.assetResolver = assetResolver;
30
- }
31
- upload(file) {
32
- return __awaiter(this, void 0, void 0, function* () {
33
- try {
34
- const contentType = file.mimetype === "application/octet-stream" ? null : file.mimetype;
35
- const asset = yield this.assets.writeBuffer(file.buffer, { filename: file.filename }, contentType);
36
- return asset.toJSON();
37
- }
38
- catch (e) {
39
- const msg = (e === null || e === void 0 ? void 0 : e.message) || e || "Unknown error";
40
- throw new HttpError(400, `Asset can't be uploaded.\n${msg}`);
41
- }
42
- });
43
- }
44
- getImageRotation(id, params, rotation = 0) {
45
- var _a;
46
- return __awaiter(this, void 0, void 0, function* () {
47
- const asset = yield this.assetResolver.resolve(id, params.lazy);
48
- if (!asset) {
49
- throw new HttpError(404, `Image with id: '${id}' not found.`);
50
- }
51
- if ((_a = asset.metadata) === null || _a === void 0 ? void 0 : _a.classified) {
52
- throw new HttpError(403, `Image is classified, and can be only downloaded from a custom url.`);
53
- }
54
- params.rotation = params.rotation || rotation;
55
- return asset.downloadImage(params);
56
- });
57
- }
58
- getImage(id, params) {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- return this.getImageRotation(id, params);
61
- });
62
- }
63
- getFile(id, lazy, res) {
64
- var _a, _b;
65
- return __awaiter(this, void 0, void 0, function* () {
66
- const asset = yield this.assetResolver.resolve(id, lazy);
67
- if (!asset) {
68
- throw new HttpError(404, `File with id: '${id}' not found.`);
69
- }
70
- if ((_a = asset.metadata) === null || _a === void 0 ? void 0 : _a.classified) {
71
- throw new HttpError(403, `Asset is classified, and can be only downloaded from a custom url.`);
72
- }
73
- const ext = (_b = asset.metadata) === null || _b === void 0 ? void 0 : _b.extension;
74
- if (ext) {
75
- res.header("content-disposition", `inline; filename=${asset.filename}.${ext}`);
76
- }
77
- return asset.download();
78
- });
79
- }
80
- };
81
- __decorate([
82
- Authorized(),
83
- Post(""),
84
- __param(0, UploadedFile("file")),
85
- __metadata("design:type", Function),
86
- __metadata("design:paramtypes", [Object]),
87
- __metadata("design:returntype", Promise)
88
- ], AssetsController.prototype, "upload", null);
89
- __decorate([
90
- Get("/image/:id/:rotation"),
91
- __param(0, Param("id")), __param(1, QueryParams()), __param(2, Param("rotation")),
92
- __metadata("design:type", Function),
93
- __metadata("design:paramtypes", [String, Object, Number]),
94
- __metadata("design:returntype", Promise)
95
- ], AssetsController.prototype, "getImageRotation", null);
96
- __decorate([
97
- Get("/image/:id"),
98
- __param(0, Param("id")), __param(1, QueryParams()),
99
- __metadata("design:type", Function),
100
- __metadata("design:paramtypes", [String, Object]),
101
- __metadata("design:returntype", Promise)
102
- ], AssetsController.prototype, "getImage", null);
103
- __decorate([
104
- Get("/:id"),
105
- __param(0, Param("id")), __param(1, QueryParam("lazy")), __param(2, Res()),
106
- __metadata("design:type", Function),
107
- __metadata("design:paramtypes", [String, Boolean, Object]),
108
- __metadata("design:returntype", Promise)
109
- ], AssetsController.prototype, "getFile", null);
110
- AssetsController = __decorate([
111
- injectable(),
112
- Controller("/assets"),
113
- __metadata("design:paramtypes", [Assets, AssetResolver])
114
- ], AssetsController);
115
- export { AssetsController };
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzdC1jb250cm9sbGVycy9hc3NldHMuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUNWLEdBQUcsRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLElBQUksRUFDSixVQUFVLEVBQ1YsV0FBVyxFQUNYLEdBQUcsRUFDSCxZQUFZLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0lBSzVDLGdCQUFnQixTQUFoQixnQkFBZ0I7SUFFekIsWUFBcUIsTUFBYyxFQUFXLGFBQTRCO1FBQXJELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUUxRSxDQUFDO0lBSUssTUFBTSxDQUF1QixJQUF5Qjs7WUFDeEQsSUFBSTtnQkFDQSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxLQUFLLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3hGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ2pHLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3pCO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsTUFBTSxHQUFHLEdBQUcsQ0FB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QXBEWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWRhYmxlfSBmcm9tIFwic3RyZWFtXCI7XG5pbXBvcnQge2luamVjdGFibGV9IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHtcbiAgICBBdXRob3JpemVkLFxuICAgIENvbnRyb2xsZXIsXG4gICAgR2V0LFxuICAgIEh0dHBFcnJvcixcbiAgICBQYXJhbSxcbiAgICBQb3N0LFxuICAgIFF1ZXJ5UGFyYW0sXG4gICAgUXVlcnlQYXJhbXMsXG4gICAgUmVzLFxuICAgIFVwbG9hZGVkRmlsZVxufSBmcm9tIFwicm91dGluZy1jb250cm9sbGVyc1wiO1xuaW1wb3J0IHtJQXNzZXRJbWFnZVBhcmFtc30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xuaW1wb3J0IHtBc3NldHN9IGZyb20gXCIuLi9zZXJ2aWNlcy9hc3NldHNcIjtcbmltcG9ydCB7QXNzZXRSZXNvbHZlcn0gZnJvbSBcIi4uL3NlcnZpY2VzL2Fzc2V0LXJlc29sdmVyXCI7XG5pbXBvcnQge1Jlc3BvbnNlfSBmcm9tIFwiZXhwcmVzc1wiO1xuXG5AaW5qZWN0YWJsZSgpXG5AQ29udHJvbGxlcihcIi9hc3NldHNcIilcbmV4cG9ydCBjbGFzcyBBc3NldHNDb250cm9sbGVyIHtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGFzc2V0czogQXNzZXRzLCByZWFkb25seSBhc3NldFJlc29sdmVyOiBBc3NldFJlc29sdmVyKSB7XG5cbiAgICB9XG5cbiAgICBAQXV0aG9yaXplZCgpXG4gICAgQFBvc3QoXCJcIilcbiAgICBhc3luYyB1cGxvYWQoQFVwbG9hZGVkRmlsZShcImZpbGVcIikgZmlsZTogRXhwcmVzcy5NdWx0ZXIuRmlsZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSBmaWxlLm1pbWV0eXBlID09PSBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiID8gbnVsbCA6IGZpbGUubWltZXR5cGU7XG4gICAgICAgICAgICBjb25zdCBhc3NldCA9IGF3YWl0IHRoaXMuYXNzZXRzLndyaXRlQnVmZmVyKGZpbGUuYnVmZmVyLCB7ZmlsZW5hbWU6IGZpbGUuZmlsZW5hbWV9LCBjb250ZW50VHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gYXNzZXQudG9KU09OKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGU/Lm1lc3NhZ2UgfHwgZSB8fCBcIlVua25vd24gZXJyb3JcIjtcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDAwLCBgQXNzZXQgY2FuJ3QgYmUgdXBsb2FkZWQuXFxuJHttc2d9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAR2V0KFwiL2ltYWdlLzppZC86cm90YXRpb25cIilcbiAgICBhc3luYyBnZXRJbWFnZVJvdGF0aW9uKEBQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcsIEBRdWVyeVBhcmFtcygpIHBhcmFtczogSUFzc2V0SW1hZ2VQYXJhbXMsIEBQYXJhbShcInJvdGF0aW9uXCIpIHJvdGF0aW9uOiBudW1iZXIgPSAwKTogUHJvbWlzZTxSZWFkYWJsZT4ge1xuICAgICAgICBjb25zdCBhc3NldCA9IGF3YWl0IHRoaXMuYXNzZXRSZXNvbHZlci5yZXNvbHZlKGlkLCBwYXJhbXMubGF6eSk7XG4gICAgICAgIGlmICghYXNzZXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDA0LCBgSW1hZ2Ugd2l0aCBpZDogJyR7aWR9JyBub3QgZm91bmQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFzc2V0Lm1ldGFkYXRhPy5jbGFzc2lmaWVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMywgYEltYWdlIGlzIGNsYXNzaWZpZWQsIGFuZCBjYW4gYmUgb25seSBkb3dubG9hZGVkIGZyb20gYSBjdXN0b20gdXJsLmApO1xuICAgICAgICB9XG4gICAgICAgIHBhcmFtcy5yb3RhdGlvbiA9IHBhcmFtcy5yb3RhdGlvbiB8fCByb3RhdGlvbjtcbiAgICAgICAgcmV0dXJuIGFzc2V0LmRvd25sb2FkSW1hZ2UocGFyYW1zKTtcbiAgICB9XG5cbiAgICBAR2V0KFwiL2ltYWdlLzppZFwiKVxuICAgIGFzeW5jIGdldEltYWdlKEBQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcsIEBRdWVyeVBhcmFtcygpIHBhcmFtczogSUFzc2V0SW1hZ2VQYXJhbXMpOiBQcm9taXNlPFJlYWRhYmxlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEltYWdlUm90YXRpb24oaWQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgQEdldChcIi86aWRcIilcbiAgICBhc3luYyBnZXRGaWxlKEBQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcsIEBRdWVyeVBhcmFtKFwibGF6eVwiKSBsYXp5OiBib29sZWFuLCBAUmVzKCkgcmVzOiBSZXNwb25zZSk6IFByb21pc2U8UmVhZGFibGU+IHtcbiAgICAgICAgY29uc3QgYXNzZXQgPSBhd2FpdCB0aGlzLmFzc2V0UmVzb2x2ZXIucmVzb2x2ZShpZCwgbGF6eSk7XG4gICAgICAgIGlmICghYXNzZXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDA0LCBgRmlsZSB3aXRoIGlkOiAnJHtpZH0nIG5vdCBmb3VuZC5gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXNzZXQubWV0YWRhdGE/LmNsYXNzaWZpZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDAzLCBgQXNzZXQgaXMgY2xhc3NpZmllZCwgYW5kIGNhbiBiZSBvbmx5IGRvd25sb2FkZWQgZnJvbSBhIGN1c3RvbSB1cmwuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXh0ID0gYXNzZXQubWV0YWRhdGE/LmV4dGVuc2lvbjtcbiAgICAgICAgaWYgKGV4dCkge1xuICAgICAgICAgICAgcmVzLmhlYWRlcihcImNvbnRlbnQtZGlzcG9zaXRpb25cIiwgYGlubGluZTsgZmlsZW5hbWU9JHthc3NldC5maWxlbmFtZX0uJHtleHR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFzc2V0LmRvd25sb2FkKCk7XG4gICAgfVxufVxuIl19
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ import { injectable } from "tsyringe";
23
+ import { Authorized, Controller, Get, HttpError, Param, Post, QueryParam, QueryParams, Res, UploadedFile } from "routing-controllers";
24
+ import { Assets } from "../services/assets";
25
+ import { AssetResolver } from "../services/asset-resolver";
26
+ let AssetsController = class AssetsController {
27
+ constructor(assets, assetResolver) {
28
+ this.assets = assets;
29
+ this.assetResolver = assetResolver;
30
+ }
31
+ upload(file) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ try {
34
+ const contentType = file.mimetype === "application/octet-stream" ? null : file.mimetype;
35
+ const asset = yield this.assets.writeBuffer(file.buffer, { filename: file.filename }, contentType);
36
+ return asset.toJSON();
37
+ }
38
+ catch (e) {
39
+ const msg = (e === null || e === void 0 ? void 0 : e.message) || e || "Unknown error";
40
+ throw new HttpError(400, `Asset can't be uploaded.\n${msg}`);
41
+ }
42
+ });
43
+ }
44
+ getImageRotation(id, params, rotation = 0) {
45
+ var _a;
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ const asset = yield this.assetResolver.resolve(id, params.lazy);
48
+ if (!asset) {
49
+ throw new HttpError(404, `Image with id: '${id}' not found.`);
50
+ }
51
+ if ((_a = asset.metadata) === null || _a === void 0 ? void 0 : _a.classified) {
52
+ throw new HttpError(403, `Image is classified, and can be only downloaded from a custom url.`);
53
+ }
54
+ params.rotation = params.rotation || rotation;
55
+ return asset.downloadImage(params);
56
+ });
57
+ }
58
+ getImage(id, params) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ return this.getImageRotation(id, params);
61
+ });
62
+ }
63
+ getFile(id, lazy, res) {
64
+ var _a, _b;
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ const asset = yield this.assetResolver.resolve(id, lazy);
67
+ if (!asset) {
68
+ throw new HttpError(404, `File with id: '${id}' not found.`);
69
+ }
70
+ if ((_a = asset.metadata) === null || _a === void 0 ? void 0 : _a.classified) {
71
+ throw new HttpError(403, `Asset is classified, and can be only downloaded from a custom url.`);
72
+ }
73
+ const ext = (_b = asset.metadata) === null || _b === void 0 ? void 0 : _b.extension;
74
+ if (ext) {
75
+ res.header("content-disposition", `inline; filename=${asset.filename}.${ext}`);
76
+ }
77
+ return asset.download();
78
+ });
79
+ }
80
+ };
81
+ __decorate([
82
+ Authorized(),
83
+ Post(""),
84
+ __param(0, UploadedFile("file")),
85
+ __metadata("design:type", Function),
86
+ __metadata("design:paramtypes", [Object]),
87
+ __metadata("design:returntype", Promise)
88
+ ], AssetsController.prototype, "upload", null);
89
+ __decorate([
90
+ Get("/image/:id/:rotation"),
91
+ __param(0, Param("id")), __param(1, QueryParams()), __param(2, Param("rotation")),
92
+ __metadata("design:type", Function),
93
+ __metadata("design:paramtypes", [String, Object, Number]),
94
+ __metadata("design:returntype", Promise)
95
+ ], AssetsController.prototype, "getImageRotation", null);
96
+ __decorate([
97
+ Get("/image/:id"),
98
+ __param(0, Param("id")), __param(1, QueryParams()),
99
+ __metadata("design:type", Function),
100
+ __metadata("design:paramtypes", [String, Object]),
101
+ __metadata("design:returntype", Promise)
102
+ ], AssetsController.prototype, "getImage", null);
103
+ __decorate([
104
+ Get("/:id"),
105
+ __param(0, Param("id")), __param(1, QueryParam("lazy")), __param(2, Res()),
106
+ __metadata("design:type", Function),
107
+ __metadata("design:paramtypes", [String, Boolean, Object]),
108
+ __metadata("design:returntype", Promise)
109
+ ], AssetsController.prototype, "getFile", null);
110
+ AssetsController = __decorate([
111
+ injectable(),
112
+ Controller("/assets"),
113
+ __metadata("design:paramtypes", [Assets, AssetResolver])
114
+ ], AssetsController);
115
+ export { AssetsController };
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzdC1jb250cm9sbGVycy9hc3NldHMuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUNWLEdBQUcsRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLElBQUksRUFDSixVQUFVLEVBQ1YsV0FBVyxFQUNYLEdBQUcsRUFDSCxZQUFZLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0lBSzVDLGdCQUFnQixTQUFoQixnQkFBZ0I7SUFFekIsWUFBcUIsTUFBYyxFQUFXLGFBQTRCO1FBQXJELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUUxRSxDQUFDO0lBSUssTUFBTSxDQUF1QixJQUF5Qjs7WUFDeEQsSUFBSTtnQkFDQSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxLQUFLLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3hGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ2pHLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3pCO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsTUFBTSxHQUFHLEdBQUcsQ0FBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsT0FBTyxLQUFJLENBQUMsSUFBSSxlQUFlLENBQUM7Z0JBQy9DLE1BQU0sSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFLDZCQUE2QixHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ2hFO1FBQ0wsQ0FBQztLQUFBO0lBR0ssZ0JBQWdCLENBQWMsRUFBVSxFQUFpQixNQUF5QixFQUFxQixXQUFtQixDQUFDOzs7WUFDN0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1IsTUFBTSxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxDQUFDLENBQUM7YUFDakU7WUFDRCxVQUFJLEtBQUssQ0FBQyxRQUFRLDBDQUFFLFVBQVUsRUFBRTtnQkFDNUIsTUFBTSxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsb0VBQW9FLENBQUMsQ0FBQzthQUNsRztZQUNELE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUM7WUFDOUMsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDOztLQUN0QztJQUdLLFFBQVEsQ0FBYyxFQUFVLEVBQWlCLE1BQXlCOztZQUM1RSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0MsQ0FBQztLQUFBO0lBR0ssT0FBTyxDQUFjLEVBQVUsRUFBc0IsSUFBYSxFQUFTLEdBQWE7OztZQUMxRixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNSLE1BQU0sSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsQ0FBQyxDQUFDO2FBQ2hFO1lBQ0QsVUFBSSxLQUFLLENBQUMsUUFBUSwwQ0FBRSxVQUFVLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFLG9FQUFvRSxDQUFDLENBQUM7YUFDbEc7WUFDRCxNQUFNLEdBQUcsU0FBRyxLQUFLLENBQUMsUUFBUSwwQ0FBRSxTQUFTLENBQUM7WUFDdEMsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsR0FBRyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxvQkFBb0IsS0FBSyxDQUFDLFFBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ2xGO1lBQ0QsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7O0tBQzNCO0NBQ0osQ0FBQTtBQTVDRztJQUZDLFVBQVUsRUFBRTtJQUNaLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDSyxXQUFBLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTs7Ozs4Q0FTakM7QUFHRDtJQURDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQztJQUNKLFdBQUEsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLEVBQWMsV0FBQSxXQUFXLEVBQUUsQ0FBQSxFQUE2QixXQUFBLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTs7Ozt3REFVM0c7QUFHRDtJQURDLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDRixXQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxFQUFjLFdBQUEsV0FBVyxFQUFFLENBQUE7Ozs7Z0RBRXJEO0FBR0Q7SUFEQyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ0csV0FBQSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsRUFBYyxXQUFBLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQSxFQUFpQixXQUFBLEdBQUcsRUFBRSxDQUFBOzs7OytDQWEvRTtBQW5EUSxnQkFBZ0I7SUFGNUIsVUFBVSxFQUFFO0lBQ1osVUFBVSxDQUFDLFNBQVMsQ0FBQztxQ0FHVyxNQUFNLEVBQTBCLGFBQWE7R0FGakUsZ0JBQWdCLENBb0Q1QjtTQXBEWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWRhYmxlfSBmcm9tIFwic3RyZWFtXCI7XHJcbmltcG9ydCB7aW5qZWN0YWJsZX0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBBdXRob3JpemVkLFxyXG4gICAgQ29udHJvbGxlcixcclxuICAgIEdldCxcclxuICAgIEh0dHBFcnJvcixcclxuICAgIFBhcmFtLFxyXG4gICAgUG9zdCxcclxuICAgIFF1ZXJ5UGFyYW0sXHJcbiAgICBRdWVyeVBhcmFtcyxcclxuICAgIFJlcyxcclxuICAgIFVwbG9hZGVkRmlsZVxyXG59IGZyb20gXCJyb3V0aW5nLWNvbnRyb2xsZXJzXCI7XHJcbmltcG9ydCB7SUFzc2V0SW1hZ2VQYXJhbXN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtBc3NldHN9IGZyb20gXCIuLi9zZXJ2aWNlcy9hc3NldHNcIjtcclxuaW1wb3J0IHtBc3NldFJlc29sdmVyfSBmcm9tIFwiLi4vc2VydmljZXMvYXNzZXQtcmVzb2x2ZXJcIjtcclxuaW1wb3J0IHtSZXNwb25zZX0gZnJvbSBcImV4cHJlc3NcIjtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQENvbnRyb2xsZXIoXCIvYXNzZXRzXCIpXHJcbmV4cG9ydCBjbGFzcyBBc3NldHNDb250cm9sbGVyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBhc3NldHM6IEFzc2V0cywgcmVhZG9ubHkgYXNzZXRSZXNvbHZlcjogQXNzZXRSZXNvbHZlcikge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBAQXV0aG9yaXplZCgpXHJcbiAgICBAUG9zdChcIlwiKVxyXG4gICAgYXN5bmMgdXBsb2FkKEBVcGxvYWRlZEZpbGUoXCJmaWxlXCIpIGZpbGU6IEV4cHJlc3MuTXVsdGVyLkZpbGUpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IGZpbGUubWltZXR5cGUgPT09IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIgPyBudWxsIDogZmlsZS5taW1ldHlwZTtcclxuICAgICAgICAgICAgY29uc3QgYXNzZXQgPSBhd2FpdCB0aGlzLmFzc2V0cy53cml0ZUJ1ZmZlcihmaWxlLmJ1ZmZlciwge2ZpbGVuYW1lOiBmaWxlLmZpbGVuYW1lfSwgY29udGVudFR5cGUpO1xyXG4gICAgICAgICAgICByZXR1cm4gYXNzZXQudG9KU09OKCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlPy5tZXNzYWdlIHx8IGUgfHwgXCJVbmtub3duIGVycm9yXCI7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoNDAwLCBgQXNzZXQgY2FuJ3QgYmUgdXBsb2FkZWQuXFxuJHttc2d9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBHZXQoXCIvaW1hZ2UvOmlkLzpyb3RhdGlvblwiKVxyXG4gICAgYXN5bmMgZ2V0SW1hZ2VSb3RhdGlvbihAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nLCBAUXVlcnlQYXJhbXMoKSBwYXJhbXM6IElBc3NldEltYWdlUGFyYW1zLCBAUGFyYW0oXCJyb3RhdGlvblwiKSByb3RhdGlvbjogbnVtYmVyID0gMCk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICBjb25zdCBhc3NldCA9IGF3YWl0IHRoaXMuYXNzZXRSZXNvbHZlci5yZXNvbHZlKGlkLCBwYXJhbXMubGF6eSk7XHJcbiAgICAgICAgaWYgKCFhc3NldCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwNCwgYEltYWdlIHdpdGggaWQ6ICcke2lkfScgbm90IGZvdW5kLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXNzZXQubWV0YWRhdGE/LmNsYXNzaWZpZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvcig0MDMsIGBJbWFnZSBpcyBjbGFzc2lmaWVkLCBhbmQgY2FuIGJlIG9ubHkgZG93bmxvYWRlZCBmcm9tIGEgY3VzdG9tIHVybC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFyYW1zLnJvdGF0aW9uID0gcGFyYW1zLnJvdGF0aW9uIHx8IHJvdGF0aW9uO1xyXG4gICAgICAgIHJldHVybiBhc3NldC5kb3dubG9hZEltYWdlKHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgQEdldChcIi9pbWFnZS86aWRcIilcclxuICAgIGFzeW5jIGdldEltYWdlKEBQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcsIEBRdWVyeVBhcmFtcygpIHBhcmFtczogSUFzc2V0SW1hZ2VQYXJhbXMpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VSb3RhdGlvbihpZCwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBAR2V0KFwiLzppZFwiKVxyXG4gICAgYXN5bmMgZ2V0RmlsZShAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nLCBAUXVlcnlQYXJhbShcImxhenlcIikgbGF6eTogYm9vbGVhbiwgQFJlcygpIHJlczogUmVzcG9uc2UpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgY29uc3QgYXNzZXQgPSBhd2FpdCB0aGlzLmFzc2V0UmVzb2x2ZXIucmVzb2x2ZShpZCwgbGF6eSk7XHJcbiAgICAgICAgaWYgKCFhc3NldCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwNCwgYEZpbGUgd2l0aCBpZDogJyR7aWR9JyBub3QgZm91bmQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhc3NldC5tZXRhZGF0YT8uY2xhc3NpZmllZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMywgYEFzc2V0IGlzIGNsYXNzaWZpZWQsIGFuZCBjYW4gYmUgb25seSBkb3dubG9hZGVkIGZyb20gYSBjdXN0b20gdXJsLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBleHQgPSBhc3NldC5tZXRhZGF0YT8uZXh0ZW5zaW9uO1xyXG4gICAgICAgIGlmIChleHQpIHtcclxuICAgICAgICAgICAgcmVzLmhlYWRlcihcImNvbnRlbnQtZGlzcG9zaXRpb25cIiwgYGlubGluZTsgZmlsZW5hbWU9JHthc3NldC5maWxlbmFtZX0uJHtleHR9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhc3NldC5kb3dubG9hZCgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,75 +1,75 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- import { sign } from "jsonwebtoken";
23
- import { injectable } from "tsyringe";
24
- import { Authorized, Body, Controller, CurrentUser, Get, HttpError, Post, Res } from "routing-controllers";
25
- import { compare } from "bcrypt";
26
- import { Configuration } from "../services/configuration";
27
- import { UserManager } from "../services/user-manager";
28
- let AuthController = class AuthController {
29
- constructor(config, userManager) {
30
- this.config = config;
31
- this.userManager = userManager;
32
- }
33
- login(credentials, res) {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- try {
36
- const user = yield this.userManager.getByCredentials(credentials);
37
- const valid = yield compare(credentials.password, user.password);
38
- if (valid !== true)
39
- throw "message.login.error";
40
- return {
41
- token: sign({ id: user._id || user.id }, this.config.resolve("jwtSecret")),
42
- user: yield this.userManager.serialize(user)
43
- };
44
- }
45
- catch (reason) {
46
- throw new HttpError(401, reason);
47
- }
48
- });
49
- }
50
- getProfile(user) {
51
- return this.userManager.serialize(user);
52
- }
53
- };
54
- __decorate([
55
- Post("/login"),
56
- __param(0, Body()), __param(1, Res()),
57
- __metadata("design:type", Function),
58
- __metadata("design:paramtypes", [Object, Object]),
59
- __metadata("design:returntype", Promise)
60
- ], AuthController.prototype, "login", null);
61
- __decorate([
62
- Authorized(),
63
- Get("/user"),
64
- __param(0, CurrentUser()),
65
- __metadata("design:type", Function),
66
- __metadata("design:paramtypes", [Object]),
67
- __metadata("design:returntype", void 0)
68
- ], AuthController.prototype, "getProfile", null);
69
- AuthController = __decorate([
70
- injectable(),
71
- Controller(),
72
- __metadata("design:paramtypes", [Configuration, UserManager])
73
- ], AuthController);
74
- export { AuthController };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc3QtY29udHJvbGxlcnMvYXV0aC5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3pHLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0IsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztJQUt4QyxjQUFjLFNBQWQsY0FBYztJQUV2QixZQUFxQixNQUFxQixFQUFXLFdBQXdCO1FBQXhELFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFHM0UsS0FBSyxDQUFTLFdBQWdCLEVBQVMsR0FBYTs7WUFDdEQsSUFBSTtnQkFDQSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2xFLE1BQU0sS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLEtBQUssS0FBSyxJQUFJO29CQUFFLE1BQU0scUJBQXFCLENBQUM7Z0JBQ2hELE9BQU87b0JBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDMUUsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2lCQUMvQyxDQUFDO2FBQ0w7WUFBQyxPQUFPLE1BQU0sRUFBRTtnQkFDYixNQUFNLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNwQztRQUNMLENBQUM7S0FBQTtJQUlELFVBQVUsQ0FBZ0IsSUFBVztRQUNqQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDSixDQUFBO0FBbkJHO0lBREMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNGLFdBQUEsSUFBSSxFQUFFLENBQUEsRUFBb0IsV0FBQSxHQUFHLEVBQUUsQ0FBQTs7OzsyQ0FZM0M7QUFJRDtJQUZDLFVBQVUsRUFBRTtJQUNaLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDRCxXQUFBLFdBQVcsRUFBRSxDQUFBOzs7O2dEQUV4QjtBQXZCUSxjQUFjO0lBRjFCLFVBQVUsRUFBRTtJQUNaLFVBQVUsRUFBRTtxQ0FHb0IsYUFBYSxFQUF3QixXQUFXO0dBRnBFLGNBQWMsQ0F3QjFCO1NBeEJZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Jlc3BvbnNlfSBmcm9tIFwiZXhwcmVzc1wiO1xuaW1wb3J0IHtzaWdufSBmcm9tIFwianNvbndlYnRva2VuXCI7XG5pbXBvcnQge2luamVjdGFibGV9IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHtBdXRob3JpemVkLCBCb2R5LCBDb250cm9sbGVyLCBDdXJyZW50VXNlciwgR2V0LCBIdHRwRXJyb3IsIFBvc3QsIFJlc30gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcbmltcG9ydCB7Y29tcGFyZX0gZnJvbSBcImJjcnlwdFwiO1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQge1VzZXJNYW5hZ2VyfSBmcm9tIFwiLi4vc2VydmljZXMvdXNlci1tYW5hZ2VyXCI7XG5pbXBvcnQge0lVc2VyfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XG5cbkBpbmplY3RhYmxlKClcbkBDb250cm9sbGVyKClcbmV4cG9ydCBjbGFzcyBBdXRoQ29udHJvbGxlciB7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb25maWc6IENvbmZpZ3VyYXRpb24sIHJlYWRvbmx5IHVzZXJNYW5hZ2VyOiBVc2VyTWFuYWdlcikge31cblxuICAgIEBQb3N0KFwiL2xvZ2luXCIpXG4gICAgYXN5bmMgbG9naW4oQEJvZHkoKSBjcmVkZW50aWFsczogYW55LCBAUmVzKCkgcmVzOiBSZXNwb25zZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMudXNlck1hbmFnZXIuZ2V0QnlDcmVkZW50aWFscyhjcmVkZW50aWFscyk7XG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IGNvbXBhcmUoY3JlZGVudGlhbHMucGFzc3dvcmQsIHVzZXIucGFzc3dvcmQpO1xuICAgICAgICAgICAgaWYgKHZhbGlkICE9PSB0cnVlKSB0aHJvdyBcIm1lc3NhZ2UubG9naW4uZXJyb3JcIjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdG9rZW46IHNpZ24oeyBpZDogdXNlci5faWQgfHwgdXNlci5pZCB9LCB0aGlzLmNvbmZpZy5yZXNvbHZlKFwiand0U2VjcmV0XCIpKSxcbiAgICAgICAgICAgICAgICB1c2VyOiBhd2FpdCB0aGlzLnVzZXJNYW5hZ2VyLnNlcmlhbGl6ZSh1c2VyKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaCAocmVhc29uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMSwgcmVhc29uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBBdXRob3JpemVkKClcbiAgICBAR2V0KFwiL3VzZXJcIilcbiAgICBnZXRQcm9maWxlKEBDdXJyZW50VXNlcigpIHVzZXI6IElVc2VyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJNYW5hZ2VyLnNlcmlhbGl6ZSh1c2VyKTtcbiAgICB9XG59XG4iXX0=
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ import { sign } from "jsonwebtoken";
23
+ import { injectable } from "tsyringe";
24
+ import { Authorized, Body, Controller, CurrentUser, Get, HttpError, Post, Res } from "routing-controllers";
25
+ import { compare } from "bcrypt";
26
+ import { Configuration } from "../services/configuration";
27
+ import { UserManager } from "../services/user-manager";
28
+ let AuthController = class AuthController {
29
+ constructor(config, userManager) {
30
+ this.config = config;
31
+ this.userManager = userManager;
32
+ }
33
+ login(credentials, res) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ try {
36
+ const user = yield this.userManager.getByCredentials(credentials);
37
+ const valid = yield compare(credentials.password, user.password);
38
+ if (valid !== true)
39
+ throw "message.login.error";
40
+ return {
41
+ token: sign({ id: user._id || user.id }, this.config.resolve("jwtSecret")),
42
+ user: yield this.userManager.serialize(user)
43
+ };
44
+ }
45
+ catch (reason) {
46
+ throw new HttpError(401, reason);
47
+ }
48
+ });
49
+ }
50
+ getProfile(user) {
51
+ return this.userManager.serialize(user);
52
+ }
53
+ };
54
+ __decorate([
55
+ Post("/login"),
56
+ __param(0, Body()), __param(1, Res()),
57
+ __metadata("design:type", Function),
58
+ __metadata("design:paramtypes", [Object, Object]),
59
+ __metadata("design:returntype", Promise)
60
+ ], AuthController.prototype, "login", null);
61
+ __decorate([
62
+ Authorized(),
63
+ Get("/user"),
64
+ __param(0, CurrentUser()),
65
+ __metadata("design:type", Function),
66
+ __metadata("design:paramtypes", [Object]),
67
+ __metadata("design:returntype", void 0)
68
+ ], AuthController.prototype, "getProfile", null);
69
+ AuthController = __decorate([
70
+ injectable(),
71
+ Controller(),
72
+ __metadata("design:paramtypes", [Configuration, UserManager])
73
+ ], AuthController);
74
+ export { AuthController };
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc3QtY29udHJvbGxlcnMvYXV0aC5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3pHLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0IsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztJQUt4QyxjQUFjLFNBQWQsY0FBYztJQUV2QixZQUFxQixNQUFxQixFQUFXLFdBQXdCO1FBQXhELFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFHM0UsS0FBSyxDQUFTLFdBQWdCLEVBQVMsR0FBYTs7WUFDdEQsSUFBSTtnQkFDQSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2xFLE1BQU0sS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLEtBQUssS0FBSyxJQUFJO29CQUFFLE1BQU0scUJBQXFCLENBQUM7Z0JBQ2hELE9BQU87b0JBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDMUUsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2lCQUMvQyxDQUFDO2FBQ0w7WUFBQyxPQUFPLE1BQU0sRUFBRTtnQkFDYixNQUFNLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNwQztRQUNMLENBQUM7S0FBQTtJQUlELFVBQVUsQ0FBZ0IsSUFBVztRQUNqQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDSixDQUFBO0FBbkJHO0lBREMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNGLFdBQUEsSUFBSSxFQUFFLENBQUEsRUFBb0IsV0FBQSxHQUFHLEVBQUUsQ0FBQTs7OzsyQ0FZM0M7QUFJRDtJQUZDLFVBQVUsRUFBRTtJQUNaLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDRCxXQUFBLFdBQVcsRUFBRSxDQUFBOzs7O2dEQUV4QjtBQXZCUSxjQUFjO0lBRjFCLFVBQVUsRUFBRTtJQUNaLFVBQVUsRUFBRTtxQ0FHb0IsYUFBYSxFQUF3QixXQUFXO0dBRnBFLGNBQWMsQ0F3QjFCO1NBeEJZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Jlc3BvbnNlfSBmcm9tIFwiZXhwcmVzc1wiO1xyXG5pbXBvcnQge3NpZ259IGZyb20gXCJqc29ud2VidG9rZW5cIjtcclxuaW1wb3J0IHtpbmplY3RhYmxlfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtBdXRob3JpemVkLCBCb2R5LCBDb250cm9sbGVyLCBDdXJyZW50VXNlciwgR2V0LCBIdHRwRXJyb3IsIFBvc3QsIFJlc30gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtjb21wYXJlfSBmcm9tIFwiYmNyeXB0XCI7XHJcblxyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuLi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7VXNlck1hbmFnZXJ9IGZyb20gXCIuLi9zZXJ2aWNlcy91c2VyLW1hbmFnZXJcIjtcclxuaW1wb3J0IHtJVXNlcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5AQ29udHJvbGxlcigpXHJcbmV4cG9ydCBjbGFzcyBBdXRoQ29udHJvbGxlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29uZmlnOiBDb25maWd1cmF0aW9uLCByZWFkb25seSB1c2VyTWFuYWdlcjogVXNlck1hbmFnZXIpIHt9XHJcblxyXG4gICAgQFBvc3QoXCIvbG9naW5cIilcclxuICAgIGFzeW5jIGxvZ2luKEBCb2R5KCkgY3JlZGVudGlhbHM6IGFueSwgQFJlcygpIHJlczogUmVzcG9uc2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2VyTWFuYWdlci5nZXRCeUNyZWRlbnRpYWxzKGNyZWRlbnRpYWxzKTtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCBjb21wYXJlKGNyZWRlbnRpYWxzLnBhc3N3b3JkLCB1c2VyLnBhc3N3b3JkKTtcclxuICAgICAgICAgICAgaWYgKHZhbGlkICE9PSB0cnVlKSB0aHJvdyBcIm1lc3NhZ2UubG9naW4uZXJyb3JcIjtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHRva2VuOiBzaWduKHsgaWQ6IHVzZXIuX2lkIHx8IHVzZXIuaWQgfSwgdGhpcy5jb25maWcucmVzb2x2ZShcImp3dFNlY3JldFwiKSksXHJcbiAgICAgICAgICAgICAgICB1c2VyOiBhd2FpdCB0aGlzLnVzZXJNYW5hZ2VyLnNlcmlhbGl6ZSh1c2VyKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0gY2F0Y2ggKHJlYXNvbikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKDQwMSwgcmVhc29uKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEF1dGhvcml6ZWQoKVxyXG4gICAgQEdldChcIi91c2VyXCIpXHJcbiAgICBnZXRQcm9maWxlKEBDdXJyZW50VXNlcigpIHVzZXI6IElVc2VyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlck1hbmFnZXIuc2VyaWFsaXplKHVzZXIpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,37 +1,37 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- import { injectable } from "tsyringe";
14
- import { Controller, Get, Param } from "routing-controllers";
15
- import { GalleryCache } from "../services/gallery-cache";
16
- let GalleryController = class GalleryController {
17
- constructor(galleryCache) {
18
- this.galleryCache = galleryCache;
19
- }
20
- getFile(id) {
21
- return this.galleryCache.serve(id);
22
- }
23
- };
24
- __decorate([
25
- Get("/:id"),
26
- __param(0, Param("id")),
27
- __metadata("design:type", Function),
28
- __metadata("design:paramtypes", [String]),
29
- __metadata("design:returntype", void 0)
30
- ], GalleryController.prototype, "getFile", null);
31
- GalleryController = __decorate([
32
- injectable(),
33
- Controller("/gallery"),
34
- __metadata("design:paramtypes", [GalleryCache])
35
- ], GalleryController);
36
- export { GalleryController };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc3QtY29udHJvbGxlcnMvZ2FsbGVyeS5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0lBSTFDLGlCQUFpQixTQUFqQixpQkFBaUI7SUFFMUIsWUFBcUIsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFBSSxDQUFDO0lBR3BELE9BQU8sQ0FBYyxFQUFVO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNKLENBQUE7QUFIRztJQURDLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDSCxXQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTs7OztnREFFbkI7QUFQUSxpQkFBaUI7SUFGN0IsVUFBVSxFQUFFO0lBQ1osVUFBVSxDQUFDLFVBQVUsQ0FBQztxQ0FHZ0IsWUFBWTtHQUZ0QyxpQkFBaUIsQ0FRN0I7U0FSWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGV9IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHtDb250cm9sbGVyLCBHZXQsIFBhcmFtfSBmcm9tIFwicm91dGluZy1jb250cm9sbGVyc1wiO1xuaW1wb3J0IHtHYWxsZXJ5Q2FjaGV9IGZyb20gXCIuLi9zZXJ2aWNlcy9nYWxsZXJ5LWNhY2hlXCI7XG5cbkBpbmplY3RhYmxlKClcbkBDb250cm9sbGVyKFwiL2dhbGxlcnlcIilcbmV4cG9ydCBjbGFzcyBHYWxsZXJ5Q29udHJvbGxlciB7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBnYWxsZXJ5Q2FjaGU6IEdhbGxlcnlDYWNoZSkgeyB9XG5cbiAgICBAR2V0KFwiLzppZFwiKVxuICAgIGdldEZpbGUoQFBhcmFtKFwiaWRcIikgaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5nYWxsZXJ5Q2FjaGUuc2VydmUoaWQpO1xuICAgIH1cbn1cbiJdfQ==
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { injectable } from "tsyringe";
14
+ import { Controller, Get, Param } from "routing-controllers";
15
+ import { GalleryCache } from "../services/gallery-cache";
16
+ let GalleryController = class GalleryController {
17
+ constructor(galleryCache) {
18
+ this.galleryCache = galleryCache;
19
+ }
20
+ getFile(id) {
21
+ return this.galleryCache.serve(id);
22
+ }
23
+ };
24
+ __decorate([
25
+ Get("/:id"),
26
+ __param(0, Param("id")),
27
+ __metadata("design:type", Function),
28
+ __metadata("design:paramtypes", [String]),
29
+ __metadata("design:returntype", void 0)
30
+ ], GalleryController.prototype, "getFile", null);
31
+ GalleryController = __decorate([
32
+ injectable(),
33
+ Controller("/gallery"),
34
+ __metadata("design:paramtypes", [GalleryCache])
35
+ ], GalleryController);
36
+ export { GalleryController };
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc3QtY29udHJvbGxlcnMvZ2FsbGVyeS5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0lBSTFDLGlCQUFpQixTQUFqQixpQkFBaUI7SUFFMUIsWUFBcUIsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFBSSxDQUFDO0lBR3BELE9BQU8sQ0FBYyxFQUFVO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNKLENBQUE7QUFIRztJQURDLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDSCxXQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTs7OztnREFFbkI7QUFQUSxpQkFBaUI7SUFGN0IsVUFBVSxFQUFFO0lBQ1osVUFBVSxDQUFDLFVBQVUsQ0FBQztxQ0FHZ0IsWUFBWTtHQUZ0QyxpQkFBaUIsQ0FRN0I7U0FSWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGV9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge0NvbnRyb2xsZXIsIEdldCwgUGFyYW19IGZyb20gXCJyb3V0aW5nLWNvbnRyb2xsZXJzXCI7XHJcbmltcG9ydCB7R2FsbGVyeUNhY2hlfSBmcm9tIFwiLi4vc2VydmljZXMvZ2FsbGVyeS1jYWNoZVwiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5AQ29udHJvbGxlcihcIi9nYWxsZXJ5XCIpXHJcbmV4cG9ydCBjbGFzcyBHYWxsZXJ5Q29udHJvbGxlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgZ2FsbGVyeUNhY2hlOiBHYWxsZXJ5Q2FjaGUpIHsgfVxyXG5cclxuICAgIEBHZXQoXCIvOmlkXCIpXHJcbiAgICBnZXRGaWxlKEBQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nYWxsZXJ5Q2FjaGUuc2VydmUoaWQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==