@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,45 +1,45 @@
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, injectAll, Lifecycle, scoped } from "tsyringe";
23
- import { FIXTURE } from "../common-types";
24
- let Fixtures = class Fixtures {
25
- constructor(fixtures) {
26
- this.fixtures = fixtures;
27
- }
28
- load() {
29
- return __awaiter(this, void 0, void 0, function* () {
30
- if (!this.fixtures)
31
- return;
32
- for (let fixture of this.fixtures) {
33
- yield fixture.load();
34
- }
35
- });
36
- }
37
- };
38
- Fixtures = __decorate([
39
- injectable(),
40
- scoped(Lifecycle.ContainerScoped),
41
- __param(0, injectAll(FIXTURE)),
42
- __metadata("design:paramtypes", [Array])
43
- ], Fixtures);
44
- export { Fixtures };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZml4dHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNsRSxPQUFPLEVBQUMsT0FBTyxFQUFXLE1BQU0saUJBQWlCLENBQUM7SUFJckMsUUFBUSxTQUFSLFFBQVE7SUFFakIsWUFBMEMsUUFBb0I7UUFBcEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtJQUU5RCxDQUFDO0lBRUssSUFBSTs7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTztZQUUzQixLQUFLLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQy9CLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQWJZLFFBQVE7SUFGcEIsVUFBVSxFQUFFO0lBQ1osTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7SUFHakIsV0FBQSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7O0dBRnRCLFFBQVEsQ0FhcEI7U0FiWSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBpbmplY3RBbGwsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcbmltcG9ydCB7RklYVFVSRSwgSUZpeHR1cmV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcblxuQGluamVjdGFibGUoKVxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxuZXhwb3J0IGNsYXNzIEZpeHR1cmVzIHtcblxuICAgIGNvbnN0cnVjdG9yKEBpbmplY3RBbGwoRklYVFVSRSkgcHJvdGVjdGVkIGZpeHR1cmVzOiBJRml4dHVyZVtdKSB7XG5cbiAgICB9XG5cbiAgICBhc3luYyBsb2FkKCkge1xuICAgICAgICBpZiAoIXRoaXMuZml4dHVyZXMpIHJldHVybjtcblxuICAgICAgICBmb3IgKGxldCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZXMpIHtcbiAgICAgICAgICAgIGF3YWl0IGZpeHR1cmUubG9hZCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
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, injectAll, Lifecycle, scoped } from "tsyringe";
23
+ import { FIXTURE } from "../common-types";
24
+ let Fixtures = class Fixtures {
25
+ constructor(fixtures) {
26
+ this.fixtures = fixtures;
27
+ }
28
+ load() {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ if (!this.fixtures)
31
+ return;
32
+ for (let fixture of this.fixtures) {
33
+ yield fixture.load();
34
+ }
35
+ });
36
+ }
37
+ };
38
+ Fixtures = __decorate([
39
+ injectable(),
40
+ scoped(Lifecycle.ContainerScoped),
41
+ __param(0, injectAll(FIXTURE)),
42
+ __metadata("design:paramtypes", [Array])
43
+ ], Fixtures);
44
+ export { Fixtures };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZml4dHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNsRSxPQUFPLEVBQUMsT0FBTyxFQUFXLE1BQU0saUJBQWlCLENBQUM7SUFJckMsUUFBUSxTQUFSLFFBQVE7SUFFakIsWUFBMEMsUUFBb0I7UUFBcEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtJQUU5RCxDQUFDO0lBRUssSUFBSTs7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsT0FBTztZQUUzQixLQUFLLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQy9CLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQWJZLFFBQVE7SUFGcEIsVUFBVSxFQUFFO0lBQ1osTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7SUFHakIsV0FBQSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7O0dBRnRCLFFBQVEsQ0FhcEI7U0FiWSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBpbmplY3RBbGwsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtGSVhUVVJFLCBJRml4dHVyZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBGaXh0dXJlcyB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQGluamVjdEFsbChGSVhUVVJFKSBwcm90ZWN0ZWQgZml4dHVyZXM6IElGaXh0dXJlW10pIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbG9hZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZml4dHVyZXMpIHJldHVybjtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVzKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGZpeHR1cmUubG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,36 +1,36 @@
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
- import { injectable, Lifecycle, scoped } from "tsyringe";
11
- import { GalleryImage } from "./gallery-image";
12
- let GalleryCache = class GalleryCache {
13
- constructor() {
14
- this.imgCache = {};
15
- }
16
- put(img) {
17
- this.imgCache[img.thumb] = img;
18
- this.imgCache[img.big] = img;
19
- }
20
- serve(id) {
21
- const img = this.imgCache[id];
22
- return !img ? null : img.serve(id);
23
- }
24
- create(folder, targetSize, handler) {
25
- const image = new GalleryImage(folder, targetSize, handler);
26
- this.put(image);
27
- return image;
28
- }
29
- };
30
- GalleryCache = __decorate([
31
- injectable(),
32
- scoped(Lifecycle.ContainerScoped),
33
- __metadata("design:paramtypes", [])
34
- ], GalleryCache);
35
- export { GalleryCache };
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nYWxsZXJ5LWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7SUFJaEMsWUFBWSxTQUFaLFlBQVk7SUFJckI7UUFDSSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQWtCO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUssQ0FBQyxFQUFVO1FBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFjLEVBQUUsVUFBd0IsRUFBRSxPQUE2QjtRQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKLENBQUE7QUF2QlksWUFBWTtJQUZ4QixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQzs7R0FDckIsWUFBWSxDQXVCeEI7U0F2QlksWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0YWJsZSwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHtJR2FsbGVyeUltYWdlLCBJR2FsbGVyeUltYWdlSGFuZGxlciwgSUdhbGxlcnlTaXplfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XG5pbXBvcnQge0dhbGxlcnlJbWFnZX0gZnJvbSBcIi4vZ2FsbGVyeS1pbWFnZVwiO1xuXG5AaW5qZWN0YWJsZSgpXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXG5leHBvcnQgY2xhc3MgR2FsbGVyeUNhY2hlIHtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW1nQ2FjaGU6IHsgW2lkOiBzdHJpbmddOiBJR2FsbGVyeUltYWdlIH07XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbWdDYWNoZSA9IHt9O1xuICAgIH1cblxuICAgIHB1dChpbWc6IElHYWxsZXJ5SW1hZ2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWdDYWNoZVtpbWcudGh1bWJdID0gaW1nO1xuICAgICAgICB0aGlzLmltZ0NhY2hlW2ltZy5iaWddID0gaW1nO1xuICAgIH1cblxuICAgIHNlcnZlKGlkOiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgICAgICBjb25zdCBpbWcgPSB0aGlzLmltZ0NhY2hlW2lkXTtcbiAgICAgICAgcmV0dXJuICFpbWcgPyBudWxsIDogaW1nLnNlcnZlKGlkKTtcbiAgICB9XG5cbiAgICBjcmVhdGUoZm9sZGVyOiBzdHJpbmcsIHRhcmdldFNpemU6IElHYWxsZXJ5U2l6ZSwgaGFuZGxlcjogSUdhbGxlcnlJbWFnZUhhbmRsZXIpOiBJR2FsbGVyeUltYWdlIHtcbiAgICAgICAgY29uc3QgaW1hZ2UgPSBuZXcgR2FsbGVyeUltYWdlKGZvbGRlciwgdGFyZ2V0U2l6ZSwgaGFuZGxlcik7XG4gICAgICAgIHRoaXMucHV0KGltYWdlKTtcbiAgICAgICAgcmV0dXJuIGltYWdlO1xuICAgIH1cbn1cbiJdfQ==
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
+ import { injectable, Lifecycle, scoped } from "tsyringe";
11
+ import { GalleryImage } from "./gallery-image";
12
+ let GalleryCache = class GalleryCache {
13
+ constructor() {
14
+ this.imgCache = {};
15
+ }
16
+ put(img) {
17
+ this.imgCache[img.thumb] = img;
18
+ this.imgCache[img.big] = img;
19
+ }
20
+ serve(id) {
21
+ const img = this.imgCache[id];
22
+ return !img ? null : img.serve(id);
23
+ }
24
+ create(folder, targetSize, handler) {
25
+ const image = new GalleryImage(folder, targetSize, handler);
26
+ this.put(image);
27
+ return image;
28
+ }
29
+ };
30
+ GalleryCache = __decorate([
31
+ injectable(),
32
+ scoped(Lifecycle.ContainerScoped),
33
+ __metadata("design:paramtypes", [])
34
+ ], GalleryCache);
35
+ export { GalleryCache };
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nYWxsZXJ5LWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7SUFJaEMsWUFBWSxTQUFaLFlBQVk7SUFJckI7UUFDSSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQWtCO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUssQ0FBQyxFQUFVO1FBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFjLEVBQUUsVUFBd0IsRUFBRSxPQUE2QjtRQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKLENBQUE7QUF2QlksWUFBWTtJQUZ4QixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQzs7R0FDckIsWUFBWSxDQXVCeEI7U0F2QlksWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0YWJsZSwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQge0lHYWxsZXJ5SW1hZ2UsIElHYWxsZXJ5SW1hZ2VIYW5kbGVyLCBJR2FsbGVyeVNpemV9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtHYWxsZXJ5SW1hZ2V9IGZyb20gXCIuL2dhbGxlcnktaW1hZ2VcIjtcclxuXHJcbkBpbmplY3RhYmxlKClcclxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxyXG5leHBvcnQgY2xhc3MgR2FsbGVyeUNhY2hlIHtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGltZ0NhY2hlOiB7IFtpZDogc3RyaW5nXTogSUdhbGxlcnlJbWFnZSB9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuaW1nQ2FjaGUgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBwdXQoaW1nOiBJR2FsbGVyeUltYWdlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbWdDYWNoZVtpbWcudGh1bWJdID0gaW1nO1xyXG4gICAgICAgIHRoaXMuaW1nQ2FjaGVbaW1nLmJpZ10gPSBpbWc7XHJcbiAgICB9XHJcblxyXG4gICAgc2VydmUoaWQ6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPiB7XHJcbiAgICAgICAgY29uc3QgaW1nID0gdGhpcy5pbWdDYWNoZVtpZF07XHJcbiAgICAgICAgcmV0dXJuICFpbWcgPyBudWxsIDogaW1nLnNlcnZlKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGUoZm9sZGVyOiBzdHJpbmcsIHRhcmdldFNpemU6IElHYWxsZXJ5U2l6ZSwgaGFuZGxlcjogSUdhbGxlcnlJbWFnZUhhbmRsZXIpOiBJR2FsbGVyeUltYWdlIHtcclxuICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBHYWxsZXJ5SW1hZ2UoZm9sZGVyLCB0YXJnZXRTaXplLCBoYW5kbGVyKTtcclxuICAgICAgICB0aGlzLnB1dChpbWFnZSk7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,48 +1,48 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { v4 as uuidv4 } from "uuid";
11
- import sharp_ from "sharp";
12
- const sharp = sharp_;
13
- const bigSize = 1500;
14
- const thumbSize = 250;
15
- export class GalleryImage {
16
- constructor(folder, size, handler) {
17
- this.folder = folder;
18
- this.handler = handler;
19
- this.thumb = uuidv4();
20
- this.big = uuidv4();
21
- this.targetSize = !size ? { width: thumbSize, height: thumbSize } : size;
22
- }
23
- serve(id) {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- const isThumb = id == this.thumb;
26
- if (yield this.handler.hasResult(isThumb)) {
27
- return this.handler.serveResult(isThumb);
28
- }
29
- const original = sharp(yield this.handler.getOriginal()).rotate();
30
- const meta = yield original.metadata();
31
- const ratio = meta.width / meta.height;
32
- const sizeRatio = isThumb ? this.targetSize.width / this.targetSize.height : 1;
33
- const size = isThumb ? Math.max(this.targetSize.width, this.targetSize.height) : bigSize;
34
- const targetHeight = ratio > sizeRatio ? size : Math.round(size / ratio);
35
- const targetWidth = Math.round(targetHeight * ratio);
36
- const resized = original.resize(targetWidth, targetHeight);
37
- const buffer = yield (isThumb ? resized.extract({
38
- left: Math.floor((targetWidth - this.targetSize.width) / 2),
39
- top: Math.floor((targetHeight - this.targetSize.height) / 2),
40
- width: this.targetSize.width,
41
- height: this.targetSize.height
42
- }).toBuffer() : resized.toBuffer());
43
- yield this.handler.writeResult(isThumb, buffer);
44
- return this.handler.serveResult(isThumb);
45
- });
46
- }
47
- }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nYWxsZXJ5LWltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksTUFBTSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sTUFBTSxNQUFNLE9BQU8sQ0FBQztBQUczQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUM7QUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUV0QixNQUFNLE9BQU8sWUFBWTtJQU1yQixZQUFxQixNQUFjLEVBQUUsSUFBa0IsRUFBVyxPQUE2QjtRQUExRSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQStCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzNGLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0UsQ0FBQztJQUVLLEtBQUssQ0FBQyxFQUFVOztZQUNsQixNQUFNLE9BQU8sR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUVqQyxJQUFJLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDNUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3pGLE1BQU0sWUFBWSxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDekUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFFckQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDM0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztnQkFDNUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNELEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1RCxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLO2dCQUM1QixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO2FBQ2pDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFFcEMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxDQUFDO0tBQUE7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7djQgYXMgdXVpZHY0fSBmcm9tIFwidXVpZFwiO1xuaW1wb3J0IHNoYXJwXyBmcm9tIFwic2hhcnBcIjtcbmltcG9ydCB7SUdhbGxlcnlJbWFnZSwgSUdhbGxlcnlTaXplLCBJR2FsbGVyeUltYWdlSGFuZGxlcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xuXG5jb25zdCBzaGFycCA9IHNoYXJwXztcbmNvbnN0IGJpZ1NpemUgPSAxNTAwO1xuY29uc3QgdGh1bWJTaXplID0gMjUwO1xuXG5leHBvcnQgY2xhc3MgR2FsbGVyeUltYWdlIGltcGxlbWVudHMgSUdhbGxlcnlJbWFnZSB7XG5cbiAgICByZWFkb25seSB0aHVtYjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGJpZzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHRhcmdldFNpemU6IElHYWxsZXJ5U2l6ZTtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZvbGRlcjogc3RyaW5nLCBzaXplOiBJR2FsbGVyeVNpemUsIHJlYWRvbmx5IGhhbmRsZXI6IElHYWxsZXJ5SW1hZ2VIYW5kbGVyKSB7XG4gICAgICAgIHRoaXMudGh1bWIgPSB1dWlkdjQoKTtcbiAgICAgICAgdGhpcy5iaWcgPSB1dWlkdjQoKTtcbiAgICAgICAgdGhpcy50YXJnZXRTaXplID0gIXNpemUgPyB7d2lkdGg6IHRodW1iU2l6ZSwgaGVpZ2h0OiB0aHVtYlNpemV9IDogc2l6ZTtcbiAgICB9XG5cbiAgICBhc3luYyBzZXJ2ZShpZDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICAgICAgY29uc3QgaXNUaHVtYiA9IGlkID09IHRoaXMudGh1bWI7XG5cbiAgICAgICAgaWYgKGF3YWl0IHRoaXMuaGFuZGxlci5oYXNSZXN1bHQoaXNUaHVtYikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuc2VydmVSZXN1bHQoaXNUaHVtYik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcmlnaW5hbCA9IHNoYXJwKGF3YWl0IHRoaXMuaGFuZGxlci5nZXRPcmlnaW5hbCgpKS5yb3RhdGUoKTtcbiAgICAgICAgY29uc3QgbWV0YSA9IGF3YWl0IG9yaWdpbmFsLm1ldGFkYXRhKCk7XG4gICAgICAgIGNvbnN0IHJhdGlvID0gbWV0YS53aWR0aCAvIG1ldGEuaGVpZ2h0O1xuICAgICAgICBjb25zdCBzaXplUmF0aW8gPSBpc1RodW1iID8gdGhpcy50YXJnZXRTaXplLndpZHRoIC8gdGhpcy50YXJnZXRTaXplLmhlaWdodCA6IDE7XG4gICAgICAgIGNvbnN0IHNpemUgPSBpc1RodW1iID8gTWF0aC5tYXgodGhpcy50YXJnZXRTaXplLndpZHRoLCB0aGlzLnRhcmdldFNpemUuaGVpZ2h0KSA6IGJpZ1NpemU7XG4gICAgICAgIGNvbnN0IHRhcmdldEhlaWdodCA9IHJhdGlvID4gc2l6ZVJhdGlvID8gc2l6ZSA6IE1hdGgucm91bmQoc2l6ZSAvIHJhdGlvKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0V2lkdGggPSBNYXRoLnJvdW5kKHRhcmdldEhlaWdodCAqIHJhdGlvKTtcblxuICAgICAgICBjb25zdCByZXNpemVkID0gb3JpZ2luYWwucmVzaXplKHRhcmdldFdpZHRoLCB0YXJnZXRIZWlnaHQpO1xuICAgICAgICBjb25zdCBidWZmZXIgPSBhd2FpdCAoaXNUaHVtYiA/IHJlc2l6ZWQuZXh0cmFjdCh7XG4gICAgICAgICAgICBsZWZ0OiBNYXRoLmZsb29yKCh0YXJnZXRXaWR0aCAtIHRoaXMudGFyZ2V0U2l6ZS53aWR0aCkgLyAyKSxcbiAgICAgICAgICAgIHRvcDogTWF0aC5mbG9vcigodGFyZ2V0SGVpZ2h0IC0gdGhpcy50YXJnZXRTaXplLmhlaWdodCkgLyAyKSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnRhcmdldFNpemUud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMudGFyZ2V0U2l6ZS5oZWlnaHRcbiAgICAgICAgfSkudG9CdWZmZXIoKSA6IHJlc2l6ZWQudG9CdWZmZXIoKSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVyLndyaXRlUmVzdWx0KGlzVGh1bWIsIGJ1ZmZlcik7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuc2VydmVSZXN1bHQoaXNUaHVtYik7XG4gICAgfVxufVxuIl19
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { v4 as uuidv4 } from "uuid";
11
+ import sharp_ from "sharp";
12
+ const sharp = sharp_;
13
+ const bigSize = 1500;
14
+ const thumbSize = 250;
15
+ export class GalleryImage {
16
+ constructor(folder, size, handler) {
17
+ this.folder = folder;
18
+ this.handler = handler;
19
+ this.thumb = uuidv4();
20
+ this.big = uuidv4();
21
+ this.targetSize = !size ? { width: thumbSize, height: thumbSize } : size;
22
+ }
23
+ serve(id) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const isThumb = id == this.thumb;
26
+ if (yield this.handler.hasResult(isThumb)) {
27
+ return this.handler.serveResult(isThumb);
28
+ }
29
+ const original = sharp(yield this.handler.getOriginal()).rotate();
30
+ const meta = yield original.metadata();
31
+ const ratio = meta.width / meta.height;
32
+ const sizeRatio = isThumb ? this.targetSize.width / this.targetSize.height : 1;
33
+ const size = isThumb ? Math.max(this.targetSize.width, this.targetSize.height) : bigSize;
34
+ const targetHeight = ratio > sizeRatio ? size : Math.round(size / ratio);
35
+ const targetWidth = Math.round(targetHeight * ratio);
36
+ const resized = original.resize(targetWidth, targetHeight);
37
+ const buffer = yield (isThumb ? resized.extract({
38
+ left: Math.floor((targetWidth - this.targetSize.width) / 2),
39
+ top: Math.floor((targetHeight - this.targetSize.height) / 2),
40
+ width: this.targetSize.width,
41
+ height: this.targetSize.height
42
+ }).toBuffer() : resized.toBuffer());
43
+ yield this.handler.writeResult(isThumb, buffer);
44
+ return this.handler.serveResult(isThumb);
45
+ });
46
+ }
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nYWxsZXJ5LWltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksTUFBTSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sTUFBTSxNQUFNLE9BQU8sQ0FBQztBQUczQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUM7QUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUV0QixNQUFNLE9BQU8sWUFBWTtJQU1yQixZQUFxQixNQUFjLEVBQUUsSUFBa0IsRUFBVyxPQUE2QjtRQUExRSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQStCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzNGLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0UsQ0FBQztJQUVLLEtBQUssQ0FBQyxFQUFVOztZQUNsQixNQUFNLE9BQU8sR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUVqQyxJQUFJLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDNUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3pGLE1BQU0sWUFBWSxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDekUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFFckQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDM0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztnQkFDNUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNELEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1RCxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLO2dCQUM1QixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO2FBQ2pDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFFcEMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxDQUFDO0tBQUE7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7djQgYXMgdXVpZHY0fSBmcm9tIFwidXVpZFwiO1xyXG5pbXBvcnQgc2hhcnBfIGZyb20gXCJzaGFycFwiO1xyXG5pbXBvcnQge0lHYWxsZXJ5SW1hZ2UsIElHYWxsZXJ5U2l6ZSwgSUdhbGxlcnlJbWFnZUhhbmRsZXJ9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmNvbnN0IHNoYXJwID0gc2hhcnBfO1xyXG5jb25zdCBiaWdTaXplID0gMTUwMDtcclxuY29uc3QgdGh1bWJTaXplID0gMjUwO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdhbGxlcnlJbWFnZSBpbXBsZW1lbnRzIElHYWxsZXJ5SW1hZ2Uge1xyXG5cclxuICAgIHJlYWRvbmx5IHRodW1iOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBiaWc6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IHRhcmdldFNpemU6IElHYWxsZXJ5U2l6ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBmb2xkZXI6IHN0cmluZywgc2l6ZTogSUdhbGxlcnlTaXplLCByZWFkb25seSBoYW5kbGVyOiBJR2FsbGVyeUltYWdlSGFuZGxlcikge1xyXG4gICAgICAgIHRoaXMudGh1bWIgPSB1dWlkdjQoKTtcclxuICAgICAgICB0aGlzLmJpZyA9IHV1aWR2NCgpO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0U2l6ZSA9ICFzaXplID8ge3dpZHRoOiB0aHVtYlNpemUsIGhlaWdodDogdGh1bWJTaXplfSA6IHNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VydmUoaWQ6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPiB7XHJcbiAgICAgICAgY29uc3QgaXNUaHVtYiA9IGlkID09IHRoaXMudGh1bWI7XHJcblxyXG4gICAgICAgIGlmIChhd2FpdCB0aGlzLmhhbmRsZXIuaGFzUmVzdWx0KGlzVGh1bWIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuc2VydmVSZXN1bHQoaXNUaHVtYik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBvcmlnaW5hbCA9IHNoYXJwKGF3YWl0IHRoaXMuaGFuZGxlci5nZXRPcmlnaW5hbCgpKS5yb3RhdGUoKTtcclxuICAgICAgICBjb25zdCBtZXRhID0gYXdhaXQgb3JpZ2luYWwubWV0YWRhdGEoKTtcclxuICAgICAgICBjb25zdCByYXRpbyA9IG1ldGEud2lkdGggLyBtZXRhLmhlaWdodDtcclxuICAgICAgICBjb25zdCBzaXplUmF0aW8gPSBpc1RodW1iID8gdGhpcy50YXJnZXRTaXplLndpZHRoIC8gdGhpcy50YXJnZXRTaXplLmhlaWdodCA6IDE7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGlzVGh1bWIgPyBNYXRoLm1heCh0aGlzLnRhcmdldFNpemUud2lkdGgsIHRoaXMudGFyZ2V0U2l6ZS5oZWlnaHQpIDogYmlnU2l6ZTtcclxuICAgICAgICBjb25zdCB0YXJnZXRIZWlnaHQgPSByYXRpbyA+IHNpemVSYXRpbyA/IHNpemUgOiBNYXRoLnJvdW5kKHNpemUgLyByYXRpbyk7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0V2lkdGggPSBNYXRoLnJvdW5kKHRhcmdldEhlaWdodCAqIHJhdGlvKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVzaXplZCA9IG9yaWdpbmFsLnJlc2l6ZSh0YXJnZXRXaWR0aCwgdGFyZ2V0SGVpZ2h0KTtcclxuICAgICAgICBjb25zdCBidWZmZXIgPSBhd2FpdCAoaXNUaHVtYiA/IHJlc2l6ZWQuZXh0cmFjdCh7XHJcbiAgICAgICAgICAgIGxlZnQ6IE1hdGguZmxvb3IoKHRhcmdldFdpZHRoIC0gdGhpcy50YXJnZXRTaXplLndpZHRoKSAvIDIpLFxyXG4gICAgICAgICAgICB0b3A6IE1hdGguZmxvb3IoKHRhcmdldEhlaWdodCAtIHRoaXMudGFyZ2V0U2l6ZS5oZWlnaHQpIC8gMiksXHJcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnRhcmdldFNpemUud2lkdGgsXHJcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy50YXJnZXRTaXplLmhlaWdodFxyXG4gICAgICAgIH0pLnRvQnVmZmVyKCkgOiByZXNpemVkLnRvQnVmZmVyKCkpO1xyXG5cclxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZXIud3JpdGVSZXN1bHQoaXNUaHVtYiwgYnVmZmVyKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLnNlcnZlUmVzdWx0KGlzVGh1bWIpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==