solana-web3-on-steroids 1.0.2 → 1.0.5

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.
Files changed (42) hide show
  1. package/README.md +43 -0
  2. package/dist/client/SteroidClient.d.ts +1 -1
  3. package/dist/client/SteroidClient.js +5 -25
  4. package/dist/client/SteroidClient.js.map +1 -1
  5. package/dist/connection/SteroidConnection.d.ts +1 -2
  6. package/dist/connection/SteroidConnection.js +27 -43
  7. package/dist/connection/SteroidConnection.js.map +1 -1
  8. package/dist/transaction/SteroidTransaction.d.ts +1 -16
  9. package/dist/transaction/SteroidTransaction.js +61 -101
  10. package/dist/transaction/SteroidTransaction.js.map +1 -1
  11. package/dist/types/SteroidWalletTypes.d.ts +0 -5
  12. package/dist/types/SteroidWalletTypes.js +0 -9
  13. package/dist/types/SteroidWalletTypes.js.map +1 -1
  14. package/dist/utils/idUtils.d.ts +10 -0
  15. package/dist/utils/idUtils.js +15 -0
  16. package/dist/utils/idUtils.js.map +1 -0
  17. package/dist/utils/index.d.ts +7 -0
  18. package/dist/utils/index.js +8 -0
  19. package/dist/utils/index.js.map +1 -0
  20. package/dist/utils/logger.d.ts +13 -0
  21. package/dist/utils/logger.js +47 -0
  22. package/dist/utils/logger.js.map +1 -0
  23. package/dist/utils/mathUtils.d.ts +13 -0
  24. package/dist/utils/mathUtils.js +18 -0
  25. package/dist/utils/mathUtils.js.map +1 -0
  26. package/dist/utils/solanaUtils.d.ts +21 -0
  27. package/dist/utils/solanaUtils.js +50 -0
  28. package/dist/utils/solanaUtils.js.map +1 -0
  29. package/dist/utils/stateUtils.d.ts +13 -0
  30. package/dist/utils/stateUtils.js +19 -0
  31. package/dist/utils/stateUtils.js.map +1 -0
  32. package/dist/utils/timeUtils.d.ts +5 -0
  33. package/dist/utils/timeUtils.js +8 -0
  34. package/dist/utils/timeUtils.js.map +1 -0
  35. package/dist/utils/walletUtils.d.ts +11 -0
  36. package/dist/utils/walletUtils.js +47 -0
  37. package/dist/utils/walletUtils.js.map +1 -0
  38. package/dist/wallet/SteroidWallet.d.ts +1 -4
  39. package/dist/wallet/SteroidWallet.js +18 -58
  40. package/dist/wallet/SteroidWallet.js.map +1 -1
  41. package/docs/assets/architecture.png +0 -0
  42. package/package.json +6 -1
@@ -1,5 +1,6 @@
1
- import { Connection, TransactionExpiredBlockheightExceededError, } from '@solana/web3.js';
1
+ import { Connection, } from '@solana/web3.js';
2
2
  import { TransactionState, DEFAULT_CONFIG } from '../types/SteroidWalletTypes.js';
