@solana/web3.js 2.0.0-experimental.d6c5c0e → 2.0.0-experimental.d8524d8

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 (36) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1154 -43
  3. package/dist/index.browser.cjs +296 -57
  4. package/dist/index.browser.cjs.map +1 -1
  5. package/dist/index.browser.js +224 -55
  6. package/dist/index.browser.js.map +1 -1
  7. package/dist/index.development.js +6569 -435
  8. package/dist/index.development.js.map +1 -1
  9. package/dist/index.native.js +222 -55
  10. package/dist/index.native.js.map +1 -1
  11. package/dist/index.node.cjs +298 -57
  12. package/dist/index.node.cjs.map +1 -1
  13. package/dist/index.node.js +224 -55
  14. package/dist/index.node.js.map +1 -1
  15. package/dist/index.production.min.js +286 -4
  16. package/dist/types/airdrop-internal.d.ts +16 -0
  17. package/dist/types/airdrop-internal.d.ts.map +1 -0
  18. package/dist/types/airdrop.d.ts +12 -0
  19. package/dist/types/airdrop.d.ts.map +1 -0
  20. package/dist/types/decode-transaction.d.ts +9 -0
  21. package/dist/types/decode-transaction.d.ts.map +1 -0
  22. package/dist/types/index.d.ts +15 -2
  23. package/dist/types/index.d.ts.map +1 -1
  24. package/dist/types/send-transaction-internal.d.ts +27 -0
  25. package/dist/types/send-transaction-internal.d.ts.map +1 -0
  26. package/dist/types/send-transaction.d.ts +23 -0
  27. package/dist/types/send-transaction.d.ts.map +1 -0
  28. package/package.json +27 -39
  29. package/dist/types/rpc-default-config.d.ts +0 -3
  30. package/dist/types/rpc-default-config.d.ts.map +0 -1
  31. package/dist/types/rpc-integer-overflow-error.d.ts +0 -8
  32. package/dist/types/rpc-integer-overflow-error.d.ts.map +0 -1
  33. package/dist/types/rpc-transport.d.ts +0 -4
  34. package/dist/types/rpc-transport.d.ts.map +0 -1
  35. package/dist/types/rpc.d.ts +0 -5
  36. package/dist/types/rpc.d.ts.map +0 -1
@@ -1,79 +1,318 @@
1
1
  'use strict';
2
2
 
3
+ var accounts = require('@solana/accounts');
4
+ var addresses = require('@solana/addresses');
5
+ var codecs = require('@solana/codecs');
6
+ var functional = require('@solana/functional');
7
+ var instructions = require('@solana/instructions');
3
8
  var keys = require('@solana/keys');
4
- var rpcCore = require('@solana/rpc-core');
5
- var rpcTransport = require('@solana/rpc-transport');
9
+ var programs = require('@solana/programs');
10
+ var rpc = require('@solana/rpc');
11
+ var rpcParsedTypes = require('@solana/rpc-parsed-types');
12
+ var rpcSubscriptions = require('@solana/rpc-subscriptions');
13
+ var rpcTypes = require('@solana/rpc-types');
14
+ var signers = require('@solana/signers');
15
+ var transactions = require('@solana/transactions');
16
+ var transactionConfirmation = require('@solana/transaction-confirmation');
6
17
 
7
18
  // src/index.ts
8
19
 
9
- // src/rpc-integer-overflow-error.ts
10
- var SolanaJsonRpcIntegerOverflowError = class extends Error {
11
- constructor(methodName, keyPath, value) {
12
- const argPosition = (typeof keyPath[0] === "number" ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;
13
- let ordinal = "";
14
- const lastDigit = argPosition % 10;
15
- const lastTwoDigits = argPosition % 100;
16
- if (lastDigit == 1 && lastTwoDigits != 11) {
17
- ordinal = argPosition + "st";
18
- } else if (lastDigit == 2 && lastTwoDigits != 12) {
19
- ordinal = argPosition + "nd";
20
- } else if (lastDigit == 3 && lastTwoDigits != 13) {
21
- ordinal = argPosition + "rd";
22
- } else {
23
- ordinal = argPosition + "th";
24
- }
25
- const path = keyPath.length > 1 ? keyPath.slice(1).map((pathPart) => typeof pathPart === "number" ? `[${pathPart}]` : pathPart).join(".") : null;
26
- super(
27
- `The ${ordinal} argument to the \`${methodName}\` RPC method${path ? ` at path \`${path}\`` : ""} was \`${value}\`. This number is unsafe for use with the Solana JSON-RPC because it exceeds \`Number.MAX_SAFE_INTEGER\`.`
28
- );
29
- this.keyPath = keyPath;
30
- this.methodName = methodName;
31
- this.value = value;
32
- }
33
- get name() {
34
- return "SolanaJsonRpcIntegerOverflowError";
35
- }
36
- };
20
+ // src/airdrop-internal.ts
21
+ async function requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({
22
+ abortSignal,
23
+ commitment,
24
+ confirmSignatureOnlyTransaction,
25
+ lamports,
26
+ recipientAddress,
27
+ rpc
28
+ }) {
29
+ const airdropTransactionSignature = await rpc.requestAirdrop(recipientAddress, lamports, { commitment }).send({ abortSignal });
30
+ await confirmSignatureOnlyTransaction({
31
+ abortSignal,
32
+ commitment,
33
+ signature: airdropTransactionSignature
34
+ });
35
+ return airdropTransactionSignature;
36
+ }
37
37
 
