@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.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.cloneTermType = void 0;
var cloneStructDef_1 = require("../PTypes/PStruct/cloneStructDef.js");
var types_1 = require("./types.js");
function cloneTermType(t) {
if (t[0] === types_1.PrimType.Struct)
return (0, types_1.struct)((0, cloneStructDef_1.cloneStructDef)(t[1]), t[2]);
if (t[0] === types_1.PrimType.Sop)
return (0, types_1.sop)((0, cloneStructDef_1.cloneStructDef)(t[1]), t[2]);
if (t[0] === types_1.PrimType.Lambda)
return (0, types_1.lam)(cloneTermType(t[1]), cloneTermType(t[2]));
if (t[0] === types_1.PrimType.Pair)
return (0, types_1.pair)(cloneTermType(t[1]), cloneTermType(t[2]));
if (t[0] === types_1.PrimType.List)
return (0, types_1.list)(cloneTermType(t[1]));
if (t[0] === types_1.PrimType.Delayed)
return (0, types_1.delayed)(cloneTermType(t[1]));
if (t[0] === types_1.PrimType.AsData)
return (0, types_1.asData)(cloneTermType(t[1]));
if (t[0] === types_1.PrimType.Alias)
return (0, types_1.alias)(cloneTermType(t[1]), t[2]);
return [t[0]];
}
exports.cloneTermType = cloneTermType;