lighthouse-encryption-sdk-browser
Version:
Encryption SDK: Build your trustless, decentralized and fault resistance Application using distributed key shades with threshold cryptography
70 lines (69 loc) • 2.24 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.saveShards = void 0;
const util_1 = require("../../util");
const util_2 = require("../../util");
const saveShards = async (address, cid, auth_token, keyShards, shareTo = []) => {
if (!(0, util_2.isCidReg)(cid)) {
return {
isSuccess: false,
error: "Invalid CID",
};
}
if (!Array.isArray(keyShards) || keyShards.length != 5) {
return {
isSuccess: false,
error: "keyShards must be an array of 5 objects",
};
}
try {
const nodeId = [1, 2, 3, 4, 5];
const nodeUrl = nodeId.map((elem) => `/api/setSharedKey/${elem}`);
const requestData = async (url, index) => {
try {
const response = await (0, util_1.API_NODE_HANDLER)(url, "POST", auth_token, shareTo.length > 0
? {
address,
cid,
payload: keyShards[index],
sharedTo: shareTo,
}
: {
address,
cid,
payload: keyShards[index],
});
return response;
}
catch (error) {
return {
error,
};
}
};
const data = [];
for (const [index, url] of nodeUrl.entries()) {
const response = await requestData(url, index);
if (response.error) {
return {
isSuccess: false,
error: JSON.parse(response?.error?.message),
};
}
await new Promise((resolve) => setTimeout(resolve, 1000));
data.push(response);
}
const temp = data.map((elem, index) => ({ ...elem, data: null }));
return {
isSuccess: (0, util_2.isEqual)(...temp) && data[0]?.message === "success",
error: null,
};
}
catch (err) {
return {
isSuccess: false,
error: err,
};
}
};
exports.saveShards = saveShards;
;