@neo-one/server-plugin-compiler
Version:
NEO•ONE Server compiler plugin.
61 lines (59 loc) • 10.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const sortBy_1 = tslib_1.__importDefault(require("lodash/sortBy"));
const client_core_1 = require("@neo-one/client-core");
const server_plugin_1 = require("@neo-one/server-plugin");
const constants_1 = require("./constants");
const crud_1 = require("./crud");
const MasterContractResourceAdapter_1 = require("./MasterContractResourceAdapter");
class ContractResourceType extends server_plugin_1.ResourceType {
constructor({ plugin }) {
super({
plugin,
name: constants_1.constants.CONTRACT_RESOURCE_TYPE,
names: {
capital: 'Contract',
capitalPlural: 'Contracts',
lower: 'contract',
lowerPlural: 'contracts'
}
});
}
async createMasterResourceAdapter({ binary }) {
return new MasterContractResourceAdapter_1.MasterContractResourceAdapter({
resourceType: this,
binary
});
}
getCRUD() {
return new server_plugin_1.CRUD({
resourceType: this,
start: undefined,
stop: undefined,
create: new crud_1.CreateContractCRUD({
resourceType: this
}),
delete: new server_plugin_1.DeleteCRUD({
resourceType: this,
aliases: ['delete csc']
}),
get: new server_plugin_1.GetCRUD({
resourceType: this,
aliases: ['get csc']
}),
describe: new server_plugin_1.DescribeCRUD({
resourceType: this,
aliases: ['describe csc']
})
});
}
getListTable(resources) {
return [['Name', 'Smart Contract']].concat(sortBy_1.default(resources, resource => resource.name).map(resource => [resource.name, resource.avmPath]));
}
getDescribeTable(resource) {
return [['Name', resource.name], ['Smart Contract', resource.avmPath], ['Storage', resource.hasStorage ? 'Yes' : 'No'], ['Dynamic Invoke', resource.hasDynamicInvoke ? 'Yes' : 'No'], ['Payable', resource.payable ? 'Yes' : 'No'], ['ABI', JSON.stringify(resource.abi, undefined, 2)], ['Contract', `\n${client_core_1.disassembleByteCode(Buffer.from(resource.script, 'hex')).join('\n')}`]];
}
}
exports.ContractResourceType = ContractResourceType;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRyYWN0UmVzb3VyY2VUeXBlLnRzIl0sIm5hbWVzIjpbIkNvbnRyYWN0UmVzb3VyY2VUeXBlIiwiUmVzb3VyY2VUeXBlIiwicGx1Z2luIiwibmFtZSIsImNvbnN0YW50cyIsIkNPTlRSQUNUX1JFU09VUkNFX1RZUEUiLCJuYW1lcyIsImNhcGl0YWwiLCJjYXBpdGFsUGx1cmFsIiwibG93ZXIiLCJsb3dlclBsdXJhbCIsImNyZWF0ZU1hc3RlclJlc291cmNlQWRhcHRlciIsImJpbmFyeSIsIk1hc3RlckNvbnRyYWN0UmVzb3VyY2VBZGFwdGVyIiwicmVzb3VyY2VUeXBlIiwiZ2V0Q1JVRCIsIkNSVUQiLCJzdGFydCIsInVuZGVmaW5lZCIsInN0b3AiLCJjcmVhdGUiLCJDcmVhdGVDb250cmFjdENSVUQiLCJkZWxldGUiLCJEZWxldGVDUlVEIiwiYWxpYXNlcyIsImdldCIsIkdldENSVUQiLCJkZXNjcmliZSIsIkRlc2NyaWJlQ1JVRCIsImdldExpc3RUYWJsZSIsInJlc291cmNlcyIsImNvbmNhdCIsInJlc291cmNlIiwibWFwIiwiYXZtUGF0aCIsImdldERlc2NyaWJlVGFibGUiLCJoYXNTdG9yYWdlIiwiaGFzRHluYW1pY0ludm9rZSIsInBheWFibGUiLCJKU09OIiwic3RyaW5naWZ5IiwiYWJpIiwiZGlzYXNzZW1ibGVCeXRlQ29kZSIsIkJ1ZmZlciIsImZyb20iLCJzY3JpcHQiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBb0M7QUFDcEMsc0RBQUE7QUFDQSwwREFBQTtBQWNBLDJDQUFBO0FBQ0EsaUNBQUE7QUFDQSxtRkFBQTtBQXdCQSxNQUFhQSxvQkFBTixTQUFtQ0MsNEJBQW5DO0lBQ0wsWUFBbUIsRUFBRUMsTUFBQUEsRUFBckI7UUFDRSxLQUFBLENBQU07WUFDSkEsTUFESTtZQUVKQyxJQUFJLEVBQUVDLHFCQUFTLENBQUNDLHNCQUZaO1lBR0pDLEtBQUssRUFBRTtnQkFDTEMsT0FBTyxFQUFFLFVBREo7Z0JBRUxDLGFBQWEsRUFBRSxXQUZWO2dCQUdMQyxLQUFLLEVBQUUsVUFIRjtnQkFJTEMsV0FBVyxFQUFFLFdBQUE7YUFKUjtTQUhULENBQUEsQ0FBQTtJQVVELENBQUE7SUFFRCxLQUFBLENBQWFDLDJCQUFiLENBQXlDLEVBQ3ZDQyxNQUFBQSxFQURGO1FBR0UsT0FBTyxJQUFJQyw2REFBSixDQUFrQztZQUN2Q0MsWUFBWSxFQUFFLElBRHlCO1lBRXZDRixNQUFBQTtTQUZLLENBQVAsQ0FBQTtJQUlELENBQUE7SUFFTUcsT0FBUDtRQUNFLE9BQU8sSUFBSUMsb0JBQUosQ0FBUztZQUNkRixZQUFZLEVBQUUsSUFEQTtZQUVkRyxLQUFLLEVBQUVDLFNBRk87WUFHZEMsSUFBSSxFQUFFRCxTQUhRO1lBSWRFLE1BQU0sRUFBRSxJQUFJQyx5QkFBSixDQUF1QjtnQkFBRVAsWUFBWSxFQUFFLElBQUE7YUFBdkMsQ0FKTTtZQUtkUSxNQUFNLEVBQUUsSUFBSUMsMEJBQUosQ0FBZTtnQkFDckJULFlBQVksRUFBRSxJQURPO2dCQUVyQlUsT0FBTyxFQUFFLENBQUMsWUFBRCxDQUFBO2FBRkgsQ0FMTTtZQVNkQyxHQUFHLEVBQUUsSUFBSUMsdUJBQUosQ0FBWTtnQkFDZlosWUFBWSxFQUFFLElBREM7Z0JBRWZVLE9BQU8sRUFBRSxDQUFDLFNBQUQsQ0FBQTthQUZOLENBVFM7WUFhZEcsUUFBUSxFQUFFLElBQUlDLDRCQUFKLENBQWlCO2dCQUN6QmQsWUFBWSxFQUFFLElBRFc7Z0JBRXpCVSxPQUFPLEVBQUUsQ0FBQyxjQUFELENBQUE7YUFGRCxDQUFBO1NBYkwsQ0FBUCxDQUFBO0lBa0JELENBQUE7SUFFTUssWUFBUCxDQUFvQkMsU0FBcEI7UUFDRSxPQUFPLENBQUMsQ0FBQyxNQUFELEVBQVMsZ0JBQVQsQ0FBRCxDQUFBLENBQTZCQyxNQUE3QixDQUNMLGdCQUFBLENBQVNELFNBQVQsRUFBcUJFLFFBQUQsQ0FBQSxFQUFBLENBQWNBLFFBQVEsQ0FBQzdCLElBQTNDLENBQUEsQ0FBaUQ4QixHQUFqRCxDQUFzREQsUUFBRCxDQUFBLEVBQUEsQ0FBYyxDQUFDQSxRQUFRLENBQUM3QixJQUFWLEVBQWdCNkIsUUFBUSxDQUFDRSxPQUF6QixDQUFuRSxDQURLLENBQVAsQ0FBQTtJQUdELENBQUE7SUFFTUMsZ0JBQVAsQ0FBd0JILFFBQXhCO1FBQ0UsT0FBTyxDQUNMLENBQUMsTUFBRCxFQUFTQSxRQUFRLENBQUM3QixJQUFsQixDQURLLEVBRUwsQ0FBQyxnQkFBRCxFQUFtQjZCLFFBQVEsQ0FBQ0UsT0FBNUIsQ0FGSyxFQUdMLENBQUMsU0FBRCxFQUFZRixRQUFRLENBQUNJLFVBQVQsQ0FBQSxDQUFBLENBQXNCLEtBQXRCLENBQUEsQ0FBQSxDQUE4QixJQUExQyxDQUhLLEVBSUwsQ0FBQyxnQkFBRCxFQUFtQkosUUFBUSxDQUFDSyxnQkFBVCxDQUFBLENBQUEsQ0FBNEIsS0FBNUIsQ0FBQSxDQUFBLENBQW9DLElBQXZELENBSkssRUFLTCxDQUFDLFNBQUQsRUFBWUwsUUFBUSxDQUFDTSxPQUFULENBQUEsQ0FBQSxDQUFtQixLQUFuQixDQUFBLENBQUEsQ0FBMkIsSUFBdkMsQ0FMSyxFQU1MLENBQUMsS0FBRCxFQUFRQyxJQUFJLENBQUNDLFNBQUwsQ0FBZVIsUUFBUSxDQUFDUyxHQUF4QixFQUE2QnZCLFNBQTdCLEVBQXdDLENBQXhDLENBQVIsQ0FOSyxFQU9MLENBQUMsVUFBRCxFQUFjLEtBQUl3QixpQ0FBbUIsQ0FBQ0MsTUFBTSxDQUFDQyxJQUFQLENBQVlaLFFBQVEsQ0FBQ2EsTUFBckIsRUFBNkIsS0FBN0IsQ0FBRCxDQUFuQixDQUF5REMsSUFBekQsQ0FBOEQsSUFBOUQsQ0FBb0UsRUFBdEYsQ0FQSyxDQUFQLENBQUE7SUFTRCxDQUFBO0NBNUR1RjtBQUExRixvREFBMEYiLCJmaWxlIjoibmVvLW9uZS1zZXJ2ZXItcGx1Z2luLWNvbXBpbGVyL3NyYy9Db250cmFjdFJlc291cmNlVHlwZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCSSB9IGZyb20gJ0BuZW8tb25lL2NsaWVudCc7XG5pbXBvcnQgeyBkaXNhc3NlbWJsZUJ5dGVDb2RlIH0gZnJvbSAnQG5lby1vbmUvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHtcbiAgQ1JVRCxcbiAgRGVsZXRlQ1JVRCxcbiAgRGVzY3JpYmVDUlVELFxuICBEZXNjcmliZVRhYmxlLFxuICBHZXRDUlVELFxuICBMaXN0VGFibGUsXG4gIE1hc3RlclJlc291cmNlQWRhcHRlcixcbiAgTWFzdGVyUmVzb3VyY2VBZGFwdGVyT3B0aW9ucyxcbiAgUmVzb3VyY2VTdGF0ZSxcbiAgUmVzb3VyY2VUeXBlLFxufSBmcm9tICdAbmVvLW9uZS9zZXJ2ZXItcGx1Z2luJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDb21waWxlclBsdWdpbiB9IGZyb20gJy4vQ29tcGlsZXJQbHVnaW4nO1xuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ3JlYXRlQ29udHJhY3RDUlVEIH0gZnJvbSAnLi9jcnVkJztcbmltcG9ydCB7IE1hc3RlckNvbnRyYWN0UmVzb3VyY2VBZGFwdGVyIH0gZnJvbSAnLi9NYXN0ZXJDb250cmFjdFJlc291cmNlQWRhcHRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3Qge1xuICByZWFkb25seSBwbHVnaW46IHN0cmluZztcbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYmFzZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdGU6IFJlc291cmNlU3RhdGU7XG4gIHJlYWRvbmx5IGF2bVBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgc2NyaXB0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFiaTogQUJJO1xuICByZWFkb25seSBoYXNTdG9yYWdlOiBib29sZWFuO1xuICByZWFkb25seSBoYXNEeW5hbWljSW52b2tlOiBib29sZWFuO1xuICByZWFkb25seSBwYXlhYmxlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYWN0UmVzb3VyY2VPcHRpb25zIHtcbiAgcmVhZG9ubHkgc2NQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBhYmk/OiBBQkk7XG4gIHJlYWRvbmx5IGhhc1N0b3JhZ2U/OiBib29sZWFuO1xuICByZWFkb25seSBoYXNEeW5hbWljSW52b2tlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGF5YWJsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBDb250cmFjdFJlc291cmNlVHlwZSBleHRlbmRzIFJlc291cmNlVHlwZTxDb250cmFjdCwgQ29udHJhY3RSZXNvdXJjZU9wdGlvbnM+IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHsgcGx1Z2luIH06IHsgcmVhZG9ubHkgcGx1Z2luOiBDb21waWxlclBsdWdpbiB9KSB7XG4gICAgc3VwZXIoe1xuICAgICAgcGx1Z2luLFxuICAgICAgbmFtZTogY29uc3RhbnRzLkNPTlRSQUNUX1JFU09VUkNFX1RZUEUsXG4gICAgICBuYW1lczoge1xuICAgICAgICBjYXBpdGFsOiAnQ29udHJhY3QnLFxuICAgICAgICBjYXBpdGFsUGx1cmFsOiAnQ29udHJhY3RzJyxcbiAgICAgICAgbG93ZXI6ICdjb250cmFjdCcsXG4gICAgICAgIGxvd2VyUGx1cmFsOiAnY29udHJhY3RzJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlTWFzdGVyUmVzb3VyY2VBZGFwdGVyKHtcbiAgICBiaW5hcnksXG4gIH06IE1hc3RlclJlc291cmNlQWRhcHRlck9wdGlvbnMpOiBQcm9taXNlPE1hc3RlclJlc291cmNlQWRhcHRlcjxDb250cmFjdCwgQ29udHJhY3RSZXNvdXJjZU9wdGlvbnM+PiB7XG4gICAgcmV0dXJuIG5ldyBNYXN0ZXJDb250cmFjdFJlc291cmNlQWRhcHRlcih7XG4gICAgICByZXNvdXJjZVR5cGU6IHRoaXMsXG4gICAgICBiaW5hcnksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q1JVRCgpOiBDUlVEPENvbnRyYWN0LCBDb250cmFjdFJlc291cmNlT3B0aW9ucz4ge1xuICAgIHJldHVybiBuZXcgQ1JVRCh7XG4gICAgICByZXNvdXJjZVR5cGU6IHRoaXMsXG4gICAgICBzdGFydDogdW5kZWZpbmVkLFxuICAgICAgc3RvcDogdW5kZWZpbmVkLFxuICAgICAgY3JlYXRlOiBuZXcgQ3JlYXRlQ29udHJhY3RDUlVEKHsgcmVzb3VyY2VUeXBlOiB0aGlzIH0pLFxuICAgICAgZGVsZXRlOiBuZXcgRGVsZXRlQ1JVRCh7XG4gICAgICAgIHJlc291cmNlVHlwZTogdGhpcyxcbiAgICAgICAgYWxpYXNlczogWydkZWxldGUgY3NjJ10sXG4gICAgICB9KSxcbiAgICAgIGdldDogbmV3IEdldENSVUQoe1xuICAgICAgICByZXNvdXJjZVR5cGU6IHRoaXMsXG4gICAgICAgIGFsaWFzZXM6IFsnZ2V0IGNzYyddLFxuICAgICAgfSksXG4gICAgICBkZXNjcmliZTogbmV3IERlc2NyaWJlQ1JVRCh7XG4gICAgICAgIHJlc291cmNlVHlwZTogdGhpcyxcbiAgICAgICAgYWxpYXNlczogWydkZXNjcmliZSBjc2MnXSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldExpc3RUYWJsZShyZXNvdXJjZXM6IFJlYWRvbmx5QXJyYXk8Q29udHJhY3Q+KTogTGlzdFRhYmxlIHtcbiAgICByZXR1cm4gW1snTmFtZScsICdTbWFydCBDb250cmFjdCddXS5jb25jYXQoXG4gICAgICBfLnNvcnRCeShyZXNvdXJjZXMsIChyZXNvdXJjZSkgPT4gcmVzb3VyY2UubmFtZSkubWFwKChyZXNvdXJjZSkgPT4gW3Jlc291cmNlLm5hbWUsIHJlc291cmNlLmF2bVBhdGhdKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldERlc2NyaWJlVGFibGUocmVzb3VyY2U6IENvbnRyYWN0KTogRGVzY3JpYmVUYWJsZSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFsnTmFtZScsIHJlc291cmNlLm5hbWVdLFxuICAgICAgWydTbWFydCBDb250cmFjdCcsIHJlc291cmNlLmF2bVBhdGhdLFxuICAgICAgWydTdG9yYWdlJywgcmVzb3VyY2UuaGFzU3RvcmFnZSA/ICdZZXMnIDogJ05vJ10sXG4gICAgICBbJ0R5bmFtaWMgSW52b2tlJywgcmVzb3VyY2UuaGFzRHluYW1pY0ludm9rZSA/ICdZZXMnIDogJ05vJ10sXG4gICAgICBbJ1BheWFibGUnLCByZXNvdXJjZS5wYXlhYmxlID8gJ1llcycgOiAnTm8nXSxcbiAgICAgIFsnQUJJJywgSlNPTi5zdHJpbmdpZnkocmVzb3VyY2UuYWJpLCB1bmRlZmluZWQsIDIpXSxcbiAgICAgIFsnQ29udHJhY3QnLCBgXFxuJHtkaXNhc3NlbWJsZUJ5dGVDb2RlKEJ1ZmZlci5mcm9tKHJlc291cmNlLnNjcmlwdCwgJ2hleCcpKS5qb2luKCdcXG4nKX1gXSxcbiAgICBdO1xuICB9XG59XG4iXX0=