UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

72 lines (70 loc) 9.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const BuiltinInstanceOf_1 = require("../BuiltinInstanceOf"); const BuiltinInterface_1 = require("../BuiltinInterface"); const concat_1 = require("./concat"); const entries_1 = require("./entries"); const every_1 = require("./every"); const filter_1 = require("./filter"); const forEach_1 = require("./forEach"); const iterator_1 = require("./iterator"); const join_1 = require("./join"); const length_1 = require("./length"); const map_1 = require("./map"); const pop_1 = require("./pop"); const push_1 = require("./push"); const reduce_1 = require("./reduce"); const slice_1 = require("./slice"); const some_1 = require("./some"); const toString_1 = require("./toString"); class ArrayInterface extends BuiltinInterface_1.BuiltinInterface { } class ReadonlyArrayInterface extends BuiltinInterface_1.BuiltinInterface { } class ArrayValue extends BuiltinInstanceOf_1.BuiltinInstanceOf { constructor() { super(...arguments); this.type = 'ArrayConstructor'; } emitInstanceOf(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.visit(node, options); if (optionsIn.pushValue) { sb.emitHelper(node, options, sb.helpers.isArray); sb.emitHelper(node, options, sb.helpers.wrapBoolean); } else { sb.emitOp(node, 'DROP'); } } } class ArrayConstructorInterface extends BuiltinInterface_1.BuiltinInterface { } const COMMON = [ ['filter', new filter_1.ArrayFilter()], ['forEach', new forEach_1.ArrayForEach()], ['__@iterator', new iterator_1.ArrayIterator()], ['length', new length_1.ArrayLength()], ['map', new map_1.ArrayMap()], ['reduce', new reduce_1.ArrayReduce()], ['toString', new toString_1.ArrayToString()], ['concat', new concat_1.ArrayConcat()], ['join', new join_1.ArrayJoin()], ['slice', new slice_1.ArraySlice()], ['some', new some_1.ArraySome()], ['every', new every_1.ArrayEvery()], ['entries', new entries_1.ArrayEntries()], ]; exports.add = (builtins) => { builtins.addInterface('Array', new ArrayInterface()); builtins.addInterface('ReadonlyArray', new ReadonlyArrayInterface()); builtins.addValue('Array', new ArrayValue()); COMMON.forEach(([name, builtin]) => { builtins.addGlobalMember('Array', name, builtin); builtins.addGlobalMember('ReadonlyArray', name, builtin); }); builtins.addGlobalMember('Array', 'pop', new pop_1.ArrayPop()); builtins.addGlobalMember('Array', 'push', new push_1.ArrayPush()); builtins.addInterface('ArrayConstructor', new ArrayConstructorInterface()); }; //# sourceMappingURL=data:application/json;charset=utf8;base64,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LE9BQU8sQ0FBQyxDQUFDO1FBQ2pELFFBQVEsQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLGNBQVEsRUFBRSxDQUFDLENBQUM7SUFDekQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksZ0JBQVMsRUFBRSxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLHlCQUF5QixFQUFFLENBQUMsQ0FBQztBQUM3RSxDQUFDLENBQUMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9idWlsdGlucy9hcnJheS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCdWlsdGluSW5zdGFuY2VPZiB9IGZyb20gJy4uL0J1aWx0aW5JbnN0YW5jZU9mJztcbmltcG9ydCB7IEJ1aWx0aW5JbnRlcmZhY2UgfSBmcm9tICcuLi9CdWlsdGluSW50ZXJmYWNlJztcbmltcG9ydCB7IEJ1aWx0aW5zIH0gZnJvbSAnLi4vQnVpbHRpbnMnO1xuaW1wb3J0IHsgQnVpbHRpbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEFycmF5Q29uY2F0IH0gZnJvbSAnLi9jb25jYXQnO1xuaW1wb3J0IHsgQXJyYXlFbnRyaWVzIH0gZnJvbSAnLi9lbnRyaWVzJztcbmltcG9ydCB7IEFycmF5RXZlcnkgfSBmcm9tICcuL2V2ZXJ5JztcbmltcG9ydCB7IEFycmF5RmlsdGVyIH0gZnJvbSAnLi9maWx0ZXInO1xuaW1wb3J0IHsgQXJyYXlGb3JFYWNoIH0gZnJvbSAnLi9mb3JFYWNoJztcbmltcG9ydCB7IEFycmF5SXRlcmF0b3IgfSBmcm9tICcuL2l0ZXJhdG9yJztcbmltcG9ydCB7IEFycmF5Sm9pbiB9IGZyb20gJy4vam9pbic7XG5pbXBvcnQgeyBBcnJheUxlbmd0aCB9IGZyb20gJy4vbGVuZ3RoJztcbmltcG9ydCB7IEFycmF5TWFwIH0gZnJvbSAnLi9tYXAnO1xuaW1wb3J0IHsgQXJyYXlQb3AgfSBmcm9tICcuL3BvcCc7XG5pbXBvcnQgeyBBcnJheVB1c2ggfSBmcm9tICcuL3B1c2gnO1xuaW1wb3J0IHsgQXJyYXlSZWR1Y2UgfSBmcm9tICcuL3JlZHVjZSc7XG5pbXBvcnQgeyBBcnJheVNsaWNlIH0gZnJvbSAnLi9zbGljZSc7XG5pbXBvcnQgeyBBcnJheVNvbWUgfSBmcm9tICcuL3NvbWUnO1xuaW1wb3J0IHsgQXJyYXlUb1N0cmluZyB9IGZyb20gJy4vdG9TdHJpbmcnO1xuXG5jbGFzcyBBcnJheUludGVyZmFjZSBleHRlbmRzIEJ1aWx0aW5JbnRlcmZhY2Uge31cbmNsYXNzIFJlYWRvbmx5QXJyYXlJbnRlcmZhY2UgZXh0ZW5kcyBCdWlsdGluSW50ZXJmYWNlIHt9XG5jbGFzcyBBcnJheVZhbHVlIGV4dGVuZHMgQnVpbHRpbkluc3RhbmNlT2Yge1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdBcnJheUNvbnN0cnVjdG9yJztcbiAgcHVibGljIGVtaXRJbnN0YW5jZU9mKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5FeHByZXNzaW9uLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG4gICAgLy8gW3ZhbF1cbiAgICBzYi52aXNpdChub2RlLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9uc0luLnB1c2hWYWx1ZSkge1xuICAgICAgLy8gW2Jvb2xlYW5dXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuaXNBcnJheSk7XG4gICAgICAvLyBbdmFsXVxuICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLndyYXBCb29sZWFuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gW11cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICB9XG4gIH1cbn1cbmNsYXNzIEFycmF5Q29uc3RydWN0b3JJbnRlcmZhY2UgZXh0ZW5kcyBCdWlsdGluSW50ZXJmYWNlIHt9XG5cbmNvbnN0IENPTU1PTjogUmVhZG9ubHlBcnJheTxyZWFkb25seSBbc3RyaW5nLCBCdWlsdGluXT4gPSBbXG4gIFsnZmlsdGVyJywgbmV3IEFycmF5RmlsdGVyKCldIGFzIGNvbnN0LFxuICBbJ2ZvckVhY2gnLCBuZXcgQXJyYXlGb3JFYWNoKCldIGFzIGNvbnN0LFxuICBbJ19fQGl0ZXJhdG9yJywgbmV3IEFycmF5SXRlcmF0b3IoKV0gYXMgY29uc3QsXG4gIFsnbGVuZ3RoJywgbmV3IEFycmF5TGVuZ3RoKCldIGFzIGNvbnN0LFxuICBbJ21hcCcsIG5ldyBBcnJheU1hcCgpXSBhcyBjb25zdCxcbiAgWydyZWR1Y2UnLCBuZXcgQXJyYXlSZWR1Y2UoKV0gYXMgY29uc3QsXG4gIFsndG9TdHJpbmcnLCBuZXcgQXJyYXlUb1N0cmluZygpXSBhcyBjb25zdCxcbiAgWydjb25jYXQnLCBuZXcgQXJyYXlDb25jYXQoKV0gYXMgY29uc3QsXG4gIFsnam9pbicsIG5ldyBBcnJheUpvaW4oKV0gYXMgY29uc3QsXG4gIFsnc2xpY2UnLCBuZXcgQXJyYXlTbGljZSgpXSBhcyBjb25zdCxcbiAgWydzb21lJywgbmV3IEFycmF5U29tZSgpXSBhcyBjb25zdCxcbiAgWydldmVyeScsIG5ldyBBcnJheUV2ZXJ5KCldIGFzIGNvbnN0LFxuICBbJ2VudHJpZXMnLCBuZXcgQXJyYXlFbnRyaWVzKCldIGFzIGNvbnN0LFxuXTtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIGV4cG9ydC1uYW1lXG5leHBvcnQgY29uc3QgYWRkID0gKGJ1aWx0aW5zOiBCdWlsdGlucyk6IHZvaWQgPT4ge1xuICBidWlsdGlucy5hZGRJbnRlcmZhY2UoJ0FycmF5JywgbmV3IEFycmF5SW50ZXJmYWNlKCkpO1xuICBidWlsdGlucy5hZGRJbnRlcmZhY2UoJ1JlYWRvbmx5QXJyYXknLCBuZXcgUmVhZG9ubHlBcnJheUludGVyZmFjZSgpKTtcbiAgYnVpbHRpbnMuYWRkVmFsdWUoJ0FycmF5JywgbmV3IEFycmF5VmFsdWUoKSk7XG4gIENPTU1PTi5mb3JFYWNoKChbbmFtZSwgYnVpbHRpbl0pID0+IHtcbiAgICBidWlsdGlucy5hZGRHbG9iYWxNZW1iZXIoJ0FycmF5JywgbmFtZSwgYnVpbHRpbik7XG4gICAgYnVpbHRpbnMuYWRkR2xvYmFsTWVtYmVyKCdSZWFkb25seUFycmF5JywgbmFtZSwgYnVpbHRpbik7XG4gIH0pO1xuICBidWlsdGlucy5hZGRHbG9iYWxNZW1iZXIoJ0FycmF5JywgJ3BvcCcsIG5ldyBBcnJheVBvcCgpKTtcbiAgYnVpbHRpbnMuYWRkR2xvYmFsTWVtYmVyKCdBcnJheScsICdwdXNoJywgbmV3IEFycmF5UHVzaCgpKTtcbiAgYnVpbHRpbnMuYWRkSW50ZXJmYWNlKCdBcnJheUNvbnN0cnVjdG9yJywgbmV3IEFycmF5Q29uc3RydWN0b3JJbnRlcmZhY2UoKSk7XG59O1xuIl19