@tkey/default
Version:
TKey default library
78 lines (75 loc) • 2.85 kB
JavaScript
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
import { TKey } from '@tkey/core';
import { ServiceProviderBase } from '@tkey/service-provider-base';
import { TorusServiceProvider } from '@tkey/service-provider-torus';
import { SHARE_SERIALIZATION_MODULE_NAME, ShareSerializationModule } from '@tkey/share-serialization';
import { SHARE_TRANSFER_MODULE_NAME, ShareTransferModule } from '@tkey/share-transfer';
import { TorusStorageLayer, MockStorageLayer } from '@tkey/storage-layer-torus';
class TKeyDefault extends TKey {
constructor(args) {
const {
modules = {},
serviceProvider,
storageLayer,
customAuthArgs,
serverTimeOffset
} = args || {};
const defaultModules = {
[SHARE_TRANSFER_MODULE_NAME]: new ShareTransferModule(),
[SHARE_SERIALIZATION_MODULE_NAME]: new ShareSerializationModule()
};
let finalServiceProvider;
let finalStorageLayer;
if (!serviceProvider) {
finalServiceProvider = new TorusServiceProvider({
customAuthArgs
});
} else {
finalServiceProvider = serviceProvider;
}
if (!storageLayer) {
finalStorageLayer = new TorusStorageLayer({
hostUrl: "https://metadata.web3auth.io",
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 = {
[SHARE_TRANSFER_MODULE_NAME]: new ShareTransferModule(),
[SHARE_SERIALIZATION_MODULE_NAME]: new ShareSerializationModule()
};
const finalServiceProvider = serviceProvider || TorusServiceProvider.fromJSON(tempOldServiceProvider) || ServiceProviderBase.fromJSON(tempOldServiceProvider) || new TorusServiceProvider({
customAuthArgs
});
tempOldStorageLayer.serviceProvider = finalServiceProvider;
const finalStorageLayer = storageLayer || MockStorageLayer.fromJSON(tempOldStorageLayer) || TorusStorageLayer.fromJSON(tempOldStorageLayer) || new TorusStorageLayer({
hostUrl: "https://metadata.web3auth.io",
serverTimeOffset
});
return super.fromJSON(value, _objectSpread(_objectSpread({}, args || {}), {}, {
modules: _objectSpread(_objectSpread({}, defaultModules), modules),
serviceProvider: finalServiceProvider,
storageLayer: finalStorageLayer
}));
}
}
export { TKeyDefault };