UNPKG

@harmoniclabs/plu-ts-onchain

Version:

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

44 lines (43 loc) 2.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.psndPair = exports.pfstPair = void 0; var obj_utils_1 = require("@harmoniclabs/obj-utils"); var IRNative_1 = require("../../../../IR/IRNodes/IRNative/index.js"); var Term_1 = require("../../../Term/index.js"); var type_system_1 = require("../../../type_system/index.js"); var tyArgs_1 = require("../../../type_system/tyArgs/index.js"); var papp_1 = require("../../papp.js"); var punsafeConvertType_1 = require("../../punsafeConvertType/index.js"); var fromData_minimal_1 = require("../../std/data/conversion/fromData_minimal.js"); function pfstPair(fstType, sndType) { var a = fstType; var b = sndType; var outT = a[0] === type_system_1.PrimType.AsData ? (0, tyArgs_1.unwrapAsData)(a) : a; var bnTerm = new Term_1.Term((0, type_system_1.lam)((0, type_system_1.pair)(a, b), outT), function (_dbn) { return IRNative_1.IRNative.fstPair; }); (0, obj_utils_1.defineReadOnlyProperty)(bnTerm, "$", function (_pair) { if (_pair.__isDynamicPair || a[0] === type_system_1.PrimType.AsData || _pair.type[1][0] === type_system_1.PrimType.AsData) { return (0, punsafeConvertType_1.punsafeConvertType)((0, fromData_minimal_1._fromData)(outT)((0, papp_1.papp)((0, punsafeConvertType_1.punsafeConvertType)(bnTerm, (0, type_system_1.lam)((0, type_system_1.pair)(type_system_1.data, type_system_1.data), type_system_1.data)), (0, punsafeConvertType_1.punsafeConvertType)(_pair, (0, type_system_1.pair)(type_system_1.data, type_system_1.data)))), outT); } return (0, papp_1.papp)(bnTerm, _pair); }); return bnTerm; } exports.pfstPair = pfstPair; function psndPair(fstType, sndType) { var a = fstType; var b = sndType; var outT = b[0] === type_system_1.PrimType.AsData ? (0, tyArgs_1.unwrapAsData)(b) : b; var bnTerm = new Term_1.Term((0, type_system_1.lam)((0, type_system_1.pair)(a, b), outT), function (_dbn) { return IRNative_1.IRNative.sndPair; }); (0, obj_utils_1.defineReadOnlyProperty)(bnTerm, "$", function (_pair) { if (_pair.__isDynamicPair || b[0] === type_system_1.PrimType.AsData || _pair.type[2][0] === type_system_1.PrimType.AsData) { return (0, punsafeConvertType_1.punsafeConvertType)((0, fromData_minimal_1._fromData)(outT)((0, papp_1.papp)((0, punsafeConvertType_1.punsafeConvertType)(bnTerm, (0, type_system_1.lam)((0, type_system_1.pair)(type_system_1.data, type_system_1.data), type_system_1.data)), (0, punsafeConvertType_1.punsafeConvertType)(_pair, (0, type_system_1.pair)(type_system_1.data, type_system_1.data)))), outT); } return (0, papp_1.papp)(bnTerm, _pair); }); return bnTerm; } exports.psndPair = psndPair;