@harmoniclabs/plu-ts-onchain
Version:
An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript
24 lines (23 loc) • 988 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pforce_minimal = exports._pforce = void 0;
var IRDelayed_1 = require("../../../IR/IRNodes/IRDelayed.js");
var IRForced_1 = require("../../../IR/IRNodes/IRForced.js");
var Term_1 = require("../../Term/index.js");
var types_1 = require("../../type_system/types.js");
function _pforce(toForce) {
var outType = toForce.type[0] === types_1.PrimType.Delayed ? toForce.type[1] : toForce.type;
return new Term_1.Term(outType, function (cfg, dbn) {
var toForceUPLC = toForce.toIR(cfg, dbn);
// if directly applying to Delay UPLC just remove the delay
// example:
// (force (delay (con int 11))) === (con int 11)
if (toForceUPLC instanceof IRDelayed_1.IRDelayed) {
return toForceUPLC.delayed;
}
// any other case
return new IRForced_1.IRForced(toForceUPLC);
});
}
exports._pforce = _pforce;
exports.pforce_minimal = _pforce;