code-split 1.0.0a1__tar.gz → 1.0.0a2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. {code_split-1.0.0a1 → code_split-1.0.0a2}/Cargo.lock +4 -4
  2. {code_split-1.0.0a1 → code_split-1.0.0a2}/Cargo.toml +4 -4
  3. {code_split-1.0.0a1 → code_split-1.0.0a2}/PKG-INFO +5 -5
  4. {code_split-1.0.0a1 → code_split-1.0.0a2}/README.md +4 -4
  5. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/config.rs +0 -1
  6. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/main.rs +7 -2
  7. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/plugin/javascript.rs +9 -2
  8. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/plugin/rust.rs +7 -4
  9. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/tests/e2e.rs +2 -2
  10. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-complexity/examples/bench.rs +3 -3
  11. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-complexity/examples/debug_spaces.rs +3 -3
  12. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-core/src/snapshot.rs +1 -4
  13. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-syn/examples/bench_complexity.rs +3 -3
  14. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-syn/src/module_graph.rs +9 -16
  15. {code_split-1.0.0a1 → code_split-1.0.0a2}/LICENSE +0 -0
  16. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/Cargo.toml +0 -0
  17. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/app.js +0 -0
  18. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/dagre.min.js +0 -0
  19. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/diagram.js +0 -0
  20. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/diff.js +0 -0
  21. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/export-popup.js +0 -0
  22. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/graphviz.umd.js +0 -0
  23. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/index.css +0 -0
  24. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/index.html +0 -0
  25. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/layout.js +0 -0
  26. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/modal.js +0 -0
  27. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/nav.js +0 -0
  28. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/node-table.js +0 -0
  29. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/panzoom.js +0 -0
  30. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/snarkdown.umd.js +0 -0
  31. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/state.js +0 -0
  32. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/summary.js +0 -0
  33. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/ui.js +0 -0
  34. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/assets/utils.js +0 -0
  35. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/git.rs +0 -0
  36. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/logger.rs +0 -0
  37. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/plugin/finalize.rs +0 -0
  38. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/plugin/mod.rs +0 -0
  39. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-cli/src/plugin/python.rs +0 -0
  40. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-complexity/Cargo.toml +0 -0
  41. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-complexity/src/lib.rs +0 -0
  42. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-core/Cargo.toml +0 -0
  43. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-core/src/builder.rs +0 -0
  44. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-core/src/cycles.rs +0 -0
  45. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-core/src/diff.rs +0 -0
  46. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-core/src/graph.rs +0 -0
  47. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-core/src/hk.rs +0 -0
  48. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-core/src/lib.rs +0 -0
  49. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-core/src/stats.rs +0 -0
  50. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-syn/Cargo.toml +0 -0
  51. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-syn/src/crate_graph.rs +0 -0
  52. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-syn/src/ids.rs +0 -0
  53. {code_split-1.0.0a1 → code_split-1.0.0a2}/crates/code-split-syn/src/lib.rs +0 -0
  54. {code_split-1.0.0a1 → code_split-1.0.0a2}/pyproject.toml +0 -0
@@ -214,7 +214,7 @@ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
214
214
 
215
215
  [[package]]
216
216
  name = "code-split"
