Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(bindings-ts): support multi-auth workflows
- switch from `ts-tests/package.json` to an `initialize.sh` script that uses a `.env` if available or defaults to environment variables. As before, this will build, deploy, and generate bindings for the new contracts, plus creating an `alice` and `bob` identities and minting separate amounts of two separate tokens to each of them - add eslint to catch missing `await`s - add transaction-rebuilding to increment transaction sequence numbers, so that all tests can pass when run in parallel - add `atomic_swap` and `token` contracts from https://github.com/stellar/soroban-examples to `test-wasms` - add tests for atomic swap functionality inspired by https://github.com/stellar/soroban-react-atomic-swap - let this logic guide needed updates to `bindings typescript`-generated libraries: - don't return flat values - instead, return a `new AssembledTransaction`, a class that has a `result` getter that can be used to get the result of the simulation right away, or can be used to `await tx.signAndSend()`, which then returns a `SentTransaction` - `SentTransaction` contains all possibly-relevant fields from the logic it performs, such as `sendTransactionAll` - `AssembledTransaction` has a `needsNonInvokerSigningBy()` getter and a `signAuthEntriesFor(publicKey, signingFunction)` to facilitate multi-auth workflows. - Since assembling transactions may now take place across multiple users' browsers, you can also call `json = tx.toJSON()` on an `AssembledTransaction` and then `contract.fromJSON[method](json)` on the next machine to continue signing, as shown in `test-swap.ts` Co-authored-by: Aristides Staffieri <[email protected]>
- Loading branch information