From 4df5f8491320e5795718cf0222e80fa27e57c8ad Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 11 May 2026 02:05:34 +0900 Subject: refactor(package): rename traits and switch dep maps to IndexMap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename Package/CompletePackage to PackageInterface/CompletePackageInterface to mirror Composer's interface names, and split each into its own module under crates/mozart-core/src/package/. Switch dependency-link and metadata maps from BTreeMap to indexmap::IndexMap so serialized JSON preserves the original key ordering rather than sorting alphabetically — matching PHP associative-array semantics. The --sort-packages behaviour in `require` is preserved via sort_unstable_keys. --- .../src/package/complete_package_interface.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 crates/mozart-core/src/package/complete_package_interface.rs (limited to 'crates/mozart-core/src/package/complete_package_interface.rs') diff --git a/crates/mozart-core/src/package/complete_package_interface.rs b/crates/mozart-core/src/package/complete_package_interface.rs new file mode 100644 index 0000000..c321309 --- /dev/null +++ b/crates/mozart-core/src/package/complete_package_interface.rs @@ -0,0 +1,17 @@ +use crate::package::{Author, Funding, PackageInterface, Support}; + +/// ref: \Composer\Package\CompletePackageInterface +pub trait CompletePackageInterface: PackageInterface { + fn description(&self) -> Option<&str>; + fn homepage(&self) -> Option<&str>; + fn license(&self) -> &[String]; + fn keywords(&self) -> &[String]; + fn authors(&self) -> &[Author]; + fn scripts(&self) -> &indexmap::IndexMap>; + fn support(&self) -> &Support; + fn funding(&self) -> &[Funding]; + fn repositories(&self) -> &[serde_json::Value]; + fn abandoned(&self) -> Option<&str>; + fn archive_name(&self) -> Option<&str>; + fn archive_excludes(&self) -> &[String]; +} -- cgit v1.3.1