@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
35 lines (33 loc) • 5.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Helper_1 = require("../Helper");
class NewHelper extends Helper_1.Helper {
constructor(options = { noArgs: false }) {
super();
this.noArgs = options.noArgs || false;
}
emit(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.emitHelper(node, options, sb.helpers.createObject);
if (this.noArgs) {
sb.emitOp(node, 'TUCK');
}
else {
sb.emitPushInt(node, 3);
sb.emitOp(node, 'XTUCK');
}
sb.emitOp(node, 'TUCK');
sb.emitOp(node, 'OVER');
sb.emitPushString(node, '__proto__');
sb.emitOp(node, 'SWAP');
sb.emitPushString(node, 'prototype');
sb.emitHelper(node, options, sb.helpers.getPropertyObjectProperty);
sb.emitHelper(node, options, sb.helpers.setDataPropertyObjectProperty);
sb.emitHelper(node, sb.noPushValueOptions(options), sb.helpers.invokeConstruct({ noArgs: this.noArgs }));
if (!optionsIn.pushValue) {
sb.emitOp(node, 'DROP');
}
}
}
exports.NewHelper = NewHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5ld0hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLHNDQUFtQztBQVFuQyxNQUFhLFNBQVUsU0FBUSxlQUFNO0lBR25DLFlBQW1CLFVBQTRCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUM5RCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVNLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxTQUF1QjtRQUNuRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBRWYsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekI7YUFBTTtZQUVMLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzFCO1FBRUQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFckMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFckMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUVuRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRXZFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXpHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztDQUNGO0FBM0NELDhCQTJDQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL2hlbHBlci9mdW5jdGlvbi9OZXdIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ld0hlbHBlck9wdGlvbnMge1xuICByZWFkb25seSBub0FyZ3M/OiBib29sZWFuO1xufVxuXG4vLyBJbnB1dDogW29iamVjdFZhbCwgP2FyZ3NhcnJdXG4vLyBPdXRwdXQ6IFt0aGlzVmFsXVxuZXhwb3J0IGNsYXNzIE5ld0hlbHBlciBleHRlbmRzIEhlbHBlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9BcmdzOiBib29sZWFuO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBOZXdIZWxwZXJPcHRpb25zID0geyBub0FyZ3M6IGZhbHNlIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubm9BcmdzID0gb3B0aW9ucy5ub0FyZ3MgfHwgZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gc2IucHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zSW4pO1xuICAgIC8vIFt0aGlzVmFsLCBvYmplY3RWYWwsID9hcmdzYXJyXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy5jcmVhdGVPYmplY3QpO1xuICAgIGlmICh0aGlzLm5vQXJncykge1xuICAgICAgLy8gW3RoaXNWYWwsIG9iamVjdFZhbCwgdGhpc1ZhbF1cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnVFVDSycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBbMywgdGhpc1ZhbCwgb2JqZWN0VmFsLCBhcmdzYXJyXVxuICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMyk7XG4gICAgICAvLyBbdGhpc1ZhbCwgb2JqZWN0VmFsLCBhcmdzYXJyLCB0aGlzVmFsXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdYVFVDSycpO1xuICAgIH1cbiAgICAvLyBbdGhpc1ZhbCwgb2JqZWN0VmFsLCB0aGlzVmFsLCA/YXJnc2FyciwgdGhpc1ZhbF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1RVQ0snKTtcbiAgICAvLyBbb2JqZWN0VmFsLCB0aGlzVmFsLCBvYmplY3RWYWwsIHRoaXNWYWwsID9hcmdzYXJyLCB0aGlzVmFsXVxuICAgIHNiLmVtaXRPcChub2RlLCAnT1ZFUicpO1xuICAgIC8vIFsnX19wcm90b19fJywgb2JqZWN0VmFsLCB0aGlzVmFsLCBvYmplY3RWYWwsIHRoaXNWYWwsID9hcmdzYXJyLCB0aGlzVmFsXVxuICAgIHNiLmVtaXRQdXNoU3RyaW5nKG5vZGUsICdfX3Byb3RvX18nKTtcbiAgICAvLyBbb2JqZWN0VmFsLCAnX19wcm90b19fJywgdGhpc1ZhbCwgb2JqZWN0VmFsLCB0aGlzVmFsLCA/YXJnc2FyciwgdGhpc1ZhbF1cbiAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICAvLyBbJ3Byb3RvdHlwZScsIG9iamVjdFZhbCwgJ19fcHJvdG9fXycsIHRoaXNWYWwsIG9iamVjdFZhbCwgdGhpc1ZhbCwgP2FyZ3NhcnIsIHRoaXNWYWxdXG4gICAgc2IuZW1pdFB1c2hTdHJpbmcobm9kZSwgJ3Byb3RvdHlwZScpO1xuICAgIC8vIFtwcm90b3R5cGUsICdfX3Byb3RvX18nLCB0aGlzVmFsLCBvYmplY3RWYWwsIHRoaXNWYWwsID9hcmdzYXJyLCB0aGlzVmFsXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy5nZXRQcm9wZXJ0eU9iamVjdFByb3BlcnR5KTtcbiAgICAvLyBbb2JqZWN0VmFsLCB0aGlzVmFsLCA/YXJnc2FyciwgdGhpc1ZhbF1cbiAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuc2V0RGF0YVByb3BlcnR5T2JqZWN0UHJvcGVydHkpO1xuICAgIC8vIFt0aGlzVmFsXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgc2Iubm9QdXNoVmFsdWVPcHRpb25zKG9wdGlvbnMpLCBzYi5oZWxwZXJzLmludm9rZUNvbnN0cnVjdCh7IG5vQXJnczogdGhpcy5ub0FyZ3MgfSkpO1xuXG4gICAgaWYgKCFvcHRpb25zSW4ucHVzaFZhbHVlKSB7XG4gICAgICAvLyBbXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdEUk9QJyk7XG4gICAgfVxuICB9XG59XG4iXX0=