@solana/errors 8.6.0 → 8.7.0-canary-20261102161207

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/dist/cli.mjs CHANGED
@@ -4,7 +4,7 @@ import { Command, InvalidArgumentError } from 'commander';
4
4
  // src/cli.ts
5
5
 
6
6
  // package.json
7
- var version = "8.6.0";
7
+ var version = "8.7.0-canary-20261102161207";
8
8
 
9
9
  // src/context.ts
10
10
  function decodeEncodedContext(encodedContext) {
@@ -32,6 +32,7 @@ var SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR = -32603;
32
32
  var SOLANA_ERROR__JSON_RPC__INVALID_PARAMS = -32602;
33
33
  var SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND = -32601;
34
34
  var SOLANA_ERROR__JSON_RPC__INVALID_REQUEST = -32600;
35
+ var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LEADER_SCHEDULE_IDENTITY_NOT_FOUND = -32022;
35
36
  var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SLOT_HISTORY = -32021;
36
37
  var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_FILTER_TRANSACTION_NOT_FOUND = -32020;
37
38
  var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE = -32019;
@@ -517,6 +518,7 @@ var SolanaErrorMessages = {
517
518
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE]: "Epoch rewards period still active at slot $slot",
518
519
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_FILTER_TRANSACTION_NOT_FOUND]: "$__serverMessage",
519
520
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX]: "$__serverMessage",
521
+ [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LEADER_SCHEDULE_IDENTITY_NOT_FOUND]: "$__serverMessage",
520
522
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED]: "$__serverMessage",
521
523
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE]: "Failed to query long-term storage; please try again",
522
524
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED]: "Minimum context slot has not been reached",
@@ -703,6 +705,12 @@ var INSTRUCTION_ERROR_RANGE_SIZE = 1e3;
703
705
  var START_INDEX = "i";
704
706
  var TYPE = "t";