38
- // src/rpc-default-config.ts
39
- var DEFAULT_RPC_CONFIG = {
40
- onIntegerOverflow(methodName, keyPath, value) {
41
- throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);
38
+ // src/airdrop.ts
39
+ function airdropFactory({ rpc, rpcSubscriptions }) {
40
+ const getRecentSignatureConfirmationPromise = transactionConfirmation.createRecentSignatureConfirmationPromiseFactory(
41
+ rpc,
42
+ rpcSubscriptions
43
+ );
44
+ async function confirmSignatureOnlyTransaction(config) {
45
+ await transactionConfirmation.waitForRecentTransactionConfirmationUntilTimeout({
46
+ ...config,
47
+ getRecentSignatureConfirmationPromise,
48
+ getTimeoutPromise: transactionConfirmation.getTimeoutPromise
49
+ });
42
50
  }
43
- };
44
- function createSolanaRpc(config) {
45
- return rpcTransport.createJsonRpc({
46
- ...config,
47
- api: rpcCore.createSolanaRpcApi(DEFAULT_RPC_CONFIG)
51
+ return async function airdrop(config) {
52
+ return await requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({
53
+ ...config,
54
+ confirmSignatureOnlyTransaction,
55
+ rpc
56
+ });
57
+ };
58
+ }
59
+ var compiledTransactionDecoder = void 0;
60
+ async function fetchLookupTables(lookupTableAddresses, rpc, config) {
61
+ const fetchedLookupTables = await accounts.fetchJsonParsedAccounts(
62
+ rpc,
63
+ lookupTableAddresses,
64
+ config
65
+ );
66
+ accounts.assertAccountsDecoded(fetchedLookupTables);
67
+ accounts.assertAccountsExist(fetchedLookupTables);
68
+ return fetchedLookupTables.reduce((acc, lookup) => {
69
+ return {
70
+ ...acc,
71
+ [lookup.address]: lookup.data.addresses
72
+ };
73
+ }, {});
74
+ }
75
+ async function decodeTransaction(encodedTransaction, rpc, config) {
76
+ const { lastValidBlockHeight, ...fetchAccountsConfig } = config ?? {};
77
+ if (!compiledTransactionDecoder)
78
+ compiledTransactionDecoder = transactions.getCompiledTransactionDecoder();
79
+ const compiledTransaction = compiledTransactionDecoder.decode(encodedTransaction);
80
+ const { compiledMessage } = compiledTransaction;
81
+ const lookupTables = "addressTableLookups" in compiledMessage && compiledMessage.addressTableLookups !== void 0 && compiledMessage.addressTableLookups.length > 0 ? compiledMessage.addressTableLookups : [];
82
+ const lookupTableAddresses = lookupTables.map((l) => l.lookupTableAddress);
83
+ const fetchedLookupTables = lookupTableAddresses.length > 0 ? await fetchLookupTables(lookupTableAddresses, rpc, fetchAccountsConfig) : {};
84
+ return transactions.decompileTransaction(compiledTransaction, {
85
+ addressesByLookupTableAddress: fetchedLookupTables,
86
+ lastValidBlockHeight
48
87
  });
49
88
  }
50
- function normalizeHeaders(headers) {
51
- const out = {};
52
- for (const headerName in headers) {
53
- out[headerName.toLowerCase()] = headers[headerName];
89
+ function getSendTransactionConfigWithAdjustedPreflightCommitment(commitment, config) {
90
+ if (
91
+ // The developer has supplied no value for `preflightCommitment`.
92
+ !config?.preflightCommitment && // The value of `commitment` is lower than the server default of `preflightCommitment`.
93
+ rpcTypes.commitmentComparator(
94
+ commitment,
95
+ "finalized"
96
+ /* default value of `preflightCommitment` */
97
+ ) < 0
98
+ ) {
99
+ return {
100
+ ...config,
101
+ // In the common case, it is unlikely that you want to simulate a transaction at
102
+ // `finalized` commitment when your standard of commitment for confirming the
103
+ // transaction is lower. Cap the simulation commitment level to the level of the
104
+ // confirmation commitment.
105
+ preflightCommitment: commitment
106
+ };
54
107
  }
55
- return out;
108
+ return config;
109
+ }
110
+ async function sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({
111
+ abortSignal,
112
+ commitment,
113
+ rpc,
114
+ transaction,
115
+ ...sendTransactionConfig
116
+ }) {
117
+ const base64EncodedWireTransaction = transactions.getBase64EncodedWireTransaction(transaction);
118
+ return await rpc.sendTransaction(base64EncodedWireTransaction, {
119
+ ...getSendTransactionConfigWithAdjustedPreflightCommitment(commitment, sendTransactionConfig),
120
+ encoding: "base64"
121
+ }).send({ abortSignal });
56
122
  }
57
- function createDefaultRpcTransport(config) {
58
- return rpcTransport.createHttpTransport({
59
- ...config,
60
- headers: {
61
- ...config.headers ? normalizeHeaders(config.headers) : void 0,
62
- ...{
63
- // Keep these headers lowercase so they will override any user-supplied headers above.
64
- "solana-client": `js/${"2.0.0-development"}` ?? "UNKNOWN"
65
- }
66
- }
123
+ async function sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({
124
+ abortSignal,
125
+ commitment,
126
+ confirmDurableNonceTransaction,
127
+ rpc,
128
+ transaction,
129
+ ...sendTransactionConfig
130
+ }) {
131
+ const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({
132
+ ...sendTransactionConfig,
133
+ abortSignal,
134
+ commitment,
135
+ rpc,
136
+ transaction
67
137
  });
138
+ await confirmDurableNonceTransaction({
139
+ abortSignal,
140
+ commitment,
141
+ transaction
142
+ });
143
+ return transactionSignature;
144
+ }
145
+ async function sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({
146
+ abortSignal,
147
+ commitment,
148
+ confirmRecentTransaction,
149
+ rpc,
150
+ transaction,
151
+ ...sendTransactionConfig
152
+ }) {
153
+ const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({
154
+ ...sendTransactionConfig,
155
+ abortSignal,
156
+ commitment,
157
+ rpc,
158
+ transaction
159
+ });
160
+ await confirmRecentTransaction({
161
+ abortSignal,
162
+ commitment,
163
+ transaction
164
+ });
165
+ return transactionSignature;
68
166
  }
69
167
 
70
- exports.createDefaultRpcTransport = createDefaultRpcTransport;
71
- exports.createSolanaRpc = createSolanaRpc;
168
+ // src/send-transaction.ts
169
+ function sendTransactionWithoutConfirmingFactory({
170
+ rpc
171
+ }) {
172
+ return async function sendTransactionWithoutConfirming(transaction, config) {
173
+ await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({
174
+ ...config,
175
+ rpc,
176
+ transaction
177
+ });
178
+ };
179
+ }
180
+ function sendAndConfirmDurableNonceTransactionFactory({
181
+ rpc,
182
+ rpcSubscriptions
183
+ }) {
184
+ const getNonceInvalidationPromise = transactionConfirmation.createNonceInvalidationPromiseFactory(rpc, rpcSubscriptions);
185
+ const getRecentSignatureConfirmationPromise = transactionConfirmation.createRecentSignatureConfirmationPromiseFactory(
186
+ rpc,
187
+ rpcSubscriptions
188
+ );
189
+ async function confirmDurableNonceTransaction(config) {
190
+ await transactionConfirmation.waitForDurableNonceTransactionConfirmation({
191
+ ...config,
192
+ getNonceInvalidationPromise,
193
+ getRecentSignatureConfirmationPromise
194
+ });
195
+ }
196
+ return async function sendAndConfirmDurableNonceTransaction(transaction, config) {
197
+ await sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({
198
+ ...config,
199
+ confirmDurableNonceTransaction,
200
+ rpc,
201
+ transaction
202
+ });
203
+ };
204
+ }
205
+ function sendAndConfirmTransactionFactory({
206
+ rpc,
207
+ rpcSubscriptions
208
+ }) {
209
+ const getBlockHeightExceedencePromise = transactionConfirmation.createBlockHeightExceedencePromiseFactory({
210
+ rpc,
211
+ rpcSubscriptions
212
+ });
213
+ const getRecentSignatureConfirmationPromise = transactionConfirmation.createRecentSignatureConfirmationPromiseFactory(
214
+ rpc,
215
+ rpcSubscriptions
216
+ );
217
+ async function confirmRecentTransaction(config) {
218
+ await transactionConfirmation.waitForRecentTransactionConfirmation({
219
+ ...config,
220
+ getBlockHeightExceedencePromise,
221
+ getRecentSignatureConfirmationPromise
222
+ });
223
+ }
224
+ return async function sendAndConfirmTransaction(transaction, config) {
225
+ await sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({
226
+ ...config,
227
+ confirmRecentTransaction,
228
+ rpc,
229
+ transaction
230
+ });
231
+ };
232
+ }
233
+
234
+ exports.airdropFactory = airdropFactory;
235
+ exports.decodeTransaction = decodeTransaction;
236
+ exports.sendAndConfirmDurableNonceTransactionFactory = sendAndConfirmDurableNonceTransactionFactory;
237
+ exports.sendAndConfirmTransactionFactory = sendAndConfirmTransactionFactory;
238
+ exports.sendTransactionWithoutConfirmingFactory = sendTransactionWithoutConfirmingFactory;
239
+ Object.keys(accounts).forEach(function (k) {
240
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
241
+ enumerable: true,
242
+ get: function () { return accounts[k]; }
243
+ });
244
+ });
245
+ Object.keys(addresses).forEach(function (k) {
246
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
247
+ enumerable: true,
248
+ get: function () { return addresses[k]; }
249
+ });
250
+ });
251
+ Object.keys(codecs).forEach(function (k) {
252
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
253
+ enumerable: true,
254
+ get: function () { return codecs[k]; }
255
+ });
256
+ });
257
+ Object.keys(functional).forEach(function (k) {
258
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
259
+ enumerable: true,
260
+ get: function () { return functional[k]; }
261
+ });
262
+ });
263
+ Object.keys(instructions).forEach(function (k) {
264
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
265
+ enumerable: true,
266
+ get: function () { return instructions[k]; }
267
+ });
268
+ });
72
269
  Object.keys(keys).forEach(function (k) {
73
- if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
270
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
74
271
  enumerable: true,
75
272
  get: function () { return keys[k]; }
76
273
  });
