UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

73 lines (71 loc) 12.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var BuiltinType; (function (BuiltinType) { BuiltinType["Value"] = "Value"; BuiltinType["ValueObject"] = "ValueObject"; BuiltinType["MemberValue"] = "MemberValue"; BuiltinType["InstanceMemberValue"] = "InstanceMemberValue"; BuiltinType["Call"] = "Call"; BuiltinType["MemberCall"] = "MemberCall"; BuiltinType["InstanceMemberCall"] = "InstanceMemberCall"; BuiltinType["Template"] = "Template"; BuiltinType["MemberTemplate"] = "MemberTemplate"; BuiltinType["InstanceMemberTemplate"] = "InstanceMemberTemplate"; BuiltinType["InstanceOf"] = "InstanceOf"; BuiltinType["Interface"] = "Interface"; BuiltinType["New"] = "New"; })(BuiltinType = exports.BuiltinType || (exports.BuiltinType = {})); function isBuiltinInterface(value) { return value.types.has(BuiltinType.Interface); } exports.isBuiltinInterface = isBuiltinInterface; function isBuiltinValue(value) { return value.types.has(BuiltinType.Value); } exports.isBuiltinValue = isBuiltinValue; function isBuiltinMemberValue(value) { return value.types.has(BuiltinType.MemberValue); } exports.isBuiltinMemberValue = isBuiltinMemberValue; function isBuiltinInstanceMemberValue(value) { return value.types.has(BuiltinType.InstanceMemberValue); } exports.isBuiltinInstanceMemberValue = isBuiltinInstanceMemberValue; function isBuiltinCall(value) { return value.types.has(BuiltinType.Call); } exports.isBuiltinCall = isBuiltinCall; function isBuiltinTemplate(value) { return value.types.has(BuiltinType.Template); } exports.isBuiltinTemplate = isBuiltinTemplate; function isBuiltinMemberTemplate(value) { return value.types.has(BuiltinType.MemberTemplate); } exports.isBuiltinMemberTemplate = isBuiltinMemberTemplate; function isBuiltinInstanceMemberTemplate(value) { return value.types.has(BuiltinType.InstanceMemberTemplate); } exports.isBuiltinInstanceMemberTemplate = isBuiltinInstanceMemberTemplate; function isBuiltinMemberCall(value) { return value.types.has(BuiltinType.MemberCall); } exports.isBuiltinMemberCall = isBuiltinMemberCall; function isBuiltinInstanceMemberCall(value) { return value.types.has(BuiltinType.InstanceMemberCall); } exports.isBuiltinInstanceMemberCall = isBuiltinInstanceMemberCall; function isBuiltinInstanceOf(value) { return value.types.has(BuiltinType.InstanceOf); } exports.isBuiltinInstanceOf = isBuiltinInstanceOf; function isBuiltinNew(value) { return value.types.has(BuiltinType.New); } exports.isBuiltinNew = isBuiltinNew; function isBuiltinValueObject(value) { return value.types.has(BuiltinType.ValueObject); } exports.isBuiltinValueObject = isBuiltinValueObject; //# sourceMappingURL=data:application/json;charset=utf8;base64,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LEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRkQsb0RBRUMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9idWlsdGlucy90eXBlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBlbnVtIEJ1aWx0aW5UeXBlIHtcbiAgVmFsdWUgPSAnVmFsdWUnLFxuICBWYWx1ZU9iamVjdCA9ICdWYWx1ZU9iamVjdCcsXG4gIE1lbWJlclZhbHVlID0gJ01lbWJlclZhbHVlJyxcbiAgSW5zdGFuY2VNZW1iZXJWYWx1ZSA9ICdJbnN0YW5jZU1lbWJlclZhbHVlJyxcbiAgQ2FsbCA9ICdDYWxsJyxcbiAgTWVtYmVyQ2FsbCA9ICdNZW1iZXJDYWxsJyxcbiAgSW5zdGFuY2VNZW1iZXJDYWxsID0gJ0luc3RhbmNlTWVtYmVyQ2FsbCcsXG4gIFRlbXBsYXRlID0gJ1RlbXBsYXRlJyxcbiAgTWVtYmVyVGVtcGxhdGUgPSAnTWVtYmVyVGVtcGxhdGUnLFxuICBJbnN0YW5jZU1lbWJlclRlbXBsYXRlID0gJ0luc3RhbmNlTWVtYmVyVGVtcGxhdGUnLFxuICBJbnN0YW5jZU9mID0gJ0luc3RhbmNlT2YnLFxuICBJbnRlcmZhY2UgPSAnSW50ZXJmYWNlJyxcbiAgTmV3ID0gJ05ldycsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbHRpbiB7XG4gIHJlYWRvbmx5IHR5cGVzOiBTZXQ8QnVpbHRpblR5cGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5JbnRlcmZhY2UgZXh0ZW5kcyBCdWlsdGluIHtcbiAgcmVhZG9ubHkgY2FuSW1wbGVtZW50OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWlsdGluSW50ZXJmYWNlKHZhbHVlOiBCdWlsdGluKTogdmFsdWUgaXMgQnVpbHRpbkludGVyZmFjZSB7XG4gIHJldHVybiB2YWx1ZS50eXBlcy5oYXMoQnVpbHRpblR5cGUuSW50ZXJmYWNlKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVmFsdWUgZXh0ZW5kcyBCdWlsdGluIHtcbiAgcmVhZG9ubHkgZW1pdFZhbHVlOiAoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLklkZW50aWZpZXIsIG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVpbHRpblZhbHVlKHZhbHVlOiBCdWlsdGluKTogdmFsdWUgaXMgQnVpbHRpblZhbHVlIHtcbiAgcmV0dXJuIHZhbHVlLnR5cGVzLmhhcyhCdWlsdGluVHlwZS5WYWx1ZSk7XG59XG5cbmV4cG9ydCB0eXBlIE1lbWJlckxpa2VFeHByZXNzaW9uID0gdHMuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHwgdHMuRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24gfCB0cy5CaW5kaW5nRWxlbWVudDtcbmV4cG9ydCBpbnRlcmZhY2UgQnVpbHRpbk1lbWJlclZhbHVlIGV4dGVuZHMgQnVpbHRpbiB7XG4gIHJlYWRvbmx5IGVtaXRWYWx1ZTogKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiBNZW1iZXJMaWtlRXhwcmVzc2lvbiwgb3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWlsdGluTWVtYmVyVmFsdWUodmFsdWU6IEJ1aWx0aW4pOiB2YWx1ZSBpcyBCdWlsdGluTWVtYmVyVmFsdWUge1xuICByZXR1cm4gdmFsdWUudHlwZXMuaGFzKEJ1aWx0aW5UeXBlLk1lbWJlclZhbHVlKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluSW5zdGFuY2VNZW1iZXJWYWx1ZSBleHRlbmRzIEJ1aWx0aW4ge1xuICByZWFkb25seSBlbWl0VmFsdWU6IChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogTWVtYmVyTGlrZUV4cHJlc3Npb24sIG9wdGlvbnM6IFZpc2l0T3B0aW9ucywgdmlzaXRlZDogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVpbHRpbkluc3RhbmNlTWVtYmVyVmFsdWUodmFsdWU6IEJ1aWx0aW4pOiB2YWx1ZSBpcyBCdWlsdGluSW5zdGFuY2VNZW1iZXJWYWx1ZSB7XG4gIHJldHVybiB2YWx1ZS50eXBlcy5oYXMoQnVpbHRpblR5cGUuSW5zdGFuY2VNZW1iZXJWYWx1ZSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbHRpbkNhbGwgZXh0ZW5kcyBCdWlsdGluIHtcbiAgcmVhZG9ubHkgZW1pdENhbGw6IChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuQ2FsbEV4cHJlc3Npb24sIG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVpbHRpbkNhbGwodmFsdWU6IEJ1aWx0aW4pOiB2YWx1ZSBpcyBCdWlsdGluQ2FsbCB7XG4gIHJldHVybiB2YWx1ZS50eXBlcy5oYXMoQnVpbHRpblR5cGUuQ2FsbCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbHRpblRlbXBsYXRlIGV4dGVuZHMgQnVpbHRpbiB7XG4gIHJlYWRvbmx5IGVtaXRDYWxsOiAoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbiwgb3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWlsdGluVGVtcGxhdGUodmFsdWU6IEJ1aWx0aW4pOiB2YWx1ZSBpcyBCdWlsdGluVGVtcGxhdGUge1xuICByZXR1cm4gdmFsdWUudHlwZXMuaGFzKEJ1aWx0aW5UeXBlLlRlbXBsYXRlKTtcbn1cblxuZXhwb3J0IHR5cGUgQ2FsbE1lbWJlckxpa2VFeHByZXNzaW9uID0gdHMuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIHwgdHMuRWxlbWVudEFjY2Vzc0V4cHJlc3Npb247XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5NZW1iZXJUZW1wbGF0ZSBleHRlbmRzIEJ1aWx0aW4ge1xuICByZWFkb25seSBlbWl0Q2FsbDogKFxuICAgIHNiOiBTY3JpcHRCdWlsZGVyLFxuICAgIGZ1bmM6IENhbGxNZW1iZXJMaWtlRXhwcmVzc2lvbixcbiAgICBub2RlOiB0cy5UYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24sXG4gICAgb3B0aW9uczogVmlzaXRPcHRpb25zLFxuICApID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWx0aW5NZW1iZXJUZW1wbGF0ZSh2YWx1ZTogQnVpbHRpbik6IHZhbHVlIGlzIEJ1aWx0aW5NZW1iZXJUZW1wbGF0ZSB7XG4gIHJldHVybiB2YWx1ZS50eXBlcy5oYXMoQnVpbHRpblR5cGUuTWVtYmVyVGVtcGxhdGUpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5JbnN0YW5jZU1lbWJlclRlbXBsYXRlIGV4dGVuZHMgQnVpbHRpbiB7XG4gIHJlYWRvbmx5IGNhbkNhbGw6IChcbiAgICBzYjogU2NyaXB0QnVpbGRlcixcbiAgICBmdW5jOiBDYWxsTWVtYmVyTGlrZUV4cHJlc3Npb24sXG4gICAgbm9kZTogdHMuVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uLFxuICAgIG9wdGlvbnM6IFZpc2l0T3B0aW9ucyxcbiAgKSA9PiBib29sZWFuO1xuICByZWFkb25seSBlbWl0Q2FsbDogKFxuICAgIHNiOiBTY3JpcHRCdWlsZGVyLFxuICAgIGZ1bmM6IENhbGxNZW1iZXJMaWtlRXhwcmVzc2lvbixcbiAgICBub2RlOiB0cy5UYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24sXG4gICAgb3B0aW9uczogVmlzaXRPcHRpb25zLFxuICAgIHZpc2l0ZWQ6IGJvb2xlYW4sXG4gICkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVpbHRpbkluc3RhbmNlTWVtYmVyVGVtcGxhdGUodmFsdWU6IEJ1aWx0aW4pOiB2YWx1ZSBpcyBCdWlsdGluSW5zdGFuY2VNZW1iZXJUZW1wbGF0ZSB7XG4gIHJldHVybiB2YWx1ZS50eXBlcy5oYXMoQnVpbHRpblR5cGUuSW5zdGFuY2VNZW1iZXJUZW1wbGF0ZSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbHRpbk1lbWJlckNhbGwgZXh0ZW5kcyBCdWlsdGluIHtcbiAgcmVhZG9ubHkgZW1pdENhbGw6IChcbiAgICBzYjogU2NyaXB0QnVpbGRlcixcbiAgICBmdW5jOiBDYWxsTWVtYmVyTGlrZUV4cHJlc3Npb24sXG4gICAgbm9kZTogdHMuQ2FsbEV4cHJlc3Npb24sXG4gICAgb3B0aW9uczogVmlzaXRPcHRpb25zLFxuICApID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWx0aW5NZW1iZXJDYWxsKHZhbHVlOiBCdWlsdGluKTogdmFsdWUgaXMgQnVpbHRpbk1lbWJlckNhbGwge1xuICByZXR1cm4gdmFsdWUudHlwZXMuaGFzKEJ1aWx0aW5UeXBlLk1lbWJlckNhbGwpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5JbnN0YW5jZU1lbWJlckNhbGwgZXh0ZW5kcyBCdWlsdGluIHtcbiAgcmVhZG9ubHkgY2FuQ2FsbDogKFxuICAgIHNiOiBTY3JpcHRCdWlsZGVyLFxuICAgIGZ1bmM6IENhbGxNZW1iZXJMaWtlRXhwcmVzc2lvbixcbiAgICBub2RlOiB0cy5DYWxsRXhwcmVzc2lvbixcbiAgICBvcHRpb25zOiBWaXNpdE9wdGlvbnMsXG4gICkgPT4gYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW1pdENhbGw6IChcbiAgICBzYjogU2NyaXB0QnVpbGRlcixcbiAgICBmdW5jOiBDYWxsTWVtYmVyTGlrZUV4cHJlc3Npb24sXG4gICAgbm9kZTogdHMuQ2FsbEV4cHJlc3Npb24sXG4gICAgb3B0aW9uczogVmlzaXRPcHRpb25zLFxuICAgIHZpc2l0ZWQ6IGJvb2xlYW4sXG4gICkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVpbHRpbkluc3RhbmNlTWVtYmVyQ2FsbCh2YWx1ZTogQnVpbHRpbik6IHZhbHVlIGlzIEJ1aWx0aW5JbnN0YW5jZU1lbWJlckNhbGwge1xuICByZXR1cm4gdmFsdWUudHlwZXMuaGFzKEJ1aWx0aW5UeXBlLkluc3RhbmNlTWVtYmVyQ2FsbCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbHRpbkluc3RhbmNlT2YgZXh0ZW5kcyBCdWlsdGluIHtcbiAgcmVhZG9ubHkgZW1pdEluc3RhbmNlT2Y6IChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuRXhwcmVzc2lvbiwgb3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWlsdGluSW5zdGFuY2VPZih2YWx1ZTogQnVpbHRpbik6IHZhbHVlIGlzIEJ1aWx0aW5JbnN0YW5jZU9mIHtcbiAgcmV0dXJuIHZhbHVlLnR5cGVzLmhhcyhCdWlsdGluVHlwZS5JbnN0YW5jZU9mKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluTmV3IGV4dGVuZHMgQnVpbHRpbkluc3RhbmNlT2Yge1xuICByZWFkb25seSBlbWl0TmV3OiAoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5ld0V4cHJlc3Npb24sIG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVpbHRpbk5ldyh2YWx1ZTogQnVpbHRpbik6IHZhbHVlIGlzIEJ1aWx0aW5OZXcge1xuICByZXR1cm4gdmFsdWUudHlwZXMuaGFzKEJ1aWx0aW5UeXBlLk5ldyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbHRpblZhbHVlT2JqZWN0IGV4dGVuZHMgQnVpbHRpbiB7XG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVpbHRpblZhbHVlT2JqZWN0KHZhbHVlOiBCdWlsdGluKTogdmFsdWUgaXMgQnVpbHRpblZhbHVlT2JqZWN0IHtcbiAgcmV0dXJuIHZhbHVlLnR5cGVzLmhhcyhCdWlsdGluVHlwZS5WYWx1ZU9iamVjdCk7XG59XG4iXX0=