@fatsolutions/cairo-abi-codec 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/typed-encoder.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import type { Abi, ExtractAbiStructNames, ExtractAbiEnumNames, StringToPrimitiveType } from "abi-wan-kanabi/kanabi";
|
|
2
2
|
export type { Abi, ExtractAbiStructNames, ExtractAbiEnumNames } from "abi-wan-kanabi/kanabi";
|
|
3
|
+
/** Extracts the constructor entry from an ABI. */
|
|
4
|
+
export type ExtractAbiConstructor<TAbi extends Abi> = Extract<TAbi[number], {
|
|
5
|
+
type: "constructor";
|
|
6
|
+
}>;
|
|
7
|
+
/** Typed object for constructor arguments, keyed by input name. */
|
|
8
|
+
export type ConstructorArgs<TAbi extends Abi> = {
|
|
9
|
+
[K in ExtractAbiConstructor<TAbi>["inputs"][number] as K["name"]]: StringToPrimitiveType<TAbi, K["type"]>;
|
|
10
|
+
};
|
|
3
11
|
/** Union of all struct and enum type names in the ABI. */
|
|
4
12
|
export type ExtractAbiTypeNames<TAbi extends Abi> = ExtractAbiStructNames<TAbi> | ExtractAbiEnumNames<TAbi>;
|
|
5
13
|
export type ExtractAbiType<TAbi extends Abi, K extends ExtractAbiTypeNames<TAbi>> = Extract<TAbi[number], {
|
|
@@ -32,6 +40,8 @@ export type AbiType<TAbi extends Abi, TName extends ExtractAbiTypeNames<TAbi>> =
|
|
|
32
40
|
export declare function createTypedCodec<TAbi extends Abi>(abi: TAbi): {
|
|
33
41
|
encode<TName extends ExtractAbiTypeNames<TAbi>>(typeName: TName, data: AbiType<TAbi, TName>): string[];
|
|
34
42
|
decode<TName extends ExtractAbiTypeNames<TAbi>>(typeName: TName, calldata: string[]): AbiType<TAbi, TName>;
|
|
43
|
+
encodeConstructor(data: ConstructorArgs<TAbi>): string[];
|
|
44
|
+
decodeConstructor(calldata: string[]): ConstructorArgs<TAbi>;
|
|
35
45
|
};
|
|
36
46
|
/**
|
|
37
47
|
* One-off type-safe encoding.
|
|
@@ -41,4 +51,12 @@ export declare function encodeTyped<TAbi extends Abi, TName extends ExtractAbiTy
|
|
|
41
51
|
* One-off type-safe decoding.
|
|
42
52
|
*/
|
|
43
53
|
export declare function decodeTyped<TAbi extends Abi, TName extends ExtractAbiTypeNames<TAbi>>(abi: TAbi, typeName: TName, calldata: string[]): AbiType<TAbi, TName>;
|
|
54
|
+
/**
|
|
55
|
+
* One-off constructor encoding.
|
|
56
|
+
*/
|
|
57
|
+
export declare function encodeConstructor<TAbi extends Abi>(abi: TAbi, data: ConstructorArgs<TAbi>): string[];
|
|
58
|
+
/**
|
|
59
|
+
* One-off constructor decoding.
|
|
60
|
+
*/
|
|
61
|
+
export declare function decodeConstructor<TAbi extends Abi>(abi: TAbi, calldata: string[]): ConstructorArgs<TAbi>;
|
|
44
62
|
//# sourceMappingURL=typed-encoder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-encoder.d.ts","sourceRoot":"","sources":["../src/typed-encoder.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,GAAG,EACH,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EAAE,GAAG,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM7F,0DAA0D;AAC1D,MAAM,MAAM,mBAAmB,CAAC,IAAI,SAAS,GAAG,IAC5C,qBAAqB,CAAC,IAAI,CAAC,GAC3B,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAE9B,MAAM,MAAM,cAAc,CAAC,IAAI,SAAS,GAAG,EAAE,CAAC,SAAS,mBAAmB,CAAC,IAAI,CAAC,IAC9E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;CAAE,CAAC,CAAC;AAE/D,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,EAAE,EAAE,KAAK,IACrD,CAAC,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAC5C,IAAI,SAAS,KAAK,GAClB,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GACnC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,GACxB,EAAE,CAAC;AAEP,MAAM,MAAM,WAAW,CACrB,IAAI,SAAS,GAAG,EAChB,MAAM,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,EAAE,IACjD,WAAW,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAAE,CAAC,CAAC;AAEjD,wBAAgB,SAAS,CACvB,IAAI,SAAS,GAAG,EAChB,KAAK,CAAC,MAAM,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,EAAE,EACzD,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GACxB,WAAW,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAAE,CAAC,CAM7C;AAGD;;;;GAIG;AACH,MAAM,MAAM,OAAO,CACjB,IAAI,SAAS,GAAG,EAChB,KAAK,SAAS,mBAAmB,CAAC,IAAI,CAAC,IACrC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAkKvC;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,SAAS,GAAG,EAAE,GAAG,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"typed-encoder.d.ts","sourceRoot":"","sources":["../src/typed-encoder.ts"],"names":[],"mappings":"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"}
|
package/dist/typed-encoder.js
CHANGED
|
@@ -155,6 +155,26 @@ function transformAddresses(value, cairoType, typeMap) {
|
|
|
155
155
|
export function createTypedCodec(abi) {
|
|
156
156
|
const wrappedAbi = buildWrappedAbi(abi);
|
|
157
157
|
const typeMap = buildTypeMap(abi);
|
|
158
|
+
// Precompute constructor codec if the ABI has a constructor
|
|
159
|
+
const constructorEntry = abi.find((e) => e.type === "constructor");
|
|
160
|
+
let constructorCallData;
|
|
161
|
+
let constructorTypeMap;
|
|
162
|
+
if (constructorEntry) {
|
|
163
|
+
const syntheticStruct = {
|
|
164
|
+
type: "struct",
|
|
165
|
+
name: "__ConstructorArgs__",
|
|
166
|
+
members: constructorEntry.inputs.map((i) => ({
|
|
167
|
+
name: i.name,
|
|
168
|
+
type: i.type,
|
|
169
|
+
})),
|
|
170
|
+
};
|
|
171
|
+
const typeEntries = abi.filter((e) => e.type === "struct" || e.type === "enum");
|
|
172
|
+
const constructorAbi = [syntheticStruct, ...typeEntries];
|
|
173
|
+
const wrapped = buildWrappedAbi(constructorAbi);
|
|
174
|
+
const patched = patchAbi(wrapped, "__ConstructorArgs__");
|
|
175
|
+
constructorCallData = new CallData(patched);
|
|
176
|
+
constructorTypeMap = buildTypeMap(constructorAbi);
|
|
177
|
+
}
|
|
158
178
|
return {
|
|
159
179
|
encode(typeName, data) {
|
|
160
180
|
const patchedAbi = patchAbi(wrappedAbi, typeName);
|
|
@@ -167,6 +187,19 @@ export function createTypedCodec(abi) {
|
|
|
167
187
|
const raw = callData.parse("__codec__", calldata);
|
|
168
188
|
return transformAddresses(raw, typeName, typeMap);
|
|
169
189
|
},
|
|
190
|
+
encodeConstructor(data) {
|
|
191
|
+
if (!constructorCallData) {
|
|
192
|
+
throw new Error("ABI does not contain a constructor");
|
|
193
|
+
}
|
|
194
|
+
return constructorCallData.compile("__codec__", [data]);
|
|
195
|
+
},
|
|
196
|
+
decodeConstructor(calldata) {
|
|
197
|
+
if (!constructorCallData || !constructorTypeMap) {
|
|
198
|
+
throw new Error("ABI does not contain a constructor");
|
|
199
|
+
}
|
|
200
|
+
const raw = constructorCallData.parse("__codec__", calldata);
|
|
201
|
+
return transformAddresses(raw, "__ConstructorArgs__", constructorTypeMap);
|
|
202
|
+
},
|
|
170
203
|
};
|
|
171
204
|
}
|
|
172
205
|
/**
|
|
@@ -181,4 +214,16 @@ export function encodeTyped(abi, typeName, data) {
|
|
|
181
214
|
export function decodeTyped(abi, typeName, calldata) {
|
|
182
215
|
return createTypedCodec(abi).decode(typeName, calldata);
|
|
183
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* One-off constructor encoding.
|
|
219
|
+
*/
|
|
220
|
+
export function encodeConstructor(abi, data) {
|
|
221
|
+
return createTypedCodec(abi).encodeConstructor(data);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* One-off constructor decoding.
|
|
225
|
+
*/
|
|
226
|
+
export function decodeConstructor(abi, calldata) {
|
|
227
|
+
return createTypedCodec(abi).decodeConstructor(calldata);
|
|
228
|
+
}
|
|
184
229
|
//# sourceMappingURL=typed-encoder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-encoder.js","sourceRoot":"","sources":["../src/typed-encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,eAAe,EACf,WAAW,GAGZ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"typed-encoder.js","sourceRoot":"","sources":["../src/typed-encoder.ts"],"names":[],"mappings":"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"}
|