@x5e/gink
Version:
an eventually consistent database
75 lines • 3.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.keyPair = exports.NEXT_TS2 = exports.START_MICROS2 = exports.MEDALLION2 = exports.NEXT_TS1 = exports.START_MICROS1 = exports.MEDALLION1 = void 0;
exports.makeChainStart = makeChainStart;
exports.unbundle = unbundle;
exports.extendChain = extendChain;
exports.extendChainWithoutSign = extendChainWithoutSign;
exports.addTrxns = addTrxns;
exports.sleep = sleep;
const builders_1 = require("../implementation/builders");
const Decomposition_1 = require("../implementation/Decomposition");
const utils_1 = require("../implementation/utils");
exports.MEDALLION1 = (0, utils_1.generateMedallion)();
exports.START_MICROS1 = Date.parse("2022-02-19 23:24:50") * 1000;
exports.NEXT_TS1 = Date.parse("2022-02-20 00:39:29") * 1000;
exports.MEDALLION2 = (0, utils_1.generateMedallion)();
exports.START_MICROS2 = Date.parse("2022-02-20 00:38:21") * 1000;
exports.NEXT_TS2 = Date.parse("2022-02-20 00:40:12") * 1000;
exports.keyPair = utils_1.librariesReady.then(() => (0, utils_1.createKeyPair)());
async function makeChainStart(comment, medallion, chainStart) {
const bundleBuilder = new builders_1.BundleBuilder();
bundleBuilder.setChainStart(chainStart);
bundleBuilder.setTimestamp(chainStart);
bundleBuilder.setMedallion(medallion);
bundleBuilder.setComment(comment);
bundleBuilder.setIdentity("test-chain-start");
bundleBuilder.setVerifyKey((await exports.keyPair).publicKey);
return new Decomposition_1.Decomposition((0, utils_1.signBundle)(bundleBuilder.serializeBinary(), (await exports.keyPair).secretKey));
}
function unbundle(signed) {
const inside = new Decomposition_1.Decomposition(signed);
return inside.builder;
}
async function extendChain(comment, previous, timestamp) {
const bundleBuilder = new builders_1.BundleBuilder();
const parsedPrevious = previous.builder;
bundleBuilder.setMedallion(parsedPrevious.getMedallion());
bundleBuilder.setPrevious(parsedPrevious.getTimestamp());
bundleBuilder.setChainStart(parsedPrevious.getChainStart());
bundleBuilder.setTimestamp(timestamp); // one millisecond later
bundleBuilder.setComment(comment);
const priorHash = previous.info.hashCode;
(0, utils_1.ensure)(priorHash && priorHash.length === 32);
bundleBuilder.setPriorHash(priorHash);
return new Decomposition_1.Decomposition((0, utils_1.signBundle)(bundleBuilder.serializeBinary(), (await exports.keyPair).secretKey));
}
function extendChainWithoutSign(comment, previous, timestamp) {
const bundleBuilder = new builders_1.BundleBuilder();
const parsedPrevious = previous.builder;
bundleBuilder.setMedallion(parsedPrevious.getMedallion());
bundleBuilder.setPrevious(parsedPrevious.getTimestamp());
bundleBuilder.setChainStart(parsedPrevious.getChainStart());
bundleBuilder.setTimestamp(timestamp); // one millisecond later
bundleBuilder.setComment(comment);
const priorHash = previous.info.hashCode;
(0, utils_1.ensure)(priorHash && priorHash.length === 32);
bundleBuilder.setPriorHash(priorHash);
return bundleBuilder;
}
async function addTrxns(store) {
const start1 = await makeChainStart("chain1,tx1", exports.MEDALLION1, exports.START_MICROS1);
await store.addBundle(start1);
const next1 = await extendChain("chain1,tx2", start1, exports.NEXT_TS1);
await store.addBundle(next1);
const start2 = await makeChainStart("chain2,tx1", exports.MEDALLION2, exports.START_MICROS2);
await store.addBundle(start2);
const next2 = await extendChain("chain2,2", start2, exports.NEXT_TS2);
await store.addBundle(next2);
}
async function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
//# sourceMappingURL=test_utils.js.map