Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
e44b908
Integrate full package version history management into PackageRegistr…
chrisgitiota Jul 16, 2025
565a4b3
New package-history CLI tool to automatically create and update `Move…
chrisgitiota Jul 16, 2025
56c77e5
Merge branch 'main' into feat/full-package-history
chrisgitiota Jul 28, 2025
0692dbe
Use JSON format instead of TOML for the Move.package-history file
chrisgitiota Jul 28, 2025
3d39d3c
Fixed package_history_cli tests
chrisgitiota Aug 4, 2025
dfc88ce
Remove dead code
chrisgitiota Aug 4, 2025
69ca4cc
Rename `Move.package-history.json` to `Move.history.json`
chrisgitiota Aug 7, 2025
30abbcc
product_common now provides the functionality, previously implemented…
chrisgitiota Aug 8, 2025
29ca4a6
MoveHistoryManager holds move_lock_path and history_file_path now and…
chrisgitiota Aug 8, 2025
4c61d8d
Add function move_lock_file_exists()
chrisgitiota Aug 11, 2025
39aa898
Add function manage_history_file() providing main functionality neede…
chrisgitiota Aug 11, 2025
dc77438
fix fmt issues
chrisgitiota Aug 11, 2025
26a2f7d
fix warnings "hiding a lifetime that's elided elsewhere is confusing"
chrisgitiota Aug 11, 2025
01f1e11
fix bug in `console_out` messages of fn manage_history_file()
chrisgitiota Aug 11, 2025
d8a6b19
Updated MoveHistoryManager docs
chrisgitiota Aug 11, 2025
1bf1bd1
fix fmt issue
chrisgitiota Aug 11, 2025
ca6c8ca
Enhance MoveHistoryManager docs
chrisgitiota Aug 11, 2025
d9db850
fix fmt issue
chrisgitiota Aug 11, 2025
dae0cf5
ignore the build.rs example in rust doctest
chrisgitiota Aug 11, 2025
d854daf
Further enhance the docs for MoveHistoryManager and PackageRegistry
chrisgitiota Aug 12, 2025
ededffe
Merge branch 'main' into feat/full-package-history
chrisgitiota Aug 14, 2025
5363824
Remove doubled PackageRegistry struct definition
chrisgitiota Aug 14, 2025
e5e5e4a
Several enhancements
chrisgitiota Aug 14, 2025
6a08643
Hand over errors from `update()` or `init()` to users of `manage_hist…
chrisgitiota Aug 14, 2025
6c6295b
Replace `aliases_to_ignore` with `additional_aliases_to_watch` and a …
chrisgitiota Sep 23, 2025
12f1d50
Merge branch 'main' into feat/full-package-history
chrisgitiota Sep 23, 2025
23acc3a
Fix clippy anf fmt issues
chrisgitiota Sep 29, 2025
f7e189e
Merge branch 'main' into feat/full-package-history
chrisgitiota Sep 29, 2025
7dccb6f
Aline indexmap dependency with iota repo requirements
chrisgitiota Sep 29, 2025
c4d304e
Aligne indexmap dependency with iota repo requirements
chrisgitiota Sep 29, 2025
e5b8861
Reduce nesting with early returns
chrisgitiota Sep 29, 2025
1a388a6
Merge remote-tracking branch 'origin/feat/full-package-history' into …
chrisgitiota Sep 29, 2025
86c15a0
Fix fmt issue
chrisgitiota Sep 29, 2025
e2dfbd5
Merge branch 'main' into feat/full-package-history
chrisgitiota Nov 5, 2025
7db17e2
Fix typo
chrisgitiota Nov 5, 2025
86fd0a7
Fix bug in alignment of indexmap dependency version with IOTA repository
chrisgitiota Nov 5, 2025
4ed04e7
Add missing whitespace in Success message
chrisgitiota Nov 5, 2025
ec679a0
Implement alias management in PackageRegistry and MoveHistoryManager
itsyaasir Nov 5, 2025
afe7517
Add tests for alias synchronization in MoveHistoryManager
itsyaasir Nov 5, 2025
56aa4ce
Additional HstoryManager test update_syncs_only_aliases_included_in_a…
chrisgitiota Nov 5, 2025
e885380
Extended docs on fn PackageRegistry::insert_new_package_version()
chrisgitiota Nov 5, 2025
2c59b3c
chore:fmt
itsyaasir Nov 6, 2025
219bea6
Merge pull request #71 from iotaledger/fix/issue-4-aliases-are-incons…
itsyaasir Nov 6, 2025
aca4a79
Merge branch 'main' into feat/full-package-history
chrisgitiota Nov 10, 2025
9e17995
Documented edge cases in `Move.history.json` handling for network res…
chrisgitiota Nov 10, 2025
0dc97cd
Some MoveHistoryManager doc fixes
chrisgitiota Nov 10, 2025
6344b38
New test to explicitly test redeploymentents due to breaking changes
chrisgitiota Nov 10, 2025
93eaf35
Fix format issues
chrisgitiota Nov 10, 2025
16ba2eb
chore: ignore incase move lock doesn't have env (#72)
itsyaasir Nov 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ Cargo.lock