217
- version = "1.0.0-alpha.1"
217
+ version = "1.0.0-alpha.2"
218
218
  dependencies = [
219
219
  "anyhow",
220
220
  "chrono",
@@ -237,7 +237,7 @@ dependencies = [
237
237
 
238
238
  [[package]]
239
239
  name = "code-split-complexity"
240
- version = "1.0.0-alpha.1"
240
+ version = "1.0.0-alpha.2"
241
241
  dependencies = [
242
242
  "anyhow",
243
243
  "code-split-core",
@@ -248,7 +248,7 @@ dependencies = [
248
248
 
249
249
  [[package]]
250
250
  name = "code-split-core"
251
- version = "1.0.0-alpha.1"
251
+ version = "1.0.0-alpha.2"
252
252
  dependencies = [
253
253
  "chrono",
254
254
  "petgraph 0.6.5",
@@ -258,7 +258,7 @@ dependencies = [
258
258
 
259
259
  [[package]]
260
260
  name = "code-split-syn"
261
- version = "1.0.0-alpha.1"
261
+ version = "1.0.0-alpha.2"
262
262
  dependencies = [
263
263
  "anyhow",
264
264
  "cargo_metadata",
@@ -3,7 +3,7 @@ members = ["crates/*"]
3
3
  resolver = "3"
4
4
 
5
5
  [workspace.package]
6
- version = "1.0.0-alpha.1"
6
+ version = "1.0.0-alpha.2"
7
7
  edition = "2024"
8
8
  rust-version = "1.95"
9
9
  license = "Apache-2.0"
@@ -12,9 +12,9 @@ keywords = ["dependency-graph", "coupling", "refactoring", "code-quality", "stat
12
12
  categories = ["development-tools", "command-line-utilities"]
13
13
 
14
14
  [workspace.dependencies]
15
- code-split-core = { path = "crates/code-split-core", version = "1.0.0-alpha.1" }
16
- code-split-syn = { path = "crates/code-split-syn", version = "1.0.0-alpha.1" }
17
- code-split-complexity = { path = "crates/code-split-complexity", version = "1.0.0-alpha.1" }
15
+ code-split-core = { path = "crates/code-split-core", version = "1.0.0-alpha.2" }
16
+ code-split-syn = { path = "crates/code-split-syn", version = "1.0.0-alpha.2" }
17
+ code-split-complexity = { path = "crates/code-split-complexity", version = "1.0.0-alpha.2" }
18
18
 
19
19
  anyhow = "1.0"
20
20
  globset = "0.4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-split
3
- Version: 1.0.0a1
3
+ Version: 1.0.0a2
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -25,7 +25,7 @@ Project-URL: Repository, https://github.com/ffedoroff/code-split
25
25
 
26
26
  [![CI](https://github.com/ffedoroff/code-split/actions/workflows/ci.yml/badge.svg)](https://github.com/ffedoroff/code-split/actions/workflows/ci.yml)
27
27
  [![codecov](https://codecov.io/gh/ffedoroff/code-split/branch/main/graph/badge.svg)](https://codecov.io/gh/ffedoroff/code-split)
28
- [![dependencies](https://deps.rs/crate/code-split/1.0.0-alpha.1/status.svg)](https://deps.rs/crate/code-split/1.0.0-alpha.1)
28
+ [![dependencies](https://deps.rs/crate/code-split/1.0.0-alpha.2/status.svg)](https://deps.rs/crate/code-split/1.0.0-alpha.2)
29
29
  [![Crates.io](https://img.shields.io/crates/v/code-split.svg)](https://crates.io/crates/code-split)
30
30
  [![npm](https://img.shields.io/npm/v/code-split.svg)](https://www.npmjs.com/package/code-split)
31
31
  [![PyPI](https://img.shields.io/pypi/v/code-split.svg)](https://pypi.org/project/code-split/)
@@ -90,7 +90,7 @@ curl -fsSL https://github.com/ffedoroff/code-split/releases/latest/download/code
90
90
  powershell -ExecutionPolicy ByPass -c "irm https://github.com/ffedoroff/code-split/releases/latest/download/code-split-installer.ps1 | iex"
91
91
 
92
92
  # Rust (Cargo)
93
- cargo install code-split --version 1.0.0-alpha.1
93
+ cargo install code-split --version 1.0.0-alpha.2
94
94
 
95
95
  # Node (npm)
96
96
  npm install -g code-split
@@ -99,10 +99,10 @@ npm install -g code-split
99
99
  pip install code-split
100
100
 
101
101
  # Docker (Docker Hub)
102
- docker pull fedoroff/code-split:1.0.0-alpha.1
102
+ docker pull fedoroff/code-split:1.0.0-alpha.2
103
103
 
104
104
  # Docker (GHCR — no anonymous rate limits)
105
- docker pull ghcr.io/ffedoroff/code-split:1.0.0-alpha.1
105
+ docker pull ghcr.io/ffedoroff/code-split:1.0.0-alpha.2
106
106
  ```
107
107
 
108
108
  All channels ship the same `code-split` binary built from the same Rust source. Linux (x86_64, aarch64), macOS (x86_64, aarch64), Windows (x86_64).
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![CI](https://github.com/ffedoroff/code-split/actions/workflows/ci.yml/badge.svg)](https://github.com/ffedoroff/code-split/actions/workflows/ci.yml)
4
4
  [![codecov](https://codecov.io/gh/ffedoroff/code-split/branch/main/graph/badge.svg)](https://codecov.io/gh/ffedoroff/code-split)
5
- [![dependencies](https://deps.rs/crate/code-split/1.0.0-alpha.1/status.svg)](https://deps.rs/crate/code-split/1.0.0-alpha.1)
5
+ [![dependencies](https://deps.rs/crate/code-split/1.0.0-alpha.2/status.svg)](https://deps.rs/crate/code-split/1.0.0-alpha.2)
6
6
  [![Crates.io](https://img.shields.io/crates/v/code-split.svg)](https://crates.io/crates/code-split)
7
7
  [![npm](https://img.shields.io/npm/v/code-split.svg)](https://www.npmjs.com/package/code-split)
8
8
  [![PyPI](https://img.shields.io/pypi/v/code-split.svg)](https://pypi.org/project/code-split/)
@@ -67,7 +67,7 @@ curl -fsSL https://github.com/ffedoroff/code-split/releases/latest/download/code
67
67
  powershell -ExecutionPolicy ByPass -c "irm https://github.com/ffedoroff/code-split/releases/latest/download/code-split-installer.ps1 | iex"
68
68
 
69
69
  # Rust (Cargo)
70
- cargo install code-split --version 1.0.0-alpha.1
70
+ cargo install code-split --version 1.0.0-alpha.2
71
71
 
72
72
  # Node (npm)
73
73
  npm install -g code-split
@@ -76,10 +76,10 @@ npm install -g code-split
76
76
  pip install code-split
77
77
 
78
78
  # Docker (Docker Hub)
79
- docker pull fedoroff/code-split:1.0.0-alpha.1
79
+ docker pull fedoroff/code-split:1.0.0-alpha.2
80
80
 
81
81
  # Docker (GHCR — no anonymous rate limits)
82
- docker pull ghcr.io/ffedoroff/code-split:1.0.0-alpha.1
82
+ docker pull ghcr.io/ffedoroff/code-split:1.0.0-alpha.2
83
83
  ```
84
84
 
85
85
  All channels ship the same `code-split` binary built from the same Rust source. Linux (x86_64, aarch64), macOS (x86_64, aarch64), Windows (x86_64).
@@ -994,7 +994,6 @@ fn check_node_metrics(
994
994
  }
995
995
  }
996
996
 
997
-
998
997
  /// A clickable "id — path:line" location for a node, falling back to just the id.
999
998
  fn node_location(node: &Node) -> String {
1000
999
  match (node.path.as_str(), node.line) {
@@ -527,7 +527,10 @@ fn print_human_diagnostics(
527
527
  if !tune.is_empty() {
528
528
  println!(" tune {tune}");
529
529
  }
530
- println!(" ref {DOCS_URL}/ERRORS.md#group-{}", v.group.to_lowercase());
530
+ println!(
531
+ " ref {DOCS_URL}/ERRORS.md#group-{}",
532
+ v.group.to_lowercase()
533
+ );
531
534
  println!();
532
535
  }
533
536
 
@@ -838,7 +841,9 @@ fn render_name(template: &str, target: &Path, commit: Option<&str>) -> String {
838
841
  while let Some(start) = out.find("{git-hash-") {
839
842
  let rest = &out[start + "{git-hash-".len()..];
840
843
  let Some(end_rel) = rest.find('}') else { break };
841
- let Ok(n) = rest[..end_rel].parse::<usize>() else { break };
844
+ let Ok(n) = rest[..end_rel].parse::<usize>() else {
845
+ break;
846
+ };
842
847
  let take: String = hash.chars().take(n).collect();
843
848
  let token_end = start + "{git-hash-".len() + end_rel + 1;
844
849
  out.replace_range(start..token_end, &take);
@@ -72,7 +72,11 @@ pub fn run(workspace: &Path) -> Result<(PluginGraphs, Vec<StageTime>)> {
72
72
  /// Returns the `src/` directory if present, otherwise the workspace root.
73
73
  fn find_source_root(workspace: &Path) -> PathBuf {
74
74
  let src = workspace.join("src");
75
- if src.is_dir() { src } else { workspace.to_owned() }
75
+ if src.is_dir() {
76
+ src
77
+ } else {
78
+ workspace.to_owned()
79
+ }
76
80
  }
77
81
 
78
82
  // ---------------------------------------------------------------------------
@@ -268,7 +272,10 @@ fn parse_and_add(
268
272
  /// `react` → `react`, `lodash/fp` → `lodash`, `@scope/pkg/sub` → `@scope/pkg`.
269
273
  /// Returns `None` for relative (`./`, `../`) and `@/` alias specifiers.
270
274
  fn external_package(spec: &str) -> Option<String> {
271
- if spec.starts_with("./") || spec.starts_with("../") || spec.starts_with("@/") || spec.is_empty()
275
+ if spec.starts_with("./")
276
+ || spec.starts_with("../")
277
+ || spec.starts_with("@/")
278
+ || spec.is_empty()
272
279
  {
273
280
  return None;
274
281
  }
@@ -1,5 +1,7 @@
1
1
  use anyhow::Result;
2
- use code_split_core::{Edge, EdgeKind, Graph, GraphBuilder, Node, NodeKind, PluginGraphs, StageTime};
2
+ use code_split_core::{
3
+ Edge, EdgeKind, Graph, GraphBuilder, Node, NodeKind, PluginGraphs, StageTime,
4
+ };
3
5
  use std::collections::hash_map::Entry;
4
6
  use std::collections::{HashMap, HashSet};
5
7
  use std::path::Path;
@@ -87,9 +89,10 @@ fn collapse_to_files(full: Graph) -> Graph {
87
89
  if e.kind != EdgeKind::Contains {
88
90
  continue;
89
91
  }
90
- let (Some(from), Some(to)) =
91
- (node_by_id.get(e.from.as_str()), node_by_id.get(e.to.as_str()))
92
- else {
92
+ let (Some(from), Some(to)) = (
93
+ node_by_id.get(e.from.as_str()),
94
+ node_by_id.get(e.to.as_str()),
95
+ ) else {
93
96
  continue;
94
97
  };
95
98
  if from.kind == NodeKind::Crate && to.kind == NodeKind::Module && !to.path.is_empty() {
@@ -64,8 +64,8 @@ fn run_report(lang: &str) -> Value {
64
64
  .expect("spawn code-split");
65
65
  assert!(status.success(), "code-split failed for sample `{lang}`");
66
66
 
67
- let text = std::fs::read_to_string(out_dir.path().join("fresh.json"))
68
- .expect("read fresh report json");
67
+ let text =
68
+ std::fs::read_to_string(out_dir.path().join("fresh.json")).expect("read fresh report json");
69
69
  serde_json::from_str(&text).expect("parse fresh report json")
70
70
  }
71
71
 
@@ -198,9 +198,9 @@ fn ms(d: Duration) -> f64 {
198
198
  }
199
199
 
200
200
  fn main() {
201
- let root = std::env::args().nth(1).unwrap_or_else(|| {
202
- "/path/to/project".into()
203
- });
201
+ let root = std::env::args()
202
+ .nth(1)
203
+ .unwrap_or_else(|| "/path/to/project".into());
204
204
 
205
205
  let files: Vec<_> = WalkDir::new(&root)
206
206
  .into_iter()
@@ -17,9 +17,9 @@ fn dump(space: &rust_code_analysis::FuncSpace, depth: usize) {
17
17
  }
18
18
 
19
19
  fn main() {
20
- let path_str = std::env::args().nth(1).unwrap_or_else(|| {
21
- "crates/code-split-complexity/src/lib.rs".to_string()
22
- });
20
+ let path_str = std::env::args()
21
+ .nth(1)
22
+ .unwrap_or_else(|| "crates/code-split-complexity/src/lib.rs".to_string());
23
23
  let path = Path::new(&path_str);
24
24
  let src = std::fs::read_to_string(path).expect("read file");
25
25
 
@@ -385,10 +385,7 @@ mod tests {
385
385
 
386
386
  fn sample_snapshot() -> Snapshot {
387
387
  let mut graphs = PluginGraphs::default();
388
- graphs
389
- .files
390
- .nodes
391
- .push(node("crate:foo", NodeKind::Crate));
388
+ graphs.files.nodes.push(node("crate:foo", NodeKind::Crate));
392
389
  Snapshot::new(
393
390
  "report".into(),
394
391
  "/work".into(),
@@ -87,9 +87,9 @@ impl<'ast> Visit<'ast> for FileStats {
87
87
  // ---------------------------------------------------------------------------
88
88
 
89
89
  fn main() {
90
- let root = std::env::args().nth(1).unwrap_or_else(|| {
91
- "/path/to/project".into()
92
- });
90
+ let root = std::env::args()
91
+ .nth(1)
92
+ .unwrap_or_else(|| "/path/to/project".into());
93
93
 
94
94
  let files: Vec<_> = walkdir::WalkDir::new(&root)
95
95
  .into_iter()
@@ -702,26 +702,15 @@ mod tests {
702
702
  index.insert(vec!["commands".into()], "mod:commands".into());
703
703
  let externs: HashMap<String, NodeId> = HashMap::new();
704
704
  assert_eq!(
705
- resolve_use_path(
706
- &["commands".into(), "run".into()],
707
- &[],
708
- &index,
709
- &externs
710
- )
711
- .as_deref(),
705
+ resolve_use_path(&["commands".into(), "run".into()], &[], &index, &externs).as_deref(),
712
706
  Some("mod:commands")
713
707
  );
714
708
  // A leading extern segment still resolves to the extern crate.
715
709
  let mut externs2: HashMap<String, NodeId> = HashMap::new();
716
710
  externs2.insert("once_cell".into(), "crate:once_cell".into());
717
711
  assert_eq!(
718
- resolve_use_path(
719
- &["once_cell".into(), "sync".into()],
720
- &[],
721
- &index,
722
- &externs2
723
- )
724
- .as_deref(),
712
+ resolve_use_path(&["once_cell".into(), "sync".into()], &[], &index, &externs2)
713
+ .as_deref(),
725
714
  Some("crate:once_cell")
726
715
  );
727
716
  }
@@ -737,8 +726,12 @@ mod tests {
737
726
  let mut c = CratePathCollector::default();
738
727
  syn::visit::Visit::visit_file(&mut c, &f);
739
728
  assert!(
740
- c.paths
741
- .contains(&vec!["once_cell".into(), "sync".into(), "Lazy".into(), "new".into()]),
729
+ c.paths.contains(&vec![
730
+ "once_cell".into(),
731
+ "sync".into(),
732
+ "Lazy".into(),
733
+ "new".into()
734
+ ]),
742
735
  "got {:?}",
743
736
  c.paths
744
737
  );
File without changes