starknet 6.9.0 → 6.10.1
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/CHANGELOG.md +12 -0
- package/LICENSE +1 -1
- package/README.md +5 -9
- package/dist/account/default.cjs +655 -0
- package/dist/account/default.d.ts +67 -0
- package/dist/account/default.mjs +652 -0
- package/dist/account/index.cjs +27 -0
- package/dist/account/index.d.ts +2 -0
- package/dist/account/index.mjs +2 -0
- package/dist/account/interface.cjs +9 -0
- package/dist/account/interface.d.ts +301 -0
- package/dist/account/interface.mjs +3 -0
- package/dist/channel/index.cjs +27 -0
- package/dist/channel/index.d.ts +3 -0
- package/dist/channel/index.mjs +3 -0
- package/dist/channel/rpc_0_6.cjs +607 -0
- package/dist/channel/rpc_0_6.d.ts +78 -0
- package/dist/channel/rpc_0_6.mjs +543 -0
- package/dist/channel/rpc_0_7.cjs +619 -0
- package/dist/channel/rpc_0_7.d.ts +81 -0
- package/dist/channel/rpc_0_7.mjs +561 -0
- package/dist/constants.cjs +76 -0
- package/dist/constants.d.ts +70 -0
- package/dist/constants.mjs +60 -0
- package/dist/contract/contractFactory.cjs +93 -0
- package/dist/contract/contractFactory.d.ts +46 -0
- package/dist/contract/contractFactory.mjs +83 -0
- package/dist/contract/default.cjs +269 -0
- package/dist/contract/default.d.ts +58 -0
- package/dist/contract/default.mjs +254 -0
- package/dist/contract/index.cjs +38 -0
- package/dist/contract/index.d.ts +3 -0
- package/dist/contract/index.mjs +3 -0
- package/dist/contract/interface.cjs +13 -0
- package/dist/contract/interface.d.ts +128 -0
- package/dist/contract/interface.mjs +6 -0
- package/dist/index.cjs +267 -0
- package/dist/index.d.ts +45 -5991
- package/dist/index.global.js +728 -609
- package/dist/index.global.js.map +1 -1
- package/dist/index.mjs +39 -7320
- package/dist/provider/errors.cjs +50 -0
- package/dist/provider/errors.d.ts +16 -0
- package/dist/provider/errors.mjs +35 -0
- package/dist/provider/extensions/default.cjs +11 -0
- package/dist/provider/extensions/default.d.ts +6 -0
- package/dist/provider/extensions/default.mjs +5 -0
- package/dist/provider/extensions/starknetId.cjs +174 -0
- package/dist/provider/extensions/starknetId.d.ts +10 -0
- package/dist/provider/extensions/starknetId.mjs +230 -0
- package/dist/provider/index.cjs +56 -0
- package/dist/provider/index.d.ts +6 -0
- package/dist/provider/index.mjs +6 -0
- package/dist/provider/interface.cjs +8 -0
- package/dist/provider/interface.d.ts +261 -0
- package/dist/provider/interface.mjs +2 -0
- package/dist/provider/rpc.cjs +301 -0
- package/dist/provider/rpc.d.ts +115 -0
- package/dist/provider/rpc.mjs +302 -0
- package/dist/service/types.cjs +1 -0
- package/dist/service/types.d.ts +5 -0
- package/dist/service/types.mjs +0 -0
- package/dist/signer/default.cjs +105 -0
- package/dist/signer/default.d.ts +12 -0
- package/dist/signer/default.mjs +102 -0
- package/dist/signer/ethSigner.cjs +123 -0
- package/dist/signer/ethSigner.d.ts +25 -0
- package/dist/signer/ethSigner.mjs +140 -0
- package/dist/signer/index.cjs +38 -0
- package/dist/signer/index.d.ts +3 -0
- package/dist/signer/index.mjs +3 -0
- package/dist/signer/interface.cjs +8 -0
- package/dist/signer/interface.d.ts +115 -0
- package/dist/signer/interface.mjs +2 -0
- package/dist/types/account.cjs +1 -0
- package/dist/types/account.d.ts +79 -0
- package/dist/types/account.mjs +0 -0
- package/dist/types/api/index.cjs +30 -0
- package/dist/types/api/index.d.ts +4 -0
- package/dist/types/api/index.mjs +4 -0
- package/dist/types/api/jsonrpc/index.cjs +1 -0
- package/dist/types/api/jsonrpc/index.d.ts +21 -0
- package/dist/types/api/jsonrpc/index.mjs +0 -0
- package/dist/types/api/rpcspec_0_6/components.cjs +1 -0
- package/dist/types/api/rpcspec_0_6/components.d.ts +541 -0
- package/dist/types/api/rpcspec_0_6/components.mjs +0 -0
- package/dist/types/api/rpcspec_0_6/contract.cjs +1 -0
- package/dist/types/api/rpcspec_0_6/contract.d.ts +85 -0
- package/dist/types/api/rpcspec_0_6/contract.mjs +0 -0
- package/dist/types/api/rpcspec_0_6/errors.cjs +1 -0
- package/dist/types/api/rpcspec_0_6/errors.d.ts +128 -0
- package/dist/types/api/rpcspec_0_6/errors.mjs +0 -0
- package/dist/types/api/rpcspec_0_6/index.cjs +45 -0
- package/dist/types/api/rpcspec_0_6/index.d.ts +8 -0
- package/dist/types/api/rpcspec_0_6/index.mjs +5 -0
- package/dist/types/api/rpcspec_0_6/methods.cjs +1 -0
- package/dist/types/api/rpcspec_0_6/methods.d.ts +207 -0
- package/dist/types/api/rpcspec_0_6/methods.mjs +0 -0
- package/dist/types/api/rpcspec_0_6/nonspec.cjs +65 -0
- package/dist/types/api/rpcspec_0_6/nonspec.d.ts +147 -0
- package/dist/types/api/rpcspec_0_6/nonspec.mjs +59 -0
- package/dist/types/cairoEnum.cjs +1 -0
- package/dist/types/cairoEnum.d.ts +2 -0
- package/dist/types/cairoEnum.mjs +0 -0
- package/dist/types/calldata.cjs +27 -0
- package/dist/types/calldata.d.ts +23 -0
- package/dist/types/calldata.mjs +21 -0
- package/dist/types/contract.cjs +1 -0
- package/dist/types/contract.d.ts +27 -0
- package/dist/types/contract.mjs +0 -0
- package/dist/types/helpers/valuesType.cjs +1 -0
- package/dist/types/helpers/valuesType.d.ts +1 -0
- package/dist/types/helpers/valuesType.mjs +0 -0
- package/dist/types/index.cjs +121 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.mjs +10 -0
- package/dist/types/lib/contract/abi.cjs +1 -0
- package/dist/types/lib/contract/abi.d.ts +71 -0
- package/dist/types/lib/contract/abi.mjs +0 -0
- package/dist/types/lib/contract/index.cjs +50 -0
- package/dist/types/lib/contract/index.d.ts +26 -0
- package/dist/types/lib/contract/index.mjs +8 -0
- package/dist/types/lib/contract/legacy.cjs +1 -0
- package/dist/types/lib/contract/legacy.d.ts +33 -0
- package/dist/types/lib/contract/legacy.mjs +0 -0
- package/dist/types/lib/contract/sierra.cjs +1 -0
- package/dist/types/lib/contract/sierra.d.ts +52 -0
- package/dist/types/lib/contract/sierra.mjs +0 -0
- package/dist/types/lib/index.cjs +61 -0
- package/dist/types/lib/index.d.ts +259 -0
- package/dist/types/lib/index.mjs +36 -0
- package/dist/types/provider/configuration.cjs +1 -0
- package/dist/types/provider/configuration.d.ts +20 -0
- package/dist/types/provider/configuration.mjs +0 -0
- package/dist/types/provider/index.cjs +27 -0
- package/dist/types/provider/index.d.ts +2 -0
- package/dist/types/provider/index.mjs +2 -0
- package/dist/types/provider/response.cjs +30 -0
- package/dist/types/provider/response.d.ts +98 -0
- package/dist/types/provider/response.mjs +1 -0
- package/dist/types/provider/spec.cjs +1 -0
- package/dist/types/provider/spec.d.ts +49 -0
- package/dist/types/provider/spec.mjs +0 -0
- package/dist/types/signer.cjs +1 -0
- package/dist/types/signer.d.ts +49 -0
- package/dist/types/signer.mjs +0 -0
- package/dist/types/transactionReceipt.cjs +1 -0
- package/dist/types/transactionReceipt.d.ts +23 -0
- package/dist/types/transactionReceipt.mjs +0 -0
- package/dist/types/typedData.cjs +12 -0
- package/dist/types/typedData.d.ts +1 -0
- package/dist/types/typedData.mjs +3 -0
- package/dist/utils/address.cjs +44 -0
- package/dist/utils/address.d.ts +55 -0
- package/dist/utils/address.mjs +35 -0
- package/dist/utils/assert.cjs +11 -0
- package/dist/utils/assert.d.ts +12 -0
- package/dist/utils/assert.mjs +5 -0
- package/dist/utils/cairoDataTypes/felt.cjs +31 -0
- package/dist/utils/cairoDataTypes/felt.d.ts +6 -0
- package/dist/utils/cairoDataTypes/felt.mjs +27 -0
- package/dist/utils/cairoDataTypes/uint256.cjs +113 -0
- package/dist/utils/cairoDataTypes/uint256.d.ts +72 -0
- package/dist/utils/cairoDataTypes/uint256.mjs +103 -0
- package/dist/utils/cairoDataTypes/uint512.cjs +125 -0
- package/dist/utils/cairoDataTypes/uint512.d.ts +76 -0
- package/dist/utils/cairoDataTypes/uint512.mjs +123 -0
- package/dist/utils/calldata/byteArray.cjs +27 -0
- package/dist/utils/calldata/byteArray.d.ts +32 -0
- package/dist/utils/calldata/byteArray.mjs +20 -0
- package/dist/utils/calldata/cairo.cjs +114 -0
- package/dist/utils/calldata/cairo.d.ts +196 -0
- package/dist/utils/calldata/cairo.mjs +68 -0
- package/dist/utils/calldata/enum/CairoCustomEnum.cjs +55 -0
- package/dist/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
- package/dist/utils/calldata/enum/CairoCustomEnum.mjs +50 -0
- package/dist/utils/calldata/enum/CairoOption.cjs +55 -0
- package/dist/utils/calldata/enum/CairoOption.d.ts +37 -0
- package/dist/utils/calldata/enum/CairoOption.mjs +50 -0
- package/dist/utils/calldata/enum/CairoResult.cjs +54 -0
- package/dist/utils/calldata/enum/CairoResult.d.ts +36 -0
- package/dist/utils/calldata/enum/CairoResult.mjs +47 -0
- package/dist/utils/calldata/enum/index.cjs +38 -0
- package/dist/utils/calldata/enum/index.d.ts +3 -0
- package/dist/utils/calldata/enum/index.mjs +3 -0
- package/dist/utils/calldata/formatter.cjs +55 -0
- package/dist/utils/calldata/formatter.d.ts +9 -0
- package/dist/utils/calldata/formatter.mjs +58 -0
- package/dist/utils/calldata/index.cjs +272 -0
- package/dist/utils/calldata/index.d.ts +90 -0
- package/dist/utils/calldata/index.mjs +276 -0
- package/dist/utils/calldata/parser/index.cjs +29 -0
- package/dist/utils/calldata/parser/index.d.ts +5 -0
- package/dist/utils/calldata/parser/index.mjs +21 -0
- package/dist/utils/calldata/parser/interface.cjs +8 -0
- package/dist/utils/calldata/parser/interface.d.ts +20 -0
- package/dist/utils/calldata/parser/interface.mjs +2 -0
- package/dist/utils/calldata/parser/parser-0-1.1.0.cjs +38 -0
- package/dist/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
- package/dist/utils/calldata/parser/parser-0-1.1.0.mjs +31 -0
- package/dist/utils/calldata/parser/parser-2.0.0.cjs +42 -0
- package/dist/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
- package/dist/utils/calldata/parser/parser-2.0.0.mjs +37 -0
- package/dist/utils/calldata/propertyOrder.cjs +159 -0
- package/dist/utils/calldata/propertyOrder.d.ts +2 -0
- package/dist/utils/calldata/propertyOrder.mjs +189 -0
- package/dist/utils/calldata/requestParser.cjs +204 -0
- package/dist/utils/calldata/requestParser.d.ts +11 -0
- package/dist/utils/calldata/requestParser.mjs +231 -0
- package/dist/utils/calldata/responseParser.cjs +200 -0
- package/dist/utils/calldata/responseParser.d.ts +11 -0
- package/dist/utils/calldata/responseParser.mjs +201 -0
- package/dist/utils/calldata/tuple.cjs +106 -0
- package/dist/utils/calldata/tuple.d.ts +6 -0
- package/dist/utils/calldata/tuple.mjs +88 -0
- package/dist/utils/calldata/validate.cjs +241 -0
- package/dist/utils/calldata/validate.d.ts +6 -0
- package/dist/utils/calldata/validate.mjs +315 -0
- package/dist/utils/contract.cjs +40 -0
- package/dist/utils/contract.d.ts +37 -0
- package/dist/utils/contract.mjs +31 -0
- package/dist/utils/ec.cjs +12 -0
- package/dist/utils/ec.d.ts +2 -0
- package/dist/utils/ec.mjs +2 -0
- package/dist/utils/encode.cjs +78 -0
- package/dist/utils/encode.d.ts +207 -0
- package/dist/utils/encode.mjs +56 -0
- package/dist/utils/eth.cjs +22 -0
- package/dist/utils/eth.d.ts +22 -0
- package/dist/utils/eth.mjs +14 -0
- package/dist/utils/events/index.cjs +144 -0
- package/dist/utils/events/index.d.ts +84 -0
- package/dist/utils/events/index.mjs +136 -0
- package/dist/utils/fetchPonyfill.cjs +14 -0
- package/dist/utils/fetchPonyfill.d.ts +2 -0
- package/dist/utils/fetchPonyfill.mjs +5 -0
- package/dist/utils/hash/classHash.cjs +151 -0
- package/dist/utils/hash/classHash.d.ts +120 -0
- package/dist/utils/hash/classHash.mjs +168 -0
- package/dist/utils/hash/index.cjs +49 -0
- package/dist/utils/hash/index.d.ts +7 -0
- package/dist/utils/hash/index.mjs +4 -0
- package/dist/utils/hash/selector.cjs +37 -0
- package/dist/utils/hash/selector.d.ts +57 -0
- package/dist/utils/hash/selector.mjs +28 -0
- package/dist/utils/hash/transactionHash/index.cjs +38 -0
- package/dist/utils/hash/transactionHash/index.d.ts +81 -0
- package/dist/utils/hash/transactionHash/index.mjs +102 -0
- package/dist/utils/hash/transactionHash/v2.cjs +31 -0
- package/dist/utils/hash/transactionHash/v2.d.ts +34 -0
- package/dist/utils/hash/transactionHash/v2.mjs +57 -0
- package/dist/utils/hash/transactionHash/v3.cjs +45 -0
- package/dist/utils/hash/transactionHash/v3.d.ts +24 -0
- package/dist/utils/hash/transactionHash/v3.mjs +80 -0
- package/dist/utils/json.cjs +21 -0
- package/dist/utils/json.d.ts +50 -0
- package/dist/utils/json.mjs +10 -0
- package/dist/utils/merkle.cjs +118 -0
- package/dist/utils/merkle.d.ts +87 -0
- package/dist/utils/merkle.mjs +114 -0
- package/dist/utils/num.cjs +109 -0
- package/dist/utils/num.d.ts +283 -0
- package/dist/utils/num.mjs +86 -0
- package/dist/utils/provider.cjs +182 -0
- package/dist/utils/provider.d.ts +217 -0
- package/dist/utils/provider.mjs +158 -0
- package/dist/utils/responseParser/index.cjs +27 -0
- package/dist/utils/responseParser/index.d.ts +2 -0
- package/dist/utils/responseParser/index.mjs +2 -0
- package/dist/utils/responseParser/interface.cjs +8 -0
- package/dist/utils/responseParser/interface.d.ts +13 -0
- package/dist/utils/responseParser/interface.mjs +2 -0
- package/dist/utils/responseParser/rpc.cjs +83 -0
- package/dist/utils/responseParser/rpc.d.ts +19 -0
- package/dist/utils/responseParser/rpc.mjs +77 -0
- package/dist/utils/shortString.cjs +56 -0
- package/dist/utils/shortString.d.ts +116 -0
- package/dist/utils/shortString.mjs +39 -0
- package/dist/utils/stark.cjs +137 -0
- package/dist/utils/stark.d.ts +224 -0
- package/dist/utils/stark.mjs +109 -0
- package/dist/utils/starknetId.cjs +196 -0
- package/dist/utils/starknetId.d.ts +182 -0
- package/dist/utils/starknetId.mjs +185 -0
- package/dist/utils/transaction.cjs +115 -0
- package/dist/utils/transaction.d.ts +185 -0
- package/dist/utils/transaction.mjs +98 -0
- package/dist/utils/transactionReceipt.cjs +54 -0
- package/dist/utils/transactionReceipt.d.ts +33 -0
- package/dist/utils/transactionReceipt.mjs +49 -0
- package/dist/utils/typedData.cjs +285 -0
- package/dist/utils/typedData.d.ts +54 -0
- package/dist/utils/typedData.mjs +286 -0
- package/dist/utils/uint256.cjs +30 -0
- package/dist/utils/uint256.d.ts +45 -0
- package/dist/utils/uint256.mjs +11 -0
- package/dist/utils/url.cjs +35 -0
- package/dist/utils/url.d.ts +29 -0
- package/dist/utils/url.mjs +27 -0
- package/dist/wallet/account.cjs +115 -0
- package/dist/wallet/account.d.ts +31 -0
- package/dist/wallet/account.mjs +112 -0
- package/dist/wallet/connect.cjs +90 -0
- package/dist/wallet/connect.d.ts +82 -0
- package/dist/wallet/connect.mjs +64 -0
- package/dist/wallet/index.cjs +16 -0
- package/dist/wallet/index.d.ts +1 -0
- package/dist/wallet/index.mjs +1 -0
- package/dist/wallet/types.cjs +1 -0
- package/dist/wallet/types.d.ts +4 -0
- package/dist/wallet/types.mjs +0 -0
- package/package.json +13 -13
- package/dist/index.js +0 -7426
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isCairo1Abi } from "../cairo.mjs";
|
|
2
|
+
import { AbiParser1 } from "./parser-0-1.1.0.mjs";
|
|
3
|
+
import { AbiParser2 } from "./parser-2.0.0.mjs";
|
|
4
|
+
export function createAbiParser(abi) {
|
|
5
|
+
const version = getAbiVersion(abi);
|
|
6
|
+
if (version === 0 || version === 1) {
|
|
7
|
+
return new AbiParser1(abi);
|
|
8
|
+
}
|
|
9
|
+
if (version === 2) {
|
|
10
|
+
return new AbiParser2(abi);
|
|
11
|
+
}
|
|
12
|
+
throw Error(`Unsupported ABI version ${version}`);
|
|
13
|
+
}
|
|
14
|
+
export function getAbiVersion(abi) {
|
|
15
|
+
if (abi.find((it) => it.type === "interface")) return 2;
|
|
16
|
+
if (isCairo1Abi(abi)) return 1;
|
|
17
|
+
return 0;
|
|
18
|
+
}
|
|
19
|
+
export function isNoConstructorValid(method, argsCalldata, abiMethod) {
|
|
20
|
+
return method === "constructor" && !abiMethod && !argsCalldata.length;
|
|
21
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Abi, FunctionAbi } from '../../../types';
|
|
2
|
+
export declare abstract class AbiParserInterface {
|
|
3
|
+
/**
|
|
4
|
+
* Helper to calculate inputs length from abi
|
|
5
|
+
* @param abiMethod FunctionAbi
|
|
6
|
+
* @return number
|
|
7
|
+
*/
|
|
8
|
+
abstract methodInputsLength(abiMethod: FunctionAbi): number;
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @param name string
|
|
12
|
+
* @return FunctionAbi | undefined
|
|
13
|
+
*/
|
|
14
|
+
abstract getMethod(name: string): FunctionAbi | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Return Abi in legacy format
|
|
17
|
+
* @return Abi
|
|
18
|
+
*/
|
|
19
|
+
abstract getLegacyFormat(): Abi;
|
|
20
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AbiParser1 = void 0;
|
|
7
|
+
var _cairo = require("../cairo.cjs");
|
|
8
|
+
class AbiParser1 {
|
|
9
|
+
abi;
|
|
10
|
+
constructor(abi) {
|
|
11
|
+
this.abi = abi;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* abi method inputs length without '_len' inputs
|
|
15
|
+
* cairo 0 reducer
|
|
16
|
+
* @param abiMethod FunctionAbi
|
|
17
|
+
* @returns number
|
|
18
|
+
*/
|
|
19
|
+
methodInputsLength(abiMethod) {
|
|
20
|
+
return abiMethod.inputs.reduce((acc, input) => !(0, _cairo.isLen)(input.name) ? acc + 1 : acc, 0);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* get method definition from abi
|
|
24
|
+
* @param name string
|
|
25
|
+
* @returns FunctionAbi | undefined
|
|
26
|
+
*/
|
|
27
|
+
getMethod(name) {
|
|
28
|
+
return this.abi.find(it => it.name === name);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get Abi in legacy format
|
|
32
|
+
* @returns Abi
|
|
33
|
+
*/
|
|
34
|
+
getLegacyFormat() {
|
|
35
|
+
return this.abi;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.AbiParser1 = AbiParser1;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Abi, FunctionAbi } from '../../../types';
|
|
2
|
+
import { AbiParserInterface } from './interface';
|
|
3
|
+
export declare class AbiParser1 implements AbiParserInterface {
|
|
4
|
+
abi: Abi;
|
|
5
|
+
constructor(abi: Abi);
|
|
6
|
+
/**
|
|
7
|
+
* abi method inputs length without '_len' inputs
|
|
8
|
+
* cairo 0 reducer
|
|
9
|
+
* @param abiMethod FunctionAbi
|
|
10
|
+
* @returns number
|
|
11
|
+
*/
|
|
12
|
+
methodInputsLength(abiMethod: FunctionAbi): number;
|
|
13
|
+
/**
|
|
14
|
+
* get method definition from abi
|
|
15
|
+
* @param name string
|
|
16
|
+
* @returns FunctionAbi | undefined
|
|
17
|
+
*/
|
|
18
|
+
getMethod(name: string): FunctionAbi | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Get Abi in legacy format
|
|
21
|
+
* @returns Abi
|
|
22
|
+
*/
|
|
23
|
+
getLegacyFormat(): Abi;
|
|
24
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { isLen } from "../cairo.mjs";
|
|
2
|
+
export class AbiParser1 {
|
|
3
|
+
abi;
|
|
4
|
+
constructor(abi) {
|
|
5
|
+
this.abi = abi;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* abi method inputs length without '_len' inputs
|
|
9
|
+
* cairo 0 reducer
|
|
10
|
+
* @param abiMethod FunctionAbi
|
|
11
|
+
* @returns number
|
|
12
|
+
*/
|
|
13
|
+
methodInputsLength(abiMethod) {
|
|
14
|
+
return abiMethod.inputs.reduce((acc, input) => !isLen(input.name) ? acc + 1 : acc, 0);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* get method definition from abi
|
|
18
|
+
* @param name string
|
|
19
|
+
* @returns FunctionAbi | undefined
|
|
20
|
+
*/
|
|
21
|
+
getMethod(name) {
|
|
22
|
+
return this.abi.find((it) => it.name === name);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get Abi in legacy format
|
|
26
|
+
* @returns Abi
|
|
27
|
+
*/
|
|
28
|
+
getLegacyFormat() {
|
|
29
|
+
return this.abi;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AbiParser2 = void 0;
|
|
7
|
+
class AbiParser2 {
|
|
8
|
+
abi;
|
|
9
|
+
constructor(abi) {
|
|
10
|
+
this.abi = abi;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* abi method inputs length
|
|
14
|
+
* @param abiMethod FunctionAbi
|
|
15
|
+
* @returns number
|
|
16
|
+
*/
|
|
17
|
+
methodInputsLength(abiMethod) {
|
|
18
|
+
return abiMethod.inputs.length;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* get method definition from abi
|
|
22
|
+
* @param name string
|
|
23
|
+
* @returns FunctionAbi | undefined
|
|
24
|
+
*/
|
|
25
|
+
getMethod(name) {
|
|
26
|
+
const intf = this.abi.find(it => it.type === "interface");
|
|
27
|
+
return intf.items.find(it => it.name === name);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get Abi in legacy format
|
|
31
|
+
* @returns Abi
|
|
32
|
+
*/
|
|
33
|
+
getLegacyFormat() {
|
|
34
|
+
return this.abi.flatMap(e => {
|
|
35
|
+
if (e.type === "interface") {
|
|
36
|
+
return e.items;
|
|
37
|
+
}
|
|
38
|
+
return e;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.AbiParser2 = AbiParser2;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Abi, FunctionAbi } from '../../../types';
|
|
2
|
+
import { AbiParserInterface } from './interface';
|
|
3
|
+
export declare class AbiParser2 implements AbiParserInterface {
|
|
4
|
+
abi: Abi;
|
|
5
|
+
constructor(abi: Abi);
|
|
6
|
+
/**
|
|
7
|
+
* abi method inputs length
|
|
8
|
+
* @param abiMethod FunctionAbi
|
|
9
|
+
* @returns number
|
|
10
|
+
*/
|
|
11
|
+
methodInputsLength(abiMethod: FunctionAbi): number;
|
|
12
|
+
/**
|
|
13
|
+
* get method definition from abi
|
|
14
|
+
* @param name string
|
|
15
|
+
* @returns FunctionAbi | undefined
|
|
16
|
+
*/
|
|
17
|
+
getMethod(name: string): FunctionAbi | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Get Abi in legacy format
|
|
20
|
+
* @returns Abi
|
|
21
|
+
*/
|
|
22
|
+
getLegacyFormat(): Abi;
|
|
23
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export class AbiParser2 {
|
|
2
|
+
abi;
|
|
3
|
+
constructor(abi) {
|
|
4
|
+
this.abi = abi;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* abi method inputs length
|
|
8
|
+
* @param abiMethod FunctionAbi
|
|
9
|
+
* @returns number
|
|
10
|
+
*/
|
|
11
|
+
methodInputsLength(abiMethod) {
|
|
12
|
+
return abiMethod.inputs.length;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* get method definition from abi
|
|
16
|
+
* @param name string
|
|
17
|
+
* @returns FunctionAbi | undefined
|
|
18
|
+
*/
|
|
19
|
+
getMethod(name) {
|
|
20
|
+
const intf = this.abi.find(
|
|
21
|
+
(it) => it.type === "interface"
|
|
22
|
+
);
|
|
23
|
+
return intf.items.find((it) => it.name === name);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get Abi in legacy format
|
|
27
|
+
* @returns Abi
|
|
28
|
+
*/
|
|
29
|
+
getLegacyFormat() {
|
|
30
|
+
return this.abi.flatMap((e) => {
|
|
31
|
+
if (e.type === "interface") {
|
|
32
|
+
return e.items;
|
|
33
|
+
}
|
|
34
|
+
return e;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
module.exports = orderPropsByAbi;
|
|
7
|
+
var _uint = require("../cairoDataTypes/uint256.cjs");
|
|
8
|
+
var _uint2 = require("../cairoDataTypes/uint512.cjs");
|
|
9
|
+
var _cairo = require("./cairo.cjs");
|
|
10
|
+
var _enum = require("./enum/index.cjs");
|
|
11
|
+
var _tuple = _interopRequireDefault(require("./tuple.cjs"));
|
|
12
|
+
var _shortString = require("../shortString.cjs");
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
function errorU256(key) {
|
|
15
|
+
return Error(`Your object includes the property : ${key}, containing an Uint256 object without the 'low' and 'high' keys.`);
|
|
16
|
+
}
|
|
17
|
+
function errorU512(key) {
|
|
18
|
+
return Error(`Your object includes the property : ${key}, containing an Uint512 object without the 'limb0' to 'limb3' keys.`);
|
|
19
|
+
}
|
|
20
|
+
function orderPropsByAbi(unorderedObject, abiOfObject, structs, enums) {
|
|
21
|
+
const orderInput = (unorderedItem, abiType) => {
|
|
22
|
+
if ((0, _cairo.isTypeArray)(abiType)) {
|
|
23
|
+
return orderArray(unorderedItem, abiType);
|
|
24
|
+
}
|
|
25
|
+
if ((0, _cairo.isTypeEnum)(abiType, enums)) {
|
|
26
|
+
const abiObj = enums[abiType];
|
|
27
|
+
return orderEnum(unorderedItem, abiObj);
|
|
28
|
+
}
|
|
29
|
+
if ((0, _cairo.isTypeTuple)(abiType)) {
|
|
30
|
+
return orderTuple(unorderedItem, abiType);
|
|
31
|
+
}
|
|
32
|
+
if ((0, _cairo.isTypeEthAddress)(abiType)) {
|
|
33
|
+
return unorderedItem;
|
|
34
|
+
}
|
|
35
|
+
if ((0, _cairo.isTypeNonZero)(abiType)) {
|
|
36
|
+
return unorderedItem;
|
|
37
|
+
}
|
|
38
|
+
if ((0, _cairo.isTypeByteArray)(abiType)) {
|
|
39
|
+
return unorderedItem;
|
|
40
|
+
}
|
|
41
|
+
if ((0, _cairo.isTypeSecp256k1Point)(abiType)) {
|
|
42
|
+
return unorderedItem;
|
|
43
|
+
}
|
|
44
|
+
if (_uint.CairoUint256.isAbiType(abiType)) {
|
|
45
|
+
const u256 = unorderedItem;
|
|
46
|
+
if (typeof u256 !== "object") {
|
|
47
|
+
return u256;
|
|
48
|
+
}
|
|
49
|
+
if (!("low" in u256 && "high" in u256)) {
|
|
50
|
+
throw errorU256(abiType);
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
low: u256.low,
|
|
54
|
+
high: u256.high
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (_uint2.CairoUint512.isAbiType(abiType)) {
|
|
58
|
+
const u512 = unorderedItem;
|
|
59
|
+
if (typeof u512 !== "object") {
|
|
60
|
+
return u512;
|
|
61
|
+
}
|
|
62
|
+
if (!["limb0", "limb1", "limb2", "limb3"].every(key => key in u512)) {
|
|
63
|
+
throw errorU512(abiType);
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
limb0: u512.limb0,
|
|
67
|
+
limb1: u512.limb1,
|
|
68
|
+
limb2: u512.limb2,
|
|
69
|
+
limb3: u512.limb3
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if ((0, _cairo.isTypeStruct)(abiType, structs)) {
|
|
73
|
+
const abiOfStruct = structs[abiType].members;
|
|
74
|
+
return orderStruct(unorderedItem, abiOfStruct);
|
|
75
|
+
}
|
|
76
|
+
return unorderedItem;
|
|
77
|
+
};
|
|
78
|
+
const orderStruct = (unorderedObject2, abiObject) => {
|
|
79
|
+
const orderedObject2 = abiObject.reduce((orderedObject, abiParam) => {
|
|
80
|
+
const setProperty = value => Object.defineProperty(orderedObject, abiParam.name, {
|
|
81
|
+
enumerable: true,
|
|
82
|
+
value: value ?? unorderedObject2[abiParam.name]
|
|
83
|
+
});
|
|
84
|
+
if (unorderedObject2[abiParam.name] === "undefined") {
|
|
85
|
+
if ((0, _cairo.isCairo1Type)(abiParam.type) || !(0, _cairo.isLen)(abiParam.name)) {
|
|
86
|
+
throw Error(`Your object needs a property with key : ${abiParam.name} .`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
setProperty(orderInput(unorderedObject2[abiParam.name], abiParam.type));
|
|
90
|
+
return orderedObject;
|
|
91
|
+
}, {});
|
|
92
|
+
return orderedObject2;
|
|
93
|
+
};
|
|
94
|
+
function orderArray(myArray, abiParam) {
|
|
95
|
+
const typeInArray = (0, _cairo.getArrayType)(abiParam);
|
|
96
|
+
if ((0, _shortString.isString)(myArray)) {
|
|
97
|
+
return myArray;
|
|
98
|
+
}
|
|
99
|
+
return myArray.map(myElem => orderInput(myElem, typeInArray));
|
|
100
|
+
}
|
|
101
|
+
function orderTuple(unorderedObject2, abiParam) {
|
|
102
|
+
const typeList = (0, _tuple.default)(abiParam);
|
|
103
|
+
const orderedObject2 = typeList.reduce((orderedObject, abiTypeCairoX, index) => {
|
|
104
|
+
const myObjKeys = Object.keys(unorderedObject2);
|
|
105
|
+
const setProperty = value => Object.defineProperty(orderedObject, index.toString(), {
|
|
106
|
+
enumerable: true,
|
|
107
|
+
value: value ?? unorderedObject2[myObjKeys[index]]
|
|
108
|
+
});
|
|
109
|
+
const abiType = abiTypeCairoX?.type ? abiTypeCairoX.type : abiTypeCairoX;
|
|
110
|
+
setProperty(orderInput(unorderedObject2[myObjKeys[index]], abiType));
|
|
111
|
+
return orderedObject;
|
|
112
|
+
}, {});
|
|
113
|
+
return orderedObject2;
|
|
114
|
+
}
|
|
115
|
+
const orderEnum = (unorderedObject2, abiObject) => {
|
|
116
|
+
if ((0, _cairo.isTypeResult)(abiObject.name)) {
|
|
117
|
+
const unorderedResult = unorderedObject2;
|
|
118
|
+
const resultOkType = abiObject.name.substring(abiObject.name.indexOf("<") + 1, abiObject.name.lastIndexOf(","));
|
|
119
|
+
const resultErrType = abiObject.name.substring(abiObject.name.indexOf(",") + 1, abiObject.name.lastIndexOf(">"));
|
|
120
|
+
if (unorderedResult.isOk()) {
|
|
121
|
+
return new _enum.CairoResult(_enum.CairoResultVariant.Ok, orderInput(unorderedObject2.unwrap(), resultOkType));
|
|
122
|
+
}
|
|
123
|
+
return new _enum.CairoResult(_enum.CairoResultVariant.Err, orderInput(unorderedObject2.unwrap(), resultErrType));
|
|
124
|
+
}
|
|
125
|
+
if ((0, _cairo.isTypeOption)(abiObject.name)) {
|
|
126
|
+
const unorderedOption = unorderedObject2;
|
|
127
|
+
const resultSomeType = abiObject.name.substring(abiObject.name.indexOf("<") + 1, abiObject.name.lastIndexOf(">"));
|
|
128
|
+
if (unorderedOption.isSome()) {
|
|
129
|
+
return new _enum.CairoOption(_enum.CairoOptionVariant.Some, orderInput(unorderedOption.unwrap(), resultSomeType));
|
|
130
|
+
}
|
|
131
|
+
return new _enum.CairoOption(_enum.CairoOptionVariant.None, {});
|
|
132
|
+
}
|
|
133
|
+
const unorderedCustomEnum = unorderedObject2;
|
|
134
|
+
const variants = Object.entries(unorderedCustomEnum.variant);
|
|
135
|
+
const newEntries = variants.map(variant => {
|
|
136
|
+
if (typeof variant[1] === "undefined") {
|
|
137
|
+
return variant;
|
|
138
|
+
}
|
|
139
|
+
const variantType = abiObject.type.substring(abiObject.type.lastIndexOf("<") + 1, abiObject.type.lastIndexOf(">"));
|
|
140
|
+
if (variantType === "()") {
|
|
141
|
+
return variant;
|
|
142
|
+
}
|
|
143
|
+
return [variant[0], orderInput(unorderedCustomEnum.unwrap(), variantType)];
|
|
144
|
+
});
|
|
145
|
+
return new _enum.CairoCustomEnum(Object.fromEntries(newEntries));
|
|
146
|
+
};
|
|
147
|
+
const finalOrderedObject = abiOfObject.reduce((orderedObject, abiParam) => {
|
|
148
|
+
const setProperty = value => Object.defineProperty(orderedObject, abiParam.name, {
|
|
149
|
+
enumerable: true,
|
|
150
|
+
value
|
|
151
|
+
});
|
|
152
|
+
if ((0, _cairo.isLen)(abiParam.name) && !(0, _cairo.isCairo1Type)(abiParam.type)) {
|
|
153
|
+
return orderedObject;
|
|
154
|
+
}
|
|
155
|
+
setProperty(orderInput(unorderedObject[abiParam.name], abiParam.type));
|
|
156
|
+
return orderedObject;
|
|
157
|
+
}, {});
|
|
158
|
+
return finalOrderedObject;
|
|
159
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { CairoUint256 } from "../cairoDataTypes/uint256.mjs";
|
|
2
|
+
import { CairoUint512 } from "../cairoDataTypes/uint512.mjs";
|
|
3
|
+
import {
|
|
4
|
+
getArrayType,
|
|
5
|
+
isCairo1Type,
|
|
6
|
+
isLen,
|
|
7
|
+
isTypeArray,
|
|
8
|
+
isTypeByteArray,
|
|
9
|
+
isTypeEnum,
|
|
10
|
+
isTypeEthAddress,
|
|
11
|
+
isTypeNonZero,
|
|
12
|
+
isTypeOption,
|
|
13
|
+
isTypeResult,
|
|
14
|
+
isTypeSecp256k1Point,
|
|
15
|
+
isTypeStruct,
|
|
16
|
+
isTypeTuple
|
|
17
|
+
} from "./cairo.mjs";
|
|
18
|
+
import {
|
|
19
|
+
CairoCustomEnum,
|
|
20
|
+
CairoOption,
|
|
21
|
+
CairoOptionVariant,
|
|
22
|
+
CairoResult,
|
|
23
|
+
CairoResultVariant
|
|
24
|
+
} from "./enum/index.mjs";
|
|
25
|
+
import extractTupleMemberTypes from "./tuple.mjs";
|
|
26
|
+
import { isString } from "../shortString.mjs";
|
|
27
|
+
function errorU256(key) {
|
|
28
|
+
return Error(
|
|
29
|
+
`Your object includes the property : ${key}, containing an Uint256 object without the 'low' and 'high' keys.`
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
function errorU512(key) {
|
|
33
|
+
return Error(
|
|
34
|
+
`Your object includes the property : ${key}, containing an Uint512 object without the 'limb0' to 'limb3' keys.`
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
export default function orderPropsByAbi(unorderedObject, abiOfObject, structs, enums) {
|
|
38
|
+
const orderInput = (unorderedItem, abiType) => {
|
|
39
|
+
if (isTypeArray(abiType)) {
|
|
40
|
+
return orderArray(unorderedItem, abiType);
|
|
41
|
+
}
|
|
42
|
+
if (isTypeEnum(abiType, enums)) {
|
|
43
|
+
const abiObj = enums[abiType];
|
|
44
|
+
return orderEnum(unorderedItem, abiObj);
|
|
45
|
+
}
|
|
46
|
+
if (isTypeTuple(abiType)) {
|
|
47
|
+
return orderTuple(unorderedItem, abiType);
|
|
48
|
+
}
|
|
49
|
+
if (isTypeEthAddress(abiType)) {
|
|
50
|
+
return unorderedItem;
|
|
51
|
+
}
|
|
52
|
+
if (isTypeNonZero(abiType)) {
|
|
53
|
+
return unorderedItem;
|
|
54
|
+
}
|
|
55
|
+
if (isTypeByteArray(abiType)) {
|
|
56
|
+
return unorderedItem;
|
|
57
|
+
}
|
|
58
|
+
if (isTypeSecp256k1Point(abiType)) {
|
|
59
|
+
return unorderedItem;
|
|
60
|
+
}
|
|
61
|
+
if (CairoUint256.isAbiType(abiType)) {
|
|
62
|
+
const u256 = unorderedItem;
|
|
63
|
+
if (typeof u256 !== "object") {
|
|
64
|
+
return u256;
|
|
65
|
+
}
|
|
66
|
+
if (!("low" in u256 && "high" in u256)) {
|
|
67
|
+
throw errorU256(abiType);
|
|
68
|
+
}
|
|
69
|
+
return { low: u256.low, high: u256.high };
|
|
70
|
+
}
|
|
71
|
+
if (CairoUint512.isAbiType(abiType)) {
|
|
72
|
+
const u512 = unorderedItem;
|
|
73
|
+
if (typeof u512 !== "object") {
|
|
74
|
+
return u512;
|
|
75
|
+
}
|
|
76
|
+
if (!["limb0", "limb1", "limb2", "limb3"].every((key) => key in u512)) {
|
|
77
|
+
throw errorU512(abiType);
|
|
78
|
+
}
|
|
79
|
+
return { limb0: u512.limb0, limb1: u512.limb1, limb2: u512.limb2, limb3: u512.limb3 };
|
|
80
|
+
}
|
|
81
|
+
if (isTypeStruct(abiType, structs)) {
|
|
82
|
+
const abiOfStruct = structs[abiType].members;
|
|
83
|
+
return orderStruct(unorderedItem, abiOfStruct);
|
|
84
|
+
}
|
|
85
|
+
return unorderedItem;
|
|
86
|
+
};
|
|
87
|
+
const orderStruct = (unorderedObject2, abiObject) => {
|
|
88
|
+
const orderedObject2 = abiObject.reduce((orderedObject, abiParam) => {
|
|
89
|
+
const setProperty = (value) => Object.defineProperty(orderedObject, abiParam.name, {
|
|
90
|
+
enumerable: true,
|
|
91
|
+
value: value ?? unorderedObject2[abiParam.name]
|
|
92
|
+
});
|
|
93
|
+
if (unorderedObject2[abiParam.name] === "undefined") {
|
|
94
|
+
if (isCairo1Type(abiParam.type) || !isLen(abiParam.name)) {
|
|
95
|
+
throw Error(`Your object needs a property with key : ${abiParam.name} .`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
setProperty(orderInput(unorderedObject2[abiParam.name], abiParam.type));
|
|
99
|
+
return orderedObject;
|
|
100
|
+
}, {});
|
|
101
|
+
return orderedObject2;
|
|
102
|
+
};
|
|
103
|
+
function orderArray(myArray, abiParam) {
|
|
104
|
+
const typeInArray = getArrayType(abiParam);
|
|
105
|
+
if (isString(myArray)) {
|
|
106
|
+
return myArray;
|
|
107
|
+
}
|
|
108
|
+
return myArray.map((myElem) => orderInput(myElem, typeInArray));
|
|
109
|
+
}
|
|
110
|
+
function orderTuple(unorderedObject2, abiParam) {
|
|
111
|
+
const typeList = extractTupleMemberTypes(abiParam);
|
|
112
|
+
const orderedObject2 = typeList.reduce((orderedObject, abiTypeCairoX, index) => {
|
|
113
|
+
const myObjKeys = Object.keys(unorderedObject2);
|
|
114
|
+
const setProperty = (value) => Object.defineProperty(orderedObject, index.toString(), {
|
|
115
|
+
enumerable: true,
|
|
116
|
+
value: value ?? unorderedObject2[myObjKeys[index]]
|
|
117
|
+
});
|
|
118
|
+
const abiType = abiTypeCairoX?.type ? abiTypeCairoX.type : abiTypeCairoX;
|
|
119
|
+
setProperty(orderInput(unorderedObject2[myObjKeys[index]], abiType));
|
|
120
|
+
return orderedObject;
|
|
121
|
+
}, {});
|
|
122
|
+
return orderedObject2;
|
|
123
|
+
}
|
|
124
|
+
const orderEnum = (unorderedObject2, abiObject) => {
|
|
125
|
+
if (isTypeResult(abiObject.name)) {
|
|
126
|
+
const unorderedResult = unorderedObject2;
|
|
127
|
+
const resultOkType = abiObject.name.substring(
|
|
128
|
+
abiObject.name.indexOf("<") + 1,
|
|
129
|
+
abiObject.name.lastIndexOf(",")
|
|
130
|
+
);
|
|
131
|
+
const resultErrType = abiObject.name.substring(
|
|
132
|
+
abiObject.name.indexOf(",") + 1,
|
|
133
|
+
abiObject.name.lastIndexOf(">")
|
|
134
|
+
);
|
|
135
|
+
if (unorderedResult.isOk()) {
|
|
136
|
+
return new CairoResult(
|
|
137
|
+
CairoResultVariant.Ok,
|
|
138
|
+
orderInput(unorderedObject2.unwrap(), resultOkType)
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
return new CairoResult(
|
|
142
|
+
CairoResultVariant.Err,
|
|
143
|
+
orderInput(unorderedObject2.unwrap(), resultErrType)
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
if (isTypeOption(abiObject.name)) {
|
|
147
|
+
const unorderedOption = unorderedObject2;
|
|
148
|
+
const resultSomeType = abiObject.name.substring(
|
|
149
|
+
abiObject.name.indexOf("<") + 1,
|
|
150
|
+
abiObject.name.lastIndexOf(">")
|
|
151
|
+
);
|
|
152
|
+
if (unorderedOption.isSome()) {
|
|
153
|
+
return new CairoOption(
|
|
154
|
+
CairoOptionVariant.Some,
|
|
155
|
+
orderInput(unorderedOption.unwrap(), resultSomeType)
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
return new CairoOption(CairoOptionVariant.None, {});
|
|
159
|
+
}
|
|
160
|
+
const unorderedCustomEnum = unorderedObject2;
|
|
161
|
+
const variants = Object.entries(unorderedCustomEnum.variant);
|
|
162
|
+
const newEntries = variants.map((variant) => {
|
|
163
|
+
if (typeof variant[1] === "undefined") {
|
|
164
|
+
return variant;
|
|
165
|
+
}
|
|
166
|
+
const variantType = abiObject.type.substring(
|
|
167
|
+
abiObject.type.lastIndexOf("<") + 1,
|
|
168
|
+
abiObject.type.lastIndexOf(">")
|
|
169
|
+
);
|
|
170
|
+
if (variantType === "()") {
|
|
171
|
+
return variant;
|
|
172
|
+
}
|
|
173
|
+
return [variant[0], orderInput(unorderedCustomEnum.unwrap(), variantType)];
|
|
174
|
+
});
|
|
175
|
+
return new CairoCustomEnum(Object.fromEntries(newEntries));
|
|
176
|
+
};
|
|
177
|
+
const finalOrderedObject = abiOfObject.reduce((orderedObject, abiParam) => {
|
|
178
|
+
const setProperty = (value) => Object.defineProperty(orderedObject, abiParam.name, {
|
|
179
|
+
enumerable: true,
|
|
180
|
+
value
|
|
181
|
+
});
|
|
182
|
+
if (isLen(abiParam.name) && !isCairo1Type(abiParam.type)) {
|
|
183
|
+
return orderedObject;
|
|
184
|
+
}
|
|
185
|
+
setProperty(orderInput(unorderedObject[abiParam.name], abiParam.type));
|
|
186
|
+
return orderedObject;
|
|
187
|
+
}, {});
|
|
188
|
+
return finalOrderedObject;
|
|
189
|
+
}
|