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

Method #getCoder

lib.esm/abi/abi-coder.js:111–145  ·  view source on GitHub ↗
(param)

Source from the content-addressed store, hash-verified

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

Callers 3

getDefaultValueMethod · 0.95
encodeMethod · 0.95
decodeMethod · 0.95

Calls 4

assertArgumentFunction · 0.90
isArrayMethod · 0.45
isTupleMethod · 0.45
mapMethod · 0.45

Tested by

no test coverage detected