@neo-one/server-plugin-wallet
Version:
NEO•ONE Server wallet plugin.
109 lines (107 loc) • 12.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const server_plugin_1 = require("@neo-one/server-plugin");
const server_plugin_network_1 = require("@neo-one/server-plugin-network");
const WalletResource_1 = require("./WalletResource");
class WalletResourceAdapter {
static create({ client, pluginManager, resourceType, name, dataPath }, { privateKey, password }) {
return new server_plugin_1.TaskList({
tasks: [
{
title: 'Create wallet resource',
task: async (ctx) => {
const walletResource = await WalletResource_1.WalletResource.createNew({
client,
pluginManager,
resourceType,
name,
privateKey,
password,
dataPath,
});
const { names: [networkName], } = server_plugin_1.compoundName.extract(name);
ctx.resourceAdapter = new this({
resourceType,
walletResource,
});
ctx.dependencies = [
{
plugin: server_plugin_network_1.constants.PLUGIN,
resourceType: server_plugin_network_1.constants.NETWORK_RESOURCE_TYPE,
name: networkName,
},
];
await walletResource.create();
},
},
],
});
}
static async init({ client, pluginManager, resourceType, name, dataPath, }) {
const walletResource = await WalletResource_1.WalletResource.createExisting({
client,
pluginManager,
resourceType,
name,
dataPath,
});
return new this({
resourceType,
walletResource,
});
}
constructor({ walletResource }) {
this.walletResource = walletResource;
this.resource$ = walletResource.resource$;
}
async destroy() {
}
delete(_options) {
return new server_plugin_1.TaskList({
tasks: [
{
title: 'Clean up local files',
task: async () => {
await this.walletResource.delete();
},
},
],
});
}
start({ password }) {
return new server_plugin_1.TaskList({
tasks: [
{
title: 'Unlock wallet',
task: async () => {
if (this.walletResource.unlocked) {
return undefined;
}
if (password === undefined) {
throw new Error('Password is required to unlock a wallet.');
}
await this.walletResource.unlock({ password });
return undefined;
},
},
],
});
}
stop(_options) {
return new server_plugin_1.TaskList({
tasks: [
{
title: 'Lock wallet',
task: async () => {
await this.walletResource.lock();
},
},
],
});
}
getDebug() {
return this.walletResource.getDebug();
}
}
exports.WalletResourceAdapter = WalletResourceAdapter;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIldhbGxldFJlc291cmNlQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBEQUE4RjtBQUM5RiwwRUFBK0U7QUFHL0UscURBQWtEO0FBa0JsRCxNQUFhLHFCQUFxQjtJQUN6QixNQUFNLENBQUMsTUFBTSxDQUNsQixFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQW9DLEVBQ3pGLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBeUI7UUFFL0MsT0FBTyxJQUFJLHdCQUFRLENBQUM7WUFDbEIsS0FBSyxFQUFFO2dCQUNMO29CQUNFLEtBQUssRUFBRSx3QkFBd0I7b0JBQy9CLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7d0JBQ2xCLE1BQU0sY0FBYyxHQUFHLE1BQU0sK0JBQWMsQ0FBQyxTQUFTLENBQUM7NEJBQ3BELE1BQU07NEJBQ04sYUFBYTs0QkFDYixZQUFZOzRCQUNaLElBQUk7NEJBQ0osVUFBVTs0QkFDVixRQUFROzRCQUNSLFFBQVE7eUJBQ1QsQ0FBQyxDQUFDO3dCQUVILE1BQU0sRUFDSixLQUFLLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FDckIsR0FBRyw0QkFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDL0IsR0FBRyxDQUFDLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQzs0QkFDN0IsWUFBWTs0QkFDWixjQUFjO3lCQUNmLENBQUMsQ0FBQzt3QkFFSCxHQUFHLENBQUMsWUFBWSxHQUFHOzRCQUNqQjtnQ0FDRSxNQUFNLEVBQUUsaUNBQWdCLENBQUMsTUFBTTtnQ0FDL0IsWUFBWSxFQUFFLGlDQUFnQixDQUFDLHFCQUFxQjtnQ0FDcEQsSUFBSSxFQUFFLFdBQVc7NkJBQ2xCO3lCQUNGLENBQUM7d0JBRUYsTUFBTSxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hDLENBQUM7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUN2QixNQUFNLEVBQ04sYUFBYSxFQUNiLFlBQVksRUFDWixJQUFJLEVBQ0osUUFBUSxHQUN5QjtRQUNqQyxNQUFNLGNBQWMsR0FBRyxNQUFNLCtCQUFjLENBQUMsY0FBYyxDQUFDO1lBQ3pELE1BQU07WUFDTixhQUFhO1lBQ2IsWUFBWTtZQUNaLElBQUk7WUFDSixRQUFRO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLElBQUksQ0FBQztZQUNkLFlBQVk7WUFDWixjQUFjO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUtELFlBQW1CLEVBQUUsY0FBYyxFQUFnQztRQUNqRSxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUVyQyxJQUFJLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUM7SUFDNUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO0lBRXBCLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBK0I7UUFDM0MsT0FBTyxJQUFJLHdCQUFRLENBQUM7WUFDbEIsS0FBSyxFQUFFO2dCQUNMO29CQUNFLEtBQUssRUFBRSxzQkFBc0I7b0JBQzdCLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTt3QkFDZixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JDLENBQUM7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQXlCO1FBQzlDLE9BQU8sSUFBSSx3QkFBUSxDQUFDO1lBQ2xCLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxLQUFLLEVBQUUsZUFBZTtvQkFDdEIsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO3dCQUNmLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUU7NEJBQ2hDLE9BQU8sU0FBUyxDQUFDO3lCQUNsQjt3QkFFRCxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7NEJBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQzt5QkFDN0Q7d0JBRUQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7d0JBRS9DLE9BQU8sU0FBUyxDQUFDO29CQUNuQixDQUFDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sSUFBSSxDQUFDLFFBQStCO1FBQ3pDLE9BQU8sSUFBSSx3QkFBUSxDQUFDO1lBQ2xCLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxLQUFLLEVBQUUsYUFBYTtvQkFDcEIsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO3dCQUNmLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbkMsQ0FBQztpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBaklELHNEQWlJQyIsImZpbGUiOiJuZW8tb25lLXNlcnZlci1wbHVnaW4td2FsbGV0L3NyYy9XYWxsZXRSZXNvdXJjZUFkYXB0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wb3VuZE5hbWUsIERlc2NyaWJlVGFibGUsIFBsdWdpbk1hbmFnZXIsIFRhc2tMaXN0IH0gZnJvbSAnQG5lby1vbmUvc2VydmVyLXBsdWdpbic7XG5pbXBvcnQgeyBjb25zdGFudHMgYXMgbmV0d29ya0NvbnN0YW50cyB9IGZyb20gJ0BuZW8tb25lL3NlcnZlci1wbHVnaW4tbmV0d29yayc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXYWxsZXRDbGllbnQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFdhbGxldFJlc291cmNlIH0gZnJvbSAnLi9XYWxsZXRSZXNvdXJjZSc7XG5pbXBvcnQgeyBXYWxsZXQsIFdhbGxldFJlc291cmNlT3B0aW9ucywgV2FsbGV0UmVzb3VyY2VUeXBlIH0gZnJvbSAnLi9XYWxsZXRSZXNvdXJjZVR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdhbGxldFJlc291cmNlQWRhcHRlckluaXRPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpZW50OiBXYWxsZXRDbGllbnQ7XG4gIHJlYWRvbmx5IHBsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXI7XG4gIHJlYWRvbmx5IHJlc291cmNlVHlwZTogV2FsbGV0UmVzb3VyY2VUeXBlO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRhdGFQYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2FsbGV0UmVzb3VyY2VBZGFwdGVyU3RhdGljT3B0aW9ucyBleHRlbmRzIFdhbGxldFJlc291cmNlQWRhcHRlckluaXRPcHRpb25zIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2FsbGV0UmVzb3VyY2VBZGFwdGVyT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHJlc291cmNlVHlwZTogV2FsbGV0UmVzb3VyY2VUeXBlO1xuICByZWFkb25seSB3YWxsZXRSZXNvdXJjZTogV2FsbGV0UmVzb3VyY2U7XG59XG5cbmV4cG9ydCBjbGFzcyBXYWxsZXRSZXNvdXJjZUFkYXB0ZXIge1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShcbiAgICB7IGNsaWVudCwgcGx1Z2luTWFuYWdlciwgcmVzb3VyY2VUeXBlLCBuYW1lLCBkYXRhUGF0aCB9OiBXYWxsZXRSZXNvdXJjZUFkYXB0ZXJJbml0T3B0aW9ucyxcbiAgICB7IHByaXZhdGVLZXksIHBhc3N3b3JkIH06IFdhbGxldFJlc291cmNlT3B0aW9ucyxcbiAgKTogVGFza0xpc3Qge1xuICAgIHJldHVybiBuZXcgVGFza0xpc3Qoe1xuICAgICAgdGFza3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnQ3JlYXRlIHdhbGxldCByZXNvdXJjZScsXG4gICAgICAgICAgdGFzazogYXN5bmMgKGN0eCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd2FsbGV0UmVzb3VyY2UgPSBhd2FpdCBXYWxsZXRSZXNvdXJjZS5jcmVhdGVOZXcoe1xuICAgICAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgICAgIHBsdWdpbk1hbmFnZXIsXG4gICAgICAgICAgICAgIHJlc291cmNlVHlwZSxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZUtleSxcbiAgICAgICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgICAgIGRhdGFQYXRoLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgbmFtZXM6IFtuZXR3b3JrTmFtZV0sXG4gICAgICAgICAgICB9ID0gY29tcG91bmROYW1lLmV4dHJhY3QobmFtZSk7XG4gICAgICAgICAgICBjdHgucmVzb3VyY2VBZGFwdGVyID0gbmV3IHRoaXMoe1xuICAgICAgICAgICAgICByZXNvdXJjZVR5cGUsXG4gICAgICAgICAgICAgIHdhbGxldFJlc291cmNlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGN0eC5kZXBlbmRlbmNpZXMgPSBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbHVnaW46IG5ldHdvcmtDb25zdGFudHMuUExVR0lOLFxuICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmV0d29ya0NvbnN0YW50cy5ORVRXT1JLX1JFU09VUkNFX1RZUEUsXG4gICAgICAgICAgICAgICAgbmFtZTogbmV0d29ya05hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBhd2FpdCB3YWxsZXRSZXNvdXJjZS5jcmVhdGUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgaW5pdCh7XG4gICAgY2xpZW50LFxuICAgIHBsdWdpbk1hbmFnZXIsXG4gICAgcmVzb3VyY2VUeXBlLFxuICAgIG5hbWUsXG4gICAgZGF0YVBhdGgsXG4gIH06IFdhbGxldFJlc291cmNlQWRhcHRlckluaXRPcHRpb25zKTogUHJvbWlzZTxXYWxsZXRSZXNvdXJjZUFkYXB0ZXI+IHtcbiAgICBjb25zdCB3YWxsZXRSZXNvdXJjZSA9IGF3YWl0IFdhbGxldFJlc291cmNlLmNyZWF0ZUV4aXN0aW5nKHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHBsdWdpbk1hbmFnZXIsXG4gICAgICByZXNvdXJjZVR5cGUsXG4gICAgICBuYW1lLFxuICAgICAgZGF0YVBhdGgsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IHRoaXMoe1xuICAgICAgcmVzb3VyY2VUeXBlLFxuICAgICAgd2FsbGV0UmVzb3VyY2UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgd2FsbGV0UmVzb3VyY2U6IFdhbGxldFJlc291cmNlO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2UkOiBPYnNlcnZhYmxlPFdhbGxldD47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHsgd2FsbGV0UmVzb3VyY2UgfTogV2FsbGV0UmVzb3VyY2VBZGFwdGVyT3B0aW9ucykge1xuICAgIHRoaXMud2FsbGV0UmVzb3VyY2UgPSB3YWxsZXRSZXNvdXJjZTtcblxuICAgIHRoaXMucmVzb3VyY2UkID0gd2FsbGV0UmVzb3VyY2UucmVzb3VyY2UkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZShfb3B0aW9uczogV2FsbGV0UmVzb3VyY2VPcHRpb25zKTogVGFza0xpc3Qge1xuICAgIHJldHVybiBuZXcgVGFza0xpc3Qoe1xuICAgICAgdGFza3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnQ2xlYW4gdXAgbG9jYWwgZmlsZXMnLFxuICAgICAgICAgIHRhc2s6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMud2FsbGV0UmVzb3VyY2UuZGVsZXRlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnQoeyBwYXNzd29yZCB9OiBXYWxsZXRSZXNvdXJjZU9wdGlvbnMpOiBUYXNrTGlzdCB7XG4gICAgcmV0dXJuIG5ldyBUYXNrTGlzdCh7XG4gICAgICB0YXNrczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdVbmxvY2sgd2FsbGV0JyxcbiAgICAgICAgICB0YXNrOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy53YWxsZXRSZXNvdXJjZS51bmxvY2tlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFzc3dvcmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bhc3N3b3JkIGlzIHJlcXVpcmVkIHRvIHVubG9jayBhIHdhbGxldC4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXdhaXQgdGhpcy53YWxsZXRSZXNvdXJjZS51bmxvY2soeyBwYXNzd29yZCB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdG9wKF9vcHRpb25zOiBXYWxsZXRSZXNvdXJjZU9wdGlvbnMpOiBUYXNrTGlzdCB7XG4gICAgcmV0dXJuIG5ldyBUYXNrTGlzdCh7XG4gICAgICB0YXNrczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdMb2NrIHdhbGxldCcsXG4gICAgICAgICAgdGFzazogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy53YWxsZXRSZXNvdXJjZS5sb2NrKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGVidWcoKTogRGVzY3JpYmVUYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMud2FsbGV0UmVzb3VyY2UuZ2V0RGVidWcoKTtcbiAgfVxufVxuIl19