MCPcopy Create free account
hub / github.com/PageLeay/celestial-runtime / #getCoder

Method #getCoder

lib.commonjs/abi/abi-coder.js:114–148  ·  view source on GitHub ↗
(param)

Source from the content-addressed store, hash-verified

112 */
113class AbiCoder {
114 #getCoder(param) {
115 if (param.isArray()) {
116 return new array_js_1.ArrayCoder(this.#getCoder(param.arrayChildren), param.arrayLength, param.name);
117 }
118 if (param.isTuple()) {
119 return new tuple_js_1.TupleCoder(param.components.map((c) => this.#getCoder(c)), param.name);
120 }
121 switch (param.baseType) {
122 case "address":
123 return new address_js_1.AddressCoder(param.name);
124 case "bool":
125 return new boolean_js_1.BooleanCoder(param.name);
126 case "string":
127 return new string_js_1.StringCoder(param.name);
128 case "bytes":
129 return new bytes_js_1.BytesCoder(param.name);
130 case "":
131 return new null_js_1.NullCoder(param.name);
132 }
133 // u?int[0-9]*
134 let match = param.type.match(paramTypeNumber);
135 if (match) {
136 let size = parseInt(match[2] || "256");
137 (0, index_js_1.assertArgument)(size !== 0 && size <= 256 && (size % 8) === 0, "invalid " + match[1] + " bit length", "param", param);
138 return new number_js_1.NumberCoder(size / 8, (match[1] === "int"), param.name);
139 }
140 // bytes[0-9]+
141 match = param.type.match(paramTypeBytes);
142 if (match) {
143 let size = parseInt(match[1]);
144 (0, index_js_1.assertArgument)(size !== 0 && size <= 32, "invalid bytes length", "param", param);
145 return new fixed_bytes_js_1.FixedBytesCoder(size, param.name);
146 }
147 (0, index_js_1.assertArgument)(false, "invalid type", "type", param.type);
148 }
149 /**
150 * Get the default values for the given %%types%%.
151 *

Callers 3

getDefaultValueMethod · 0.95
encodeMethod · 0.95
decodeMethod · 0.95

Calls 3

isArrayMethod · 0.45
isTupleMethod · 0.45
mapMethod · 0.45

Tested by

no test coverage detected