-
Notifications
You must be signed in to change notification settings - Fork 6
feat: app factory #248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
feat: app factory #248
Conversation
6a166c7
to
6d27d07
Compare
30ec996
to
ae01c00
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces an app factory pattern for Algorand application deployment in the Rust crate, following the established patterns from Python and TypeScript implementations. The factory provides a high-level interface for creating, updating, and deploying applications using ARC-56 specifications.
Key changes:
- New
AppFactory
struct with fluent API for application lifecycle management - Integration with existing
AppDeployer
for idempotent deployment operations - Enhanced
AlgorandClient
with persistent app deployer functionality
Reviewed Changes
Copilot reviewed 22 out of 23 changed files in this pull request and generated no comments.
Show a summary per file
File | Description |
---|---|
crates/algokit_utils/src/applications/app_factory/ | Core factory implementation with modular design (types, compilation, transaction builders, etc.) |
crates/algokit_utils/src/applications/app_client/types.rs | Changed AlgorandClient parameter to Arc for shared ownership |
crates/algokit_utils/src/clients/algorand_client.rs | Added persistent AppDeployer instance and app_deployer() accessor method |
crates/algokit_utils/src/applications/app_deployer.rs | Enhanced with extra program pages calculation and localnet retry logic |
crates/algokit_utils/tests/applications/app_factory.rs | Comprehensive test suite covering factory creation, deployment, and ABI scenarios |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
1be959c
to
fb7ee7f
Compare
ae01c00
to
d9de8df
Compare
… in app client; more tests
* wip - PR feedback * wip - convert errors to snafu * wip * chore: replace utils CommonTransactionParams with macro * chore(python/algokit_transact): bump version to 1.0.0-alpha.60 [skip ci] * wip - converting string to error types * chore: simplify add_app_method_call_internal * chore: additional tweaks whilst implementing TS composer * chore(python/algokit_transact): bump version to 1.0.0-alpha.61 [skip ci] * chore: adjust transaction creator types, as they were previously a bit strange * wip - fixing compile issues * fix types for transaction_builder * chore: tweaks to both transaction creator and client manager * wip - map storage * wip - app state * wip - some clean up * wip - fix compile issues * make app state accessor better * wip - box * box done * fix params_builder * chore(python/algokit_transact): bump version to 1.0.0-alpha.62 [skip ci] * fix up the app client * wip - fix simulate * fix simulate + send params * clean up compilation.rs * remove extract_abi_return_from_result * wip - fixing tests * wip - resolve compile error app_client tests * wip - fixing tests * chore: add default signer support to AppClientParams * wip - structs * fix field type + encode/decode logic * test * convert storage key to abi storage key * convert storage map to abi storage map * convert box to use abi storage key * fix build * wip- struct in default value * convert default value * fix up - it builds now * wip - fixing tests --------- Co-authored-by: engineering-ci[bot] <179917785+engineering-ci[bot]@users.noreply.github.com> Co-authored-by: Neil Campbell <neil.campbell@makerx.com.au> Co-authored-by: Altynbek Orumbayev <altynbek.orumbayev@makerx.com.au>
afe47d6
to
092606d
Compare
…account for TransactionWithSigner Ensure transaction-typed ABI args inherit the method signer when not explicitly set
d9de8df
to
03af463
Compare
03af463
to
fec24a9
Compare
6ccfab0
to
17887bd
Compare
7d7e0f2
to
4c1741d
Compare
4c1741d
to
94dc537
Compare
App factory implementation following the AppClient