@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
25 lines (23 loc) • 3.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ScopeCapturingScriptBuilder_1 = require("./ScopeCapturingScriptBuilder");
class HelperCapturingScriptBuilder extends ScopeCapturingScriptBuilder_1.ScopeCapturingScriptBuilder {
constructor() {
super(...arguments);
this.mutableCapturedHelpersSet = new Set();
this.mutableCapturedHelpers = [];
}
getHelpers() {
return [...this.mutableCapturedHelpers];
}
emitHelper(node, options, helper) {
if (!this.mutableCapturedHelpersSet.has(helper)) {
this.mutableCapturedHelpersSet.add(helper);
this.mutableCapturedHelpers.push(helper);
helper.emitGlobal(this, node, options);
}
helper.emit(this, node, options);
}
}
exports.HelperCapturingScriptBuilder = HelperCapturingScriptBuilder;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlbHBlckNhcHR1cmluZ1NjcmlwdEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSwrRUFBNEU7QUFHNUUsTUFBYSw0QkFBNkIsU0FBUSx5REFBMkI7SUFBN0U7O1FBQ21CLDhCQUF5QixHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ25ELDJCQUFzQixHQUFhLEVBQUUsQ0FBQztJQWN6RCxDQUFDO0lBWlEsVUFBVTtRQUNmLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxVQUFVLENBQW9CLElBQU8sRUFBRSxPQUFxQixFQUFFLE1BQWlCO1FBQ3BGLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDeEM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBaEJELG9FQWdCQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy9jb21waWxlL3NiL0hlbHBlckNhcHR1cmluZ1NjcmlwdEJ1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXInO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgU2NvcGVDYXB0dXJpbmdTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi9TY29wZUNhcHR1cmluZ1NjcmlwdEJ1aWxkZXInO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4vU2NyaXB0QnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBIZWxwZXJDYXB0dXJpbmdTY3JpcHRCdWlsZGVyIGV4dGVuZHMgU2NvcGVDYXB0dXJpbmdTY3JpcHRCdWlsZGVyIGltcGxlbWVudHMgU2NyaXB0QnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbXV0YWJsZUNhcHR1cmVkSGVscGVyc1NldDogU2V0PEhlbHBlcj4gPSBuZXcgU2V0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbXV0YWJsZUNhcHR1cmVkSGVscGVyczogSGVscGVyW10gPSBbXTtcblxuICBwdWJsaWMgZ2V0SGVscGVycygpOiBSZWFkb25seUFycmF5PEhlbHBlcj4ge1xuICAgIHJldHVybiBbLi4udGhpcy5tdXRhYmxlQ2FwdHVyZWRIZWxwZXJzXTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0SGVscGVyPFQgZXh0ZW5kcyB0cy5Ob2RlPihub2RlOiBULCBvcHRpb25zOiBWaXNpdE9wdGlvbnMsIGhlbHBlcjogSGVscGVyPFQ+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm11dGFibGVDYXB0dXJlZEhlbHBlcnNTZXQuaGFzKGhlbHBlcikpIHtcbiAgICAgIHRoaXMubXV0YWJsZUNhcHR1cmVkSGVscGVyc1NldC5hZGQoaGVscGVyKTtcbiAgICAgIHRoaXMubXV0YWJsZUNhcHR1cmVkSGVscGVycy5wdXNoKGhlbHBlcik7XG4gICAgICBoZWxwZXIuZW1pdEdsb2JhbCh0aGlzLCBub2RlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaGVscGVyLmVtaXQodGhpcywgbm9kZSwgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==