@solana/errors 2.0.0-experimental.6cea83c → 2.0.0-experimental.7712fc3
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/bin/cli.js +7 -0
- package/dist/cli.js +336 -0
- package/dist/index.browser.cjs +604 -5
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +466 -6
- package/dist/index.browser.js.map +1 -1
- package/dist/index.native.js +466 -6
- package/dist/index.native.js.map +1 -1
- package/dist/index.node.cjs +604 -5
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +466 -6
- package/dist/index.node.js.map +1 -1
- package/dist/types/codes.d.ts +141 -4
- package/dist/types/codes.d.ts.map +1 -1
- package/dist/types/context.d.ts +130 -4
- package/dist/types/context.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/instruction-error.d.ts +5 -0
- package/dist/types/instruction-error.d.ts.map +1 -0
- package/dist/types/messages.d.ts +1 -1
- package/dist/types/messages.d.ts.map +1 -1
- package/dist/types/rpc-enum-errors.d.ts +31 -0
- package/dist/types/rpc-enum-errors.d.ts.map +1 -0
- package/dist/types/transaction-error.d.ts +5 -0
- package/dist/types/transaction-error.d.ts.map +1 -0
- package/package.json +75 -98
- package/bin/cli.ts +0 -55
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EA4IH,eAAe,EAClB,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC;KAGtC,CAAC,IAAI,eAAe,GAAG,MAAM;CACjC,CAqNA,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SolanaErrorCode } from './codes.js';
|
|
2
|
+
import { SolanaErrorContext } from './context.js';
|
|
3
|
+
import { SolanaError } from './error.js';
|
|
4
|
+
type Config = Readonly<{
|
|
5
|
+
/**
|
|
6
|
+
* Oh, hello. You might wonder what in tarnation is going on here. Allow us to explain.
|
|
7
|
+
*
|
|
8
|
+
* One of the goals of `@solana/errors` is to allow errors that are not interesting to your
|
|
9
|
+
* application to shake out of your app bundle in production. This means that we must never
|
|
10
|
+
* export large hardcoded maps of error codes/messages.
|
|
11
|
+
*
|
|
12
|
+
* Unfortunately, where instruction and transaction errors from the RPC are concerned, we have
|
|
13
|
+
* no choice but to keep a map between the RPC `rpcEnumError` enum name and its corresponding
|
|
14
|
+
* `SolanaError` code. In the interest of implementing that map in as few bytes of source code
|
|
15
|
+
* as possible, we do the following:
|
|
16
|
+
*
|
|
17
|
+
* 1. Reserve a block of sequential error codes for the enum in question
|
|
18
|
+
* 2. Hardcode the list of enum names in that same order
|
|
19
|
+
* 3. Match the enum error name from the RPC with its index in that list, and reconstruct the
|
|
20
|
+
* `SolanaError` code by adding the `errorCodeBaseOffset` to that index
|
|
21
|
+
*/
|
|
22
|
+
errorCodeBaseOffset: number;
|
|
23
|
+
getErrorContext: (errorCode: SolanaErrorCode, rpcErrorName: string, rpcErrorContext?: unknown) => SolanaErrorContext[SolanaErrorCode];
|
|
24
|
+
orderedErrorNames: string[];
|
|
25
|
+
rpcEnumError: string | {
|
|
26
|
+
[key: string]: unknown;
|
|
27
|
+
};
|
|
28
|
+
}>;
|
|
29
|
+
export declare function getSolanaErrorFromRpcError({ errorCodeBaseOffset, getErrorContext, orderedErrorNames, rpcEnumError }: Config, constructorOpt: Function): SolanaError;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=rpc-enum-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-enum-errors.d.ts","sourceRoot":"","sources":["../../src/rpc-enum-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,KAAK,MAAM,GAAG,QAAQ,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,CACb,SAAS,EAAE,eAAe,EAC1B,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,OAAO,KACxB,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACzC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACrD,CAAC,CAAC;AAEH,wBAAgB,0BAA0B,CACtC,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAE,MAAM,EAEjF,cAAc,EAAE,QAAQ,GACzB,WAAW,CAiBb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-error.d.ts","sourceRoot":"","sources":["../../src/transaction-error.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAsDtC,wBAAgB,kCAAkC,CAAC,gBAAgB,EAAE,MAAM,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,WAAW,CAiCrH"}
|
package/package.json
CHANGED
|
@@ -1,103 +1,80 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"browser": {
|
|
7
|
-
"import": "./dist/index.browser.js",
|
|
8
|
-
"require": "./dist/index.browser.cjs"
|
|
9
|
-
},
|
|
10
|
-
"node": {
|
|
11
|
-
"import": "./dist/index.node.js",
|
|
12
|
-
"require": "./dist/index.node.cjs"
|
|
13
|
-
},
|
|
14
|
-
"react-native": "./dist/index.native.js",
|
|
15
|
-
"types": "./dist/types/index.d.ts"
|
|
16
|
-
},
|
|
2
|
+
"name": "@solana/errors",
|
|
3
|
+
"version": "2.0.0-experimental.7712fc3",
|
|
4
|
+
"description": "Throw, identify, and decode Solana JavaScript errors",
|
|
5
|
+
"exports": {
|
|
17
6
|
"browser": {
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
"import": "./dist/index.browser.js",
|
|
8
|
+
"require": "./dist/index.browser.cjs"
|
|
9
|
+
},
|
|
10
|
+
"node": {
|
|
11
|
+
"import": "./dist/index.node.js",
|
|
12
|
+
"require": "./dist/index.node.cjs"
|
|
20
13
|
},
|
|
21
|
-
"main": "./dist/index.node.cjs",
|
|
22
|
-
"module": "./dist/index.node.js",
|
|
23
14
|
"react-native": "./dist/index.native.js",
|
|
24
|
-
"types": "./dist/types/index.d.ts"
|
|
25
|
-
|
|
15
|
+
"types": "./dist/types/index.d.ts"
|
|
16
|
+
},
|
|
17
|
+
"browser": {
|
|
18
|
+
"./dist/index.node.cjs": "./dist/index.browser.cjs",
|
|
19
|
+
"./dist/index.node.js": "./dist/index.browser.js"
|
|
20
|
+
},
|
|
21
|
+
"main": "./dist/index.node.cjs",
|
|
22
|
+
"module": "./dist/index.node.js",
|
|
23
|
+
"react-native": "./dist/index.native.js",
|
|
24
|
+
"types": "./dist/types/index.d.ts",
|
|
25
|
+
"type": "module",
|
|
26
|
+
"files": [
|
|
27
|
+
"./dist/"
|
|
28
|
+
],
|
|
29
|
+
"sideEffects": false,
|
|
30
|
+
"keywords": [
|
|
31
|
+
"blockchain",
|
|
32
|
+
"solana",
|
|
33
|
+
"web3"
|
|
34
|
+
],
|
|
35
|
+
"bin": "./bin/cli.js",
|
|
36
|
+
"author": "Solana Labs Maintainers <maintainers@solanalabs.com>",
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "https://github.com/solana-labs/solana-web3.js"
|
|
41
|
+
},
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "http://github.com/solana-labs/solana-web3.js/issues"
|
|
44
|
+
},
|
|
45
|
+
"browserslist": [
|
|
46
|
+
"supports bigint and not dead",
|
|
47
|
+
"maintained node versions"
|
|
48
|
+
],
|
|
49
|
+
"engine": {
|
|
50
|
+
"node": ">=17.4"
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"chalk": "^5.3.0",
|
|
54
|
+
"commander": "^12.0.0"
|
|
55
|
+
},
|
|
56
|
+
"bundlewatch": {
|
|
57
|
+
"defaultCompression": "gzip",
|
|
26
58
|
"files": [
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"test:unit:browser": "jest -c node_modules/test-config/jest-unit.config.browser.ts --rootDir . --silent",
|
|
50
|
-
"test:unit:node": "jest -c node_modules/test-config/jest-unit.config.node.ts --rootDir . --silent"
|
|
51
|
-
},
|
|
52
|
-
"author": "Solana Labs Maintainers <maintainers@solanalabs.com>",
|
|
53
|
-
"license": "MIT",
|
|
54
|
-
"repository": {
|
|
55
|
-
"type": "git",
|
|
56
|
-
"url": "https://github.com/solana-labs/solana-web3.js"
|
|
57
|
-
},
|
|
58
|
-
"bugs": {
|
|
59
|
-
"url": "http://github.com/solana-labs/solana-web3.js/issues"
|
|
60
|
-
},
|
|
61
|
-
"browserslist": [
|
|
62
|
-
"supports bigint and not dead",
|
|
63
|
-
"maintained node versions"
|
|
64
|
-
],
|
|
65
|
-
"engine": {
|
|
66
|
-
"node": ">=17.4"
|
|
67
|
-
},
|
|
68
|
-
"devDependencies": {
|
|
69
|
-
"@solana/addresses": "2.0.0-experimental.b93299a",
|
|
70
|
-
"@solana/eslint-config-solana": "^1.0.2",
|
|
71
|
-
"@swc/jest": "^0.2.29",
|
|
72
|
-
"@types/jest": "^29.5.11",
|
|
73
|
-
"@types/node": "18.11.19",
|
|
74
|
-
"@typescript-eslint/eslint-plugin": "^6.13.2",
|
|
75
|
-
"@typescript-eslint/parser": "^6.3.0",
|
|
76
|
-
"agadoo": "^3.0.0",
|
|
77
|
-
"build-scripts": "0.0.0",
|
|
78
|
-
"chalk": "^5.3.0",
|
|
79
|
-
"commander": "^11.1.0",
|
|
80
|
-
"eslint": "^8.45.0",
|
|
81
|
-
"eslint-plugin-jest": "^27.4.2",
|
|
82
|
-
"eslint-plugin-sort-keys-fix": "^1.1.2",
|
|
83
|
-
"jest": "^29.7.0",
|
|
84
|
-
"jest-environment-jsdom": "^29.7.0",
|
|
85
|
-
"jest-runner-eslint": "^2.1.2",
|
|
86
|
-
"jest-runner-prettier": "^1.0.0",
|
|
87
|
-
"prettier": "^3.1",
|
|
88
|
-
"test-config": "0.0.0",
|
|
89
|
-
"tsconfig": "0.0.0",
|
|
90
|
-
"tsup": "^8.0.1",
|
|
91
|
-
"tsx": "^4.7.0",
|
|
92
|
-
"typescript": "^5.2.2",
|
|
93
|
-
"version-from-git": "^1.1.1"
|
|
94
|
-
},
|
|
95
|
-
"bundlewatch": {
|
|
96
|
-
"defaultCompression": "gzip",
|
|
97
|
-
"files": [
|
|
98
|
-
{
|
|
99
|
-
"path": "./dist/index*.js"
|
|
100
|
-
}
|
|
101
|
-
]
|
|
102
|
-
}
|
|
103
|
-
}
|
|
59
|
+
{
|
|
60
|
+
"path": "./dist/index*.js"
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"compile:js": "tsup --config build-scripts/tsup.config.package.ts && tsup src/cli.ts --format esm",
|
|
66
|
+
"compile:typedefs": "tsc -p ./tsconfig.declarations.json && node node_modules/@solana/build-scripts/add-js-extension-to-types.mjs",
|
|
67
|
+
"dev": "jest -c node_modules/@solana/test-config/jest-dev.config.ts --rootDir . --watch",
|
|
68
|
+
"publish-impl": "npm view $npm_package_name@$npm_package_version > /dev/null 2>&1 || pnpm publish --tag experimental --access public --no-git-checks",
|
|
69
|
+
"publish-packages": "pnpm prepublishOnly && pnpm publish-impl",
|
|
70
|
+
"style:fix": "pnpm eslint --fix src/* && pnpm prettier -w src/* package.json",
|
|
71
|
+
"test:lint": "jest -c node_modules/@solana/test-config/jest-lint.config.ts --rootDir . --silent",
|
|
72
|
+
"test:prettier": "jest -c node_modules/@solana/test-config/jest-prettier.config.ts --rootDir . --silent",
|
|
73
|
+
"test:treeshakability:browser": "agadoo dist/index.browser.js",
|
|
74
|
+
"test:treeshakability:native": "agadoo dist/index.native.js",
|
|
75
|
+
"test:treeshakability:node": "agadoo dist/index.node.js",
|
|
76
|
+
"test:typecheck": "tsc --noEmit",
|
|
77
|
+
"test:unit:browser": "jest -c node_modules/@solana/test-config/jest-unit.config.browser.ts --rootDir . --silent",
|
|
78
|
+
"test:unit:node": "jest -c node_modules/@solana/test-config/jest-unit.config.node.ts --rootDir . --silent"
|
|
79
|
+
}
|
|
80
|
+
}
|
package/bin/cli.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env -S tsx
|
|
2
|
-
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
import { Command, InvalidArgumentError } from 'commander';
|
|
5
|
-
|
|
6
|
-
import { version } from '../package.json';
|
|
7
|
-
import { SolanaErrorCode } from '../src/codes';
|
|
8
|
-
import { getHumanReadableErrorMessage } from '../src/message-formatter';
|
|
9
|
-
import { SolanaErrorMessages } from '../src/messages';
|
|
10
|
-
|
|
11
|
-
const program = new Command();
|
|
12
|
-
|
|
13
|
-
program.name('@solana/errors').description('Decode Solana JavaScript errors thrown in production').version(version);
|
|
14
|
-
|
|
15
|
-
program
|
|
16
|
-
.command('decode')
|
|
17
|
-
.description('Decode a `SolanaErrorCode` to a human-readable message')
|
|
18
|
-
.argument('<code>', 'numeric error code to decode', rawCode => {
|
|
19
|
-
const code = parseInt(rawCode, 10);
|
|
20
|
-
if (isNaN(code) || `${code}` !== rawCode) {
|
|
21
|
-
throw new InvalidArgumentError('It must be an integer');
|
|
22
|
-
}
|
|
23
|
-
if (!(code in SolanaErrorMessages)) {
|
|
24
|
-
throw new InvalidArgumentError('There exists no error with that code');
|
|
25
|
-
}
|
|
26
|
-
return code;
|
|
27
|
-
})
|
|
28
|
-
.argument('[encodedContext]', 'encoded context to interpolate into the error message', encodedContext =>
|
|
29
|
-
Object.fromEntries(new URLSearchParams(encodedContext).entries()),
|
|
30
|
-
)
|
|
31
|
-
.action((code: number, context) => {
|
|
32
|
-
const message = getHumanReadableErrorMessage(code as SolanaErrorCode, context);
|
|
33
|
-
console.log(`
|
|
34
|
-
${
|
|
35
|
-
chalk.bold(
|
|
36
|
-
chalk.rgb(154, 71, 255)('[') +
|
|
37
|
-
chalk.rgb(144, 108, 244)('D') +
|
|
38
|
-
chalk.rgb(134, 135, 233)('e') +
|
|
39
|
-
chalk.rgb(122, 158, 221)('c') +
|
|
40
|
-
chalk.rgb(110, 178, 209)('o') +
|
|
41
|
-
chalk.rgb(95, 195, 196)('d') +
|
|
42
|
-
chalk.rgb(79, 212, 181)('e') +
|
|
43
|
-
chalk.rgb(57, 227, 166)('d') +
|
|
44
|
-
chalk.rgb(19, 241, 149)(']'),
|
|
45
|
-
) + chalk.rgb(19, 241, 149)(' Solana error code #' + code)
|
|
46
|
-
}
|
|
47
|
-
- ${message}`);
|
|
48
|
-
if (context) {
|
|
49
|
-
console.log(`
|
|
50
|
-
${chalk.yellowBright(chalk.bold('[Context]'))}
|
|
51
|
-
${JSON.stringify(context, null, 4).split('\n').join('\n ')}`);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
program.parse();
|