705
707
  function getHumanReadableErrorMessage(code, context = {}) {
708
+ if (!(code in SolanaErrorMessages)) {
709
+ return "__serverMessage" in context ? (
710
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
711
+ `Unknown Solana error code: ${code} (${context.__serverMessage})`
712
+ ) : `Unknown Solana error code: ${code}`;
713
+ }
706
714
  const messageFormatString = SolanaErrorMessages[code];
707
715
  if (messageFormatString.length === 0) {
708
716
  return "";
@@ -775,9 +783,6 @@ program.command("decode").description("Decode a `SolanaErrorCode` to a human-rea
775
783
  if (isNaN(code) || `${code}` !== rawCode) {
776
784
  throw new InvalidArgumentError("It must be an integer");
777
785
  }
778
- if (!(code in SolanaErrorMessages)) {
779
- throw new InvalidArgumentError("There exists no error with that code");
780
- }
781
786
  return code;
782
787
  }).argument("[encodedContext]", "encoded context to interpolate into the error message", (encodedContext) => {
783
788
  try {
@@ -786,6 +791,13 @@ program.command("decode").description("Decode a `SolanaErrorCode` to a human-rea
786
791
  throw new InvalidArgumentError("Encoded context malformed");
787
792
  }
788
793
  }).action((code, context) => {
794
+ if (!(code in SolanaErrorMessages)) {
795
+ console.warn(
796
+ chalk.yellow(
797
+ `This version of @solana/errors has no message for code ${code}. It may come from a newer RPC server, or the code may be mistyped.`
798
+ )
799
+ );
800
+ }
789
801
  const message = getHumanReadableErrorMessage(code, context);
790
802
  console.log(`
791
803
  ${chalk.bold(
@@ -20,6 +20,7 @@ var SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR = -32603;
20
20
  var SOLANA_ERROR__JSON_RPC__INVALID_PARAMS = -32602;
21
21
  var SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND = -32601;
22
22
  var SOLANA_ERROR__JSON_RPC__INVALID_REQUEST = -32600;
23
+ var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LEADER_SCHEDULE_IDENTITY_NOT_FOUND = -32022;
23
24
  var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SLOT_HISTORY = -32021;
24
25
  var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_FILTER_TRANSACTION_NOT_FOUND = -32020;
25
26
  var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE = -32019;
@@ -536,6 +537,7 @@ var SolanaErrorMessages = {
536
537
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE]: "Epoch rewards period still active at slot $slot",
537
538
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_FILTER_TRANSACTION_NOT_FOUND]: "$__serverMessage",
538
539
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX]: "$__serverMessage",
540
+ [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LEADER_SCHEDULE_IDENTITY_NOT_FOUND]: "$__serverMessage",
539
541
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED]: "$__serverMessage",
540
542
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE]: "Failed to query long-term storage; please try again",
541
543
  [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED]: "Minimum context slot has not been reached",
@@ -722,6 +724,12 @@ var INSTRUCTION_ERROR_RANGE_SIZE = 1e3;
722
724
  var START_INDEX = "i";
723
725
  var TYPE = "t";
724
726
  function getHumanReadableErrorMessage(code, context = {}) {
727
+ if (!(code in SolanaErrorMessages)) {
728
+ return "__serverMessage" in context ? (
729
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
730
+ `Unknown Solana error code: ${code} (${context.__serverMessage})`
731
+ ) : `Unknown Solana error code: ${code}`;
732
+ }
725
733
  const messageFormatString = SolanaErrorMessages[code];
726
734
  if (messageFormatString.length === 0) {
727
735
  return "";
@@ -1062,6 +1070,7 @@ function getSolanaErrorFromJsonRpcError(putativeErrorResponse) {
1062
1070
  case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET:
1063
1071
  case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_FILTER_TRANSACTION_NOT_FOUND:
1064
1072
  case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX:
1073
+ case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LEADER_SCHEDULE_IDENTITY_NOT_FOUND:
1065
1074
  case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED:
1066
1075
  case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED:
1067
1076
  case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE:
@@ -1069,8 +1078,10 @@ function getSolanaErrorFromJsonRpcError(putativeErrorResponse) {
1069
1078
  errorContext = { __serverMessage: message };
1070
1079
  break;
1071
1080
  default:
1072
- if (typeof data === "object" && !Array.isArray(data)) {
1081
+ if (typeof data === "object" && data !== null && !Array.isArray(data)) {
1073
1082
  errorContext = data;
1083
+ } else {
1084
+ errorContext = { __serverMessage: message };
1074
1085
  }
1075
1086
  }
1076
1087
  out = new SolanaError(code, errorContext);
@@ -1087,13 +1098,16 @@ function isRpcErrorResponse(value) {
1087
1098
  }
1088
1099
 
1089
1100
  // src/simulation-errors.ts
1101
+ var SIMULATION_ERROR_CODES = {
1102
+ [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE]: true,
1103
+ [SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT]: true,
1104
+ [SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_RESOURCE_LIMITS]: true
1105
+ };
1106
+ function isSimulationError(e) {
1107
+ return isSolanaError(e) && e.context.__code in SIMULATION_ERROR_CODES;
1108
+ }
1090
1109
  function unwrapSimulationError(error) {
1091
- const simulationCodes = [
1092
- SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE,
1093
- SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT,
1094
- SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_RESOURCE_LIMITS
1095
- ];
1096
- if (isSolanaError(error) && !!error.cause && simulationCodes.includes(error.context.__code)) {
1110
+ if (isSimulationError(error) && !!error.cause) {
1097
1111
  return error.cause;
1098
1112
  }
1099
1113
  return error;
@@ -1260,6 +1274,7 @@ exports.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET = SO
1260
1274
  exports.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_EPOCH_REWARDS_PERIOD_ACTIVE;
1261
1275
  exports.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_FILTER_TRANSACTION_NOT_FOUND = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_FILTER_TRANSACTION_NOT_FOUND;
1262
1276
  exports.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX;
1277
+ exports.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LEADER_SCHEDULE_IDENTITY_NOT_FOUND = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LEADER_SCHEDULE_IDENTITY_NOT_FOUND;
1263
1278
  exports.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED;
1264
1279
  exports.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_UNREACHABLE;
1265
1280
  exports.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED;
@@ -1443,6 +1458,7 @@ exports.SolanaError = SolanaError;
1443
1458
  exports.getSolanaErrorFromInstructionError = getSolanaErrorFromInstructionError;
1444
1459
  exports.getSolanaErrorFromJsonRpcError = getSolanaErrorFromJsonRpcError;
1445
1460
  exports.getSolanaErrorFromTransactionError = getSolanaErrorFromTransactionError;
1461
+ exports.isSimulationError = isSimulationError;
1446
1462
  exports.isSolanaError = isSolanaError;
1447
1463
  exports.safeCaptureStackTrace = safeCaptureStackTrace;
1448
1464
  exports.unwrapSimulationError = unwrapSimulationError;