laconic-sdk/dist/types.js

115 lines
2.8 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Payload = exports.Signature = exports.Record = void 0;
const assert_1 = __importDefault(require("assert"));
const jsonschema_1 = require("jsonschema");
const record_json_1 = __importDefault(require("./schema/record.json"));
const util_1 = require("./util");
/**
* Record.
*/
class Record {
/**
* New Record.
*/
constructor(record) {
(0, assert_1.default)(record);
const validator = new jsonschema_1.Validator();
const result = validator.validate(record, record_json_1.default);
if (!result.valid) {
result.errors.map(console.error);
throw new Error('Invalid record input.');
}
this._record = record;
}
get attributes() {
return Buffer.from(JSON.stringify(this._record), 'binary').toString('base64');
}
/**
* Serialize record.
*/
serialize() {
return {
'id': '_',
'bond_id': '_',
'create_time': '_',
'expiry_time': '_',
// Setting deleted as false (zero value) throws error in EIP712 signature verification.
'deleted': true,
'attributes': this.attributes,
};
}
/**
* Get message to calculate record signature.
*/
getMessageToSign() {
return util_1.Util.sortJSON(this._record);
}
}
exports.Record = Record;
/**
* Record Signature.
*/
class Signature {
/**
* New Signature.
*/
constructor(pubKey, sig) {
(0, assert_1.default)(pubKey);
(0, assert_1.default)(sig);
this._pubKey = pubKey;
this._sig = sig;
}
/**
* Serialize Signature.
*/
serialize() {
return util_1.Util.sortJSON({
'pub_key': this._pubKey,
'sig': this._sig
});
}
}
exports.Signature = Signature;
/**
* Message Payload.
*/
class Payload {
/**
* New Payload.
*/
constructor(record, ...signatures) {
(0, assert_1.default)(record);
this._record = record;
this._signatures = signatures;
}
get record() {
return this._record;
}
get signatures() {
return this._signatures;
}
/**
* Add message signature to payload.
*/
addSignature(signature) {
(0, assert_1.default)(signature);
this._signatures.push(signature);
}
/**
* Serialize Payload.
*/
serialize() {
// return Util.sortJSON({
// });
return {
'record': this._record.serialize(),
'signatures': this._signatures.map(s => s.serialize())
};
}
}
exports.Payload = Payload;