# Ignore IDE/editor files
.idea/
.zed/
.vscode/

docs

# ignore IOTA build artifacts & package locks
build

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ serde_json = { version = "1.0", default-features = false }
strum = { version = "0.25", default-features = false, features = ["std", "derive"] }
thiserror = { version = "1.0", default-features = false }
tokio = { version = "1.46.1", default-features = false, features = ["process"] }
tempfile = "3.20.0"
toml = "0.8"

[workspace.lints.clippy]
result_large_err = "allow"
2 changes: 1 addition & 1 deletion iota_interaction/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ async-trait = { version = "0.1.81", default-features = false }
bcs.workspace = true
cfg-if.workspace = true
fastcrypto = { git = "https://github.com/MystenLabs/fastcrypto", rev = "69d496c71fb37e3d22fe85e5bbfd4256d61422b9", package = "fastcrypto", features = ["copy_key"] }
indexmap = "2.9"
indexmap = "2.11.0"
jsonpath-rust = { version = "0.5.1", optional = true }
secret-storage.workspace = true
serde.workspace = true
Expand Down
75 changes: 39 additions & 36 deletions product_common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,85 +11,88 @@ repository.workspace = true
rust-version.workspace = true
description = "Sources shared by IOTA products."

[package.metadata.docs.rs]
# To build locally:
# RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features --no-deps --workspace --open
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
anyhow.workspace = true
async-trait.workspace = true
bcs = { workspace = true, optional = true }
cfg-if.workspace = true
fastcrypto = { workspace = true, optional = true }
iota-keys = { git = "https://github.com/iotaledger/iota.git", package = "iota-keys", tag = "v1.10.0", optional = true }
iota-keys = { package = "iota-keys", git = "https://github.com/iotaledger/iota.git", tag = "v1.10.0", optional = true }
itertools = { version = "0.13.0", optional = true }
lazy_static = { version = "1.5.0", optional = true }
phf.workspace = true
reqwest = { version = "0.12", default-features = false, optional = true }
secret-storage = { git = "https://github.com/iotaledger/secret-storage.git", tag = "v0.3.0", optional = true, default-features = false }
secret-storage = { git = "https://github.com/iotaledger/secret-storage.git", tag = "v0.3.0", default-features = false, optional = true }
serde.workspace = true
serde_json.workspace = true
strum.workspace = true
thiserror.workspace = true
toml = "0.8"
url = { version = "2", default-features = false, optional = true, features = ["serde"] }
toml = { workspace = true, optional = true }
url = { version = "2", default-features = false, features = ["serde"], optional = true }

