UNPKG

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