UNPKG

@harmoniclabs/plu-ts-onchain

Version:

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

59 lines (58 loc) 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mockPStructMethods = void 0; var obj_utils_1 = require("@harmoniclabs/obj-utils"); var isWellFormedType_1 = require("../../../../type_system/kinds/isWellFormedType.js"); var types_1 = require("../../../../type_system/types.js"); var makeMockTerm_1 = require("./makeMockTerm.js"); var makeMockUtilityTerm_1 = require("./makeMockUtilityTerm.js"); var mockPBoolMethods_1 = require("./mockPBoolMethods.js"); var mockPIntMethods_1 = require("./mockPIntMethods.js"); var mockPListMethods_1 = require("./mockPListMethods.js"); var mockUserMethods_1 = require("./mockUserMethods.js"); var BaseUtilityTerm_1 = require("../BaseUtilityTerm.js"); function mockPStructMethods(struct) { struct = (0, BaseUtilityTerm_1.addBaseUtilityTerm)(struct); var t = struct.type; if (!(0, isWellFormedType_1.isStructType)(t)) return struct; var sDef = t[1]; if (typeof sDef === "symbol" || !(0, isWellFormedType_1.isStructDefinition)(sDef)) return struct; var ctors = Object.keys(sDef); // shortcut for single ctors structs if (ctors.length === 1) { var ctorName = ctors[0]; var ctor = sDef[ctorName]; var fieldsNames = Object.keys(ctor); var nFields = fieldsNames.length; var letted_fieldsListData = (0, makeMockTerm_1.makeMockTerm)((0, types_1.list)(types_1.data)); for (var i = 0; i < nFields; i++) { var thisFieldName = fieldsNames[i]; var thisFieldType = ctor[thisFieldName]; (!(0, obj_utils_1.hasOwn)(struct, thisFieldName)) && Object.defineProperty(struct, thisFieldName, { value: (0, makeMockUtilityTerm_1.makeMockUtilityTerm)(thisFieldType), writable: false, enumerable: true, configurable: false }); } } (0, obj_utils_1.definePropertyIfNotPresent)(struct, "peq", { get: function () { return (0, makeMockUtilityTerm_1.makeMockUtilityTerm)((0, types_1.lam)(types_1.data, types_1.bool)); }, set: function () { }, configurable: false, enumerable: true }); (0, obj_utils_1.defineReadOnlyProperty)(struct, "eq", function (other) { return (0, mockPBoolMethods_1.makeMockTermBool)(); }); // const letted_unconstred = makeMockTerm( pair( int, list( data ) ) ); var letted_ctorIdx = (0, makeMockTerm_1.makeMockTerm)(types_1.int); var letted_rawFields = (0, makeMockTerm_1.makeMockTerm)((0, types_1.list)(types_1.data)); (0, obj_utils_1.defineReadOnlyProperty)(struct, "raw", Object.freeze({ index: (0, mockPIntMethods_1.mockPIntMethods)(letted_ctorIdx), fields: (0, mockPListMethods_1.mockPListMethods)(letted_rawFields) })); struct = (0, mockUserMethods_1.mockUserMethods)(struct, t[2]); return struct; } exports.mockPStructMethods = mockPStructMethods;