@foss.global/gitmanager 2.0.0 → 2.2.0

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 (41) hide show
  1. package/.smartconfig.json +3 -1
  2. package/changelog.md +30 -0
  3. package/dist_rust/rustgitmanager_linux_amd64 +0 -0
  4. package/dist_rust/rustgitmanager_linux_amd64.tsrust-build.json +5 -5
  5. package/dist_rust/rustgitmanager_linux_arm64 +0 -0
  6. package/dist_rust/rustgitmanager_linux_arm64.tsrust-build.json +5 -5
  7. package/dist_ts/00_commitinfo_data.js +1 -1
  8. package/dist_ts/classes.archiveinspection.d.ts +11 -0
  9. package/dist_ts/classes.archiveinspection.js +205 -0
  10. package/dist_ts/classes.gitmanager.d.ts +19 -1
  11. package/dist_ts/classes.gitmanager.js +54 -1
  12. package/dist_ts/classes.gitmanagererror.d.ts +11 -0
  13. package/dist_ts/classes.gitmanagererror.js +22 -0
  14. package/dist_ts/index.d.ts +2 -0
  15. package/dist_ts/index.js +3 -1
  16. package/dist_ts/models.d.ts +54 -0
  17. package/dist_ts/rust-gitmanager-bridge.d.ts +5 -1
  18. package/dist_ts/rust-gitmanager-bridge.js +41 -2
  19. package/native-notices/crates/cc-1.8.0/license-apache +201 -0
  20. package/native-notices/crates/cc-1.8.0/license-mit +25 -0
  21. package/native-notices/crates/find-msvc-tools-0.1.14/license-apache +201 -0
  22. package/native-notices/crates/find-msvc-tools-0.1.14/license-mit +25 -0
  23. package/native-notices/crates/shlex-2.0.1/license-apache +13 -0
  24. package/native-notices/crates/shlex-2.0.1/license-mit +21 -0
  25. package/native-notices/crates/tikv-jemalloc-sys-0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8/license-apache +201 -0
  26. package/native-notices/crates/tikv-jemalloc-sys-0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8/license-mit +25 -0
  27. package/native-notices/crates/tikv-jemallocator-0.7.0/license-apache +201 -0
  28. package/native-notices/crates/tikv-jemallocator-0.7.0/license-mit +25 -0
  29. package/native-notices/manifest.json +135 -1
  30. package/native-notices/native/tikv-jemalloc-sys-0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8/jemalloc-5.3.1/jemalloc-copying +27 -0
  31. package/native-notices/readme.md +5 -3
  32. package/package.json +9 -8
  33. package/readme.md +38 -2
  34. package/thirdparty.md +7 -0
  35. package/ts/00_commitinfo_data.ts +1 -1
  36. package/ts/classes.archiveinspection.ts +245 -0
  37. package/ts/classes.gitmanager.ts +62 -0
  38. package/ts/classes.gitmanagererror.ts +28 -0
  39. package/ts/index.ts +2 -0
  40. package/ts/models.ts +65 -0
  41. package/ts/rust-gitmanager-bridge.ts +48 -1
@@ -23,6 +23,7 @@
23
23
  "base64@0.22.1",
24
24
  "block-buffer@0.10.4",
25
25
  "bytes@1.12.0",
26
+ "cc@1.8.0",
26
27
  "cfg-if@1.0.4",
27
28
  "clap@4.6.1",
28
29
  "clap_builder@4.6.0",
@@ -34,6 +35,7 @@
34
35
  "crypto-common@0.1.7",
35
36
  "digest@0.10.7",
36
37
  "errno@0.3.14",
38
+ "find-msvc-tools@0.1.14",
37
39
  "flate2@1.1.9",
38
40
  "form_urlencoded@1.2.2",
39
41
  "futures-channel@0.3.33",
@@ -83,6 +85,7 @@
83
85
  "serde_urlencoded@0.7.1",
84
86
  "sha2@0.10.9",
85
87
  "sharded-slab@0.1.7",
88
+ "shlex@2.0.1",
86
89
  "signal-hook-registry@1.4.8",
87
90
  "simd-adler32@0.3.10",
88
91
  "slab@0.4.12",
