@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.
- package/README.md +2 -2
- package/bundles/stemy-backend.umd.js +5553 -5465
- package/bundles/stemy-backend.umd.js.map +1 -1
- package/bundles/stemy-backend.umd.min.js +1 -1
- package/bundles/stemy-backend.umd.min.js.map +1 -1
- package/common-types.d.ts +226 -214
- package/esm2015/common-types.js +18 -18
- package/esm2015/public_api.js +338 -338
- package/esm2015/rest-controllers/assets.controller.js +116 -116
- package/esm2015/rest-controllers/auth.controller.js +75 -75
- package/esm2015/rest-controllers/gallery.controller.js +37 -37
- package/esm2015/rest-controllers/progresses.controller.js +57 -57
- package/esm2015/rest-middlewares/container.middleware.js +32 -32
- package/esm2015/rest-middlewares/error-handler.middleware.js +83 -83
- package/esm2015/rest-middlewares/language.middleware.js +28 -28
- package/esm2015/rest-middlewares/request-ended.middleware.js +25 -25
- package/esm2015/rest-middlewares/request-started.middleware.js +24 -24
- package/esm2015/rest-openapi.js +44 -44
- package/esm2015/services/asset-processor.js +101 -101
- package/esm2015/services/asset-resolver.js +53 -53
- package/esm2015/services/assets.js +110 -110
- package/esm2015/services/backend-provider.js +32 -32
- package/esm2015/services/cache-processor.js +34 -34
- package/esm2015/services/cache.js +94 -94
- package/esm2015/services/configuration.js +55 -55
- package/esm2015/services/endpoint-provider.js +29 -29
- package/esm2015/services/entities/asset.js +166 -112
- package/esm2015/services/entities/lazy-asset.js +93 -93
- package/esm2015/services/entities/progress.js +181 -181
- package/esm2015/services/fixtures.js +45 -45
- package/esm2015/services/gallery-cache.js +36 -36
- package/esm2015/services/gallery-image.js +48 -48
- package/esm2015/services/gallery.js +138 -138
- package/esm2015/services/id-generator.js +63 -63
- package/esm2015/services/job-manager.js +203 -203
- package/esm2015/services/lazy-assets.js +74 -74
- package/esm2015/services/mail-sender.js +59 -59
- package/esm2015/services/memory-cache.js +84 -84
- package/esm2015/services/mongo-connector.js +61 -61
- package/esm2015/services/progresses.js +91 -91
- package/esm2015/services/template-renderer.js +89 -89
- package/esm2015/services/translation-provider.js +31 -31
- package/esm2015/services/translator.js +85 -85
- package/esm2015/services/user-manager.js +47 -47
- package/esm2015/socket-controllers/progress.controller.js +82 -82
- package/esm2015/socket-middlewares/compression.middleware.js +19 -19
- package/esm2015/static.js +33 -33
- package/esm2015/stemy-backend.js +4 -4
- package/esm2015/utilities/di-container.js +84 -84
- package/esm2015/utilities/lazy-asset-generator.js +40 -40
- package/esm2015/utilities/tree.js +111 -111
- package/esm2015/utils.js +618 -601
- package/esm2015/validators.js +51 -51
- package/fesm2015/stemy-backend.js +3656 -3585
- package/fesm2015/stemy-backend.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +33 -33
- package/rest-controllers/assets.controller.d.ts +16 -16
- package/rest-controllers/auth.controller.d.ts +14 -14
- package/rest-controllers/gallery.controller.d.ts +7 -7
- package/rest-controllers/progresses.controller.d.ts +9 -9
- package/rest-middlewares/container.middleware.d.ts +8 -8
- package/rest-middlewares/error-handler.middleware.d.ts +13 -13
- package/rest-middlewares/language.middleware.d.ts +8 -8
- package/rest-middlewares/request-ended.middleware.d.ts +5 -5
- package/rest-middlewares/request-started.middleware.d.ts +5 -5
- package/rest-openapi.d.ts +3 -3
- package/services/asset-processor.d.ts +12 -12
- package/services/asset-resolver.d.ts +9 -9
- package/services/assets.d.ts +19 -19
- package/services/backend-provider.d.ts +11 -11
- package/services/cache-processor.d.ts +4 -4
- package/services/cache.d.ts +23 -23
- package/services/configuration.d.ts +10 -10
- package/services/endpoint-provider.d.ts +4 -4
- package/services/entities/asset.d.ts +25 -23
- package/services/entities/lazy-asset.d.ts +29 -29
- package/services/entities/progress.d.ts +49 -49
- package/services/fixtures.d.ts +6 -6
- package/services/gallery-cache.d.ts +9 -9
- package/services/gallery-image.d.ts +11 -11
- package/services/gallery.d.ts +13 -13
- package/services/id-generator.d.ts +11 -11
- package/services/job-manager.d.ts +27 -27
- package/services/lazy-assets.d.ts +19 -19
- package/services/mail-sender.d.ts +20 -20
- package/services/memory-cache.d.ts +10 -10
- package/services/mongo-connector.d.ts +14 -14
- package/services/progresses.d.ts +18 -18
- package/services/template-renderer.d.ts +14 -14
- package/services/translation-provider.d.ts +10 -10
- package/services/translator.d.ts +15 -15
- package/services/user-manager.d.ts +6 -6
- package/socket-controllers/progress.controller.d.ts +10 -10
- package/socket-middlewares/compression.middleware.d.ts +4 -4
- package/static.d.ts +2 -2
- package/stemy-backend.d.ts +4 -4
- package/stemy-backend.metadata.json +1 -1
- package/utilities/di-container.d.ts +43 -43
- package/utilities/lazy-asset-generator.d.ts +15 -15
- package/utilities/tree.d.ts +14 -14
- package/utils.d.ts +76 -73
- package/validators.d.ts +7 -7
- package/di-container.d.ts +0 -40
- package/esm2015/di-container.js +0 -75
- package/esm2015/models/lazy-asset.js +0 -12
- package/esm2015/models/progress.js +0 -23
- package/esm2015/rest-middlewares/injector.middleware.js +0 -26
- package/esm2015/services/lazy-asset-helper.js +0 -74
- package/esm2015/services/logger.js +0 -14
- package/esm2015/services/progress-helper.js +0 -168
- package/models/lazy-asset.d.ts +0 -45
- package/models/progress.d.ts +0 -56
- package/rest-middlewares/injector.middleware.d.ts +0 -8
- package/services/lazy-asset-helper.d.ts +0 -15
- package/services/logger.d.ts +0 -2
- 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,
|
|
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==
|