Skip to content

Commit 9ff38c2

Browse files
authored
chore: update supported RPC errors for RPC v0.8.0-rc3 (#1339)
1 parent 411eeec commit 9ff38c2

File tree

7 files changed

+71
-59
lines changed

7 files changed

+71
-59
lines changed

__tests__/account.test.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -363,22 +363,27 @@ describe('deploy and test Wallet', () => {
363363
expect(balance.low).toStrictEqual(toBigInt(990));
364364
});
365365

366-
// TODO: @penovicp this is your space, for some reson this return Object, disabled at the moment
367-
xtest('execute with and without deprecated abis parameter', async () => {
366+
test('execute with and without deprecated abis parameter', async () => {
368367
const transaction = {
369368
contractAddress: erc20Address,
370369
entrypoint: 'transfer',
371370
calldata: [erc20.address, '10', '0'],
372371
};
373-
const details = { maxFee: 0n };
372+
const details: Parameters<(typeof account)['execute']>[2] = { nonce: 0 };
374373

375-
const error1: RpcError = await account.execute(transaction, details).catch((e) => e);
374+
let error1: RpcError | undefined;
375+
// eslint-disable-next-line no-return-assign
376+
await account.execute(transaction, details).catch((e) => (error1 = e));
377+
expect(error1).toBeDefined();
376378
expect(error1).toBeInstanceOf(RpcError);
377-
expect(error1.isType('INSUFFICIENT_MAX_FEE')).toBe(true);
379+
expect(error1!.isType('TRANSACTION_EXECUTION_ERROR')).toBe(true);
378380

379-
const error2: RpcError = await account.execute(transaction, undefined, details).catch((e) => e);
381+
let error2: RpcError | undefined;
382+
// eslint-disable-next-line no-return-assign
383+
await account.execute(transaction, undefined, details).catch((e) => (error2 = e));
384+
expect(error2).toBeDefined();
380385
expect(error2).toBeInstanceOf(RpcError);
381-
expect(error2.isType('INSUFFICIENT_MAX_FEE')).toBe(true);
386+
expect(error2!.isType('TRANSACTION_EXECUTION_ERROR')).toBe(true);
382387
});
383388

384389
test('execute with custom nonce', async () => {

__tests__/utils/errors.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { RPC, RpcError } from '../../src';
22

33
describe('Error utility tests', () => {
44
test('RpcError', () => {
5-
// TODO: @penovicp types 0.8 exporta u top level sve 0.7 exporta po komponentama, neznan jeli treba minjat test i mod da ocukuje oba tipa
65
const baseError: RPC.RPCSPEC08.UNEXPECTED_ERROR = {
76
code: 63,
87
message: 'An unexpected error occurred',

package-lock.json

Lines changed: 38 additions & 46 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
"prettier": "^3.2.5",
9191
"prettier-plugin-import-sort": "^0.0.7",
9292
"semantic-release": "^24.0.0",
93-
"starknet_specs": "github:starkware-libs/starknet-specs#v0.7.1",
93+
"starknet_specs": "github:starkware-libs/starknet-specs#v0.8.0-rc3",
9494
"tsup": "^8.0.2",
9595
"type-coverage": "^2.28.2",
9696
"typescript": "~5.7.0",

scripts/generateRpcErrorMap.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,18 @@
44
// - src/utils/errors/rpc.ts
55

66
const starknet_api_openrpc = require('starknet_specs/api/starknet_api_openrpc.json');
7+
const starknet_executables = require('starknet_specs/api/starknet_executables.json');
78
const starknet_trace_api_openrpc = require('starknet_specs/api/starknet_trace_api_openrpc.json');
89
const starknet_write_api = require('starknet_specs/api/starknet_write_api.json');
10+
const starknet_ws_api = require('starknet_specs/api/starknet_ws_api.json');
911

1012
const errorNameCodeMap = Object.fromEntries(
1113
Object.entries({
14+
...starknet_api_openrpc.components.errors,
15+
...starknet_executables.components.errors,
1216
...starknet_trace_api_openrpc.components.errors,
1317
...starknet_write_api.components.errors,
14-
...starknet_api_openrpc.components.errors,
18+
...starknet_ws_api.components.errors,
1519
})
1620
.map((e) => [e[0], e[1].code])
1721
.sort((a, b) => a[1] - b[1])

src/types/errors.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import { Errors } from 'starknet-types-07';
1+
import * as Errors from 'starknet-types-08';
22

33
// NOTE: generated with scripts/generateRpcErrorMap.js
44
export type RPC_ERROR_SET = {
55
FAILED_TO_RECEIVE_TXN: Errors.FAILED_TO_RECEIVE_TXN;
66
NO_TRACE_AVAILABLE: Errors.NO_TRACE_AVAILABLE;
77
CONTRACT_NOT_FOUND: Errors.CONTRACT_NOT_FOUND;
8+
ENTRYPOINT_NOT_FOUND: Errors.ENTRYPOINT_NOT_FOUND;
89
BLOCK_NOT_FOUND: Errors.BLOCK_NOT_FOUND;
910
INVALID_TXN_INDEX: Errors.INVALID_TXN_INDEX;
1011
CLASS_HASH_NOT_FOUND: Errors.CLASS_HASH_NOT_FOUND;
@@ -15,9 +16,10 @@ export type RPC_ERROR_SET = {
1516
TOO_MANY_KEYS_IN_FILTER: Errors.TOO_MANY_KEYS_IN_FILTER;
1617
CONTRACT_ERROR: Errors.CONTRACT_ERROR;
1718
TRANSACTION_EXECUTION_ERROR: Errors.TRANSACTION_EXECUTION_ERROR;
19+
STORAGE_PROOF_NOT_SUPPORTED: Errors.STORAGE_PROOF_NOT_SUPPORTED;
1820
CLASS_ALREADY_DECLARED: Errors.CLASS_ALREADY_DECLARED;
1921
INVALID_TRANSACTION_NONCE: Errors.INVALID_TRANSACTION_NONCE;
20-
INSUFFICIENT_MAX_FEE: Errors.INSUFFICIENT_MAX_FEE;
22+
INSUFFICIENT_RESOURCES_FOR_VALIDATE: Errors.INSUFFICIENT_RESOURCES_FOR_VALIDATE;
2123
INSUFFICIENT_ACCOUNT_BALANCE: Errors.INSUFFICIENT_ACCOUNT_BALANCE;
2224
VALIDATION_FAILURE: Errors.VALIDATION_FAILURE;
2325
COMPILATION_FAILED: Errors.COMPILATION_FAILED;
@@ -28,6 +30,10 @@ export type RPC_ERROR_SET = {
2830
UNSUPPORTED_TX_VERSION: Errors.UNSUPPORTED_TX_VERSION;
2931
UNSUPPORTED_CONTRACT_CLASS_VERSION: Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION;
3032
UNEXPECTED_ERROR: Errors.UNEXPECTED_ERROR;
33+
INVALID_SUBSCRIPTION_ID: Errors.INVALID_SUBSCRIPTION_ID;
34+
TOO_MANY_ADDRESSES_IN_FILTER: Errors.TOO_MANY_ADDRESSES_IN_FILTER;
35+
TOO_MANY_BLOCKS_BACK: Errors.TOO_MANY_BLOCKS_BACK;
36+
COMPILATION_ERROR: Errors.COMPILATION_ERROR;
3137
};
3238

3339
export type RPC_ERROR = RPC_ERROR_SET[keyof RPC_ERROR_SET];

src/utils/errors/rpc.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const errorCodes: { [K in keyof RPC_ERROR_SET]: RPC_ERROR_SET[K]['code'] } = {
55
FAILED_TO_RECEIVE_TXN: 1,
66
NO_TRACE_AVAILABLE: 10,
77
CONTRACT_NOT_FOUND: 20,
8+
ENTRYPOINT_NOT_FOUND: 21,
89
BLOCK_NOT_FOUND: 24,
910
INVALID_TXN_INDEX: 27,
1011
CLASS_HASH_NOT_FOUND: 28,
@@ -15,9 +16,10 @@ const errorCodes: { [K in keyof RPC_ERROR_SET]: RPC_ERROR_SET[K]['code'] } = {
1516
TOO_MANY_KEYS_IN_FILTER: 34,
1617
CONTRACT_ERROR: 40,
1718
TRANSACTION_EXECUTION_ERROR: 41,
19+
STORAGE_PROOF_NOT_SUPPORTED: 42,
1820
CLASS_ALREADY_DECLARED: 51,
1921
INVALID_TRANSACTION_NONCE: 52,
20-
INSUFFICIENT_MAX_FEE: 53,
22+
INSUFFICIENT_RESOURCES_FOR_VALIDATE: 53,
2123
INSUFFICIENT_ACCOUNT_BALANCE: 54,
2224
VALIDATION_FAILURE: 55,
2325
COMPILATION_FAILED: 56,
@@ -28,5 +30,9 @@ const errorCodes: { [K in keyof RPC_ERROR_SET]: RPC_ERROR_SET[K]['code'] } = {
2830
UNSUPPORTED_TX_VERSION: 61,
2931
UNSUPPORTED_CONTRACT_CLASS_VERSION: 62,
3032
UNEXPECTED_ERROR: 63,
33+
INVALID_SUBSCRIPTION_ID: 66,
34+
TOO_MANY_ADDRESSES_IN_FILTER: 67,
35+
TOO_MANY_BLOCKS_BACK: 68,
36+
COMPILATION_ERROR: 100,
3137
};
3238
export default errorCodes;

0 commit comments

Comments
 (0)