@harmoniclabs/plu-ts-onchain
Version:
An embedded DSL for Cardano smart contracts creation coupled with a library for Cardano transactions, all in Typescript
37 lines (36 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.withAllPairElemsAsData = void 0;
var obj_utils_1 = require("@harmoniclabs/obj-utils");
var tyArgs_1 = require("./tyArgs/index.js");
var types_1 = require("./types.js");
function withAllPairElemsAsData(t) {
if (t[0] === types_1.PrimType.Alias)
return (0, types_1.alias)(withAllPairElemsAsData((0, tyArgs_1.unwrapAlias)(t)));
if (t[0] === types_1.PrimType.AsData)
return t;
if (t[0] === types_1.PrimType.Struct) {
var adjustedStructDef = {};
var sDef = t[1];
var ctors = Object.keys(sDef);
for (var i = 0; i < ctors.length; i++) {
var thisCtor = ctors[i];
var ctorDef = sDef[thisCtor];
var fields = Object.keys(ctorDef);
var adjustedCtorDef = {};
for (var j = 0; j < fields.length; j++) {
var thisField = fields[j];
(0, obj_utils_1.defineReadOnlyProperty)(adjustedCtorDef, thisField, withAllPairElemsAsData(ctorDef[thisField]));
}
(0, obj_utils_1.defineReadOnlyProperty)(adjustedStructDef, thisCtor, adjustedCtorDef);
}
}
if (t[0] === types_1.PrimType.Pair)
return (0, types_1.pair)((0, types_1.asData)((0, tyArgs_1.getFstT)(t)), (0, types_1.asData)((0, tyArgs_1.getSndT)(t)));
if (t[0] === types_1.PrimType.List)
return (0, types_1.list)(withAllPairElemsAsData(t[1]));
if (t[0] === types_1.PrimType.Lambda)
return (0, types_1.lam)(withAllPairElemsAsData(t[1]), withAllPairElemsAsData(t[2]));
return t;
}
exports.withAllPairElemsAsData = withAllPairElemsAsData;