@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
30 lines (28 loc) • 4.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const safe_stable_stringify_1 = tslib_1.__importDefault(require("safe-stable-stringify"));
const constants_1 = require("../../constants");
const Helper_1 = require("../Helper");
class GetCallableHelper extends Helper_1.Helper {
static getKey(options = { bindThis: false }) {
const bindThis = options.bindThis || false;
const overwriteThis = options.overwriteThis || false;
return safe_stable_stringify_1.default({ bindThis, overwriteThis });
}
constructor(options = { bindThis: false }) {
super();
this.bindThis = options.bindThis || false;
this.overwriteThis = options.overwriteThis || false;
}
emit(sb, node, optionsIn) {
const options = sb.pushValueOptions(optionsIn);
sb.emitPushInt(node, constants_1.InternalObjectProperty.Call);
sb.emitHelper(node, options, sb.helpers.getInternalObjectProperty);
if (this.bindThis) {
sb.emitHelper(node, options, sb.helpers.bindFunctionThis({ overwrite: this.overwriteThis }));
}
}
}
exports.GetCallableHelper = GetCallableHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkdldENhbGxhYmxlSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBGQUE4QztBQUU5QywrQ0FBeUQ7QUFHekQsc0NBQW1DO0FBU25DLE1BQWEsaUJBQWtCLFNBQVEsZUFBTTtJQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQW9DLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtRQUMxRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztRQUVyRCxPQUFPLCtCQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBS0QsWUFBbUIsVUFBb0MsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1FBQ3hFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO0lBQ3RELENBQUM7SUFFTSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsU0FBdUI7UUFDbkUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9DLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGtDQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxELEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDbkUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBRWpCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDOUY7SUFDSCxDQUFDO0NBQ0Y7QUE1QkQsOENBNEJDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2Z1bmN0aW9uL0dldENhbGxhYmxlSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0cmluZ2lmeSBmcm9tICdzYWZlLXN0YWJsZS1zdHJpbmdpZnknO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgSW50ZXJuYWxPYmplY3RQcm9wZXJ0eSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBHZXRDYWxsYWJsZUhlbHBlck9wdGlvbnMge1xuICByZWFkb25seSBiaW5kVGhpcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG92ZXJ3cml0ZVRoaXM/OiBib29sZWFuO1xufVxuXG4vLyBJbnB1dDogW29iamVjdFZhbCwgP3RoaXNWYWxdXG4vLyBPdXRwdXQ6IFtjYWxsYWJsZV1cbmV4cG9ydCBjbGFzcyBHZXRDYWxsYWJsZUhlbHBlciBleHRlbmRzIEhlbHBlciB7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0S2V5KG9wdGlvbnM6IEdldENhbGxhYmxlSGVscGVyT3B0aW9ucyA9IHsgYmluZFRoaXM6IGZhbHNlIH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IGJpbmRUaGlzID0gb3B0aW9ucy5iaW5kVGhpcyB8fCBmYWxzZTtcbiAgICBjb25zdCBvdmVyd3JpdGVUaGlzID0gb3B0aW9ucy5vdmVyd3JpdGVUaGlzIHx8IGZhbHNlO1xuXG4gICAgcmV0dXJuIHN0cmluZ2lmeSh7IGJpbmRUaGlzLCBvdmVyd3JpdGVUaGlzIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBiaW5kVGhpczogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBvdmVyd3JpdGVUaGlzOiBib29sZWFuO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBHZXRDYWxsYWJsZUhlbHBlck9wdGlvbnMgPSB7IGJpbmRUaGlzOiBmYWxzZSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmJpbmRUaGlzID0gb3B0aW9ucy5iaW5kVGhpcyB8fCBmYWxzZTtcbiAgICB0aGlzLm92ZXJ3cml0ZVRoaXMgPSBvcHRpb25zLm92ZXJ3cml0ZVRoaXMgfHwgZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gc2IucHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zSW4pO1xuICAgIC8vIFsnY2FsbCcsIG9iamVjdFZhbCwgP3RoaXNWYWxdXG4gICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgSW50ZXJuYWxPYmplY3RQcm9wZXJ0eS5DYWxsKTtcbiAgICAvLyBbZnVuYywgP3RoaXNWYWxdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmdldEludGVybmFsT2JqZWN0UHJvcGVydHkpO1xuICAgIGlmICh0aGlzLmJpbmRUaGlzKSB7XG4gICAgICAvLyBbZnVuY11cbiAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy5iaW5kRnVuY3Rpb25UaGlzKHsgb3ZlcndyaXRlOiB0aGlzLm92ZXJ3cml0ZVRoaXMgfSkpO1xuICAgIH1cbiAgfVxufVxuIl19