@hlang-org/runtime
Version:
A FBP-Inspired language for universal applications.
34 lines • 3.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const uuid_1 = require("uuid");
class UUIDManager {
constructor() {
this.uuidSet = new Set;
}
create() {
const uuid = (0, uuid_1.v4)();
const result = this.validate(uuid);
if (!result) {
return this.create();
}
this.uuidSet.add(uuid);
return uuid;
}
validate(value) {
if (!(0, uuid_1.validate)(value)) {
console.warn(`uuid ${value} is invalid.`);
return false;
}
if (this.uuidSet.has(value)) {
console.warn(`${value} exists.`);
return false;
}
return true;
}
delete(value) {
this.uuidSet.delete(value);
return this.uuidSet;
}
}
exports.default = new UUIDManager();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXVpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91dWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQW9DO0FBRXBDLE1BQU0sV0FBVztJQUdmO1FBQ0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sSUFBSSxHQUFHLElBQUEsU0FBRSxHQUFFLENBQUM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQUs7UUFDWixJQUFJLENBQUMsSUFBQSxlQUFRLEVBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxjQUFjLENBQUMsQ0FBQztZQUMxQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDakMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBRUQsa0JBQWUsSUFBSSxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHY0LCB2YWxpZGF0ZSB9IGZyb20gJ3V1aWQnO1xuXG5jbGFzcyBVVUlETWFuYWdlciB7XG4gIHV1aWRTZXQ6IFNldDxzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudXVpZFNldCA9IG5ldyBTZXQ7XG4gIH1cblxuICBjcmVhdGUoKSB7XG4gICAgY29uc3QgdXVpZCA9IHY0KCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy52YWxpZGF0ZSh1dWlkKTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKCk7XG4gICAgfVxuICAgIHRoaXMudXVpZFNldC5hZGQodXVpZCk7XG4gICAgcmV0dXJuIHV1aWQ7XG4gIH1cblxuICB2YWxpZGF0ZSh2YWx1ZSkge1xuICAgIGlmICghdmFsaWRhdGUodmFsdWUpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYHV1aWQgJHt2YWx1ZX0gaXMgaW52YWxpZC5gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudXVpZFNldC5oYXModmFsdWUpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dmFsdWV9IGV4aXN0cy5gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBkZWxldGUodmFsdWUpIHtcbiAgICB0aGlzLnV1aWRTZXQuZGVsZXRlKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy51dWlkU2V0O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBVVUlETWFuYWdlcigpO1xuIl19