@neo-one/server-plugin-wallet
Version:
NEO•ONE Server wallet plugin.
90 lines (88 loc) • 10.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const client_common_1 = require("@neo-one/client-common");
const server_plugin_1 = require("@neo-one/server-plugin");
const server_plugin_network_1 = require("@neo-one/server-plugin-network");
const activateWallet_1 = require("./activateWallet");
const bootstrap_1 = require("./bootstrap");
const constants_1 = require("./constants");
const deactivateWallet_1 = require("./deactivateWallet");
const WalletResourceType_1 = require("./WalletResourceType");
class WalletPlugin extends server_plugin_1.Plugin {
constructor() {
super(...arguments);
this.walletResourceType = new WalletResourceType_1.WalletResourceType({
plugin: this,
});
}
get name() {
return constants_1.constants.PLUGIN;
}
get names() {
return {
capital: 'Wallet',
capitalPlural: 'Wallets',
lower: 'wallet',
lowerPlural: 'wallets',
};
}
get dependencies() {
return [server_plugin_network_1.constants.PLUGIN];
}
get resourceTypes() {
return [this.walletResourceType];
}
get interactive() {
return [activateWallet_1.activateWallet(this), deactivateWallet_1.deactivateWallet(this), bootstrap_1.bootstrap(this)];
}
get createHooks() {
return [
{
plugin: server_plugin_network_1.constants.PLUGIN,
resourceType: server_plugin_network_1.constants.NETWORK_RESOURCE_TYPE,
hook: ({ name, pluginManager }) => ({
title: 'Create master wallet',
skip: () => {
if (name === server_plugin_network_1.constants.NETWORK_NAME.MAIN || name === server_plugin_network_1.constants.NETWORK_NAME.TEST) {
return 'Master wallets are only created for private networks';
}
return false;
},
task: () => pluginManager
.getResourcesManager({
plugin: constants_1.constants.PLUGIN,
resourceType: constants_1.constants.WALLET_RESOURCE_TYPE,
})
.create(server_plugin_1.compoundName.make({ names: [name], name: 'master' }), {
network: name,
privateKey: client_common_1.wifToPrivateKey(server_plugin_network_1.constants.PRIVATE_NET_PRIVATE_KEY),
}),
}),
},
];
}
get cliPostHooks() {
return [
{
name: 'create network',
hook: async ({ cli, args }) => {
const { name: networkName } = args;
if (!(networkName === server_plugin_network_1.constants.NETWORK_NAME.MAIN || networkName === server_plugin_network_1.constants.NETWORK_NAME.TEST)) {
await cli.exec(`activate wallet master`);
}
},
},
{
name: 'deactivate network',
hook: async ({ cli }) => {
const { wallet } = await cli.getSession(constants_1.constants.PLUGIN);
if (wallet != undefined) {
await cli.exec('deactivate wallet');
}
},
},
];
}
}
exports.WalletPlugin = WalletPlugin;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QkFDMUM7Z0JBQ0gsQ0FBQzthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7b0JBQ3RCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxVQUFVLENBQUMscUJBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFO3dCQUN2QixNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztxQkFDckM7Z0JBQ0gsQ0FBQzthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXhGRCxvQ0F3RkMiLCJmaWxlIjoibmVvLW9uZS1zZXJ2ZXItcGx1Z2luLXdhbGxldC9zcmMvV2FsbGV0UGx1Z2luLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2lmVG9Qcml2YXRlS2V5IH0gZnJvbSAnQG5lby1vbmUvY2xpZW50LWNvbW1vbic7XG5pbXBvcnQge1xuICBDTElIb29rQ29uZmlnLFxuICBjb21wb3VuZE5hbWUsXG4gIENyZWF0ZUhvb2tDb25maWcsXG4gIEludGVyYWN0aXZlQ29tbWFuZCxcbiAgUGx1Z2luLFxuICBSZXNvdXJjZVR5cGUsXG59IGZyb20gJ0BuZW8tb25lL3NlcnZlci1wbHVnaW4nO1xuaW1wb3J0IHsgY29uc3RhbnRzIGFzIG5ldHdvcmtDb25zdGFudHMgfSBmcm9tICdAbmVvLW9uZS9zZXJ2ZXItcGx1Z2luLW5ldHdvcmsnO1xuaW1wb3J0IHsgYWN0aXZhdGVXYWxsZXQgfSBmcm9tICcuL2FjdGl2YXRlV2FsbGV0JztcbmltcG9ydCB7IGJvb3RzdHJhcCB9IGZyb20gJy4vYm9vdHN0cmFwJztcbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGRlYWN0aXZhdGVXYWxsZXQgfSBmcm9tICcuL2RlYWN0aXZhdGVXYWxsZXQnO1xuaW1wb3J0IHsgV2FsbGV0UmVzb3VyY2VUeXBlIH0gZnJvbSAnLi9XYWxsZXRSZXNvdXJjZVR5cGUnO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0UGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcbiAgcHVibGljIHJlYWRvbmx5IHdhbGxldFJlc291cmNlVHlwZTogV2FsbGV0UmVzb3VyY2VUeXBlID0gbmV3IFdhbGxldFJlc291cmNlVHlwZSh7XG4gICAgcGx1Z2luOiB0aGlzLFxuICB9KTtcblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29uc3RhbnRzLlBMVUdJTjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZXMoKToge1xuICAgIHJlYWRvbmx5IGNhcGl0YWw6IHN0cmluZztcbiAgICByZWFkb25seSBjYXBpdGFsUGx1cmFsOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgbG93ZXI6IHN0cmluZztcbiAgICByZWFkb25seSBsb3dlclBsdXJhbDogc3RyaW5nO1xuICB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgY2FwaXRhbDogJ1dhbGxldCcsXG4gICAgICBjYXBpdGFsUGx1cmFsOiAnV2FsbGV0cycsXG4gICAgICBsb3dlcjogJ3dhbGxldCcsXG4gICAgICBsb3dlclBsdXJhbDogJ3dhbGxldHMnLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlcGVuZGVuY2llcygpOiByZWFkb25seSBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtuZXR3b3JrQ29uc3RhbnRzLlBMVUdJTl07XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc291cmNlVHlwZXMoKTogcmVhZG9ubHkgUmVzb3VyY2VUeXBlW10ge1xuICAgIHJldHVybiBbdGhpcy53YWxsZXRSZXNvdXJjZVR5cGVdO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnRlcmFjdGl2ZSgpOiByZWFkb25seSBJbnRlcmFjdGl2ZUNvbW1hbmRbXSB7XG4gICAgcmV0dXJuIFthY3RpdmF0ZVdhbGxldCh0aGlzKSwgZGVhY3RpdmF0ZVdhbGxldCh0aGlzKSwgYm9vdHN0cmFwKHRoaXMpXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3JlYXRlSG9va3MoKTogcmVhZG9ubHkgQ3JlYXRlSG9va0NvbmZpZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwbHVnaW46IG5ldHdvcmtDb25zdGFudHMuUExVR0lOLFxuICAgICAgICByZXNvdXJjZVR5cGU6IG5ldHdvcmtDb25zdGFudHMuTkVUV09SS19SRVNPVVJDRV9UWVBFLFxuICAgICAgICBob29rOiAoeyBuYW1lLCBwbHVnaW5NYW5hZ2VyIH0pID0+ICh7XG4gICAgICAgICAgdGl0bGU6ICdDcmVhdGUgbWFzdGVyIHdhbGxldCcsXG4gICAgICAgICAgc2tpcDogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09IG5ldHdvcmtDb25zdGFudHMuTkVUV09SS19OQU1FLk1BSU4gfHwgbmFtZSA9PT0gbmV0d29ya0NvbnN0YW50cy5ORVRXT1JLX05BTUUuVEVTVCkge1xuICAgICAgICAgICAgICByZXR1cm4gJ01hc3RlciB3YWxsZXRzIGFyZSBvbmx5IGNyZWF0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0YXNrOiAoKSA9PlxuICAgICAgICAgICAgcGx1Z2luTWFuYWdlclxuICAgICAgICAgICAgICAuZ2V0UmVzb3VyY2VzTWFuYWdlcih7XG4gICAgICAgICAgICAgICAgcGx1Z2luOiBjb25zdGFudHMuUExVR0lOLFxuICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogY29uc3RhbnRzLldBTExFVF9SRVNPVVJDRV9UWVBFLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY3JlYXRlKGNvbXBvdW5kTmFtZS5tYWtlKHsgbmFtZXM6IFtuYW1lXSwgbmFtZTogJ21hc3RlcicgfSksIHtcbiAgICAgICAgICAgICAgICBuZXR3b3JrOiBuYW1lLFxuICAgICAgICAgICAgICAgIHByaXZhdGVLZXk6IHdpZlRvUHJpdmF0ZUtleShuZXR3b3JrQ29uc3RhbnRzLlBSSVZBVEVfTkVUX1BSSVZBVEVfS0VZKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgcHVibGljIGdldCBjbGlQb3N0SG9va3MoKTogcmVhZG9ubHkgQ0xJSG9va0NvbmZpZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnY3JlYXRlIG5ldHdvcmsnLFxuICAgICAgICBob29rOiBhc3luYyAoeyBjbGksIGFyZ3MgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgbmFtZTogbmV0d29ya05hbWUgfSA9IGFyZ3M7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShuZXR3b3JrTmFtZSA9PT0gbmV0d29ya0NvbnN0YW50cy5ORVRXT1JLX05BTUUuTUFJTiB8fCBuZXR3b3JrTmFtZSA9PT0gbmV0d29ya0NvbnN0YW50cy5ORVRXT1JLX05BTUUuVEVTVClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGF3YWl0IGNsaS5leGVjKGBhY3RpdmF0ZSB3YWxsZXQgbWFzdGVyYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2RlYWN0aXZhdGUgbmV0d29yaycsXG4gICAgICAgIGhvb2s6IGFzeW5jICh7IGNsaSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyB3YWxsZXQgfSA9IGF3YWl0IGNsaS5nZXRTZXNzaW9uKGNvbnN0YW50cy5QTFVHSU4pO1xuICAgICAgICAgIGlmICh3YWxsZXQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGkuZXhlYygnZGVhY3RpdmF0ZSB3YWxsZXQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cbn1cbiJdfQ==