@neo-one/server-plugin-network
Version:
NEO•ONE Server network plugin.
85 lines (83 loc) • 12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const server_plugin_1 = require("@neo-one/server-plugin");
const lodash_1 = tslib_1.__importDefault(require("lodash"));
const constants_1 = require("./constants");
const crud_1 = require("./crud");
const MasterNetworkResourceAdapter_1 = require("./MasterNetworkResourceAdapter");
class NetworkResourceType extends server_plugin_1.ResourceType {
constructor({ plugin }) {
super({
plugin,
name: constants_1.constants.NETWORK_RESOURCE_TYPE,
names: {
capital: 'Network',
capitalPlural: 'Networks',
lower: 'network',
lowerPlural: 'networks',
},
});
}
async createMasterResourceAdapter({ binary, portAllocator, }) {
return new MasterNetworkResourceAdapter_1.MasterNetworkResourceAdapter({
resourceType: this,
binary,
portAllocator,
});
}
getCRUD() {
return new server_plugin_1.CRUD({
resourceType: this,
start: new crud_1.StartNetworkCRUD({ resourceType: this }),
stop: new server_plugin_1.StopCRUD({
resourceType: this,
aliases: ['stop net'],
}),
delete: new crud_1.DeleteNetworkCRUD({ resourceType: this }),
create: new crud_1.CreateNetworkCRUD({ resourceType: this }),
get: new server_plugin_1.GetCRUD({
resourceType: this,
aliases: ['get net'],
}),
describe: new server_plugin_1.DescribeCRUD({
resourceType: this,
aliases: ['describe net'],
}),
});
}
getListTable(resources) {
return [['Name', 'Type', 'Height', 'Nodes']].concat(lodash_1.default.sortBy(resources, (resource) => resource.name).map((resource) => [
resource.name,
resource.type,
resource.height === undefined ? 'Unknown' : `${resource.height}`,
resource.peers === undefined ? '0' : `${resource.peers}`,
`${resource.nodes.length}`,
]));
}
getDescribeTable(resource) {
return [
['Name', resource.name],
['Type', resource.type],
['Height', resource.height === undefined ? 'Unknown' : `${resource.height}`],
[
'Nodes',
{
type: 'list',
table: [['Name', 'Live', 'Ready', 'RPC', 'TCP', 'Telemetry', 'Height', 'Peers']].concat(lodash_1.default.sortBy(resource.nodes, (node) => node.name).map((node) => [
node.name,
node.live ? 'Yes' : 'No',
node.ready ? 'Yes' : 'No',
node.rpcAddress,
node.tcpAddress,
node.telemetryAddress,
resource.height === undefined ? 'Unknown' : `${resource.height}`,
resource.peers === undefined ? '0' : `${resource.peers}`,
])),
},
],
];
}
}
exports.NetworkResourceType = NetworkResourceType;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBVTtZQUNyRjtnQkFDRSxPQUFPO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUNyRixnQkFBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQzt3QkFDMUQsSUFBSSxDQUFDLElBQUk7d0JBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO3dCQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7d0JBQ3pCLElBQUksQ0FBQyxVQUFVO3dCQUNmLElBQUksQ0FBQyxVQUFVO3dCQUNmLElBQUksQ0FBQyxnQkFBZ0I7d0JBQ3JCLFFBQVEsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRTt3QkFDaEUsUUFBUSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFO3FCQUN6RCxDQUFDLENBQ0g7aUJBQ0Y7YUFDTztTQUNYLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFuRkQsa0RBbUZDIiwiZmlsZSI6Im5lby1vbmUtc2VydmVyLXBsdWdpbi1uZXR3b3JrL3NyYy9OZXR3b3JrUmVzb3VyY2VUeXBlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ1JVRCxcbiAgRGVzY3JpYmVDUlVELFxuICBEZXNjcmliZVRhYmxlLFxuICBHZXRDUlVELFxuICBMaXN0VGFibGUsXG4gIE1hc3RlclJlc291cmNlQWRhcHRlcixcbiAgTWFzdGVyUmVzb3VyY2VBZGFwdGVyT3B0aW9ucyxcbiAgUmVzb3VyY2VTdGF0ZSxcbiAgUmVzb3VyY2VUeXBlLFxuICBTdG9wQ1JVRCxcbn0gZnJvbSAnQG5lby1vbmUvc2VydmVyLXBsdWdpbic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ3JlYXRlTmV0d29ya0NSVUQsIERlbGV0ZU5ldHdvcmtDUlVELCBTdGFydE5ldHdvcmtDUlVEIH0gZnJvbSAnLi9jcnVkJztcbmltcG9ydCB7IE1hc3Rlck5ldHdvcmtSZXNvdXJjZUFkYXB0ZXIgfSBmcm9tICcuL01hc3Rlck5ldHdvcmtSZXNvdXJjZUFkYXB0ZXInO1xuaW1wb3J0IHsgTmV0d29ya1BsdWdpbiB9IGZyb20gJy4vTmV0d29ya1BsdWdpbic7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnLi9ub2RlJztcbmltcG9ydCB7IE5ldHdvcmtUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29yayB7XG4gIHJlYWRvbmx5IHBsdWdpbjogc3RyaW5nO1xuICByZWFkb25seSByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBiYXNlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBzdGF0ZTogUmVzb3VyY2VTdGF0ZTtcbiAgcmVhZG9ubHkgdHlwZTogTmV0d29ya1R5cGU7XG4gIHJlYWRvbmx5IGhlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBwZWVyczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBub2RlczogcmVhZG9ubHkgTm9kZVtdO1xuICByZWFkb25seSBsaXZlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSByZWFkeTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrUmVzb3VyY2VPcHRpb25zIHtcbiAgcmVhZG9ubHkgdHlwZT86ICduZW8tb25lJztcbn1cblxuZXhwb3J0IGNsYXNzIE5ldHdvcmtSZXNvdXJjZVR5cGUgZXh0ZW5kcyBSZXNvdXJjZVR5cGU8TmV0d29yaywgTmV0d29ya1Jlc291cmNlT3B0aW9ucz4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoeyBwbHVnaW4gfTogeyByZWFkb25seSBwbHVnaW46IE5ldHdvcmtQbHVnaW4gfSkge1xuICAgIHN1cGVyKHtcbiAgICAgIHBsdWdpbixcbiAgICAgIG5hbWU6IGNvbnN0YW50cy5ORVRXT1JLX1JFU09VUkNFX1RZUEUsXG4gICAgICBuYW1lczoge1xuICAgICAgICBjYXBpdGFsOiAnTmV0d29yaycsXG4gICAgICAgIGNhcGl0YWxQbHVyYWw6ICdOZXR3b3JrcycsXG4gICAgICAgIGxvd2VyOiAnbmV0d29yaycsXG4gICAgICAgIGxvd2VyUGx1cmFsOiAnbmV0d29ya3MnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVNYXN0ZXJSZXNvdXJjZUFkYXB0ZXIoe1xuICAgIGJpbmFyeSxcbiAgICBwb3J0QWxsb2NhdG9yLFxuICB9OiBNYXN0ZXJSZXNvdXJjZUFkYXB0ZXJPcHRpb25zKTogUHJvbWlzZTxNYXN0ZXJSZXNvdXJjZUFkYXB0ZXI8TmV0d29yaywgTmV0d29ya1Jlc291cmNlT3B0aW9ucz4+IHtcbiAgICByZXR1cm4gbmV3IE1hc3Rlck5ldHdvcmtSZXNvdXJjZUFkYXB0ZXIoe1xuICAgICAgcmVzb3VyY2VUeXBlOiB0aGlzLFxuICAgICAgYmluYXJ5LFxuICAgICAgcG9ydEFsbG9jYXRvcixcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDUlVEKCk6IENSVUQ8TmV0d29yaywgTmV0d29ya1Jlc291cmNlT3B0aW9ucz4ge1xuICAgIHJldHVybiBuZXcgQ1JVRCh7XG4gICAgICByZXNvdXJjZVR5cGU6IHRoaXMsXG4gICAgICBzdGFydDogbmV3IFN0YXJ0TmV0d29ya0NSVUQoeyByZXNvdXJjZVR5cGU6IHRoaXMgfSksXG4gICAgICBzdG9wOiBuZXcgU3RvcENSVUQoe1xuICAgICAgICByZXNvdXJjZVR5cGU6IHRoaXMsXG4gICAgICAgIGFsaWFzZXM6IFsnc3RvcCBuZXQnXSxcbiAgICAgIH0pLFxuICAgICAgZGVsZXRlOiBuZXcgRGVsZXRlTmV0d29ya0NSVUQoeyByZXNvdXJjZVR5cGU6IHRoaXMgfSksXG4gICAgICBjcmVhdGU6IG5ldyBDcmVhdGVOZXR3b3JrQ1JVRCh7IHJlc291cmNlVHlwZTogdGhpcyB9KSxcbiAgICAgIGdldDogbmV3IEdldENSVUQoe1xuICAgICAgICByZXNvdXJjZVR5cGU6IHRoaXMsXG4gICAgICAgIGFsaWFzZXM6IFsnZ2V0IG5ldCddLFxuICAgICAgfSksXG4gICAgICBkZXNjcmliZTogbmV3IERlc2NyaWJlQ1JVRCh7XG4gICAgICAgIHJlc291cmNlVHlwZTogdGhpcyxcbiAgICAgICAgYWxpYXNlczogWydkZXNjcmliZSBuZXQnXSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldExpc3RUYWJsZShyZXNvdXJjZXM6IHJlYWRvbmx5IE5ldHdvcmtbXSk6IExpc3RUYWJsZSB7XG4gICAgcmV0dXJuIFtbJ05hbWUnLCAnVHlwZScsICdIZWlnaHQnLCAnTm9kZXMnXV0uY29uY2F0KFxuICAgICAgXy5zb3J0QnkocmVzb3VyY2VzLCAocmVzb3VyY2UpID0+IHJlc291cmNlLm5hbWUpLm1hcCgocmVzb3VyY2UpID0+IFtcbiAgICAgICAgcmVzb3VyY2UubmFtZSxcbiAgICAgICAgcmVzb3VyY2UudHlwZSxcbiAgICAgICAgcmVzb3VyY2UuaGVpZ2h0ID09PSB1bmRlZmluZWQgPyAnVW5rbm93bicgOiBgJHtyZXNvdXJjZS5oZWlnaHR9YCxcbiAgICAgICAgcmVzb3VyY2UucGVlcnMgPT09IHVuZGVmaW5lZCA/ICcwJyA6IGAke3Jlc291cmNlLnBlZXJzfWAsXG4gICAgICAgIGAke3Jlc291cmNlLm5vZGVzLmxlbmd0aH1gLFxuICAgICAgXSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZXNjcmliZVRhYmxlKHJlc291cmNlOiBOZXR3b3JrKTogRGVzY3JpYmVUYWJsZSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFsnTmFtZScsIHJlc291cmNlLm5hbWVdIGFzIGNvbnN0LFxuICAgICAgWydUeXBlJywgcmVzb3VyY2UudHlwZV0gYXMgY29uc3QsXG4gICAgICBbJ0hlaWdodCcsIHJlc291cmNlLmhlaWdodCA9PT0gdW5kZWZpbmVkID8gJ1Vua25vd24nIDogYCR7cmVzb3VyY2UuaGVpZ2h0fWBdIGFzIGNvbnN0LFxuICAgICAgW1xuICAgICAgICAnTm9kZXMnLFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2xpc3QnLFxuICAgICAgICAgIHRhYmxlOiBbWydOYW1lJywgJ0xpdmUnLCAnUmVhZHknLCAnUlBDJywgJ1RDUCcsICdUZWxlbWV0cnknLCAnSGVpZ2h0JywgJ1BlZXJzJ11dLmNvbmNhdChcbiAgICAgICAgICAgIF8uc29ydEJ5KHJlc291cmNlLm5vZGVzLCAobm9kZSkgPT4gbm9kZS5uYW1lKS5tYXAoKG5vZGUpID0+IFtcbiAgICAgICAgICAgICAgbm9kZS5uYW1lLFxuICAgICAgICAgICAgICBub2RlLmxpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgICAgIG5vZGUucmVhZHkgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgICAgIG5vZGUucnBjQWRkcmVzcyxcbiAgICAgICAgICAgICAgbm9kZS50Y3BBZGRyZXNzLFxuICAgICAgICAgICAgICBub2RlLnRlbGVtZXRyeUFkZHJlc3MsXG4gICAgICAgICAgICAgIHJlc291cmNlLmhlaWdodCA9PT0gdW5kZWZpbmVkID8gJ1Vua25vd24nIDogYCR7cmVzb3VyY2UuaGVpZ2h0fWAsXG4gICAgICAgICAgICAgIHJlc291cmNlLnBlZXJzID09PSB1bmRlZmluZWQgPyAnMCcgOiBgJHtyZXNvdXJjZS5wZWVyc31gLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIF0gYXMgY29uc3QsXG4gICAgXTtcbiAgfVxufVxuIl19