UNPKG

@harmoniclabs/plu-ts-onchain

Version:

An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript

96 lines (95 loc) 3.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IRDelayed = void 0; var BasePlutsError_1 = require("../../utils/BasePlutsError.js"); var concatUint8Arr_1 = require("../utils/concatUint8Arr.js"); var isIRTerm_1 = require("../utils/isIRTerm.js"); var isIRParentTerm_1 = require("../utils/isIRParentTerm.js"); var IRHash_1 = require("../IRHash.js"); var equalIRTerm_1 = require("../utils/equalIRTerm.js"); var IRNodeKind_1 = require("../IRNodeKind.js"); var IRDelayed = /** @class */ (function () { function IRDelayed(delayed, _unsafeHash) { this.meta = {}; if (!(0, isIRTerm_1.isIRTerm)(delayed)) throw new Error("IRDelayed argument was not an IRTerm"); this._delayed = delayed; this._delayed.parent = this; this._hash = (0, IRHash_1.isIRHash)(_unsafeHash) ? _unsafeHash : undefined; this._parent = undefined; } Object.defineProperty(IRDelayed, "kind", { get: function () { return IRNodeKind_1.IRNodeKind.Delayed; }, enumerable: false, configurable: true }); Object.defineProperty(IRDelayed.prototype, "kind", { get: function () { return IRDelayed.kind; }, enumerable: false, configurable: true }); Object.defineProperty(IRDelayed, "tag", { get: function () { return new Uint8Array([IRDelayed.kind]); }, enumerable: false, configurable: true }); Object.defineProperty(IRDelayed.prototype, "delayed", { get: function () { return this._delayed; }, set: function (newDelayed) { if (!(0, isIRTerm_1.isIRTerm)(newDelayed)) { throw new BasePlutsError_1.BasePlutsError("invalid IRTerm to be delayed"); } if (!(0, equalIRTerm_1.shallowEqualIRTermHash)(this._delayed, newDelayed)) this.markHashAsInvalid(); // keep the parent reference in the old child, useful for compilation // _delayed.parent = undefined; this._delayed = newDelayed; this._delayed.parent = this; }, enumerable: false, configurable: true }); Object.defineProperty(IRDelayed.prototype, "hash", { get: function () { if (!(0, IRHash_1.isIRHash)(this._hash)) { this._hash = (0, IRHash_1.hashIrData)((0, concatUint8Arr_1.concatUint8Arr)(IRDelayed.tag, this.delayed.hash)); } return this._hash; }, enumerable: false, configurable: true }); Object.defineProperty(IRDelayed.prototype, "parent", { get: function () { return this._parent; }, set: function (newParent) { if (!( // assert // new parent value is different than current this._parent !== newParent && ( // and the new parent value is valid newParent === undefined || (0, isIRParentTerm_1.isIRParentTerm)(newParent)))) return; this._parent = newParent; }, enumerable: false, configurable: true }); IRDelayed.prototype.isHashPresent = function () { return (0, IRHash_1.isIRHash)(this._hash); }; IRDelayed.prototype.markHashAsInvalid = function () { var _a; this._hash = undefined; (_a = this._parent) === null || _a === void 0 ? void 0 : _a.markHashAsInvalid(); }; IRDelayed.prototype.clone = function () { return new IRDelayed(this.delayed.clone(), this.isHashPresent() ? this.hash : undefined); }; IRDelayed.prototype.toJSON = function () { return this.toJson(); }; IRDelayed.prototype.toJson = function () { return { type: "IRDelayed", delayed: this.delayed.toJson() }; }; return IRDelayed; }()); exports.IRDelayed = IRDelayed;