@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
JavaScript
;
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;