77
274
  });
275
+ Object.keys(programs).forEach(function (k) {
276
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
277
+ enumerable: true,
278
+ get: function () { return programs[k]; }
279
+ });
280
+ });
281
+ Object.keys(rpc).forEach(function (k) {
282
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
283
+ enumerable: true,
284
+ get: function () { return rpc[k]; }
285
+ });
286
+ });
287
+ Object.keys(rpcParsedTypes).forEach(function (k) {
288
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
289
+ enumerable: true,
290
+ get: function () { return rpcParsedTypes[k]; }
291
+ });
292
+ });
293
+ Object.keys(rpcSubscriptions).forEach(function (k) {
294
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
295
+ enumerable: true,
296
+ get: function () { return rpcSubscriptions[k]; }
297
+ });
298
+ });
299
+ Object.keys(rpcTypes).forEach(function (k) {
300
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
301
+ enumerable: true,
302
+ get: function () { return rpcTypes[k]; }
303
+ });
304
+ });
305
+ Object.keys(signers).forEach(function (k) {
306
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
307
+ enumerable: true,
308
+ get: function () { return signers[k]; }
309
+ });
310
+ });
311
+ Object.keys(transactions).forEach(function (k) {
312
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
313
+ enumerable: true,
314
+ get: function () { return transactions[k]; }
315
+ });
316
+ });
78
317
  //# sourceMappingURL=out.js.map
