@fatsolutions/cairo-abi-codec 0.0.1 → 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 +18 -8
- package/dist/typed-encoder.d.ts.map +1 -1
- package/dist/typed-encoder.js +45 -6
- package/dist/typed-encoder.js.map +1 -1
- package/package.json +1 -1
- package/dist/encoder.d.ts +0 -32
- package/dist/encoder.d.ts.map +0 -1
- package/dist/encoder.js +0 -67
- package/dist/encoder.js.map +0 -1
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], {
|
|
@@ -19,8 +27,6 @@ export declare function narrowAbi<TAbi extends Abi, const TNames extends readonl
|
|
|
19
27
|
* and CairoCustomEnum for custom enums via module declaration merging.
|
|
20
28
|
*/
|
|
21
29
|
export type AbiType<TAbi extends Abi, TName extends ExtractAbiTypeNames<TAbi>> = StringToPrimitiveType<TAbi, TName>;
|
|
22
|
-
/** @deprecated Use `AbiType` instead. */
|
|
23
|
-
export type StructType<TAbi extends Abi, TStructName extends ExtractAbiStructNames<TAbi>> = StringToPrimitiveType<TAbi, TStructName>;
|
|
24
30
|
/**
|
|
25
31
|
* Creates a type-safe codec for structs and enums defined in an ABI.
|
|
26
32
|
* Uses abi-wan-kanabi for type inference.
|
|
@@ -34,6 +40,8 @@ export type StructType<TAbi extends Abi, TStructName extends ExtractAbiStructNam
|
|
|
34
40
|
export declare function createTypedCodec<TAbi extends Abi>(abi: TAbi): {
|
|
35
41
|
encode<TName extends ExtractAbiTypeNames<TAbi>>(typeName: TName, data: AbiType<TAbi, TName>): string[];
|
|
36
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>;
|
|
37
45
|
};
|
|
38
46
|
/**
|
|
39
47
|
* One-off type-safe encoding.
|
|
@@ -43,10 +51,12 @@ export declare function encodeTyped<TAbi extends Abi, TName extends ExtractAbiTy
|
|
|
43
51
|
* One-off type-safe decoding.
|
|
44
52
|
*/
|
|
45
53
|
export declare function decodeTyped<TAbi extends Abi, TName extends ExtractAbiTypeNames<TAbi>>(abi: TAbi, typeName: TName, calldata: string[]): AbiType<TAbi, TName>;
|
|
46
|
-
/**
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
export declare
|
|
50
|
-
/**
|
|
51
|
-
|
|
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>;
|
|
52
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;
|
|
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,10 +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
|
}
|
|
184
|
-
/**
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
export
|
|
188
|
-
|
|
189
|
-
|
|
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
|
+
}
|
|
190
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":"AAAA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,eAAe,EACf,WAAW,GAGZ,MAAM,UAAU,CAAC;AAmDlB,MAAM,UAAU,SAAS,CAGvB,GAAS,EAAE,KAAa;IAExB,OAAO,GAAG,CAAC,MAAM,CACf,CAAC,IAAI,EAAgD,EAAE,CACrD,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;QAC/C,KAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACH,CAAC;AACpD,CAAC;AAaD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,SAAS,eAAe,CAAmB,GAAS;IAClD,OAAO;QACL;YACE,IAAI,EAAE,WAAoB;YAC1B,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,UAAmB;oBACzB,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;oBACnD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;oBACtC,gBAAgB,EAAE,UAAmB;iBACtC;aACF;SACF;QACD,GAAG,GAAG;KACP,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CACf,UAA8C,EAC9C,UAAkB;IAElB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC7D,OAAO;gBACL,GAAG,IAAI;gBACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC7B,GAAG,EAAE;oBACL,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;oBAC5C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;iBAChC,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,mDAAmD;IACnD,yCAAyC;CAC1C,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,KAA+B;IACxD,OAAO,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC;AAMD;;GAEG;AACH,SAAS,YAAY,CAAC,GAAgB;IACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,SAAS,GAAG,gCAAgC,CAAC;AACnD,MAAM,SAAS,GAAG,wCAAwC,CAAC;AAC3D,MAAM,QAAQ,GAAG,uCAAuC,CAAC;AAEzD,SAAS,gBAAgB,CAAC,SAAiB;IACzC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CACzB,KAAc,EACd,SAAiB,EACjB,OAA8B;IAE9B,sBAAsB;IACtB,IAAI,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,iBAAiB,CAAC,KAAiC,CAAC,CAAC;IAC9D,CAAC;IAED,qDAAqD;IACrD,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjE,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,OAAO,KAAK,CAAC;YACjC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5E,OAAO,IAAI,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW;QAC/C,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC5E,OAAO,IAAI,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS;YAC7C,CAAC;YACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5E,OAAO,IAAI,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU;QAC9C,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAEvE,gCAAgC;IAChC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAChF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qEAAqE;IACrE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,WAAW,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAC7E,OAAO,IAAI,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAG/E;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAmB,GAAS;IAC1D,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,YAAY,CAAC,GAA6B,CAAC,CAAC;IAE5D,4DAA4D;IAC5D,MAAM,gBAAgB,GAAI,GAAsB,CAAC,IAAI,CACnD,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CACrC,CAAC;IACF,IAAI,mBAAyC,CAAC;IAC9C,IAAI,kBAAqD,CAAC;IAC1D,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,eAAe,GAAG;YACtB,IAAI,EAAE,QAAiB;YACvB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAG,gBAAgB,CAAC,MAAyB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBACpE,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;SACJ,CAAC;QACF,MAAM,WAAW,GAAI,GAAsB,CAAC,MAAM,CAChD,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CACrD,CAAC;QACF,MAAM,cAAc,GAAG,CAAC,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,eAAe,CAAC,cAAgC,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACzD,mBAAmB,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5C,kBAAkB,GAAG,YAAY,CAAC,cAAwC,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO;QACL,MAAM,CACJ,QAAe,EACf,IAA0B;YAE1B,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAY,CAAa,CAAC;QACtE,CAAC;QAED,MAAM,CACJ,QAAe,EACf,QAAkB;YAElB,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAyB,CAAC;QAC5E,CAAC;QAED,iBAAiB,CAAC,IAA2B;YAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAY,CAAa,CAAC;QACjF,CAAC;QAED,iBAAiB,CAAC,QAAkB;YAClC,IAAI,CAAC,mBAAmB,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC7D,OAAO,kBAAkB,CAAC,GAAG,EAAE,qBAAqB,EAAE,kBAAkB,CAA0B,CAAC;QACrG,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAGzB,GAAS,EAAE,QAAe,EAAE,IAA0B;IACtD,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAGzB,GAAS,EAAE,QAAe,EAAE,QAAkB;IAC9C,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAS,EACT,IAA2B;IAE3B,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAS,EACT,QAAkB;IAElB,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC"}
|
package/package.json
CHANGED
package/dist/encoder.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { type Abi } from "starknet";
|
|
2
|
-
/**
|
|
3
|
-
* Encodes a Cairo struct to calldata without needing a full contract ABI.
|
|
4
|
-
*
|
|
5
|
-
* @param structAbi - Array of ABI type definitions (structs, enums) needed to encode the data
|
|
6
|
-
* @param structType - The name of the root struct type to encode
|
|
7
|
-
* @param data - The data to encode
|
|
8
|
-
* @returns Encoded calldata as string array
|
|
9
|
-
*/
|
|
10
|
-
export declare function encodeStruct(structAbi: Abi, structType: string, data: unknown): string[];
|
|
11
|
-
/**
|
|
12
|
-
* Decodes calldata back into a structured object.
|
|
13
|
-
*
|
|
14
|
-
* @param structAbi - Array of ABI type definitions (structs, enums) needed to decode the data
|
|
15
|
-
* @param structType - The name of the root struct type to decode
|
|
16
|
-
* @param calldata - The encoded calldata string array
|
|
17
|
-
* @returns Decoded struct data
|
|
18
|
-
*/
|
|
19
|
-
export declare function decodeStruct(structAbi: Abi, structType: string, calldata: string[]): unknown;
|
|
20
|
-
/**
|
|
21
|
-
* Creates a reusable encoder/decoder for a specific struct type.
|
|
22
|
-
* Useful when encoding/decoding multiple instances of the same struct.
|
|
23
|
-
*/
|
|
24
|
-
export declare function createStructCodec(structAbi: Abi, structType: string): {
|
|
25
|
-
encode(data: unknown): string[];
|
|
26
|
-
decode(calldata: string[]): unknown;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* @deprecated Use `createStructCodec` instead.
|
|
30
|
-
*/
|
|
31
|
-
export declare function createStructEncoder(structAbi: Abi, structType: string): (data: unknown) => string[];
|
|
32
|
-
//# sourceMappingURL=encoder.d.ts.map
|
package/dist/encoder.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,GAAG,EAAgB,MAAM,UAAU,CAAC;AAqB5D;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,GAAG,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,GACZ,MAAM,EAAE,CAGV;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,GAAG,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM;iBAInD,OAAO,GAAG,MAAM,EAAE;qBAGd,MAAM,EAAE,GAAG,OAAO;EAItC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,UAZrD,OAAO,KAAG,MAAM,EAAE,CAelC"}
|
package/dist/encoder.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { CallData } from "starknet";
|
|
2
|
-
function wrapAbi(structAbi, structType) {
|
|
3
|
-
return [
|
|
4
|
-
{
|
|
5
|
-
type: "interface",
|
|
6
|
-
name: "__Wrapper__",
|
|
7
|
-
items: [
|
|
8
|
-
{
|
|
9
|
-
type: "function",
|
|
10
|
-
name: "__encode__",
|
|
11
|
-
inputs: [{ name: "data", type: structType }],
|
|
12
|
-
outputs: [{ type: structType }],
|
|
13
|
-
state_mutability: "external",
|
|
14
|
-
},
|
|
15
|
-
],
|
|
16
|
-
},
|
|
17
|
-
...structAbi,
|
|
18
|
-
];
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Encodes a Cairo struct to calldata without needing a full contract ABI.
|
|
22
|
-
*
|
|
23
|
-
* @param structAbi - Array of ABI type definitions (structs, enums) needed to encode the data
|
|
24
|
-
* @param structType - The name of the root struct type to encode
|
|
25
|
-
* @param data - The data to encode
|
|
26
|
-
* @returns Encoded calldata as string array
|
|
27
|
-
*/
|
|
28
|
-
export function encodeStruct(structAbi, structType, data) {
|
|
29
|
-
const callData = new CallData(wrapAbi(structAbi, structType));
|
|
30
|
-
return callData.compile("__encode__", [data]);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Decodes calldata back into a structured object.
|
|
34
|
-
*
|
|
35
|
-
* @param structAbi - Array of ABI type definitions (structs, enums) needed to decode the data
|
|
36
|
-
* @param structType - The name of the root struct type to decode
|
|
37
|
-
* @param calldata - The encoded calldata string array
|
|
38
|
-
* @returns Decoded struct data
|
|
39
|
-
*/
|
|
40
|
-
export function decodeStruct(structAbi, structType, calldata) {
|
|
41
|
-
const callData = new CallData(wrapAbi(structAbi, structType));
|
|
42
|
-
const result = callData.parse("__encode__", calldata);
|
|
43
|
-
return result;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Creates a reusable encoder/decoder for a specific struct type.
|
|
47
|
-
* Useful when encoding/decoding multiple instances of the same struct.
|
|
48
|
-
*/
|
|
49
|
-
export function createStructCodec(structAbi, structType) {
|
|
50
|
-
const callData = new CallData(wrapAbi(structAbi, structType));
|
|
51
|
-
return {
|
|
52
|
-
encode(data) {
|
|
53
|
-
return callData.compile("__encode__", [data]);
|
|
54
|
-
},
|
|
55
|
-
decode(calldata) {
|
|
56
|
-
return callData.parse("__encode__", calldata);
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* @deprecated Use `createStructCodec` instead.
|
|
62
|
-
*/
|
|
63
|
-
export function createStructEncoder(structAbi, structType) {
|
|
64
|
-
const codec = createStructCodec(structAbi, structType);
|
|
65
|
-
return codec.encode;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=encoder.js.map
|
package/dist/encoder.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA0B,MAAM,UAAU,CAAC;AAE5D,SAAS,OAAO,CAAC,SAAc,EAAE,UAAkB;IACjD,OAAO;QACL;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;oBAC5C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;oBAC/B,gBAAgB,EAAE,UAAU;iBAC7B;aACF;SACF;QACD,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,SAAc,EACd,UAAkB,EAClB,IAAa;IAEb,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9D,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAY,CAAa,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,SAAc,EACd,UAAkB,EAClB,QAAkB;IAElB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAc,EAAE,UAAkB;IAClE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9D,OAAO;QACL,MAAM,CAAC,IAAa;YAClB,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAY,CAAa,CAAC;QACvE,CAAC;QACD,MAAM,CAAC,QAAkB;YACvB,OAAO,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAc,EAAE,UAAkB;IACpE,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC"}
|