@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) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
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 type_system_1 = require("../../type_system/index.js");
var addUtilityForType_1 = require("../std/UtilityTerms/addUtilityForType.js");
function pforce(toForce) {
var outType = toForce.type[0] === type_system_1.PrimType.Delayed ? toForce.type[1] : toForce.type;
return (0, addUtilityForType_1.addUtilityForType)(outType)(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;