[dev-dependencies]
iota_interaction = { path = "../iota_interaction", version = "0.8.5" }
iota_interaction_rust = { path = "../iota_interaction_rust", version = "0.8.5" }
tempfile.workspace = true

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
iota_interaction = { version = "0.8.5", path = "../iota_interaction", features = ["keytool"] }
iota_interaction_rust = { version = "0.8.5", path = "../iota_interaction_rust", optional = true }
iota_interaction = { path = "../iota_interaction", version = "0.8.5", features = ["keytool"] }
iota_interaction_rust = { path = "../iota_interaction_rust", version = "0.8.5", optional = true }
iota-sdk.workspace = true
tokio.workspace = true

[target.'cfg(target_arch = "wasm32")'.dependencies]
iota_interaction = { version = "0.8.5", path = "../iota_interaction", default-features = false }
iota_interaction_ts = { version = "0.8.5", path = "../bindings/wasm/iota_interaction_ts" }
iota_interaction = { path = "../iota_interaction", version = "0.8.5", default-features = false }
iota_interaction_ts = { path = "../bindings/wasm/iota_interaction_ts", version = "0.8.5" }
js-sys = { version = "0.3", optional = true }
serde-wasm-bindgen = { version = "0.6", optional = true }
wasm-bindgen = { version = "0.2.100", optional = true }
wasm-bindgen-futures = { version = "0.4", default-features = false, optional = true }
serde-wasm-bindgen = { version = "0.6", optional = true }
js-sys = { version = "0.3", optional = true }

[dev-dependencies]
iota_interaction = { version = "0.8.5", path = "../iota_interaction" }
iota_interaction_rust = { version = "0.8.5", path = "../iota_interaction_rust" }

[features]
default = []
send-sync = ["secret-storage/send-sync-storage"]
binding-utils = ["bindings", "core-client", "transaction"]
bindings = [
"dep:wasm-bindgen",
"dep:wasm-bindgen-futures",
"dep:js-sys",
"dep:serde-wasm-bindgen",
"dep:wasm-bindgen",
"dep:wasm-bindgen-futures",
]
binding-utils = ["bindings", "transaction", "core-client"]
core-client = ["dep:secret-storage"]
# APIs that rely on an HTTP Client won't require the user to provide an HttpClient instance but will
# instead use reqwest::Client.
default-http-client = ["dep:reqwest", "http-client"]
gas-station = ["http-client", "transaction"]
http-client = ["dep:url"]
# Management functions to read Move.lock files and create/update Move.history.json files
move-history-manager = ["dep:toml"]
send-sync = ["secret-storage/send-sync-storage"]
test-utils = [
"dep:lazy_static",
"dep:secret-storage",
"dep:iota-keys",
"dep:bcs",
"dep:fastcrypto",
"dep:iota-keys",
"dep:lazy_static",
"dep:secret-storage",
"send-sync",
]
core-client = ["dep:secret-storage"]
transaction = [
"core-client",
"dep:bcs",
"dep:fastcrypto",
"dep:iota_interaction_rust",
"dep:itertools",
"dep:secret-storage",
"dep:fastcrypto",
"dep:bcs",
]
http-client = ["dep:url"]
gas-station = ["transaction", "http-client"]
# APIs that rely on an HTTP Client won't require the user to provide an HttpClient instance but will
# instead use reqwest::Client.
default-http-client = ["http-client", "dep:reqwest"]

[package.metadata.docs.rs]
# To build locally:
# RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features --no-deps --workspace --open
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[lints.clippy]
result_large_err = "allow"

[lints.rust]
# from local sdk types
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(msim)'] }
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(msim)"] }
2 changes: 2 additions & 0 deletions product_common/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ pub mod error;
pub mod gas_station;
#[cfg(feature = "http-client")]
pub mod http_client;
#[cfg(feature = "move-history-manager")]
pub mod move_history_manager;
pub mod network_name;
pub mod object;
pub mod package_registry;
Expand Down
Loading
Loading