@solana/web3.js 2.0.0-experimental.ed7c7b8 → 2.0.0-experimental.ee4214c
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/LICENSE +1 -1
- package/README.md +4 -4
- package/dist/index.browser.cjs +624 -9
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +595 -11
- package/dist/index.browser.js.map +1 -1
- package/dist/index.development.js +3223 -209
- package/dist/index.development.js.map +1 -1
- package/dist/index.native.js +584 -11
- package/dist/index.native.js.map +1 -1
- package/dist/index.node.cjs +613 -11
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +584 -13
- package/dist/index.node.js.map +1 -1
- package/dist/index.production.min.js +53 -4
- package/dist/types/cached-abortable-iterable.d.ts +11 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/rpc-request-coalescer.d.ts +5 -0
- package/dist/types/rpc-request-deduplication.d.ts +2 -0
- package/dist/types/rpc-subscription-coalescer.d.ts +10 -0
- package/dist/types/rpc-websocket-autopinger.d.ts +8 -0
- package/dist/types/rpc-websocket-connection-sharding.d.ts +13 -0
- package/dist/types/rpc-websocket-transport.d.ts +13 -0
- package/dist/types/rpc.d.ts +5 -3
- package/dist/types/transaction-confirmation-strategy-blockheight.d.ts +10 -0
- package/dist/types/transaction-confirmation-strategy-nonce.d.ts +15 -0
- package/dist/types/transaction-confirmation-strategy-signature.d.ts +13 -0
- package/dist/types/transaction-confirmation.d.ts +39 -0
- package/package.json +26 -23
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/rpc-default-config.d.ts.map +0 -1
- package/dist/types/rpc-integer-overflow-error.d.ts.map +0 -1
- package/dist/types/rpc-transport.d.ts.map +0 -1
- package/dist/types/rpc.d.ts.map +0 -1
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"],"names":[],"mappings":";AAAA,cAAc;;;ACAd,SAA2B,0BAA0B;;;ACA9C,IAAM,oCAAN,cAAgD,MAAM;AAAA,EAIzD,YAAY,YAAoB,SAA8B,OAAe;AACzE,UAAM,eAAe,OAAO,QAAQ,CAAC,MAAM,WAAW,QAAQ,CAAC,IAAI,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK;AAC/F,QAAI,UAAU;AACd,UAAM,YAAY,cAAc;AAChC,UAAM,gBAAgB,cAAc;AACpC,QAAI,aAAa,KAAK,iBAAiB,IAAI;AACvC,gBAAU,cAAc;AAAA,IAC5B,WAAW,aAAa,KAAK,iBAAiB,IAAI;AAC9C,gBAAU,cAAc;AAAA,IAC5B,WAAW,aAAa,KAAK,iBAAiB,IAAI;AAC9C,gBAAU,cAAc;AAAA,IAC5B,OAAO;AACH,gBAAU,cAAc;AAAA,IAC5B;AACA,UAAM,OACF,QAAQ,SAAS,IACX,QACK,MAAM,CAAC,EACP,IAAI,cAAa,OAAO,aAAa,WAAW,IAAI,cAAc,QAAS,EAC3E,KAAK,GAAG,IACb;AACV;AAAA,MACI,OAAO,6BAA6B,0BAC7B,OAAO,cAAc,WAAW,YAAY;AAAA,IAGvD;AACA,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,QAAQ;AAAA,EACjB;AAAA,EACA,IAAI,OAAO;AACP,WAAO;AAAA,EACX;AACJ;;;ACnCO,IAAM,qBAAwE;AAAA,EACjF,kBAAkB,YAAY,SAAS,OAAO;AAC1C,UAAM,IAAI,kCAAkC,YAAY,SAAS,KAAK;AAAA,EAC1E;AACJ;;;AFJA,SAAS,qBAAqB;AAGvB,SAAS,gBAAgB,QAAiF;AAC7G,SAAO,cAAgC;AAAA,IACnC,GAAG;AAAA,IACH,KAAK,mBAAmB,kBAAkB;AAAA,EAC9C,CAAC;AACL;;;AGXA,SAAS,2BAA2B;AAMpC,SAAS,iBACL,SACiD;AACjD,QAAM,MAA8B,CAAC;AACrC,aAAW,cAAc,SAAS;AAC9B,QAAI,WAAW,YAAY,CAAC,IAAI,QAAQ,UAAU;AAAA,EACtD;AACA,SAAO;AACX;AAEO,SAAS,0BAA0B,QAAkE;AACxG,SAAO,oBAAoB;AAAA,IACvB,GAAG;AAAA,IACH,SAAS;AAAA,MACL,GAAI,OAAO,UAAU,iBAAiB,OAAO,OAAO,IAAI;AAAA,MACxD,GAAI;AAAA;AAAA,QAEA,iBAAiB,MAAM,yBAAiB;AAAA,MAC5C;AAAA,IACJ;AAAA,EACJ,CAAC;AACL","sourcesContent":["export * from '@solana/keys';\nexport * from './rpc';\nexport * from './rpc-transport';\n","import { SolanaRpcMethods, createSolanaRpcApi } from '@solana/rpc-core';\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\n\nimport { createJsonRpc } from '@solana/rpc-transport';\nimport type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nexport function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods> {\n return createJsonRpc<SolanaRpcMethods>({\n ...config,\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n });\n}\n","export class SolanaJsonRpcIntegerOverflowError extends Error {\n readonly methodName: string;\n readonly keyPath: (number | string)[];\n readonly value: bigint;\n constructor(methodName: string, keyPath: (number | string)[], value: bigint) {\n const argPosition = (typeof keyPath[0] === 'number' ? keyPath[0] : parseInt(keyPath[0], 10)) + 1;\n let ordinal = '';\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n ordinal = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n ordinal = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n ordinal = argPosition + 'rd';\n } else {\n ordinal = argPosition + 'th';\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : null;\n super(\n `The ${ordinal} argument to the \\`${methodName}\\` RPC method` +\n `${path ? ` at path \\`${path}\\`` : ''} was \\`${value}\\`. This number is ` +\n 'unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.'\n );\n this.keyPath = keyPath;\n this.methodName = methodName;\n this.value = value;\n }\n get name() {\n return 'SolanaJsonRpcIntegerOverflowError';\n }\n}\n","import { createSolanaRpcApi } from '@solana/rpc-core';\nimport { SolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_CONFIG: Partial<Parameters<typeof createSolanaRpcApi>[0]> = {\n onIntegerOverflow(methodName, keyPath, value) {\n throw new SolanaJsonRpcIntegerOverflowError(methodName, keyPath, value);\n },\n};\n","import { createHttpTransport } from '@solana/rpc-transport';\nimport { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';\n\n/**\n * Lowercasing header names makes it easier to override user-supplied headers.\n */\nfunction normalizeHeaders<T extends Record<string, string>>(\n headers: T\n): { [K in keyof T & string as Lowercase<K>]: T[K] } {\n const out: Record<string, string> = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in keyof T & string as Lowercase<K>]: T[K] };\n}\n\nexport function createDefaultRpcTransport(config: Parameters<typeof createHttpTransport>[0]): IRpcTransport {\n return createHttpTransport({\n ...config,\n headers: {\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': `js/${__VERSION__}` ?? 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../build-scripts/env-shim.ts","../src/index.ts","../src/rpc.ts","../src/rpc-integer-overflow-error.ts","../src/rpc-default-config.ts","../src/cached-abortable-iterable.ts","../src/rpc-subscription-coalescer.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","../src/transaction-confirmation.ts","../src/transaction-confirmation-strategy-blockheight.ts","../src/transaction-confirmation-strategy-nonce.ts","../src/transaction-confirmation-strategy-signature.ts"],"names":["registerIterableCleanup","deduplicationKey","pendingSubscription","pipe","fastStableStringify","args"],"mappings":"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","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';\nexport * from './transaction-confirmation';\nexport * from './transaction-confirmation-strategy-blockheight';\nexport * from './transaction-confirmation-strategy-nonce';\nexport * from './transaction-confirmation-strategy-signature';\n","import { pipe } from '@solana/functional';\nimport {\n createSolanaRpcApi,\n createSolanaRpcSubscriptionsApi,\n createSolanaRpcSubscriptionsApi_UNSTABLE,\n SolanaRpcMethods,\n SolanaRpcSubscriptions,\n SolanaRpcSubscriptionsUnstable,\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// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\n\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\nimport { getRpcSubscriptionsWithSubscriptionCoalescing } from './rpc-subscription-coalescer';\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 pipe(\n createJsonSubscriptionRpc({\n ...config,\n api: createSolanaRpcSubscriptionsApi(DEFAULT_RPC_CONFIG),\n }),\n rpcSubscriptions =>\n getRpcSubscriptionsWithSubscriptionCoalescing({\n getDeduplicationKey: (...args) => fastStableStringify(args),\n rpcSubscriptions,\n })\n );\n}\n\nexport function createSolanaRpcSubscriptions_UNSTABLE(\n config: Omit<Parameters<typeof createJsonSubscriptionRpc>[0], 'api'>\n): RpcSubscriptions<SolanaRpcSubscriptions & SolanaRpcSubscriptionsUnstable> {\n return createJsonSubscriptionRpc({\n ...config,\n api: createSolanaRpcSubscriptionsApi_UNSTABLE(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","type CacheEntry<TIterable extends AsyncIterable<unknown>> = {\n abortController: AbortController;\n iterable: Promise<TIterable> | TIterable;\n purgeScheduled: boolean;\n referenceCount: number;\n};\ntype CacheKey = string | symbol;\ntype Config<TInput extends unknown[], TIterable extends AsyncIterable<unknown>> = Readonly<{\n getAbortSignalFromInputArgs: (...args: TInput) => AbortSignal;\n getCacheEntryMissingError: (cacheKey: CacheKey) => Error;\n getCacheKeyFromInputArgs: (...args: TInput) =>\n | CacheKey\n // `undefined` implies 'do not cache'\n | undefined;\n onCacheHit: (iterable: TIterable, ...args: TInput) => Promise<void>;\n onCreateIterable: (abortSignal: AbortSignal, ...args: TInput) => Promise<TIterable>;\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 getCachedAbortableIterableFactory<TInput extends unknown[], TIterable extends AsyncIterable<unknown>>({\n getAbortSignalFromInputArgs,\n getCacheEntryMissingError,\n getCacheKeyFromInputArgs,\n onCacheHit,\n onCreateIterable,\n}: Config<TInput, TIterable>): (...args: TInput) => Promise<TIterable> {\n const cache = new Map<CacheKey, CacheEntry<TIterable>>();\n function getCacheEntryOrThrow(cacheKey: CacheKey) {\n const currentCacheEntry = cache.get(cacheKey);\n if (!currentCacheEntry) {\n throw getCacheEntryMissingError(cacheKey);\n }\n return currentCacheEntry;\n }\n return async (...args: TInput) => {\n const cacheKey = getCacheKeyFromInputArgs(...args);\n const signal = getAbortSignalFromInputArgs(...args);\n if (cacheKey === undefined) {\n return await onCreateIterable(signal, ...args);\n }\n const cleanup = () => {\n cache.delete(cacheKey);\n signal.removeEventListener('abort', handleAbort);\n };\n const handleAbort = () => {\n const cacheEntry = getCacheEntryOrThrow(cacheKey);\n if (cacheEntry.purgeScheduled !== true) {\n cacheEntry.purgeScheduled = true;\n globalThis.queueMicrotask(() => {\n cacheEntry.purgeScheduled = false;\n if (cacheEntry.referenceCount === 0) {\n cacheEntry.abortController.abort();\n cleanup();\n }\n });\n }\n cacheEntry.referenceCount--;\n };\n signal.addEventListener('abort', handleAbort);\n try {\n const cacheEntry = cache.get(cacheKey);\n if (!cacheEntry) {\n const singletonAbortController = new AbortController();\n const newIterablePromise = onCreateIterable(singletonAbortController.signal, ...args);\n const newCacheEntry: CacheEntry<TIterable> = {\n abortController: singletonAbortController,\n iterable: newIterablePromise,\n purgeScheduled: false,\n referenceCount: 1,\n };\n cache.set(cacheKey, newCacheEntry);\n const newIterable = await newIterablePromise;\n registerIterableCleanup(newIterable, cleanup);\n newCacheEntry.iterable = newIterable;\n return newIterable;\n } else {\n cacheEntry.referenceCount++;\n const iterableOrIterablePromise = cacheEntry.iterable;\n const cachedIterable =\n 'then' in iterableOrIterablePromise ? await iterableOrIterablePromise : iterableOrIterablePromise;\n await onCacheHit(cachedIterable, ...args);\n return cachedIterable;\n }\n } catch (e) {\n cleanup();\n throw e;\n }\n };\n}\n","import { PendingRpcSubscription, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\nimport { getCachedAbortableIterableFactory } from './cached-abortable-iterable';\n\ntype CacheKey = string | undefined;\ntype Config<TRpcSubscriptionsMethods> = Readonly<{\n getDeduplicationKey: GetDeduplicationKeyFn;\n rpcSubscriptions: RpcSubscriptions<TRpcSubscriptionsMethods>;\n}>;\ntype GetDeduplicationKeyFn = (subscriptionMethod: string | symbol, payload: unknown) => CacheKey;\n\nconst EXPLICIT_ABORT_TOKEN = Symbol(\n __DEV__\n ? \"This symbol is thrown from a subscription's iterator when the subscription is \" +\n 'explicitly aborted by the user'\n : 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 getRpcSubscriptionsWithSubscriptionCoalescing<TRpcSubscriptionsMethods>({\n getDeduplicationKey,\n rpcSubscriptions,\n}: Config<TRpcSubscriptionsMethods>): RpcSubscriptions<TRpcSubscriptionsMethods> {\n const cache = new Map<CacheKey, PendingRpcSubscription<unknown>>();\n return new Proxy(rpcSubscriptions, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n const subscriptionMethod = Reflect.get(target, p, receiver);\n if (typeof subscriptionMethod !== 'function') {\n return subscriptionMethod;\n }\n return function (...rawParams: unknown[]) {\n const deduplicationKey = getDeduplicationKey(p, rawParams);\n if (deduplicationKey === undefined) {\n return (subscriptionMethod as CallableFunction)(...rawParams);\n }\n if (cache.has(deduplicationKey)) {\n return cache.get(deduplicationKey)!;\n }\n const iterableFactory = getCachedAbortableIterableFactory<\n Parameters<PendingRpcSubscription<unknown>['subscribe']>,\n AsyncIterable<unknown>\n >({\n getAbortSignalFromInputArgs: ({ abortSignal }) => abortSignal,\n getCacheEntryMissingError(deduplicationKey) {\n // TODO: Coded error.\n return new Error(\n `Found no cache entry for subscription with deduplication key \\`${deduplicationKey?.toString()}\\``\n );\n },\n getCacheKeyFromInputArgs: () => deduplicationKey,\n async onCacheHit(_iterable, _config) {\n /**\n * This transport's goal is to prevent duplicate subscriptions from\n * being made. If a cached iterable] is found, do not send the subscribe\n * message again.\n */\n },\n async onCreateIterable(abortSignal, config) {\n const pendingSubscription = (subscriptionMethod as CallableFunction)(\n ...rawParams\n ) as PendingRpcSubscription<unknown>;\n const iterable = await pendingSubscription.subscribe({\n ...config,\n abortSignal,\n });\n registerIterableCleanup(iterable, () => {\n cache.delete(deduplicationKey);\n });\n return iterable;\n },\n });\n const pendingSubscription: PendingRpcSubscription<unknown> = {\n async subscribe(...args) {\n const iterable = await iterableFactory(...args);\n const { abortSignal } = args[0];\n let abortPromise;\n return {\n ...iterable,\n async *[Symbol.asyncIterator]() {\n abortPromise ||= abortSignal.aborted\n ? Promise.reject(EXPLICIT_ABORT_TOKEN)\n : new Promise<never>((_, reject) => {\n abortSignal.addEventListener('abort', () => {\n reject(EXPLICIT_ABORT_TOKEN);\n });\n });\n try {\n const iterator = iterable[Symbol.asyncIterator]();\n while (true) {\n const iteratorResult = await Promise.race([iterator.next(), abortPromise]);\n if (iteratorResult.done) {\n return;\n } else {\n yield iteratorResult.value;\n }\n }\n } catch (e) {\n if (e === EXPLICIT_ABORT_TOKEN) {\n return;\n }\n cache.delete(deduplicationKey);\n throw e;\n }\n },\n };\n },\n };\n cache.set(deduplicationKey, pendingSubscription);\n return pendingSubscription;\n };\n },\n });\n}\n","import { pipe } from '@solana/functional';\nimport { 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 pipe(\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 transport => getRpcTransportWithRequestCoalescing(transport, 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\nfunction isJsonRpcPayload(payload: unknown): payload is Readonly<{ method: string; params: unknown }> {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return false;\n }\n return (\n 'jsonrpc' in payload &&\n payload.jsonrpc === '2.0' &&\n 'method' in payload &&\n typeof payload.method === 'string' &&\n 'params' in payload\n );\n}\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n return isJsonRpcPayload(payload) ? fastStableStringify([payload.method, payload.params]) : undefined;\n}\n","import { pipe } from '@solana/functional';\nimport { 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 pipe(\n 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 transport =>\n getWebSocketTransportWithAutoping({\n intervalMs: intervalMs ?? 5_000,\n transport,\n }),\n transport =>\n getWebSocketTransportWithConnectionSharding({\n getShard,\n transport,\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\nimport { getCachedAbortableIterableFactory } from './cached-abortable-iterable';\n\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 | symbol;\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\nexport function getWebSocketTransportWithConnectionSharding({ getShard, transport }: Config): IRpcWebSocketTransport {\n return getCachedAbortableIterableFactory({\n getAbortSignalFromInputArgs: ({ signal }) => signal,\n getCacheEntryMissingError(shardKey) {\n // TODO: Coded error.\n return new Error(`Found no cache entry for connection with shard key \\`${shardKey?.toString()}\\``);\n },\n getCacheKeyFromInputArgs: ({ payload }) => (getShard ? getShard(payload) : NULL_SHARD_CACHE_KEY),\n onCacheHit: (connection, { payload }) => connection.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(payload),\n onCreateIterable: (abortSignal, config) =>\n transport({\n ...config,\n signal: abortSignal,\n }),\n });\n}\n","import type { Commitment } from '@solana/rpc-core';\nimport type { GetAccountInfoApi } from '@solana/rpc-core/dist/types/rpc-methods/getAccountInfo';\nimport type { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';\nimport type { AccountNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/account-notifications';\nimport type { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';\nimport type { SlotNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/slot-notifications';\nimport type { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport {\n getSignatureFromTransaction,\n IDurableNonceTransaction,\n ITransactionWithBlockhashLifetime,\n ITransactionWithFeePayer,\n ITransactionWithSignatures,\n} from '@solana/transactions';\n\nimport { createBlockHeightExceedencePromiseFactory } from './transaction-confirmation-strategy-blockheight';\nimport { createNonceInvalidationPromiseFactory } from './transaction-confirmation-strategy-nonce';\nimport { createSignatureConfirmationPromiseFactory } from './transaction-confirmation-strategy-signature';\n\ninterface BaseConfig {\n abortSignal: AbortSignal;\n commitment: Commitment;\n getSignatureConfirmationPromise: ReturnType<typeof createSignatureConfirmationPromiseFactory>;\n transaction: ITransactionWithFeePayer & ITransactionWithSignatures;\n}\n\ninterface DefaultDurableNonceTransactionConfirmerConfig {\n rpc: Rpc<GetSignatureStatusesApi & GetAccountInfoApi>;\n rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi & SignatureNotificationsApi>;\n}\n\ninterface DefaultTransactionConfirmerConfig {\n rpc: Rpc<GetSignatureStatusesApi>;\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi & SlotNotificationsApi>;\n}\n\ninterface WaitForTransactionWithBlockhashLifetimeConfirmationConfig extends BaseConfig {\n getBlockHeightExceedencePromise: ReturnType<typeof createBlockHeightExceedencePromiseFactory>;\n transaction: ITransactionWithFeePayer & ITransactionWithSignatures & ITransactionWithBlockhashLifetime;\n}\n\ninterface WaitForDurableNonceTransactionConfirmationConfig extends BaseConfig {\n getNonceInvalidationPromise: ReturnType<typeof createNonceInvalidationPromiseFactory>;\n transaction: ITransactionWithFeePayer & ITransactionWithSignatures & IDurableNonceTransaction;\n}\n\nasync function raceStrategies<TConfig extends BaseConfig>(\n config: TConfig,\n getSpecificStrategiesForRace: (config: TConfig) => readonly Promise<unknown>[]\n) {\n const { abortSignal: callerAbortSignal, commitment, getSignatureConfirmationPromise, transaction } = config;\n callerAbortSignal.throwIfAborted();\n const signature = getSignatureFromTransaction(transaction);\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n try {\n const specificStrategies = getSpecificStrategiesForRace({\n ...config,\n abortSignal: abortController.signal,\n });\n return await Promise.race([\n getSignatureConfirmationPromise({\n abortSignal: abortController.signal,\n commitment,\n signature,\n }),\n ...specificStrategies,\n ]);\n } finally {\n abortController.abort();\n }\n}\n\nexport function createDefaultDurableNonceTransactionConfirmer({\n rpc,\n rpcSubscriptions,\n}: DefaultDurableNonceTransactionConfirmerConfig) {\n const getNonceInvalidationPromise = createNonceInvalidationPromiseFactory(rpc, rpcSubscriptions);\n const getSignatureConfirmationPromise = createSignatureConfirmationPromiseFactory(rpc, rpcSubscriptions);\n return async function confirmTransaction(\n config: Omit<\n Parameters<typeof waitForDurableNonceTransactionConfirmation>[0],\n 'getNonceInvalidationPromise' | 'getSignatureConfirmationPromise'\n >\n ) {\n await waitForDurableNonceTransactionConfirmation({\n ...config,\n getNonceInvalidationPromise,\n getSignatureConfirmationPromise,\n });\n };\n}\n\nexport function createDefaultTransactionConfirmer({ rpc, rpcSubscriptions }: DefaultTransactionConfirmerConfig) {\n const getBlockHeightExceedencePromise = createBlockHeightExceedencePromiseFactory(rpcSubscriptions);\n const getSignatureConfirmationPromise = createSignatureConfirmationPromiseFactory(rpc, rpcSubscriptions);\n return async function confirmTransaction(\n config: Omit<\n Parameters<typeof waitForTransactionConfirmation>[0],\n 'getBlockHeightExceedencePromise' | 'getSignatureConfirmationPromise'\n >\n ) {\n await waitForTransactionConfirmation({\n ...config,\n getBlockHeightExceedencePromise,\n getSignatureConfirmationPromise,\n });\n };\n}\n\nexport async function waitForDurableNonceTransactionConfirmation(\n config: WaitForDurableNonceTransactionConfirmationConfig\n): Promise<void> {\n await raceStrategies(\n config,\n function getSpecificStrategiesForRace({ abortSignal, commitment, getNonceInvalidationPromise, transaction }) {\n return [\n getNonceInvalidationPromise({\n abortSignal,\n commitment,\n currentNonceValue: transaction.lifetimeConstraint.nonce,\n nonceAccountAddress: transaction.instructions[0].accounts[0].address,\n }),\n ];\n }\n );\n}\n\nexport async function waitForTransactionConfirmation(\n config: WaitForTransactionWithBlockhashLifetimeConfirmationConfig\n): Promise<void> {\n await raceStrategies(\n config,\n function getSpecificStrategiesForRace({ abortSignal, getBlockHeightExceedencePromise, transaction }) {\n return [\n getBlockHeightExceedencePromise({\n abortSignal,\n lastValidBlockHeight: transaction.lifetimeConstraint.lastValidBlockHeight,\n }),\n ];\n }\n );\n}\n","import { Slot } from '@solana/rpc-core/dist/types/rpc-methods/common';\nimport type { SlotNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/slot-notifications';\nimport { RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\n\ntype GetBlockHeightExceedencePromiseFn = (config: {\n abortSignal: AbortSignal;\n lastValidBlockHeight: Slot;\n}) => Promise<void>;\n\nexport function createBlockHeightExceedencePromiseFactory(\n rpcSubscriptions: RpcSubscriptions<SlotNotificationsApi>\n): GetBlockHeightExceedencePromiseFn {\n return async function getBlockHeightExceedencePromise({ abortSignal: callerAbortSignal, lastValidBlockHeight }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n const slotNotifications = await rpcSubscriptions\n .slotNotifications()\n .subscribe({ abortSignal: abortController.signal });\n try {\n for await (const slotNotification of slotNotifications) {\n if (slotNotification.slot > lastValidBlockHeight) {\n // TODO: Coded error.\n throw new Error(\n 'The network has progressed past the last block for which this transaction ' +\n 'could have committed.'\n );\n }\n }\n } finally {\n abortController.abort();\n }\n };\n}\n","import { base58, base64 } from '@metaplex-foundation/umi-serializers';\nimport { Base58EncodedAddress } from '@solana/addresses';\nimport { Commitment } from '@solana/rpc-core';\nimport { Base64EncodedDataResponse } from '@solana/rpc-core/dist/types/rpc-methods/common';\nimport { GetAccountInfoApi } from '@solana/rpc-core/dist/types/rpc-methods/getAccountInfo';\nimport { AccountNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/account-notifications';\nimport { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport { Nonce } from '@solana/transactions';\n\ntype GetNonceInvalidationPromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment: Commitment;\n currentNonceValue: Nonce;\n nonceAccountAddress: Base58EncodedAddress;\n}) => Promise<void>;\n\nconst NONCE_VALUE_OFFSET =\n 4 + // version(u32)\n 4 + // state(u32)\n 32; // nonce authority(pubkey)\n// Then comes the nonce value.\n\nexport function createNonceInvalidationPromiseFactory(\n rpc: Rpc<GetAccountInfoApi>,\n rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi>\n): GetNonceInvalidationPromiseFn {\n return async function getNonceInvalidationPromise({\n abortSignal: callerAbortSignal,\n commitment,\n currentNonceValue,\n nonceAccountAddress,\n }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n /**\n * STEP 1: Set up a subscription for nonce account changes.\n */\n const accountNotifications = await rpcSubscriptions\n .accountNotifications(nonceAccountAddress, { commitment, encoding: 'base64' })\n .subscribe({ abortSignal: abortController.signal });\n function getNonceFromAccountData([base64EncodedBytes]: Base64EncodedDataResponse): Nonce {\n const data = base64.serialize(base64EncodedBytes);\n const nonceValueBytes = data.slice(NONCE_VALUE_OFFSET, NONCE_VALUE_OFFSET + 32);\n return base58.deserialize(nonceValueBytes)[0] as Nonce;\n }\n const nonceAccountDidAdvancePromise = (async () => {\n for await (const accountNotification of accountNotifications) {\n const nonceValue = getNonceFromAccountData(accountNotification.value.data);\n if (nonceValue !== currentNonceValue) {\n throw new Error(\n `The nonce \\`${currentNonceValue}\\` is no longer valid. It has advanced ` +\n `to \\`${nonceValue}\\`.`\n );\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current nonce\n * value to check if it has already been advanced.\n */\n const nonceIsAlreadyInvalidPromise = (async () => {\n const { value: nonceAccount } = await rpc\n .getAccountInfo(nonceAccountAddress, {\n commitment,\n dataSlice: { length: 32, offset: NONCE_VALUE_OFFSET },\n encoding: 'base58',\n })\n .send({ abortSignal: abortController.signal });\n if (!nonceAccount) {\n throw new Error(`No nonce account could be found at address \\`${nonceAccountAddress}\\`.`);\n }\n const nonceValue =\n // This works because we asked for the exact slice of data representing the nonce\n // value, and furthermore asked for it in `base58` encoding.\n nonceAccount.data[0] as unknown as Nonce;\n if (nonceValue !== currentNonceValue) {\n throw new Error(\n `The nonce \\`${currentNonceValue}\\` is no longer valid. It has advanced to \\`${nonceValue}\\`.`\n );\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await Promise.race([nonceAccountDidAdvancePromise, nonceIsAlreadyInvalidPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n","import { Commitment, commitmentComparator } from '@solana/rpc-core';\nimport { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';\nimport { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';\nimport { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';\nimport { TransactionSignature } from '@solana/transactions';\n\ntype GetSignatureConfirmationPromiseFn = (config: {\n abortSignal: AbortSignal;\n commitment: Commitment;\n signature: TransactionSignature;\n}) => Promise<void>;\n\nexport function createSignatureConfirmationPromiseFactory(\n rpc: Rpc<GetSignatureStatusesApi>,\n rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi>\n): GetSignatureConfirmationPromiseFn {\n return async function getSignatureConfirmationPromise({ abortSignal: callerAbortSignal, commitment, signature }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n /**\n * STEP 1: Set up a subscription for signature changes.\n */\n const signatureStatusNotifications = await rpcSubscriptions\n .signatureNotifications(signature, { commitment })\n .subscribe({ abortSignal: abortController.signal });\n const signatureDidCommitPromise = (async () => {\n for await (const signatureStatusNotification of signatureStatusNotifications) {\n if (signatureStatusNotification.value.err) {\n // TODO: Coded error.\n throw new Error(`The transaction with signature \\`${signature}\\` failed.`, {\n cause: signatureStatusNotification.value.err,\n });\n } else {\n return;\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current status.\n */\n const signatureStatusLookupPromise = (async () => {\n const { value: signatureStatusResults } = await rpc\n .getSignatureStatuses([signature])\n .send({ abortSignal: abortController.signal });\n const signatureStatus = signatureStatusResults[0];\n if (\n signatureStatus &&\n signatureStatus.confirmationStatus &&\n commitmentComparator(signatureStatus.confirmationStatus, commitment) >= 0\n ) {\n return;\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await Promise.race([signatureDidCommitPromise, signatureStatusLookupPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n"]}
|
|
@@ -2,11 +2,60 @@ this.globalThis = this.globalThis || {};
|
|
|
2
2
|
this.globalThis.solanaWeb3 = (function (exports) {
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
5
|
-
var G=Object.create;var C=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var Y=(e,r)=>()=>(e&&(r=e(e=0)),r);var I=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var B=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of W(r))!X.call(e,o)&&o!==t&&C(e,o,{get:()=>r[o],enumerable:!(n=V(r,o))||n.enumerable});return e};var Q=(e,r,t)=>(t=e!=null?G(k(e)):{},B(r||!e||!e.__esModule?C(t,"default",{value:e,enumerable:!0}):t,e));var i=Y(()=>{});var H=I((Ee,D)=>{i();function Z(e){if(e.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),t=0;t<r.length;t++)r[t]=255;for(var n=0;n<e.length;n++){var o=e.charAt(n),c=o.charCodeAt(0);if(r[c]!==255)throw new TypeError(o+" is ambiguous");r[c]=n;}var a=e.length,p=e.charAt(0),f=Math.log(a)/Math.log(256),R=Math.log(256)/Math.log(a);function g(s){if(s instanceof Uint8Array||(ArrayBuffer.isView(s)?s=new Uint8Array(s.buffer,s.byteOffset,s.byteLength):Array.isArray(s)&&(s=Uint8Array.from(s))),!(s instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(s.length===0)return "";for(var u=0,N=0,h=0,m=s.length;h!==m&&s[h]===0;)h++,u++;for(var w=(m-h)*R+1>>>0,l=new Uint8Array(w);h!==m;){for(var y=s[h],b=0,d=w-1;(y!==0||b<N)&&d!==-1;d--,b++)y+=256*l[d]>>>0,l[d]=y%a>>>0,y=y/a>>>0;if(y!==0)throw new Error("Non-zero carry");N=b,h++;}for(var E=w-N;E!==w&&l[E]===0;)E++;for(var S=p.repeat(u);E<w;++E)S+=e.charAt(l[E]);return S}function O(s){if(typeof s!="string")throw new TypeError("Expected String");if(s.length===0)return new Uint8Array;for(var u=0,N=0,h=0;s[u]===p;)N++,u++;for(var m=(s.length-u)*f+1>>>0,w=new Uint8Array(m);s[u];){var l=r[s.charCodeAt(u)];if(l===255)return;for(var y=0,b=m-1;(l!==0||y<h)&&b!==-1;b--,y++)l+=a*w[b]>>>0,w[b]=l%256>>>0,l=l/256>>>0;if(l!==0)throw new Error("Non-zero carry");h=y,u++;}for(var d=m-h;d!==m&&w[d]===0;)d++;for(var E=new Uint8Array(N+(m-d)),S=N;d!==m;)E[S++]=w[d++];return E}function q(s){var u=O(s);if(u)return u;throw new Error("Non-base"+a+" character")}return {encode:g,decodeUnsafe:O,decode:q}}D.exports=Z;});var L=I((be,U)=>{i();var ee=H(),re="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";U.exports=ee(re);});i();i();var M=Q(L(),1);function Ne(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=M.default.decode(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})}}i();i();function v(e,r,t){if(Array.isArray(e))return e.map((n,o)=>v(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]=v(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 te(e,r){return v(e,[],r)}var F={},ne={getInflationReward:[[F,"commission"]]};function P(e,r){return e.filter(t=>t[0]===F&&typeof r=="number"||t[0]===r).map(t=>t.slice(1))}function _(e,r){if(Array.isArray(e))return e.map((t,n)=>{let o=P(r,n);return _(t,o)});if(typeof e=="object"&&e!==null){let t={};for(let[n,o]of Object.entries(e)){let c=P(r,n);t[n]=_(o,c);}return t}else return typeof e=="number"&&r.length===0?BigInt(e):e}function oe(e,r){let t=r?ne[r]:void 0;return _(e,t??[])}function $(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...r){let[t,n]=r,o=n.toString();return function(...c){let a=e?.onIntegerOverflow,p=te(c,a?(f,R)=>a(o,f,R):void 0);return {methodName:o,params:p,responseProcessor:f=>oe(f,o)}}}})}i();i();var T=class extends Error{constructor(t,n,o){let c=(typeof n[0]=="number"?n[0]:parseInt(n[0],10))+1,a="",p=c%10,f=c%100;p==1&&f!=11?a=c+"st":p==2&&f!=12?a=c+"nd":p==3&&f!=13?a=c+"rd":a=c+"th";let R=n.length>1?n.slice(1).map(g=>typeof g=="number"?`[${g}]`:g).join("."):null;super(`The ${a} argument to the \`${t}\` RPC method${R?` at path \`${R}\``:""} 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 j={onIntegerOverflow(e,r,t){throw new T(e,r,t)}};i();var se=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"}},x=0;function ae(){let e=x;return x=(x+1)%Number.MAX_SAFE_INTEGER,e}function ie(e,r){return {id:ae(),jsonrpc:"2.0",method:e,params:r}}function ce(e,r){return {async send(t){let{methodName:n,params:o,responseProcessor:c}=r,a=ie(n,o),p=await e.transport({payload:a,signal:t?.abortSignal});if("error"in p)throw new se(p.error);return c?c(p.result):p.result}}}function pe(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(r,t,n){return function(...o){let c=t.toString(),a=Reflect.get(r,c,n),p=a?a(...o):{methodName:c,params:o};return ce(e,p)}}})}function z(e){return pe(e)}var fe=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 de(e){let r={};for(let t in e)r[t.toLowerCase()]=e[t];return r}var ge=globalThis.fetch;function J({httpAgentNodeOnly:e,headers:r,url:t}){let n=void 0;let o=r&&de(r);return async function({payload:a,signal:p}){let f=JSON.stringify(a),R={agent:n,body:f,headers:{...o,accept:"application/json","content-length":f.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:p},g=await ge(t,R);if(!g.ok)throw new fe({message:g.statusText,statusCode:g.status});return await g.json()}}function Ke(e){return z({...e,api:$(j)})}i();function me(e){let r={};for(let t in e)r[t.toLowerCase()]=e[t];return r}function Ge(e){return J({...e,headers:{...e.headers?me(e.headers):void 0,"solana-client":"js/2.0.0-development"}})}
|
|
5
|
+
var Ot=Object.create;var be=Object.defineProperty;var Dt=Object.getOwnPropertyDescriptor;var Ft=Object.getOwnPropertyNames;var $t=Object.getPrototypeOf,Wt=Object.prototype.hasOwnProperty;var Ut=(e,t,r)=>t in e?be(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Mt=(e,t)=>()=>(e&&(t=e(e=0)),t);var Kt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ht=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ft(t))!Wt.call(e,n)&&n!==r&&be(e,n,{get:()=>t[n],enumerable:!(o=Dt(t,n))||o.enumerable});return e};var De=(e,t,r)=>(r=e!=null?Ot($t(e)):{},Ht(t||!e||!e.__esModule?be(r,"default",{value:e,enumerable:!0}):r,e));var I=(e,t,r)=>(Ut(e,typeof t!="symbol"?t+"":t,r),r);var u=Mt(()=>{});var _e=Kt((as,It)=>{u();var Zr=Object.prototype.toString,Qr=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};function te(e,t){var r,o,n,i,s,a,l;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 te(e.toJSON(),t);if(l=Zr.call(e),l==="[object Array]"){for(n="[",o=e.length-1,r=0;r<o;r++)n+=te(e[r],!0)+",";return o>-1&&(n+=te(e[r],!0)),n+"]"}else if(l==="[object Object]"){for(i=Qr(e).sort(),o=i.length,n="",r=0;r<o;)s=i[r],a=te(e[s],!1),a!==void 0&&(n&&(n+=","),n+=JSON.stringify(s)+":"+a),r++;return "{"+n+"}"}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}}It.exports=function(e){var t=te(e,!1);if(t!==void 0)return ""+t};});u();u();u();u();u();var z=e=>{let t=e.reduce((n,i)=>n+i.length,0),r=new Uint8Array(t),o=0;return e.forEach(n=>{r.set(n,o),o+=n.length;}),r},Fe=(e,t)=>{if(e.length>=t)return e;let r=new Uint8Array(t).fill(0);return r.set(e),r},re=(e,t)=>Fe(e.slice(0,t),t);u();var _=class extends Error{constructor(r){super(`Serializer [${r}] cannot deserialize empty buffers.`);I(this,"name","DeserializingEmptyBufferError");}},C=class extends Error{constructor(r,o,n){super(`Serializer [${r}] expected ${o} bytes, got ${n}.`);I(this,"name","NotEnoughBytesError");}},D=class extends Error{constructor(r){r??(r="Expected a fixed-size serializer, got a variable-size one.");super(r);I(this,"name","ExpectedFixedSizeSerializerError");}};u();function V(e,t,r){return {description:r??`fixed(${t}, ${e.description})`,fixedSize:t,maxSize:t,serialize:o=>re(e.serialize(o),t),deserialize:(o,n=0)=>{if(o=o.slice(n,n+t),o.length<t)throw new C("fixSerializer",t,o.length);e.fixedSize!==null&&(o=re(o,e.fixedSize));let[i]=e.deserialize(o,0);return [i,n+t]}}}u();function $(e,t,r){return {description:e.description,fixedSize:e.fixedSize,maxSize:e.maxSize,serialize:o=>e.serialize(t(o)),deserialize:(o,n=0)=>{let[i,s]=e.deserialize(o,n);return r?[r(i,o,n),s]:[i,s]}}}u();u();u();var W=class extends Error{constructor(r,o,n){let i=`Expected a string of base ${o}, got [${r}].`;super(i);I(this,"name","InvalidBaseStringError");this.cause=n;}};var $e=e=>{let t=e.length,r=BigInt(t);return {description:`base${t}`,fixedSize:null,maxSize:null,serialize(o){if(!o.match(new RegExp(`^[${e}]*$`)))throw new W(o,t);if(o==="")return new Uint8Array;let n=[...o],i=n.findIndex(p=>p!==e[0]);i=i===-1?n.length:i;let s=Array(i).fill(0);if(i===n.length)return Uint8Array.from(s);let a=n.slice(i),l=0n,d=1n;for(let p=a.length-1;p>=0;p-=1)l+=d*BigInt(e.indexOf(a[p])),d*=r;let f=[];for(;l>0n;)f.unshift(Number(l%256n)),l/=256n;return Uint8Array.from(s.concat(f))},deserialize(o,n=0){if(o.length===0)return ["",0];let i=o.slice(n),s=i.findIndex(f=>f!==0);s=s===-1?i.length:s;let a=e[0].repeat(s);if(s===i.length)return [a,o.length];let l=i.slice(s).reduce((f,p)=>f*256n+BigInt(p),0n),d=[];for(;l>0n;)d.unshift(e[Number(l%r)]),l/=r;return [a+d.join(""),o.length]}}};u();var T=$e("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz");u();u();var We=(e,t)=>{let r=e.length,o=(n,i,s,a)=>{let l=[],d=0,f=0,p=(1<<s)-1;for(let g of n)for(d=d<<i|g,f+=i;f>=s;)f-=s,l.push(d>>f&p);return a&&f>0&&l.push(d<<s-f&p),l};return {description:`base${r}`,fixedSize:null,maxSize:null,serialize(n){if(!n.match(new RegExp(`^[${e}]*$`)))throw new W(n,r);if(n==="")return new Uint8Array;let i=[...n].map(a=>e.indexOf(a)),s=o(i,t,8,!1);return Uint8Array.from(s)},deserialize(n,i=0){if(n.length===0)return ["",0];let s=[...n.slice(i)];return [o(s,8,t,!0).map(l=>e[l]).join(""),n.length]}}};var he=$(We("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",6),e=>e.replace(/=/g,""),e=>e.padEnd(Math.ceil(e.length/4)*4,"="));u();var Ue=e=>e.replace(/\u0000/g,"");u();var ye={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 [Ue(r),e.length]}};u();u();var ne;(function(e){e.Little="le",e.Big="be";})(ne||(ne={}));u();var oe=class extends RangeError{constructor(r,o,n,i){super(`Serializer [${r}] expected number to be between ${o} and ${n}, got ${i}.`);I(this,"name","NumberOutOfRangeError");}};u();function ie(e){let t,r=e.name;return e.size>1&&(t=!("endian"in e.options)||e.options.endian===ne.Little,r+=t?"(le)":"(be)"),{description:e.options.description??r,fixedSize:e.size,maxSize:e.size,serialize(o){e.range&&Se(e.name,e.range[0],e.range[1],o);let n=new ArrayBuffer(e.size);return e.set(new DataView(n),o,t),new Uint8Array(n)},deserialize(o,n=0){let i=o.slice(n,n+e.size);Vt("i8",i,e.size);let s=jt(i);return [e.get(s,t),n+e.size]}}}var Gt=e=>e.buffer.slice(e.byteOffset,e.byteLength+e.byteOffset),jt=e=>new DataView(Gt(e)),Se=(e,t,r,o)=>{if(o<t||o>r)throw new oe(e,t,r,o)},Vt=(e,t,r)=>{if(t.length===0)throw new _(e);if(t.length<r)throw new C(e,r,t.length)};u();var P=(e={})=>ie({name:"u8",size:1,range:[0,+"0xff"],set:(t,r)=>t.setUint8(0,Number(r)),get:t=>t.getUint8(0),options:e});u();var q=(e={})=>ie({name:"u32",size:4,range:[0,+"0xffffffff"],set:(t,r,o)=>t.setUint32(0,Number(r),o),get:(t,r)=>t.getUint32(0,r),options:e});u();var k=(e={})=>({description:e.description??"shortU16",fixedSize:null,maxSize:3,serialize:t=>{Se("shortU16",0,65535,t);let r=[0];for(let o=0;;o+=1){let n=t>>o*7;if(n===0)break;let i=127&n;r[o]=i,o>0&&(r[o-1]|=128);}return new Uint8Array(r)},deserialize:(t,r=0)=>{let o=0,n=0;for(;++n;){let i=n-1,s=t[r+i],a=127&s;if(o|=a<<i*7,!(s&128))break}return [o,r+n]}});u();u();var se=class extends Error{constructor(r,o,n){super(`Expected [${r}] to have ${o} items, got ${n}.`);I(this,"name","InvalidNumberOfItemsError");}},ae=class extends Error{constructor(r,o){super(`The remainder of the buffer (${r} bytes) cannot be split into chunks of ${o} bytes. Serializers of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${r} modulo ${o} should be equal to zero.`);I(this,"name","InvalidArrayLikeRemainderSizeError");}},ce=class extends Error{constructor(r){super(`Unrecognized array-like serializer size: ${JSON.stringify(r)}`);I(this,"name","UnrecognizedArrayLikeSerializerSizeError");}};u();u();function U(e){return e.reduce((t,r)=>t===null||r===null?null:t+r,0)}function Me(e,t,r,o){if(typeof e=="number")return [e,o];if(typeof e=="object")return e.deserialize(r,o);if(e==="remainder"){let n=U(t);if(n===null)throw new D('Serializers of "remainder" size must have fixed-size items.');let i=r.slice(o).length;if(i%n!==0)throw new ae(i,n);return [i/n,o]}throw new ce(e)}function M(e){return typeof e=="object"?e.description:`${e}`}function we(e,t){if(typeof e!="number")return null;if(e===0)return 0;let r=U(t);return r===null?null:r*e}function Ke(e,t){return typeof e=="object"?e.serialize(t):new Uint8Array}function B(e,t={}){let r=t.size??q();if(r==="remainder"&&e.fixedSize===null)throw new D('Serializers of "remainder" size must have fixed-size items.');return {description:t.description??`array(${e.description}; ${M(r)})`,fixedSize:we(r,[e.fixedSize]),maxSize:we(r,[e.maxSize]),serialize:o=>{if(typeof r=="number"&&o.length!==r)throw new se("array",r,o.length);return z([Ke(r,o.length),...o.map(n=>e.serialize(n))])},deserialize:(o,n=0)=>{if(typeof r=="object"&&o.slice(n).length===0)return [[],n];let[i,s]=Me(r,[e.fixedSize],o,n);n=s;let a=[];for(let l=0;l<i;l+=1){let[d,f]=e.deserialize(o,n);a.push(d),n=f;}return [a,n]}}}u();function ue(e={}){let t=e.size??"variable",r=e.description??`bytes(${M(t)})`,o={description:r,fixedSize:null,maxSize:null,serialize:n=>new Uint8Array(n),deserialize:(n,i=0)=>{let s=n.slice(i);return [s,i+s.length]}};return t==="variable"?o:typeof t=="number"?V(o,t,r):{description:r,fixedSize:null,maxSize:null,serialize:n=>{let i=o.serialize(n),s=t.serialize(i.length);return z([s,i])},deserialize:(n,i=0)=>{if(n.slice(i).length===0)throw new _("bytes");let[s,a]=t.deserialize(n,i),l=Number(s);i=a;let d=n.slice(i,i+l);if(d.length<l)throw new C("bytes",l,d.length);let[f,p]=o.deserialize(d);return i+=p,[f,i]}}}u();function Y(e={}){let t=e.size??q(),r=e.encoding??ye,o=e.description??`string(${r.description}; ${M(t)})`;return t==="variable"?{...r,description:o}:typeof t=="number"?V(r,t,o):{description:o,fixedSize:null,maxSize:null,serialize:n=>{let i=r.serialize(n),s=t.serialize(i.length);return z([s,i])},deserialize:(n,i=0)=>{if(n.slice(i).length===0)throw new _("string");let[s,a]=t.deserialize(n,i),l=Number(s);i=a;let d=n.slice(i,i+l);if(d.length<l)throw new C("string",l,d.length);let[f,p]=r.deserialize(d);return i+=p,[f,i]}}}u();function O(e,t={}){let r=e.map(([o,n])=>`${String(o)}: ${n.description}`).join(", ");return {description:t.description??`struct(${r})`,fixedSize:U(e.map(([,o])=>o.fixedSize)),maxSize:U(e.map(([,o])=>o.maxSize)),serialize:o=>{let n=e.map(([i,s])=>s.serialize(o[i]));return z(n)},deserialize:(o,n=0)=>{let i={};return e.forEach(([s,a])=>{let[l,d]=a.deserialize(o,n);n=d,i[s]=l;}),[i,n]}}}u();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 F;async function qt(e){return F===void 0&&(F=new Promise(t=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{t(F=!1);}).then(()=>{t(F=!0);});})),typeof F=="boolean"?F:await F}async function He(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.digest!="function")throw new Error("No digest implementation could be found")}async function Ge(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.generateKey!="function")throw new Error("No key generation implementation could be found");if(!await qt(globalThis.crypto.subtle))throw new Error(`This runtime does not support the generation of Ed25519 key pairs.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.createSolanaRpc = Ke;
|
|
7
|
+
Install and import \`@solana/webcrypto-ed25519-polyfill\` before generating keys in environments that do not support Ed25519.
|
|
8
|
+
|
|
9
|
+
For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function je(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function Ve(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}async function qe(){if(J(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.verify!="function")throw new Error("No signature verification implementation could be found")}function Jt(e){return !(e.length<32||e.length>44||T.serialize(e).byteLength!==32)}function Xe(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=T.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 mi(e){return Xe(e),e}function K(e){return Y({description:e?.description??(""),encoding:T,size:32})}function de(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}var Xt=37095705934669439343138083508754565189542113879843219016388785533085940283555n,x=57896044618658097711785492504343953926634992332820282019728792003956564819949n,Ye=19681161376707505956807079304988542015446066515923890162744021073123829784752n;function R(e){let t=e%x;return t>=0n?t:x+t}function N(e,t){let r=e;for(;t-- >0n;)r*=r,r%=x;return r}function Zt(e){let r=e*e%x*e%x,o=N(r,2n)*r%x,n=N(o,1n)*e%x,i=N(n,5n)*n%x,s=N(i,10n)*i%x,a=N(s,20n)*s%x,l=N(a,40n)*a%x,d=N(l,80n)*l%x,f=N(d,80n)*l%x,p=N(f,10n)*i%x;return N(p,2n)*e%x}function Qt(e,t){let r=R(t*t*t),o=R(r*r*t),n=Zt(e*o),i=R(e*r*n),s=R(t*i*i),a=i,l=R(i*Ye),d=s===e,f=s===R(-e),p=s===R(-e*Ye);return d&&(i=a),(f||p)&&(i=l),(R(i)&1n)===1n&&(i=R(-i)),!d&&!f?null:i}function er(e,t){let r=R(e*e),o=R(r-1n),n=R(Xt*r+1n),i=Qt(o,n);if(i===null)return !1;let s=(t&128)!==0;return !(i===0n&&s)}function tr(e){let t=e.toString(16);return t.length===1?`0${t}`:t}function rr(e){let r=`0x${e.reduce((o,n,i)=>`${tr(i===31?n&-129:n)}${o}`,"")}`;return BigInt(r)}async function nr(e){if(e.byteLength!==32)return !1;let t=rr(e);return er(t,e[31])}function gi(e){return Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&typeof e[1]=="number"&&e[1]>=0&&e[1]<=255&&Jt(e[0])}function bi(e){if(!(Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&typeof e[1]=="number"))throw new Error("Expected given program derived address to have the following format: [Base58EncodedAddress, ProgramDerivedAddressBump].");if(e[1]<0||e[1]>255)throw new Error(`Expected program derived address bump to be in the range [0, 255], got: ${e[1]}.`);Xe(e[0]);}var Ze=32,Je=16,le=[80,114,111,103,114,97,109,68,101,114,105,118,101,100,65,100,100,114,101,115,115],Qe=class extends Error{};async function or({programAddress:e,seeds:t}){if(await He(),t.length>Je)throw new Error(`A maximum of ${Je} seeds may be supplied when creating an address`);let r,o=t.reduce((l,d,f)=>{let p=typeof d=="string"?(r||(r=new TextEncoder)).encode(d):d;if(p.byteLength>Ze)throw new Error(`The seed at index ${f} exceeds the maximum length of 32 bytes`);return l.push(...p),l},[]),n=K(),i=n.serialize(e),s=await crypto.subtle.digest("SHA-256",new Uint8Array([...o,...i,...le])),a=new Uint8Array(s);if(await nr(a))throw new Qe("Invalid seeds; point must fall off the Ed25519 curve");return n.deserialize(a)[0]}async function hi({programAddress:e,seeds:t}){let r=255;for(;r>0;)try{return [await or({programAddress:e,seeds:[...t,new Uint8Array([r])]}),r]}catch(o){if(o instanceof Qe)r--;else throw o}throw new Error("Unable to find a viable program address bump seed")}async function yi({baseAddress:e,programAddress:t,seed:r}){let{serialize:o,deserialize:n}=K(),i=typeof r=="string"?new TextEncoder().encode(r):r;if(i.byteLength>Ze)throw new Error("The seed exceeds the maximum length of 32 bytes");let s=o(t);if(s.length>=le.length&&s.slice(-le.length).every((d,f)=>d===le[f]))throw new Error("programAddress cannot end with the PDA marker");let a=await crypto.subtle.digest("SHA-256",new Uint8Array([...o(e),...i,...s])),l=new Uint8Array(a);return n(l)[0]}async function et(e){if(await je(),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]=K().deserialize(new Uint8Array(t));return r}u();var ir=(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))(ir||{}),tt=2,Ee=1;function Ai(e){return e&~tt}function xi(e){return e&~Ee}function Ii(e){return e>=2}function Ti(e){return (e&Ee)!==0}function Ri(e,t){return e|t}function Ci(e){return e|tt}function vi(e){return e|Ee}u();async function _i(){return await Ge(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function rt(e,t){await Ve();let r=await crypto.subtle.sign("Ed25519",e,t);return new Uint8Array(r)}async function Pi(e,t,r){return await qe(),await crypto.subtle.verify("Ed25519",e,t,r)}u();function Q(e){if("signatures"in e){let{signatures:t,...r}=e;return r}else return e}function $i(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=T.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 Wi(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 Ui({version:e}){let t={instructions:[],version:e};return Object.freeze(t),t}var v=(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))(v||{}),sr=1;function X(e){return e>=2}function Z(e){return (e&sr)!==0}function nt(e,t){return e|t}var st="SysvarRecentB1ockHashes11111111111111111111",at="11111111111111111111111111111111";function Mi(e){if(!ct(e))throw new Error("Transaction is not a durable nonce transaction")}function ar(e,t){return {accounts:[{address:e,role:v.WRITABLE},{address:st,role:v.READONLY},{address:t,role:v.READONLY_SIGNER}],data:new Uint8Array([4,0,0,0]),programAddress:at}}function cr(e){return e.programAddress===at&&e.data!=null&&ur(e.data)&&e.accounts?.length===3&&e.accounts[0].address!=null&&e.accounts[0].role===v.WRITABLE&&e.accounts[1].address===st&&e.accounts[1].role===v.READONLY&&e.accounts[2].address!=null&&e.accounts[2].role===v.READONLY_SIGNER}function ur(e){return e.byteLength===4&&e[0]===4&&e[1]===0&&e[2]===0&&e[3]===0}function ct(e){return "lifetimeConstraint"in e&&typeof e.lifetimeConstraint.nonce=="string"&&e.instructions[0]!=null&&cr(e.instructions[0])}function Ki({nonce:e,nonceAccountAddress:t,nonceAuthorityAddress:r},o){let n=ct(o);if(n&&o.lifetimeConstraint.nonce===e&&o.instructions[0].accounts[0].address===t&&o.instructions[0].accounts[2].address===r)return o;let i={...Q(o),instructions:[ar(t,r),...n?o.instructions.slice(1):o.instructions],lifetimeConstraint:{nonce:e}};return Object.freeze(i),i}function Hi(e,t){if("feePayer"in t&&e===t.feePayer)return t;let r={...Q(t),feePayer:e};return Object.freeze(r),r}function Gi(e,t){let r={...Q(t),instructions:[...t.instructions,e]};return Object.freeze(r),r}function ji(e,t){let r={...Q(t),instructions:[e,...t.instructions]};return Object.freeze(r),r}function ot(e,t,r){e[t]=r(e[t]??{role:v.READONLY});}var w=Symbol("AddressMapTypeProperty");function lr(e,t){let r={[e]:{[w]:0,role:v.WRITABLE_SIGNER}},o=new Set;for(let n of t){ot(r,n.programAddress,s=>{if(o.add(n.programAddress),w in s){if(Z(s.role))switch(s[w]){case 0:throw new Error(`This transaction includes an address (\`${n.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 (\`${n.programAddress}\`) which is both invoked and marked writable. Program addresses may not be writable.`)}if(s[w]===2)return s}return {[w]:2,role:v.READONLY}});let i;if(n.accounts)for(let s of n.accounts)ot(r,s.address,a=>{let{address:l,...d}=s;if(w in a)switch(a[w]){case 0:return a;case 1:{let f=nt(a.role,d.role);if("lookupTableAddress"in d){if(a.lookupTableAddress!==d.lookupTableAddress&&(i||(i=de()))(d.lookupTableAddress,a.lookupTableAddress)<0)return {[w]:1,...d,role:f}}else if(X(d.role))return {[w]:2,role:f};return a.role!==f?{...a,role:f}:a}case 2:{let f=nt(a.role,d.role);if(o.has(s.address)){if(Z(d.role))throw new Error(`This transaction includes an address (\`${s.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 d&&!X(a.role)?{...d,[w]:1,role:f}:a.role!==f?{...a,role:f}:a}}return "lookupTableAddress"in d?{...d,[w]:1}:{...d,[w]:2}});}return r}function dr(e){let t;return Object.entries(e).sort(([o,n],[i,s])=>{if(n[w]!==s[w]){if(n[w]===0)return -1;if(s[w]===0)return 1;if(n[w]===2)return -1;if(s[w]===2)return 1}let a=X(n.role);if(a!==X(s.role))return a?-1:1;let l=Z(n.role);return l!==Z(s.role)?l?-1:1:(t||(t=de()),n[w]===1&&s[w]===1&&n.lookupTableAddress!==s.lookupTableAddress?t(n.lookupTableAddress,s.lookupTableAddress):t(o,i))}).map(([o,n])=>({address:o,...n}))}function fr(e){var t;let r={};for(let o of e){if(!("lookupTableAddress"in o))continue;let n=r[t=o.lookupTableAddress]||(r[t]={readableIndices:[],writableIndices:[]});o.role===v.WRITABLE?n.writableIndices.push(o.addressIndex):n.readableIndices.push(o.addressIndex);}return Object.keys(r).sort(de()).map(o=>({lookupTableAddress:o,...r[o]}))}function pr(e){let t=0,r=0,o=0;for(let n of e){if("lookupTableAddress"in n)break;let i=Z(n.role);X(n.role)?(o++,i||r++):i||t++;}return {numReadonlyNonSignerAccounts:t,numReadonlySignerAccounts:r,numSignerAccounts:o}}function mr(e){let t={};for(let[r,o]of e.entries())t[o.address]=r;return t}function gr(e,t){let r=mr(t);return e.map(({accounts:o,data:n,programAddress:i})=>({programAddressIndex:r[i],...o?{accountIndices:o.map(({address:s})=>r[s])}:null,...n?{data:n}:null}))}function br(e){return "nonce"in e?e.nonce:e.blockhash}function hr(e){let t=e.findIndex(o=>"lookupTableAddress"in o);return (t===-1?e:e.slice(0,t)).map(({address:o})=>o)}function ut(e){let t=lr(e.feePayer,e.instructions),r=dr(t);return {...e.version!=="legacy"?{addressTableLookups:fr(r)}:null,header:pr(r),instructions:gr(e.instructions,r),lifetimeToken:br(e.lifetimeConstraint),staticAccounts:hr(r),version:e.version}}function yr(e){let t=ut(e),r;if("signatures"in e){r=[];for(let o=0;o<t.header.numSignerAccounts;o++)r[o]=e.signatures[t.staticAccounts[o]]??new Uint8Array(Array(64).fill(0));}else r=Array(t.header.numSignerAccounts).fill(new Uint8Array(Array(64).fill(0)));return {compiledMessage:t,signatures:r}}function Sr(){return O([["lookupTableAddress",K(void 0)],["writableIndices",B(P(),{...null,size:k()})],["readableIndices",B(P(),{...void 0,size:k()})]],void 0)}function wr(){return O([["numSignerAccounts",P(void 0)],["numReadonlySignerAccounts",P(void 0)],["numReadonlyNonSignerAccounts",P(void 0)]],void 0)}function Er(){return $(O([["programAddressIndex",P(void 0)],["accountIndices",B(P({description:""}),{description:"",size:k()})],["data",ue({description:"",size:k()})]]),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,...o}=e;return {...o,...t.length?{accountIndices:t}:null,...r.byteLength?{data:r}:null}})}function Ar(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 lt(e){return ()=>{throw Ar("decoder",e)}}var Ae=128,xr={description:"",fixedSize:null,maxSize:1};function Ir(e,t=0){let r=e[t];return r&Ae?[r^Ae,t+1]:["legacy",t]}function Tr(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|Ae])}function Rr(){return {...xr,deserialize:Ir,serialize:Tr}}var Cr={description:"",fixedSize:null,maxSize:null};function vr(e){return e.version==="legacy"?O(it()).serialize(e):$(O([...it(),["addressTableLookups",kr()]]),t=>t.version==="legacy"?t:{...t,addressTableLookups:t.addressTableLookups??[]}).serialize(e)}function it(){return [["version",Rr()],["header",wr()],["staticAccounts",B(K(),{description:"",size:k()})],["lifetimeToken",Y({description:"",encoding:T,size:32})],["instructions",B(Er(),{description:"",size:k()})]]}function kr(){return B(Sr(),{...null,size:k()})}function dt(){return {...Cr,deserialize:lt("CompiledMessage"),serialize:vr}}var Nr={description:"",fixedSize:null,maxSize:null};function zr(e){let t=yr(e);return O([["signatures",B(ue({size:64}),{...null,size:k()})],["compiledMessage",dt()]]).serialize(t)}function _r(){return {...Nr,deserialize:lt("CompiledMessage"),serialize:zr}}function Pr(e){try{if(e.length<64||e.length>88)throw new Error("Expected input string to decode to a byte array of length 64.");let r=T.serialize(e).byteLength;if(r!==64)throw new Error(`Expected input string to decode to a byte array of length 64. Actual length: ${r}`)}catch(t){throw new Error(`\`${e}\` is not a transaction signature`,{cause:t})}}function Vi(e){return !(e.length<64||e.length>88||T.serialize(e).byteLength!==64)}async function Br(e,t){let r=dt().serialize(e);return await rt(t,r)}function ft(e){let t=e.signatures[e.feePayer];if(!t)throw new Error("Could not determine this transaction's signature. Make sure that the transaction has been signed by its fee payer.");return t}async function qi(e,t){let r=ut(t),o="signatures"in t?{...t.signatures}:{},n=await Promise.all(e.map(s=>Promise.all([et(s.publicKey),Br(r,s.privateKey)])));for(let[s,a]of n)o[s]=a;let i={...t,signatures:o};return Object.freeze(i),i}function Yi(e){return Pr(e),e}function Ji(e){let t=_r().serialize(e);return btoa(String.fromCharCode(...t))}u();u();function H(e,...t){return t.reduce((r,o)=>o(r),e)}u();function pt(e){switch(e){case"finalized":return 2;case"confirmed":return 1;case"processed":return 0;default:return (t=>{throw new Error(`Unrecognized commitment \`${e}\`.`)})()}}function gt(e,t){return e===t?0:pt(e)<pt(t)?-1:1}function Te(e,t,r){if(Array.isArray(e))return e.map((o,n)=>Te(o,[...t,n],r));if(typeof e=="object"&&e!==null){let o={};for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&(o[n]=Te(e[n],[...t,n],r));return o}else return typeof e=="bigint"?(r&&(e>Number.MAX_SAFE_INTEGER||e<-Number.MAX_SAFE_INTEGER)&&r(t,e),Number(e)):e}function bt(e,t){return Te(e,[],t)}var c={},Re=[["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",c,"state","olderTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",c,"state","newerTransferFee","transferFeeBasisPoints"],["data","parsed","info","extensions",c,"state","preUpdateAverageRate"],["data","parsed","info","extensions",c,"state","currentRate"]],G=[...Re,["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",c,"confirmationCount"]],xe,Ie;function Lr(){return xe||(xe={accountNotifications:G.map(e=>["value",...e]),blockNotifications:[["value","block","blockTime"],["value","block","transactions",c,"meta","preTokenBalances",c,"accountIndex"],["value","block","transactions",c,"meta","preTokenBalances",c,"uiTokenAmount","decimals"],["value","block","transactions",c,"meta","postTokenBalances",c,"accountIndex"],["value","block","transactions",c,"meta","postTokenBalances",c,"uiTokenAmount","decimals"],["value","block","transactions",c,"meta","rewards",c,"commission"],["value","block","transactions",c,"meta","innerInstructions",c,"index"],["value","block","transactions",c,"meta","innerInstructions",c,"instructions",c,"programIdIndex"],["value","block","transactions",c,"meta","innerInstructions",c,"instructions",c,"accounts",c],["value","block","transactions",c,"transaction","message","addressTableLookups",c,"writableIndexes",c],["value","block","transactions",c,"transaction","message","addressTableLookups",c,"readonlyIndexes",c],["value","block","transactions",c,"transaction","message","instructions",c,"programIdIndex"],["value","block","transactions",c,"transaction","message","instructions",c,"accounts",c],["value","block","transactions",c,"transaction","message","header","numReadonlySignedAccounts"],["value","block","transactions",c,"transaction","message","header","numReadonlyUnsignedAccounts"],["value","block","transactions",c,"transaction","message","header","numRequiredSignatures"],["value","block","rewards",c,"commission"]],programNotifications:G.flatMap(e=>[["value",c,"account",...e],[c,"account",...e]])}),xe}function Or(){return Ie||(Ie={getAccountInfo:G.map(e=>["value",...e]),getBlock:[["blockTime"],["transactions",c,"meta","preTokenBalances",c,"accountIndex"],["transactions",c,"meta","preTokenBalances",c,"uiTokenAmount","decimals"],["transactions",c,"meta","postTokenBalances",c,"accountIndex"],["transactions",c,"meta","postTokenBalances",c,"uiTokenAmount","decimals"],["transactions",c,"meta","rewards",c,"commission"],["transactions",c,"meta","innerInstructions",c,"index"],["transactions",c,"meta","innerInstructions",c,"instructions",c,"programIdIndex"],["transactions",c,"meta","innerInstructions",c,"instructions",c,"accounts",c],["transactions",c,"transaction","message","addressTableLookups",c,"writableIndexes",c],["transactions",c,"transaction","message","addressTableLookups",c,"readonlyIndexes",c],["transactions",c,"transaction","message","instructions",c,"programIdIndex"],["transactions",c,"transaction","message","instructions",c,"accounts",c],["transactions",c,"transaction","message","header","numReadonlySignedAccounts"],["transactions",c,"transaction","message","header","numReadonlyUnsignedAccounts"],["transactions",c,"transaction","message","header","numRequiredSignatures"],["rewards",c,"commission"]],getBlockTime:[[]],getClusterNodes:[[c,"featureSet"],[c,"shredVersion"]],getInflationGovernor:[["initial"],["foundation"],["foundationTerm"],["taper"],["terminal"]],getInflationRate:[["foundation"],["total"],["validator"]],getInflationReward:[[c,"commission"]],getMultipleAccounts:G.map(e=>["value",c,...e]),getProgramAccounts:G.flatMap(e=>[["value",c,"account",...e],[c,"account",...e]]),getRecentPerformanceSamples:[[c,"samplePeriodSecs"]],getTokenAccountBalance:[["value","decimals"],["value","uiAmount"]],getTokenAccountsByDelegate:Re.map(e=>["value",c,"account",...e]),getTokenAccountsByOwner:Re.map(e=>["value",c,"account",...e]),getTokenLargestAccounts:[["value",c,"decimals"],["value",c,"uiAmount"]],getTokenSupply:[["value","decimals"],["value","uiAmount"]],getTransaction:[["meta","preTokenBalances",c,"accountIndex"],["meta","preTokenBalances",c,"uiTokenAmount","decimals"],["meta","postTokenBalances",c,"accountIndex"],["meta","postTokenBalances",c,"uiTokenAmount","decimals"],["meta","rewards",c,"commission"],["meta","innerInstructions",c,"index"],["meta","innerInstructions",c,"instructions",c,"programIdIndex"],["meta","innerInstructions",c,"instructions",c,"accounts",c],["transaction","message","addressTableLookups",c,"writableIndexes",c],["transaction","message","addressTableLookups",c,"readonlyIndexes",c],["transaction","message","instructions",c,"programIdIndex"],["transaction","message","instructions",c,"accounts",c],["transaction","message","header","numReadonlySignedAccounts"],["transaction","message","header","numReadonlyUnsignedAccounts"],["transaction","message","header","numRequiredSignatures"]],getVersion:[["feature-set"]],getVoteAccounts:[["current",c,"commission"],["delinquent",c,"commission"]],simulateTransaction:G.map(e=>["value","accounts",c,...e])}),Ie}function mt(e,t){return e.filter(r=>r[0]===c&&typeof t=="number"||r[0]===t).map(r=>r.slice(1))}function fe(e,t){if(Array.isArray(e))return e.map((r,o)=>{let n=mt(t,o);return fe(r,n)});if(typeof e=="object"&&e!==null){let r={};for(let[o,n]of Object.entries(e)){let i=mt(t,o);r[o]=fe(n,i);}return r}else return typeof e=="number"&&t.length===0&&Number.isInteger(e)?BigInt(e):e}function Dr(e,t){let r=t?Or()[t]:void 0;return fe(e,r??[])}function Fr(e,t){let r=t?Lr()[t]:void 0;return fe(e,r??[])}function ht(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[r,o]=t,n=o.toString();return function(...i){let s=e?.onIntegerOverflow,a=bt(i,s?(l,d)=>s(n,l,d):void 0);return {methodName:n,params:a,responseProcessor:l=>Dr(l,n)}}}})}function Ce(e){return new Proxy({},{defineProperty(){return !1},deleteProperty(){return !1},get(...t){let[r,o]=t,n=o.toString();return function(...i){let s=e?.onIntegerOverflow;return {params:bt(i,s?(l,d)=>s(n,l,d):void 0),responseProcessor:l=>Fr(l,n),subscribeMethodName:n.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:n.replace(/Notifications$/,"Unsubscribe")}}}})}function yt(e){return Ce(e)}u();var wt=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"}},ve=0;function $r(){let e=ve;return ve=(ve+1)%Number.MAX_SAFE_INTEGER,e}function Ne(e,t){return {id:$r(),jsonrpc:"2.0",method:e,params:t}}function Wr(e,t){return {async send(r){let{methodName:o,params:n,responseProcessor:i}=t,s=Ne(o,n),a=await e.transport({payload:s,signal:r?.abortSignal});if("error"in a)throw new wt(a.error);return i?i(a.result):a.result}}}function Ur(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,r,o){return function(...n){let i=r.toString(),s=Reflect.get(t,i,o),a=s?s(...n):{methodName:i,params:n};return Wr(e,a)}}})}function Et(e){return Ur(e)}function Mr(e,t){(async()=>{try{for await(let r of e);}catch{}finally{t();}})();}function Kr(e,{params:t,subscribeMethodName:r,unsubscribeMethodName:o,responseProcessor:n}){return {async subscribe({abortSignal:i}){i.throwIfAborted();let s;function a(){if(s!==void 0){let g=Ne(o,[s]);f.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(g).finally(()=>{l.abort();});}else l.abort();}i.addEventListener("abort",a);let l=new AbortController,d=Ne(r,t),f=await e.transport({payload:d,signal:l.signal});function p(){i.removeEventListener("abort",a);}Mr(f,p);for await(let g of f)if("id"in g&&g.id===d.id){if("error"in g)throw new wt(g.error);s=g.result;break}if(s==null)throw new Error("Failed to obtain a subscription id from the server");return {async*[Symbol.asyncIterator](){for await(let g of f){if(!("params"in g)||g.params.subscription!==s)continue;let y=g.params.result;yield n?n(y):y;}}}}}}function Hr(e){return new Proxy(e.api,{defineProperty(){return !1},deleteProperty(){return !1},get(t,r,o){return function(...n){let i=r.toString(),s=Reflect.get(t,i,o);if(r.toString().endsWith("Notifications")===!1&&!s)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=s?s(...n):{params:n,subscribeMethodName:i.replace(/Notifications$/,"Subscribe"),unsubscribeMethodName:i.replace(/Notifications$/,"Unsubscribe")};return Kr(e,a)}}})}function ze(e){return Hr(e)}var Gr=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 Jr(e){let t={};for(let r in e)t[r.toLowerCase()]=e[r];return t}function At({httpAgentNodeOnly:e,headers:t,url:r}){let o=void 0;let n=t&&Jr(t);return async function({payload:s,signal:a}){let l=JSON.stringify(s),d={agent:o,body:l,headers:{...n,accept:"application/json","content-length":l.length.toString(),"content-type":"application/json; charset=utf-8"},method:"POST",signal:a},f=await Gr(r,d);if(!f.ok)throw new jr({message:f.statusText,statusCode:f.status});return await f.json()}}var ee=globalThis.WebSocket,St=Symbol(void 0);async function Xr({sendBufferHighWatermark:e,signal:t,url:r}){return new Promise((o,n)=>{t.addEventListener("abort",a,{once:!0});let i=new Map;function s(h){let S=[...i.values()].filter(A=>A.__hasPolled).map(({onError:A})=>A);i.clear(),S.forEach(A=>{try{A(h);}catch{}});}function a(){s(St),b.readyState!==ee.CLOSED&&b.readyState!==ee.CLOSING&&b.close(1e3);}function l(h){p?.onCancel(),t.removeEventListener("abort",a),b.removeEventListener("close",l),b.removeEventListener("error",d),b.removeEventListener("open",g),b.removeEventListener("message",y),s(h);}function d(h){f||n(new Error("WebSocket failed to connect",{cause:h}));}let f=!1,p;function g(){f=!0,o({async send(h){let S=JSON.stringify(h);if(!p&&b.readyState===ee.OPEN&&b.bufferedAmount>e){let A,L=new Promise((j,Lt)=>{let Oe=setInterval(()=>{(b.readyState!==ee.OPEN||!(b.bufferedAmount>e))&&(clearInterval(Oe),p=void 0,j());},16);A=()=>{p=void 0,clearInterval(Oe),Lt(new Error("WebSocket was closed before payload could be sent"));};});p={onCancel:A,promise:L};}p&&await p.promise,b.send(S);},async*[Symbol.asyncIterator](){let h=Symbol();i.set(h,{__hasPolled:!1,queuedMessages:[]});try{for(;;){let S=i.get(h);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((L,j)=>{i.set(h,{__hasPolled:!0,onError:j,onMessage:L});});}catch(L){if(L===St)return;throw new Error("WebSocket connection closed",{cause:L})}}}finally{i.delete(h);}}});}function y({data:h}){let S=JSON.parse(h);i.forEach((A,L)=>{if(A.__hasPolled){let{onMessage:j}=A;i.set(L,{__hasPolled:!1,queuedMessages:[]}),j(S);}else A.queuedMessages.push(S);});}let b=new ee(r);b.addEventListener("close",l),b.addEventListener("error",d),b.addEventListener("open",g),b.addEventListener("message",y);})}function xt({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:o,signal:n}){n?.throwIfAborted();let i=await Xr({sendBufferHighWatermark:e,signal:n,url:t});return n?.throwIfAborted(),await i.send(o),{[Symbol.asyncIterator]:i[Symbol.asyncIterator].bind(i),send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:i.send.bind(i)}}}var Rt=De(_e(),1);u();u();var pe=class extends Error{constructor(r,o,n){let i=(typeof o[0]=="number"?o[0]:parseInt(o[0],10))+1,s="",a=i%10,l=i%100;a==1&&l!=11?s=i+"st":a==2&&l!=12?s=i+"nd":a==3&&l!=13?s=i+"rd":s=i+"th";let d=o.length>1?o.slice(1).map(f=>typeof f=="number"?`[${f}]`:f).join("."):null;super(`The ${s} argument to the \`${r}\` RPC method${d?` at path \`${d}\``:""} was \`${n}\`. This number is unsafe for use with the Solana JSON-RPC because it exceeds \`Number.MAX_SAFE_INTEGER\`.`);this.keyPath=o,this.methodName=r,this.value=n;}get name(){return "SolanaJsonRpcIntegerOverflowError"}};var me={onIntegerOverflow(e,t,r){throw new pe(e,t,r)}};u();u();function en(e,t){(async()=>{try{for await(let r of e);}catch{}finally{t();}})();}function ge({getAbortSignalFromInputArgs:e,getCacheEntryMissingError:t,getCacheKeyFromInputArgs:r,onCacheHit:o,onCreateIterable:n}){let i=new Map;function s(a){let l=i.get(a);if(!l)throw t(a);return l}return async(...a)=>{let l=r(...a),d=e(...a);if(l===void 0)return await n(d,...a);let f=()=>{i.delete(l),d.removeEventListener("abort",p);},p=()=>{let g=s(l);g.purgeScheduled!==!0&&(g.purgeScheduled=!0,globalThis.queueMicrotask(()=>{g.purgeScheduled=!1,g.referenceCount===0&&(g.abortController.abort(),f());})),g.referenceCount--;};d.addEventListener("abort",p);try{let g=i.get(l);if(g){g.referenceCount++;let y=g.iterable,b="then"in y?await y:y;return await o(b,...a),b}else {let y=new AbortController,b=n(y.signal,...a),h={abortController:y,iterable:b,purgeScheduled:!1,referenceCount:1};i.set(l,h);let S=await b;return en(S,f),h.iterable=S,S}}catch(g){throw f(),g}}}var Pe=Symbol(void 0);function tn(e,t){(async()=>{try{for await(let r of e);}catch{}finally{t();}})();}function Tt({getDeduplicationKey:e,rpcSubscriptions:t}){let r=new Map;return new Proxy(t,{defineProperty(){return !1},deleteProperty(){return !1},get(o,n,i){let s=Reflect.get(o,n,i);return typeof s!="function"?s:function(...a){let l=e(n,a);if(l===void 0)return s(...a);if(r.has(l))return r.get(l);let d=ge({getAbortSignalFromInputArgs:({abortSignal:p})=>p,getCacheEntryMissingError(p){return new Error(`Found no cache entry for subscription with deduplication key \`${p?.toString()}\``)},getCacheKeyFromInputArgs:()=>l,async onCacheHit(p,g){},async onCreateIterable(p,g){let b=await s(...a).subscribe({...g,abortSignal:p});return tn(b,()=>{r.delete(l);}),b}}),f={async subscribe(...p){let g=await d(...p),{abortSignal:y}=p[0],b;return {...g,async*[Symbol.asyncIterator](){b||(b=y.aborted?Promise.reject(Pe):new Promise((h,S)=>{y.addEventListener("abort",()=>{S(Pe);});}));try{let h=g[Symbol.asyncIterator]();for(;;){let S=await Promise.race([h.next(),b]);if(S.done)return;yield S.value;}}catch(h){if(h===Pe)return;throw r.delete(l),h}}}}};return r.set(l,f),f}}})}function Cs(e){return Et({...e,api:ht(me)})}function vs(e){return H(ze({...e,api:Ce(me)}),t=>Tt({getDeduplicationKey:(...r)=>(0, Rt.default)(r),rpcSubscriptions:t}))}function ks(e){return ze({...e,api:yt(me)})}u();u();function Ct(e,t){let r;return async function(n){let{payload:i,signal:s}=n,a=t(i);if(a===void 0)return await e(n);if(r||(Promise.resolve().then(()=>{r=void 0;}),r={}),r[a]==null){let d=new AbortController;r[a]={abortController:d,numConsumers:0,responsePromise:e({...n,signal:d.signal})};}let l=r[a];if(l.numConsumers++,s){let d=l.responsePromise;return await new Promise((f,p)=>{let g=y=>{s.removeEventListener("abort",g),l.numConsumers-=1,l.numConsumers===0&&l.abortController.abort();let b=new DOMException(y.target.reason,"AbortError");p(b);};s.addEventListener("abort",g),d.then(f).finally(()=>{s.removeEventListener("abort",g);});})}else return await l.responsePromise}}u();var vt=De(_e(),1);function rn(e){return e==null||typeof e!="object"||Array.isArray(e)?!1:"jsonrpc"in e&&e.jsonrpc==="2.0"&&"method"in e&&typeof e.method=="string"&&"params"in e}function kt(e){return rn(e)?(0, vt.default)([e.method,e.params]):void 0}function nn(e){let t={};for(let r in e)t[r.toLowerCase()]=e[r];return t}function Ws(e){return H(At({...e,headers:{...e.headers?nn(e.headers):void 0,"solana-client":"js/2.0.0-development"}}),t=>Ct(t,kt))}u();u();var on={jsonrpc:"2.0",method:"ping"};function Nt({intervalMs:e,transport:t}){let r=new Map;return async(...o)=>{let n=await t(...o),i;function s(){n.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(on);}function a(){clearInterval(i),i=setInterval(s,e);}if(r.has(n)===!1){r.set(n,{[Symbol.asyncIterator]:n[Symbol.asyncIterator].bind(n),send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:(...f)=>(a(),n.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(...f))}),(async()=>{try{for await(let f of n)a();}catch{}finally{r.delete(n),clearInterval(i),l&&globalThis.window.removeEventListener("offline",l),d&&globalThis.window.removeEventListener("online",d);}})(),globalThis.navigator.onLine&&a();let l,d;l=()=>{clearInterval(i);},d=()=>{s(),a();},globalThis.window.addEventListener("offline",l),globalThis.window.addEventListener("online",d);}return r.get(n)}}u();var sn=Symbol(void 0);function zt({getShard:e,transport:t}){return ge({getAbortSignalFromInputArgs:({signal:r})=>r,getCacheEntryMissingError(r){return new Error(`Found no cache entry for connection with shard key \`${r?.toString()}\``)},getCacheKeyFromInputArgs:({payload:r})=>e?e(r):sn,onCacheHit:(r,{payload:o})=>r.send_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(o),onCreateIterable:(r,o)=>t({...o,signal:r})})}function Zs(e){let{getShard:t,intervalMs:r,...o}=e;return H(xt({...o,sendBufferHighWatermark:e.sendBufferHighWatermark??131072}),n=>Nt({intervalMs:r??5e3,transport:n}),n=>zt({getShard:t,transport:n}))}u();u();function _t(e){return async function({abortSignal:r,lastValidBlockHeight:o}){let n=new AbortController;function i(){n.abort();}r.addEventListener("abort",i,{signal:n.signal});let s=await e.slotNotifications().subscribe({abortSignal:n.signal});try{for await(let a of s)if(a.slot>o)throw new Error("The network has progressed past the last block for which this transaction could have committed.")}finally{n.abort();}}}u();var Be=4+4+32;function Pt(e,t){return async function({abortSignal:o,commitment:n,currentNonceValue:i,nonceAccountAddress:s}){let a=new AbortController;function l(){a.abort();}o.addEventListener("abort",l,{signal:a.signal});let d=await t.accountNotifications(s,{commitment:n,encoding:"base64"}).subscribe({abortSignal:a.signal});function f([y]){let h=he.serialize(y).slice(Be,Be+32);return T.deserialize(h)[0]}let p=(async()=>{for await(let y of d){let b=f(y.value.data);if(b!==i)throw new Error(`The nonce \`${i}\` is no longer valid. It has advanced to \`${b}\`.`)}})(),g=(async()=>{let{value:y}=await e.getAccountInfo(s,{commitment:n,dataSlice:{length:32,offset:Be},encoding:"base58"}).send({abortSignal:a.signal});if(!y)throw new Error(`No nonce account could be found at address \`${s}\`.`);let b=y.data[0];if(b!==i)throw new Error(`The nonce \`${i}\` is no longer valid. It has advanced to \`${b}\`.`);await new Promise(()=>{});})();try{return await Promise.race([p,g])}finally{a.abort();}}}u();function Le(e,t){return async function({abortSignal:o,commitment:n,signature:i}){let s=new AbortController;function a(){s.abort();}o.addEventListener("abort",a,{signal:s.signal});let l=await t.signatureNotifications(i,{commitment:n}).subscribe({abortSignal:s.signal}),d=(async()=>{for await(let p of l){if(p.value.err)throw new Error(`The transaction with signature \`${i}\` failed.`,{cause:p.value.err});return}})(),f=(async()=>{let{value:p}=await e.getSignatureStatuses([i]).send({abortSignal:s.signal}),g=p[0];g&&g.confirmationStatus&>(g.confirmationStatus,n)>=0||await new Promise(()=>{});})();try{return await Promise.race([d,f])}finally{s.abort();}}}async function Bt(e,t){let{abortSignal:r,commitment:o,getSignatureConfirmationPromise:n,transaction:i}=e;r.throwIfAborted();let s=ft(i),a=new AbortController;function l(){a.abort();}r.addEventListener("abort",l,{signal:a.signal});try{let d=t({...e,abortSignal:a.signal});return await Promise.race([n({abortSignal:a.signal,commitment:o,signature:s}),...d])}finally{a.abort();}}function ya({rpc:e,rpcSubscriptions:t}){let r=Pt(e,t),o=Le(e,t);return async function(i){await an({...i,getNonceInvalidationPromise:r,getSignatureConfirmationPromise:o});}}function Sa({rpc:e,rpcSubscriptions:t}){let r=_t(t),o=Le(e,t);return async function(i){await cn({...i,getBlockHeightExceedencePromise:r,getSignatureConfirmationPromise:o});}}async function an(e){await Bt(e,function({abortSignal:r,commitment:o,getNonceInvalidationPromise:n,transaction:i}){return [n({abortSignal:r,commitment:o,currentNonceValue:i.lifetimeConstraint.nonce,nonceAccountAddress:i.instructions[0].accounts[0].address})]});}async function cn(e){await Bt(e,function({abortSignal:r,getBlockHeightExceedencePromise:o,transaction:n}){return [o({abortSignal:r,lastValidBlockHeight:n.lifetimeConstraint.lastValidBlockHeight})]});}
|
|
10
|
+
|
|
11
|
+
exports.AccountRole = ir;
|
|
12
|
+
exports.address = mi;
|
|
13
|
+
exports.appendTransactionInstruction = Gi;
|
|
14
|
+
exports.assertIsAddress = Xe;
|
|
15
|
+
exports.assertIsBlockhash = $i;
|
|
16
|
+
exports.assertIsDurableNonceTransaction = Mi;
|
|
17
|
+
exports.assertIsProgramDerivedAddress = bi;
|
|
18
|
+
exports.assertIsTransactionSignature = Pr;
|
|
19
|
+
exports.createAddressWithSeed = yi;
|
|
20
|
+
exports.createBlockHeightExceedencePromiseFactory = _t;
|
|
21
|
+
exports.createDefaultDurableNonceTransactionConfirmer = ya;
|
|
22
|
+
exports.createDefaultRpcSubscriptionsTransport = Zs;
|
|
23
|
+
exports.createDefaultRpcTransport = Ws;
|
|
24
|
+
exports.createDefaultTransactionConfirmer = Sa;
|
|
25
|
+
exports.createNonceInvalidationPromiseFactory = Pt;
|
|
26
|
+
exports.createSignatureConfirmationPromiseFactory = Le;
|
|
27
|
+
exports.createSolanaRpc = Cs;
|
|
28
|
+
exports.createSolanaRpcSubscriptions = vs;
|
|
29
|
+
exports.createSolanaRpcSubscriptions_UNSTABLE = ks;
|
|
30
|
+
exports.createTransaction = Ui;
|
|
31
|
+
exports.downgradeRoleToNonSigner = Ai;
|
|
32
|
+
exports.downgradeRoleToReadonly = xi;
|
|
33
|
+
exports.generateKeyPair = _i;
|
|
34
|
+
exports.getAddressCodec = K;
|
|
35
|
+
exports.getAddressComparator = de;
|
|
36
|
+
exports.getAddressFromPublicKey = et;
|
|
37
|
+
exports.getBase64EncodedWireTransaction = Ji;
|
|
38
|
+
exports.getProgramDerivedAddress = hi;
|
|
39
|
+
exports.getSignatureFromTransaction = ft;
|
|
40
|
+
exports.getTransactionEncoder = _r;
|
|
41
|
+
exports.isAddress = Jt;
|
|
42
|
+
exports.isProgramDerivedAddress = gi;
|
|
43
|
+
exports.isSignerRole = Ii;
|
|
44
|
+
exports.isTransactionSignature = Vi;
|
|
45
|
+
exports.isWritableRole = Ti;
|
|
46
|
+
exports.mergeRoles = Ri;
|
|
47
|
+
exports.prependTransactionInstruction = ji;
|
|
48
|
+
exports.setTransactionFeePayer = Hi;
|
|
49
|
+
exports.setTransactionLifetimeUsingBlockhash = Wi;
|
|
50
|
+
exports.setTransactionLifetimeUsingDurableNonce = Ki;
|
|
51
|
+
exports.signBytes = rt;
|
|
52
|
+
exports.signTransaction = qi;
|
|
53
|
+
exports.transactionSignature = Yi;
|
|
54
|
+
exports.upgradeRoleToSigner = Ci;
|
|
55
|
+
exports.upgradeRoleToWritable = vi;
|
|
56
|
+
exports.verifySignature = Pi;
|
|
57
|
+
exports.waitForDurableNonceTransactionConfirmation = an;
|
|
58
|
+
exports.waitForTransactionConfirmation = cn;
|
|
10
59
|
|
|
11
60
|
return exports;
|
|
12
61
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type CacheKey = string | symbol;
|
|
2
|
+
type Config<TInput extends unknown[], TIterable extends AsyncIterable<unknown>> = Readonly<{
|
|
3
|
+
getAbortSignalFromInputArgs: (...args: TInput) => AbortSignal;
|
|
4
|
+
getCacheEntryMissingError: (cacheKey: CacheKey) => Error;
|
|
5
|
+
getCacheKeyFromInputArgs: (...args: TInput) => CacheKey | undefined;
|
|
6
|
+
onCacheHit: (iterable: TIterable, ...args: TInput) => Promise<void>;
|
|
7
|
+
onCreateIterable: (abortSignal: AbortSignal, ...args: TInput) => Promise<TIterable>;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function getCachedAbortableIterableFactory<TInput extends unknown[], TIterable extends AsyncIterable<unknown>>({ getAbortSignalFromInputArgs, getCacheEntryMissingError, getCacheKeyFromInputArgs, onCacheHit, onCreateIterable, }: Config<TInput, TIterable>): (...args: TInput) => Promise<TIterable>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=cached-abortable-iterable.d.ts.map
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
export * from '@solana/addresses';
|
|
2
|
+
export * from '@solana/instructions';
|
|
1
3
|
export * from '@solana/keys';
|
|
4
|
+
export * from '@solana/transactions';
|
|
2
5
|
export * from './rpc';
|
|
3
6
|
export * from './rpc-transport';
|
|
7
|
+
export * from './rpc-websocket-transport';
|
|
8
|
+
export * from './transaction-confirmation';
|
|
9
|
+
export * from './transaction-confirmation-strategy-blockheight';
|
|
10
|
+
export * from './transaction-confirmation-strategy-nonce';
|
|
11
|
+
export * from './transaction-confirmation-strategy-signature';
|
|
4
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { IRpcTransport } from '@solana/rpc-transport/dist/types/transports/transport-types';
|
|
2
|
+
type GetDeduplicationKeyFn = (payload: unknown) => string | undefined;
|
|
3
|
+
export declare function getRpcTransportWithRequestCoalescing(transport: IRpcTransport, getDeduplicationKey: GetDeduplicationKeyFn): IRpcTransport;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=rpc-request-coalescer.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';
|
|
2
|
+
type CacheKey = string | undefined;
|
|
3
|
+
type Config<TRpcSubscriptionsMethods> = Readonly<{
|
|
4
|
+
getDeduplicationKey: GetDeduplicationKeyFn;
|
|
5
|
+
rpcSubscriptions: RpcSubscriptions<TRpcSubscriptionsMethods>;
|
|
6
|
+
}>;
|
|
7
|
+
type GetDeduplicationKeyFn = (subscriptionMethod: string | symbol, payload: unknown) => CacheKey;
|
|
8
|
+
export declare function getRpcSubscriptionsWithSubscriptionCoalescing<TRpcSubscriptionsMethods>({ getDeduplicationKey, rpcSubscriptions, }: Config<TRpcSubscriptionsMethods>): RpcSubscriptions<TRpcSubscriptionsMethods>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=rpc-subscription-coalescer.d.ts.map
|
|
@@ -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,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 | symbol;
|
|
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,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
|
package/dist/types/rpc.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { SolanaRpcMethods } from '@solana/rpc-core';
|
|
2
|
-
import { createJsonRpc } from '@solana/rpc-transport';
|
|
3
|
-
import type { Rpc } from '@solana/rpc-transport/dist/types/json-rpc-types';
|
|
1
|
+
import { SolanaRpcMethods, SolanaRpcSubscriptions, SolanaRpcSubscriptionsUnstable } from '@solana/rpc-core';
|
|
2
|
+
import { createJsonRpc, createJsonSubscriptionRpc } from '@solana/rpc-transport';
|
|
3
|
+
import type { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';
|
|
4
4
|
export declare function createSolanaRpc(config: Omit<Parameters<typeof createJsonRpc>[0], 'api'>): Rpc<SolanaRpcMethods>;
|
|
5
|
+
export declare function createSolanaRpcSubscriptions(config: Omit<Parameters<typeof createJsonSubscriptionRpc>[0], 'api'>): RpcSubscriptions<SolanaRpcSubscriptions>;
|
|
6
|
+
export declare function createSolanaRpcSubscriptions_UNSTABLE(config: Omit<Parameters<typeof createJsonSubscriptionRpc>[0], 'api'>): RpcSubscriptions<SolanaRpcSubscriptions & SolanaRpcSubscriptionsUnstable>;
|
|
5
7
|
//# sourceMappingURL=rpc.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Slot } from '@solana/rpc-core/dist/types/rpc-methods/common';
|
|
2
|
+
import type { SlotNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/slot-notifications';
|
|
3
|
+
import { RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';
|
|
4
|
+
type GetBlockHeightExceedencePromiseFn = (config: {
|
|
5
|
+
abortSignal: AbortSignal;
|
|
6
|
+
lastValidBlockHeight: Slot;
|
|
7
|
+
}) => Promise<void>;
|
|
8
|
+
export declare function createBlockHeightExceedencePromiseFactory(rpcSubscriptions: RpcSubscriptions<SlotNotificationsApi>): GetBlockHeightExceedencePromiseFn;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=transaction-confirmation-strategy-blockheight.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Base58EncodedAddress } from '@solana/addresses';
|
|
2
|
+
import { Commitment } from '@solana/rpc-core';
|
|
3
|
+
import { GetAccountInfoApi } from '@solana/rpc-core/dist/types/rpc-methods/getAccountInfo';
|
|
4
|
+
import { AccountNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/account-notifications';
|
|
5
|
+
import { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';
|
|
6
|
+
import { Nonce } from '@solana/transactions';
|
|
7
|
+
type GetNonceInvalidationPromiseFn = (config: {
|
|
8
|
+
abortSignal: AbortSignal;
|
|
9
|
+
commitment: Commitment;
|
|
10
|
+
currentNonceValue: Nonce;
|
|
11
|
+
nonceAccountAddress: Base58EncodedAddress;
|
|
12
|
+
}) => Promise<void>;
|
|
13
|
+
export declare function createNonceInvalidationPromiseFactory(rpc: Rpc<GetAccountInfoApi>, rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi>): GetNonceInvalidationPromiseFn;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=transaction-confirmation-strategy-nonce.d.ts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Commitment } from '@solana/rpc-core';
|
|
2
|
+
import { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';
|
|
3
|
+
import { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';
|
|
4
|
+
import { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';
|
|
5
|
+
import { TransactionSignature } from '@solana/transactions';
|
|
6
|
+
type GetSignatureConfirmationPromiseFn = (config: {
|
|
7
|
+
abortSignal: AbortSignal;
|
|
8
|
+
commitment: Commitment;
|
|
9
|
+
signature: TransactionSignature;
|
|
10
|
+
}) => Promise<void>;
|
|
11
|
+
export declare function createSignatureConfirmationPromiseFactory(rpc: Rpc<GetSignatureStatusesApi>, rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi>): GetSignatureConfirmationPromiseFn;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=transaction-confirmation-strategy-signature.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Commitment } from '@solana/rpc-core';
|
|
2
|
+
import type { GetAccountInfoApi } from '@solana/rpc-core/dist/types/rpc-methods/getAccountInfo';
|
|
3
|
+
import type { GetSignatureStatusesApi } from '@solana/rpc-core/dist/types/rpc-methods/getSignatureStatuses';
|
|
4
|
+
import type { AccountNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/account-notifications';
|
|
5
|
+
import type { SignatureNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/signature-notifications';
|
|
6
|
+
import type { SlotNotificationsApi } from '@solana/rpc-core/dist/types/rpc-subscriptions/slot-notifications';
|
|
7
|
+
import type { Rpc, RpcSubscriptions } from '@solana/rpc-transport/dist/types/json-rpc-types';
|
|
8
|
+
import { IDurableNonceTransaction, ITransactionWithBlockhashLifetime, ITransactionWithFeePayer, ITransactionWithSignatures } from '@solana/transactions';
|
|
9
|
+
import { createBlockHeightExceedencePromiseFactory } from './transaction-confirmation-strategy-blockheight';
|
|
10
|
+
import { createNonceInvalidationPromiseFactory } from './transaction-confirmation-strategy-nonce';
|
|
11
|
+
import { createSignatureConfirmationPromiseFactory } from './transaction-confirmation-strategy-signature';
|
|
12
|
+
interface BaseConfig {
|
|
13
|
+
abortSignal: AbortSignal;
|
|
14
|
+
commitment: Commitment;
|
|
15
|
+
getSignatureConfirmationPromise: ReturnType<typeof createSignatureConfirmationPromiseFactory>;
|
|
16
|
+
transaction: ITransactionWithFeePayer & ITransactionWithSignatures;
|
|
17
|
+
}
|
|
18
|
+
interface DefaultDurableNonceTransactionConfirmerConfig {
|
|
19
|
+
rpc: Rpc<GetSignatureStatusesApi & GetAccountInfoApi>;
|
|
20
|
+
rpcSubscriptions: RpcSubscriptions<AccountNotificationsApi & SignatureNotificationsApi>;
|
|
21
|
+
}
|
|
22
|
+
interface DefaultTransactionConfirmerConfig {
|
|
23
|
+
rpc: Rpc<GetSignatureStatusesApi>;
|
|
24
|
+
rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi & SlotNotificationsApi>;
|
|
25
|
+
}
|
|
26
|
+
interface WaitForTransactionWithBlockhashLifetimeConfirmationConfig extends BaseConfig {
|
|
27
|
+
getBlockHeightExceedencePromise: ReturnType<typeof createBlockHeightExceedencePromiseFactory>;
|
|
28
|
+
transaction: ITransactionWithFeePayer & ITransactionWithSignatures & ITransactionWithBlockhashLifetime;
|
|
29
|
+
}
|
|
30
|
+
interface WaitForDurableNonceTransactionConfirmationConfig extends BaseConfig {
|
|
31
|
+
getNonceInvalidationPromise: ReturnType<typeof createNonceInvalidationPromiseFactory>;
|
|
32
|
+
transaction: ITransactionWithFeePayer & ITransactionWithSignatures & IDurableNonceTransaction;
|
|
33
|
+
}
|
|
34
|
+
export declare function createDefaultDurableNonceTransactionConfirmer({ rpc, rpcSubscriptions, }: DefaultDurableNonceTransactionConfirmerConfig): (config: Omit<Parameters<typeof waitForDurableNonceTransactionConfirmation>[0], 'getNonceInvalidationPromise' | 'getSignatureConfirmationPromise'>) => Promise<void>;
|
|
35
|
+
export declare function createDefaultTransactionConfirmer({ rpc, rpcSubscriptions }: DefaultTransactionConfirmerConfig): (config: Omit<Parameters<typeof waitForTransactionConfirmation>[0], 'getBlockHeightExceedencePromise' | 'getSignatureConfirmationPromise'>) => Promise<void>;
|
|
36
|
+
export declare function waitForDurableNonceTransactionConfirmation(config: WaitForDurableNonceTransactionConfirmationConfig): Promise<void>;
|
|
37
|
+
export declare function waitForTransactionConfirmation(config: WaitForTransactionWithBlockhashLifetimeConfirmationConfig): Promise<void>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=transaction-confirmation.d.ts.map
|