@@ -92,6 +95,8 @@
92
95
  "syn@2.0.118",
93
96
  "sync_wrapper@1.0.2",
94
97
  "thread_local@1.1.9",
98
+ "tikv-jemalloc-sys@0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8",
99
+ "tikv-jemallocator@0.7.0",
95
100
  "tokio-macros@2.7.0",
96
101
  "tokio-stream@0.1.18",
97
102
  "tokio-util@0.7.18",
@@ -133,6 +138,7 @@
133
138
  "base64@0.22.1",
134
139
  "block-buffer@0.10.4",
135
140
  "bytes@1.12.0",
141
+ "cc@1.8.0",
136
142
  "cfg-if@1.0.4",
137
143
  "clap@4.6.1",
138
144
  "clap_builder@4.6.0",
@@ -144,6 +150,7 @@
144
150
  "crypto-common@0.1.7",
145
151
  "digest@0.10.7",
146
152
  "errno@0.3.14",
153
+ "find-msvc-tools@0.1.14",
147
154
  "flate2@1.1.9",
148
155
  "form_urlencoded@1.2.2",
149
156
  "futures-channel@0.3.33",
@@ -193,6 +200,7 @@
193
200
  "serde_urlencoded@0.7.1",
194
201
  "sha2@0.10.9",
195
202
  "sharded-slab@0.1.7",
203
+ "shlex@2.0.1",
196
204
  "signal-hook-registry@1.4.8",
197
205
  "simd-adler32@0.3.10",
198
206
  "slab@0.4.12",
@@ -202,6 +210,8 @@
202
210
  "syn@2.0.118",
203
211
  "sync_wrapper@1.0.2",
204
212
  "thread_local@1.1.9",
213
+ "tikv-jemalloc-sys@0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8",
214
+ "tikv-jemallocator@0.7.0",
205
215
  "tokio-macros@2.7.0",
206
216
  "tokio-stream@0.1.18",
207
217
  "tokio-util@0.7.18",
@@ -485,6 +495,26 @@
485
495
  }
486
496
  ]
487
497
  },
498
+ {
499
+ "name": "cc",
500
+ "version": "1.8.0",
501
+ "source": "registry+https://github.com/rust-lang/crates.io-index",
502
+ "license": "MIT OR Apache-2.0",
503
+ "files": [
504
+ {
505
+ "path": "crates/cc-1.8.0/license-apache",
506
+ "licenses": [
507
+ "Apache-2.0"
508
+ ]
509
+ },
510
+ {
511
+ "path": "crates/cc-1.8.0/license-mit",
512
+ "licenses": [
513
+ "MIT"
514
+ ]
515
+ }
516
+ ]
517
+ },
488
518
  {
489
519
  "name": "cfg-if",
490
520
  "version": "1.0.4",
@@ -705,6 +735,26 @@
705
735
  }
706
736
  ]
707
737
  },
738
+ {
739
+ "name": "find-msvc-tools",
740
+ "version": "0.1.14",
741
+ "source": "registry+https://github.com/rust-lang/crates.io-index",
742
+ "license": "MIT OR Apache-2.0",
743
+ "files": [
744
+ {
745
+ "path": "crates/find-msvc-tools-0.1.14/license-apache",
746
+ "licenses": [
747
+ "Apache-2.0"
748
+ ]
749
+ },
750
+ {
751
+ "path": "crates/find-msvc-tools-0.1.14/license-mit",
752
+ "licenses": [
753
+ "MIT"
754
+ ]
755
+ }
756
+ ]
757
+ },
708
758
  {
709
759
  "name": "flate2",
710
760
  "version": "1.1.9",
@@ -1647,6 +1697,24 @@
1647
1697
  }
1648
1698
  ]
1649
1699
  },
1700
+ {
1701
+ "name": "shlex",
1702
+ "version": "2.0.1",
1703
+ "source": "registry+https://github.com/rust-lang/crates.io-index",
1704
+ "license": "MIT OR Apache-2.0",
1705
+ "files": [
1706
+ {
1707
+ "path": "crates/shlex-2.0.1/license-apache",
1708
+ "licenses": []
1709
+ },
1710
+ {
1711
+ "path": "crates/shlex-2.0.1/license-mit",
1712
+ "licenses": [
1713
+ "MIT"
1714
+ ]
1715
+ }
1716
+ ]
1717
+ },
1650
1718
  {
1651
1719
  "name": "signal-hook-registry",
1652
1720
  "version": "1.4.8",
@@ -1803,6 +1871,61 @@
1803
1871
  }
