@tkey-mpc/default
Version:
TKey default library
80 lines (76 loc) • 3.1 kB
JavaScript
;
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
var core = require('@tkey-mpc/core');
var serviceProviderBase = require('@tkey-mpc/service-provider-base');
var serviceProviderTorus = require('@tkey-mpc/service-provider-torus');
var shareSerialization = require('@tkey-mpc/share-serialization');
var shareTransfer = require('@tkey-mpc/share-transfer');
var storageLayerTorus = require('@tkey-mpc/storage-layer-torus');
class ThresholdKey extends core.ThresholdKey {
constructor(args) {
const {
modules = {},
serviceProvider,
storageLayer,
customAuthArgs,
serverTimeOffset
} = args || {};
const defaultModules = {
[shareTransfer.SHARE_TRANSFER_MODULE_NAME]: new shareTransfer.ShareTransferModule(),
[shareSerialization.SHARE_SERIALIZATION_MODULE_NAME]: new shareSerialization.ShareSerializationModule()
};
let finalServiceProvider;
let finalStorageLayer;
if (!serviceProvider) {
finalServiceProvider = new serviceProviderTorus.TorusServiceProvider({
customAuthArgs
});
} else {
finalServiceProvider = serviceProvider;
}
if (!storageLayer) {
finalStorageLayer = new storageLayerTorus.TorusStorageLayer({
hostUrl: "https://metadata.tor.us",
serverTimeOffset
});
} else {
finalStorageLayer = storageLayer;
}
super(_objectSpread(_objectSpread({}, args || {}), {}, {
modules: _objectSpread(_objectSpread({}, defaultModules), modules),
serviceProvider: finalServiceProvider,
storageLayer: finalStorageLayer
}));
}
static async fromJSON(value, args) {
const {
storageLayer: tempOldStorageLayer,
serviceProvider: tempOldServiceProvider
} = value;
const {
storageLayer,
serviceProvider,
modules = {},
customAuthArgs,
serverTimeOffset = 0
} = args || {};
const defaultModules = {
[shareTransfer.SHARE_TRANSFER_MODULE_NAME]: new shareTransfer.ShareTransferModule(),
[shareSerialization.SHARE_SERIALIZATION_MODULE_NAME]: new shareSerialization.ShareSerializationModule()
};
const finalServiceProvider = serviceProvider || serviceProviderTorus.TorusServiceProvider.fromJSON(tempOldServiceProvider) || serviceProviderBase.ServiceProviderBase.fromJSON(tempOldServiceProvider) || new serviceProviderTorus.TorusServiceProvider({
customAuthArgs
});
tempOldStorageLayer.serviceProvider = finalServiceProvider;
const finalStorageLayer = storageLayer || storageLayerTorus.MockStorageLayer.fromJSON(tempOldStorageLayer) || storageLayerTorus.TorusStorageLayer.fromJSON(tempOldStorageLayer) || new storageLayerTorus.TorusStorageLayer({
hostUrl: "https://metadata.tor.us",
serverTimeOffset
});
return super.fromJSON(value, _objectSpread(_objectSpread({}, args || {}), {}, {
modules: _objectSpread(_objectSpread({}, defaultModules), modules),
serviceProvider: finalServiceProvider,
storageLayer: finalStorageLayer
}));
}
}
exports.ThresholdKey = ThresholdKey;