3
+ import { isLegacyTransaction, sleep, Logger, parseSimulationError, isBlockhashExpiredError, serializeTransaction, generateId, clearExpiredEntries } from '../utils/index.js';
3
4
  /**
4
5
  * Enhanced transaction handling with state management, automatic retries,
5
6
  * blockhash refresh, and multi-node confirmation.
@@ -7,8 +8,10 @@ import { TransactionState, DEFAULT_CONFIG } from '../types/SteroidWalletTypes.js
7
8
  export class SteroidTransaction {
8
9
  connection;
9
10
  transactionStates = new Map();
11
+ logger;
10
12
  constructor(connection) {
11
13
  this.connection = connection;
14
+ this.logger = new Logger('SteroidTransaction', false);
12
15
  }
13
16
  /**
14
17
  * Sends a transaction with continuous re-broadcasting and multi-node monitoring.
@@ -22,7 +25,10 @@ export class SteroidTransaction {
22
25
  ...options,
23
26
  };
24
27
  const { timeoutSeconds, retryInterval, skipPreflight, preflightCommitment, confirmationCommitment, maxBlockhashAge, enableLogging, confirmationNodes, } = mergedOptions;
25
- const stateId = this.generateStateId();
28
+ const executionTimeout = timeoutSeconds * 1000;
29
+ // Update logger preference for this call
30
+ this.logger.setEnabled(enableLogging || false);
31
+ const stateId = generateId('tx');
26
32
  const state = {
27
33
  state: TransactionState.PENDING,
28
34
  attempts: 0,
@@ -33,30 +39,31 @@ export class SteroidTransaction {
33
39
  // 1. Simulation with detailed error parsing
34
40
  if (!skipPreflight) {
35
41
  this.updateState(stateId, TransactionState.PENDING);
36
- await this.simulateTransaction(transaction, preflightCommitment, enableLogging);
42
+ await this.simulateTransaction(transaction, preflightCommitment);
37
43
  this.updateState(stateId, TransactionState.SIMULATED);
38
44
  }
39
45
  // 2. Initial blockhash setup if needed
40
46
  let blockhashContext;
41
- if (this.isLegacyTransaction(transaction)) {
42
- blockhashContext = await this.getFreshBlockhash(enableLogging);
47
+ if (isLegacyTransaction(transaction)) {
48
+ blockhashContext = await this.getFreshBlockhash();
43
49
  transaction.recentBlockhash = blockhashContext.blockhash;
44
50
  transaction.lastValidBlockHeight = blockhashContext.lastValidBlockHeight;
45
51
  }
46
- const rawTransaction = this.serializeTransaction(transaction);
47
52
  const startTime = Date.now();
48
53
  let signature = '';
49
54
  let lastBlockhashRefresh = Date.now();
55
+ let attempts = 0;
50
56
  // 3. Send and retry loop with blockhash refresh
51
- while (Date.now() - startTime < timeoutSeconds * 1000) {
57
+ while (Date.now() - startTime < executionTimeout) {
52
58
  try {
53
- state.attempts++;
59
+ attempts++;
60
+ state.attempts = attempts; // Update state attempts
54
61
  state.lastAttemptTime = Date.now();
55
62
  // Check if blockhash is too old and refresh if needed
56
63
  const ageSeconds = (Date.now() - lastBlockhashRefresh) / 1000;
57
- if (ageSeconds > maxBlockhashAge && this.isLegacyTransaction(transaction)) {
58
- this.log('info', `Blockhash age ${ageSeconds.toFixed(1)}s exceeds max ${maxBlockhashAge}s, refreshing...`, enableLogging);
59
- blockhashContext = await this.getFreshBlockhash(enableLogging);
64
+ if (ageSeconds > maxBlockhashAge && isLegacyTransaction(transaction)) {
65
+ this.logger.info(`Blockhash age ${ageSeconds.toFixed(1)}s exceeds max ${maxBlockhashAge}s, refreshing...`);
66
+ blockhashContext = await this.getFreshBlockhash();
60
67
  transaction.recentBlockhash = blockhashContext.blockhash;
61
68
  transaction.lastValidBlockHeight = blockhashContext.lastValidBlockHeight;
62
69
  // Re-serialize with new blockhash
@@ -64,34 +71,48 @@ export class SteroidTransaction {
64
71
  lastBlockhashRefresh = Date.now();
65
72
  }
66
73
  // Broadcast transaction
67
- signature = await this.connection.sendRawTransaction(rawTransaction, {
68
- skipPreflight: true,
69
- maxRetries: 0, // We handle retries ourselves
70
- });
74
+ this.logger.info(`Sending transaction (Attempt ${attempts})...`);
75
+ try {
76
+ const rawTransaction = serializeTransaction(transaction);
77
+ signature = await this.connection.sendRawTransaction(rawTransaction, {
78
+ skipPreflight: true,
79
+ maxRetries: 0, // We handle retries ourselves
80
+ });
81
+ this.logger.info(`Transaction sent: ${signature}`);
82
+ }
83
+ catch (sendError) {
84
+ if (isBlockhashExpiredError(sendError)) {
85
+ this.logger.warn('Blockhash expired during send, refreshing...');
86
+ lastBlockhashRefresh = 0; // Force refresh on next iteration
87
+ continue; // Skip to next iteration to refresh blockhash
88
+ }
89
+ throw sendError; // Re-throw other errors
90
+ }
71
91
  this.updateState(stateId, TransactionState.SENT, signature);
72
- this.log('info', `Transaction sent: ${signature} (attempt ${state.attempts})`, enableLogging);
92
+ this.logger.info(`Transaction sent: ${signature} (attempt ${state.attempts})`);
73
93
  // 4. Multi-node confirmation check
74
- const confirmed = await this.pollForConfirmation(signature, confirmationCommitment, confirmationNodes, enableLogging);
94
+ this.logger.info(`Polling for confirmation on ${confirmationNodes} nodes...`);
95
+ const confirmed = await this.pollForConfirmation(signature, confirmationCommitment, confirmationNodes);
75
96
  if (confirmed) {
76
97
  this.updateState(stateId, TransactionState.CONFIRMED, signature);
77
98
  state.confirmedAt = Date.now();
78
99
  const duration = ((state.confirmedAt - state.startTime) / 1000).toFixed(2);
79
- this.log('info', `Transaction confirmed in ${duration}s after ${state.attempts} attempts`, enableLogging);
100
+ this.logger.info(`Transaction confirmed in ${duration}s after ${state.attempts} attempts`);
80
101
  return signature;
81
102
  }
82
- this.log('warn', `Transaction not yet confirmed, will retry in ${retryInterval}ms...`, enableLogging);
103
+ this.logger.warn(`Transaction not yet confirmed, will retry in ${retryInterval}ms...`);
83
104
  }
84
105
  catch (error) {
85
106
  // Handle blockhash expiration
86
- if (this.isBlockhashExpiredError(error)) {
87
- this.log('warn', 'Blockhash expired or invalid, will refresh on next attempt', enableLogging);
107
+ if (isBlockhashExpiredError(error)) {
108
+ this.logger.warn('Blockhash expired or invalid, will refresh on next attempt');
88
109
  lastBlockhashRefresh = 0; // Force refresh on next iteration
89
110
  }
90
111
  else {
91
- this.log('warn', `Broadcast attempt failed: ${error.message}`, enableLogging);
112
+ this.logger.warn(`Broadcast attempt failed: ${error.message}`);
92
113
  }
93
114
  }
94
- await this.sleep(retryInterval);
115
+ await sleep(retryInterval);
95
116
  }
96
117
  // Timeout reached
97
118
  const errorMsg = `Transaction not confirmed within ${timeoutSeconds}s after ${state.attempts} attempts`;
@@ -99,26 +120,31 @@ export class SteroidTransaction {
99
120
  throw new Error(`[SteroidTransaction] ${errorMsg}. Last signature: ${signature || 'none'}`);
100
121
  }
101
122
  catch (error) {
123
+ this.logger.error('Transaction failed:', error.message);
102
124
  this.updateState(stateId, TransactionState.FAILED, state.signature, error.message);
103
125
  throw error;
104
126
  }
127
+ finally {
128
+ this.logger.setEnabled(false); // Reset logger state
129
+ }
105
130
  }
106
131
  /**
107
132
  * Simulates a transaction and provides detailed error information.
108
133
  */