1804
1872
  ]
1805
1873
  },
1874
+ {
1875
+ "name": "tikv-jemalloc-sys",
1876
+ "version": "0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8",
1877
+ "source": "registry+https://github.com/rust-lang/crates.io-index",
1878
+ "license": "MIT/Apache-2.0",
1879
+ "files": [
1880
+ {
1881
+ "path": "crates/tikv-jemalloc-sys-0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8/license-apache",
1882
+ "licenses": [
1883
+ "Apache-2.0"
1884
+ ]
1885
+ },
1886
+ {
1887
+ "path": "crates/tikv-jemalloc-sys-0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8/license-mit",
1888
+ "licenses": [
1889
+ "MIT"
1890
+ ]
1891
+ }
1892
+ ],
1893
+ "native": [
1894
+ {
1895
+ "name": "jemalloc",
1896
+ "version": "5.3.1",
1897
+ "license": "BSD-2-Clause",
1898
+ "files": [
1899
+ {
1900
+ "path": "native/tikv-jemalloc-sys-0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8/jemalloc-5.3.1/jemalloc-copying",
1901
+ "licenses": [
1902
+ "BSD-2-Clause"
1903
+ ]
1904
+ }
1905
+ ]
1906
+ }
1907
+ ]
1908
+ },
1909
+ {
1910
+ "name": "tikv-jemallocator",
1911
+ "version": "0.7.0",
1912
+ "source": "registry+https://github.com/rust-lang/crates.io-index",
1913
+ "license": "MIT/Apache-2.0",
1914
+ "files": [
1915
+ {
1916
+ "path": "crates/tikv-jemallocator-0.7.0/license-apache",
1917
+ "licenses": [
1918
+ "Apache-2.0"
1919
+ ]
1920
+ },
1921
+ {
1922
+ "path": "crates/tikv-jemallocator-0.7.0/license-mit",
1923
+ "licenses": [
1924
+ "MIT"
1925
+ ]
1926
+ }
1927
+ ]
1928
+ },
1806
1929
  {
1807
1930
  "name": "tokio-macros",
1808
1931
  "version": "2.7.0",
@@ -2270,6 +2393,8 @@
2270
2393
  "crates/block-buffer-0.10.4/license-apache": "a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5",
2271
2394
  "crates/block-buffer-0.10.4/license-mit": "d5c22aa3118d240e877ad41c5d9fa232f9c77d757d4aac0c2f943afc0a95e0ef",
2272
2395
  "crates/bytes-1.12.0/license": "45f522cacecb1023856e46df79ca625dfc550c94910078bd8aec6e02880b3d42",
2396
+ "crates/cc-1.8.0/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
2397
+ "crates/cc-1.8.0/license-mit": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
2273
2398
  "crates/cfg-if-1.0.4/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
2274
2399
  "crates/cfg-if-1.0.4/license-mit": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
2275
2400
  "crates/clap-4.6.1/license-apache": "c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08",
@@ -2292,6 +2417,8 @@
2292
2417
  "crates/digest-0.10.7/license-mit": "9e0dfd2dd4173a530e238cb6adb37aa78c34c6bc7444e0e10c1ab5d8881f63ba",
2293
2418
  "crates/errno-0.3.14/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
2294
2419
  "crates/errno-0.3.14/license-mit": "8764a597675778ddfd4e25f81b08a05dbcf089ac05662df7613fe67f150e3aa2",
2420
+ "crates/find-msvc-tools-0.1.14/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
2421
+ "crates/find-msvc-tools-0.1.14/license-mit": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
2295
2422
  "crates/flate2-1.1.9/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
2296
2423
  "crates/flate2-1.1.9/license-mit": "025436edff4cfcdde17a5811fdea78892d8482efd1abdec5a17872d07a4f2112",
2297
2424
  "crates/form_urlencoded-1.2.2/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
@@ -2384,6 +2511,8 @@
2384
2511
  "crates/sha2-0.10.9/license-apache": "a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5",
2385
2512
  "crates/sha2-0.10.9/license-mit": "b4eb00df6e2a4d22518fcaa6a2b4646f249b3a3c9814509b22bd2091f1392ff1",
2386
2513
  "crates/sharded-slab-0.1.7/license": "eafbfa606bc005ed7fd2f623d65af17ffe4ef7c017221ac14405bf4140771ea9",
2514
+ "crates/shlex-2.0.1/license-apache": "553fffcd9b1cb158bc3e9edc35da85ca5c3b3d7d2e61c883ebcfa8a65814b583",
2515
+ "crates/shlex-2.0.1/license-mit": "4455bf75a91154108304cb283e0fea9948c14f13e20d60887cf2552449dea3b1",
2387
2516
  "crates/signal-hook-registry-1.4.8/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
2388
2517
  "crates/signal-hook-registry-1.4.8/license-mit": "503558bfefe66ca15e4e3f7955b3cb0ec87fd52f29bf24b336af7bd00e946d5c",
2389
2518
  "crates/simd-adler32-0.3.10/license.md": "42a35170233e83e18856792e748de4c1ce4a63b2afce9a370c89ef3fe23f9f2d",
@@ -2398,6 +2527,10 @@
2398
2527
  "crates/sync_wrapper-1.0.2/license": "0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594",
2399
2528
  "crates/thread_local-1.1.9/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
2400
2529
  "crates/thread_local-1.1.9/license-mit": "c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5",
2530
+ "crates/tikv-jemalloc-sys-0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
2531
+ "crates/tikv-jemalloc-sys-0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8/license-mit": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
2532
+ "crates/tikv-jemallocator-0.7.0/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
2533
+ "crates/tikv-jemallocator-0.7.0/license-mit": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
2401
2534
  "crates/tokio-1.52.3/license": "253cd04c6714889df2d32f3f64d669179a1c95c76ac43c40882c52eb06bc3552",
2402
2535
  "crates/tokio-macros-2.7.0/license": "0b83dc40cba89b9922bb84b0a9c7d2768ce37c1d7e138b7424fd4549915778c9",
2403
2536
  "crates/tokio-stream-0.1.18/license": "253cd04c6714889df2d32f3f64d669179a1c95c76ac43c40882c52eb06bc3552",
@@ -2421,7 +2554,8 @@
2421
2554
  "crates/version_check-0.9.5/license-apache": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
2422
2555
  "crates/version_check-0.9.5/license-mit": "b7e650f3fce5c53249d1cdc608b54df156a97edd636cf9d23498d0cfe7aec63e",
2423
2556
  "crates/zmij-1.0.21/license-mit": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
2424
- "readme.md": "04809ae136a7ad00a51d3c6bf1f89d187f30b29215a331dfc303ab94ebfba0e0",
2557
+ "native/tikv-jemalloc-sys-0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8/jemalloc-5.3.1/jemalloc-copying": "94aa2caa98c25d942f58b956c71dba6a99ff98fc3a31cbc669fe2a4cd0268b53",
2558
+ "readme.md": "81effb0ac33ff0b14d70a6d2deca504acbd941d13aa962744af7890ba6887fb5",
2425
2559
  "runtime/gcc/gpl-3.0.txt": "8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903",
2426
2560
  "runtime/gcc/runtime-library-exception-3.1.txt": "9d6b43ce4d8de0c878bf16b54d8e7a10d9bd42b75178153e3af6a815bdc90f74",
2427
2561
  "runtime/glibc/lgpl-2.1.txt": "dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551",
@@ -0,0 +1,27 @@
1
+ Unless otherwise specified, files in the jemalloc source distribution are
2
+ subject to the following license:
3
+ --------------------------------------------------------------------------------
4
+ Copyright (C) 2002-present Jason Evans <jasone@canonware.com>.
5
+ All rights reserved.
6
+ Copyright (C) 2007-2012 Mozilla Foundation. All rights reserved.
7
+ Copyright (C) 2009-present Facebook, Inc. All rights reserved.
8
+
9
+ Redistribution and use in source and binary forms, with or without
10
+ modification, are permitted provided that the following conditions are met:
11
+ 1. Redistributions of source code must retain the above copyright notice(s),
12
+ this list of conditions and the following disclaimer.
13
+ 2. Redistributions in binary form must reproduce the above copyright notice(s),
14
+ this list of conditions and the following disclaimer in the documentation
15
+ and/or other materials provided with the distribution.
16
+
17
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY EXPRESS
18
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
20
+ EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
21
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ --------------------------------------------------------------------------------
@@ -12,15 +12,17 @@ package's own code is covered by its own license.
12
12
 
13
13
  | Target | Rust target | Linkage | Cargo packages |
14
14
  | --- | --- | --- | --- |
15
- | linux_amd64 | x86_64-unknown-linux-gnu | dynamic glibc | 99 |
16
- | linux_arm64 | aarch64-unknown-linux-gnu | dynamic glibc | 99 |
15
+ | linux_amd64 | x86_64-unknown-linux-gnu | dynamic glibc | 104 |
16
+ | linux_arm64 | aarch64-unknown-linux-gnu | dynamic glibc | 104 |
17
17
 
18
18
  ## Contents
19
19
 
20
- - `crates/`: the license and notice files of the 99 third-party Cargo packages compiled
20
+ - `crates/`: the license and notice files of the 104 third-party Cargo packages compiled
21
21
  for these targets (normal and build dependencies, including procedural macros;
22
22
  development dependencies are excluded), copied verbatim. `manifest.json` records each
23
23
  package's license expression, the texts that cover it, and the targets it is built for.
24
+ - `native/`: the license files of C and C++ libraries that Cargo packages compile into
25
+ the executables.
24
26
  - `rust/`: the Rust standard library copyright inventory and license texts from the
25
27
  toolchain, and compiler-builtins' license.
26
28
  `rust/crates/` holds the license files of 5 standard-library dependencies the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foss.global/gitmanager",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "private": false,
5
5
  "description": "Headless Git manager for the foss.global Git platform, with a TypeScript API and Rust engine.",
6
6
  "exports": {
@@ -14,13 +14,13 @@
14
14
  "@push.rocks/smartrust": "^1.7.0"
15
15
  },
16
16
  "devDependencies": {
17
- "@foss.global/ci-spec": "0.2.0",
18
- "@git.zone/tsbuild": "^5.0.0",
19
- "@git.zone/tsdoc": "^2.2.2",
20
- "@git.zone/tsrun": "^3.0.0",
21
- "@git.zone/tsrust": "^1.15.0",
22
- "@git.zone/tstest": "^6.2.0",
23
- "@types/node": "^26.6.1"
17
+ "@foss.global/ci-spec": "1.1.1",
18
+ "@git.zone/tsbuild": "^6.0.2",
19
+ "@git.zone/tsdoc": "^3.0.2",
20
+ "@git.zone/tsrun": "^3.0.3",
21
+ "@git.zone/tsrust": "^4.3.0",
22
+ "@git.zone/tstest": "^7.2.1",
23
+ "@types/node": "^26.6.4"
24
24
  },
25
25
  "files": [
26
26
  "ts/**/*",
@@ -61,6 +61,7 @@
61
61
  "test": "tstest test/ --verbose --logfile --timeout 60",
62
62
  "test:rust": "(cd rust && cargo test)",
63
63
  "build": "(tsbuild tsfolders) && (tsrust)",
64
+ "build:release": "(tsbuild tsfolders) && (tsrust --configured-targets) && (tsrust verify)",
64
65
  "buildDocs": "tsdoc"
65
66
  }
66
67
  }
