@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
JavaScript
;
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;