109
- async simulateTransaction(transaction, commitment, enableLogging) {
134
+ async simulateTransaction(transaction, commitment) {
110
135
  try {
136
+ this.logger.info('Simulating transaction...');
111
137
  const simulation = await this.connection.simulateTransaction(transaction, {
112
138
  commitment,
113
139
  replaceRecentBlockhash: true,
114
140
  });
115
141
  if (simulation.value.err) {
116
- const errorDetails = this.parseSimulationError(simulation.value);
117
- this.log('error', `Simulation failed: ${errorDetails}`, enableLogging);
142
+ const errorDetails = parseSimulationError(simulation.value);
143
+ this.logger.error(`Simulation failed: ${errorDetails}`);
118
144
  throw new Error(`[SteroidTransaction] Simulation failed: ${errorDetails}`);
119
145
  }
120
146
  if (simulation.value.logs) {
121
- this.log('info', `Simulation succeeded. Logs count: ${simulation.value.logs.length}`, enableLogging);
147
+ this.logger.info(`Simulation succeeded. Logs count: ${simulation.value.logs.length}`);
122
148
  }
123
149
  }
124
150
  catch (error) {
@@ -130,10 +156,10 @@ export class SteroidTransaction {
130
156
  /**
131
157
  * Polls multiple RPC endpoints for signature status to bypass node lag.
132
158
  */
133
- async pollForConfirmation(signature, commitment, nodesToCheck, enableLogging) {
159
+ async pollForConfirmation(signature, commitment, nodesToCheck) {
134
160
  const endpoints = this.connection.getEndpoints();
135
161
  const endpointsToCheck = endpoints.slice(0, Math.min(nodesToCheck, endpoints.length));
136
- this.log('info', `Checking confirmation across ${endpointsToCheck.length} nodes...`, enableLogging);
162
+ this.logger.info(`Checking confirmation across ${endpointsToCheck.length} nodes...`);
137
163
  const checks = endpointsToCheck.map(async (url) => {
138
164
  try {
139
165
  const tempConn = new Connection(url, { commitment });
@@ -144,13 +170,13 @@ export class SteroidTransaction {
144
170
  const isConfirmed = status.value?.confirmationStatus === 'confirmed' ||
145
171
  status.value?.confirmationStatus === 'finalized';
146
172
  if (isConfirmed && status.value) {
147
- this.log('info', `Transaction confirmed on ${url} (${status.value.confirmationStatus})`, enableLogging);
173
+ this.logger.info(`Transaction confirmed on ${url} (${status.value.confirmationStatus})`);
148
174
  return true;
149
175
  }
150
176
  return false;
151
177
  }
152
178
  catch (error) {
153
- this.log('warn', `Confirmation check failed for ${url}: ${error.message}`, enableLogging);
179
+ this.logger.warn(`Confirmation check failed for ${url}: ${error.message}`);
154
180
  return false;
155
181
  }
156
182
  });
@@ -166,58 +192,17 @@ export class SteroidTransaction {
166
192
  /**
167
193
  * Get fresh blockhash with retry logic.
168
194
  */
169
- async getFreshBlockhash(enableLogging) {
195
+ async getFreshBlockhash() {
170
196
  try {
197
+ this.logger.info('Fetching fresh blockhash...');
171
198
  const { blockhash, lastValidBlockHeight } = await this.connection.getLatestBlockhash('confirmed');
172
- this.log('info', `Fetched fresh blockhash: ${blockhash.slice(0, 8)}...`, enableLogging);
199
+ this.logger.info(`Fetched fresh blockhash: ${blockhash.slice(0, 8)}...`);
173
200
  return { blockhash, lastValidBlockHeight };
174
201
  }
175
202
  catch (error) {
176
203
  throw new Error(`[SteroidTransaction] Failed to get blockhash: ${error.message}`);
177
204
  }
178
205
  }
179
- /**
180
- * Parse simulation errors into human-readable format.
181
- */
182
- parseSimulationError(simulationValue) {
183
- const logs = simulationValue.logs || [];
184
- const errorLog = logs.find((l) => l.includes('Error:') || l.includes('failed') || l.includes('custom program error'));
185
- if (errorLog)
186
- return errorLog;
187
- if (simulationValue.err) {
188
- if (typeof simulationValue.err === 'string')
189
- return simulationValue.err;
190
- if (simulationValue.err.InstructionError) {
191
- const [index, error] = simulationValue.err.InstructionError;
192
- return `Instruction ${index} failed: ${JSON.stringify(error)}`;
193
- }
194
- return JSON.stringify(simulationValue.err);
195
- }
196
- return 'Unknown simulation error';
197
- }
198
- isBlockhashExpiredError(error) {
199
- return (error instanceof TransactionExpiredBlockheightExceededError ||
200
- error.message?.includes('block height exceeded') ||
201
- error.message?.includes('blockhash not found'));
202
- }
203
- /**
204
- * Type guard for legacy transactions.
205
- */
206
- isLegacyTransaction(transaction) {
207
- return 'recentBlockhash' in transaction;
208
- }
209
- /**
210
- * Serialize transaction to bytes.
211
- */
212
- serializeTransaction(transaction) {
213
- if (this.isLegacyTransaction(transaction)) {
214
- return transaction.serialize();
215
- }
216
- return Buffer.from(transaction.serialize());
217
- }
218
- generateStateId() {
219
- return `tx_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
220
- }
221
206
  updateState(stateId, state, signature, error) {
222
207
  const existing = this.transactionStates.get(stateId);
223
208
  if (existing) {
@@ -228,26 +213,6 @@ export class SteroidTransaction {
228
213
  existing.error = error;
229
214
  }
230
215
  }
231
- log(level, message, enabled) {
232
- if (!enabled)
233
- return;
234
- const prefix = '[SteroidTransaction]';
235
- const formattedMessage = `${prefix} ${message}`;
236
- switch (level) {
237
- case 'info':
238
- console.log(formattedMessage);
239
- break;
240
- case 'warn':
241
- console.warn(formattedMessage);
242
- break;
243
- case 'error':
244
- console.error(formattedMessage);
245
- break;
246
- }
247
- }
248
- sleep(ms) {
249
- return new Promise((resolve) => setTimeout(resolve, ms));
250
- }
251
216
  /**
252
217
  * Get the current state of a transaction.
253
218
  */
@@ -264,12 +229,7 @@ export class SteroidTransaction {
264
229
  * Clear old transaction states (cleanup).
265
230
  */
266
231
  clearOldStates(olderThanMs = 3600000) {
267
- const now = Date.now();
268
- for (const [id, state] of this.transactionStates.entries()) {
269
- if (now - state.startTime > olderThanMs) {
270
- this.transactionStates.delete(id);
271
- }
272
- }
232
+ clearExpiredEntries(this.transactionStates, olderThanMs);
273
233
  }
274
234
  }
275
235
  //# sourceMappingURL=SteroidTransaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SteroidTransaction.js","sourceRoot":"","sources":["../../src/transaction/SteroidTransaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SteroidTransaction.js","sourceRoot":"","sources":["../../src/transaction/SteroidTransaction.ts"],"names":[],"mappings":"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"}
@@ -100,11 +100,6 @@ export type TransactionResult = {
100
100
  };
101
101
  export type ErrorHandler = (error: Error) => void | Promise<void>;
102
102
  export type TransactionCallback = (signature: TransactionSignature, state: TransactionStateInfo) => void | Promise<void>;
103
- /**
104
- * Type guards
105
- */
106
- export declare function isLegacyTransaction(transaction: AnyTransaction): transaction is Transaction;
107
- export declare function isVersionedTransaction(transaction: AnyTransaction): transaction is VersionedTransaction;
108
103
  /**
109
104
  * Helper types for improved DX
110
105
  */
@@ -18,15 +18,6 @@ export var WalletErrorType;
18
18
  WalletErrorType["UNSUPPORTED_OPERATION"] = "UNSUPPORTED_OPERATION";
19
19
  WalletErrorType["UNKNOWN"] = "UNKNOWN";
20
20
  })(WalletErrorType || (WalletErrorType = {}));
21
- /**
22
- * Type guards
23
- */
24
- export function isLegacyTransaction(transaction) {
25
- return 'recentBlockhash' in transaction;
26
- }
27
- export function isVersionedTransaction(transaction) {
28
- return 'version' in transaction;
29
- }
30
21
  /**
31
22
  * Constants
32
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SteroidWalletTypes.js","sourceRoot":"","sources":["../../src/types/SteroidWalletTypes.ts"],"names":[],"mappings":"AA2DA,MAAM,CAAN,IAAY,gBASX;AATD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,2CAAuB,CAAA;IACvB,qCAAiB,CAAA;IACjB,iCAAa,CAAA;IACb,2CAAuB,CAAA;IACvB,2CAAuB,CAAA;IACvB,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;AACrB,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B;AAqBD,MAAM,CAAN,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,kDAA+B,CAAA;IAC/B,kDAA+B,CAAA;IAC/B,wDAAqC,CAAA;IACrC,oDAAiC,CAAA;IACjC,kEAA+C,CAAA;IAC/C,sCAAmB,CAAA;AACrB,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B;AAwDD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAA2B;IAE3B,OAAO,iBAAiB,IAAI,WAAW,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,WAA2B;IAE3B,OAAO,SAAS,IAAI,WAAW,CAAC;AAClC,CAAC;AA4BD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE;QACV,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,GAAG;QACf,mBAAmB,EAAE,KAAK;QAC1B,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;KACrB;IACD,WAAW,EAAE;QACX,cAAc,EAAE,EAAE;QAClB,aAAa,EAAE,IAAI;QACnB,sBAAsB,EAAE,WAAyB;QACjD,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,CAAC;QACpB,aAAa,EAAE,KAAK;KACrB;IACD,MAAM,EAAE;QACN,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,KAAK;QACpB,oBAAoB,EAAE,IAAI;QAC1B,eAAe,EAAE,EAAE;KACpB;CACO,CAAC"}
1
+ {"version":3,"file":"SteroidWalletTypes.js","sourceRoot":"","sources":["../../src/types/SteroidWalletTypes.ts"],"names":[],"mappings":"AA2DA,MAAM,CAAN,IAAY,gBASX;AATD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,2CAAuB,CAAA;IACvB,qCAAiB,CAAA;IACjB,iCAAa,CAAA;IACb,2CAAuB,CAAA;IACvB,2CAAuB,CAAA;IACvB,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;AACrB,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B;AAqBD,MAAM,CAAN,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,kDAA+B,CAAA;IAC/B,kDAA+B,CAAA;IAC/B,wDAAqC,CAAA;IACrC,oDAAiC,CAAA;IACjC,kEAA+C,CAAA;IAC/C,sCAAmB,CAAA;AACrB,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B;AAkFD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE;QACV,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,GAAG;QACf,mBAAmB,EAAE,KAAK;QAC1B,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;KACrB;IACD,WAAW,EAAE;QACX,cAAc,EAAE,EAAE;QAClB,aAAa,EAAE,IAAI;QACnB,sBAAsB,EAAE,WAAyB;QACjD,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,CAAC;QACpB,aAAa,EAAE,KAAK;KACrB;IACD,MAAM,EAAE;QACN,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,KAAK;QACpB,oBAAoB,EAAE,IAAI;QAC1B,eAAe,EAAE,EAAE;KACpB;CACO,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * ID generation utilities.
3
+ */
4
+ /**
5
+ * Generates a unique, timestamped identifier with an optional prefix.
6
+ *
7
+ * @param prefix - Optional prefix for the ID
8
+ * @returns A unique string ID
9
+ */
10
+ export declare function generateId(prefix?: string): string;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * ID generation utilities.
3
+ */
4
+ /**
5
+ * Generates a unique, timestamped identifier with an optional prefix.
6
+ *
7
+ * @param prefix - Optional prefix for the ID
8
+ * @returns A unique string ID
9
+ */
10
+ export function generateId(prefix = '') {
11
+ const timestamp = Date.now();
12
+ const randomPart = Math.random().toString(36).substring(2, 11);
13
+ return prefix ? `${prefix}_${timestamp}_${randomPart}` : `${timestamp}_${randomPart}`;
14
+ }
15
+ //# sourceMappingURL=idUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idUtils.js","sourceRoot":"","sources":["../../src/utils/idUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;AACxF,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './solanaUtils.js';
2
+ export * from './timeUtils.js';
3
+ export * from './logger.js';
4
+ export * from './mathUtils.js';
5
+ export * from './walletUtils.js';
6
+ export * from './idUtils.js';
7
+ export * from './stateUtils.js';
@@ -0,0 +1,8 @@
1
+ export * from './solanaUtils.js';
2
+ export * from './timeUtils.js';
3
+ export * from './logger.js';
4
+ export * from './mathUtils.js';
5
+ export * from './walletUtils.js';
6
+ export * from './idUtils.js';
7
+ export * from './stateUtils.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Simple Logger utility to provide consistent prefixed logging.
3
+ */
4
+ export declare class Logger {
5
+ private prefix;
6
+ private enabled;
7
+ constructor(prefix: string, enabled?: boolean);
8
+ log(level: 'info' | 'warn' | 'error', ...args: any[]): void;
9
+ info(...args: any[]): void;
10
+ warn(...args: any[]): void;
11
+ error(...args: any[]): void;
12
+ setEnabled(enabled: boolean): void;
13
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Simple Logger utility to provide consistent prefixed logging.
3
+ */
4
+ export class Logger {
5
+ prefix;
6
+ enabled;
7
+ constructor(prefix, enabled = false) {
8
+ this.prefix = prefix;
9
+ this.enabled = enabled;
10
+ }
11
+ log(level, ...args) {
12
+ if (!this.enabled)
13
+ return;
14
+ const formattedPrefix = `[${this.prefix}]`;
15
+ const finalArgs = [...args];
16
+ if (typeof finalArgs[0] === 'string') {
17
+ finalArgs[0] = `${formattedPrefix} ${finalArgs[0]}`;
18
+ }
19
+ else {
20
+ finalArgs.unshift(formattedPrefix);
21
+ }
22
+ switch (level) {
23
+ case 'info':
24
+ console.log(...finalArgs);
25
+ break;
26
+ case 'warn':
27
+ console.warn(...finalArgs);
28
+ break;
29
+ case 'error':
30
+ console.error(...finalArgs);
31
+ break;
32
+ }
33
+ }
34
+ info(...args) {
35
+ this.log('info', ...args);
36
+ }
37
+ warn(...args) {
38
+ this.log('warn', ...args);
39
+ }
40
+ error(...args) {
41
+ this.log('error', ...args);
42
+ }
43
+ setEnabled(enabled) {
44
+ this.enabled = enabled;
45
+ }
46
+ }
47
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,MAAM;IAEP;IACA;IAFV,YACU,MAAc,EACd,UAAmB,KAAK;QADxB,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAiB;IAC/B,CAAC;IAEG,GAAG,CAAC,KAAgC,EAAE,GAAG,IAAW;QACzD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAE5B,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YACrC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,eAAe,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACrC,CAAC;QAED,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC5B,MAAM;QACV,CAAC;IACH,CAAC;IAEM,IAAI,CAAC,GAAG,IAAW;QACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEM,IAAI,CAAC,GAAG,IAAW;QACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,GAAG,IAAW;QACzB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,UAAU,CAAC,OAAgB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Math and calculation utilities.
3
+ */
4
+ /**
5
+ * Calculates an exponential backoff delay with jitter.
6
+ *
7
+ * @param attempt - The current attempt number (starts at 1)
8
+ * @param baseDelay - The base delay in milliseconds
9
+ * @param maxDelay - The maximum allowed delay
10
+ * @param jitter - The optional jitter factor in milliseconds
11
+ * @returns The calculated delay in milliseconds
12
+ */
13
+ export declare function calculateBackoff(attempt: number, baseDelay: number, maxDelay: number, jitter?: number): number;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Math and calculation utilities.
3
+ */
4
+ /**
5
+ * Calculates an exponential backoff delay with jitter.
6
+ *
7
+ * @param attempt - The current attempt number (starts at 1)
8
+ * @param baseDelay - The base delay in milliseconds
9
+ * @param maxDelay - The maximum allowed delay
10
+ * @param jitter - The optional jitter factor in milliseconds
11
+ * @returns The calculated delay in milliseconds
12
+ */
13
+ export function calculateBackoff(attempt, baseDelay, maxDelay, jitter = 100) {
14
+ const exponentialDelay = baseDelay * Math.pow(2, attempt - 1);
15
+ const randomJitter = Math.random() * jitter;
16
+ return Math.min(exponentialDelay + randomJitter, maxDelay);
17
+ }
18
+ //# sourceMappingURL=mathUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mathUtils.js","sourceRoot":"","sources":["../../src/utils/mathUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,SAAiB,EACjB,QAAgB,EAChB,SAAiB,GAAG;IAEpB,MAAM,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { Transaction, VersionedTransaction } from '@solana/web3.js';
2
+ /**
3
+ * Type guard for legacy transactions.
4
+ */
5
+ export declare function isLegacyTransaction(transaction: Transaction | VersionedTransaction): transaction is Transaction;
6
+ /**
7
+ * Type guard for versioned transactions.
8
+ */
9
+ export declare function isVersionedTransaction(transaction: Transaction | VersionedTransaction): transaction is VersionedTransaction;
10
+ /**
11
+ * Parse simulation errors into a human-readable format.
12
+ */
13
+ export declare function parseSimulationError(simulationValue: any): string;
14
+ /**
15
+ * Checks if an error indicates a blockhash expiration.
16
+ */
17
+ export declare function isBlockhashExpiredError(error: any): boolean;
18
+ /**
19
+ * Serialize transaction to bytes consistently.
20
+ */
21
+ export declare function serializeTransaction(transaction: Transaction | VersionedTransaction): Buffer;
@@ -0,0 +1,50 @@
1
+ import { TransactionExpiredBlockheightExceededError } from '@solana/web3.js';
2
+ /**
3
+ * Type guard for legacy transactions.
4
+ */
5
+ export function isLegacyTransaction(transaction) {
6
+ return 'recentBlockhash' in transaction;
7
+ }
8
+ /**
9
+ * Type guard for versioned transactions.
10
+ */
11
+ export function isVersionedTransaction(transaction) {
12
+ return 'version' in transaction;
13
+ }
14
+ /**
15
+ * Parse simulation errors into a human-readable format.
16
+ */
17
+ export function parseSimulationError(simulationValue) {
18
+ const logs = simulationValue.logs || [];
19
+ const errorLog = logs.find((l) => l.includes('Error:') || l.includes('failed') || l.includes('custom program error'));
20
+ if (errorLog)
21
+ return errorLog;
22
+ if (simulationValue.err) {
23
+ if (typeof simulationValue.err === 'string')
24
+ return simulationValue.err;
25
+ if (simulationValue.err.InstructionError) {
26
+ const [index, error] = simulationValue.err.InstructionError;
27
+ return `Instruction ${index} failed: ${JSON.stringify(error)}`;
28
+ }
29
+ return JSON.stringify(simulationValue.err);
30
+ }
31
+ return 'Unknown simulation error';
32
+ }
33
+ /**
34
+ * Checks if an error indicates a blockhash expiration.
35
+ */
36
+ export function isBlockhashExpiredError(error) {
37
+ return (error instanceof TransactionExpiredBlockheightExceededError ||
38
+ error.message?.includes('block height exceeded') ||
39
+ error.message?.includes('blockhash not found'));
40
+ }
41
+ /**
42
+ * Serialize transaction to bytes consistently.
43
+ */
44
+ export function serializeTransaction(transaction) {
45
+ if (isLegacyTransaction(transaction)) {
46
+ return transaction.serialize();
47
+ }
48
+ return Buffer.from(transaction.serialize());
49
+ }
50
+ //# sourceMappingURL=solanaUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solanaUtils.js","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,0CAA0C,EAC3C,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAA+C;IAE/C,OAAO,iBAAiB,IAAI,WAAW,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAA+C;IAE/C,OAAO,SAAS,IAAK,WAAmB,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,eAAoB;IACvD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CACvC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CACnF,CAAC;IAEF,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,OAAO,eAAe,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,eAAe,CAAC,GAAG,CAAC;QACxE,IAAI,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACzC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC5D,OAAO,eAAe,KAAK,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAU;IAChD,OAAO,CACL,KAAK,YAAY,0CAA0C;QAC3D,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,uBAAuB,CAAC;QAChD,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAC/C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAA+C;IAClF,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAE,WAAoC,CAAC,SAAS,EAAE,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * State and Map management utilities.
3
+ */
4
+ /**
5
+ * Clears entries from a Map that are older than a specified duration.
6
+ * Assumes the Map values have a 'startTime' property.
7
+ *
8
+ * @param map - The Map to clean up
9
+ * @param maxAgeMs - Maximum allowed age in milliseconds
10
+ */
11
+ export declare function clearExpiredEntries<T extends {
12
+ startTime: number;
13
+ }>(map: Map<string, T>, maxAgeMs: number): void;