UNPKG

@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
"use strict"; 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;