UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

30 lines (28 loc) 4.78 kB
"use strict"; 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