Generates an Anchor CPI crate from a JSON IDL.

Overview

anchor-gen

Generates a crate for cross-program invocations to an Anchor program from a JSON IDL.

Usage

In a new crate, write:

anchor_gen::generate_cpi_crate!("../../examples/govern-cpi/idl.json");

declare_id!("GjphYQcbP1m3FuDyCTUJf2mUMxKPE3j6feWU1rxvC7Ps");

This will generate a fully functional Rust CPI client for your IDL.

More examples can be found in the examples/ directory.

License: Apache-2.0

Comments
  • Change Result type to ProgramResult for before v0.22.0

    Change Result type to ProgramResult for before v0.22.0

    • add target_anchor_version option to change the generated code to match the anchor version

    Memo To use anchor-gen with anchor v0.20.x and v0.21.0, the return type of instruction must be ProgramResult (not Result<()>) The type changed at v0.22.0 as breaking change. https://github.com/coral-xyz/anchor/blob/master/CHANGELOG.md#breaking-3

    Implementation Consideration I thought about making it a feature of Cargo.toml, but since GeneratorOptions already existed, I implemented it as target_anchor_version. By receiving the version, it is easier to respond to future breaking changes.

    opened by everlastingsong 2
  • Bump syn from 1.0.101 to 1.0.108

    Bump syn from 1.0.101 to 1.0.108

    Bumps syn from 1.0.101 to 1.0.108.

    Release notes

    Sourced from syn's releases.

    1.0.108

    • Fix handling of unusual whitespace after escaped newlines in LitStr::value (#1381, thanks @​ModProg)

    1.0.107

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now

    1.0.106

    • Documentation improvements

    1.0.105

    • Improve parse errors related to dyn and impl type syntax (#1245)

    1.0.104

    • Add PathArguments::is_none()

    1.0.103

    1.0.102

    • More efficient internal representation for TokenBuffer (#1223, thanks @​CAD97)
    • Fix parsing of a left shift after macro metavariable in type position (#1229)
    Commits
    • 01f69e9 Release 1.0.108
    • 62d0aed stricter parsing of string_continue escapes
    • 4168f6b Release 1.0.107
    • d8690f2 Opt out -Zrustdoc-scrape-examples on docs.rs
    • 5306cde Release 1.0.106
    • 6db337c Update build status badge
    • 876a605 Merge pull request #1251 from dtolnay/instaloop
    • 65e0e42 Fix invalid use of insta snapshot inside a loop
    • 1d09024 Update test suite to nightly-2022-12-03
    • 998e863 Release 1.0.105
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump serde_json from 1.0.85 to 1.0.93

    Bump serde_json from 1.0.85 to 1.0.93

    Bumps serde_json from 1.0.85 to 1.0.93.

    Release notes

    Sourced from serde_json's releases.

    v1.0.93

    • Support 128-bit integers in serde_json::to_value (#982)

    v1.0.92

    • Documentation improvements

    v1.0.91

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now

    v1.0.90

    • Documentation improvements

    v1.0.89

    • Fix invalid JSON incorrectly accepted when a large number has no digits after decimal point (#953)

    v1.0.88

    • Optimize serde_json::Map's implementation of append and clone_from (#952, thanks @​Lucretiel)

    v1.0.87

    • Add write_i128 and write_u128 methods to serde_json::Formatter to control the formatting of 128-bit integers (#940, thanks @​Lucretiel)

    v1.0.86

    • Support arbitrary_precision feature even in no-std mode (#928, thanks @​kvinwang)
    Commits
    • 0ebeede Release 1.0.93
    • 4fd4850 Merge pull request #982 from serde-rs/integer128tovalue
    • e3d13cd Support 128-bit integers in to_value
    • f77ad47 Add test of integer128 to_value
    • a9c984f Release 1.0.92
    • c42b724 Merge pull request #980 from serde-rs/docrepr
    • eaa287c Hide repr attribute from documentation
    • 7bc6c86 RawValue -> repr(transparent)
    • e41ee42 Update indoc dev-dependency to version 2
    • 8cebe89 Speed up cargo fuzz CI job
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump proc-macro2 from 1.0.44 to 1.0.51

    Bump proc-macro2 from 1.0.44 to 1.0.51

    Bumps proc-macro2 from 1.0.44 to 1.0.51.

    Release notes

    Sourced from proc-macro2's releases.

    1.0.51

    • Implement rustc's limit on the number of # used for delimiting a raw string literal: 255 (#364)

    1.0.50

    • Implement Hash for proc_macro2::LineColumn (#362)

    1.0.49

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now

    1.0.48

    • Documentation improvements

    1.0.47

    • Fix integer overflow when nesting depth of nested comments exceeds 4 billion (#357)

    1.0.46

    • Make proc_macro2::TokenStream's FromStr impl consistent with proc_macro::TokenStream's on strings that begin with a byte order mark \u{feff} (#353)

    1.0.45

    • Fix panic on parsing disallowed raw identifiers such as r#self (#351)
    Commits
    • bc369f0 Release 1.0.51
    • ec804f1 Merge pull request #364 from dtolnay/hashes
    • dffd53c Reduce max hash in raw strings to 255
    • f0a3490 Add raw string literal test cases
    • 3b90e7d Ignore items_after_statements pedantic clippy lint
    • bce0e5f Consistently use Self in the return of From impls
    • 3915aee Speed up cargo fuzz CI job
    • 94c7519 Release 1.0.50
    • f01da43 Merge pull request #362 from dtolnay/hashlinecolumn
    • d4c564b Implement Hash for LineColumn
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump serde_json from 1.0.85 to 1.0.92

    Bump serde_json from 1.0.85 to 1.0.92

    Bumps serde_json from 1.0.85 to 1.0.92.

    Release notes

    Sourced from serde_json's releases.

    v1.0.92

    • Documentation improvements

    v1.0.91

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now

    v1.0.90

    • Documentation improvements

    v1.0.89

    • Fix invalid JSON incorrectly accepted when a large number has no digits after decimal point (#953)

    v1.0.88

    • Optimize serde_json::Map's implementation of append and clone_from (#952, thanks @​Lucretiel)

    v1.0.87

    • Add write_i128 and write_u128 methods to serde_json::Formatter to control the formatting of 128-bit integers (#940, thanks @​Lucretiel)

    v1.0.86

    • Support arbitrary_precision feature even in no-std mode (#928, thanks @​kvinwang)
    Commits
    • a9c984f Release 1.0.92
    • c42b724 Merge pull request #980 from serde-rs/docrepr
    • eaa287c Hide repr attribute from documentation
    • 7bc6c86 RawValue -> repr(transparent)
    • e41ee42 Update indoc dev-dependency to version 2
    • 8cebe89 Speed up cargo fuzz CI job
    • 74f510e Sync license text with rust-lang repos
    • 557f45c Merge pull request #964 from dtolnay/docsrs
    • 9edf7fa Replace docs.serde.rs links with intra-rustdoc links
    • 9947ae6 Point documentation links to docs.rs instead of docs.serde.rs
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump proc-macro2 from 1.0.44 to 1.0.50

    Bump proc-macro2 from 1.0.44 to 1.0.50

    Bumps proc-macro2 from 1.0.44 to 1.0.50.

    Release notes

    Sourced from proc-macro2's releases.

    1.0.50

    • Implement Hash for proc_macro2::LineColumn (#362)

    1.0.49

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now

    1.0.48

    • Documentation improvements

    1.0.47

    • Fix integer overflow when nesting depth of nested comments exceeds 4 billion (#357)

    1.0.46

    • Make proc_macro2::TokenStream's FromStr impl consistent with proc_macro::TokenStream's on strings that begin with a byte order mark \u{feff} (#353)

    1.0.45

    • Fix panic on parsing disallowed raw identifiers such as r#self (#351)
    Commits
    • 94c7519 Release 1.0.50
    • f01da43 Merge pull request #362 from dtolnay/hashlinecolumn
    • d4c564b Implement Hash for LineColumn
    • 92a0295 Merge pull request #361 from dtolnay/linecolumn
    • a4be982 Deduplicate implementations of LineColumn
    • 9924b79 Prevent actions duplication on noop merge commits
    • 37e89e1 Sync license text with rust-lang repos
    • 8779f4c Update ui test suite to nightly-2022-12-30
    • 293705d Release 1.0.49
    • 6b9ee3d Opt out -Zrustdoc-scrape-examples on docs.rs
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump syn from 1.0.101 to 1.0.107

    Bump syn from 1.0.101 to 1.0.107

    Bumps syn from 1.0.101 to 1.0.107.

    Release notes

    Sourced from syn's releases.

    1.0.106

    • Documentation improvements

    1.0.105

    • Improve parse errors related to dyn and impl type syntax (#1245)

    1.0.104

    • Add PathArguments::is_none()

    1.0.103

    1.0.102

    • More efficient internal representation for TokenBuffer (#1223, thanks @​CAD97)
    • Fix parsing of a left shift after macro metavariable in type position (#1229)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump proc-macro2 from 1.0.44 to 1.0.49

    Bump proc-macro2 from 1.0.44 to 1.0.49

    Bumps proc-macro2 from 1.0.44 to 1.0.49.

    Release notes

    Sourced from proc-macro2's releases.

    1.0.48

    • Documentation improvements

    1.0.47

    • Fix integer overflow when nesting depth of nested comments exceeds 4 billion (#357)

    1.0.46

    • Make proc_macro2::TokenStream's FromStr impl consistent with proc_macro::TokenStream's on strings that begin with a byte order mark \u{feff} (#353)

    1.0.45

    • Fix panic on parsing disallowed raw identifiers such as r#self (#351)
    Commits
    • 293705d Release 1.0.49
    • 6b9ee3d Opt out -Zrustdoc-scrape-examples on docs.rs
    • a83ad60 Release 1.0.48
    • b4fa77f Update build status badge
    • 975c324 Time out workflows after 45 minutes
    • f633e31 MIT copyright line
    • 47c91c8 Release 1.0.47
    • c694208 Make i's inferred type explicit to be consistent with depth
    • 46e9bd6 Merge pull request #358 from dtolnay/depth
    • 5635f1b Fix integer overflow in nested comment parser
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump serde_json from 1.0.85 to 1.0.91

    Bump serde_json from 1.0.85 to 1.0.91

    Bumps serde_json from 1.0.85 to 1.0.91.

    Release notes

    Sourced from serde_json's releases.

    v1.0.90

    • Documentation improvements

    v1.0.89

    • Fix invalid JSON incorrectly accepted when a large number has no digits after decimal point (#953)

    v1.0.88

    • Optimize serde_json::Map's implementation of append and clone_from (#952, thanks @​Lucretiel)

    v1.0.87

    • Add write_i128 and write_u128 methods to serde_json::Formatter to control the formatting of 128-bit integers (#940, thanks @​Lucretiel)

    v1.0.86

    • Support arbitrary_precision feature even in no-std mode (#928, thanks @​kvinwang)
    Commits
    • 26f147f Release 1.0.91
    • d9cdb98 Opt out -Zrustdoc-scrape-examples on docs.rs
    • 331511d Release 1.0.90
    • 8753829 Replace ancient CI service provider in readme
    • 0a43394 Update build status badge
    • 8794844 Prevent build.rs rerunning unnecessarily on all source changes
    • 0b54871 Time out workflows after 45 minutes
    • ecad462 Fix renamed let_underscore_drop lint
    • 9295c96 Resolve needless_borrowed_reference clippy lints
    • d2f9368 Release 1.0.89
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump anchor-lang from 0.24.2 to 0.26.0

    Bump anchor-lang from 0.24.2 to 0.26.0

    Bumps anchor-lang from 0.24.2 to 0.26.0.

    Release notes

    Sourced from anchor-lang's releases.

    v0.26.0

    For a list of changes in this release, see the Change Log.

    v0.25.0

    For a list of changes in this release, see the Change Log.

    Changelog

    Sourced from anchor-lang's changelog.

    [0.26.0] - 2022-12-15

    Features

    • cli: Add --run to anchor test for running a subset of test suites (#1828).
    • client: Add transaction functions to RequestBuilder (#1958).
    • spl: Add create_metadata_accounts_v3 and set_collection_size wrappers (#2119).
    • spl: Add MetadataAccount account deserialization. (#2014).
    • spl: Add update_primary_sale_happened_via_token wrapper (#2173).
    • spl: Add sign_metadata and remove_creator_verification wrappers (#2175).
    • spl: Add initialize_account3 and initialize_mint2 (#2265).
    • spl: Change serum-dex to openbook-dex (#2308).
    • lang: Add parsing for consts from impl blocks for IDL PDA seeds generation (#2128).
    • lang: Account closing reassigns to system program and reallocates (#2169).
    • ts: Add coders for SPL programs (#2143).
    • ts: Add has_one relations inference so accounts mapped via has_one relationships no longer need to be provided (#2160).
    • ts: Add ability to set args after setting accounts and retrieving pubkeys (#2160).
    • ts: Add .prepare() to builder pattern (#2160).
    • spl: Add freeze_delegated_account and thaw_delegated_account wrappers (#2164).
    • ts: Add feePayer check to AnchorProvider methods, so that anchor writes the provider's wallet as fee payer if fee payer isn't already set (#2186).
    • ts: Add nested PDA inference (#2194).
    • ts: Add ability to resolve missing accounts with a custom resolver (#2194).
    • ts: Update the Solana web3 library used by anchor ts to version 1.64.0 (#2220).
    • lang: Updates AccountsClose to make it safe to call manually (#2209).
    • lang: Update rust used in the repo version 1.62 (#2272).
    • cli: Allow custom cluster config (#2271).
    • ts: Add optional flag to parseLogs to throw an error on decoding failure (#2043).
    • cli: Add test.validator.geyser_plugin_config support (#2016).
    • cli: Add account subcommand to cli (#1923)
    • cli: Add ticks_per_slot option to Validator args (#1875).

    Fixes

    • lang: Fix parsing for bytes literals in the IDL (#2261).
    • lang: Fix IDL seed generation for byte string literals (#2125).
    • ts: Update seeds inference to allow nested user defined structs within the seeds (#2198).
    • event: Fix multiple event listeners with the same name (#2165).
    • lang: Prevent the payer account from being initialized as a program account (#2284).
    • ts: Fixing breaking change where null or undefined wallet throws an error (#2303).
    • ts: Fixed .fetchNullable() to be robust towards accounts only holding a balance (#2301).
    • lang: Only add public enums to the IDL (#2309).
    • lang: Fix heap intensive error mapping (#2313).

    Breaking

    • ts: SPL coders have been removed from the main Anchor package. (#2155)
    • lang: Remove rent from constraints (#2265).
    • spl: Remove rent from associated_token::Create (#2265).
    • lang: Add Discriminator and Owner trait implementation for structures representing instructions (#1997).
    • ts: '@​coral-xyz/borsh' package is now part of the yarn monorepo (#2290). The borsh package needs to be built before the anchor package can be built but this should happen automatically when running yarn build in packages/anchor, see #2299 and #2306.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump anchor-syn from 0.24.2 to 0.26.0

    Bump anchor-syn from 0.24.2 to 0.26.0

    Bumps anchor-syn from 0.24.2 to 0.26.0.

    Release notes

    Sourced from anchor-syn's releases.

    v0.26.0

    For a list of changes in this release, see the Change Log.

    v0.25.0

    For a list of changes in this release, see the Change Log.

    Changelog

    Sourced from anchor-syn's changelog.

    [0.26.0] - 2022-12-15

    Features

    • cli: Add --run to anchor test for running a subset of test suites (#1828).
    • client: Add transaction functions to RequestBuilder (#1958).
    • spl: Add create_metadata_accounts_v3 and set_collection_size wrappers (#2119).
    • spl: Add MetadataAccount account deserialization. (#2014).
    • spl: Add update_primary_sale_happened_via_token wrapper (#2173).
    • spl: Add sign_metadata and remove_creator_verification wrappers (#2175).
    • spl: Add initialize_account3 and initialize_mint2 (#2265).
    • spl: Change serum-dex to openbook-dex (#2308).
    • lang: Add parsing for consts from impl blocks for IDL PDA seeds generation (#2128).
    • lang: Account closing reassigns to system program and reallocates (#2169).
    • ts: Add coders for SPL programs (#2143).
    • ts: Add has_one relations inference so accounts mapped via has_one relationships no longer need to be provided (#2160).
    • ts: Add ability to set args after setting accounts and retrieving pubkeys (#2160).
    • ts: Add .prepare() to builder pattern (#2160).
    • spl: Add freeze_delegated_account and thaw_delegated_account wrappers (#2164).
    • ts: Add feePayer check to AnchorProvider methods, so that anchor writes the provider's wallet as fee payer if fee payer isn't already set (#2186).
    • ts: Add nested PDA inference (#2194).
    • ts: Add ability to resolve missing accounts with a custom resolver (#2194).
    • ts: Update the Solana web3 library used by anchor ts to version 1.64.0 (#2220).
    • lang: Updates AccountsClose to make it safe to call manually (#2209).
    • lang: Update rust used in the repo version 1.62 (#2272).
    • cli: Allow custom cluster config (#2271).
    • ts: Add optional flag to parseLogs to throw an error on decoding failure (#2043).
    • cli: Add test.validator.geyser_plugin_config support (#2016).
    • cli: Add account subcommand to cli (#1923)
    • cli: Add ticks_per_slot option to Validator args (#1875).

    Fixes

    • lang: Fix parsing for bytes literals in the IDL (#2261).
    • lang: Fix IDL seed generation for byte string literals (#2125).
    • ts: Update seeds inference to allow nested user defined structs within the seeds (#2198).
    • event: Fix multiple event listeners with the same name (#2165).
    • lang: Prevent the payer account from being initialized as a program account (#2284).
    • ts: Fixing breaking change where null or undefined wallet throws an error (#2303).
    • ts: Fixed .fetchNullable() to be robust towards accounts only holding a balance (#2301).
    • lang: Only add public enums to the IDL (#2309).
    • lang: Fix heap intensive error mapping (#2313).

    Breaking

    • ts: SPL coders have been removed from the main Anchor package. (#2155)
    • lang: Remove rent from constraints (#2265).
    • spl: Remove rent from associated_token::Create (#2265).
    • lang: Add Discriminator and Owner trait implementation for structures representing instructions (#1997).
    • ts: '@​coral-xyz/borsh' package is now part of the yarn monorepo (#2290). The borsh package needs to be built before the anchor package can be built but this should happen automatically when running yarn build in packages/anchor, see #2299 and #2306.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • proc macro are not rebuilt on IDL changes

    proc macro are not rebuilt on IDL changes

    This can help fix it by tracking the json file, unfortunately nightly and doesn't look like it is ready to be stabilized https://github.com/rust-lang/rust/issues/99515

    Scenario:

    Dependency program has a new endpoint, update IDL, still no cpi method for it...

    The solution right now is cargo clean then cargo build

    opened by Arrowana 0
  • Update/anchor v0.27

    Update/anchor v0.27

    This is a work in progress proposal to update anchor-gen to anchor v0.27 which includes breaking changes due to zero_copy macro. Any help/comment is welcome. The current proposal has been made such as example are working, some part of the code are probably buggy and/or clumsy (i am junior dev), and they are maybe missing part concerning the correct usage of the updated macro zero_copy

    opened by datben 0
  • Bump proc-macro2 from 1.0.44 to 1.0.52

    Bump proc-macro2 from 1.0.44 to 1.0.52

    Bumps proc-macro2 from 1.0.44 to 1.0.52.

    Release notes

    Sourced from proc-macro2's releases.

    1.0.52

    1.0.51

    • Implement rustc's limit on the number of # used for delimiting a raw string literal: 255 (#364)

    1.0.50

    • Implement Hash for proc_macro2::LineColumn (#362)

    1.0.49

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now

    1.0.48

    • Documentation improvements

    1.0.47

    • Fix integer overflow when nesting depth of nested comments exceeds 4 billion (#357)

    1.0.46

    • Make proc_macro2::TokenStream's FromStr impl consistent with proc_macro::TokenStream's on strings that begin with a byte order mark \u{feff} (#353)

    1.0.45

    • Fix panic on parsing disallowed raw identifiers such as r#self (#351)
    Commits
    • ab25487 Release 1.0.52
    • 006d135 Merge pull request #367 from dtolnay/fallback
    • 96da1a2 Rename 'stable' terminology to 'fallback'
    • 65699c4 Merge pull request #366 from dtolnay-contrib/delim
    • 0dc8736 Add DelimSpan to hold the 3 different spans of a delimiter
    • 1e7fc7b Expand documentation of Group::delimiter
    • 68bfd52 Format test cfg attributes with rustfmt
    • 23d5478 Fix warning on duplicate test ignore attribute
    • e1fa732 Account for proc_macro::Span layout change between 1.31 and 1.32
    • 6083bef More specifically run make_sure_no_proc_macro test in CI
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump anchor-lang from 0.24.2 to 0.27.0

    Bump anchor-lang from 0.24.2 to 0.27.0

    Bumps anchor-lang from 0.24.2 to 0.27.0.

    Release notes

    Sourced from anchor-lang's releases.

    v0.27.0

    For a list of changes in this release, see the Change Log.

    v0.26.0

    For a list of changes in this release, see the Change Log.

    v0.25.0

    For a list of changes in this release, see the Change Log.

    Changelog

    Sourced from anchor-lang's changelog.

    [0.27.0] - 2023-03-08

    Features

    • spl: Add MasterEditionAccount account deserialization to spl metadata (#2393).
    • lang: Add the InitSpace derive macro to automatically calculate the space at the initialization of an account (#2346).
    • cli: Add env option to verifiable builds (#2325).
    • cli: Add idl close command to close a program's IDL account (#2329).
    • cli: idl init now supports very large IDL files (#2329).
    • spl: Add transfer_checked function (#2353).
    • spl: Add approve_checked function (#2401).
    • cli: Add --skip-build option to the verify command (#2387).
    • client: Add support for multithreading to the rust client: use flag --multithreaded (#2321).
    • client: Add async_rpc a method which returns a nonblocking solana rpc client (#2322).
    • avm, cli: Use the rustls-tls feature of reqwest so that users don't need OpenSSL installed (#2385).
    • ts: Add VersionedTransaction support. Methods in the Provider class and Wallet interface now use the argument tx: Transaction | VersionedTransaction (#2427).
    • cli: Add --arch sbf option to compile programs using cargo build-sbf (#2398).

    Fixes

    • ts: Make the return type of AccountClient.fetchMultiple match the account type being fetched (#2390)
    • cli: Don't regenerate idl in read_all_programs(). (#2332).
    • ts: provider.simulate will send the transaction with sigVerify: false if no signers are present (#2331).
    • cli: Failing commands will return the correct exit status. (#2370).
    • idl: Update the IDL program to use non-deprecated account types (#2365).
    • ts: Enum fields weren't being converted from snake_case to camelCase (#2378).
    • lang/cli: Update to solana-program version 1.14.16 and rust version 1.60, appears to still be incompatible with 1.15 CLI (#2420).

    Breaking

    • lang: Remove deprecated account types: CpiAccount, Loader and ProgramAccount (#2375).
    • lang: Remove state and interface attributes (#2285).
    • lang: Remove deprecated literal constraint which has been replaced by #[account(constraint = {})] (#2379).
    • lang: account(zero_copy) and zero_copy attributes now derive the bytemuck::Pod and bytemuck::Zeroable traits instead of using unsafe impl (#2330). This imposes useful restrictions on the type, like not having padding bytes and all fields being Pod themselves. See bytemuck::Pod for details. This change requires adding bytemuck = { version = "1.4.0", features = ["derive", "min_const_generics"]} to your cargo.toml. Legacy applications can still use #[account(zero_copy(unsafe))] and #[zero_copy(unsafe)] for the old behavior.
    • ts: Remove createProgramAddressSync, findProgramAddressSync (now available in @solana/web3.js) and update associatedAddress to be synchronous (#2357).

    [0.26.0] - 2022-12-15

    Features

    • cli: Add --run to anchor test for running a subset of test suites (#1828).
    • client: Add transaction functions to RequestBuilder (#1958).
    • spl: Add create_metadata_accounts_v3 and set_collection_size wrappers (#2119).
    • spl: Add MetadataAccount account deserialization. (#2014).
    • spl: Add update_primary_sale_happened_via_token wrapper (#2173).
    • spl: Add sign_metadata and remove_creator_verification wrappers (#2175).
    • spl: Add initialize_account3 and initialize_mint2 (#2265).
    • spl: Change serum-dex to openbook-dex (#2308).
    • lang: Add parsing for consts from impl blocks for IDL PDA seeds generation (#2128).
    • lang: Account closing reassigns to system program and reallocates (#2169).

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump anchor-syn from 0.24.2 to 0.27.0

    Bump anchor-syn from 0.24.2 to 0.27.0

    Bumps anchor-syn from 0.24.2 to 0.27.0.

    Release notes

    Sourced from anchor-syn's releases.

    v0.27.0

    For a list of changes in this release, see the Change Log.

    v0.26.0

    For a list of changes in this release, see the Change Log.

    v0.25.0

    For a list of changes in this release, see the Change Log.

    Changelog

    Sourced from anchor-syn's changelog.

    [0.27.0] - 2023-03-08

    Features

    • spl: Add MasterEditionAccount account deserialization to spl metadata (#2393).
    • lang: Add the InitSpace derive macro to automatically calculate the space at the initialization of an account (#2346).
    • cli: Add env option to verifiable builds (#2325).
    • cli: Add idl close command to close a program's IDL account (#2329).
    • cli: idl init now supports very large IDL files (#2329).
    • spl: Add transfer_checked function (#2353).
    • spl: Add approve_checked function (#2401).
    • cli: Add --skip-build option to the verify command (#2387).
    • client: Add support for multithreading to the rust client: use flag --multithreaded (#2321).
    • client: Add async_rpc a method which returns a nonblocking solana rpc client (#2322).
    • avm, cli: Use the rustls-tls feature of reqwest so that users don't need OpenSSL installed (#2385).
    • ts: Add VersionedTransaction support. Methods in the Provider class and Wallet interface now use the argument tx: Transaction | VersionedTransaction (#2427).
    • cli: Add --arch sbf option to compile programs using cargo build-sbf (#2398).

    Fixes

    • ts: Make the return type of AccountClient.fetchMultiple match the account type being fetched (#2390)
    • cli: Don't regenerate idl in read_all_programs(). (#2332).
    • ts: provider.simulate will send the transaction with sigVerify: false if no signers are present (#2331).
    • cli: Failing commands will return the correct exit status. (#2370).
    • idl: Update the IDL program to use non-deprecated account types (#2365).
    • ts: Enum fields weren't being converted from snake_case to camelCase (#2378).
    • lang/cli: Update to solana-program version 1.14.16 and rust version 1.60, appears to still be incompatible with 1.15 CLI (#2420).

    Breaking

    • lang: Remove deprecated account types: CpiAccount, Loader and ProgramAccount (#2375).
    • lang: Remove state and interface attributes (#2285).
    • lang: Remove deprecated literal constraint which has been replaced by #[account(constraint = {})] (#2379).
    • lang: account(zero_copy) and zero_copy attributes now derive the bytemuck::Pod and bytemuck::Zeroable traits instead of using unsafe impl (#2330). This imposes useful restrictions on the type, like not having padding bytes and all fields being Pod themselves. See bytemuck::Pod for details. This change requires adding bytemuck = { version = "1.4.0", features = ["derive", "min_const_generics"]} to your cargo.toml. Legacy applications can still use #[account(zero_copy(unsafe))] and #[zero_copy(unsafe)] for the old behavior.
    • ts: Remove createProgramAddressSync, findProgramAddressSync (now available in @solana/web3.js) and update associatedAddress to be synchronous (#2357).

    [0.26.0] - 2022-12-15

    Features

    • cli: Add --run to anchor test for running a subset of test suites (#1828).
    • client: Add transaction functions to RequestBuilder (#1958).
    • spl: Add create_metadata_accounts_v3 and set_collection_size wrappers (#2119).
    • spl: Add MetadataAccount account deserialization. (#2014).
    • spl: Add update_primary_sale_happened_via_token wrapper (#2173).
    • spl: Add sign_metadata and remove_creator_verification wrappers (#2175).
    • spl: Add initialize_account3 and initialize_mint2 (#2265).
    • spl: Change serum-dex to openbook-dex (#2308).
    • lang: Add parsing for consts from impl blocks for IDL PDA seeds generation (#2128).
    • lang: Account closing reassigns to system program and reallocates (#2169).

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
Owner
Saber
Stable swapping between stablecoins and other identical assets
Saber
Escrow program implemented in Anchor

Anchor Example: Escrow Program See this doc for more implementation details Overview Since this program is extended from the original Escrow Program,

ironaddicteddog 141 Dec 26, 2022
Ah Fuck Anchor

Ah Fuck Anchor

Deep Mehta 24 Dec 14, 2022
CLI for video images. Generates animated video contact sheets fast.

vimg CLI for video images. Generate animated video contact sheets fast. Uses ffmpeg. Note: Support for animated avif isn't everywhere yet, try viewing

Alex Butler 4 Mar 12, 2023
Anchor, a Rust Klipper protocol implementation

Anchor Anchor is an implementation of the Klipper protocol. You can use Anchor to create custom Klipper MCUs. It's written in Rust and provides only t

Annex-Engineering 20 Mar 21, 2023
turbocommit is a Rust-based CLI tool that generates high-quality git commit messages in accordance with the Conventional Commits specification, using OpenAI's

turbocommit is a Rust-based CLI tool that generates high-quality git commit messages in accordance with the Conventional Commits specification, using OpenAI's `gpt-3.5-turbo` language model. It is easy to use and a cost-effective way to keep git commit history at a higher quality, helping developers stay on track with their work.

Sett 16 Mar 26, 2023
ChatGPT powered Rust proc macro that generates code at compile-time.

gpt-macro ChatGPT powered Rust proc macro that generates code at compile-time. Implemented Macros auto_impl!{} #[auto_test(...)] Usage Get ChatGPT API

Akira Moroo 429 Apr 15, 2023
A quality of life package for Anchor.

anchor-cereal A quality of life package for Anchor made to support the Solana ecosystem. Currently, it allows you to serialize a struct containing an

✨ amelia chen ✨ 24 Feb 9, 2023
An ultra-fast CLI app that fixes JSON files in large codebase or folders

minosse An ultra fast CLI app that fixes json files in large codebase or folders USAGE: minosse [OPTIONS] <input-dir> FLAGS: -h, --help Prints

Antonino Bertulla 5 Oct 17, 2022
A simple CLI for combining json and yaml files

A simple CLI for combining json and yaml files

Avencera 16 Jul 4, 2022
A Rust CLI to provide last publish dates for packages in a package-lock.json file

NPM Package Age A Rust CLI which if you provide a npm lockfile (package-lock.json to start), it will give you a listing of all of the packages & the l

Benjamin Lannon 1 Feb 4, 2022
This is a simple command line application to convert bibtex to json written in Rust and Python

bibtex-to-json This is a simple command line application to convert bibtex to json written in Rust and Python. Why? To enable you to convert very big

null 3 Mar 23, 2022
hj is a command line tool to convert HTTP/1-style text into JSON

hj hj is a command line tool to convert HTTP/1-style text into JSON. This command is inspired by yusukebe/rj, which is a standalone HTTP client that s

FUJI Goro 10 Aug 21, 2022
CLI application to run clang-format on a set of files specified using globs in a JSON configuration file.

run_clang_format CLI application for running clang-format for an existing .clang-format file on a set of files, specified using globs in a .json confi

martin 6 Dec 16, 2022
A small CLI tool to query ArcGIS REST API services, implemented in Rust. The server response is returned as pretty JSON.

A small CLI tool to query ArcGIS REST API services, implemented in Rust. The server response is returned as pretty JSON.

Andrew Vitale 2 Apr 25, 2022
CLI application to run clang-tidy on a set of files specified using globs in a JSON configuration file.

run-clang-tidy CLI application for running clang-tidy for an existing .clang-tidy file on a set of files, specified using globs in a .json configurati

martin 7 Nov 4, 2022
A Faster(⚡) formatter, linter, bundler, and more for JavaScript, TypeScript, JSON, HTML, Markdown, and CSS Lapce Plugin

Lapce Plugin for Rome Lapce-rome is a Lapce plugin for rome, The Rome is faster ⚡ , A formatter, linter, compiler, bundler, and more for JavaScript, T

xiaoxin 7 Dec 16, 2022
jf "jf: %q" "JSON Format"

jf jf "jf: %q" "JSON Format" jf is a jo alternative to help safely format and print JSON objects in the commandline. However, unlike jo, where you bui

Arijit Basu 15 Apr 1, 2023
A simple CLI tool for converting CSV file content to JSON.

fast-csv-to-json A simple CLI tool for converting CSV file content to JSON. 我花了一個小時搓出來,接著優化了兩天的快速 CSV 轉 JSON CLI 小工具 Installation Install Rust with ru

Ming Chang 3 Apr 5, 2023
This project returns Queried value from SOAP(XML) in form of JSON.

About This is project by team SSDD for HachNUThon (TechHolding). This project stores and allows updating SOAP(xml) data and responds to various querie

Sandipsinh Rathod 3 Apr 30, 2023