@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
25 lines • 3.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeterministicUuidRegistry = void 0;
class DeterministicUuidRegistry {
static get(str, inc = 0) {
const id = inc ? this.hashCode(`${str}_${inc}`) : this.hashCode(str);
if (this.registry.has(id)) {
return this.get(str, inc + 1);
}
this.registry.set(id, true);
return id;
}
static clear() {
this.registry.clear();
}
static hashCode(s) {
let h = 0;
for (let i = 0; i < s.length; i++)
h = (Math.imul(31, h) + s.charCodeAt(i)) | 0;
return h.toString();
}
}
exports.DeterministicUuidRegistry = DeterministicUuidRegistry;
DeterministicUuidRegistry.registry = new Map();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZXJtaW5pc3RpYy11dWlkLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc3BlY3Rvci9kZXRlcm1pbmlzdGljLXV1aWQtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSx5QkFBeUI7SUFHbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDN0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQVM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7QUFyQkwsOERBc0JHO0FBckJ5QixrQ0FBUSxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERldGVybWluaXN0aWNVdWlkUmVnaXN0cnkge1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IHJlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG4gIFxuICAgIHN0YXRpYyBnZXQoc3RyOiBzdHJpbmcsIGluYyA9IDApIHtcbiAgICAgIGNvbnN0IGlkID0gaW5jID8gdGhpcy5oYXNoQ29kZShgJHtzdHJ9XyR7aW5jfWApIDogdGhpcy5oYXNoQ29kZShzdHIpO1xuICAgICAgaWYgKHRoaXMucmVnaXN0cnkuaGFzKGlkKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoc3RyLCBpbmMgKyAxKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVnaXN0cnkuc2V0KGlkLCB0cnVlKTtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9XG4gIFxuICAgIHN0YXRpYyBjbGVhcigpIHtcbiAgICAgIHRoaXMucmVnaXN0cnkuY2xlYXIoKTtcbiAgICB9XG4gIFxuICAgIHByaXZhdGUgc3RhdGljIGhhc2hDb2RlKHM6IHN0cmluZykge1xuICAgICAgbGV0IGggPSAwO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKVxuICAgICAgICBoID0gKE1hdGguaW11bCgzMSwgaCkgKyBzLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIHJldHVybiBoLnRvU3RyaW5nKCk7XG4gICAgfVxuICB9Il19