ts-std-lib
Version:
A standard library for typescript
39 lines • 1.29 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.Guid = void 0;
const tslib_1 = require("tslib");
const uuid_1 = require("uuid");
const Equality_1 = require("./Equality");
const IInspectable_1 = require("./IInspectable");
const JsonSerializable_1 = require("./Serialization/Json/JsonSerializable");
/**
* A globally unique user identifer implementation
* @see https://www.npmjs.com/package/uuid
*/
class Guid extends JsonSerializable_1.JsonSerializable {
constructor(guid) {
super();
if (guid && !this.isValid(guid)) {
throw new Error('Invalid guid');
}
this._guid = guid || (0, uuid_1.v4)();
}
valueOf() {
return this._guid;
}
[Equality_1.equals](other) {
return this._guid === other._guid;
}
[IInspectable_1.inspect](_options) {
return `<${Guid.name}> ${this._guid}`;
}
isValid(guid) {
return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(guid);
}
}
tslib_1.__decorate([
(0, JsonSerializable_1.jsonProperty)('guid'),
tslib_1.__metadata("design:type", String)
], Guid.prototype, "_guid", void 0);
exports.Guid = Guid;
//# sourceMappingURL=Guid.js.map
;