@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,138 +1,138 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
- return new (P || (P = Promise))(function (resolve, reject) {
13
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
- step((generator = generator.apply(thisArg, _arguments || [])).next());
17
- });
18
- };
19
- import { injectable, Lifecycle, scoped } from "tsyringe";
20
- import sharp_ from "sharp";
21
- import { access, constants, lstat, readdir, readFile, writeFile } from "fs";
22
- import { join, dirname } from "path";
23
- import { Configuration } from "./configuration";
24
- import { GalleryCache } from "./gallery-cache";
25
- import { mkdirRecursive } from "../utils";
26
- const sharp = sharp_;
27
- let Gallery = class Gallery {
28
- constructor(config, galleryCache) {
29
- this.config = config;
30
- this.galleryCache = galleryCache;
31
- this.cache = {};
32
- this.dir = this.config.resolve("galleryDir");
33
- this.output = join(this.config.resolve("cacheDir"), "gallery");
34
- }
35
- getFolder(folder, size = null) {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- this.cache[folder] = this.cache[folder] || new Promise(resolve => {
38
- lstat(join(this.dir, folder), (err, stats) => {
39
- if (err || !stats.isDirectory()) {
40
- resolve([]);
41
- return;
42
- }
43
- this.readRecursive(folder, "", size).then(resolve, () => resolve([]));
44
- });
45
- });
46
- return this.cache[folder];
47
- });
48
- }
49
- readRecursive(path, folder, size) {
50
- return new Promise(resolve => {
51
- readdir(join(this.dir, path), (err, files) => {
52
- if (err) {
53
- resolve([]);
54
- return;
55
- }
56
- const promises = files.map(file => {
57
- return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
58
- const filePath = join(path, file);
59
- const absoluteFilePath = join(this.dir, filePath);
60
- lstat(absoluteFilePath, (err, stats) => {
61
- if (err) {
62
- resolve([]);
63
- return;
64
- }
65
- if (stats.isDirectory()) {
66
- this.readRecursive(filePath, join(folder, file), size).then(resolve);
67
- return;
68
- }
69
- const sharpImg = sharp(absoluteFilePath);
70
- sharpImg.rotate().metadata().then(() => {
71
- const getResultPath = (isThumb) => {
72
- return join(this.output, filePath.replace(/.([a-z|A-Z]+)$/gi, function (ext) {
73
- const suffix = isThumb ? 'thumb' : 'big';
74
- return `-${suffix}${ext}`;
75
- }));
76
- };
77
- resolve([this.galleryCache.create(folder, size, {
78
- getOriginal: () => {
79
- return new Promise((res, rej) => {
80
- readFile(absoluteFilePath, (err, data) => {
81
- if (err) {
82
- rej(err);
83
- return;
84
- }
85
- res(data);
86
- });
87
- });
88
- },
89
- writeResult: (isThumb, buffer) => {
90
- return new Promise((res, rej) => __awaiter(this, void 0, void 0, function* () {
91
- const resultPath = getResultPath(isThumb);
92
- yield mkdirRecursive(dirname(resultPath));
93
- writeFile(resultPath, buffer, err => {
94
- if (err) {
95
- rej(err);
96
- return;
97
- }
98
- res();
99
- });
100
- }));
101
- },
102
- hasResult: (isThumb) => {
103
- return new Promise(res => {
104
- access(getResultPath(isThumb), constants.R_OK, err => {
105
- res(!err);
106
- });
107
- });
108
- },
109
- serveResult: (isThumb) => {
110
- return new Promise((res, rej) => {
111
- readFile(getResultPath(isThumb), (err, data) => {
112
- if (err) {
113
- rej(err);
114
- return;
115
- }
116
- res(data);
117
- });
118
- });
119
- }
120
- })]);
121
- }, () => resolve([]));
122
- });
123
- }));
124
- });
125
- Promise.all(promises).then(folders => {
126
- resolve([].concat.apply([], folders));
127
- });
128
- });
129
- });
130
- }
131
- };
132
- Gallery = __decorate([
133
- injectable(),
134
- scoped(Lifecycle.ContainerScoped),
135
- __metadata("design:paramtypes", [Configuration, GalleryCache])
136
- ], Gallery);
137
- export { Gallery };
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nYWxsZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2RCxPQUFPLE1BQU0sTUFBTSxPQUFPLENBQUM7QUFDM0IsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQzFFLE9BQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRW5DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUV4QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUM7SUFJUixPQUFPLFNBQVAsT0FBTztJQU1oQixZQUFxQixNQUFxQixFQUFXLFlBQTBCO1FBQTFELFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzRSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFSyxTQUFTLENBQUMsTUFBYyxFQUFFLE9BQXFCLElBQUk7O1lBQ3JELElBQUksQ0FBQyxLQUFL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QUFXLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUU7NENBQzlCLE9BQU8sSUFBSSxPQUFPLENBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0RBQ3BDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7b0RBQzNDLElBQUksR0FBRyxFQUFFO3dEQUNMLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3REFDVCxPQUFPO3FEQUNWO29EQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnREFDZCxDQUFDLENBQUMsQ0FBQzs0Q0FDUCxDQUFDLENBQUMsQ0FBQzt3Q0FDUCxDQUFDO3FDQUNKLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ1QsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUMxQixDQUFDLENBQUMsQ0FBQztvQkFDUCxDQUFDLENBQUEsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNqQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSixDQUFBO0FBM0dZLE9BQU87SUFGbkIsVUFBVSxFQUFFO0lBQ1osTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7cUNBT0QsYUFBYSxFQUF5QixZQUFZO0dBTnRFLE9BQU8sQ0EyR25CO1NBM0dZLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcbmltcG9ydCBzaGFycF8gZnJvbSBcInNoYXJwXCI7XG5pbXBvcnQge2FjY2VzcywgY29uc3RhbnRzLCBsc3RhdCwgcmVhZGRpciwgcmVhZEZpbGUsIHdyaXRlRmlsZX0gZnJvbSBcImZzXCI7XG5pbXBvcnQge2pvaW4sIGRpcm5hbWV9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge0lHYWxsZXJ5SW1hZ2UsIElHYWxsZXJ5U2l6ZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQge0dhbGxlcnlDYWNoZX0gZnJvbSBcIi4vZ2FsbGVyeS1jYWNoZVwiO1xuaW1wb3J0IHtta2RpclJlY3Vyc2l2ZX0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmNvbnN0IHNoYXJwID0gc2hhcnBfO1xuXG5AaW5qZWN0YWJsZSgpXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXG5leHBvcnQgY2xhc3MgR2FsbGVyeSB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpcjogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWNoZTogeyBbZm9sZGVyOiBzdHJpbmddOiBQcm9taXNlPElHYWxsZXJ5SW1hZ2VbXT4gfTtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbmZpZzogQ29uZmlndXJhdGlvbiwgcmVhZG9ubHkgZ2FsbGVyeUNhY2hlOiBHYWxsZXJ5Q2FjaGUpIHtcbiAgICAgICAgdGhpcy5jYWNoZSA9IHt9O1xuICAgICAgICB0aGlzLmRpciA9IHRoaXMuY29uZmlnLnJlc29sdmUoXCJnYWxsZXJ5RGlyXCIpO1xuICAgICAgICB0aGlzLm91dHB1dCA9IGpvaW4odGhpcy5jb25maWcucmVzb2x2ZShcImNhY2hlRGlyXCIpLCBcImdhbGxlcnlcIik7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Rm9sZGVyKGZvbGRlcjogc3RyaW5nLCBzaXplOiBJR2FsbGVyeVNpemUgPSBudWxsKTogUHJvbWlzZTxJR2FsbGVyeUltYWdlW10+IHtcbiAgICAgICAgdGhpcy5jYWNoZVtmb2xkZXJdID0gdGhpcy5jYWNoZVtmb2xkZXJdIHx8IG5ldyBQcm9taXNlPElHYWxsZXJ5SW1hZ2VbXT4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBsc3RhdChqb2luKHRoaXMuZGlyLCBmb2xkZXIpLCAoZXJyLCBzdGF0cykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIgfHwgIXN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkUmVjdXJzaXZlKGZvbGRlciwgXCJcIiwgc2l6ZSkudGhlbihyZXNvbHZlLCAoKSA9PiByZXNvbHZlKFtdKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlW2ZvbGRlcl07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRSZWN1cnNpdmUocGF0aDogc3RyaW5nLCBmb2xkZXI6IHN0cmluZywgc2l6ZTogSUdhbGxlcnlTaXplKTogUHJvbWlzZTxJR2FsbGVyeUltYWdlW10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElHYWxsZXJ5SW1hZ2VbXT4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICByZWFkZGlyKGpvaW4odGhpcy5kaXIsIHBhdGgpLCAoZXJyLCBmaWxlcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBmaWxlcy5tYXAoZmlsZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJR2FsbGVyeUltYWdlW10+KGFzeW5jIHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBqb2luKHBhdGgsIGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJzb2x1dGVGaWxlUGF0aCA9IGpvaW4odGhpcy5kaXIsIGZpbGVQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxzdGF0KGFic29sdXRlRmlsZVBhdGgsIChlcnIsIHN0YXRzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFtdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWRSZWN1cnNpdmUoZmlsZVBhdGgsIGpvaW4oZm9sZGVyLCBmaWxlKSwgc2l6ZSkudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGFycEltZyA9IHNoYXJwKGFic29sdXRlRmlsZVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJwSW1nLnJvdGF0ZSgpLm1ldGFkYXRhKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdldFJlc3VsdFBhdGggPSAoaXNUaHVtYikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpvaW4odGhpcy5vdXRwdXQsIGZpbGVQYXRoLnJlcGxhY2UoLy4oW2EtenxBLVpdKykkL2dpLCBmdW5jdGlvbiAoZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VmZml4ID0gaXNUaHVtYiA/ICd0aHVtYicgOiAnYmlnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYC0ke3N1ZmZpeH0ke2V4dH1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFt0aGlzLmdhbGxlcnlDYWNoZS5jcmVhdGUoZm9sZGVyLCBzaXplLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRPcmlnaW5hbDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxCdWZmZXI+KChyZXMsIHJlaikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkRmlsZShhYnNvbHV0ZUZpbGVQYXRoLCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZVJlc3VsdDogKGlzVGh1bWI6IGJvb2xlYW4sIGJ1ZmZlcjogQnVmZmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oYXN5bmMgKHJlcywgcmVqKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdFBhdGggPSBnZXRSZXN1bHRQYXRoKGlzVGh1bWIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBta2RpclJlY3Vyc2l2ZShkaXJuYW1lKHJlc3VsdFBhdGgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKHJlc3VsdFBhdGgsIGJ1ZmZlciwgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWooZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUmVzdWx0OiAoaXNUaHVtYjogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3MoZ2V0UmVzdWx0UGF0aChpc1RodW1iKSwgY29uc3RhbnRzLlJfT0ssIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMoIWVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlUmVzdWx0OiAoaXNUaHVtYjogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxCdWZmZXI+KChyZXMsIHJlaikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkRmlsZShnZXRSZXN1bHRQYXRoKGlzVGh1bWIpLCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAoKSA9PiByZXNvbHZlKFtdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oZm9sZGVycyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoW10uY29uY2F0LmFwcGx5KFtdLCBmb2xkZXJzKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ import { injectable, Lifecycle, scoped } from "tsyringe";
20
+ import sharp_ from "sharp";
21
+ import { access, constants, lstat, readdir, readFile, writeFile } from "fs";
22
+ import { join, dirname } from "path";
23
+ import { Configuration } from "./configuration";
24
+ import { GalleryCache } from "./gallery-cache";
25
+ import { mkdirRecursive } from "../utils";
26
+ const sharp = sharp_;
27
+ let Gallery = class Gallery {
28
+ constructor(config, galleryCache) {
29
+ this.config = config;
30
+ this.galleryCache = galleryCache;
31
+ this.cache = {};
32
+ this.dir = this.config.resolve("galleryDir");
33
+ this.output = join(this.config.resolve("cacheDir"), "gallery");
34
+ }
35
+ getFolder(folder, size = null) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ this.cache[folder] = this.cache[folder] || new Promise(resolve => {
38
+ lstat(join(this.dir, folder), (err, stats) => {
39
+ if (err || !stats.isDirectory()) {
40
+ resolve([]);
41
+ return;
42
+ }
43
+ this.readRecursive(folder, "", size).then(resolve, () => resolve([]));
44
+ });
45
+ });
46
+ return this.cache[folder];
47
+ });
48
+ }
49
+ readRecursive(path, folder, size) {
50
+ return new Promise(resolve => {
51
+ readdir(join(this.dir, path), (err, files) => {
52
+ if (err) {
53
+ resolve([]);
54
+ return;
55
+ }
56
+ const promises = files.map(file => {
57
+ return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
58
+ const filePath = join(path, file);
59
+ const absoluteFilePath = join(this.dir, filePath);
60
+ lstat(absoluteFilePath, (err, stats) => {
61
+ if (err) {
62
+ resolve([]);
63
+ return;
64
+ }
65
+ if (stats.isDirectory()) {
66
+ this.readRecursive(filePath, join(folder, file), size).then(resolve);
67
+ return;
68
+ }
69
+ const sharpImg = sharp(absoluteFilePath);
70
+ sharpImg.rotate().metadata().then(() => {
71
+ const getResultPath = (isThumb) => {
72
+ return join(this.output, filePath.replace(/.([a-z|A-Z]+)$/gi, function (ext) {
73
+ const suffix = isThumb ? 'thumb' : 'big';
74
+ return `-${suffix}${ext}`;
75
+ }));
76
+ };
77
+ resolve([this.galleryCache.create(folder, size, {
78
+ getOriginal: () => {
79
+ return new Promise((res, rej) => {
80
+ readFile(absoluteFilePath, (err, data) => {
81
+ if (err) {
82
+ rej(err);
83
+ return;
84
+ }
85
+ res(data);
86
+ });
87
+ });
88
+ },
89
+ writeResult: (isThumb, buffer) => {
90
+ return new Promise((res, rej) => __awaiter(this, void 0, void 0, function* () {
91
+ const resultPath = getResultPath(isThumb);
92
+ yield mkdirRecursive(dirname(resultPath));
93
+ writeFile(resultPath, buffer, err => {
94
+ if (err) {
95
+ rej(err);
96
+ return;
97
+ }
98
+ res();
99
+ });
100
+ }));
101
+ },
102
+ hasResult: (isThumb) => {
103
+ return new Promise(res => {
104
+ access(getResultPath(isThumb), constants.R_OK, err => {
105
+ res(!err);
106
+ });
107
+ });
108
+ },
109
+ serveResult: (isThumb) => {
110
+ return new Promise((res, rej) => {
111
+ readFile(getResultPath(isThumb), (err, data) => {
112
+ if (err) {
113
+ rej(err);
114
+ return;
115
+ }
116
+ res(data);
117
+ });
118
+ });
119
+ }
120
+ })]);
121
+ }, () => resolve([]));
122
+ });
123
+ }));
124
+ });
125
+ Promise.all(promises).then(folders => {
126
+ resolve([].concat.apply([], folders));
127
+ });
128
+ });
129
+ });
130
+ }
131
+ };
132
+ Gallery = __decorate([
133
+ injectable(),
134
+ scoped(Lifecycle.ContainerScoped),
135
+ __metadata("design:paramtypes", [Configuration, GalleryCache])
136
+ ], Gallery);
137
+ export { Gallery };
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nYWxsZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2RCxPQUFPLE1BQU0sTUFBTSxPQUFPLENBQUM7QUFDM0IsT0FBTyxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQzFFLE9BQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRW5DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUV4QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUM7SUFJUixPQUFPLFNBQVAsT0FBTztJQU1oQixZQUFxQixNQUFxQixFQUFXLFlBQTBCO1FBQTFELFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzRSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFSyxTQUFTLENBQUMsTUFBYyxFQUFFLE9BQXFCLElBQUk7O1lBQ3JELElBQUksQ0FBQyxLQUFL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QUFXLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUU7NENBQzlCLE9BQU8sSUFBSSxPQUFPLENBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0RBQ3BDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7b0RBQzNDLElBQUksR0FBRyxFQUFFO3dEQUNMLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3REFDVCxPQUFPO3FEQUNWO29EQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnREFDZCxDQUFDLENBQUMsQ0FBQzs0Q0FDUCxDQUFDLENBQUMsQ0FBQzt3Q0FDUCxDQUFDO3FDQUNKLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ1QsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUMxQixDQUFDLENBQUMsQ0FBQztvQkFDUCxDQUFDLENBQUEsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNqQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSixDQUFBO0FBM0dZLE9BQU87SUFGbkIsVUFBVSxFQUFFO0lBQ1osTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7cUNBT0QsYUFBYSxFQUF5QixZQUFZO0dBTnRFLE9BQU8sQ0EyR25CO1NBM0dZLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHNoYXJwXyBmcm9tIFwic2hhcnBcIjtcclxuaW1wb3J0IHthY2Nlc3MsIGNvbnN0YW50cywgbHN0YXQsIHJlYWRkaXIsIHJlYWRGaWxlLCB3cml0ZUZpbGV9IGZyb20gXCJmc1wiO1xyXG5pbXBvcnQge2pvaW4sIGRpcm5hbWV9IGZyb20gXCJwYXRoXCI7XHJcbmltcG9ydCB7SUdhbGxlcnlJbWFnZSwgSUdhbGxlcnlTaXplfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQge0dhbGxlcnlDYWNoZX0gZnJvbSBcIi4vZ2FsbGVyeS1jYWNoZVwiO1xyXG5pbXBvcnQge21rZGlyUmVjdXJzaXZlfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuXHJcbmNvbnN0IHNoYXJwID0gc2hhcnBfO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBHYWxsZXJ5IHtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpcjogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXQ6IHN0cmluZztcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FjaGU6IHsgW2ZvbGRlcjogc3RyaW5nXTogUHJvbWlzZTxJR2FsbGVyeUltYWdlW10+IH07XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29uZmlnOiBDb25maWd1cmF0aW9uLCByZWFkb25seSBnYWxsZXJ5Q2FjaGU6IEdhbGxlcnlDYWNoZSkge1xyXG4gICAgICAgIHRoaXMuY2FjaGUgPSB7fTtcclxuICAgICAgICB0aGlzLmRpciA9IHRoaXMuY29uZmlnLnJlc29sdmUoXCJnYWxsZXJ5RGlyXCIpO1xyXG4gICAgICAgIHRoaXMub3V0cHV0ID0gam9pbih0aGlzLmNvbmZpZy5yZXNvbHZlKFwiY2FjaGVEaXJcIiksIFwiZ2FsbGVyeVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRGb2xkZXIoZm9sZGVyOiBzdHJpbmcsIHNpemU6IElHYWxsZXJ5U2l6ZSA9IG51bGwpOiBQcm9taXNlPElHYWxsZXJ5SW1hZ2VbXT4ge1xyXG4gICAgICAgIHRoaXMuY2FjaGVbZm9sZGVyXSA9IHRoaXMuY2FjaGVbZm9sZGVyXSB8fCBuZXcgUHJvbWlzZTxJR2FsbGVyeUltYWdlW10+KHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBsc3RhdChqb2luKHRoaXMuZGlyLCBmb2xkZXIpLCAoZXJyLCBzdGF0cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyciB8fCAhc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoW10pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMucmVhZFJlY3Vyc2l2ZShmb2xkZXIsIFwiXCIsIHNpemUpLnRoZW4ocmVzb2x2ZSwgKCkgPT4gcmVzb2x2ZShbXSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVtmb2xkZXJdO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZWFkUmVjdXJzaXZlKHBhdGg6IHN0cmluZywgZm9sZGVyOiBzdHJpbmcsIHNpemU6IElHYWxsZXJ5U2l6ZSk6IFByb21pc2U8SUdhbGxlcnlJbWFnZVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElHYWxsZXJ5SW1hZ2VbXT4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHJlYWRkaXIoam9pbih0aGlzLmRpciwgcGF0aCksIChlcnIsIGZpbGVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBmaWxlcy5tYXAoZmlsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElHYWxsZXJ5SW1hZ2VbXT4oYXN5bmMgcmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gam9pbihwYXRoLCBmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJzb2x1dGVGaWxlUGF0aCA9IGpvaW4odGhpcy5kaXIsIGZpbGVQYXRoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbHN0YXQoYWJzb2x1dGVGaWxlUGF0aCwgKGVyciwgc3RhdHMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFtdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZFJlY3Vyc2l2ZShmaWxlUGF0aCwgam9pbihmb2xkZXIsIGZpbGUpLCBzaXplKS50aGVuKHJlc29sdmUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoYXJwSW1nID0gc2hhcnAoYWJzb2x1dGVGaWxlUGF0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFycEltZy5yb3RhdGUoKS5tZXRhZGF0YSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdldFJlc3VsdFBhdGggPSAoaXNUaHVtYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gam9pbih0aGlzLm91dHB1dCwgZmlsZVBhdGgucmVwbGFjZSgvLihbYS16fEEtWl0rKSQvZ2ksIGZ1bmN0aW9uIChleHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1ZmZpeCA9IGlzVGh1bWIgPyAndGh1bWInIDogJ2JpZyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYC0ke3N1ZmZpeH0ke2V4dH1gO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFt0aGlzLmdhbGxlcnlDYWNoZS5jcmVhdGUoZm9sZGVyLCBzaXplLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE9yaWdpbmFsOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8QnVmZmVyPigocmVzLCByZWopID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkRmlsZShhYnNvbHV0ZUZpbGVQYXRoLCAoZXJyLCBkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyhkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZVJlc3VsdDogKGlzVGh1bWI6IGJvb2xlYW4sIGJ1ZmZlcjogQnVmZmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55Pihhc3luYyAocmVzLCByZWopID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRQYXRoID0gZ2V0UmVzdWx0UGF0aChpc1RodW1iKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBta2RpclJlY3Vyc2l2ZShkaXJuYW1lKHJlc3VsdFBhdGgpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUocmVzdWx0UGF0aCwgYnVmZmVyLCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWooZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNSZXN1bHQ6IChpc1RodW1iOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3MoZ2V0UmVzdWx0UGF0aChpc1RodW1iKSwgY29uc3RhbnRzLlJfT0ssIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyghZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZVJlc3VsdDogKGlzVGh1bWI6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxCdWZmZXI+KChyZXMsIHJlaikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRGaWxlKGdldFJlc3VsdFBhdGgoaXNUaHVtYiksIChlcnIsIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4gcmVzb2x2ZShbXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oZm9sZGVycyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbXS5jb25jYXQuYXBwbHkoW10sIGZvbGRlcnMpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,63 +1,63 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
- return new (P || (P = Promise))(function (resolve, reject) {
13
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
- step((generator = generator.apply(thisArg, _arguments || [])).next());
17
- });
18
- };
19
- import { injectable, Lifecycle, scoped } from "tsyringe";
20
- import { Configuration } from "./configuration";
21
- import { rand } from "../utils";
22
- let IdGenerator = class IdGenerator {
23
- constructor(config) {
24
- this.config = config;
25
- this.prefix = config.resolve("idPrefix");
26
- this.separator = config.resolve("idSeparator");
27
- this.chars = config.resolve("idChars");
28
- this.parts = config.resolve("idParts");
29
- }
30
- generate(checkCb) {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- let id = null;
33
- let tries = 0;
34
- let notGood = true;
35
- while (notGood && tries < 5) {
36
- id = this.generateId();
37
- notGood = yield checkCb(id);
38
- tries++;
39
- }
40
- if (notGood) {
41
- throw `Couldn't generate an unique id..`;
42
- }
43
- return id;
44
- });
45
- }
46
- generateId() {
47
- return this.prefix + this.parts.map(num => {
48
- let s = "";
49
- for (let i = 0; i < num; i++) {
50
- const ix = rand(0, this.chars.length - 1);
51
- s += this.chars[ix];
52
- }
53
- return s;
54
- }).join(this.separator);
55
- }
56
- };
57
- IdGenerator = __decorate([
58
- injectable(),
59
- scoped(Lifecycle.ContainerScoped),
60
- __metadata("design:paramtypes", [Configuration])
61
- ], IdGenerator);
62
- export { IdGenerator };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2lkLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxVQUFVLENBQUM7SUFJakIsV0FBVyxTQUFYLFdBQVc7SUFPcEIsWUFBcUIsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVLLFFBQVEsQ0FBQyxPQUF5Qzs7WUFDcEQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ2QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ25CLE9BQU8sT0FBTyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUIsS0FBSyxFQUFFLENBQUM7YUFDWDtZQUNELElBQUksT0FBTyxFQUFFO2dCQUNULE1BQU0sa0NBQWtDLENBQUM7YUFDNUM7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7S0FBQTtJQUVPLFVBQVU7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1gsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdkI7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNKLENBQUE7QUF2Q1ksV0FBVztJQUZ2QixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztxQ0FRRCxhQUFhO0dBUGpDLFdBQVcsQ0F1Q3ZCO1NBdkNZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4vY29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHtyYW5kfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuQGluamVjdGFibGUoKVxuQHNjb3BlZChMaWZlY3ljbGUuQ29udGFpbmVyU2NvcGVkKVxuZXhwb3J0IGNsYXNzIElkR2VuZXJhdG9yIHtcblxuICAgIHByb3RlY3RlZCBwcmVmaXg6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgc2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGNoYXJzOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHBhcnRzOiBudW1iZXJbXTtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbmZpZzogQ29uZmlndXJhdGlvbikge1xuICAgICAgICB0aGlzLnByZWZpeCA9IGNvbmZpZy5yZXNvbHZlKFwiaWRQcmVmaXhcIik7XG4gICAgICAgIHRoaXMuc2VwYXJhdG9yID0gY29uZmlnLnJlc29sdmUoXCJpZFNlcGFyYXRvclwiKTtcbiAgICAgICAgdGhpcy5jaGFycyA9IGNvbmZpZy5yZXNvbHZlKFwiaWRDaGFyc1wiKTtcbiAgICAgICAgdGhpcy5wYXJ0cyA9IGNvbmZpZy5yZXNvbHZlKFwiaWRQYXJ0c1wiKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZW5lcmF0ZShjaGVja0NiOiAoaWQ6IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGxldCBpZCA9IG51bGw7XG4gICAgICAgIGxldCB0cmllcyA9IDA7XG4gICAgICAgIGxldCBub3RHb29kID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKG5vdEdvb2QgJiYgdHJpZXMgPCA1KSB7XG4gICAgICAgICAgICBpZCA9IHRoaXMuZ2VuZXJhdGVJZCgpO1xuICAgICAgICAgICAgbm90R29vZCA9IGF3YWl0IGNoZWNrQ2IoaWQpO1xuICAgICAgICAgICAgdHJpZXMrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAobm90R29vZCkge1xuICAgICAgICAgICAgdGhyb3cgYENvdWxkbid0IGdlbmVyYXRlIGFuIHVuaXF1ZSBpZC4uYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZWZpeCArIHRoaXMucGFydHMubWFwKG51bSA9PiB7XG4gICAgICAgICAgICBsZXQgcyA9IFwiXCI7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXggPSByYW5kKDAsIHRoaXMuY2hhcnMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgcyArPSB0aGlzLmNoYXJzW2l4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICB9KS5qb2luKHRoaXMuc2VwYXJhdG9yKTtcbiAgICB9XG59XG4iXX0=
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ import { injectable, Lifecycle, scoped } from "tsyringe";
20
+ import { Configuration } from "./configuration";
21
+ import { rand } from "../utils";
22
+ let IdGenerator = class IdGenerator {
23
+ constructor(config) {
24
+ this.config = config;
25
+ this.prefix = config.resolve("idPrefix");
26
+ this.separator = config.resolve("idSeparator");
27
+ this.chars = config.resolve("idChars");
28
+ this.parts = config.resolve("idParts");
29
+ }
30
+ generate(checkCb) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ let id = null;
33
+ let tries = 0;
34
+ let notGood = true;
35
+ while (notGood && tries < 5) {
36
+ id = this.generateId();
37
+ notGood = yield checkCb(id);
38
+ tries++;
39
+ }
40
+ if (notGood) {
41
+ throw `Couldn't generate an unique id..`;
42
+ }
43
+ return id;
44
+ });
45
+ }
46
+ generateId() {
47
+ return this.prefix + this.parts.map(num => {
48
+ let s = "";
49
+ for (let i = 0; i < num; i++) {
50
+ const ix = rand(0, this.chars.length - 1);
51
+ s += this.chars[ix];
52
+ }
53
+ return s;
54
+ }).join(this.separator);
55
+ }
56
+ };
57
+ IdGenerator = __decorate([
58
+ injectable(),
59
+ scoped(Lifecycle.ContainerScoped),
60
+ __metadata("design:paramtypes", [Configuration])
61
+ ], IdGenerator);
62
+ export { IdGenerator };
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2lkLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxVQUFVLENBQUM7SUFJakIsV0FBVyxTQUFYLFdBQVc7SUFPcEIsWUFBcUIsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVLLFFBQVEsQ0FBQyxPQUF5Qzs7WUFDcEQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ2QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ25CLE9BQU8sT0FBTyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUIsS0FBSyxFQUFFLENBQUM7YUFDWDtZQUNELElBQUksT0FBTyxFQUFFO2dCQUNULE1BQU0sa0NBQWtDLENBQUM7YUFDNUM7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7S0FBQTtJQUVPLFVBQVU7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1gsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdkI7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNKLENBQUE7QUF2Q1ksV0FBVztJQUZ2QixVQUFVLEVBQUU7SUFDWixNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztxQ0FRRCxhQUFhO0dBUGpDLFdBQVcsQ0F1Q3ZCO1NBdkNZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdGFibGUsIExpZmVjeWNsZSwgc2NvcGVkfSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tIFwiLi9jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7cmFuZH0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcblxyXG5AaW5qZWN0YWJsZSgpXHJcbkBzY29wZWQoTGlmZWN5Y2xlLkNvbnRhaW5lclNjb3BlZClcclxuZXhwb3J0IGNsYXNzIElkR2VuZXJhdG9yIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcHJlZml4OiBzdHJpbmc7XHJcbiAgICBwcm90ZWN0ZWQgc2VwYXJhdG9yOiBzdHJpbmc7XHJcbiAgICBwcm90ZWN0ZWQgY2hhcnM6IHN0cmluZztcclxuICAgIHByb3RlY3RlZCBwYXJ0czogbnVtYmVyW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29uZmlnOiBDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5wcmVmaXggPSBjb25maWcucmVzb2x2ZShcImlkUHJlZml4XCIpO1xyXG4gICAgICAgIHRoaXMuc2VwYXJhdG9yID0gY29uZmlnLnJlc29sdmUoXCJpZFNlcGFyYXRvclwiKTtcclxuICAgICAgICB0aGlzLmNoYXJzID0gY29uZmlnLnJlc29sdmUoXCJpZENoYXJzXCIpO1xyXG4gICAgICAgIHRoaXMucGFydHMgPSBjb25maWcucmVzb2x2ZShcImlkUGFydHNcIik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2VuZXJhdGUoY2hlY2tDYjogKGlkOiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj4pOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGxldCBpZCA9IG51bGw7XHJcbiAgICAgICAgbGV0IHRyaWVzID0gMDtcclxuICAgICAgICBsZXQgbm90R29vZCA9IHRydWU7XHJcbiAgICAgICAgd2hpbGUgKG5vdEdvb2QgJiYgdHJpZXMgPCA1KSB7XHJcbiAgICAgICAgICAgIGlkID0gdGhpcy5nZW5lcmF0ZUlkKCk7XHJcbiAgICAgICAgICAgIG5vdEdvb2QgPSBhd2FpdCBjaGVja0NiKGlkKTtcclxuICAgICAgICAgICAgdHJpZXMrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5vdEdvb2QpIHtcclxuICAgICAgICAgICAgdGhyb3cgYENvdWxkbid0IGdlbmVyYXRlIGFuIHVuaXF1ZSBpZC4uYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGlkO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVJZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByZWZpeCArIHRoaXMucGFydHMubWFwKG51bSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBzID0gXCJcIjtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW07IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXggPSByYW5kKDAsIHRoaXMuY2hhcnMubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICAgICAgICBzICs9IHRoaXMuY2hhcnNbaXhdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzO1xyXG4gICAgICAgIH0pLmpvaW4odGhpcy5zZXBhcmF0b3IpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==