@hazae41/kdbx
Version:
Rust-like KeePass (KDBX 4) file format for TypeScript
84 lines (81 loc) • 2.46 kB
JavaScript
;
var base64 = require('@hazae41/base64');
var cursor = require('@hazae41/cursor');
exports.Data = void 0;
(function (Data) {
class AsString {
element;
constructor(element) {
this.element = element;
}
get() {
return this.element.innerHTML;
}
set(value) {
this.element.innerHTML = value;
}
}
Data.AsString = AsString;
class AsBoolean {
element;
constructor(element) {
this.element = element;
}
get() {
return this.element.innerHTML === "True";
}
set(value) {
this.element.innerHTML = value ? "True" : "False";
}
}
Data.AsBoolean = AsBoolean;
class AsInteger {
element;
constructor(element) {
this.element = element;
}
getOrThrow() {
const value = this.element.innerHTML;
if (!value)
throw new Error();
const number = Number(value);
if (!Number.isSafeInteger(number))
throw new Error();
return number;
}
setOrThrow(value) {
if (!Number.isSafeInteger(value))
throw new Error();
this.element.innerHTML = String(value);
}
incrementOrThrow() {
this.setOrThrow(this.getOrThrow() + 1);
}
}
Data.AsInteger = AsInteger;
class AsDate {
element;
constructor(element) {
this.element = element;
}
getOrThrow() {
const value = this.element.innerHTML;
if (!value)
throw new Error();
const binary = base64.Base64.decodePaddedOrThrow(value);
const cursor$1 = new cursor.Cursor(binary);
const raw = cursor$1.readUint64OrThrow(true);
const fix = raw - 62135596800n;
return new Date(Number(fix * 1000n));
}
setOrThrow(value) {
const fix = BigInt(value.getTime()) / 1000n;
const raw = fix + 62135596800n;
const cursor$1 = new cursor.Cursor(new Uint8Array(8));
cursor$1.writeUint64OrThrow(raw, true);
this.element.innerHTML = base64.Base64.encodePaddedOrThrow(cursor$1.bytes);
}
}
Data.AsDate = AsDate;
})(exports.Data || (exports.Data = {}));
//# sourceMappingURL=index.cjs.map