@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.
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,eAAe,EAClB,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC;KAGtC,CAAC,IAAI,eAAe,GAAG,MAAM;CACjC,CAKA,CAAC"}
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,5 @@
1
+ import { SolanaError } from './error.js';
2
+ export declare function getSolanaErrorFromTransactionError(transactionError: string | {
3
+ [key: string]: unknown;
4
+ }): SolanaError;
5
+ //# sourceMappingURL=transaction-error.d.ts.map
@@ -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
- "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.7712fc3",
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
+ "chalk": "^5.3.0",
54
+ "commander": "^12.0.0"
55
+ },
56
+ "bundlewatch": {
57
+ "defaultCompression": "gzip",
26
58
  "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
- }
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();