* chore: extract expirable blockhash record into its own type
* fix: the local latest blockhash cache now fetches and stores lastValidBlockHeight
* fix: allow people to supply a confirmation strategy to sendAndConfirmRawTransaction
* test: upgrade RPC helpers to use blockheight confirmation method
* test: patch up tests to use blockheight based confirmation strategy
* fix: eliminate deprecated construction of Transaction inside simulateTransaction
* test: eliminate deprecated constructions of Transaction in tests
* chore: create a first-class type to distinguish client subscription ids from server subscription ids
* chore: add fast-stable-stringify as a dependency to web3.js
* fix: reimplement the subscription tracker as a state machine
* test: updated tests to recognize that signatureUnsubscribe happens synchronously
* chore: add sinon-chai so that we can make assertions on calling spies
* test: coverage for the full range of subscription state transitions
* fix: special case auto-disposing subscriptions like signatureSubscribe
* fix: document Subscription type (SQUASH THIS)
* fix: strict undefined checks (SQUASH THIS)
* fix: naming (SQUASH THIS)
* fix: move defaulting to source (SQUASH THIS)
* fix: build RPC args first, then produce the subscription topic hash (SQUASH THIS)
* fix: dispose handles no longer track whether they've been called (SQUASH THIS)
* fix: shore up the auto-disposing sub tests now that double-free doesn't fatal (SQUASH THIS)
* fix: write documentation explaining how and why to apply a default commitment (SQUASH THIS)
* fix: skip subscriptions that have been deleted when recursing (SQUASH THIS)
* fix: bail on async responses when the connection has been recycled (SQUASH THIS)
* fix: typo in comment (SQUASH THIS)
* chore: comment on why notification callbacks are ts-ignored
* chore: start all the new stuff out as private members of the Connection class
* Update simulate to add blockhash if not exist
Simulate has been overriding the recentBlockhash of the passed
Transaction which can be considered destructive and with side effects.
Since the purpose of this function is to purely simulate, it should not
override recentBlockhash if it has already been set
Refs https://github.com/solana-labs/solana/issues/24279
* Apply prettier
There is no need to log the error to the console. Developers can simply catch the error and handle it themselves without it cluttering production logs.
* Refine middleware types to include the method signature and to express the nullability of the middleware.
* Make sure that the stacktrace does not involve middleware unless the error originated from the middleware itself.
Co-authored-by: steveluscher <github@steveluscher.com>
* feat: add accounts support to simulateTransaction
* feat: introduce test for simulateTransaction on Message objects
* feat: populate transaction from message defaults to no signatures
* fix: remove unused constant
* fix: small formatting error
* fix: eslint and prettier were fighting over ternary indentation
* fix: make simulated transaction result accounts nullable
* feat(web3): add getMultipleAccountsInfo which uses the getMultipleAccounts RPC method
* fix: add airdrop to get multiple accounts info
Co-authored-by: Josh Hundley <josh.hundley@gmail.com>
* first try, failing test
* fix implementation and tests
* lint:fix
* move method tests to seperate test
* lint fix
* apply starry's comments and grab the bonus points
* minor fixes after starry's second review
Co-authored-by: Arrowana <8245419+Arrowana@users.noreply.github.com>