79
318
  //# sourceMappingURL=index.browser.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/rpc-transport.ts"],"names":[],"mappings":";AAAA,cAAc;;;ACAd,SAA2B,0BAA0B;;;ACA9C,IAAM,oCAAN,cAAgD,MAAM;AAAA,EAIzD,YAAY,YAAoB,SAA8B,OAAe;AACzE,UAAM,eAAe,OAAO,QAAQ,CAAC,MAAM,WAAW,QAAQ,CAAC,IAAI,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK;AAC/F,QAAI,UAAU;AACd,UAAM,YAAY,cAAc;AAChC,UAAM,gBAAgB,cAAc;AACpC,QAAI,aAAa,KAAK,iBAAiB,IAAI;AACvC,gBAAU,cAAc;AAAA,IAC5B,WAAW,aAAa,KAAK,iBAAiB,IAAI;AAC9C,gBAAU,cAAc;AAAA,IAC5B,WAAW,aAAa,KAAK,iBAAiB,IAAI;AAC9C,gBAAU,cAAc;AAAA,IAC5B,OAAO;AACH,gBAAU,cAAc;AAAA,IAC5B;AACA,UAAM,OACF,QAAQ,SAAS,IACX,QACK,MAAM,CAAC,EACP,IAAI,cAAa,OAAO,aAAa,WAAW,IAAI,cAAc,QAAS,EAC3E,KAAK,GAAG,IACb;AACV;AAAA,MACI,OAAO,6BAA6B,0BAC7B,OAAO,cAAc,WAAW,YAAY;AAAA,IAGvD;AACA,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,QAAQ;AAAA,EACjB;AAAA,EACA,IAAI,OAAO;AACP,WAAO;AAAA,EACX;AACJ;;;ACnCO,IAAM,qBAAwE;AAAA,EACjF,kBAAkB,YAAY,SAAS,OAAO;AAC1C,UAAM,IAAI,kCAAkC,YAAY,SAAS,KAAK;AAAA,EAC1E;AACJ;;;AFJA,SAAS,qBAAqB;AAGvB,SAAS,gBAAgB,QAAiF;AAC7G,SAAO,cAAgC;AAAA,IACnC,GAAG;AAAA,IACH,KAAK,mBAAmB,kBAAkB;AAAA,EAC9C,CAAC;AACL;;;AGXA,SAAS,2BAA2B;AAMpC,SAAS,iBACL,SACiD;AACjD,QAAM,MAA8B,CAAC;AACrC,aAAW,cAAc,SAAS;AAC9B,QAAI,WAAW,YAAY,CAAC,IAAI,QAAQ,UAAU;AAAA,EACtD;AACA,SAAO;AACX;AAEO,SAAS,0BAA0B,QAAkE;AACxG,SAAO,oBAAoB;AAAA,IACvB,GAAG;AAAA,IACH,SAAS;AAAA,MACL,GAAI,OAAO,UAAU,iBAAiB,OAAO,OAAO,IAAI;AAAA,MACxD,GAAI;AAAA;AAAA,QAEA,iBAAiB,MAAM,yBAAiB;AAAA,MAC5C;AAAA,IACJ;AAAA,EACJ,CAAC;AACL","sourcesContent":["export * from '@solana/keys';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { SolanaRpcMethods, createSolanaRpcApi } from '@solana/rpc-core';\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/airdrop.ts","../src/airdrop-internal.ts","../src/decode-transaction.ts","../src/send-transaction.ts","../src/send-transaction-internal.ts"],"names":["createRecentSignatureConfirmationPromiseFactory"],"mappings":"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","sourcesContent":["export * from '@solana/accounts';\nexport * from '@solana/addresses';\nexport * from '@solana/codecs';\nexport * from '@solana/functional';\nexport * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/programs';\nexport * from '@solana/rpc';\nexport * from '@solana/rpc-parsed-types';\nexport * from '@solana/rpc-subscriptions';\nexport * from '@solana/rpc-types';\nexport * from '@solana/signers';\nexport * from '@solana/transactions';\nexport * from './airdrop';\nexport * from './decode-transaction';\nexport * from './send-transaction';\n","import type { Signature } from '@solana/keys';\nimport type { GetSignatureStatusesApi, RequestAirdropApi, Rpc } from '@solana/rpc';\nimport type { RpcSubscriptions, SignatureNotificationsApi } from '@solana/rpc-subscriptions';\nimport {\n createRecentSignatureConfirmationPromiseFactory,\n getTimeoutPromise,\n waitForRecentTransactionConfirmationUntilTimeout,\n} from '@solana/transaction-confirmation';\n\nimport { requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT } from './airdrop-internal';\n\ntype AirdropFunction = (\n config: Omit<\n Parameters<typeof requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'confirmSignatureOnlyTransaction' | 'rpc'\n >,\n) => Promise<Signature>;\n\ntype AirdropFactoryConfig = Readonly<{\n rpc: Rpc<RequestAirdropApi & GetSignatureStatusesApi>;\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi>;\n}>;\n\nexport function airdropFactory({ rpc, rpcSubscriptions }: AirdropFactoryConfig): AirdropFunction {\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory(\n rpc,\n rpcSubscriptions,\n );\n async function confirmSignatureOnlyTransaction(\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmationUntilTimeout>[0],\n 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'\n >,\n ) {\n await waitForRecentTransactionConfirmationUntilTimeout({\n ...config,\n getRecentSignatureConfirmationPromise,\n getTimeoutPromise,\n });\n }\n return async function airdrop(config) {\n return await requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmSignatureOnlyTransaction,\n rpc,\n });\n };\n}\n","import type { Address } from '@solana/addresses';\nimport type { Signature } from '@solana/keys';\nimport type { RequestAirdropApi, Rpc } from '@solana/rpc';\nimport type { Commitment, LamportsUnsafeBeyond2Pow53Minus1 } from '@solana/rpc-types';\nimport { waitForRecentTransactionConfirmationUntilTimeout } from '@solana/transaction-confirmation';\n\ntype RequestAndConfirmAirdropConfig = Readonly<{\n abortSignal?: AbortSignal;\n commitment: Commitment;\n confirmSignatureOnlyTransaction: (\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmationUntilTimeout>[0],\n 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'\n >,\n ) => Promise<void>;\n lamports: LamportsUnsafeBeyond2Pow53Minus1;\n recipientAddress: Address;\n rpc: Rpc<RequestAirdropApi>;\n}>;\n\nexport async function requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmSignatureOnlyTransaction,\n lamports,\n recipientAddress,\n rpc,\n}: RequestAndConfirmAirdropConfig): Promise<Signature> {\n const airdropTransactionSignature = await rpc\n .requestAirdrop(recipientAddress, lamports, { commitment })\n .send({ abortSignal });\n await confirmSignatureOnlyTransaction({\n abortSignal,\n commitment,\n signature: airdropTransactionSignature,\n });\n return airdropTransactionSignature;\n}\n","import {\n assertAccountsDecoded,\n assertAccountsExist,\n type FetchAccountsConfig,\n fetchJsonParsedAccounts,\n} from '@solana/accounts';\nimport type { Address } from '@solana/addresses';\nimport type { GetMultipleAccountsApi, Rpc } from '@solana/rpc';\nimport {\n type AddressesByLookupTableAddress,\n type CompilableTransaction,\n decompileTransaction,\n getCompiledTransactionDecoder,\n type ITransactionWithSignatures,\n} from '@solana/transactions';\n\nlet compiledTransactionDecoder: ReturnType<typeof getCompiledTransactionDecoder> | undefined = undefined;\n\ntype FetchedAddressLookup = {\n addresses: Address[];\n};\n\nasync function fetchLookupTables(\n lookupTableAddresses: Address[],\n rpc: Rpc<GetMultipleAccountsApi>,\n config?: FetchAccountsConfig,\n): Promise<AddressesByLookupTableAddress> {\n const fetchedLookupTables = await fetchJsonParsedAccounts<FetchedAddressLookup[]>(\n rpc,\n lookupTableAddresses,\n config,\n );\n assertAccountsDecoded(fetchedLookupTables);\n assertAccountsExist(fetchedLookupTables);\n\n return fetchedLookupTables.reduce<AddressesByLookupTableAddress>((acc, lookup) => {\n return {\n ...acc,\n [lookup.address]: lookup.data.addresses,\n };\n }, {});\n}\n\ntype DecodeTransactionConfig = FetchAccountsConfig & {\n lastValidBlockHeight?: bigint;\n};\n\nexport async function decodeTransaction(\n encodedTransaction: Uint8Array,\n rpc: Rpc<GetMultipleAccountsApi>,\n config?: DecodeTransactionConfig,\n): Promise<CompilableTransaction | (CompilableTransaction & ITransactionWithSignatures)> {\n const { lastValidBlockHeight, ...fetchAccountsConfig } = config ?? {};\n\n if (!compiledTransactionDecoder) compiledTransactionDecoder = getCompiledTransactionDecoder();\n const compiledTransaction = compiledTransactionDecoder.decode(encodedTransaction);\n const { compiledMessage } = compiledTransaction;\n\n const lookupTables =\n 'addressTableLookups' in compiledMessage &&\n compiledMessage.addressTableLookups !== undefined &&\n compiledMessage.addressTableLookups.length > 0\n ? compiledMessage.addressTableLookups\n : [];\n const lookupTableAddresses = lookupTables.map(l => l.lookupTableAddress);\n\n const fetchedLookupTables =\n lookupTableAddresses.length > 0 ? await fetchLookupTables(lookupTableAddresses, rpc, fetchAccountsConfig) : {};\n\n return decompileTransaction(compiledTransaction, {\n addressesByLookupTableAddress: fetchedLookupTables,\n lastValidBlockHeight,\n });\n}\n","import type { GetAccountInfoApi, GetEpochInfoApi, GetSignatureStatusesApi, Rpc, SendTransactionApi } from '@solana/rpc';\nimport type {\n AccountNotificationsApi,\n RpcSubscriptions,\n SignatureNotificationsApi,\n SlotNotificationsApi,\n} from '@solana/rpc-subscriptions';\nimport {\n createBlockHeightExceedencePromiseFactory,\n createNonceInvalidationPromiseFactory,\n createRecentSignatureConfirmationPromiseFactory,\n waitForDurableNonceTransactionConfirmation,\n waitForRecentTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport {\n BaseTransaction,\n IDurableNonceTransaction,\n IFullySignedTransaction,\n ITransactionWithBlockhashLifetime,\n ITransactionWithFeePayer,\n} from '@solana/transactions';\n\nimport {\n SendableTransaction,\n sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT,\n sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT,\n sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT,\n} from './send-transaction-internal';\n\ninterface SendAndConfirmDurableNonceTransactionFactoryConfig {\n rpc: Rpc<GetAccountInfoApi & GetSignatureStatusesApi & SendTransactionApi>;\n rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi & SignatureNotificationsApi>;\n}\n\ninterface SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig {\n rpc: Rpc<GetEpochInfoApi & GetSignatureStatusesApi & SendTransactionApi>;\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi & SlotNotificationsApi>;\n}\n\ninterface SendTransactionWithoutConfirmingFactoryConfig {\n rpc: Rpc<SendTransactionApi>;\n}\n\ntype SendAndConfirmTransactionWithBlockhashLifetimeFunction = (\n transaction: SendableTransaction & ITransactionWithBlockhashLifetime,\n config: Omit<\n Parameters<typeof sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'confirmRecentTransaction' | 'rpc' | 'transaction'\n >,\n) => Promise<void>;\n\ntype SendAndConfirmDurableNonceTransactionFunction = (\n transaction: BaseTransaction & ITransactionWithFeePayer & IDurableNonceTransaction & IFullySignedTransaction,\n config: Omit<\n Parameters<typeof sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT>[0],\n 'confirmDurableNonceTransaction' | 'rpc' | 'transaction'\n >,\n) => Promise<void>;\n\ntype SendTransactionWithoutConfirmingFunction = (\n transaction: SendableTransaction,\n config: Omit<Parameters<typeof sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT>[0], 'rpc' | 'transaction'>,\n) => Promise<void>;\n\nexport function sendTransactionWithoutConfirmingFactory({\n rpc,\n}: SendTransactionWithoutConfirmingFactoryConfig): SendTransactionWithoutConfirmingFunction {\n return async function sendTransactionWithoutConfirming(transaction, config) {\n await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n rpc,\n transaction,\n });\n };\n}\n\nexport function sendAndConfirmDurableNonceTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig): SendAndConfirmDurableNonceTransactionFunction {\n const getNonceInvalidationPromise = createNonceInvalidationPromiseFactory(rpc, rpcSubscriptions);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory(\n rpc,\n rpcSubscriptions,\n );\n async function confirmDurableNonceTransaction(\n config: Omit<\n Parameters<typeof waitForDurableNonceTransactionConfirmation>[0],\n 'getNonceInvalidationPromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) {\n await waitForDurableNonceTransactionConfirmation({\n ...config,\n getNonceInvalidationPromise,\n getRecentSignatureConfirmationPromise,\n });\n }\n return async function sendAndConfirmDurableNonceTransaction(transaction, config) {\n await sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmDurableNonceTransaction,\n rpc,\n transaction,\n });\n };\n}\n\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig): SendAndConfirmTransactionWithBlockhashLifetimeFunction {\n const getBlockHeightExceedencePromise = createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n });\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory(\n rpc,\n rpcSubscriptions,\n );\n async function confirmRecentTransaction(\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmation>[0],\n 'getBlockHeightExceedencePromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) {\n await waitForRecentTransactionConfirmation({\n ...config,\n getBlockHeightExceedencePromise,\n getRecentSignatureConfirmationPromise,\n });\n }\n return async function sendAndConfirmTransaction(transaction, config) {\n await sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmRecentTransaction,\n rpc,\n transaction,\n });\n };\n}\n","import type { Signature } from '@solana/keys';\nimport type { Rpc, SendTransactionApi } from '@solana/rpc';\nimport { Commitment, commitmentComparator } from '@solana/rpc-types';\nimport {\n waitForDurableNonceTransactionConfirmation,\n waitForRecentTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport {\n BaseTransaction,\n getBase64EncodedWireTransaction,\n IDurableNonceTransaction,\n IFullySignedTransaction,\n ITransactionWithBlockhashLifetime,\n ITransactionWithFeePayer,\n} from '@solana/transactions';\n\ninterface SendAndConfirmDurableNonceTransactionConfig\n extends SendTransactionBaseConfig,\n SendTransactionConfigWithoutEncoding {\n confirmDurableNonceTransaction: (\n config: Omit<\n Parameters<typeof waitForDurableNonceTransactionConfirmation>[0],\n 'getNonceInvalidationPromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) => Promise<void>;\n transaction: SendableTransaction & IDurableNonceTransaction;\n}\n\ninterface SendAndConfirmTransactionWithBlockhashLifetimeConfig\n extends SendTransactionBaseConfig,\n SendTransactionConfigWithoutEncoding {\n confirmRecentTransaction: (\n config: Omit<\n Parameters<typeof waitForRecentTransactionConfirmation>[0],\n 'getBlockHeightExceedencePromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) => Promise<void>;\n transaction: SendableTransaction & ITransactionWithBlockhashLifetime;\n}\n\ninterface SendTransactionBaseConfig extends SendTransactionConfigWithoutEncoding {\n abortSignal?: AbortSignal;\n commitment: Commitment;\n rpc: Rpc<SendTransactionApi>;\n transaction: SendableTransaction;\n}\n\ninterface SendTransactionConfigWithoutEncoding\n extends Omit<NonNullable<Parameters<SendTransactionApi['sendTransaction']>[1]>, 'encoding'> {}\n\nexport type SendableTransaction = BaseTransaction &\n (ITransactionWithBlockhashLifetime | IDurableNonceTransaction) &\n ITransactionWithFeePayer &\n IFullySignedTransaction;\n\nfunction getSendTransactionConfigWithAdjustedPreflightCommitment(\n commitment: Commitment,\n config?: SendTransactionConfigWithoutEncoding,\n): SendTransactionConfigWithoutEncoding | void {\n if (\n // The developer has supplied no value for `preflightCommitment`.\n !config?.preflightCommitment &&\n // The value of `commitment` is lower than the server default of `preflightCommitment`.\n commitmentComparator(commitment, 'finalized' /* default value of `preflightCommitment` */) < 0\n ) {\n return {\n ...config,\n // In the common case, it is unlikely that you want to simulate a transaction at\n // `finalized` commitment when your standard of commitment for confirming the\n // transaction is lower. Cap the simulation commitment level to the level of the\n // confirmation commitment.\n preflightCommitment: commitment,\n };\n }\n // The commitment at which the developer wishes to confirm the transaction is at least as\n // high as the commitment at which they want to simulate it. Honour the config as-is.\n return config;\n}\n\nexport async function sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendTransactionBaseConfig): Promise<Signature> {\n const base64EncodedWireTransaction = getBase64EncodedWireTransaction(transaction);\n return await rpc\n .sendTransaction(base64EncodedWireTransaction, {\n ...getSendTransactionConfigWithAdjustedPreflightCommitment(commitment, sendTransactionConfig),\n encoding: 'base64',\n })\n .send({ abortSignal });\n}\n\nexport async function sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmDurableNonceTransaction,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendAndConfirmDurableNonceTransactionConfig): Promise<Signature> {\n const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...sendTransactionConfig,\n abortSignal,\n commitment,\n rpc,\n transaction,\n });\n await confirmDurableNonceTransaction({\n abortSignal,\n commitment,\n transaction,\n });\n return transactionSignature;\n}\n\nexport async function sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmRecentTransaction,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendAndConfirmTransactionWithBlockhashLifetimeConfig): Promise<Signature> {\n const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...sendTransactionConfig,\n abortSignal,\n commitment,\n rpc,\n transaction,\n });\n await confirmRecentTransaction({\n abortSignal,\n commitment,\n transaction,\n });\n return transactionSignature;\n}\n"]}