@solana/errors 2.0.0-experimental.6cea83c → 2.0.0-experimental.e9c1b10

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 ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env -S node
2
+
3
+ import process from 'node:process';
4
+
5
+ import { run } from '../dist/cli.js';
6
+
7
+ run(process.argv);
package/dist/cli.js ADDED
@@ -0,0 +1,62 @@
1
+ // src/cli.ts
2
+ import chalk from "chalk";
3
+ import { Command, InvalidArgumentError } from "commander";
4
+
5
+ // package.json
6
+ var version = "2.0.0-development";
7
+
8
+ // src/codes.ts
9
+ var SOLANA_ERROR__TRANSACTION_MISSING_SIGNATURES = 1;
10
+ var SOLANA_ERROR__TRANSACTION_SIGNATURE_NOT_COMPUTABLE = 2;
11
+
12
+ // src/messages.ts
13
+ var SolanaErrorMessages = {
14
+ [SOLANA_ERROR__TRANSACTION_MISSING_SIGNATURES]: "Transaction is missing signatures for addresses: $addresses",
15
+ [SOLANA_ERROR__TRANSACTION_SIGNATURE_NOT_COMPUTABLE]: "Could not determine this transaction's signature. Make sure that the transaction has been signed by its fee payer."
16
+ };
17
+
18
+ // src/message-formatter.ts
19
+ function getHumanReadableErrorMessage(code, context = {}) {
20
+ const messageFormatString = SolanaErrorMessages[code];
21
+ const message = messageFormatString.replace(
22
+ /(?<!\\)\$(\w+)/g,
23
+ (substring, variableName) => variableName in context ? `${context[variableName]}` : substring
24
+ );
25
+ return message;
26
+ }
27
+
28
+ // src/cli.ts
29
+ var program = new Command();
30
+ program.name("@solana/errors").description("Decode Solana JavaScript errors thrown in production").version(version);
31
+ program.command("decode").description("Decode a `SolanaErrorCode` to a human-readable message").argument("<code>", "numeric error code to decode", (rawCode) => {
32
+ const code = parseInt(rawCode, 10);
33
+ if (isNaN(code) || `${code}` !== rawCode) {
34
+ throw new InvalidArgumentError("It must be an integer");
35
+ }
36
+ if (!(code in SolanaErrorMessages)) {
37
+ throw new InvalidArgumentError("There exists no error with that code");
38
+ }
39
+ return code;
40
+ }).argument(
41
+ "[encodedContext]",
42
+ "encoded context to interpolate into the error message",
43
+ (encodedContext) => Object.fromEntries(new URLSearchParams(encodedContext).entries())
44
+ ).action((code, context) => {
45
+ const message = getHumanReadableErrorMessage(code, context);
46
+ console.log(`
47
+ ${chalk.bold(
48
+ chalk.rgb(154, 71, 255)("[") + chalk.rgb(144, 108, 244)("D") + chalk.rgb(134, 135, 233)("e") + chalk.rgb(122, 158, 221)("c") + chalk.rgb(110, 178, 209)("o") + chalk.rgb(95, 195, 196)("d") + chalk.rgb(79, 212, 181)("e") + chalk.rgb(57, 227, 166)("d") + chalk.rgb(19, 241, 149)("]")
49
+ ) + chalk.rgb(19, 241, 149)(" Solana error code #" + code)}
50
+ - ${message}`);
51
+ if (context) {
52
+ console.log(`
53
+ ${chalk.yellowBright(chalk.bold("[Context]"))}
54
+ ${JSON.stringify(context, null, 4).split("\n").join("\n ")}`);
55
+ }
56
+ });
57
+ function run(argv) {
58
+ program.parse(argv);
59
+ }
60
+ export {
61
+ run
62
+ };
package/package.json CHANGED
@@ -1,103 +1,103 @@
1
1
  {
2
- "name": "@solana/errors",
3
- "version": "2.0.0-experimental.6cea83c",
4
- "description": "Throw, identify, and decode Solana JavaScript errors",
5
- "exports": {
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.e9c1b10",
4
+ "description": "Throw, identify, and decode Solana JavaScript errors",
5
+ "exports": {
17
6
  "browser": {
18
- "./dist/index.node.cjs": "./dist/index.browser.cjs",
19
- "./dist/index.node.js": "./dist/index.browser.js"
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
- "type": "module",
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
+ "commander": "^11.1.0",
54
+ "chalk": "^5.3.0"
55
+ },
56
+ "devDependencies": {
57
+ "@solana/eslint-config-solana": "^1.0.2",
58
+ "@swc/jest": "^0.2.29",
59
+ "@types/jest": "^29.5.11",
60
+ "@types/node": "18.11.19",
61
+ "@typescript-eslint/eslint-plugin": "^6.13.2",
62
+ "@typescript-eslint/parser": "^6.3.0",
63
+ "agadoo": "^3.0.0",
64
+ "eslint": "^8.45.0",
65
+ "eslint-plugin-jest": "^27.4.2",
66
+ "eslint-plugin-sort-keys-fix": "^1.1.2",
67
+ "jest": "^29.7.0",
68
+ "jest-environment-jsdom": "^29.7.0",
69
+ "jest-runner-eslint": "^2.1.2",
70
+ "jest-runner-prettier": "^1.0.0",
71
+ "prettier": "^3.1",
72
+ "tsup": "^8.0.1",
73
+ "typescript": "^5.2.2",
74
+ "version-from-git": "^1.1.1",
75
+ "@solana/addresses": "2.0.0-experimental.e9c1b10",
76
+ "build-scripts": "0.0.0",
77
+ "test-config": "0.0.0",
78
+ "tsconfig": "0.0.0"
79
+ },
80
+ "bundlewatch": {
81
+ "defaultCompression": "gzip",
26
82
  "files": [
27
- "./dist/"
28
- ],
29
- "sideEffects": false,
30
- "keywords": [
31
- "blockchain",
32
- "solana",
33
- "web3"
34
- ],
35
- "bin": "./bin/cli.ts",
36
- "scripts": {
37
- "compile:js": "tsup --config build-scripts/tsup.config.package.ts",
38
- "compile:typedefs": "tsc -p ./tsconfig.declarations.json && node node_modules/build-scripts/add-js-extension-to-types.mjs",
39
- "dev": "jest -c node_modules/test-config/jest-dev.config.ts --rootDir . --watch",
40
- "prepublishOnly": "version-from-git --no-git-tag-version --template experimental.short",
41
- "publish-packages": "pnpm publish --tag experimental --access public --no-git-checks",
42
- "style:fix": "pnpm eslint --fix src/* && pnpm prettier -w src/* package.json",
43
- "test:lint": "jest -c node_modules/test-config/jest-lint.config.ts --rootDir . --silent",
44
- "test:prettier": "jest -c node_modules/test-config/jest-prettier.config.ts --rootDir . --silent",
45
- "test:treeshakability:browser": "agadoo dist/index.browser.js",
46
- "test:treeshakability:native": "agadoo dist/index.native.js",
47
- "test:treeshakability:node": "agadoo dist/index.node.js",
48
- "test:typecheck": "tsc --noEmit",
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
- }
83
+ {
84
+ "path": "./dist/index*.js"
85
+ }
86
+ ]
87
+ },
88
+ "scripts": {
89
+ "compile:js": "tsup --config build-scripts/tsup.config.package.ts && tsup src/cli.ts --format esm",
90
+ "compile:typedefs": "tsc -p ./tsconfig.declarations.json && node node_modules/build-scripts/add-js-extension-to-types.mjs",
91
+ "dev": "jest -c node_modules/test-config/jest-dev.config.ts --rootDir . --watch",
92
+ "publish-packages": "pnpm publish --tag experimental --access public --no-git-checks",
93
+ "style:fix": "pnpm eslint --fix src/* && pnpm prettier -w src/* package.json",
94
+ "test:lint": "jest -c node_modules/test-config/jest-lint.config.ts --rootDir . --silent",
95
+ "test:prettier": "jest -c node_modules/test-config/jest-prettier.config.ts --rootDir . --silent",
96
+ "test:treeshakability:browser": "agadoo dist/index.browser.js",
97
+ "test:treeshakability:native": "agadoo dist/index.native.js",
98
+ "test:treeshakability:node": "agadoo dist/index.node.js",
99
+ "test:typecheck": "tsc --noEmit",
100
+ "test:unit:browser": "jest -c node_modules/test-config/jest-unit.config.browser.ts --rootDir . --silent",
101
+ "test:unit:node": "jest -c node_modules/test-config/jest-unit.config.node.ts --rootDir . --silent"
102
+ }
103
+ }
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();