UNPKG

@harmoniclabs/plu-ts-onchain

Version:

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

26 lines (25 loc) 1.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.passertAndContinue = exports.passertOrTrace = exports.passert = void 0; var types_1 = require("../../type_system/types.js"); var bool_1 = require("../builtins/bool/index.js"); var pdelay_1 = require("../pdelay.js"); var perror_1 = require("../perror.js"); var pfn_1 = require("../pfn.js"); var pforce_1 = require("../pforce/index.js"); var phoist_1 = require("../phoist.js"); var traces_1 = require("./traces.js"); var pmakeUnit_1 = require("./unit/pmakeUnit.js"); exports.passert = (0, phoist_1.phoist)((0, pfn_1.pfn)([types_1.bool], types_1.unit)(function (condition) { return (0, bool_1.pif)(types_1.unit).$(condition).then((0, pmakeUnit_1.pmakeUnit)()).else((0, perror_1.perror)(types_1.unit)); })); exports.passertOrTrace = (0, phoist_1.phoist)((0, pfn_1.pfn)([types_1.str, types_1.bool], types_1.unit)(function (msg, condition) { return (0, bool_1.pif)(types_1.unit).$(condition) .then((0, pmakeUnit_1.pmakeUnit)()) .else((0, traces_1.ptraceError)(types_1.unit).$(msg)); })); var passertAndContinue = function (resultType) { return (0, phoist_1.phoist)((0, pfn_1.pfn)([types_1.bool, (0, types_1.delayed)(resultType)], resultType)(function (condition, continuation) { return (0, pforce_1.pforce)((0, bool_1.pstrictIf)((0, types_1.delayed)(resultType)) .$(condition) .$(continuation) .$((0, pdelay_1.pdelay)((0, perror_1.perror)(resultType)))); })); }; exports.passertAndContinue = passertAndContinue;