@solana/web3.js 2.0.0-experimental.c5061ae → 2.0.0-experimental.c93679a
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/index.browser.cjs +196 -6
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +188 -4
- package/dist/index.browser.js.map +1 -1
- package/dist/index.development.js +1078 -210
- package/dist/index.development.js.map +1 -1
- package/dist/index.native.js +177 -4
- package/dist/index.native.js.map +1 -1
- package/dist/index.node.cjs +185 -4
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +177 -6
- package/dist/index.node.js.map +1 -1
- package/dist/index.production.min.js +33 -28
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/rpc-default-config.d.ts.map +1 -0
- package/dist/types/rpc-integer-overflow-error.d.ts.map +1 -0
- package/dist/types/rpc-request-coalescer.d.ts.map +1 -0
- package/dist/types/rpc-request-deduplication.d.ts.map +1 -0
- package/dist/types/rpc-transport.d.ts.map +1 -0
- package/dist/types/rpc-websocket-autopinger.d.ts +8 -0
- package/dist/types/rpc-websocket-autopinger.d.ts.map +1 -0
- package/dist/types/rpc-websocket-connection-sharding.d.ts +13 -0
- package/dist/types/rpc-websocket-connection-sharding.d.ts.map +1 -0
- package/dist/types/rpc-websocket-transport.d.ts +13 -0
- package/dist/types/rpc-websocket-transport.d.ts.map +1 -0
- package/dist/types/rpc.d.ts +4 -3
- package/dist/types/rpc.d.ts.map +1 -0
- package/package.json +17 -19
package/dist/index.node.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
export * from '@solana/addresses';
|
|
1
2
|
export * from '@solana/instructions';
|
|
2
3
|
export * from '@solana/keys';
|
|
3
4
|
export * from '@solana/transactions';
|
|
4
|
-
import { createSolanaRpcApi } from '@solana/rpc-core';
|
|
5
|
-
import { createJsonRpc, createHttpTransport } from '@solana/rpc-transport';
|
|
5
|
+
import { createSolanaRpcApi, createSolanaRpcSubscriptionsApi } from '@solana/rpc-core';
|
|
6
|
+
import { createJsonRpc, createJsonSubscriptionRpc, createHttpTransport, createWebSocketTransport } from '@solana/rpc-transport';
|
|
6
7
|
import fastStableStringify from 'fast-stable-stringify';
|
|
7
8
|
|
|
8
|
-
//
|
|
9
|
+
// ../build-scripts/env-shim.ts
|
|
10
|
+
var __DEV__ = /* @__PURE__ */ (() => process["env"].NODE_ENV === "development")();
|
|
9
11
|
|
|
10
12
|
// src/rpc-integer-overflow-error.ts
|
|
11
13
|
var SolanaJsonRpcIntegerOverflowError = class extends Error {
|
|
@@ -50,6 +52,12 @@ function createSolanaRpc(config) {
|
|
|
50
52
|
api: createSolanaRpcApi(DEFAULT_RPC_CONFIG)
|
|
51
53
|
});
|
|
52
54
|
}
|
|
55
|
+
function createSolanaRpcSubscriptions(config) {
|
|
56
|
+
return createJsonSubscriptionRpc({
|
|
57
|
+
...config,
|
|
58
|
+
api: createSolanaRpcSubscriptionsApi(DEFAULT_RPC_CONFIG)
|
|
59
|
+
});
|
|
60
|
+
}
|
|
53
61
|
|
|
54
62
|
// src/rpc-request-coalescer.ts
|
|
55
63
|
function getRpcTransportWithRequestCoalescing(transport, getDeduplicationKey) {
|
|
@@ -135,6 +143,169 @@ function createDefaultRpcTransport(config) {
|
|
|
135
143
|
);
|
|
136
144
|
}
|
|
137
145
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
146
|
+
// src/rpc-websocket-autopinger.ts
|
|
147
|
+
var PING_PAYLOAD = {
|
|
148
|
+
jsonrpc: "2.0",
|
|
149
|
+
method: "ping"
|
|
150
|
+
};
|
|
151
|
+
function getWebSocketTransportWithAutoping({ intervalMs, transport }) {
|
|
152
|
+
const pingableConnections = /* @__PURE__ */ new Map();
|
|
153
|
+
return async (...args) => {
|
|
154
|
+
const connection = await transport(...args);
|
|
155
|
+
let intervalId;
|
|
156
|
+
function sendPing() {
|
|
157
|
+
connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(PING_PAYLOAD);
|
|
158
|
+
}
|
|
159
|
+
function restartPingTimer() {
|
|
160
|
+
clearInterval(intervalId);
|
|
161
|
+
intervalId = setInterval(sendPing, intervalMs);
|
|
162
|
+
}
|
|
163
|
+
if (pingableConnections.has(connection) === false) {
|
|
164
|
+
pingableConnections.set(connection, {
|
|
165
|
+
[Symbol.asyncIterator]: connection[Symbol.asyncIterator].bind(connection),
|
|
166
|
+
send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: (...args2) => {
|
|
167
|
+
restartPingTimer();
|
|
168
|
+
return connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...args2);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
(async () => {
|
|
172
|
+
try {
|
|
173
|
+
for await (const _ of connection) {
|
|
174
|
+
restartPingTimer();
|
|
175
|
+
}
|
|
176
|
+
} catch {
|
|
177
|
+
} finally {
|
|
178
|
+
pingableConnections.delete(connection);
|
|
179
|
+
clearInterval(intervalId);
|
|
180
|
+
if (handleOffline) {
|
|
181
|
+
globalThis.window.removeEventListener("offline", handleOffline);
|
|
182
|
+
}
|
|
183
|
+
if (handleOnline) {
|
|
184
|
+
globalThis.window.removeEventListener("online", handleOnline);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
})();
|
|
188
|
+
{
|
|
189
|
+
restartPingTimer();
|
|
190
|
+
}
|
|
191
|
+
let handleOffline;
|
|
192
|
+
let handleOnline;
|
|
193
|
+
}
|
|
194
|
+
return pingableConnections.get(connection);
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// src/rpc-websocket-connection-sharding.ts
|
|
199
|
+
var NULL_SHARD_CACHE_KEY = Symbol(
|
|
200
|
+
__DEV__ ? "Cache key to use when there is no connection sharding strategy" : void 0
|
|
201
|
+
);
|
|
202
|
+
function registerIterableCleanup(iterable, cleanupFn) {
|
|
203
|
+
(async () => {
|
|
204
|
+
try {
|
|
205
|
+
for await (const _ of iterable)
|
|
206
|
+
;
|
|
207
|
+
} catch {
|
|
208
|
+
} finally {
|
|
209
|
+
cleanupFn();
|
|
210
|
+
}
|
|
211
|
+
})();
|
|
212
|
+
}
|
|
213
|
+
function getWebSocketTransportWithConnectionSharding({ getShard, transport }) {
|
|
214
|
+
const cache = /* @__PURE__ */ new Map();
|
|
215
|
+
function updateCache(shardKey, updater) {
|
|
216
|
+
const currentCacheEntry = cache.get(shardKey);
|
|
217
|
+
if (!currentCacheEntry) {
|
|
218
|
+
throw new Error(`Found no cache entry for connection with shard key \`${shardKey.toString()}\``);
|
|
219
|
+
}
|
|
220
|
+
const nextCacheEntry = updater(currentCacheEntry);
|
|
221
|
+
cache.set(shardKey, nextCacheEntry);
|
|
222
|
+
return nextCacheEntry;
|
|
223
|
+
}
|
|
224
|
+
return async (...args) => {
|
|
225
|
+
const { payload, signal, ...rest } = args[0];
|
|
226
|
+
const shardKey = getShard ? getShard(payload) : NULL_SHARD_CACHE_KEY;
|
|
227
|
+
function cleanup() {
|
|
228
|
+
cache.delete(shardKey);
|
|
229
|
+
signal.removeEventListener("abort", handleAbort);
|
|
230
|
+
}
|
|
231
|
+
function handleAbort() {
|
|
232
|
+
if (cache.get(shardKey)?.purgeScheduled !== true) {
|
|
233
|
+
updateCache(shardKey, (currentCacheEntry) => ({
|
|
234
|
+
...currentCacheEntry,
|
|
235
|
+
purgeScheduled: true
|
|
236
|
+
}));
|
|
237
|
+
globalThis.queueMicrotask(() => {
|
|
238
|
+
const cacheEntryAtEndOfRunloop = cache.get(shardKey);
|
|
239
|
+
if (!cacheEntryAtEndOfRunloop) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
if (cacheEntryAtEndOfRunloop.referenceCount === 0) {
|
|
243
|
+
cacheEntry.abortController.abort();
|
|
244
|
+
cleanup();
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
const cacheEntry = updateCache(shardKey, (currentCacheEntry) => ({
|
|
249
|
+
...currentCacheEntry,
|
|
250
|
+
referenceCount: currentCacheEntry.referenceCount - 1
|
|
251
|
+
}));
|
|
252
|
+
}
|
|
253
|
+
signal.addEventListener("abort", handleAbort);
|
|
254
|
+
try {
|
|
255
|
+
const cacheEntry = cache.get(shardKey);
|
|
256
|
+
if (!cacheEntry) {
|
|
257
|
+
const connectionAbortController = new AbortController();
|
|
258
|
+
const newConnectionPromise = transport({
|
|
259
|
+
payload,
|
|
260
|
+
signal: connectionAbortController.signal,
|
|
261
|
+
...rest
|
|
262
|
+
});
|
|
263
|
+
const newCacheEntry = {
|
|
264
|
+
abortController: connectionAbortController,
|
|
265
|
+
connection: newConnectionPromise,
|
|
266
|
+
purgeScheduled: false,
|
|
267
|
+
referenceCount: 1
|
|
268
|
+
};
|
|
269
|
+
cache.set(shardKey, newCacheEntry);
|
|
270
|
+
const newConnection = await newConnectionPromise;
|
|
271
|
+
registerIterableCleanup(newConnection, cleanup);
|
|
272
|
+
updateCache(shardKey, (currentCacheEntry) => ({
|
|
273
|
+
...currentCacheEntry,
|
|
274
|
+
connection: newConnection
|
|
275
|
+
}));
|
|
276
|
+
return newConnection;
|
|
277
|
+
} else {
|
|
278
|
+
updateCache(shardKey, (currentCacheEntry) => ({
|
|
279
|
+
...currentCacheEntry,
|
|
280
|
+
referenceCount: currentCacheEntry.referenceCount + 1
|
|
281
|
+
}));
|
|
282
|
+
const connectionOrConnectionPromise = cacheEntry.connection;
|
|
283
|
+
const cachedConnection = "then" in connectionOrConnectionPromise ? await connectionOrConnectionPromise : connectionOrConnectionPromise;
|
|
284
|
+
registerIterableCleanup(cachedConnection, cleanup);
|
|
285
|
+
await cachedConnection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(payload);
|
|
286
|
+
return cachedConnection;
|
|
287
|
+
}
|
|
288
|
+
} catch (e) {
|
|
289
|
+
cleanup();
|
|
290
|
+
throw e;
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// src/rpc-websocket-transport.ts
|
|
296
|
+
function createDefaultRpcSubscriptionsTransport(config) {
|
|
297
|
+
const { getShard, intervalMs, ...rest } = config;
|
|
298
|
+
return getWebSocketTransportWithAutoping({
|
|
299
|
+
intervalMs: intervalMs ?? 5e3,
|
|
300
|
+
transport: getWebSocketTransportWithConnectionSharding({
|
|
301
|
+
getShard,
|
|
302
|
+
transport: createWebSocketTransport({
|
|
303
|
+
...rest,
|
|
304
|
+
sendBufferHighWatermark: config.sendBufferHighWatermark ?? // Let 128KB of data into the WebSocket buffer before buffering it in the app.
|
|
305
|
+
131072
|
|
306
|
+
})
|
|
307
|
+
})
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
export { createDefaultRpcSubscriptionsTransport, createDefaultRpcTransport, createSolanaRpc, createSolanaRpcSubscriptions };
|
package/dist/index.node.js.map
CHANGED
|
@@ -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","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts"],"names":[],"mappings":"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","sourcesContent":["export * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { createSolanaRpcApi, SolanaRpcMethods } from '@solana/rpc-core';\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\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';\n\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\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\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 getRpcTransportWithRequestCoalescing(\n 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 getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../build-scripts/env-shim.ts","../src/index.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/rpc-transport.ts","../src/rpc-request-coalescer.ts","../src/rpc-request-deduplication.ts","../src/rpc-websocket-transport.ts","../src/rpc-websocket-autopinger.ts","../src/rpc-websocket-connection-sharding.ts"],"names":["args"],"mappings":";AACO,IAAM,UAA2B,uBAAO,QAAgB,KAAU,EAAE,aAAa,eAAe;;;ACDvG,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;;;ACHd;AAAA,EACI;AAAA,EACA;AAAA,OAGG;AACP,SAAS,eAAe,iCAAiC;;;ACNlD,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,QAAQ,MAAM,QAAS,EAC3E,KAAK,GAAG,IACb;AACV;AAAA,MACI,OAAO,OAAO,sBAAsB,UAAU,gBACvC,OAAO,cAAc,IAAI,OAAO,EAAE,UAAU,KAAK;AAAA,IAG5D;AACA,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,QAAQ;AAAA,EACjB;AAAA,EACA,IAAI,OAAO;AACP,WAAO;AAAA,EACX;AACJ;;;AClCO,IAAM,qBAAwE;AAAA,EACjF,kBAAkB,YAAY,SAAS,OAAO;AAC1C,UAAM,IAAI,kCAAkC,YAAY,SAAS,KAAK;AAAA,EAC1E;AACJ;;;AFGO,SAAS,gBAAgB,QAAiF;AAC7G,SAAO,cAAc;AAAA,IACjB,GAAG;AAAA,IACH,KAAK,mBAAmB,kBAAkB;AAAA,EAC9C,CAAC;AACL;AAEO,SAAS,6BACZ,QACwC;AACxC,SAAO,0BAA0B;AAAA,IAC7B,GAAG;AAAA,IACH,KAAK,gCAAgC,kBAAkB;AAAA,EAC3D,CAAC;AACL;;;AGzBA,SAAS,2BAA2B;;;ACU7B,SAAS,qCACZ,WACA,qBACa;AACb,MAAI;AACJ,SAAO,eAAe,yBAClB,QACkB;AAClB,UAAM,EAAE,SAAS,OAAO,IAAI;AAC5B,UAAM,mBAAmB,oBAAoB,OAAO;AACpD,QAAI,qBAAqB,QAAW;AAChC,aAAO,MAAM,UAAU,MAAM;AAAA,IACjC;AACA,QAAI,CAAC,qCAAqC;AACtC,cAAQ,QAAQ,EAAE,KAAK,MAAM;AACzB,8CAAsC;AAAA,MAC1C,CAAC;AACD,4CAAsC,CAAC;AAAA,IAC3C;AACA,QAAI,oCAAoC,gBAAgB,KAAK,MAAM;AAC/D,YAAM,kBAAkB,IAAI,gBAAgB;AAC5C,0CAAoC,gBAAgB,IAAI;AAAA,QACpD;AAAA,QACA,cAAc;AAAA,QACd,iBAAiB,UAAqB;AAAA,UAClC,GAAG;AAAA,UACH,QAAQ,gBAAgB;AAAA,QAC5B,CAAC;AAAA,MACL;AAAA,IACJ;AACA,UAAM,mBAAmB,oCAAoC,gBAAgB;AAC7E,qBAAiB;AACjB,QAAI,QAAQ;AACR,YAAM,kBAAkB,iBAAiB;AACzC,aAAO,MAAM,IAAI,QAAmB,CAAC,SAAS,WAAW;AACrD,cAAM,cAAc,CAAC,MAAoC;AACrD,iBAAO,oBAAoB,SAAS,WAAW;AAC/C,2BAAiB,gBAAgB;AACjC,cAAI,iBAAiB,iBAAiB,GAAG;AACrC,kBAAM,kBAAkB,iBAAiB;AACzC,4BAAgB,MAAM;AAAA,UAC1B;AACA,gBAAM,aAAa,IAAI,aAAc,EAAE,OAAuB,QAAQ,YAAY;AAClF,iBAAO,UAAU;AAAA,QACrB;AACA,eAAO,iBAAiB,SAAS,WAAW;AAC5C,wBAAgB,KAAK,OAAO,EAAE,QAAQ,MAAM;AACxC,iBAAO,oBAAoB,SAAS,WAAW;AAAA,QACnD,CAAC;AAAA,MACL,CAAC;AAAA,IACL,OAAO;AACH,aAAQ,MAAM,iBAAiB;AAAA,IACnC;AAAA,EACJ;AACJ;;;AC9DA,OAAO,yBAAyB;AAEzB,SAAS,oCAAoC,SAAsC;AACtF,MAAI,WAAW,QAAQ,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG;AAC1E;AAAA,EACJ;AACA,MAAI,aAAa,WAAW,QAAQ,YAAY,SAAS,YAAY,WAAW,YAAY,SAAS;AACjG,WAAO,oBAAoB,CAAC,QAAQ,QAAQ,QAAQ,MAAM,CAAC;AAAA,EAC/D;AACJ;;;AFFA,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;AAAA,IACH,oBAAoB;AAAA,MAChB,GAAG;AAAA,MACH,SAAS;AAAA,QACL,GAAI,OAAO,UAAU,iBAAiB,OAAO,OAAO,IAAI;AAAA,QACxD,GAAI;AAAA;AAAA,UAEA,iBAAiB,MAAM,mBAAW,MAAM;AAAA,QAC5C;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,IACD;AAAA,EACJ;AACJ;;;AGjCA,SAAS,gCAAgC;;;ACOzC,IAAM,eAAe;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AACZ;AAEO,SAAS,kCAAkC,EAAE,YAAY,UAAU,GAAmC;AACzG,QAAM,sBAAsB,oBAAI,IAG9B;AACF,SAAO,UAAU,SAAS;AACtB,UAAM,aAAa,MAAM,UAAU,GAAG,IAAI;AAC1C,QAAI;AACJ,aAAS,WAAW;AAChB,iBAAW,qCAAqC,YAAY;AAAA,IAChE;AACA,aAAS,mBAAmB;AACxB,oBAAc,UAAU;AACxB,mBAAa,YAAY,UAAU,UAAU;AAAA,IACjD;AACA,QAAI,oBAAoB,IAAI,UAAU,MAAM,OAAO;AAC/C,0BAAoB,IAAI,YAAY;AAAA,QAChC,CAAC,OAAO,aAAa,GAAG,WAAW,OAAO,aAAa,EAAE,KAAK,UAAU;AAAA,QACxE,sCAAsC,IAC/BA,UACF;AACD,2BAAiB;AACjB,iBAAO,WAAW,qCAAqC,GAAGA,KAAI;AAAA,QAClE;AAAA,MACJ,CAAC;AACD,OAAC,YAAY;AACT,YAAI;AAEA,2BAAiB,KAAK,YAAY;AAC9B,6BAAiB;AAAA,UACrB;AAAA,QACJ,QAAQ;AAAA,QAER,UAAE;AACE,8BAAoB,OAAO,UAAU;AACrC,wBAAc,UAAU;AACxB,cAAI,eAAe;AACf,uBAAW,OAAO,oBAAoB,WAAW,aAAa;AAAA,UAClE;AACA,cAAI,cAAc;AACd,uBAAW,OAAO,oBAAoB,UAAU,YAAY;AAAA,UAChE;AAAA,QACJ;AAAA,MACJ,GAAG;AACH,UAAI,MAA6C;AAC7C,yBAAiB;AAAA,MACrB;AACA,UAAI;AACJ,UAAI;AACJ,UAAI,OAAa;AACb,wBAAgB,MAAM;AAClB,wBAAc,UAAU;AAAA,QAC5B;AACA,uBAAe,MAAM;AACjB,mBAAS;AACT,2BAAiB;AAAA,QACrB;AACA,mBAAW,OAAO,iBAAiB,WAAW,aAAa;AAC3D,mBAAW,OAAO,iBAAiB,UAAU,YAAY;AAAA,MAC7D;AAAA,IACJ;AACA,WAAO,oBAAoB,IAAI,UAAU;AAAA,EAC7C;AACJ;;;ACxDA,IAAM,uBAAuB;AAAA,EACzB,UAAU,mEAAmE;AACjF;AAEA,SAAS,wBAAwB,UAAkC,WAA6B;AAC5F,GAAC,YAAY;AACT,QAAI;AAEA,uBAAiB,KAAK;AAAS;AAAA,IACnC,QAAQ;AAAA,IAER,UAAE;AAEE,gBAAU;AAAA,IACd;AAAA,EACJ,GAAG;AACP;AAEO,SAAS,4CAA4C,EAAE,UAAU,UAAU,GAAmC;AACjH,QAAM,QAAQ,oBAAI,IAA0B;AAC5C,WAAS,YAAY,UAAoB,SAAwD;AAC7F,UAAM,oBAAoB,MAAM,IAAI,QAAQ;AAC5C,QAAI,CAAC,mBAAmB;AAEpB,YAAM,IAAI,MAAM,wDAAwD,SAAS,SAAS,CAAC,IAAI;AAAA,IACnG;AACA,UAAM,iBAAiB,QAAQ,iBAAiB;AAChD,UAAM,IAAI,UAAU,cAAc;AAClC,WAAO;AAAA,EACX;AACA,SAAO,UAAU,SAAS;AACtB,UAAM,EAAE,SAAS,QAAQ,GAAG,KAAK,IAAI,KAAK,CAAC;AAC3C,UAAM,WAAW,WAAW,SAAS,OAAO,IAAI;AAChD,aAAS,UAAU;AACf,YAAM,OAAO,QAAQ;AACrB,aAAO,oBAAoB,SAAS,WAAW;AAAA,IACnD;AACA,aAAS,cAAc;AACnB,UAAI,MAAM,IAAI,QAAQ,GAAG,mBAAmB,MAAM;AAC9C,oBAAY,UAAU,wBAAsB;AAAA,UACxC,GAAG;AAAA,UACH,gBAAgB;AAAA,QACpB,EAAE;AACF,mBAAW,eAAe,MAAM;AAC5B,gBAAM,2BAA2B,MAAM,IAAI,QAAQ;AACnD,cAAI,CAAC,0BAA0B;AAC3B;AAAA,UACJ;AACA,cAAI,yBAAyB,mBAAmB,GAAG;AAC/C,uBAAW,gBAAgB,MAAM;AACjC,oBAAQ;AAAA,UACZ;AAAA,QACJ,CAAC;AAAA,MACL;AACA,YAAM,aAAa,YAAY,UAAU,wBAAsB;AAAA,QAC3D,GAAG;AAAA,QACH,gBAAgB,kBAAkB,iBAAiB;AAAA,MACvD,EAAE;AAAA,IACN;AACA,WAAO,iBAAiB,SAAS,WAAW;AAC5C,QAAI;AACA,YAAM,aAAa,MAAM,IAAI,QAAQ;AACrC,UAAI,CAAC,YAAY;AACb,cAAM,4BAA4B,IAAI,gBAAgB;AACtD,cAAM,uBAAuB,UAAU;AAAA,UACnC;AAAA,UACA,QAAQ,0BAA0B;AAAA,UAClC,GAAG;AAAA,QACP,CAAC;AACD,cAAM,gBAAgB;AAAA,UAClB,iBAAiB;AAAA,UACjB,YAAY;AAAA,UACZ,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,QACpB;AACA,cAAM,IAAI,UAAU,aAAa;AACjC,cAAM,gBAAgB,MAAM;AAC5B,gCAAwB,eAAe,OAAO;AAC9C,oBAAY,UAAU,wBAAsB;AAAA,UACxC,GAAG;AAAA,UACH,YAAY;AAAA,QAChB,EAAE;AACF,eAAO;AAAA,MACX,OAAO;AACH,oBAAY,UAAU,wBAAsB;AAAA,UACxC,GAAG;AAAA,UACH,gBAAgB,kBAAkB,iBAAiB;AAAA,QACvD,EAAE;AACF,cAAM,gCAAgC,WAAW;AACjD,cAAM,mBACF,UAAU,gCACJ,MAAM,gCACN;AACV,gCAAwB,kBAAkB,OAAO;AACjD,cAAM,iBAAiB,qCAAqC,OAAO;AACnE,eAAO;AAAA,MACX;AAAA,IACJ,SAAS,GAAG;AACR,cAAQ;AACR,YAAM;AAAA,IACV;AAAA,EACJ;AACJ;;;AFnHO,SAAS,uCACZ,QAUsB;AACtB,QAAM,EAAE,UAAU,YAAY,GAAG,KAAK,IAAI;AAC1C,SAAO,kCAAkC;AAAA,IACrC,YAAY,cAAc;AAAA,IAC1B,WAAW,4CAA4C;AAAA,MACnD;AAAA,MACA,WAAW,yBAAyB;AAAA,QAChC,GAAG;AAAA,QACH,yBACI,OAAO;AAAA,QAEP;AAAA,MACR,CAAC;AAAA,IACL,CAAC;AAAA,EACL,CAAC;AACL","sourcesContent":["// Clever obfuscation to prevent the build system from inlining the value of `NODE_ENV`\nexport const __DEV__ = /* @__PURE__ */ (() => (process as any)['en' + 'v'].NODE_ENV === 'development')();\n","export * from '@solana/addresses';\nexport * from '@solana/instructions';\nexport * from '@solana/keys';\nexport * from '@solana/transactions';\nexport * from './rpc';\nexport * from './rpc-transport';\nexport * from './rpc-websocket-transport';\n","import {\n createSolanaRpcApi,\n createSolanaRpcSubscriptionsApi,\n SolanaRpcMethods,\n SolanaRpcSubscriptions,\n} from '@solana/rpc-core';\nimport { createJsonRpc, createJsonSubscriptionRpc } from '@solana/rpc-transport';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n\nexport function createSolanaRpcSubscriptions(\n config: Omit<Parameters<typeof createJsonSubscriptionRpc>[0], 'api'>\n): RpcSubscriptions<SolanaRpcSubscriptions> {\n return createJsonSubscriptionRpc({\n ...config,\n api: createSolanaRpcSubscriptionsApi(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';\n\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\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\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 getRpcTransportWithRequestCoalescing(\n 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 getSolanaRpcPayloadDeduplicationKey\n );\n}\n","import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise<unknown>;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: IRpcTransport,\n getDeduplicationKey: GetDeduplicationKeyFn\n): IRpcTransport {\n let coalescedRequestsByDeduplicationKey: Record<string, CoalescedRequest> | undefined;\n return async function makeCoalescedHttpRequest<TResponse>(\n config: Parameters<IRpcTransport>[0]\n ): Promise<TResponse> {\n const { payload, signal } = config;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(config);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n Promise.resolve().then(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise: transport<TResponse>({\n ...config,\n signal: abortController.signal,\n }),\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise<TResponse>;\n return await new Promise<TResponse>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort();\n }\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise.then(resolve).finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as TResponse;\n }\n };\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return;\n }\n if ('jsonrpc' in payload && payload.jsonrpc === '2.0' && 'method' in payload && 'params' in payload) {\n return fastStableStringify([payload.method, payload.params]);\n }\n}\n","import { createWebSocketTransport } from '@solana/rpc-transport';\nimport { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\nimport { getWebSocketTransportWithAutoping } from './rpc-websocket-autopinger';\nimport { getWebSocketTransportWithConnectionSharding } from './rpc-websocket-connection-sharding';\n\nexport function createDefaultRpcSubscriptionsTransport(\n config: Omit<Parameters<typeof createWebSocketTransport>[0], 'sendBufferHighWatermark'> & {\n /**\n * You might like to open more subscriptions per connection than your RPC provider allows\n * for. Using the initial payload as input, return a shard key from this method to assign\n * subscriptions to separate connections. One socket will be opened per shard key.\n */\n getShard?: (payload: unknown) => string;\n intervalMs?: number;\n sendBufferHighWatermark?: number;\n }\n): IRpcWebSocketTransport {\n const { getShard, intervalMs, ...rest } = config;\n return getWebSocketTransportWithAutoping({\n intervalMs: intervalMs ?? 5_000,\n transport: getWebSocketTransportWithConnectionSharding({\n getShard,\n transport: createWebSocketTransport({\n ...rest,\n sendBufferHighWatermark:\n config.sendBufferHighWatermark ??\n // Let 128KB of data into the WebSocket buffer before buffering it in the app.\n 131_072,\n }),\n }),\n });\n}\n","import { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype Config = Readonly<{\n intervalMs: number;\n transport: IRpcWebSocketTransport;\n}>;\n\nconst PING_PAYLOAD = {\n jsonrpc: '2.0',\n method: 'ping',\n} as const;\n\nexport function getWebSocketTransportWithAutoping({ intervalMs, transport }: Config): IRpcWebSocketTransport {\n const pingableConnections = new Map<\n Awaited<ReturnType<IRpcWebSocketTransport>>,\n Awaited<ReturnType<IRpcWebSocketTransport>>\n >();\n return async (...args) => {\n const connection = await transport(...args);\n let intervalId: string | number | NodeJS.Timeout | undefined;\n function sendPing() {\n connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(PING_PAYLOAD);\n }\n function restartPingTimer() {\n clearInterval(intervalId);\n intervalId = setInterval(sendPing, intervalMs);\n }\n if (pingableConnections.has(connection) === false) {\n pingableConnections.set(connection, {\n [Symbol.asyncIterator]: connection[Symbol.asyncIterator].bind(connection),\n send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: (\n ...args: Parameters<typeof connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED>\n ) => {\n restartPingTimer();\n return connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...args);\n },\n });\n (async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of connection) {\n restartPingTimer();\n }\n } catch {\n /* empty */\n } finally {\n pingableConnections.delete(connection);\n clearInterval(intervalId);\n if (handleOffline) {\n globalThis.window.removeEventListener('offline', handleOffline);\n }\n if (handleOnline) {\n globalThis.window.removeEventListener('online', handleOnline);\n }\n }\n })();\n if (!__BROWSER__ || globalThis.navigator.onLine) {\n restartPingTimer();\n }\n let handleOffline;\n let handleOnline;\n if (__BROWSER__) {\n handleOffline = () => {\n clearInterval(intervalId);\n };\n handleOnline = () => {\n sendPing();\n restartPingTimer();\n };\n globalThis.window.addEventListener('offline', handleOffline);\n globalThis.window.addEventListener('online', handleOnline);\n }\n }\n return pingableConnections.get(connection)!;\n };\n}\n","import { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\ntype CacheEntry = Readonly<{\n abortController: AbortController;\n connection: Awaited<ReturnType<IRpcWebSocketTransport>> | ReturnType<IRpcWebSocketTransport>;\n purgeScheduled: boolean;\n referenceCount: number;\n}>;\ntype CacheKey = string | typeof NULL_SHARD_CACHE_KEY;\ntype Config = Readonly<{\n /**\n * You might like to open more subscriptions per connection than your RPC provider allows for.\n * Using the initial payload as input, return a shard key from this method to assign\n * subscriptions to separate connections. One socket will be opened per shard key.\n */\n getShard?: (payload: unknown) => string;\n transport: IRpcWebSocketTransport;\n}>;\n\nconst NULL_SHARD_CACHE_KEY = Symbol(\n __DEV__ ? 'Cache key to use when there is no connection sharding strategy' : undefined\n);\n\nfunction registerIterableCleanup(iterable: AsyncIterable<unknown>, cleanupFn: CallableFunction) {\n (async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of iterable);\n } catch {\n /* empty */\n } finally {\n // Run the cleanup function.\n cleanupFn();\n }\n })();\n}\n\nexport function getWebSocketTransportWithConnectionSharding({ getShard, transport }: Config): IRpcWebSocketTransport {\n const cache = new Map<CacheKey, CacheEntry>();\n function updateCache(shardKey: CacheKey, updater: (currentCacheEntry: CacheEntry) => CacheEntry) {\n const currentCacheEntry = cache.get(shardKey);\n if (!currentCacheEntry) {\n // TODO: Coded error.\n throw new Error(`Found no cache entry for connection with shard key \\`${shardKey.toString()}\\``);\n }\n const nextCacheEntry = updater(currentCacheEntry);\n cache.set(shardKey, nextCacheEntry);\n return nextCacheEntry;\n }\n return async (...args) => {\n const { payload, signal, ...rest } = args[0];\n const shardKey = getShard ? getShard(payload) : NULL_SHARD_CACHE_KEY;\n function cleanup() {\n cache.delete(shardKey);\n signal.removeEventListener('abort', handleAbort);\n }\n function handleAbort() {\n if (cache.get(shardKey)?.purgeScheduled !== true) {\n updateCache(shardKey, currentCacheEntry => ({\n ...currentCacheEntry,\n purgeScheduled: true,\n }));\n globalThis.queueMicrotask(() => {\n const cacheEntryAtEndOfRunloop = cache.get(shardKey);\n if (!cacheEntryAtEndOfRunloop) {\n return;\n }\n if (cacheEntryAtEndOfRunloop.referenceCount === 0) {\n cacheEntry.abortController.abort();\n cleanup();\n }\n });\n }\n const cacheEntry = updateCache(shardKey, currentCacheEntry => ({\n ...currentCacheEntry,\n referenceCount: currentCacheEntry.referenceCount - 1,\n }));\n }\n signal.addEventListener('abort', handleAbort);\n try {\n const cacheEntry = cache.get(shardKey);\n if (!cacheEntry) {\n const connectionAbortController = new AbortController();\n const newConnectionPromise = transport({\n payload,\n signal: connectionAbortController.signal,\n ...rest,\n });\n const newCacheEntry = {\n abortController: connectionAbortController,\n connection: newConnectionPromise,\n purgeScheduled: false,\n referenceCount: 1,\n };\n cache.set(shardKey, newCacheEntry);\n const newConnection = await newConnectionPromise;\n registerIterableCleanup(newConnection, cleanup);\n updateCache(shardKey, currentCacheEntry => ({\n ...currentCacheEntry,\n connection: newConnection,\n }));\n return newConnection;\n } else {\n updateCache(shardKey, currentCacheEntry => ({\n ...currentCacheEntry,\n referenceCount: currentCacheEntry.referenceCount + 1,\n }));\n const connectionOrConnectionPromise = cacheEntry.connection;\n const cachedConnection =\n 'then' in connectionOrConnectionPromise\n ? await connectionOrConnectionPromise\n : connectionOrConnectionPromise;\n registerIterableCleanup(cachedConnection, cleanup);\n await cachedConnection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(payload);\n return cachedConnection;\n }\n } catch (e) {\n cleanup();\n throw e;\n }\n };\n}\n"]}
|
|
@@ -2,38 +2,43 @@ this.globalThis = this.globalThis || {};
|
|
|
2
2
|
this.globalThis.solanaWeb3 = (function (exports) {
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
5
|
-
var Le=Object.create;var Q=Object.defineProperty;var $e=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Pe=Object.getPrototypeOf,Ue=Object.prototype.hasOwnProperty;var je=(e,r,t)=>r in e?Q(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var Fe=(e,r)=>()=>(e&&(r=e(e=0)),r);var Ke=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var Me=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of De(r))!Ue.call(e,o)&&o!==t&&Q(e,o,{get:()=>r[o],enumerable:!(n=$e(r,o))||n.enumerable});return e};var He=(e,r,t)=>(t=e!=null?Le(Pe(e)):{},Me(r||!e||!e.__esModule?Q(t,"default",{value:e,enumerable:!0}):t,e));var b=(e,r,t)=>(je(e,typeof r!="symbol"?r+"":r,t),t);var a=Fe(()=>{});var Ce=Ke((Do,ve)=>{a();var Wr=Object.prototype.toString,Gr=Object.keys||function(e){var r=[];for(var t in e)r.push(t);return r};function $(e,r){var t,n,o,s,i,c,u;if(e===!0)return "true";if(e===!1)return "false";switch(typeof e){case"object":if(e===null)return null;if(e.toJSON&&typeof e.toJSON=="function")return $(e.toJSON(),r);if(u=Wr.call(e),u==="[object Array]"){for(o="[",n=e.length-1,t=0;t<n;t++)o+=$(e[t],!0)+",";return n>-1&&(o+=$(e[t],!0)),o+"]"}else if(u==="[object Object]"){for(s=Gr(e).sort(),n=s.length,o="",t=0;t<n;)i=s[t],c=$(e[i],!1),c!==void 0&&(o&&(o+=","),o+=JSON.stringify(i)+":"+c),t++;return "{"+o+"}"}else return JSON.stringify(e);case"function":case"undefined":return r?null:void 0;case"string":return JSON.stringify(e);default:return isFinite(e)?e:null}}ve.exports=function(e){var r=$(e,!1);if(r!==void 0)return ""+r};});a();a();var We=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))(We||{}),ce=2,ee=1;function Xr(e){return e&~ce}function Zr(e){return e&~ee}function Qr(e){return e>=2}function et(e){return (e&ee)!==0}function rt(e,r){return e|r}function tt(e){return e|ce}function nt(e){return e|ee}a();a();a();a();var S=e=>{let r=e.reduce((o,s)=>o+s.length,0),t=new Uint8Array(r),n=0;return e.forEach(o=>{t.set(o,n),n+=o.length;}),t},ue=(e,r)=>{if(e.length>=r)return e;let t=new Uint8Array(r).fill(0);return t.set(e),t},D=(e,r)=>ue(e.slice(0,r),r);a();var E=class extends Error{constructor(t){super(`Serializer [${t}] cannot deserialize empty buffers.`);b(this,"name","DeserializingEmptyBufferError");}},y=class extends Error{constructor(t,n,o){super(`Serializer [${t}] expected ${n} bytes, got ${o}.`);b(this,"name","NotEnoughBytesError");}},I=class extends Error{constructor(t){t??(t="Expected a fixed-size serializer, got a variable-size one.");super(t);b(this,"name","ExpectedFixedSizeSerializerError");}};a();function k(e,r,t){return {description:t??`fixed(${r}, ${e.description})`,fixedSize:r,maxSize:r,serialize:n=>D(e.serialize(n),r),deserialize:(n,o=0)=>{if(n=n.slice(o,o+r),n.length<r)throw new y("fixSerializer",r,n.length);e.fixedSize!==null&&(n=D(n,e.fixedSize));let[s]=e.deserialize(n,0);return [s,o+r]}}}a();function P(e,r,t){return {description:e.description,fixedSize:e.fixedSize,maxSize:e.maxSize,serialize:n=>e.serialize(r(n)),deserialize:(n,o=0)=>{let[s,i]=e.deserialize(n,o);return t?[t(s,n,o),i]:[s,i]}}}a();a();a();var U=class extends Error{constructor(t,n,o){let s=`Expected a string of base ${n}, got [${t}].`;super(s);b(this,"name","InvalidBaseStringError");this.cause=o;}};var le=e=>{let r=e.length,t=BigInt(r);return {description:`base${r}`,fixedSize:null,maxSize:null,serialize(n){if(!n.match(new RegExp(`^[${e}]*$`)))throw new U(n,r);if(n==="")return new Uint8Array;let o=[...n],s=o.findIndex(h=>h!==e[0]);s=s===-1?o.length:s;let i=Array(s).fill(0);if(s===o.length)return Uint8Array.from(i);let c=o.slice(s),u=0n,l=1n;for(let h=c.length-1;h>=0;h-=1)u+=l*BigInt(e.indexOf(c[h])),l*=t;let p=[];for(;u>0n;)p.unshift(Number(u%256n)),u/=256n;return Uint8Array.from(i.concat(p))},deserialize(n,o=0){if(n.length===0)return ["",0];let s=n.slice(o),i=s.findIndex(p=>p!==0);i=i===-1?s.length:i;let c=e[0].repeat(i);if(i===s.length)return [c,n.length];let u=s.slice(i).reduce((p,h)=>p*256n+BigInt(h),0n),l=[];for(;u>0n;)l.unshift(e[Number(u%t)]),u/=t;return [c+l.join(""),n.length]}}};a();var R=le("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");a();var de=e=>e.replace(/\u0000/g,"");a();var re={description:"utf8",fixedSize:null,maxSize:null,serialize(e){return new TextEncoder().encode(e)},deserialize(e,r=0){let t=new TextDecoder().decode(e.slice(r));return [de(t),e.length]}};a();a();var j;(function(e){e.Little="le",e.Big="be";})(j||(j={}));a();var F=class extends RangeError{constructor(t,n,o,s){super(`Serializer [${t}] expected number to be between ${n} and ${o}, got ${s}.`);b(this,"name","NumberOutOfRangeError");}};a();function K(e){let r,t=e.name;return e.size>1&&(r=!("endian"in e.options)||e.options.endian===j.Little,t+=r?"(le)":"(be)"),{description:e.options.description??t,fixedSize:e.size,maxSize:e.size,serialize(n){e.range&&te(e.name,e.range[0],e.range[1],n);let o=new ArrayBuffer(e.size);return e.set(new DataView(o),n,r),new Uint8Array(o)},deserialize(n,o=0){let s=n.slice(o,o+e.size);qe("i8",s,e.size);let i=Ve(s);return [e.get(i,r),o+e.size]}}}var Ge=e=>e.buffer.slice(e.byteOffset,e.byteLength+e.byteOffset),Ve=e=>new DataView(Ge(e)),te=(e,r,t,n)=>{if(n<r||n>t)throw new F(e,r,t,n)},qe=(e,r,t)=>{if(r.length===0)throw new E(e);if(r.length<t)throw new y(e,t,r.length)};a();var w=(e={})=>K({name:"u8",size:1,range:[0,+"0xff"],set:(r,t)=>r.setUint8(0,Number(t)),get:r=>r.getUint8(0),options:e});a();var B=(e={})=>K({name:"u32",size:4,range:[0,+"0xffffffff"],set:(r,t,n)=>r.setUint32(0,Number(t),n),get:(r,t)=>r.getUint32(0,t),options:e});a();var x=(e={})=>({description:e.description??"shortU16",fixedSize:null,maxSize:3,serialize:r=>{te("shortU16",0,65535,r);let t=[0];for(let n=0;;n+=1){let o=r>>n*7;if(o===0)break;let s=127&o;t[n]=s,n>0&&(t[n-1]|=128);}return new Uint8Array(t)},deserialize:(r,t=0)=>{let n=0,o=0;for(;++o;){let s=o-1,i=r[t+s],c=127&i;if(n|=c<<s*7,!(i&128))break}return [n,t+o]}});a();a();var M=class extends Error{constructor(t,n,o){super(`Expected [${t}] to have ${n} items, got ${o}.`);b(this,"name","InvalidNumberOfItemsError");}},H=class extends Error{constructor(t,n){super(`The remainder of the buffer (${t} bytes) cannot be split into chunks of ${n} bytes. Serializers of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${t} modulo ${n} should be equal to zero.`);b(this,"name","InvalidArrayLikeRemainderSizeError");}},W=class extends Error{constructor(t){super(`Unrecognized array-like serializer size: ${JSON.stringify(t)}`);b(this,"name","UnrecognizedArrayLikeSerializerSizeError");}};a();a();function v(e){return e.reduce((r,t)=>r===null||t===null?null:r+t,0)}function pe(e,r,t,n){if(typeof e=="number")return [e,n];if(typeof e=="object")return e.deserialize(t,n);if(e==="remainder"){let o=v(r);if(o===null)throw new I('Serializers of "remainder" size must have fixed-size items.');let s=t.slice(n).length;if(s%o!==0)throw new H(s,o);return [s/o,n]}throw new W(e)}function C(e){return typeof e=="object"?e.description:`${e}`}function ne(e,r){if(typeof e!="number")return null;if(e===0)return 0;let t=v(r);return t===null?null:t*e}function fe(e,r){return typeof e=="object"?e.serialize(r):new Uint8Array}function z(e,r={}){let t=r.size??B();if(t==="remainder"&&e.fixedSize===null)throw new I('Serializers of "remainder" size must have fixed-size items.');return {description:r.description??`array(${e.description}; ${C(t)})`,fixedSize:ne(t,[e.fixedSize]),maxSize:ne(t,[e.maxSize]),serialize:n=>{if(typeof t=="number"&&n.length!==t)throw new M("array",t,n.length);return S([fe(t,n.length),...n.map(o=>e.serialize(o))])},deserialize:(n,o=0)=>{if(typeof t=="object"&&n.slice(o).length===0)return [[],o];let[s,i]=pe(t,[e.fixedSize],n,o);o=i;let c=[];for(let u=0;u<s;u+=1){let[l,p]=e.deserialize(n,o);c.push(l),o=p;}return [c,o]}}}a();function G(e={}){let r=e.size??"variable",t=e.description??`bytes(${C(r)})`,n={description:t,fixedSize:null,maxSize:null,serialize:o=>new Uint8Array(o),deserialize:(o,s=0)=>{let i=o.slice(s);return [i,s+i.length]}};return r==="variable"?n:typeof r=="number"?k(n,r,t):{description:t,fixedSize:null,maxSize:null,serialize:o=>{let s=n.serialize(o),i=r.serialize(s.length);return S([i,s])},deserialize:(o,s=0)=>{if(o.slice(s).length===0)throw new E("bytes");let[i,c]=r.deserialize(o,s),u=Number(i);s=c;let l=o.slice(s,s+u);if(l.length<u)throw new y("bytes",u,l.length);let[p,h]=n.deserialize(l);return s+=h,[p,s]}}}a();function O(e={}){let r=e.size??B(),t=e.encoding??re,n=e.description??`string(${t.description}; ${C(r)})`;return r==="variable"?{...t,description:n}:typeof r=="number"?k(t,r,n):{description:n,fixedSize:null,maxSize:null,serialize:o=>{let s=t.serialize(o),i=r.serialize(s.length);return S([i,s])},deserialize:(o,s=0)=>{if(o.slice(s).length===0)throw new E("string");let[i,c]=r.deserialize(o,s),u=Number(i);s=c;let l=o.slice(s,s+u);if(l.length<u)throw new y("string",u,l.length);let[p,h]=t.deserialize(l);return s+=h,[p,s]}}}a();function A(e,r={}){let t=e.map(([n,o])=>`${String(n)}: ${o.description}`).join(", ");return {description:r.description??`struct(${t})`,fixedSize:v(e.map(([,n])=>n.fixedSize)),maxSize:v(e.map(([,n])=>n.maxSize)),serialize:n=>{let o=e.map(([s,i])=>i.serialize(n[s]));return S(o)},deserialize:(n,o=0)=>{let s={};return e.forEach(([i,c])=>{let[u,l]=c.deserialize(n,o);o=l,s[i]=u;}),[s,o]}}}function Zn(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let t=R.serialize(e).byteLength;if(t!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${t}`)}catch(r){throw new Error(`\`${e}\` is not a base-58 encoded address`,{cause:r})}}function V(e){return O({description:e?.description??(""),encoding:R,size:32})}function q(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}function J(){if(!globalThis.isSecureContext)throw new Error("Cryptographic operations are only allowed in secure browser contexts. Read more here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts")}var N;async function Ye(e){return N===void 0&&(N=new Promise(r=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{r(N=!1);}).then(()=>{r(N=!0);});})),typeof N=="boolean"?N:await N}async function Xe(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.generateKey!="function")throw new Error("No key generation implementation could be found");if(!await Ye(globalThis.crypto.subtle))throw new Error(`This runtime does not support the generation of Ed25519 key pairs.
|
|
5
|
+
var gt=Object.create;var de=Object.defineProperty;var ht=Object.getOwnPropertyDescriptor;var bt=Object.getOwnPropertyNames;var yt=Object.getPrototypeOf,wt=Object.prototype.hasOwnProperty;var St=(e,t,r)=>t in e?de(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Et=(e,t)=>()=>(e&&(t=e(e=0)),t);var xt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var At=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of bt(t))!wt.call(e,o)&&o!==r&&de(e,o,{get:()=>t[o],enumerable:!(n=ht(t,o))||n.enumerable});return e};var Tt=(e,t,r)=>(r=e!=null?gt(yt(e)):{},At(t||!e||!e.__esModule?de(r,"default",{value:e,enumerable:!0}):r,e));var T=(e,t,r)=>(St(e,typeof t!="symbol"?t+"":t,r),r);var c=Et(()=>{});var ct=xt((Ds,at)=>{c();var Cr=Object.prototype.toString,Nr=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};function J(e,t){var r,n,o,s,i,a,u;if(e===!0)return "true";if(e===!1)return "false";switch(typeof e){case"object":if(e===null)return null;if(e.toJSON&&typeof e.toJSON=="function")return J(e.toJSON(),t);if(u=Cr.call(e),u==="[object Array]"){for(o="[",n=e.length-1,r=0;r<n;r++)o+=J(e[r],!0)+",";return n>-1&&(o+=J(e[r],!0)),o+"]"}else if(u==="[object Object]"){for(s=Nr(e).sort(),n=s.length,o="",r=0;r<n;)i=s[r],a=J(e[i],!1),a!==void 0&&(o&&(o+=","),o+=JSON.stringify(i)+":"+a),r++;return "{"+o+"}"}else return JSON.stringify(e);case"function":case"undefined":return t?null:void 0;case"string":return JSON.stringify(e);default:return isFinite(e)?e:null}}at.exports=function(e){var t=J(e,!1);if(t!==void 0)return ""+t};});c();c();c();c();c();var C=e=>{let t=e.reduce((o,s)=>o+s.length,0),r=new Uint8Array(t),n=0;return e.forEach(o=>{r.set(o,n),n+=o.length;}),r},Te=(e,t)=>{if(e.length>=t)return e;let r=new Uint8Array(t).fill(0);return r.set(e),r},X=(e,t)=>Te(e.slice(0,t),t);c();var N=class extends Error{constructor(r){super(`Serializer [${r}] cannot deserialize empty buffers.`);T(this,"name","DeserializingEmptyBufferError");}},R=class extends Error{constructor(r,n,o){super(`Serializer [${r}] expected ${n} bytes, got ${o}.`);T(this,"name","NotEnoughBytesError");}},B=class extends Error{constructor(r){r??(r="Expected a fixed-size serializer, got a variable-size one.");super(r);T(this,"name","ExpectedFixedSizeSerializerError");}};c();function F(e,t,r){return {description:r??`fixed(${t}, ${e.description})`,fixedSize:t,maxSize:t,serialize:n=>X(e.serialize(n),t),deserialize:(n,o=0)=>{if(n=n.slice(o,o+t),n.length<t)throw new R("fixSerializer",t,n.length);e.fixedSize!==null&&(n=X(n,e.fixedSize));let[s]=e.deserialize(n,0);return [s,o+t]}}}c();function Z(e,t,r){return {description:e.description,fixedSize:e.fixedSize,maxSize:e.maxSize,serialize:n=>e.serialize(t(n)),deserialize:(n,o=0)=>{let[s,i]=e.deserialize(n,o);return r?[r(s,n,o),i]:[s,i]}}}c();c();c();var Q=class extends Error{constructor(r,n,o){let s=`Expected a string of base ${n}, got [${r}].`;super(s);T(this,"name","InvalidBaseStringError");this.cause=o;}};var Ie=e=>{let t=e.length,r=BigInt(t);return {description:`base${t}`,fixedSize:null,maxSize:null,serialize(n){if(!n.match(new RegExp(`^[${e}]*$`)))throw new Q(n,t);if(n==="")return new Uint8Array;let o=[...n],s=o.findIndex(g=>g!==e[0]);s=s===-1?o.length:s;let i=Array(s).fill(0);if(s===o.length)return Uint8Array.from(i);let a=o.slice(s),u=0n,l=1n;for(let g=a.length-1;g>=0;g-=1)u+=l*BigInt(e.indexOf(a[g])),l*=r;let f=[];for(;u>0n;)f.unshift(Number(u%256n)),u/=256n;return Uint8Array.from(i.concat(f))},deserialize(n,o=0){if(n.length===0)return ["",0];let s=n.slice(o),i=s.findIndex(f=>f!==0);i=i===-1?s.length:i;let a=e[0].repeat(i);if(i===s.length)return [a,n.length];let u=s.slice(i).reduce((f,g)=>f*256n+BigInt(g),0n),l=[];for(;u>0n;)l.unshift(e[Number(u%r)]),u/=r;return [a+l.join(""),n.length]}}};c();var D=Ie("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");c();var Re=e=>e.replace(/\u0000/g,"");c();var fe={description:"utf8",fixedSize:null,maxSize:null,serialize(e){return new TextEncoder().encode(e)},deserialize(e,t=0){let r=new TextDecoder().decode(e.slice(t));return [Re(r),e.length]}};c();c();var ee;(function(e){e.Little="le",e.Big="be";})(ee||(ee={}));c();var te=class extends RangeError{constructor(r,n,o,s){super(`Serializer [${r}] expected number to be between ${n} and ${o}, got ${s}.`);T(this,"name","NumberOutOfRangeError");}};c();function re(e){let t,r=e.name;return e.size>1&&(t=!("endian"in e.options)||e.options.endian===ee.Little,r+=t?"(le)":"(be)"),{description:e.options.description??r,fixedSize:e.size,maxSize:e.size,serialize(n){e.range&&pe(e.name,e.range[0],e.range[1],n);let o=new ArrayBuffer(e.size);return e.set(new DataView(o),n,t),new Uint8Array(o)},deserialize(n,o=0){let s=n.slice(o,o+e.size);zt("i8",s,e.size);let i=Rt(s);return [e.get(i,t),o+e.size]}}}var It=e=>e.buffer.slice(e.byteOffset,e.byteLength+e.byteOffset),Rt=e=>new DataView(It(e)),pe=(e,t,r,n)=>{if(n<t||n>r)throw new te(e,t,r,n)},zt=(e,t,r)=>{if(t.length===0)throw new N(e);if(t.length<r)throw new R(e,r,t.length)};c();var k=(e={})=>re({name:"u8",size:1,range:[0,+"0xff"],set:(t,r)=>t.setUint8(0,Number(r)),get:t=>t.getUint8(0),options:e});c();var K=(e={})=>re({name:"u32",size:4,range:[0,+"0xffffffff"],set:(t,r,n)=>t.setUint32(0,Number(r),n),get:(t,r)=>t.getUint32(0,r),options:e});c();var _=(e={})=>({description:e.description??"shortU16",fixedSize:null,maxSize:3,serialize:t=>{pe("shortU16",0,65535,t);let r=[0];for(let n=0;;n+=1){let o=t>>n*7;if(o===0)break;let s=127&o;r[n]=s,n>0&&(r[n-1]|=128);}return new Uint8Array(r)},deserialize:(t,r=0)=>{let n=0,o=0;for(;++o;){let s=o-1,i=t[r+s],a=127&i;if(n|=a<<s*7,!(i&128))break}return [n,r+o]}});c();c();var ne=class extends Error{constructor(r,n,o){super(`Expected [${r}] to have ${n} items, got ${o}.`);T(this,"name","InvalidNumberOfItemsError");}},oe=class extends Error{constructor(r,n){super(`The remainder of the buffer (${r} bytes) cannot be split into chunks of ${n} bytes. Serializers of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${r} modulo ${n} should be equal to zero.`);T(this,"name","InvalidArrayLikeRemainderSizeError");}},se=class extends Error{constructor(r){super(`Unrecognized array-like serializer size: ${JSON.stringify(r)}`);T(this,"name","UnrecognizedArrayLikeSerializerSizeError");}};c();c();function $(e){return e.reduce((t,r)=>t===null||r===null?null:t+r,0)}function ze(e,t,r,n){if(typeof e=="number")return [e,n];if(typeof e=="object")return e.deserialize(r,n);if(e==="remainder"){let o=$(t);if(o===null)throw new B('Serializers of "remainder" size must have fixed-size items.');let s=r.slice(n).length;if(s%o!==0)throw new oe(s,o);return [s/o,n]}throw new se(e)}function W(e){return typeof e=="object"?e.description:`${e}`}function me(e,t){if(typeof e!="number")return null;if(e===0)return 0;let r=$(t);return r===null?null:r*e}function _e(e,t){return typeof e=="object"?e.serialize(t):new Uint8Array}function O(e,t={}){let r=t.size??K();if(r==="remainder"&&e.fixedSize===null)throw new B('Serializers of "remainder" size must have fixed-size items.');return {description:t.description??`array(${e.description}; ${W(r)})`,fixedSize:me(r,[e.fixedSize]),maxSize:me(r,[e.maxSize]),serialize:n=>{if(typeof r=="number"&&n.length!==r)throw new ne("array",r,n.length);return C([_e(r,n.length),...n.map(o=>e.serialize(o))])},deserialize:(n,o=0)=>{if(typeof r=="object"&&n.slice(o).length===0)return [[],o];let[s,i]=ze(r,[e.fixedSize],n,o);o=i;let a=[];for(let u=0;u<s;u+=1){let[l,f]=e.deserialize(n,o);a.push(l),o=f;}return [a,o]}}}c();function ie(e={}){let t=e.size??"variable",r=e.description??`bytes(${W(t)})`,n={description:r,fixedSize:null,maxSize:null,serialize:o=>new Uint8Array(o),deserialize:(o,s=0)=>{let i=o.slice(s);return [i,s+i.length]}};return t==="variable"?n:typeof t=="number"?F(n,t,r):{description:r,fixedSize:null,maxSize:null,serialize:o=>{let s=n.serialize(o),i=t.serialize(s.length);return C([i,s])},deserialize:(o,s=0)=>{if(o.slice(s).length===0)throw new N("bytes");let[i,a]=t.deserialize(o,s),u=Number(i);s=a;let l=o.slice(s,s+u);if(l.length<u)throw new R("bytes",u,l.length);let[f,g]=n.deserialize(l);return s+=g,[f,s]}}}c();function j(e={}){let t=e.size??K(),r=e.encoding??fe,n=e.description??`string(${r.description}; ${W(t)})`;return t==="variable"?{...r,description:n}:typeof t=="number"?F(r,t,n):{description:n,fixedSize:null,maxSize:null,serialize:o=>{let s=r.serialize(o),i=t.serialize(s.length);return C([i,s])},deserialize:(o,s=0)=>{if(o.slice(s).length===0)throw new N("string");let[i,a]=t.deserialize(o,s),u=Number(i);s=a;let l=o.slice(s,s+u);if(l.length<u)throw new R("string",u,l.length);let[f,g]=r.deserialize(l);return s+=g,[f,s]}}}c();function L(e,t={}){let r=e.map(([n,o])=>`${String(n)}: ${o.description}`).join(", ");return {description:t.description??`struct(${r})`,fixedSize:$(e.map(([,n])=>n.fixedSize)),maxSize:$(e.map(([,n])=>n.maxSize)),serialize:n=>{let o=e.map(([s,i])=>i.serialize(n[s]));return C(o)},deserialize:(n,o=0)=>{let s={};return e.forEach(([i,a])=>{let[u,l]=a.deserialize(n,o);o=l,s[i]=u;}),[s,o]}}}c();function H(){if(!globalThis.isSecureContext)throw new Error("Cryptographic operations are only allowed in secure browser contexts. Read more here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts")}var P;async function _t(e){return P===void 0&&(P=new Promise(t=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{t(P=!1);}).then(()=>{t(P=!0);});})),typeof P=="boolean"?P:await P}async function ve(){if(H(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.digest!="function")throw new Error("No digest implementation could be found")}async function Ce(){if(H(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.generateKey!="function")throw new Error("No key generation implementation could be found");if(!await _t(globalThis.crypto.subtle))throw new Error(`This runtime does not support the generation of Ed25519 key pairs.
|
|
6
6
|
|
|
7
7
|
Install and import \`@solana/webcrypto-ed25519-polyfill\` before generating keys in environments that do not support Ed25519.
|
|
8
8
|
|
|
9
|
-
For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function Ze(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function Qe(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}async function er(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.verify!="function")throw new Error("No signature verification implementation could be found")}async function Qn(){return await Xe(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function me(e){if(await Ze(),e.type!=="public"||e.algorithm.name!=="Ed25519")throw new Error("The `CryptoKey` must be an `Ed25519` public key");let r=await crypto.subtle.exportKey("raw",e),[t]=V().deserialize(new Uint8Array(r));return t}async function ge(e,r){await Qe();let t=await crypto.subtle.sign("Ed25519",e,r);return new Uint8Array(t)}async function eo(e,r,t){return await er(),await crypto.subtle.verify("Ed25519",e,r,t)}a();function Y(e){if("signatures"in e){let{signatures:r,...t}=e;return t}else return e}function so(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let t=R.serialize(e).byteLength;if(t!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${t}`)}catch(r){throw new Error(`\`${e}\` is not a blockhash`,{cause:r})}}function io(e,r){if("lifetimeConstraint"in r&&r.lifetimeConstraint.blockhash===e.blockhash&&r.lifetimeConstraint.lastValidBlockHeight===e.lastValidBlockHeight)return r;let t={...Y(r),lifetimeConstraint:e};return Object.freeze(t),t}function ao({version:e}){let r={instructions:[],version:e};return Object.freeze(r),r}var T=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))(T||{}),rr=1;function _(e){return e>=2}function L(e){return (e&rr)!==0}function he(e,r){return e|r}var tr="SysvarRecentB1ockHashes11111111111111111111",nr="11111111111111111111111111111111";function co(e){if(!ir(e))throw new Error("Transaction is not a durable nonce transaction")}function or(e){return e.programAddress===nr&&e.data!=null&&sr(e.data)&&e.accounts?.length===3&&e.accounts[0].address!=null&&e.accounts[0].role===T.WRITABLE&&e.accounts[1].address===tr&&e.accounts[1].role===T.READONLY&&e.accounts[2].address!=null&&e.accounts[2].role===T.READONLY_SIGNER}function sr(e){return e.byteLength===4&&e[0]===4&&e[1]===0&&e[2]===0&&e[3]===0}function ir(e){return "lifetimeConstraint"in e&&typeof e.lifetimeConstraint.nonce=="string"&&e.instructions[0]!=null&&or(e.instructions[0])}function uo(e,r){if("feePayer"in r&&e===r.feePayer)return r;let t={...Y(r),feePayer:e};return Object.freeze(t),t}function lo(e,r){let t={...Y(r),instructions:[...r.instructions,e]};return Object.freeze(t),t}function po(e,r){let t={...Y(r),instructions:[e,...r.instructions]};return Object.freeze(t),t}function be(e,r,t){e[r]=t(e[r]??{role:T.READONLY});}var m=Symbol("AddressMapTypeProperty");function ar(e,r){let t={[e]:{[m]:0,role:T.WRITABLE_SIGNER}},n=new Set;for(let o of r){be(t,o.programAddress,i=>{if(n.add(o.programAddress),m in i){if(L(i.role))switch(i[m]){case 0:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and set as the fee payer. Program addresses may not pay fees.`);default:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and marked writable. Program addresses may not be writable.`)}if(i[m]===2)return i}return {[m]:2,role:T.READONLY}});let s;if(o.accounts)for(let i of o.accounts)be(t,i.address,c=>{let{address:u,...l}=i;if(m in c)switch(c[m]){case 0:return c;case 1:{let p=he(c.role,l.role);if("lookupTableAddress"in l){if(c.lookupTableAddress!==l.lookupTableAddress&&(s||(s=q()))(l.lookupTableAddress,c.lookupTableAddress)<0)return {[m]:1,...l,role:p}}else if(_(l.role))return {[m]:2,role:p};return c.role!==p?{...c,role:p}:c}case 2:{let p=he(c.role,l.role);if(n.has(i.address)){if(L(l.role))throw new Error(`This transaction includes an address (\`${i.address}\`) which is both invoked and marked writable. Program addresses may not be writable.`);return c.role!==p?{...c,role:p}:c}else return "lookupTableAddress"in l&&!_(c.role)?{...l,[m]:1,role:p}:c.role!==p?{...c,role:p}:c}}return "lookupTableAddress"in l?{...l,[m]:1}:{...l,[m]:2}});}return t}function cr(e){let r;return Object.entries(e).sort(([n,o],[s,i])=>{if(o[m]!==i[m]){if(o[m]===0)return -1;if(i[m]===0)return 1;if(o[m]===2)return -1;if(i[m]===2)return 1}let c=_(o.role);if(c!==_(i.role))return c?-1:1;let u=L(o.role);return u!==L(i.role)?u?-1:1:(r||(r=q()),o[m]===1&&i[m]===1&&o.lookupTableAddress!==i.lookupTableAddress?r(o.lookupTableAddress,i.lookupTableAddress):r(n,s))}).map(([n,o])=>({address:n,...o}))}function ur(e){var r;let t={};for(let n of e){if(!("lookupTableAddress"in n))continue;let o=t[r=n.lookupTableAddress]||(t[r]={readableIndices:[],writableIndices:[]});n.role===T.WRITABLE?o.writableIndices.push(n.addressIndex):o.readableIndices.push(n.addressIndex);}return Object.keys(t).sort(q()).map(n=>({lookupTableAddress:n,...t[n]}))}function lr(e){let r=0,t=0,n=0;for(let o of e){if("lookupTableAddress"in o)break;let s=L(o.role);_(o.role)?(n++,s||t++):s||r++;}return {numReadonlyNonSignerAccounts:r,numReadonlySignerAccounts:t,numSignerAccounts:n}}function dr(e){let r={};for(let[t,n]of e.entries())r[n.address]=t;return r}function pr(e,r){let t=dr(r);return e.map(({accounts:n,data:o,programAddress:s})=>({programAddressIndex:t[s],...n?{accountIndices:n.map(({address:i})=>t[i])}:null,...o?{data:o}:null}))}function fr(e){return "nonce"in e?e.nonce:e.blockhash}function mr(e){let r=e.findIndex(n=>"lookupTableAddress"in n);return (r===-1?e:e.slice(0,r)).map(({address:n})=>n)}function xe(e){let r=ar(e.feePayer,e.instructions),t=cr(r);return {...e.version!=="legacy"?{addressTableLookups:ur(t)}:null,header:lr(t),instructions:pr(e.instructions,t),lifetimeToken:fr(e.lifetimeConstraint),staticAccounts:mr(t),version:e.version}}function gr(){return A([["lookupTableAddress",V(void 0)],["writableIndices",z(w(),{...null,size:x()})],["readableIndices",z(w(),{...void 0,size:x()})]],void 0)}function hr(){return A([["numSignerAccounts",w(void 0)],["numReadonlySignerAccounts",w(void 0)],["numReadonlyNonSignerAccounts",w(void 0)]],void 0)}function br(){return P(A([["programAddressIndex",w(void 0)],["addressIndices",z(w({description:""}),{description:"",size:x()})],["data",G({description:"",size:x()})]]),e=>e.addressIndices!==void 0&&e.data!==void 0?e:{...e,addressIndices:e.addressIndices??[],data:e.data??new Uint8Array(0)},e=>{if(e.addressIndices.length&&e.data.byteLength)return e;let{addressIndices:r,data:t,...n}=e;return {...n,...r.length?{addressIndices:r}:null,...t.byteLength?{data:t}:null}})}function yr(e,r){let t=r+e[0].toUpperCase()+e.slice(1);return new Error(`No ${e} exists for ${r}. Use \`get${t}()\` if you need a ${e}, and \`get${r}Codec()\` if you need to both encode and decode ${r}`)}function Se(e){return ()=>{throw yr("decoder",e)}}var oe=128,xr={description:"",fixedSize:null,maxSize:1};function Sr(e,r=0){let t=e[r];return t&oe?[t^oe,r+1]:["legacy",r]}function Er(e){if(e==="legacy")return new Uint8Array;if(e<0||e>127)throw new Error(`Transaction version must be in the range [0, 127]. \`${e}\` given.`);return new Uint8Array([e|oe])}function wr(){return {...xr,deserialize:Sr,serialize:Er}}var zr={description:"",fixedSize:null,maxSize:null};function Ar(e){return e.version==="legacy"?A(ye()).serialize(e):P(A([...ye(),["addressTableLookups",Tr()]]),r=>r.version==="legacy"?r:{...r,addressTableLookups:r.addressTableLookups??[]}).serialize(e)}function ye(){return [["version",wr()],["header",hr()],["staticAccounts",z(V(),{description:"",size:x()})],["lifetimeToken",O({description:"",encoding:R,size:32})],["instructions",z(br(),{description:"",size:x()})]]}function Tr(){return z(gr(),{...null,size:x()})}function Ee(){return {...zr,deserialize:Se("CompiledMessage"),serialize:Ar}}async function Ir(e,r){let t=Ee().serialize(e);return await ge(r,t)}async function fo(e,r){let t=xe(r),[n,o]=await Promise.all([me(e.publicKey),Ir(t,e.privateKey)]),s={..."signatures"in r?r.signatures:null,[n]:o},i={...r,signatures:s};return Object.freeze(i),i}function Rr(e){let r=xe(e),t;if("signatures"in e){t=[];for(let n=0;n<r.header.numSignerAccounts;n++)t[n]=e.signatures[r.staticAccounts[n]]??new Uint8Array(Array(64).fill(0));}else t=Array(r.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));return {compiledMessage:r,signatures:t}}var Nr={description:"",fixedSize:null,maxSize:null};function vr(e){let r=Rr(e);return A([["signatures",z(G({size:64}),{...null,size:x()})],["compiledMessage",Ee()]]).serialize(r)}function Cr(){return {...Nr,deserialize:Se("CompiledMessage"),serialize:vr}}function mo(e){let r=Cr().serialize(e);return btoa(String.fromCharCode(...r))}a();a();function se(e,r,t){if(Array.isArray(e))return e.map((n,o)=>se(n,[...r,o],t));if(typeof e=="object"&&e!==null){let n={};for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=se(e[o],[...r,o],t));return n}else return typeof e=="bigint"?(t&&(e>Number.MAX_SAFE_INTEGER||e<-Number.MAX_SAFE_INTEGER)&&t(r,e),Number(e)):e}function kr(e,r){return se(e,[],r)}var f={},Br={getAccountInfo:[["value","data","parsed","info","lastExtendedSlotStartIndex"],["value","data","parsed","info","slashPenalty"],["value","data","parsed","info","warmupCooldownRate"],["value","data","parsed","info","tokenAmount","decimals"],["value","data","parsed","info","tokenAmount","uiAmount"],["value","data","parsed","info","rentExemptReserve","decimals"],["value","data","parsed","info","delegatedAmount","decimals"],["value","data","parsed","info","extensions",f,"state","olderTransferFee","transferFeeBasisPoints"],["value","data","parsed","info","extensions",f,"state","newerTransferFee","transferFeeBasisPoints"],["value","data","parsed","info","extensions",f,"state","preUpdateAverageRate"],["value","data","parsed","info","extensions",f,"state","currentRate"],["value","data","parsed","info","decimals"],["value","data","parsed","info","numRequiredSigners"],["value","data","parsed","info","numValidSigners"],["value","data","parsed","info","stake","delegation","warmupCooldownRate"],["value","data","parsed","info","exemptionThreshold"],["value","data","parsed","info","burnPercent"],["value","data","parsed","info","commission"],["value","data","parsed","info","votes",f,"confirmationCount"]],getBlockTime:[[]],getInflationReward:[[f,"commission"]],getRecentPerformanceSamples:[[f,"samplePeriodSecs"]],getTokenLargestAccounts:[["value",f,"decimals"],["value",f,"uiAmount"]],getTransaction:[["meta","preTokenBalances",f,"accountIndex"],["meta","preTokenBalances",f,"uiTokenAmount","decimals"],["meta","postTokenBalances",f,"accountIndex"],["meta","postTokenBalances",f,"uiTokenAmount","decimals"],["meta","rewards",f,"commission"],["meta","innerInstructions",f,"index"],["meta","innerInstructions",f,"instructions",f,"programIdIndex"],["meta","innerInstructions",f,"instructions",f,"accounts",f],["transaction","message","addressTableLookups",f,"writableIndexes",f],["transaction","message","addressTableLookups",f,"readonlyIndexes",f],["transaction","message","instructions",f,"programIdIndex"],["transaction","message","instructions",f,"accounts",f],["transaction","message","header","numReadonlySignedAccounts"],["transaction","message","header","numReadonlyUnsignedAccounts"],["transaction","message","header","numRequiredSignatures"]],getVoteAccounts:[["current",f,"commission"],["delinquent",f,"commission"]]};function we(e,r){return e.filter(t=>t[0]===f&&typeof r=="number"||t[0]===r).map(t=>t.slice(1))}function ie(e,r){if(Array.isArray(e))return e.map((t,n)=>{let o=we(r,n);return ie(t,o)});if(typeof e=="object"&&e!==null){let t={};for(let[n,o]of Object.entries(e)){let s=we(r,n);t[n]=ie(o,s);}return t}else return typeof e=="number"&&r.length===0&&Number.isInteger(e)?BigInt(e):e}function Or(e,r){let t=r?Br[r]:void 0;return ie(e,t??[])}function ze(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...r){let[t,n]=r,o=n.toString();return function(...s){let i=e?.onIntegerOverflow,c=kr(s,i?(u,l)=>i(o,u,l):void 0);return {methodName:o,params:c,responseProcessor:u=>Or(u,o)}}}})}a();var _r=class extends Error{constructor(e){super(`JSON-RPC 2.0 error (${e.code}): ${e.message}`),Error.captureStackTrace(this,this.constructor),this.code=e.code,this.data=e.data;}get name(){return "SolanaJsonRpcError"}},ae=0;function Lr(){let e=ae;return ae=(ae+1)%Number.MAX_SAFE_INTEGER,e}function $r(e,r){return {id:Lr(),jsonrpc:"2.0",method:e,params:r}}function Dr(e,r){return {async send(t){let{methodName:n,params:o,responseProcessor:s}=r,i=$r(n,o),c=await e.transport({payload:i,signal:t?.abortSignal});if("error"in c)throw new _r(c.error);return s?s(c.result):c.result}}}function Pr(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(r,t,n){return function(...o){let s=t.toString(),i=Reflect.get(r,s,n),c=i?i(...o):{methodName:s,params:o};return Dr(e,c)}}})}function Te(e){return Pr(e)}var Ur=globalThis.fetch,jr=class extends Error{constructor(e){super(`HTTP error (${e.statusCode}): ${e.message}`),Error.captureStackTrace(this,this.constructor),this.statusCode=e.statusCode;}get name(){return "SolanaHttpError"}};function Hr(e){let r={};for(let t in e)r[t.toLowerCase()]=e[t];return r}function Ie({httpAgentNodeOnly:e,headers:r,url:t}){let n=void 0;let o=r&&Hr(r);return async function({payload:i,signal:c}){let u=JSON.stringify(i),l={agent:n,body:u,headers:{...o,accept:"application/json","content-length":u.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:c},p=await Ur(t,l);if(!p.ok)throw new jr({message:p.statusText,statusCode:p.status});return await p.json()}}a();a();var X=class extends Error{constructor(t,n,o){let s=(typeof n[0]=="number"?n[0]:parseInt(n[0],10))+1,i="",c=s%10,u=s%100;c==1&&u!=11?i=s+"st":c==2&&u!=12?i=s+"nd":c==3&&u!=13?i=s+"rd":i=s+"th";let l=n.length>1?n.slice(1).map(p=>typeof p=="number"?`[${p}]`:p).join("."):null;super(`The ${i} argument to the \`${t}\` RPC method${l?` at path \`${l}\``:""} was \`${o}\`. This number is unsafe for use with the Solana JSON-RPC because it exceeds \`Number.MAX_SAFE_INTEGER\`.`);this.keyPath=n,this.methodName=t,this.value=o;}get name(){return "SolanaJsonRpcIntegerOverflowError"}};var Re={onIntegerOverflow(e,r,t){throw new X(e,r,t)}};function Bo(e){return Te({...e,api:ze(Re)})}a();a();function Ne(e,r){let t;return async function(o){let{payload:s,signal:i}=o,c=r(s);if(c===void 0)return await e(o);if(t||(Promise.resolve().then(()=>{t=void 0;}),t={}),t[c]==null){let l=new AbortController;t[c]={abortController:l,numConsumers:0,responsePromise:e({...o,signal:l.signal})};}let u=t[c];if(u.numConsumers++,i){let l=u.responsePromise;return await new Promise((p,h)=>{let Z=Oe=>{i.removeEventListener("abort",Z),u.numConsumers-=1,u.numConsumers===0&&u.abortController.abort();let _e=new DOMException(Oe.target.reason,"AbortError");h(_e);};i.addEventListener("abort",Z),l.then(p).finally(()=>{i.removeEventListener("abort",Z);});})}else return await u.responsePromise}}a();var ke=He(Ce(),1);function Be(e){if(!(e==null||typeof e!="object"||Array.isArray(e))&&"jsonrpc"in e&&e.jsonrpc==="2.0"&&"method"in e&&"params"in e)return (0, ke.default)([e.method,e.params])}function Vr(e){let r={};for(let t in e)r[t.toLowerCase()]=e[t];return r}function Ho(e){return Ne(Ie({...e,headers:{...e.headers?Vr(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),Be)}
|
|
9
|
+
For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function Ne(){if(H(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function ke(){if(H(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}async function Oe(){if(H(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.verify!="function")throw new Error("No signature verification implementation could be found")}function Oo(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let r=D.serialize(e).byteLength;if(r!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${r}`)}catch(t){throw new Error(`\`${e}\` is not a base-58 encoded address`,{cause:t})}}function U(e){return j({description:e?.description??(""),encoding:D,size:32})}function ce(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}var Ct=37095705934669439343138083508754565189542113879843219016388785533085940283555n,x=57896044618658097711785492504343953926634992332820282019728792003956564819949n,Le=19681161376707505956807079304988542015446066515923890162744021073123829784752n;function I(e){let t=e%x;return t>=0n?t:x+t}function v(e,t){let r=e;for(;t-- >0n;)r*=r,r%=x;return r}function Nt(e){let r=e*e%x*e%x,n=v(r,2n)*r%x,o=v(n,1n)*e%x,s=v(o,5n)*o%x,i=v(s,10n)*s%x,a=v(i,20n)*i%x,u=v(a,40n)*a%x,l=v(u,80n)*u%x,f=v(l,80n)*u%x,g=v(f,10n)*s%x;return v(g,2n)*e%x}function kt(e,t){let r=I(t*t*t),n=I(r*r*t),o=Nt(e*n),s=I(e*r*o),i=I(t*s*s),a=s,u=I(s*Le),l=i===e,f=i===I(-e),g=i===I(-e*Le);return l&&(s=a),(f||g)&&(s=u),(I(s)&1n)===1n&&(s=I(-s)),!l&&!f?null:s}function Ot(e,t){let r=I(e*e),n=I(r-1n),o=I(Ct*r+1n),s=kt(n,o);if(s===null)return !1;let i=(t&128)!==0;return !(s===0n&&i)}function Lt(e){let t=e.toString(16);return t.length===1?`0${t}`:t}function Bt(e){let r=`0x${e.reduce((n,o,s)=>`${Lt(s===31?o&-129:o)}${n}`,"")}`;return BigInt(r)}async function Dt(e){if(e.byteLength!==32)return !1;let t=Bt(e);return Ot(t,e[31])}var De=32,Be=16,ae=[80,114,111,103,114,97,109,68,101,114,105,118,101,100,65,100,100,114,101,115,115],Pe=class extends Error{};async function Pt({programAddress:e,seeds:t}){if(await ve(),t.length>Be)throw new Error(`A maximum of ${Be} seeds may be supplied when creating an address`);let r,n=t.reduce((u,l,f)=>{let g=typeof l=="string"?(r||(r=new TextEncoder)).encode(l):l;if(g.byteLength>De)throw new Error(`The seed at index ${f} exceeds the maximum length of 32 bytes`);return u.push(...g),u},[]),o=U(),s=o.serialize(e),i=await crypto.subtle.digest("SHA-256",new Uint8Array([...n,...s,...ae])),a=new Uint8Array(i);if(await Dt(a))throw new Pe("Invalid seeds; point must fall off the Ed25519 curve");return o.deserialize(a)[0]}async function Lo({programAddress:e,seeds:t}){let r=255;for(;r>0;)try{return {bumpSeed:r,pda:await Pt({programAddress:e,seeds:[...t,new Uint8Array([r])]})}}catch(n){if(n instanceof Pe)r--;else throw n}throw new Error("Unable to find a viable program address bump seed")}async function Bo({baseAddress:e,programAddress:t,seed:r}){let{serialize:n,deserialize:o}=U(),s=typeof r=="string"?new TextEncoder().encode(r):r;if(s.byteLength>De)throw new Error("The seed exceeds the maximum length of 32 bytes");let i=n(t);if(i.length>=ae.length&&i.slice(-ae.length).every((l,f)=>l===ae[f]))throw new Error("programAddress cannot end with the PDA marker");let a=await crypto.subtle.digest("SHA-256",new Uint8Array([...n(e),...s,...i])),u=new Uint8Array(a);return o(u)[0]}async function $e(e){if(await Ne(),e.type!=="public"||e.algorithm.name!=="Ed25519")throw new Error("The `CryptoKey` must be an `Ed25519` public key");let t=await crypto.subtle.exportKey("raw",e),[r]=U().deserialize(new Uint8Array(t));return r}c();var $t=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))($t||{}),We=2,ge=1;function Wo(e){return e&~We}function Uo(e){return e&~ge}function Mo(e){return e>=2}function Fo(e){return (e&ge)!==0}function Ko(e,t){return e|t}function jo(e){return e|We}function Ho(e){return e|ge}c();async function Yo(){return await Ce(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function Ue(e,t){await ke();let r=await crypto.subtle.sign("Ed25519",e,t);return new Uint8Array(r)}async function Jo(e,t,r){return await Oe(),await crypto.subtle.verify("Ed25519",e,t,r)}c();function q(e){if("signatures"in e){let{signatures:t,...r}=e;return r}else return e}function rs(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let r=D.serialize(e).byteLength;if(r!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${r}`)}catch(t){throw new Error(`\`${e}\` is not a blockhash`,{cause:t})}}function ns(e,t){if("lifetimeConstraint"in t&&t.lifetimeConstraint.blockhash===e.blockhash&&t.lifetimeConstraint.lastValidBlockHeight===e.lastValidBlockHeight)return t;let r={...q(t),lifetimeConstraint:e};return Object.freeze(r),r}function os({version:e}){let t={instructions:[],version:e};return Object.freeze(t),t}var z=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))(z||{}),Wt=1;function G(e){return e>=2}function V(e){return (e&Wt)!==0}function Me(e,t){return e|t}var je="SysvarRecentB1ockHashes11111111111111111111",He="11111111111111111111111111111111";function ss(e){if(!Ge(e))throw new Error("Transaction is not a durable nonce transaction")}function Ut(e,t){return {accounts:[{address:e,role:z.WRITABLE},{address:je,role:z.READONLY},{address:t,role:z.READONLY_SIGNER}],data:new Uint8Array([4,0,0,0]),programAddress:He}}function Mt(e){return e.programAddress===He&&e.data!=null&&Ft(e.data)&&e.accounts?.length===3&&e.accounts[0].address!=null&&e.accounts[0].role===z.WRITABLE&&e.accounts[1].address===je&&e.accounts[1].role===z.READONLY&&e.accounts[2].address!=null&&e.accounts[2].role===z.READONLY_SIGNER}function Ft(e){return e.byteLength===4&&e[0]===4&&e[1]===0&&e[2]===0&&e[3]===0}function Ge(e){return "lifetimeConstraint"in e&&typeof e.lifetimeConstraint.nonce=="string"&&e.instructions[0]!=null&&Mt(e.instructions[0])}function is({nonce:e,nonceAccountAddress:t,nonceAuthorityAddress:r},n){let o=Ge(n);if(o&&n.lifetimeConstraint.nonce===e&&n.instructions[0].accounts[0].address===t&&n.instructions[0].accounts[2].address===r)return n;let s={...q(n),instructions:[Ut(t,r),...o?n.instructions.slice(1):n.instructions],lifetimeConstraint:{nonce:e}};return Object.freeze(s),s}function as(e,t){if("feePayer"in t&&e===t.feePayer)return t;let r={...q(t),feePayer:e};return Object.freeze(r),r}function cs(e,t){let r={...q(t),instructions:[...t.instructions,e]};return Object.freeze(r),r}function us(e,t){let r={...q(t),instructions:[e,...t.instructions]};return Object.freeze(r),r}function Fe(e,t,r){e[t]=r(e[t]??{role:z.READONLY});}var b=Symbol("AddressMapTypeProperty");function Kt(e,t){let r={[e]:{[b]:0,role:z.WRITABLE_SIGNER}},n=new Set;for(let o of t){Fe(r,o.programAddress,i=>{if(n.add(o.programAddress),b in i){if(V(i.role))switch(i[b]){case 0:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and set as the fee payer. Program addresses may not pay fees.`);default:throw new Error(`This transaction includes an address (\`${o.programAddress}\`) which is both invoked and marked writable. Program addresses may not be writable.`)}if(i[b]===2)return i}return {[b]:2,role:z.READONLY}});let s;if(o.accounts)for(let i of o.accounts)Fe(r,i.address,a=>{let{address:u,...l}=i;if(b in a)switch(a[b]){case 0:return a;case 1:{let f=Me(a.role,l.role);if("lookupTableAddress"in l){if(a.lookupTableAddress!==l.lookupTableAddress&&(s||(s=ce()))(l.lookupTableAddress,a.lookupTableAddress)<0)return {[b]:1,...l,role:f}}else if(G(l.role))return {[b]:2,role:f};return a.role!==f?{...a,role:f}:a}case 2:{let f=Me(a.role,l.role);if(n.has(i.address)){if(V(l.role))throw new Error(`This transaction includes an address (\`${i.address}\`) which is both invoked and marked writable. Program addresses may not be writable.`);return a.role!==f?{...a,role:f}:a}else return "lookupTableAddress"in l&&!G(a.role)?{...l,[b]:1,role:f}:a.role!==f?{...a,role:f}:a}}return "lookupTableAddress"in l?{...l,[b]:1}:{...l,[b]:2}});}return r}function jt(e){let t;return Object.entries(e).sort(([n,o],[s,i])=>{if(o[b]!==i[b]){if(o[b]===0)return -1;if(i[b]===0)return 1;if(o[b]===2)return -1;if(i[b]===2)return 1}let a=G(o.role);if(a!==G(i.role))return a?-1:1;let u=V(o.role);return u!==V(i.role)?u?-1:1:(t||(t=ce()),o[b]===1&&i[b]===1&&o.lookupTableAddress!==i.lookupTableAddress?t(o.lookupTableAddress,i.lookupTableAddress):t(n,s))}).map(([n,o])=>({address:n,...o}))}function Ht(e){var t;let r={};for(let n of e){if(!("lookupTableAddress"in n))continue;let o=r[t=n.lookupTableAddress]||(r[t]={readableIndices:[],writableIndices:[]});n.role===z.WRITABLE?o.writableIndices.push(n.addressIndex):o.readableIndices.push(n.addressIndex);}return Object.keys(r).sort(ce()).map(n=>({lookupTableAddress:n,...r[n]}))}function Gt(e){let t=0,r=0,n=0;for(let o of e){if("lookupTableAddress"in o)break;let s=V(o.role);G(o.role)?(n++,s||r++):s||t++;}return {numReadonlyNonSignerAccounts:t,numReadonlySignerAccounts:r,numSignerAccounts:n}}function Vt(e){let t={};for(let[r,n]of e.entries())t[n.address]=r;return t}function qt(e,t){let r=Vt(t);return e.map(({accounts:n,data:o,programAddress:s})=>({programAddressIndex:r[s],...n?{accountIndices:n.map(({address:i})=>r[i])}:null,...o?{data:o}:null}))}function Yt(e){return "nonce"in e?e.nonce:e.blockhash}function Jt(e){let t=e.findIndex(n=>"lookupTableAddress"in n);return (t===-1?e:e.slice(0,t)).map(({address:n})=>n)}function Ve(e){let t=Kt(e.feePayer,e.instructions),r=jt(t);return {...e.version!=="legacy"?{addressTableLookups:Ht(r)}:null,header:Gt(r),instructions:qt(e.instructions,r),lifetimeToken:Yt(e.lifetimeConstraint),staticAccounts:Jt(r),version:e.version}}function Xt(){return L([["lookupTableAddress",U(void 0)],["writableIndices",O(k(),{...null,size:_()})],["readableIndices",O(k(),{...void 0,size:_()})]],void 0)}function Zt(){return L([["numSignerAccounts",k(void 0)],["numReadonlySignerAccounts",k(void 0)],["numReadonlyNonSignerAccounts",k(void 0)]],void 0)}function Qt(){return Z(L([["programAddressIndex",k(void 0)],["accountIndices",O(k({description:""}),{description:"",size:_()})],["data",ie({description:"",size:_()})]]),e=>e.accountIndices!==void 0&&e.data!==void 0?e:{...e,accountIndices:e.accountIndices??[],data:e.data??new Uint8Array(0)},e=>{if(e.accountIndices.length&&e.data.byteLength)return e;let{accountIndices:t,data:r,...n}=e;return {...n,...t.length?{accountIndices:t}:null,...r.byteLength?{data:r}:null}})}function er(e,t){let r=t+e[0].toUpperCase()+e.slice(1);return new Error(`No ${e} exists for ${t}. Use \`get${r}()\` if you need a ${e}, and \`get${t}Codec()\` if you need to both encode and decode ${t}`)}function qe(e){return ()=>{throw er("decoder",e)}}var he=128,tr={description:"",fixedSize:null,maxSize:1};function rr(e,t=0){let r=e[t];return r&he?[r^he,t+1]:["legacy",t]}function nr(e){if(e==="legacy")return new Uint8Array;if(e<0||e>127)throw new Error(`Transaction version must be in the range [0, 127]. \`${e}\` given.`);return new Uint8Array([e|he])}function or(){return {...tr,deserialize:rr,serialize:nr}}var sr={description:"",fixedSize:null,maxSize:null};function ir(e){return e.version==="legacy"?L(Ke()).serialize(e):Z(L([...Ke(),["addressTableLookups",ar()]]),t=>t.version==="legacy"?t:{...t,addressTableLookups:t.addressTableLookups??[]}).serialize(e)}function Ke(){return [["version",or()],["header",Zt()],["staticAccounts",O(U(),{description:"",size:_()})],["lifetimeToken",j({description:"",encoding:D,size:32})],["instructions",O(Qt(),{description:"",size:_()})]]}function ar(){return O(Xt(),{...null,size:_()})}function Ye(){return {...sr,deserialize:qe("CompiledMessage"),serialize:ir}}async function cr(e,t){let r=Ye().serialize(e);return await Ue(t,r)}async function ls(e,t){let r=Ve(t),[n,o]=await Promise.all([$e(e.publicKey),cr(r,e.privateKey)]),s={..."signatures"in t?t.signatures:null,[n]:o},i={...t,signatures:s};return Object.freeze(i),i}function ur(e){let t=Ve(e),r;if("signatures"in e){r=[];for(let n=0;n<t.header.numSignerAccounts;n++)r[n]=e.signatures[t.staticAccounts[n]]??new Uint8Array(Array(64).fill(0));}else r=Array(t.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));return {compiledMessage:t,signatures:r}}var lr={description:"",fixedSize:null,maxSize:null};function dr(e){let t=ur(e);return L([["signatures",O(ie({size:64}),{...null,size:_()})],["compiledMessage",Ye()]]).serialize(t)}function fr(){return {...lr,deserialize:qe("CompiledMessage"),serialize:dr}}function ds(e){let t=fr().serialize(e);return btoa(String.fromCharCode(...t))}c();c();function we(e,t,r){if(Array.isArray(e))return e.map((n,o)=>we(n,[...t,o],r));if(typeof e=="object"&&e!==null){let n={};for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=we(e[o],[...t,o],r));return n}else return typeof e=="bigint"?(r&&(e>Number.MAX_SAFE_INTEGER||e<-Number.MAX_SAFE_INTEGER)&&r(t,e),Number(e)):e}function Xe(e,t){return we(e,[],t)}var d={},be,ye;function pr(){return be||(be={}),be}function mr(){if(!ye){let e=[["data","parsed","info","tokenAmount","decimals"],["data","parsed","info","tokenAmount","uiAmount"],["data","parsed","info","rentExemptReserve","decimals"],["data","parsed","info","rentExemptReserve","uiAmount"],["data","parsed","info","delegatedAmount","decimals"],["data","parsed","info","delegatedAmount","uiAmount"],["data","parsed","info","extensions",d,"state","olderTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",d,"state","newerTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",d,"state","preUpdateAverageRate"],["data","parsed","info","extensions",d,"state","currentRate"]],t=[...e,["data","parsed","info","lastExtendedSlotStartIndex"],["data","parsed","info","slashPenalty"],["data","parsed","info","warmupCooldownRate"],["data","parsed","info","decimals"],["data","parsed","info","numRequiredSigners"],["data","parsed","info","numValidSigners"],["data","parsed","info","stake","delegation","warmupCooldownRate"],["data","parsed","info","exemptionThreshold"],["data","parsed","info","burnPercent"],["data","parsed","info","commission"],["data","parsed","info","votes",d,"confirmationCount"]];ye={getAccountInfo:t.map(r=>["value",...r]),getBlock:[["blockTime"],["transactions",d,"meta","preTokenBalances",d,"accountIndex"],["transactions",d,"meta","preTokenBalances",d,"uiTokenAmount","decimals"],["transactions",d,"meta","postTokenBalances",d,"accountIndex"],["transactions",d,"meta","postTokenBalances",d,"uiTokenAmount","decimals"],["transactions",d,"meta","rewards",d,"commission"],["transactions",d,"meta","innerInstructions",d,"index"],["transactions",d,"meta","innerInstructions",d,"instructions",d,"programIdIndex"],["transactions",d,"meta","innerInstructions",d,"instructions",d,"accounts",d],["transactions",d,"transaction","message","addressTableLookups",d,"writableIndexes",d],["transactions",d,"transaction","message","addressTableLookups",d,"readonlyIndexes",d],["transactions",d,"transaction","message","instructions",d,"programIdIndex"],["transactions",d,"transaction","message","instructions",d,"accounts",d],["transactions",d,"transaction","message","header","numReadonlySignedAccounts"],["transactions",d,"transaction","message","header","numReadonlyUnsignedAccounts"],["transactions",d,"transaction","message","header","numRequiredSignatures"],["rewards",d,"commission"]],getBlockTime:[[]],getClusterNodes:[[d,"featureSet"],[d,"shredVersion"]],getInflationGovernor:[["initial"],["foundation"],["foundationTerm"],["taper"],["terminal"]],getInflationRate:[["foundation"],["total"],["validator"]],getInflationReward:[[d,"commission"]],getMultipleAccounts:t.map(r=>["value",d,...r]),getProgramAccounts:t.flatMap(r=>[["value",d,"account",...r],[d,"account",...r]]),getRecentPerformanceSamples:[[d,"samplePeriodSecs"]],getTokenAccountBalance:[["value","decimals"],["value","uiAmount"]],getTokenAccountsByDelegate:e.map(r=>["value",d,"account",...r]),getTokenAccountsByOwner:e.map(r=>["value",d,"account",...r]),getTokenLargestAccounts:[["value",d,"decimals"],["value",d,"uiAmount"]],getTokenSupply:[["value","decimals"],["value","uiAmount"]],getTransaction:[["meta","preTokenBalances",d,"accountIndex"],["meta","preTokenBalances",d,"uiTokenAmount","decimals"],["meta","postTokenBalances",d,"accountIndex"],["meta","postTokenBalances",d,"uiTokenAmount","decimals"],["meta","rewards",d,"commission"],["meta","innerInstructions",d,"index"],["meta","innerInstructions",d,"instructions",d,"programIdIndex"],["meta","innerInstructions",d,"instructions",d,"accounts",d],["transaction","message","addressTableLookups",d,"writableIndexes",d],["transaction","message","addressTableLookups",d,"readonlyIndexes",d],["transaction","message","instructions",d,"programIdIndex"],["transaction","message","instructions",d,"accounts",d],["transaction","message","header","numReadonlySignedAccounts"],["transaction","message","header","numReadonlyUnsignedAccounts"],["transaction","message","header","numRequiredSignatures"]],getVersion:[["feature-set"]],getVoteAccounts:[["current",d,"commission"],["delinquent",d,"commission"]],simulateTransaction:t.map(r=>["value","accounts",d,...r])};}return ye}function Je(e,t){return e.filter(r=>r[0]===d&&typeof t=="number"||r[0]===t).map(r=>r.slice(1))}function ue(e,t){if(Array.isArray(e))return e.map((r,n)=>{let o=Je(t,n);return ue(r,o)});if(typeof e=="object"&&e!==null){let r={};for(let[n,o]of Object.entries(e)){let s=Je(t,n);r[n]=ue(o,s);}return r}else return typeof e=="number"&&t.length===0&&Number.isInteger(e)?BigInt(e):e}function gr(e,t){let r=t?mr()[t]:void 0;return ue(e,r??[])}function hr(e,t){let r=t?pr()[t]:void 0;return ue(e,r??[])}function Ze(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[r,n]=t,o=n.toString();return function(...s){let i=e?.onIntegerOverflow,a=Xe(s,i?(u,l)=>i(o,u,l):void 0);return {methodName:o,params:a,responseProcessor:u=>gr(u,o)}}}})}function Qe(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[r,n]=t,o=n.toString();return function(...s){let i=e?.onIntegerOverflow;return {params:Xe(s,i?(u,l)=>i(o,u,l):void 0),responseProcessor:u=>hr(u,o),subscribeMethodName:o.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:o.replace(/Notifications$/,"Unsubscribe")}}}})}c();var tt=class extends Error{constructor(e){super(`JSON-RPC 2.0 error (${e.code}): ${e.message}`),Error.captureStackTrace(this,this.constructor),this.code=e.code,this.data=e.data;}get name(){return "SolanaJsonRpcError"}},Se=0;function br(){let e=Se;return Se=(Se+1)%Number.MAX_SAFE_INTEGER,e}function Ee(e,t){return {id:br(),jsonrpc:"2.0",method:e,params:t}}function yr(e,t){return {async send(r){let{methodName:n,params:o,responseProcessor:s}=t,i=Ee(n,o),a=await e.transport({payload:i,signal:r?.abortSignal});if("error"in a)throw new tt(a.error);return s?s(a.result):a.result}}}function wr(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,r,n){return function(...o){let s=r.toString(),i=Reflect.get(t,s,n),a=i?i(...o):{methodName:s,params:o};return yr(e,a)}}})}function rt(e){return wr(e)}function Sr(e,t){(async()=>{try{for await(let r of e);}catch{}finally{t();}})();}function Er(e,{params:t,subscribeMethodName:r,unsubscribeMethodName:n,responseProcessor:o}){return {async subscribe(s){s?.abortSignal?.throwIfAborted();let i;function a(){if(i!==void 0){let m=Ee(n,[i]);f.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(m).finally(()=>{u.abort();});}else u.abort();}s?.abortSignal?.addEventListener("abort",a);let u=new AbortController,l=Ee(r,t),f=await e.transport({payload:l,signal:u.signal});function g(){s?.abortSignal?.removeEventListener("abort",a);}Sr(f,g);for await(let m of f)if("id"in m&&m.id===l.id){if("error"in m)throw new tt(m.error);i=m.result;break}if(i==null)throw new Error("Failed to obtain a subscription id from the server");return {async*[Symbol.asyncIterator](){for await(let m of f){if(!("params"in m)||m.params.subscription!==i)continue;let h=m.params.result;yield o?o(h):h;}}}}}}function xr(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,r,n){return function(...o){let s=r.toString(),i=Reflect.get(t,s,n);if(r.toString().endsWith("Notifications")===!1&&!i)throw new Error("Either the notification name must end in 'Notifications' or the API must supply a subscription creator function to map between the notification name and the subscribe/unsubscribe method names.");let a=i?i(...o):{params:o,subscribeMethodName:s.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:s.replace(/Notifications$/,"Unsubscribe")};return Er(e,a)}}})}function nt(e){return xr(e)}var Ar=globalThis.fetch,Tr=class extends Error{constructor(e){super(`HTTP error (${e.statusCode}): ${e.message}`),Error.captureStackTrace(this,this.constructor),this.statusCode=e.statusCode;}get name(){return "SolanaHttpError"}};function _r(e){let t={};for(let r in e)t[r.toLowerCase()]=e[r];return t}function ot({httpAgentNodeOnly:e,headers:t,url:r}){let n=void 0;let o=t&&_r(t);return async function({payload:i,signal:a}){let u=JSON.stringify(i),l={agent:n,body:u,headers:{...o,accept:"application/json","content-length":u.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:a},f=await Ar(r,l);if(!f.ok)throw new Tr({message:f.statusText,statusCode:f.status});return await f.json()}}var Y=globalThis.WebSocket;async function vr({sendBufferHighWatermark:e,signal:t,url:r}){return new Promise((n,o)=>{t.addEventListener("abort",i,{once:!0});let s=new Map;function i(){h.readyState!==Y.CLOSED&&h.readyState!==Y.CLOSING&&h.close(1e3);}function a(w){f?.onCancel(),t.removeEventListener("abort",i),h.removeEventListener("close",a),h.removeEventListener("error",u),h.removeEventListener("open",g),h.removeEventListener("message",m),s.forEach((S,A)=>{if(S.__hasPolled){let{onError:E}=S;s.delete(A),E(w);}else s.delete(A);});}function u(w){l||o(new Error("WebSocket failed to connect",{cause:w}));}let l=!1,f;function g(){l=!0,n({async send(w){let S=JSON.stringify(w);if(!f&&h.readyState===Y.OPEN&&h.bufferedAmount>e){let A,E=new Promise((M,mt)=>{let Ae=setInterval(()=>{(h.readyState!==Y.OPEN||!(h.bufferedAmount>e))&&(clearInterval(Ae),f=void 0,M());},16);A=()=>{f=void 0,clearInterval(Ae),mt(new Error("WebSocket was closed before payload could be sent"));};});f={onCancel:A,promise:E};}f&&await f.promise,h.send(S);},async*[Symbol.asyncIterator](){let w=Symbol();s.set(w,{__hasPolled:!1,queuedMessages:[]});try{for(;;){let S=s.get(w);if(!S)throw new Error("Invariant: WebSocket message iterator is missing state storage");if(S.__hasPolled)throw new Error("Invariant: WebSocket message iterator state is corrupt; iterated without first resolving existing message promise");let A=S.queuedMessages;if(A.length)S.queuedMessages=[],yield*A;else try{yield await new Promise((E,M)=>{s.set(w,{__hasPolled:!0,onError:M,onMessage:E});});}catch(E){if(E!==null&&typeof E=="object"&&"type"in E&&E.type==="close"&&"wasClean"in E&&E.wasClean)return;throw new Error("WebSocket connection closed",{cause:E})}}}finally{s.delete(w);}}});}function m({data:w}){let S=JSON.parse(w);s.forEach((A,E)=>{if(A.__hasPolled){let{onMessage:M}=A;s.set(E,{__hasPolled:!1,queuedMessages:[]}),M(S);}else A.queuedMessages.push(S);});}let h=new Y(r);h.addEventListener("close",a),h.addEventListener("error",u),h.addEventListener("open",g),h.addEventListener("message",m);})}function st({sendBufferHighWatermark:e,url:t}){if(/^wss?:/i.test(t)===!1){let r=t.match(/^([^:]+):/);throw new DOMException(r?`Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. '${r[1]}:' is not allowed.`:`Failed to construct 'WebSocket': The URL '${t}' is invalid.`)}return async function({payload:n,signal:o}){o?.throwIfAborted();let s=await vr({sendBufferHighWatermark:e,signal:o,url:t});return o?.throwIfAborted(),await s.send(n),{[Symbol.asyncIterator]:s[Symbol.asyncIterator].bind(s),send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:s.send.bind(s)}}}c();c();var le=class extends Error{constructor(r,n,o){let s=(typeof n[0]=="number"?n[0]:parseInt(n[0],10))+1,i="",a=s%10,u=s%100;a==1&&u!=11?i=s+"st":a==2&&u!=12?i=s+"nd":a==3&&u!=13?i=s+"rd":i=s+"th";let l=n.length>1?n.slice(1).map(f=>typeof f=="number"?`[${f}]`:f).join("."):null;super(`The ${i} argument to the \`${r}\` RPC method${l?` at path \`${l}\``:""} was \`${o}\`. This number is unsafe for use with the Solana JSON-RPC because it exceeds \`Number.MAX_SAFE_INTEGER\`.`);this.keyPath=n,this.methodName=r,this.value=o;}get name(){return "SolanaJsonRpcIntegerOverflowError"}};var xe={onIntegerOverflow(e,t,r){throw new le(e,t,r)}};function Cs(e){return rt({...e,api:Ze(xe)})}function Ns(e){return nt({...e,api:Qe(xe)})}c();c();function it(e,t){let r;return async function(o){let{payload:s,signal:i}=o,a=t(s);if(a===void 0)return await e(o);if(r||(Promise.resolve().then(()=>{r=void 0;}),r={}),r[a]==null){let l=new AbortController;r[a]={abortController:l,numConsumers:0,responsePromise:e({...o,signal:l.signal})};}let u=r[a];if(u.numConsumers++,i){let l=u.responsePromise;return await new Promise((f,g)=>{let m=h=>{i.removeEventListener("abort",m),u.numConsumers-=1,u.numConsumers===0&&u.abortController.abort();let w=new DOMException(h.target.reason,"AbortError");g(w);};i.addEventListener("abort",m),l.then(f).finally(()=>{i.removeEventListener("abort",m);});})}else return await u.responsePromise}}c();var ut=Tt(ct(),1);function lt(e){if(!(e==null||typeof e!="object"||Array.isArray(e))&&"jsonrpc"in e&&e.jsonrpc==="2.0"&&"method"in e&&"params"in e)return (0, ut.default)([e.method,e.params])}function kr(e){let t={};for(let r in e)t[r.toLowerCase()]=e[r];return t}function Ks(e){return it(ot({...e,headers:{...e.headers?kr(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),lt)}c();c();var Or={jsonrpc:"2.0",method:"ping"};function dt({intervalMs:e,transport:t}){let r=new Map;return async(...n)=>{let o=await t(...n),s;function i(){o.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(Or);}function a(){clearInterval(s),s=setInterval(i,e);}if(r.has(o)===!1){r.set(o,{[Symbol.asyncIterator]:o[Symbol.asyncIterator].bind(o),send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:(...f)=>(a(),o.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...f))}),(async()=>{try{for await(let f of o)a();}catch{}finally{r.delete(o),clearInterval(s),u&&globalThis.window.removeEventListener("offline",u),l&&globalThis.window.removeEventListener("online",l);}})(),globalThis.navigator.onLine&&a();let u,l;u=()=>{clearInterval(s);},l=()=>{i(),a();},globalThis.window.addEventListener("offline",u),globalThis.window.addEventListener("online",l);}return r.get(o)}}c();var Lr=Symbol(void 0);function ft(e,t){(async()=>{try{for await(let r of e);}catch{}finally{t();}})();}function pt({getShard:e,transport:t}){let r=new Map;function n(o,s){let i=r.get(o);if(!i)throw new Error(`Found no cache entry for connection with shard key \`${o.toString()}\``);let a=s(i);return r.set(o,a),a}return async(...o)=>{let{payload:s,signal:i,...a}=o[0],u=e?e(s):Lr;function l(){r.delete(u),i.removeEventListener("abort",f);}function f(){r.get(u)?.purgeScheduled!==!0&&(n(u,m=>({...m,purgeScheduled:!0})),globalThis.queueMicrotask(()=>{let m=r.get(u);m&&m.referenceCount===0&&(g.abortController.abort(),l());}));let g=n(u,m=>({...m,referenceCount:m.referenceCount-1}));}i.addEventListener("abort",f);try{let g=r.get(u);if(g){n(u,w=>({...w,referenceCount:w.referenceCount+1}));let m=g.connection,h="then"in m?await m:m;return ft(h,l),await h.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(s),h}else {let m=new AbortController,h=t({payload:s,signal:m.signal,...a}),w={abortController:m,connection:h,purgeScheduled:!1,referenceCount:1};r.set(u,w);let S=await h;return ft(S,l),n(u,A=>({...A,connection:S})),S}}catch(g){throw l(),g}}}function Qs(e){let{getShard:t,intervalMs:r,...n}=e;return dt({intervalMs:r??5e3,transport:pt({getShard:t,transport:st({...n,sendBufferHighWatermark:e.sendBufferHighWatermark??131072})})})}
|
|
10
10
|
|
|
11
|
-
exports.AccountRole =
|
|
12
|
-
exports.appendTransactionInstruction =
|
|
13
|
-
exports.assertIsBase58EncodedAddress =
|
|
14
|
-
exports.assertIsBlockhash =
|
|
15
|
-
exports.assertIsDurableNonceTransaction =
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.
|
|
24
|
-
exports.
|
|
25
|
-
exports.
|
|
26
|
-
exports.
|
|
27
|
-
exports.
|
|
28
|
-
exports.
|
|
29
|
-
exports.
|
|
30
|
-
exports.
|
|
31
|
-
exports.
|
|
32
|
-
exports.
|
|
33
|
-
exports.
|
|
34
|
-
exports.
|
|
35
|
-
exports.
|
|
36
|
-
exports.
|
|
11
|
+
exports.AccountRole = $t;
|
|
12
|
+
exports.appendTransactionInstruction = cs;
|
|
13
|
+
exports.assertIsBase58EncodedAddress = Oo;
|
|
14
|
+
exports.assertIsBlockhash = rs;
|
|
15
|
+
exports.assertIsDurableNonceTransaction = ss;
|
|
16
|
+
exports.createAddressWithSeed = Bo;
|
|
17
|
+
exports.createDefaultRpcSubscriptionsTransport = Qs;
|
|
18
|
+
exports.createDefaultRpcTransport = Ks;
|
|
19
|
+
exports.createSolanaRpc = Cs;
|
|
20
|
+
exports.createSolanaRpcSubscriptions = Ns;
|
|
21
|
+
exports.createTransaction = os;
|
|
22
|
+
exports.downgradeRoleToNonSigner = Wo;
|
|
23
|
+
exports.downgradeRoleToReadonly = Uo;
|
|
24
|
+
exports.generateKeyPair = Yo;
|
|
25
|
+
exports.getAddressFromPublicKey = $e;
|
|
26
|
+
exports.getBase58EncodedAddressCodec = U;
|
|
27
|
+
exports.getBase58EncodedAddressComparator = ce;
|
|
28
|
+
exports.getBase64EncodedWireTransaction = ds;
|
|
29
|
+
exports.getProgramDerivedAddress = Lo;
|
|
30
|
+
exports.isSignerRole = Mo;
|
|
31
|
+
exports.isWritableRole = Fo;
|
|
32
|
+
exports.mergeRoles = Ko;
|
|
33
|
+
exports.prependTransactionInstruction = us;
|
|
34
|
+
exports.setTransactionFeePayer = as;
|
|
35
|
+
exports.setTransactionLifetimeUsingBlockhash = ns;
|
|
36
|
+
exports.setTransactionLifetimeUsingDurableNonce = is;
|
|
37
|
+
exports.signBytes = Ue;
|
|
38
|
+
exports.signTransaction = ls;
|
|
39
|
+
exports.upgradeRoleToSigner = jo;
|
|
40
|
+
exports.upgradeRoleToWritable = Ho;
|
|
41
|
+
exports.verifySignature = Jo;
|
|
37
42
|
|
|
38
43
|
return exports;
|
|
39
44
|
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
export * from '@solana/addresses';
|
|
1
2
|
export * from '@solana/instructions';
|
|
2
3
|
export * from '@solana/keys';
|
|
3
4
|
export * from '@solana/transactions';
|
|
4
5
|
export * from './rpc';
|
|
5
6
|
export * from './rpc-transport';
|
|
7
|
+
export * from './rpc-websocket-transport';
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-default-config.d.ts","sourceRoot":"","sources":["../../src/rpc-default-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAItD,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAIhF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-integer-overflow-error.d.ts","sourceRoot":"","sources":["../../src/rpc-integer-overflow-error.ts"],"names":[],"mappings":"AAAA,qBAAa,iCAAkC,SAAQ,KAAK;IACxD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACX,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM;IA+B3E,IAAI,IAAI,WAEP;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-request-coalescer.d.ts","sourceRoot":"","sources":["../../src/rpc-request-coalescer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6DAA6D,CAAC;AAQ5F,KAAK,qBAAqB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;AAEtE,wBAAgB,oCAAoC,CAChD,SAAS,EAAE,aAAa,EACxB,mBAAmB,EAAE,qBAAqB,GAC3C,aAAa,CAmDf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-request-deduplication.d.ts","sourceRoot":"","sources":["../../src/rpc-request-deduplication.ts"],"names":[],"mappings":"AAIA,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOxF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-transport.d.ts","sourceRoot":"","sources":["../../src/rpc-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6DAA6D,CAAC;AAkB5F,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAc1G"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';
|
|
2
|
+
type Config = Readonly<{
|
|
3
|
+
intervalMs: number;
|
|
4
|
+
transport: IRpcWebSocketTransport;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function getWebSocketTransportWithAutoping({ intervalMs, transport }: Config): IRpcWebSocketTransport;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=rpc-websocket-autopinger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-websocket-autopinger.d.ts","sourceRoot":"","sources":["../../src/rpc-websocket-autopinger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6DAA6D,CAAC;AAErG,KAAK,MAAM,GAAG,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,sBAAsB,CAAC;CACrC,CAAC,CAAC;AAOH,wBAAgB,iCAAiC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,sBAAsB,CA+D3G"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';
|
|
2
|
+
type Config = Readonly<{
|
|
3
|
+
/**
|
|
4
|
+
* You might like to open more subscriptions per connection than your RPC provider allows for.
|
|
5
|
+
* Using the initial payload as input, return a shard key from this method to assign
|
|
6
|
+
* subscriptions to separate connections. One socket will be opened per shard key.
|
|
7
|
+
*/
|
|
8
|
+
getShard?: (payload: unknown) => string;
|
|
9
|
+
transport: IRpcWebSocketTransport;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function getWebSocketTransportWithConnectionSharding({ getShard, transport }: Config): IRpcWebSocketTransport;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=rpc-websocket-connection-sharding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-websocket-connection-sharding.d.ts","sourceRoot":"","sources":["../../src/rpc-websocket-connection-sharding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6DAA6D,CAAC;AASrG,KAAK,MAAM,GAAG,QAAQ,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,SAAS,EAAE,sBAAsB,CAAC;CACrC,CAAC,CAAC;AAoBH,wBAAgB,2CAA2C,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,sBAAsB,CAoFnH"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createWebSocketTransport } from '@solana/rpc-transport';
|
|
2
|
+
import { IRpcWebSocketTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';
|
|
3
|
+
export declare function createDefaultRpcSubscriptionsTransport(config: Omit<Parameters<typeof createWebSocketTransport>[0], 'sendBufferHighWatermark'> & {
|
|
4
|
+
/**
|
|
5
|
+
* You might like to open more subscriptions per connection than your RPC provider allows
|
|
6
|
+
* for. Using the initial payload as input, return a shard key from this method to assign
|
|
7
|
+
* subscriptions to separate connections. One socket will be opened per shard key.
|
|
8
|
+
*/
|
|
9
|
+
getShard?: (payload: unknown) => string;
|
|
10
|
+
intervalMs?: number;
|
|
11
|
+
sendBufferHighWatermark?: number;
|
|
12
|
+
}): IRpcWebSocketTransport;
|
|
13
|
+
//# sourceMappingURL=rpc-websocket-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-websocket-transport.d.ts","sourceRoot":"","sources":["../../src/rpc-websocket-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6DAA6D,CAAC;AAKrG,wBAAgB,sCAAsC,CAClD,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,GAAG;IACtF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACpC,GACF,sBAAsB,CAexB"}
|