package/readme.md CHANGED
@@ -283,6 +283,39 @@ if (!readiness.ready) {
283
283
 
284
284
  When Git Smart HTTP is running on a loopback bind, the probe targets the engine's own `GET /healthz` route out-of-band, so readiness stays available while the serial management channel is busy with a long-running command such as a mirror import. Repository archive creation also keeps management status and cancellation responsive while preserving serial admission for every other stateful command. Without a loopback Smart HTTP route, including a service bound to a non-loopback address with `allowUnsafeNonLoopback`, one shared bounded `getStatus` round trip per instance is used; that fallback queues behind other in-flight management commands and a Smart HTTP probe failure never falls through to it. Failure reasons are `not_running`, `starting`, `stopping`, `aborted`, `timeout`, and `unavailable`; the result matches the readiness contracts of `@push.rocks/smartdata` and `@push.rocks/smartbucket`.
285
285
 
286
+ ## Commit ancestry
287
+
288
+ `isAncestor()` answers `git merge-base --is-ancestor` exactly: whether the ancestor commit is reachable from the descendant commit, where a commit is its own ancestor. Both object IDs must be full lowercase SHA-1 or SHA-256 IDs of commits in the repository; revision expressions, abbreviations, and tag objects are refused, so peel a tag before asking.
289
+
290
+ ```ts
291
+ // Throws GitManagerError (error.code) unless the answer is exact.
292
+ const reachableFromMain = await gitManager.isAncestor({
293
+ org: 'foss.global',
294
+ repo: 'gitmanager',
295
+ ancestorObjectId: taggedCommitId,
296
+ descendantObjectId: mainTipCommitId,
297
+ timeoutMs: 10_000,
298
+ });
299
+ ```
300
+
301
+ `timeoutMs` is the work budget for the object lookup and the history walk together: 1 to 60000 ms, 10000 by default. When it runs out, the Git process is killed and the call throws. It never returns `false` for anything but an exact answer; the typed codes are `invalidObjectId`, `objectNotFound`, `objectNotCommit`, and `ancestryBudgetExceeded`. The check runs on the serial management channel like the other read APIs.
302
+
303
+ ## Archive inspection
304
+
305
+ `inspectArchive()` validates a `tar.gz` on the receiving side of a transfer, for example a CI artifact or cache upload. It streams the archive, given as a `Uint8Array` or any async iterable of `Uint8Array` chunks such as a Node stream or a fetch body, into a dedicated engine process. That process checks every entry against the rules GitManager applies to its own source archives and the `@foss.global/ci-spec` archive conformance vectors: safe relative paths, no duplicates or late ancestors, only regular files, directories and symlinks whose targets stay inside the root (including through chains), USTAR and supported PAX metadata only, zeroed padding, no trailing data or concatenated gzip members, and the fixed 134,217,728-byte path-metadata ceiling.
306
+
307
+ ```ts
308
+ const inspection = await gitManager.inspectArchive({
309
+ archive: uploadStream,
310
+ maxCompressedBytes: 16 * 1024 ** 3,
311
+ maxExtractedBytes: 128 * 1024 ** 3,
312
+ maxEntries: 1_000_000,
313
+ }, { signal });
314
+ // { sizeBytes, sha256, extractedSizeBytes, entryCount, pathMetadataBytes }
315
+ ```
316
+
317
+ The metadata is recomputed from the bytes, so compare it with what the sender declared rather than trusting the declaration. Every limit is inclusive and must be a non-negative safe integer; `maxPathMetadataBytes` is 1 to 134217728 and defaults to the ceiling. A refused archive throws a `GitManagerError` with code `archiveLimitExceeded` (a requested limit) or `archiveRejected` (a format, path, or link rule), and the inspector stops reading at the first violation and closes the source. Aborting the signal or calling `stop()` kills the inspector; the call rejects only after the process exited. The inspection does not use the management channel, so several can run at once.
318
+
286
319
  ## Public API
287
320
 
288
321
  - `GitManager`: TypeScript facade for the Rust engine lifecycle.
@@ -310,9 +343,12 @@ When Git Smart HTTP is running on a loopback bind, the probe targets the engine'
310
343
  - `GitManager.getDiff()`: returns a structured unified diff between a head ref and its first parent or an explicit base ref.
311
344
  - `GitManager.listTags()`: lists lightweight and annotated tags with target object metadata.
312
345
  - `GitManager.getTag()`: reads one tag by exact name.
346
+ - `GitManager.isAncestor()`: answers exact commit ancestry within a work budget, with typed errors for anything else.
347
+ - `GitManager.inspectArchive(request, { signal? })`: streams a receiver-side `tar.gz` through the engine inspector and returns its recomputed metadata or a typed refusal.
313
348
  - `GitManager.running`: local facade running state.
314
349
  - `RustGitManagerBridge`: lower-level typed bridge around `@push.rocks/smartrust`.
315
- - `IGitManagerOptions`, `IGitManagerStatus`, `IGitManagerReadinessOptions`, `TGitManagerReadinessResult`, `TGitManagerReadinessFailureReason`, `IRustGitManagerConfig`, `IGitManagerProtectedRefRule`, `IGitManagerSmartHttpRepositoryProtectedRefs`, `TGitManagerProtectedRefsApplyStatus`, and `IGitManagerProtectedRefsApplyResult`: exported option, status, readiness, and protected-ref contracts.
350
+ - `GitManagerError` and `TGitManagerErrorCode`: typed failures with a stable `code`; `gitManagerArchivePathMetadataCeilingBytes` is the fixed archive path-metadata ceiling.
351
+ - `IGitManagerAncestryRequest`, `IGitManagerArchiveInspectionRequest`, `IGitManagerArchiveInspectionOptions`, `IGitManagerArchiveInspection`, `IGitManagerOptions`, `IGitManagerStatus`, `IGitManagerReadinessOptions`, `TGitManagerReadinessResult`, `TGitManagerReadinessFailureReason`, `IRustGitManagerConfig`, `IGitManagerProtectedRefRule`, `IGitManagerSmartHttpRepositoryProtectedRefs`, `TGitManagerProtectedRefsApplyStatus`, and `IGitManagerProtectedRefsApplyResult`: exported option, status, readiness, and protected-ref contracts.
316
352
 
317
353
  Repository/read DTO contracts are re-exported from the published `@foss.global/interfaces` package.
318
354
 
@@ -339,7 +375,7 @@ pnpm run test:rust
339
375
  pnpm run build
340
376
  ```
341
377
 
342
- `pnpm test` runs the `pretest` hook first, which builds the Rust binaries with `tsrust`, and then runs lifecycle, bounded readiness, local mirror/read API, raw upload-pack/receive-pack preparation, clone/fetch denial, trusted receive-pack denial, explicit policy initialization, protected create/delete/non-fast-forward enforcement, inherited self-test hardening, restart replay, and real push tests through `smartrust`. `test/test.refinventory.node.ts` covers every ref namespace, peeled and nested tags, symbolic and dangling symbolic refs, unborn HEAD, prefix selection and exact lookup, ref names that are not valid UTF-8, pagination of 1,001 refs, stale and foreign cursors, 50,000 loose and packed refs, and a bundle round trip across namespaces. `test/test.pushlimits.node.ts` covers fixed-length and chunked Smart HTTP pushes over the limit, a complete pack followed by late excess bytes, an over-limit SSH-style receive-pack, an SSH-style receive-pack cut after Git already moved a ref (the update stays), and a bounded `stop()` while a service's output is never read, the rejected cases proving the refs unchanged, no Git or hook process left, no uncaught stream error, the engine serving, and a later push succeeding.
378
+ `pnpm test` runs the `pretest` hook first, which builds the Rust binaries with `tsrust`, and then runs lifecycle, bounded readiness, local mirror/read API, raw upload-pack/receive-pack preparation, clone/fetch denial, trusted receive-pack denial, explicit policy initialization, protected create/delete/non-fast-forward enforcement, inherited self-test hardening, restart replay, and real push tests through `smartrust`. `test/test.refinventory.node.ts` covers every ref namespace, peeled and nested tags, symbolic and dangling symbolic refs, unborn HEAD, prefix selection and exact lookup, ref names that are not valid UTF-8, pagination of 1,001 refs, stale and foreign cursors, 50,000 loose and packed refs, and a bundle round trip across namespaces. `test/test.pushlimits.node.ts` covers fixed-length and chunked Smart HTTP pushes over the limit, a complete pack followed by late excess bytes, an over-limit SSH-style receive-pack, an SSH-style receive-pack cut after Git already moved a ref (the update stays), and a bounded `stop()` while a service's output is never read, the rejected cases proving the refs unchanged, no Git or hook process left, no uncaught stream error, the engine serving, and a later push succeeding. `test/test.ancestry.node.ts` covers ancestors, the reverse direction, siblings, merges, unrelated histories, the same commit, invalid, missing and non-commit objects, a budget exceeded on a 20,000-commit history next to the exact answer, and a stalled walk whose Git process is killed. `test/test.archiveinspection.node.ts` runs every ci-spec archive conformance vector through `inspectArchive()` as bytes and as a chunked stream, the compressed limit at its boundary, an 8 MiB streamed archive, an early refusal that closes the source, and abort, source failure and `stop()` during an inspection.
343
379
 
344
380
  ## License and Legal Information
345
381
 
package/thirdparty.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  This package bundles Rust binaries in `dist_rust/`. Those binaries are built from the Rust crates listed below. Each dependency remains licensed by its respective authors under the stated license expression.
4
4
 
5
+ The generated `native-notices/` directory ships the complete license texts, including jemalloc 5.3.1's BSD-2-Clause COPYING bundled by `tikv-jemalloc-sys`, the Rust runtime and platform runtime notices.
6
+
5
7
  | Crate | Version | License |
6
8
  | --- | --- | --- |
7
9
  | adler2 | 2.0.1 | 0BSD OR MIT OR Apache-2.0 |
@@ -19,6 +21,7 @@ This package bundles Rust binaries in `dist_rust/`. Those binaries are built fro
19
21
  | bitflags | 2.13.0 | Apache-2.0 OR MIT |
20
22
  | block-buffer | 0.10.4 | MIT OR Apache-2.0 |
21
23
  | bytes | 1.12.0 | MIT |
24
+ | cc | 1.8.0 | MIT OR Apache-2.0 |
22
25
  | cfg-if | 1.0.4 | Apache-2.0 OR MIT |
23
26
  | clap | 4.6.1 | Apache-2.0 OR MIT |
24
27
  | clap_builder | 4.6.0 | Apache-2.0 OR MIT |
@@ -30,6 +33,7 @@ This package bundles Rust binaries in `dist_rust/`. Those binaries are built fro
30
33
  | crypto-common | 0.1.7 | MIT OR Apache-2.0 |
31
34
  | digest | 0.10.7 | MIT OR Apache-2.0 |
32
35
  | errno | 0.3.14 | Apache-2.0 OR MIT |
36
+ | find-msvc-tools | 0.1.14 | MIT OR Apache-2.0 |
33
37
  | flate2 | 1.1.9 | MIT OR Apache-2.0 |
34
38
  | form_urlencoded | 1.2.2 | Apache-2.0 OR MIT |
35
39
  | futures-channel | 0.3.33 | Apache-2.0 OR MIT |
@@ -81,6 +85,7 @@ This package bundles Rust binaries in `dist_rust/`. Those binaries are built fro
81
85
  | serde_urlencoded | 0.7.1 | Apache-2.0 OR MIT |
82
86
  | sha2 | 0.10.9 | MIT OR Apache-2.0 |
83
87
  | sharded-slab | 0.1.7 | MIT |
88
+ | shlex | 2.0.1 | MIT OR Apache-2.0 |
84
89
  | signal-hook-registry | 1.4.8 | Apache-2.0 OR MIT |
85
90
  | simd-adler32 | 0.3.10 | MIT |
86
91
  | slab | 0.4.12 | MIT |
@@ -90,6 +95,8 @@ This package bundles Rust binaries in `dist_rust/`. Those binaries are built fro
90
95
  | syn | 2.0.118 | Apache-2.0 OR MIT |
91
96
  | sync_wrapper | 1.0.2 | Apache-2.0 |
92
97
  | thread_local | 1.1.9 | Apache-2.0 OR MIT |
98
+ | tikv-jemalloc-sys | 0.7.1+5.3.1-0-g81034ce1f1373e37dc865038e1bc8eeecf559ce8 | MIT OR Apache-2.0 |
99
+ | tikv-jemallocator | 0.7.0 | MIT OR Apache-2.0 |
93
100
  | tokio | 1.52.3 | MIT |
94
101
  | tokio-macros | 2.7.0 | MIT |
95
102
  | tokio-stream | 0.1.18 | MIT |
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@foss.global/gitmanager',
6
- version: '2.0.0',
6
+ version: '2.2.0',
7
7
  description: 'Headless Git manager for the foss.global Git platform, with a TypeScript API and Rust engine.'
8
8
  }