UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

37 lines (35 loc) 6.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../../constants"); const BuiltinInterface_1 = require("../BuiltinInterface"); const SysCallInstanceMemberPrimitive_1 = require("./SysCallInstanceMemberPrimitive"); const ValueFor_1 = require("./ValueFor"); const ValueInstanceOf_1 = require("./ValueInstanceOf"); class ContractInterface extends BuiltinInterface_1.BuiltinInterface { } class ContractConstructorInterface extends BuiltinInterface_1.BuiltinInterface { } exports.add = (builtins) => { builtins.addContractInterface('Contract', new ContractInterface()); builtins.addContractValue('Contract', new ValueInstanceOf_1.ValueInstanceOf('ContractConstructor', (sb) => sb.helpers.isContract)); builtins.addContractMember('Contract', 'script', new SysCallInstanceMemberPrimitive_1.SysCallInstanceMemberPrimitive('Neo.Contract.GetScript', constants_1.Types.Contract, constants_1.Types.Buffer)); builtins.addContractMember('Contract', 'payable', new SysCallInstanceMemberPrimitive_1.SysCallInstanceMemberPrimitive('Neo.Contract.IsPayable', constants_1.Types.Contract, constants_1.Types.Boolean)); builtins.addContractInterface('ContractConstructor', new ContractConstructorInterface()); builtins.addContractMember('ContractConstructor', 'for', new ValueFor_1.ValueFor('Neo.Blockchain.GetContract', (sb, node, options) => { sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'DUP'); sb.emitPushBuffer(node, Buffer.from([])); sb.emitOp(node, 'EQUAL'); }, whenTrue: () => { sb.emitOp(node, 'DROP'); sb.emitHelper(node, options, sb.helpers.wrapUndefined); }, whenFalse: () => { sb.emitHelper(node, options, sb.helpers.wrapContract); }, })); })); }; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0NBQXdDO0FBQ3hDLDBEQUF1RDtBQUV2RCxxRkFBa0Y7QUFDbEYseUNBQXNDO0FBQ3RDLHVEQUFvRDtBQUVwRCxNQUFNLGlCQUFrQixTQUFRLG1DQUFnQjtDQUFHO0FBQ25ELE1BQU0sNEJBQTZCLFNBQVEsbUNBQWdCO0NBQUc7QUFHakQsUUFBQSxHQUFHLEdBQUcsQ0FBQyxRQUFrQixFQUFRLEVBQUU7SUFDOUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxJQUFJLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNuRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksaUNBQWUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2pILFFBQVEsQ0FBQyxpQkFBaUIsQ0FDeEIsVUFBVSxFQUNWLFFBQVEsRUFDUixJQUFJLCtEQUE4QixDQUFDLHdCQUF3QixFQUFFLGlCQUFLLENBQUMsUUFBUSxFQUFFLGlCQUFLLENBQUMsTUFBTSxDQUFDLENBQzNGLENBQUM7SUFDRixRQUFRLENBQUMsaUJBQWlCLENBQ3hCLFVBQVUsRUFDVixTQUFTLEVBQ1QsSUFBSSwrREFBOEIsQ0FBQyx3QkFBd0IsRUFBRSxpQkFBSyxDQUFDLFFBQVEsRUFBRSxpQkFBSyxDQUFDLE9BQU8sQ0FBQyxDQUM1RixDQUFDO0lBRUYsUUFBUSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixFQUFFLElBQUksNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDeEIscUJBQXFCLEVBQ3JCLEtBQUssRUFDTCxJQUFJLG1CQUFRLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQy9ELEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNaLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBRWQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRXZCLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFekMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUNkLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hELENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9idWlsdGlucy9jb250cmFjdC9jb250cmFjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEJ1aWx0aW5JbnRlcmZhY2UgfSBmcm9tICcuLi9CdWlsdGluSW50ZXJmYWNlJztcbmltcG9ydCB7IEJ1aWx0aW5zIH0gZnJvbSAnLi4vQnVpbHRpbnMnO1xuaW1wb3J0IHsgU3lzQ2FsbEluc3RhbmNlTWVtYmVyUHJpbWl0aXZlIH0gZnJvbSAnLi9TeXNDYWxsSW5zdGFuY2VNZW1iZXJQcmltaXRpdmUnO1xuaW1wb3J0IHsgVmFsdWVGb3IgfSBmcm9tICcuL1ZhbHVlRm9yJztcbmltcG9ydCB7IFZhbHVlSW5zdGFuY2VPZiB9IGZyb20gJy4vVmFsdWVJbnN0YW5jZU9mJztcblxuY2xhc3MgQ29udHJhY3RJbnRlcmZhY2UgZXh0ZW5kcyBCdWlsdGluSW50ZXJmYWNlIHt9XG5jbGFzcyBDb250cmFjdENvbnN0cnVjdG9ySW50ZXJmYWNlIGV4dGVuZHMgQnVpbHRpbkludGVyZmFjZSB7fVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgZXhwb3J0LW5hbWVcbmV4cG9ydCBjb25zdCBhZGQgPSAoYnVpbHRpbnM6IEJ1aWx0aW5zKTogdm9pZCA9PiB7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0SW50ZXJmYWNlKCdDb250cmFjdCcsIG5ldyBDb250cmFjdEludGVyZmFjZSgpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RWYWx1ZSgnQ29udHJhY3QnLCBuZXcgVmFsdWVJbnN0YW5jZU9mKCdDb250cmFjdENvbnN0cnVjdG9yJywgKHNiKSA9PiBzYi5oZWxwZXJzLmlzQ29udHJhY3QpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RNZW1iZXIoXG4gICAgJ0NvbnRyYWN0JyxcbiAgICAnc2NyaXB0JyxcbiAgICBuZXcgU3lzQ2FsbEluc3RhbmNlTWVtYmVyUHJpbWl0aXZlKCdOZW8uQ29udHJhY3QuR2V0U2NyaXB0JywgVHlwZXMuQ29udHJhY3QsIFR5cGVzLkJ1ZmZlciksXG4gICk7XG4gIGJ1aWx0aW5zLmFkZENvbnRyYWN0TWVtYmVyKFxuICAgICdDb250cmFjdCcsXG4gICAgJ3BheWFibGUnLFxuICAgIG5ldyBTeXNDYWxsSW5zdGFuY2VNZW1iZXJQcmltaXRpdmUoJ05lby5Db250cmFjdC5Jc1BheWFibGUnLCBUeXBlcy5Db250cmFjdCwgVHlwZXMuQm9vbGVhbiksXG4gICk7XG5cbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RJbnRlcmZhY2UoJ0NvbnRyYWN0Q29uc3RydWN0b3InLCBuZXcgQ29udHJhY3RDb25zdHJ1Y3RvckludGVyZmFjZSgpKTtcbiAgYnVpbHRpbnMuYWRkQ29udHJhY3RNZW1iZXIoXG4gICAgJ0NvbnRyYWN0Q29uc3RydWN0b3InLFxuICAgICdmb3InLFxuICAgIG5ldyBWYWx1ZUZvcignTmVvLkJsb2NrY2hhaW4uR2V0Q29udHJhY3QnLCAoc2IsIG5vZGUsIG9wdGlvbnMpID0+IHtcbiAgICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICAgIG5vZGUsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHNiLmhlbHBlcnMuaWYoe1xuICAgICAgICAgIGNvbmRpdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgLy8gW2J1ZmZlciwgYnVmZmVyXVxuICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEVVAnKTtcbiAgICAgICAgICAgIC8vIFtidWZmZXIsIGJ1ZmZlciwgYnVmZmVyXVxuICAgICAgICAgICAgc2IuZW1pdFB1c2hCdWZmZXIobm9kZSwgQnVmZmVyLmZyb20oW10pKTtcbiAgICAgICAgICAgIC8vIFtib29sZWFuLCBidWZmZXJdXG4gICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0VRVUFMJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB3aGVuVHJ1ZTogKCkgPT4ge1xuICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMud3JhcFVuZGVmaW5lZCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB3aGVuRmFsc2U6ICgpID0+IHtcbiAgICAgICAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy53cmFwQ29udHJhY3QpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9KSxcbiAgKTtcbn07XG4iXX0=