diff --git a/.claude/workflow.md b/.claude/workflow.md index c113f1a1b..863f4bc21 100644 --- a/.claude/workflow.md +++ b/.claude/workflow.md @@ -57,6 +57,12 @@ workflow" / "the usual flow" resolve here (see CLAUDE.md §Development Workflow) keeps the pin from rotting, and a `workers-types` change that actually matters shows up as a type error, not as an `npm outdated` row. The exception existed before the v4 → v5 migration removed it; this restores it. + **`@playwright/test` is held at 1.62.1**: 1.63.0 ships WebKit 26.6, and on the + `ubuntu-latest` runner every headless WebKit page then fails + `navigator.storage.getDirectory()` with `UnknownError: The operation failed for an unknown + transient reason`, so the whole `e2e (webkit)` job goes red (reproduced twice on PR #295; + green on the previous build; Chromium and Firefox unaffected). Unpin once a later release + passes the WebKit e2e job. - **`docs-drift.md` on BOTH `documentation` and `integrate`** — the `docs-pr-gate` bot comments only once the PR exists, so the documentation phase can preempt it but cannot see it. Integrate therefore treats that comment like any other red CI signal: read it, diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c4a12e08..88cd39408 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -563,6 +563,7 @@ jobs: if: github.event_name == 'push' needs: [unit-tests] runs-on: ubuntu-latest + timeout-minutes: 30 permissions: contents: write steps: @@ -605,6 +606,7 @@ jobs: contains(github.event.pull_request.labels.*.name, 'bench') needs: [changes, unit-tests] runs-on: ubuntu-latest + timeout-minutes: 60 # Informative only — a flagged regression is a prompt to look, never a # merge gate. Same-runner benchmarking measures too much noise to block on. # Compares per-scenario median-ms, asymmetric (improvements never flag), diff --git a/.gitignore b/.gitignore index 644cf6069..96d19a9e5 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,7 @@ reports/stryker-incremental.json # graft re-creates this on every build to re-admit graft/ to ripgrep; see .rgignore. /.ignore + +# Scratch vitest config dir for the bench warmup-throw spawn guard test — +# must live under the repo root to resolve `vitest/config`. +.bench-warmup-throw-*/ diff --git a/.size-limit.json b/.size-limit.json index 3f66be174..39fbdf3fe 100644 --- a/.size-limit.json +++ b/.size-limit.json @@ -386,7 +386,7 @@ { "name": "Chunks: primitives", "path": "dist/esm/chunks/primitives-*.js", - "limit": "61 kB", + "limit": "62 kB", "gzip": true }, { diff --git a/biome.json b/biome.json index 96121faf7..d235422e9 100644 --- a/biome.json +++ b/biome.json @@ -22,6 +22,8 @@ "tooling/test/unit/bench-ab.test.ts", "tooling/bench-to-snapshot.ts", "tooling/test/unit/bench-to-snapshot.test.ts", + "tooling/bench-summarize.ts", + "tooling/test/unit/bench-summarize.test.ts", "tooling/test/unit/fixture-generator.test.ts", "tooling/test/unit/scaled-bench.test.ts", "tooling/test/unit/bench-dsl.test.ts", @@ -39,7 +41,9 @@ "tooling/truthful-dts.ts", "tooling/audit-assert-tier.ts", "tooling/audit-assert-tier/**/*.ts", - "tooling/test/unit/audit-assert-tier.test.ts" + "tooling/test/unit/audit-assert-tier.test.ts", + "tooling/test/integration/bench-warmup-throw.test.ts", + "tooling/test/fixtures/bench/throwing-warmup.bench.ts" ] }, "formatter": { diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 30757f9e9..5f3568185 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -562,7 +562,7 @@ Surfaced by the 2026-08 perf-remediation run (ADRs 718–736, `design/perf-remed - [x] **30.1** rollup unpin probe — **DONE 2026-08-29: 4.63.1 builds `tokenizeLine` intact; unpinned.** The probe ran three ways against the built bundle — the emitted chunk's branch literals, a functional `[user]` header parse, and a functional malformed-`[core` refusal — each confirmed against a 4.63.0 negative control that reproduced the original defect (both branches absent; every valid header throwing `CONFIG_PARSE_ERROR`). `dispose-free-exit` passes at 4.63.1, and the emitted chunk hash matches the 4.62.5 baseline. The `check:deps` grep exception and the `.claude/workflow.md` note are both dropped. Original entry: `rollup` is pinned to 4.62.5 because 4.63.0 compiles `config-ini.ts`'s `tokenizeLine` incorrectly (deletes the live header/malformed branches after `scanHeaderPrefix`, breaking every built-bundle config parse; caught by the `dispose-free-exit` integration test). Probe 4.63.1+ against that exact function in the built bundle; unpin and drop the `check:deps` exception + `.claude/workflow.md` note when a fixed release builds it intact. Chore-sized; the failing shape is documented in the manifest. - [x] **30.2** `reflog` command malformed-line parity — pre-existing (on main before the perf run): git's reflog machinery skips a malformed reflog line per-line and keeps reading; the `reflog` command's read path diverges from that tolerance shape (the gc retention-root walk was aligned line-grained during the 2026-08 review — `readReflogLenient` / `parseReflogLenient` in `domain/reflog/reflog-format.ts` — but the user-facing `reflog` command was out of that scope). Align the command on the same lenient per-line parse, co-pin against real git with a hand-corrupted reflog fixture. Small. · ADRs 737–747 · design/reflog-command-lenient-parity.md -- [x] **30.3** tree entry-name byte-sensitivity unification (breaking) — pre-existing: `parseTreeContent` (`domain/objects/tree.ts`) and the cursor descent (`tree-cursor.ts` consumers) handle exotic entry-name bytes (BOM-prefixed names) with different tolerance, and `parseTreeContent`'s single `normalizeFileMode` check differs from git's own two-tier malformed-vs-bad mode split that the cursor's `scanMode`/`matchFileModeBytes` already matches (probed, git 2.55.0 — see ADR-723's addendum). Unify scoped to `tree.ts` (the outlier), never by weakening the cursor; co-pin each refusal shape against git. Small, but every change needs an interop pin. **Shipped, far wider than "`tree.ts` (the outlier)" scoped it**: a design-phase measurement found two more decoded-string sites carrying the identical bug (`flatten-raw.ts`'s `validatedName`, `validate-tree.ts`'s fsck checks), so all four decoding read paths unify on raw name bytes — `resolve-tree-path.ts`'s byte-level checks are deleted outright rather than promoted, since no git read path ever refused what they checked. `TreeEntry` is now a **branded** type carrying authoritative `nameBytes` beside a derived `name`, minted only through the exported `treeEntry(mode, name, id)` factory; every `{ name, mode, id }` object-literal construction site — in `src` and in a consumer's own code — must move to a `treeEntry(...)` call. Duplicate-entry-name and `.`/`..`/embedded-`/` refusals, which no git read path ever enforced, are dropped from the object-parse layer; `.`/`..` are refused only where git refuses them, at worktree materialisation and index construction, and the separator refusal is dropped outright. A parse tier now precedes the check tier (`malformed mode` / `empty filename` → `badTree`, ahead of an octal-but-unrecognised mode's `badFilemode`), the orphaned `emptyName` msg-id is deleted, and fsck's `.git`/`.gitmodules`/`.gitattributes`/`.gitignore`/`.mailmap` comparisons now fold git's HFS/NTFS alias matrix instead of matching the literal name. Ships as a major: 3.6.0 → 4.0.0. · ADRs 748–766 · design/tree-entry-byte-sensitivity.md +- [x] **30.3** tree entry-name byte-sensitivity unification (breaking) — pre-existing: `parseTreeContent` (`domain/objects/tree.ts`) and the cursor descent (`tree-cursor.ts` consumers) handle exotic entry-name bytes (BOM-prefixed names) with different tolerance, and `parseTreeContent`'s single `normalizeFileMode` check differs from git's own two-tier malformed-vs-bad mode split that the cursor's `scanMode`/`matchFileModeBytes` already matches (probed, git 2.55.0 — see ADR-752's carried-forward mode-tier addendum). Unify scoped to `tree.ts` (the outlier), never by weakening the cursor; co-pin each refusal shape against git. Small, but every change needs an interop pin. **Shipped, far wider than "`tree.ts` (the outlier)" scoped it**: a design-phase measurement found two more decoded-string sites carrying the identical bug (`flatten-raw.ts`'s `validatedName`, `validate-tree.ts`'s fsck checks), so all four decoding read paths unify on raw name bytes — `resolve-tree-path.ts`'s byte-level checks are deleted outright rather than promoted, since no git read path ever refused what they checked. `TreeEntry` is now a **branded** type carrying authoritative `nameBytes` beside a derived `name`, minted only through the exported `treeEntry(mode, name, id)` factory; every `{ name, mode, id }` object-literal construction site — in `src` and in a consumer's own code — must move to a `treeEntry(...)` call. Duplicate-entry-name and `.`/`..`/embedded-`/` refusals, which no git read path ever enforced, are dropped from the object-parse layer; `.`/`..` are refused only where git refuses them, at worktree materialisation and index construction, and the separator refusal is dropped outright. A parse tier now precedes the check tier (`malformed mode` / `empty filename` → `badTree`, ahead of an octal-but-unrecognised mode's `badFilemode`), the orphaned `emptyName` msg-id is deleted, and fsck's `.git`/`.gitmodules`/`.gitattributes`/`.gitignore`/`.mailmap` comparisons now fold git's HFS/NTFS alias matrix instead of matching the literal name. Ships as a major: 3.6.0 → 4.0.0. · ADRs 748–766 · design/tree-entry-byte-sensitivity.md - [x] **30.4** delta-writing packer for gc/consolidation — **shipped**: `buildPack` now selects and writes `OFS_DELTA` chains (window/depth selection per git's defaults, `pack.depth`/`pack.window`/`pack.windowMemory` config surface) and `maintenance`'s gc/consolidation path uses it, retiring the delta-free inflation note. Byte-identity with git's packer was never the contract; re-measured on the same corpora: ×1.58 barely-deltifiable and ×5.43 worst-case on a deep delta chain against `git -c pack.threads=1 repack -a -d -f`, ×1.42 on tsgit's own real history against `git -c pack.threads=1 gc` — real history carries unreachable objects that `repack -a -d` (no `-A`) drops but tsgit's `gc` retains, so `gc` is the peer that keeps both sides' object counts comparable (24 879 git vs 24 817 tsgit, within 0.25%) instead of charging tsgit for objects git already deleted — down from the retired ×1.29–6.91 base-only brackets, not ×1.00, because git orders delta-base window candidates by path/name-hash while tsgit's gc path carries no path hints and orders by size, so a long run of same-size versions of one file ties and the window samples the wrong neighbours. The design surfaced two things the entry did not anticipate: the two delta-chain readers (the resolver's `collectDeltaChain`, fsck's `walkDeltaChain`) disagreed by one hop on git's default `pack.depth = 50` cap and now both accept exactly that depth; and the absence of path hints on the gc path is what keeps the emission order size-adjacency rather than git's name-hash adjacency. `pack.depth` above 50 is honoured only up to 50 — tsgit's own readers refuse a deeper chain, so the writer never produces one they can't read back, a silent, compression-only divergence. · ADRs 767–778 · design/delta-writing-packer.md - [x] **30.5** streaming index pass for received packs — the fetch/clone receive path streams the pack to quarantine at O(window) RSS, and the index pass now walks it back from disk in bounded windows rather than one whole-pack buffer, but delta resolution (`resolveAllEntries` in `fetch-pack.ts`) still holds every entry's inflated content in memory simultaneously — O(total inflated size) residency, typically larger than the pack itself. A true bounded-memory indexer is a `git index-pack`-scale design: sequential first pass hashing base entries and recording delta positions, second pass resolving deltas by re-reading bases from disk through a size-budgeted cache, thin-pack external bases handled on the same seam. Feature-sized: own design + ADRs; sequenced after 30.4 if the packer work reshapes the shared pack-write/read seams. · ADRs 779–790 · design/streaming-index-pass.md - [ ] **30.6** name-hash ordering for delta-base selection — 30.4's packer orders window candidates by `(typeRank, size DESC, oid ASC)`; git orders by path/name-hash first, then size. Measured on the same corpora, tsgit lands ×1.58 (`MEDIUM_FIXTURE`) and ×5.43 (`DELTA_CHAIN_FIXTURE`) against `git -c pack.threads=1 repack -a -d -f`, and ×1.42 (tsgit's own history) against `git -c pack.threads=1 gc` — the prior ×2.05 real-history figure compared tsgit's cruft-retaining `gc` against a `repack -a -d -f` that drops unreachable objects, so it was charging tsgit for 7 000-plus objects git had already deleted; corrected to a `gc`-vs-`gc` comparison with comparable object counts on both sides, real history now lands closer to git than either synthetic corpus does. A large gain over the retired base-only brackets either way, but the size-gap case for this entry now rests on the deep-chain shape, not on real history. Root cause pinned with `git verify-pack -v`: on the deep-chain fixture 808 of 900 objects landed as non-delta bases with a max chain of 5, against git's ~43, because a long run of same-size versions of one file ties under size ordering and the window samples the wrong neighbours — real, independently evidenced, and untouched by the peer-command correction above. `pack-objects` and `bundle-create` already carry `ClosureObject.path` and could take a name hash immediately; the gc path discards the path its reachability walk already discovers, so the real work is threading it through enumeration and into `BuildPackInput`. Amends the ordering half of ADR-769 and revisits the alternative ADR-769 declined. Depends on 30.4 only — independent of 30.5. Feature-sized: own design + ADRs, and it is not proven to reach ×1.0x until re-measured. diff --git a/docs/adr/389-incremental-stream-hash-verification.md b/docs/adr/389-incremental-stream-hash-verification.md index 001528080..928339403 100644 --- a/docs/adr/389-incremental-stream-hash-verification.md +++ b/docs/adr/389-incremental-stream-hash-verification.md @@ -7,7 +7,7 @@ ## Status -- **Status:** superseded by ADR-718 (default posture; the incremental mechanism stands) +- **Status:** superseded by ADR-718 - **Date:** 2026-06-20 - **Design:** [design/blob-streaming.md](../design/blob-streaming.md) diff --git a/docs/adr/541-raw-node-adapter-layout-root-set.md b/docs/adr/541-raw-node-adapter-layout-root-set.md index 2a0ad7ba0..d5ae0b795 100644 --- a/docs/adr/541-raw-node-adapter-layout-root-set.md +++ b/docs/adr/541-raw-node-adapter-layout-root-set.md @@ -5,7 +5,7 @@ > containment model, canonical-prefix derivation and write-path posture are carried > forward unchanged. -- **Status:** superseded by ADR-721 (read-path wrapper role for first-party adapters; root-set model stands) +- **Status:** superseded by ADR-721 - **Date:** 2026-07-29 - **Design:** docs/design/linked-worktree-discovery.md · **Supersedes/Refines:** refines ADR-535/ADR-537; revises the design's original §3 rooting; refines ADR-495 (commonAncestor's discovery role retired) diff --git a/docs/adr/721-first-party-read-containment-is-single-authority.md b/docs/adr/721-first-party-read-containment-is-single-authority.md index 4b8a4b705..2f751e686 100644 --- a/docs/adr/721-first-party-read-containment-is-single-authority.md +++ b/docs/adr/721-first-party-read-containment-is-single-authority.md @@ -40,9 +40,10 @@ than refused. The config-scope `allowSet` sequencing is preserved: scope reads k resolving to an empty scope, never a throw. Superseded from ADR-541: the premise that the facade wrapper is a load-bearing read-path -layer for first-party adapters. Carried forward from ADR-541: everything else — the -adapter's root-set containment model, canonical-prefix derivation for not-yet-existing -roots, and the write-path posture, all unchanged. +layer for first-party adapters. +Carried forward from ADR-541: everything else — the adapter's root-set containment model, +canonical-prefix derivation for not-yet-existing roots, and the write-path posture, all +unchanged. ## Consequences diff --git a/docs/adr/724-maintenance-command-with-commit-graph-and-gc-lite.md b/docs/adr/724-maintenance-command-with-commit-graph-and-gc-lite.md index 74e64a46e..5b1c09e44 100644 --- a/docs/adr/724-maintenance-command-with-commit-graph-and-gc-lite.md +++ b/docs/adr/724-maintenance-command-with-commit-graph-and-gc-lite.md @@ -16,7 +16,8 @@ subjects: > structured result shape, the midx/`.rev` constraints and the Tier-1 surface gates > are carried forward unchanged. -- **Status:** superseded by ADR-731 (prune semantics), ADR-732 (pack consolidation) and ADR-733 (promisor consolidation); the command and commit-graph task stand +- **Status:** superseded by ADR-731 +- **Also superseded by:** ADR-732 (pack consolidation) and ADR-733 (promisor consolidation); the command and commit-graph task stand - **Date:** 2026-08-26 - **Design:** docs/design/perf-remediation-2026-08.md (DC-2) · **Supersedes/Refines:** un-parks the gc/repack/prune backlog entry (docs/BACKLOG.md) diff --git a/docs/adr/752-tree-read-paths-accept-duplicate-entry-names.md b/docs/adr/752-tree-read-paths-accept-duplicate-entry-names.md index 453069e69..9c72d31cd 100644 --- a/docs/adr/752-tree-read-paths-accept-duplicate-entry-names.md +++ b/docs/adr/752-tree-read-paths-accept-duplicate-entry-names.md @@ -50,11 +50,11 @@ keep **last**-wins; `fsck` remains the sole detector and continues to report a d finding. `Tree.entries` is an ordered array and may legitimately contain two entries sharing a name. -**Superseded from ADR-723:** the duplicate-entry-name refusal on read paths — both the +Superseded from ADR-723: the duplicate-entry-name refusal on read paths — both the per-directory `Set` re-implemented in the cursor descent and `parseTreeContent`'s own `names` set — together with the unpinned premise that git's behaviour here was unknown. -**Carried forward from ADR-723:** the ruling that the cursor's own unconditional scan +Carried forward from ADR-723: the ruling that the cursor's own unconditional scan stays minimal and that name-shape validation is re-implemented per consumer rather than inside `TreeCursor`; the finding that the raw merge-join deliberately carries neither check; and the entire mode-tier addendum, which ADR-754 acts on rather than reverses. diff --git a/docs/adr/800-the-zero-sample-guard-lives-in-both-the-bench-dsl-and-the-snapshot-converter.md b/docs/adr/800-the-zero-sample-guard-lives-in-both-the-bench-dsl-and-the-snapshot-converter.md new file mode 100644 index 000000000..ec8728d3a --- /dev/null +++ b/docs/adr/800-the-zero-sample-guard-lives-in-both-the-bench-dsl-and-the-snapshot-converter.md @@ -0,0 +1,43 @@ +--- +subjects: + - test/bench/support/bench-dsl.ts + - tooling/bench-to-snapshot.ts +--- +# 800 — The zero-sample guard lives in both the bench DSL and the snapshot converter + +- **Status:** accepted +- **Date:** 2026-09-04 +- **Design:** docs/design/bench-snapshot-summary-adr-lint.md (D1) · **Supersedes/Refines:** none + +## Context + +A benchmark whose measured function throws during warmup is reported by `vitest bench` as a +pass with an empty sample list and exit code 0: tinybench stores the warmup error on the task +and throws it only when its `throws` option is set, which vitest never sets, and the run phase +returns early on a stored error before any event fires. The fetch-pack scenario shipped in that +state and the only component that noticed was the publish action on `main`, rejecting a snapshot +entry that had no value. Two holes, two layers: the bench step passed while measuring nothing, +and the publish step trusted its input. + +## Options considered + +1. **DSL `throws: true` only** — pros: the bench step goes red at the source with the stack that + names the scenario / cons: the publish step keeps trusting whatever reaches it. +2. **Converter refusal only** — pros: the published artefact can never carry a value-less entry / + cons: a bench file keeps passing green while measuring nothing. +3. **Both** (designer's recommendation) — pros: each layer closes the hole the other cannot / + cons: one more line in the DSL and one guard in the converter. + +## Decision + +**Ratified by the user: option 3.** The bench DSL passes `throws: true` in the options it +attaches to every bench it registers, so a warmup failure fails the file with its error visible. +The snapshot converter refuses, by scenario name, any raw entry that carries no sample and +therefore no value, so nothing without a value reaches the publish action. + +## Consequences + +A scenario that throws in warmup is now a red bench step, not a silent pass; its teardown does +not run (the already-accepted cost under ADR-791 and ADR-799, reclaimed by the explicit prune). +The run-phase hang that `throws` introduces is bounded by ADR-801. The converter's guard shape +is ADR-802. diff --git a/docs/adr/801-the-benchmark-snapshot-job-bounds-the-run-phase-hang-with-a-timeout.md b/docs/adr/801-the-benchmark-snapshot-job-bounds-the-run-phase-hang-with-a-timeout.md new file mode 100644 index 000000000..1294100d5 --- /dev/null +++ b/docs/adr/801-the-benchmark-snapshot-job-bounds-the-run-phase-hang-with-a-timeout.md @@ -0,0 +1,40 @@ +--- +subjects: + - .github/workflows/ci.yml +--- +# 801 — The benchmark-snapshot job bounds the run-phase hang with a timeout + +- **Status:** accepted +- **Date:** 2026-09-04 +- **Design:** docs/design/bench-snapshot-summary-adr-lint.md (D2) · **Supersedes/Refines:** none + +## Context + +With `throws: true` (ADR-800), an error raised during a benchmark's **run** phase, after warmup, +rejects inside the timer callback vitest wraps the run in; that promise never settles and the +worker hangs. Pinned in the design. No job in the CI workflow sets a timeout today, so such a +hang would run to the platform's six-hour default before failing. + +## Options considered + +1. **Add `timeout-minutes` to `benchmark-snapshot`, matching the nightly workflow's 30** + (designer's recommendation) — pros: one line; a hang becomes a bounded red; every other + job-level failure benefits too / cons: none beyond choosing a number. +2. **Accept the hang unbounded** — cons: burns the six-hour default on every run-phase error. +3. **Drop `throws` to avoid the hang** — cons: restores the silent pass this change exists to + remove. + +## Decision + +**Ratified by the user: option 1.** The `benchmark-snapshot` job declares `timeout-minutes: 30`, +the same bound the nightly bench workflow already uses. + +## Consequences + +A run-phase benchmark error surfaces as a job timeout within the hour, with the bench step's +output preserved for diagnosis. The bound is a job-level fact, not a per-scenario one; a scenario +that legitimately needs longer than the job allows is a change to this number, recorded here. +The bound covers every job running the bench suite: `benchmark-snapshot` at 30 minutes for its +one full-sweep pass, `benchmark-compare` at 60 for its six passes over the hot-path-scoped subset +(2 × `BENCH_ROUNDS` sides) — it is the subset, not the full sweep, that lets six passes fit inside +a bound sized for one. diff --git a/docs/adr/802-the-converter-refusal-is-a-separate-exported-guard-called-from-main-only.md b/docs/adr/802-the-converter-refusal-is-a-separate-exported-guard-called-from-main-only.md new file mode 100644 index 000000000..7970aacb3 --- /dev/null +++ b/docs/adr/802-the-converter-refusal-is-a-separate-exported-guard-called-from-main-only.md @@ -0,0 +1,38 @@ +--- +subjects: + - tooling/bench-to-snapshot.ts +--- +# 802 — The converter's refusal is a separate exported guard called from main only + +- **Status:** accepted +- **Date:** 2026-09-04 +- **Design:** docs/design/bench-snapshot-summary-adr-lint.md (D3) · **Supersedes/Refines:** refines ADR-056 + +## Context + +ADR-800 puts a refusal of sample-less entries in the snapshot converter. `toSnapshotEntries` is +also imported by the benchmark-compare tool, which runs label-gated and `continue-on-error` and +has its own verdict for a scenario missing from one side. Where the refusal sits decides whether +that tool inherits it. Tooling sits outside the coverage and mutation gates, so an unexported +guard would have no mechanical protection. + +## Options considered + +1. **Inside `toSnapshotEntries`** — cons: makes a value-less entry throw inside the comparison + job, where it is noise, and forecloses that tool's own missing verdict. +2. **A separate exported guard, called from `main()` only** (designer's recommendation) — + pros: one pure, unit-testable function; the policy lives where the publish contract lives. +3. **Inline in `main()`, unexported** — cons: untestable under the gates that apply to tooling. + +## Decision + +**Adopted-as-recommended (no user judgment): option 2.** The converter exports a pure guard +that, given the entries, returns them unchanged when every entry carries a finite value and +otherwise throws an error naming every offending scenario. Only the publish path in `main()` +calls it. `toSnapshotEntries` keeps ADR-056's shape and semantics. + +## Consequences + +The comparison tool is untouched. The guard has its own unit tests in `tooling/test/unit/`, one +per branch. A future producer of a value-less entry fails the snapshot step with the scenario +named, before the publish action ever runs. diff --git a/docs/adr/803-the-fetch-pack-bench-receives-into-a-fresh-memory-context-per-iteration.md b/docs/adr/803-the-fetch-pack-bench-receives-into-a-fresh-memory-context-per-iteration.md new file mode 100644 index 000000000..4eb490f0a --- /dev/null +++ b/docs/adr/803-the-fetch-pack-bench-receives-into-a-fresh-memory-context-per-iteration.md @@ -0,0 +1,42 @@ +--- +subjects: + - test/bench/fetch-pack.bench.ts +--- +# 803 — The fetch-pack bench receives into a fresh memory context per iteration + +- **Status:** accepted +- **Date:** 2026-09-04 +- **Design:** docs/design/bench-snapshot-summary-adr-lint.md (D4) · **Supersedes/Refines:** none + +## Context + +The fetch-pack scenario receives the same pack into one memory repository on every iteration. +The second receive collides with the artefacts the first one wrote, so the scenario has never +measured anything. The synthetic pack itself depends only on the hash algorithm, not on the +store, so it can be built once and replayed into any number of destinations. + +## Options considered + +1. **A fresh `createMemoryContext()` inside the measured function** (designer's + recommendation) — pros: measured at about 0.003% of one iteration; a cold delta cache on + every iteration, which is what a real receive faces; immune to the writer's artefact list / + cons: the context is constructed inside the measured region. +2. **One context, every artefact removed after each call** — cons: coupled to the writer's + artefact list, which grew by `.rev` recently and will grow again; a warm cache across + iterations prices something the scenario does not claim to measure. +3. **One context, a distinct pack per iteration** — cons: changes the fixture the scenario is + named after and moves pack building inside the measured region. + +## Decision + +**Adopted-as-recommended (no user judgment): option 1.** `build` constructs the entry list, the +pack bytes, the negotiator and the wanted id once, through a seed context used only to hash and +compress. The measured function receives into a brand-new memory context every call and keeps +the guard that the receive reported a pack path. The scenario title and the bench name are +unchanged, so the published series key is unchanged. + +## Consequences + +The scenario measures a cold receive-and-index every iteration. This shape is required under +every outcome of ADR-804: with a tolerant receive path, a second receive into an occupied +destination would take the already-present path and price something else. diff --git a/docs/adr/804-a-re-received-identical-pack-is-tolerated-before-the-rename-as-git-does.md b/docs/adr/804-a-re-received-identical-pack-is-tolerated-before-the-rename-as-git-does.md new file mode 100644 index 000000000..d061624ed --- /dev/null +++ b/docs/adr/804-a-re-received-identical-pack-is-tolerated-before-the-rename-as-git-does.md @@ -0,0 +1,80 @@ +--- +subjects: + - src/application/primitives/fetch-pack.ts +--- +# 804 — A re-received identical pack is tolerated before the rename, as git does + +- **Status:** accepted +- **Date:** 2026-09-04 +- **Design:** docs/design/bench-snapshot-summary-adr-lint.md (D5) · **Supersedes/Refines:** refines ADR-728 + +## Context + +Pinned against git 2.55.0 in an isolated throwaway: receiving a byte-identical pack a second +time exits 0, prints nothing, and leaves the existing `.pack`, `.idx` and `.rev` untouched, whether +through `index-pack --stdin`, a fetch with the unpack limit forcing a pack, or a push into a +bare repository. tsgit diverges twice: `materializePack` renames the quarantined pack into place +unconditionally, clobbering the destination, and the sibling writer then refuses the `.idx` with +`FILE_EXISTS`. `clone` and `fetch` surface that refusal; only `fetch-missing` tolerates it, and the +one test that claims to cover the tolerance pre-creates only the `.pack`, which the rename +overwrites, so its assertion cannot tell the two outcomes apart. ADR-728 pinned the quarantine +lifecycle and explicitly did not pin the already-present destination. The prime directive +(ADR-226) binds every change; this is a user-visible divergence, not a bench artefact. + +## Options considered + +1. **Bench-only in this PR; escalate the receive-path fix as a follow-up** — pros: the smallest + PR / cons: leaves a pinned divergence in place, as the sole exception to the no-follow-ups + rule. +2. **Fix it here, before the rename** (designer's recommendation) — `materializePack` treats an + occupied `pack-.*` destination as already done, checked before the rename so nothing is + clobbered, with a cross-tool interop test pinning git's silent exit 0 / cons: touches `src/` + in a run whose mutation harness is waived. +3. **Catch `FILE_EXISTS` after the rename and return the existing artefacts** — cons: keeps a + clobber-then-recover ordering git never performs. + +## Decision + +**Ratified by the user: option 2, amended after review.** The receive path lands its verified +quarantine copy at the content-addressed name the way git's finalize step does, per artefact: + +- a free name takes the copy by rename; +- an occupant whose bytes are identical to the copy keeps its place — same inode, same mtime — + and the copy is discarded as a handled outcome; +- an occupant that is not a regular file, or whose bytes differ, is refused with + `PACK_ARTIFACT_MISMATCH` naming the artefact, + never overwritten; +- then the `.idx` and `.rev` siblings are each written where their name is free, kept where an + identical file already sits, and refused where a differing one does; the `.promisor` sentinel is + kept whatever it holds whenever its name is already occupied — git treats it as free-form text, + so this receive path never compares or refuses it. + +The `.pack` is compared in bounded windows, so a pack larger than memory is never held at once; +siblings are compared in full, after a size check bounds the read to the size of the artefact just +built. The check happens before any rename, so nothing is clobbered. A cross-tool interop test +receives one pack twice and asserts the second call succeeds with the artefacts unchanged, that a +planted foreign file and a zero-byte index are refused, and that missing siblings are recreated, +with real git reproducing every sequence in the same fixture. `fetch-missing`'s former +`FILE_EXISTS` tolerance is removed as dead code: the receive path now adopts an identical pack +itself, and a differing artefact is a refusal there too. The user chose to run the mutation +harness standalone on the `src/` diff before the PR, since this run waived it. + +**Amended 2026-09-05 (review).** The first ruling adopted an existing destination by path alone, +on the design's pin that git's already-present test is "path existence, never content". That pin +came from a loose-object control and does not carry to packs: pinned against git 2.55.0, a +planted foreign `.pack` at the content-addressed name makes `index-pack` refuse with "differ in +contents" (exit 128), a zero-byte `.idx` beside a real pack is refused the same way, and a +`.pack` whose siblings went missing gets them silently recreated. The per-artefact +compare-and-complete rule above replaces the path-only rule; ADR-728's quarantine posture is +untouched. + +## Consequences + +Receiving an already-present pack is idempotent and silent, as in git; a receive that finds a +differing artefact at a content-addressed name refuses loudly, as in git, instead of adopting +corruption or tampering as success. Because every artefact is attempted and tolerated rather +than pre-checked, two concurrent receives of the same pack both succeed whichever lands first. +The refusal is a new public error code (`PACK_ARTIFACT_MISMATCH`, with the artefact path), so the +error reference and the committed API snapshot carry it. ADR-728's temp-file posture is +unchanged: the quarantine copy is unlinked as a handled outcome. The compare-and-complete path +adds about 0.2 kB gzipped to the primitives chunk, so its size budget rises from 61 to 62 kB. diff --git a/docs/adr/805-adr-724-carries-one-bare-superseded-status-line-plus-a-bullet-naming-732-and-733.md b/docs/adr/805-adr-724-carries-one-bare-superseded-status-line-plus-a-bullet-naming-732-and-733.md new file mode 100644 index 000000000..5f093da8f --- /dev/null +++ b/docs/adr/805-adr-724-carries-one-bare-superseded-status-line-plus-a-bullet-naming-732-and-733.md @@ -0,0 +1,42 @@ +--- +subjects: + - docs/adr/724-maintenance-command-with-commit-graph-and-gc-lite.md +--- +# 805 — ADR-724 carries one bare superseded-status line plus a bullet naming ADR-732 and ADR-733 + +- **Status:** accepted +- **Date:** 2026-09-04 +- **Design:** docs/design/bench-snapshot-summary-adr-lint.md (D6) · **Supersedes/Refines:** none + +## Context + +ADR-724 was superseded in three parts by ADR-731, ADR-732 and ADR-733, and its status line says +so in one sentence with a parenthetical scope. Only ADR-731 declares the supersession in its +front matter, so the decision lint demands exactly one line, `- **Status:** superseded by +ADR-731`, and the composite sentence fails it. The information about the other two supersessions +must survive. + +## Options considered + +1. **One bare status line; the three-ADR nuance only in the block quote** — cons: demotes two + real supersessions to prose. +2. **Declare `supersedes: 724` in ADR-732 and ADR-733 too** — pros: completes the machine-readable + graph / cons: forces near-identical carried-forward paragraphs into three ADRs and asks for new + decision prose only the user can ratify. +3. **One bare status line plus a separate non-status bullet naming ADR-732 and ADR-733 with + their scopes** (designer's recommendation) — pros: one added bullet, both supersessions + visible at bullet level, nothing duplicated. + +## Decision + +**Adopted-as-recommended (no user judgment): option 3.** ADR-724's status line becomes the exact +form the lint requires, and a bullet directly below it names ADR-732 (pack consolidation) and +ADR-733 (promisor consolidation) with the scope each took over. The same shape, minus the extra +bullet, applies to ADR-389 and ADR-541: their parenthetical scopes move into the block-quote +note. The anchors in ADR-721 and ADR-752 are re-wrapped so each starts its own line in plain +text, wording unchanged. + +## Consequences + +The decision lint passes on the tracked tree. A future multi-superseder ADR follows the same +form: one lint-exact status line per declared supersession, a bullet for the rest. diff --git a/docs/adr/806-the-completed-backlog-entry-30-3-cites-adr-752.md b/docs/adr/806-the-completed-backlog-entry-30-3-cites-adr-752.md new file mode 100644 index 000000000..57fd2ccfe --- /dev/null +++ b/docs/adr/806-the-completed-backlog-entry-30-3-cites-adr-752.md @@ -0,0 +1,33 @@ +--- +subjects: + - docs/BACKLOG.md +--- +# 806 — The completed backlog entry 30.3 cites ADR-752 + +- **Status:** accepted +- **Date:** 2026-09-04 +- **Design:** docs/design/bench-snapshot-summary-adr-lint.md (D7) · **Supersedes/Refines:** none + +## Context + +The completed backlog entry 30.3 cites ADR-723, which ADR-752 superseded; the decision lint's +citation sweep reports it. The lint's waiver token covers a whole file, never a line, and no +waiver file or invocation contract exists in this repository today. + +## Options considered + +1. **Re-point the citation at ADR-752, naming the addendum that survived** (designer's + recommendation) — pros: the sentence stays true and the reader lands on the live decision. +2. **Waive the whole backlog file as history** — cons: every future stale citation in the backlog + goes unreported; needs machinery that does not exist here. +3. **Drop the `ADR-` prefix so the sweep stops matching** — cons: defeats the check. + +## Decision + +**Ratified by the user: option 1.** The entry cites ADR-752 and names what it carried forward +from its predecessor; the rest of the entry is unchanged. + +## Consequences + +The backlog is a live page for the citation sweep; completed entries are updated when the +decision they cite is superseded. No waiver machinery is introduced. diff --git a/docs/adr/807-the-security-page-cites-adr-721-for-the-root-set-model.md b/docs/adr/807-the-security-page-cites-adr-721-for-the-root-set-model.md new file mode 100644 index 000000000..a997059d0 --- /dev/null +++ b/docs/adr/807-the-security-page-cites-adr-721-for-the-root-set-model.md @@ -0,0 +1,33 @@ +--- +subjects: + - docs/understand/security.md +--- +# 807 — The security page cites ADR-721 for the root-set model + +- **Status:** accepted +- **Date:** 2026-09-04 +- **Design:** docs/design/bench-snapshot-summary-adr-lint.md (D8) · **Supersedes/Refines:** none + +## Context + +The security page cites ADR-541 for the containment root-set model. ADR-721 superseded ADR-541 +on the facade wrapper's read-path role and carried the root-set model forward unchanged, so the +cited decision is partly superseded and the citation sweep reports it. The page's opening +paragraph already describes ADR-721's ruling without citing it. + +## Options considered + +1. **Cite ADR-721, naming the root-set model as what it carried forward** (designer's + recommendation) — pros: one accurate citation; ADR-721's own body records the lineage. +2. **Waive the file** — cons: disproportionate for one line in a page that will keep citing ADRs. +3. **Cite ADR-721 and refer to ADR-541 by title only** — cons: a citation written to evade the + sweep. + +## Decision + +**Ratified by the user: option 1.** The sentence cites ADR-721 as the single authority for +first-party read containment and says the root-set model is what it carried forward. + +## Consequences + +The page cites the governing decision. The lineage to ADR-541 is one hop away in ADR-721. diff --git a/docs/adr/808-bench-summarize-exports-its-pure-functions-in-place-and-guards-main.md b/docs/adr/808-bench-summarize-exports-its-pure-functions-in-place-and-guards-main.md new file mode 100644 index 000000000..1f7e3fa83 --- /dev/null +++ b/docs/adr/808-bench-summarize-exports-its-pure-functions-in-place-and-guards-main.md @@ -0,0 +1,38 @@ +--- +subjects: + - tooling/bench-summarize.ts +--- +# 808 — bench-summarize exports its pure functions in place and guards main + +- **Status:** accepted +- **Date:** 2026-09-04 +- **Design:** docs/design/bench-snapshot-summary-adr-lint.md (D9) · **Supersedes/Refines:** refines ADR-056 + +## Context + +`tooling/bench-summarize.ts` exports nothing and runs its `main()` at import time, so its +rendering cannot be unit-tested, and tooling sits outside the coverage and mutation gates. +Its sibling `tooling/bench-to-snapshot.ts` already has the shape that works: pure exported +functions and a `main()` guarded by an invoked-directly check. + +## Options considered + +1. **Export the pure functions from the same file and guard `main()`** (designer's + recommendation) — pros: the smallest diff; one house pattern for two sibling scripts; no new + import specifier to get right under the strip-types runner. +2. **A new render module with a thin CLI wrapper** — cons: separation a hundred-line script does + not need; one more whitelist entry. +3. **Share the raw-report types with `bench-to-snapshot.ts`** — cons: foreclosed by ADR-056, + which has each script own its read of the external vitest schema. + +## Decision + +**Adopted-as-recommended (no user judgment): option 1.** The row and document renderers are +exported from `bench-summarize.ts`; `main()` runs only when the file is the process entry. The +new unit test and the script are added to the biome whitelist. `npm run bench:summary` is +unchanged in command, input and output path. + +## Consequences + +Every rendering branch has a unit test that is the only mechanical guard for it. The two +scripts keep independent schema views per ADR-056. diff --git a/docs/adr/809-a-tsgit-only-row-renders-an-em-dash-and-n-a-a-no-tsgit-row-keeps-the-missing-marker.md b/docs/adr/809-a-tsgit-only-row-renders-an-em-dash-and-n-a-a-no-tsgit-row-keeps-the-missing-marker.md new file mode 100644 index 000000000..d6a14fa4e --- /dev/null +++ b/docs/adr/809-a-tsgit-only-row-renders-an-em-dash-and-n-a-a-no-tsgit-row-keeps-the-missing-marker.md @@ -0,0 +1,40 @@ +--- +subjects: + - tooling/bench-summarize.ts +--- +# 809 — A tsgit-only row renders an em dash and n/a; a no-tsgit row keeps the missing marker + +- **Status:** accepted +- **Date:** 2026-09-04 +- **Design:** docs/design/bench-snapshot-summary-adr-lint.md (D10) · **Supersedes/Refines:** none + +## Context + +The summary renderer requires both a `tsgit` and an `isomorphic-git` entry in a group and +otherwise prints `_missing entry_` in both cells. The suite now has 81 tsgit-only groups against +14 paired ones, so the published summary reads as if most of the suite did not run. The runnable +bench set stays at exactly two names (ADR-480), so this is a rendering fix inside that +constraint, not a new competitor layout. + +## Options considered + +1. **tsgit-only: tsgit cell as in a paired row, an em dash in the baseline cell, `n/a` speedup; + no-tsgit: today's `_missing entry_` in both cells** (designer's recommendation) — pros: an + em dash reads as "no peer, by design"; the alarm stays where the genuine anomaly is. +2. **tsgit-only: an italic `_not run_` marker; no-tsgit: `_missing entry_` in the tsgit cell with + the baseline still rendered** — cons: `_not run_` reads as a failure; renders a baseline for a + shape that has never occurred and would read as a comparison. +3. **tsgit-only: an empty baseline cell** — cons: indistinguishable from a truncated table. + +## Decision + +**Adopted-as-recommended (no user judgment): option 1.** Paired rows are byte-identical to +today. A tsgit-only row carries the tsgit median-or-mean, rate and error margin exactly as a +paired row does, an em dash for the baseline and `n/a` for the speedup. A group with no `tsgit` +entry keeps the `_missing entry_` rendering in both cells. The footnote says the speedup applies +to paired rows only. + +## Consequences + +The nightly summary shows every measured scenario. The missing-entry marker now means exactly +one thing: a scenario that produced no tsgit result. diff --git a/docs/design/bench-snapshot-summary-adr-lint.md b/docs/design/bench-snapshot-summary-adr-lint.md new file mode 100644 index 000000000..66274c66d --- /dev/null +++ b/docs/design/bench-snapshot-summary-adr-lint.md @@ -0,0 +1,636 @@ +# Design — the benchmark snapshot publishes again, the bench summary renders tsgit-only scenarios, `adr-lint` runs clean + +> Brief: one chore PR carrying three pre-existing items — part C, the fetch-pack bench never +> measures and the bench harness hides the failure, which reds `main` at the publish step; +> part A, `tooling/bench-summarize.ts` blanks every tsgit-only scenario; part B, eight +> `adr-lint` findings. All three ship together; there are no follow-ups. +> Status: draft → self-reviewed ×3 + +## Context + +### Part C — the failure chain, pinned end to end + +Three defects stack. Only the first is a bug in the bench; the second is a hole in the +harness; the third is a converter that trusts its input. + +**C-i. The scenario throws on its second iteration.** `test/bench/fetch-pack.bench.ts` +creates one memory context in the scenario's `build` callback and measures `fetchPack` into +**that same context** on every iteration. Probed here: one receive of the scenario's pack +leaves exactly three files in `/repo/.git/objects/pack` — +`pack-.pack`, `pack-.idx`, `pack-.rev` — and nothing else anywhere under +`/repo/.git` except the `objects` directory itself. The second call renames its quarantined +pack over the existing `.pack` and then throws on the first exclusive sibling write. The +stack is `fetchPack → materializePack → writePackSiblingArtifacts → writeSiblingsGiven → +MemoryFileSystem.writeExclusive`, and the error is +`TsgitError FILE_EXISTS` with `{ code: 'FILE_EXISTS', path: '/repo/.git/objects/pack/pack-.idx' }`. +Removing only the `.pack` and `.idx` before re-entering moves the throw one artefact along, +to `pack-.rev` (probed) — the sibling set is a moving target, which matters for the +shape decision below. + +**C-ii. The harness reports the throw as a pass.** Pinned against the installed +`vitest@4.1.11` and `tinybench@2.9.0`, in a throwaway project outside the worktree: + +| probe | bench options | exit | terminal | `raw.json` entry | +|---|---|---|---|---| +| scenario throws from call 2, healthy sibling scenario after it | none (today) | **0** | the throwing scenario prints no row at all, only a Summary line; the sibling prints a normal table | `{ id, name, rank, rme: 0, samples: [] }` — no `mean`, no `median`, no `hz`, no `sampleCount` | +| same, error raised during warmup | `throws: true` | **1** | `FAIL [ ]` with the real message and a tinybench stack through `warmup` | file written; only the failing group present | +| error raised after warmup, in the measured run | `throws: true` | **never exits** | nothing after the RUN banner | no file written | + +The mechanism: `bench(name, fn, options)` stores the options object verbatim, and vitest's +benchmark runner passes it straight to `new Bench(...)`, which reads `throws` off it — so +`throws` is a real, forwarded knob (verified, not assumed). Without it, tinybench's `warmup` +stores the error on the task and returns; `run` then returns early on that stored error +**before** dispatching either the `complete` or the `error` event, and vitest listens for +nothing else. The task keeps the placeholder result the runner built for it +(`{ name, rank: 0, rme: 0, samples: [] }`), the suite is marked `pass`, and the process exits +0. That placeholder is byte-for-byte the shape observed in both nightly artifacts and in a +local run of the real file. + +The third row is the cost of the fix and must be designed around: the runner awaits +`task.run()` inside a `setTimeout` callback and resolves an outer promise with its result, so +a rejection there never resolves that promise and the run deadlocks. A **warmup** failure is +raised from a directly awaited call and fails cleanly; a **run-phase** failure hangs. No CI +job in `.github/workflows/ci.yml` sets `timeout-minutes`, so a hang there runs to GitHub's +360-minute default. `bench.yml` already caps its job at 30 minutes. + +Second consequence of `throws: true`, also pinned: the raised error aborts the whole file — +the healthy sibling scenario declared after the failing one never ran. And tinybench fires +the bench-level teardown hook with mode `warmup` before raising, which the DSL's +`onMeasuredRun` deliberately ignores, so a copy-based scenario's scratch directory is left +behind. That is already the documented contract in `test/bench/support/bench-dsl.ts`, and +`bench:fixture -- --prune` is the reclaimer. + +**C-iii. The converter emits an entry with no `value`.** `toSnapshotEntries` in +`tooling/bench-to-snapshot.ts` maps every benchmark to `{ name, unit, value: median ?? mean }`. +Its `RawBenchmark` interface declares `mean: number` as required and `median?: number` as +optional — for the entry above **both are absent at runtime**, so the declared type is a lie +and `value` silently becomes `undefined`, which `JSON.stringify` drops. The published file +therefore carries an entry with no `value` key, and +`benchmark-action/github-action-benchmark@v1` refuses it. + +### Part A — the summary blanks 81 of 95 scenarios + +`renderRow` in `tooling/bench-summarize.ts` requires **both** a `tsgit` and an +`isomorphic-git` entry in a group and otherwise emits +`| | _missing entry_ | _missing entry_ | n/a |`. Rendering the real nightly +artifact through the current script here produced **95 data rows, 81 of them blank** — the +suite has 14 paired groups and 81 tsgit-only groups (109 entries over 30 files), and no group +without a `tsgit` entry at all. A reader of `summary.md` sees 85% of the suite reported as +not run. + +Today's paired row, rendered from that artifact: + +``` +| Given a delta-chain repo (300 commits, deep delta chains), When readBlob() reads a deep-chain leaf from a cold pack, Then compare tsgit against isomorphic-git | 3.698 ms (256/s, ±5.26%) | 1.233 ms (529/s, ±13.78%) | 0.33× | +``` + +Today's blank row, same artifact: + +``` +| Given a 64 KiB highly compressible zlib member, When the bundled decoder (inflateZlibMember) decodes it, Then measure tsgit | _missing entry_ | _missing entry_ | n/a | +``` + +Two mechanical facts about the file itself. It exports nothing and calls `main()` at import, +so no part of it is reachable from a test. And `tooling/bench-summarize.ts` is **not** in +`biome.json`'s `files.includes` whitelist, so it is silently unlinted — verified by running +`biome check` against it, which reports the path as ignored. Its content is nevertheless +already clean under the repository's own rule set (verified by running the same configuration +over a copy in a throwaway directory: zero findings, zero formatting diff), so adding it to +the whitelist costs nothing. + +### Part B — what `adr-lint` actually checks + +`node /bin/adr-lint.js docs/adr`, run from the worktree root, exits **2** and +prints the eight findings quoted in the brief, plus one stderr banner: +`adr-lint: citation sweep exempts (derived): docs/adr, docs/design, docs/plan, docs/archive, docs/prd`. +A clean run prints that banner plus a stdout line of the form +`craft-adr: OK — ADR(s) checked, declaring supersession.` + +The rules, read from the engine source rather than inferred from the messages: + +| check | rule | tolerance | +|---|---|---| +| status line | a line whose `trim()` **equals** `- **Status:** superseded by ADR-NNN` | nothing may follow `ADR-NNN`; surrounding whitespace is fine; several such lines may coexist | +| supersession anchor | `/^Superseded from ADR-NNN\b/m` | must start the line; prose after the id is fine, bold wrapping or an indent is not | +| carry-forward anchor | `/^Carried forward from ADR-NNN\b/m` | same | +| citation sweep | one `git grep -E 'ADR-()'` over the whole tracked tree | files under the exempt directories are skipped; otherwise every match is reported | + +The **only** thing that creates a supersession for the lint is the superseding ADR's YAML +front-matter `supersedes:` block (`adr` a quoted three-digit string, `scope` a non-empty +string). Status lines and prose anchors are consequences it then demands; they never create +one. Exactly four ADRs declare supersession today: 718 → 389, 721 → 541, 731 → 724, +752 → 723. A missing front-matter block is never a finding, which is what keeps the other +805 files green. + +The eight findings are therefore five formatting defects and two live citations: + +- **389, 541, 724** — the status line exists but carries a trailing parenthetical scope; 724 + additionally names three superseding ADRs on one line. The scope wording must survive the + fix. +- **721** — `Carried forward from ADR-541:` exists but sits mid-line, after the + `Superseded from` sentence. +- **752** — both anchors exist but are bold-wrapped (`**Superseded from ADR-723:**`). +- **`docs/BACKLOG.md`** — the completed 30.3 entry says `(probed, git 2.55.0 — see + ADR-723's addendum)`. ADR-752 explicitly carries that addendum forward, so the sentence is + substantively true; only the identifier is stale. +- **`docs/understand/security.md`** — the path-containment paragraph cites `[ADR-541]` for + the root-set model. ADR-721 superseded 541 on the facade wrapper's read-path role only and + carried the root-set model forward unchanged; the same file's opening paragraph already + describes ADR-721's ruling without citing it. + +ADR-723 is the one file whose superseded status line already passes, and it is the template: +a bare `- **Status:** superseded by ADR-752` bullet with all the scope nuance pushed up into +the block quote under the title. ADRs 718 and 731 are the templates for the anchors — +column-zero, no bold, `: ` then prose. + +Two properties of the waiver route matter for the decision. `DECISION-CITE-WAIVE()` +waives a **whole file**, not a line, so waiving `docs/BACKLOG.md` would also silence every +future stale citation in it. And the token is read only from files named by a repeatable +`--waiver-source` flag; no waiver file exists in this repository, and nothing here invokes +`adr-lint` at all (no npm script, no CI job, no hook), so the waiver route means authoring +a new file *and* a new invocation contract. + +### The pin that overturns the brief's premise + +The brief asserts that the `FILE_EXISTS` refusal is correct because "git's `index-pack` +refuses to clobber too". Pinned against `git version 2.55.0` in a `mktemp` throwaway with all +`GIT_*` scrubbed, an isolated `HOME`, `GIT_CONFIG_NOSYSTEM=1` and signing off, that is +**false**: + +| probe | exit | stderr | destination afterwards | +|---|---|---|---| +| `git index-pack --stdin --fix-thin` into an empty repository | 0 | empty | `.pack` / `.idx` / `.rev` created | +| the **same** command, byte-identical input, same repository | **0** | **empty** | all three unchanged — same inode, same fractional mtime; no temporary debris | +| the same again with `-v` | 0 | progress only — no warning, no "exists" message | unchanged | +| `fetch` with `fetch.unpackLimit=1`, local refs deleted so the server re-sends the same pack | 0 | normal `[new branch]` line | pack unchanged | +| `push` twice into a bare repository with `transfer.unpackLimit=1` | 0 / 0 | normal | pack unchanged | +| loose-object control: tamper a loose object to garbage, then re-write the identical content | 0 | empty | **the garbage is kept** — the already-present test is path existence, never content | +| `.idx` truncated to zero bytes, then re-index | 128 | `error: index file … is too small` | corrupt file left in place; temporary files left behind | +| `.pack` replaced by non-pack bytes, then re-index | 128 | `error: file … is not a GIT packfile` | same | + +Canonical git's receive path is idempotent and silent. Its only non-zero exits are +corrupt-store diagnoses, never a collision refusal. + +tsgit diverges twice over. `materializePack` in `src/application/primitives/fetch-pack.ts` +renames the quarantined pack into place unconditionally — so the destination `.pack` is +**clobbered** — and then `writePackSiblingArtifacts` throws `FILE_EXISTS` on the first +sibling. `clone` and `fetch` do not catch it; only `fetch-missing` does, with a comment +stating exactly the right reason ("packs are content-addressed, so any `FILE_EXISTS` means a +concurrent fetch already landed byte-identical artifacts"). The one existing test for that +tolerance pre-creates only the `.pack`, which `rename` then overwrites, so the refusal it +claims to exercise is never reached and its assertion cannot tell the two outcomes apart. +ADR-728 pinned the quarantine lifecycle but explicitly did not pin the already-present +destination; ADRs 779 and 787 do not touch it. No ADR sanctions the divergence, and there is +no interop test covering a second receive of the same pack. + +Under the prime directive this is a real defect, not a bench artefact — hence decision +candidate **D5**. It does **not** block part C: even with a tolerant receive path, a second +iteration into an occupied destination would skip the sibling writes and price a different +path, so the bench needs a fresh destination under every outcome of D5. + +### Constraining decisions + +- **ADR-226** — replicate git's observable behaviour unless an ADR diverges and says why. +- **ADR-056** — the snapshot metric is `median ?? mean` in milliseconds under + `customSmallerIsBetter`, keyed `" > "`, and the converter + deliberately keeps **its own** minimal view of the vitest schema rather than sharing types + with `bench-summarize.ts`. Both survive this change. +- **ADR-480** — the runnable bench set stays at exactly two names, so the two-name keying in + `bench-dsl.ts` and `bench-summarize.ts` needs no change and no N-competitor renderer ships. + Part A fixes rendering **inside** that constraint. +- **ADR-488 / ADR-651** — `benchmark-compare` is label-gated and `continue-on-error`, so a + refusal reaching `tooling/bench-check.ts` (which imports `toSnapshotEntries`) can never + block a merge. Relevant to D3. +- **ADR-791 / ADR-799** — bench scratch copies live in `fixture-scratch.ts` and leftovers are + reclaimed only by an explicit `--prune`. A scenario that dies in warmup skipping its + teardown is the already-accepted cost of that posture. +- **ADR-642** — the snapshot job stays per-merge on `main`. + +## Requirements + +R1. `npx vitest bench --run --config vitest.bench.config.ts test/bench/fetch-pack.bench.ts` + produces a `tsgit` entry with a `sampleCount` above zero and a numeric `median`. + +R2. The fetch-pack scenario's describe title is byte-identical to today's — it is the + published series key. + +R3. Every measured iteration of that scenario pays the full receive-and-index cost: quarantine + write, trailer verification, both index passes, and the `.pack`/`.idx`/`.rev` writes. No + part of that cost moves outside the measured function, and pack construction stays outside + it. + +R4. A benchmark whose measured function throws during warmup makes `vitest bench` exit + non-zero with the error visible, in every bench file, without any per-file opt-in. + +R5. `tooling/bench-to-snapshot.ts` refuses, by name, any benchmark that yields no numeric + value, and never writes `reports/benchmarks/snapshot.json` when one is present. The + refusal message names the scenario and the benchmark. + +R6. `RawBenchmark`'s declared shape matches what vitest actually emits: both `mean` and + `median` are optional. + +R7. A tsgit-only group renders its tsgit cell exactly as a paired row renders it + (median-else-mean in ms, hz, rme), an unambiguously empty baseline cell, and `n/a` in the + speedup column. Paired rows are byte-identical to today's output. + +R8. A group with no `tsgit` entry keeps an explicit "missing" rendering — that is the real + anomaly and must stay visible. + +R9. The table footnote says that the speedup column applies to paired rows only. + +R10. The row renderer and the document renderer are pure, exported, and unit-tested; + `main()` runs only when the module is invoked directly; `npm run bench:summary` + behaviour is otherwise unchanged. + +R11. Every `tooling/` file this change adds or edits, and the new unit test, are listed in + `biome.json`'s `files.includes` — the whitelist is opt-in, so an unlisted file is + silently unlinted. + +R12. `node /bin/adr-lint.js docs/adr` exits 0 and prints only the exempt-set + banner and the `craft-adr: OK` line. Every scope note the current status lines carry + survives somewhere in the same ADR. + +R13. `npm run validate` is green, and `npm outdated` minus the documented exceptions is + clean. + +R14. `npm run bench:summary` completes on the **current** nightly artefact — the one holding a + benchmark with no samples — whichever order the parts land in. No input the raw schema + can produce makes a renderer throw. + +R15. Conditional on D5 landing on (b) or (c): re-receiving a byte-identical pack through + `fetchPack` succeeds, leaves the existing artefacts in place, and is pinned by a + cross-tool interop test against real `git` rather than by a same-adapter parity test. + +R1–R14 hold under every outcome of every candidate; only R15 is conditional. + +## Design + +### Files and symbols this touches + +Part C: + +- `test/bench/fetch-pack.bench.ts` — the whole file. `buildChainedEntries(): EntrySpec[]`, + `toNegotiator(packBytes: Uint8Array): NegotiatePackBytes`, and the + `benchScenario(given, whenThen, build)` call whose `build` closes over `ctx`, `built` and + `negotiator` and returns `{ sut }` where `sut: () => Promise`. Constants + `CHAIN_DEPTH = 200`, `CHAIN_COUNT = 8` are unchanged. +- `test/bench/support/bench-dsl.ts` — `hooksFor(comparison: BenchComparison): ScenarioHooks` + (early-returns `{}` when `comparison.teardown === undefined`), + `interface MeasuredRunHooks extends BenchOptions` (its `teardown` is **required** today), + `afterMeasuredRun(teardown: Teardown): MeasuredRunHooks`, + `onMeasuredRun(teardown)(mode: HookMode)`, `interface ScenarioHooks { tsgit?, baseline? }`, + and `benchScenario(given, whenThen, build, opts)` which calls + `bench('tsgit', comparison.sut, hooks.tsgit)`. +- `tooling/bench-to-snapshot.ts` — `interface RawBenchmark { readonly name: string; readonly + mean: number; readonly median?: number }`, `toSnapshotEntries(raw: RawReport): + SnapshotEntry[]`, `withNodeVersion(entries, resolvedNodeVersion)`, + `resolveNodeVersion(env)`, `main()`, `invokedDirectly()`. +- `.github/workflows/ci.yml` — the `benchmark-snapshot` job (no `timeout-minutes` today, on + any job in the file). +- Fixture reused as-is: `buildSyntheticPack(ctx, entries)` and `EntrySpec` from + `test/unit/application/primitives/pack-fixture.ts`. + +Part A: + +- `tooling/bench-summarize.ts` — interfaces `BenchEntry`, `BenchGroup`, `BenchFile`, + `RawReport`; helpers `scenarioName(fullName)`, `findByName(group, name)`, + `formatMs(value)`, `formatHz(value)`, `formatSpeedup(a, b)`; `renderRow(group: BenchGroup): + string`; `main()` — currently invoked unguarded at import. Nothing is exported today. +- `biome.json` — the `files.includes` array. +- `tooling/test/unit/bench-summarize.test.ts` — new. `vitest.config.ts`'s `unit` project + already globs `tooling/test/unit/**/*.test.ts`, so no config change. Mirror + `tooling/test/unit/bench-to-snapshot.test.ts` (imports its subject as `../../bench-to-snapshot.js`) + and `tooling/test/unit/gen-bench-fixture.test.ts` (imports as `../../gen-bench-fixture.ts`); + either specifier resolves, since `bench-summarize.ts` has no relative imports of its own for + `node --experimental-strip-types` to resolve. + +Part B — seven files, all under `docs/`: + +- `docs/adr/389-incremental-stream-hash-verification.md` +- `docs/adr/541-raw-node-adapter-layout-root-set.md` +- `docs/adr/721-first-party-read-containment-is-single-authority.md` +- `docs/adr/724-maintenance-command-with-commit-graph-and-gc-lite.md` +- `docs/adr/752-tree-read-paths-accept-duplicate-entry-names.md` +- `docs/BACKLOG.md` (the completed 30.3 entry) +- `docs/understand/security.md` (the path-containment paragraph) + +Under D6(b) two more: `docs/adr/732-gc-consolidates-existing-packs.md` and +`docs/adr/733-gc-repacks-promisor-objects-separately.md`. The already-conforming templates to +copy from are `docs/adr/723-cursor-descent-keeps-the-duplicate-name-refusal.md` (status line), +`docs/adr/718-read-path-hash-verification-is-opt-in.md` and +`docs/adr/731-gc-uses-cruft-packs.md` (both anchors). + +### Part C1 — the fetch-pack scenario receives into a fresh destination + +`buildSyntheticPack` reaches the context only through `ctx.compressor.deflate` and +`ctx.hash.hashHex`; it writes nothing. The produced pack bytes therefore depend on the hash +algorithm, not on the store, and can be built **once** in `build` and replayed into any +number of destinations. So the whole change is which context `sut` receives into: + +- `build` keeps: one seed context used solely to construct the pack, the entry list, the + built pack, the negotiator closure and the wanted id. +- `sut` becomes `fetchPack(createMemoryContext(), negotiator, { … })` — a fresh, empty + destination per iteration, with the unchanged `packPath === ''` guard. +- The comment claiming the packs "land in the memory adapter's own store; it dies with the + worker" is replaced: each iteration's store is unreachable once the iteration ends, so the + scenario no longer accumulates. + +Measured here on the same machine, in the isolated probe project: + +| shape | result | +|---|---| +| today (one shared context) | throws on iteration 2; zero samples | +| fresh context per call | **measures**: mean 35.09 ms / median 35.23 ms / 28.50 hz / ±0.78% over 15 samples; a second run of the same shape gave mean 31.27 ms / ±2.39% over 17 samples | +| context construction alone | mean 0.0011 ms — about 0.003% of one iteration | +| shared context, `.pack` + `.idx` removed after each call | throws `FILE_EXISTS` on `pack-.rev` | + +The fixture is 1608 entries over 247,544 pack bytes (eight chains, 200 deep). + +Three properties settle the shape (see D4). Context construction is three orders of magnitude +below the measured cost, so it does not distort the series. A fresh context means a **cold** +delta cache on every iteration, which is what a real receive faces; a shared context would +serve iterations 2..n from a warm cache and price something the scenario does not claim to +measure. And the removal shape has to enumerate every artefact the writer emits — a list that +grew by `.rev` one phase ago and will grow again — whereas a fresh destination is immune to +that coupling by construction. + +### Part C2 — the DSL turns a silent warmup failure into a red run + +`hooksFor` in `test/bench/support/bench-dsl.ts` currently returns `{}` when a comparison +declares no teardown, and `benchScenario` then calls `bench(name, fn)` with no options at all. +Every bench must instead receive an options object carrying `throws: true`, whether or not it +also carries a teardown: + +- `MeasuredRunHooks` (whose `teardown` is required today) splits: an options type that always + carries `throws: true` and optionally the teardown hook. The teardown routing is unchanged — + the hook still rides the scenario's **last** bench so a baseline still measures on an intact + scratch copy, and `onMeasuredRun` still ignores the `warmup` mode. +- `hooksFor` loses its early return: with no teardown it returns throwing options for both + benches; with one, it returns throwing options for both and attaches the teardown to the + last. +- `benchScenario` always passes the resolved options to `bench(...)`. + +The blast radius is deliberate and file-wide: a scenario that dies in warmup aborts the rest +of its file. That is the correct trade — a bench file that cannot measure one scenario has +already lost the run's meaning for that file, and the alternative is today's silent pass. The +per-file abort is recorded here so a future reader does not mistake a truncated `raw.json` for +a second defect. + +Applying `throws: true` to all 30 bench files could in principle red a *different* scenario +that has also been failing silently. The current nightly artefact settles the exposure +empirically: of 109 entries, **exactly one** has no samples — the fetch-pack scenario this PR +fixes. So the sweep is expected to go green on the C1 fix alone. If it does not, the newly +surfaced scenario rides in this PR (there are no follow-ups); if its fix is not small, it is +escalated as `{ scenario, reason, ≤3 options }` rather than suppressed. + +The run-phase deadlock pinned above is the residual risk. It cannot be removed while `throws` +is set, only bounded — D2 recommends a `timeout-minutes` cap on `benchmark-snapshot` matching +`bench.yml`'s existing 30, so the worst case is a bounded red rather than a six-hour one. + +One existing contract becomes load-bearing in a new way: tinybench invokes the teardown hook +without awaiting it and inside `run`'s own body, so a teardown that throws lands in the same +never-resolving promise. `fixture-scratch.ts`'s `removeSync` already swallows and logs for +this reason; under `throws: true` that swallow stops being defensive and starts being what +keeps a cleanup failure from hanging the runner. No change is needed — the invariant is +recorded so nobody "tidies" it into a rethrow. + +### Part C3 — the converter refuses an entry it cannot value + +Two changes in `tooling/bench-to-snapshot.ts`: + +- `RawBenchmark.mean` becomes optional, matching reality. `toSnapshotEntries` keeps its + `median ?? mean` metric and its `" > "` naming exactly as ADR-056 fixed them. +- A new exported, pure guard walks the parsed report and throws when any benchmark yields + neither `median` nor `mean`, naming every offender as `" > "`. + `main()` calls it before converting, so the refusal happens before `snapshot.json` is + written and the publish step never sees a partial file. + +Placing the guard beside `toSnapshotEntries` rather than inside it (D3) keeps +`tooling/bench-check.ts`, the only other consumer, free to decide its own policy: it already +models a `missing` verdict for absent scenarios, and it runs behind a label on a +`continue-on-error` job where a hard throw is noise rather than signal. + +### Part C4 — the fixture cache side effect, recorded not fixed + +`actions/cache`'s post step is `post-if: success()`, so the red job saved no `main` cache +entry for the current fixture key. The first green `main` run after this merge rebuilds the +scaled fixtures once — roughly ten minutes — and saves the entry. No change is made for this; +it is self-healing and recorded so the slow run is not read as a regression. + +### Part A — `bench-summarize.ts` renders a tsgit-only row + +The renderer gains one branch and loses its all-or-nothing guard: + +| group shape | tsgit cell | baseline cell | speedup | +|---|---|---|---| +| paired | ` ms (/s, ±%)` | same, from the `isomorphic-git` entry | `×`, or `n/a` when the tsgit value is zero | +| tsgit only (81 of 95 today) | as above | an unambiguously empty marker | `n/a` | +| no tsgit entry, or a tsgit entry with no measurement | `_missing entry_` | `_missing entry_` | `n/a` | + +**The renderer must be total, and that is not optional.** Today's all-or-nothing guard +accidentally protects the formatters: the one entry in the suite with no samples sits in a +tsgit-only group, which takes the `_missing entry_` branch and never reaches `formatMs`. The +moment a tsgit-only group formats its own cell, that same entry would reach +`formatMs(undefined)` and crash `npm run bench:summary` on the very artefact this part is meant +to fix. `BenchEntry` therefore gets the same reality check the converter's `RawBenchmark` gets +— `mean` and `hz` become optional, `median` already is — and one predicate decides the cell: +an entry counts as measured when `median ?? mean` and `hz` are both numbers, and renders as +missing otherwise. vitest emits those fields together (a task carries either a full result or +the `{ id, name, rank, rme, samples }` placeholder), so the two conditions never disagree in +practice; the predicate is what makes that a checked fact rather than an assumption. + +The anomaly branch is uniform on purpose: **any** group that cannot produce a tsgit +measurement renders both cells as `_missing entry_`, whatever the baseline holds. That row is +an alarm, not a comparison — a lone baseline number beside a blank tsgit cell invites exactly +the misreading the alarm exists to prevent — and it keeps today's bytes for the one shape that +is genuinely broken. + +This also decouples the commits: part A is safe to land before or after part C, on today's +artefact, in either order. + +Paired rows keep their exact current bytes: the same `toFixed` precisions, the same `ms`, +`/s` and `±%` decorations, the same `×` suffix on the speedup, the same column order. The footnote gains one clause saying the +speedup column applies to paired rows only. The two-name keying (`findByName(group, 'tsgit')` +and `findByName(group, 'isomorphic-git')`) is untouched, as ADR-480 requires. + +For testability the file keeps its own schema view (ADR-056) and mirrors +`bench-to-snapshot.ts`'s shape rather than growing a second module (D9): + +- `renderRow(group)` becomes exported and pure — it already is pure. +- A new exported `renderSummary(raw, environment)` builds the whole document. The three + impure inputs the current `main` inlines — the timestamp, the platform/arch/Node triple and + the CPU model — move into an `environment` parameter, so the document is deterministic under + test. `main()` is the only place that reads the clock, `process` and `os`. +- `main()` is guarded by the same `invokedDirectly()` predicate `bench-to-snapshot.ts` and + `gen-bench-fixture.ts` use — resolve `process.argv[1]` and compare it to + `fileURLToPath(import.meta.url)` — so importing the module runs nothing. +- `biome.json`'s `files.includes` gains `tooling/bench-summarize.ts` and + `tooling/test/unit/bench-summarize.test.ts`. The existing file is already clean under those + rules, so the whitelist entry is free. + +Nothing about `npm run bench:summary` changes: the same wireit script, the same input and +output paths, the same "Wrote …" line. + +### Part B — the eight findings + +**Status lines (389, 541, 724).** Each becomes the bare form the lint requires, with the +scope wording moved into the block quote under the title — the shape ADR-723 already uses. + +- **389** keeps its `## Status` heading and outlier title; only the bullet is trimmed to + `- **Status:** superseded by ADR-718`. Its block quote already says "for the default-on + posture … the incremental end-of-stream verification mechanism and the `{ verifyHash }` + option surface are carried forward", which is the whole of the parenthetical being removed, + so nothing is lost and nothing needs writing. +- **541** likewise trims to `- **Status:** superseded by ADR-721`. Its block quote already + carries "for the facade wrapper's read-path role on first-party adapters … the adapter's + root-set containment model, canonical-prefix derivation and write-path posture are carried + forward unchanged". +- **724** is the multi-superseding case and is D6. Its block quote already names all three + superseding ADRs with per-ADR scope; only the bullet form is in question. + +**Anchors (721, 752).** Purely positional. + +- **721**: `Carried forward from ADR-541:` moves to the start of its own line. The sentence + is re-wrapped so the paragraph still reads as prose; the wording is unchanged. +- **752**: the `**` wrappers come off both `Superseded from ADR-723:` and + `Carried forward from ADR-723:`. The colon and the prose after it stay — the lint's word + boundary permits them, and ADRs 718 and 731 write them exactly that way. + +**Citations.** Both are D7 and D8. Note that the sweep matches the literal `ADR-NNN` +anywhere in a tracked, non-exempt file, so "cite the superseding ADR **and** keep the old +identifier" is not available without a whole-file waiver. + +**Verification.** The lint is re-run from the worktree root after the edits and must print +only the banner and the `craft-adr: OK` line. Because it is not wired into any npm script, +CI job or hook in this repository, this is a manual step in the run record — wiring it is +not in scope. + +## Decision candidates + +| # | Choice | Alternatives (≤3) | Recommendation | Why | +|---|---|---|---|---| +| D1 | Where the zero-sample guard lives | (a) DSL `throws: true` only; (b) converter refusal only; (c) both | **(c)** | They close different holes. The DSL makes the bench step itself red at the source, with the stack — the only signal that names the defective scenario. The converter refusal is the invariant on the published artefact: whatever future path produces an entry with no value, it never reaches the action. (a) alone leaves the publish step trusting its input; (b) alone leaves a bench file passing green while measuring nothing. | +| D2 | Bounding the pinned run-phase deadlock that `throws: true` introduces | (a) accept the deadlock and add `timeout-minutes` to `benchmark-snapshot` (matching `bench.yml`'s 30); (b) accept it unbounded — no CI job here sets a timeout today; (c) drop `throws` to avoid it entirely | **(a)** | The failure mode is real and pinned: a rejection inside the runner's `setTimeout` callback never resolves its promise. Unbounded, that burns GitHub's 360-minute default. A timeout is one line, converts a hang into a bounded red, and is a strict improvement for every other job-level failure too. (c) trades a bounded hang for a silent pass — the defect we are here to fix. | +| D3 | Where the converter's refusal sits | (a) inside `toSnapshotEntries`; (b) a separate exported guard called from `main()` only; (c) inline in `main()`, unexported | **(b)** | `tooling/bench-check.ts` also imports `toSnapshotEntries`; (a) makes a valueless entry throw inside the label-gated, `continue-on-error` comparison job, where it is noise, and forecloses that tool's own `missing` verdict. (b) keeps one pure, unit-testable function and puts the policy where the publish contract lives. (c) is untestable — `tooling/` sits outside the coverage and mutation gates, so an unexported guard has no mechanical protection at all. | +| D4 | The fetch-pack bench's fresh-destination shape | (a) a fresh `createMemoryContext()` inside `sut`; (b) keep one context and remove every artefact the receive wrote after each call; (c) keep one context and receive a distinct pack per iteration | **(a)** | Measured: construction is 0.0011 ms against a 35 ms iteration (0.003%), so it does not distort the series, and it keeps the delta cache cold as a real receive faces it. (b) is coupled to the writer's artefact list — probed: removing `.pack` and `.idx` still throws on `.rev`, and the list grew last phase — and it warms the cache across iterations, quietly changing what the series prices. (c) changes the fixture the scenario is named after and would have to build packs inside the measured region. | +| D5 | tsgit refuses (and first clobbers) a re-received identical pack where git tolerates it silently — pinned, pre-existing, not introduced here | (a) bench-only in this PR; escalate the receive-path fix as the exception to the no-follow-ups rule; (b) fix it here: `materializePack` treats an occupied `pack-.*` destination as already done, checked **before** the rename so nothing is clobbered, with a cross-tool interop test pinning git's silent exit 0 and an ADR recording it; (c) fix it here minimally: catch `FILE_EXISTS` inside `materializePack` after the rename and return the existing artefacts | **(b)** | The prime directive binds every change, the divergence is user-visible (`clone` into a directory already holding the pack, and a filtered or shallow re-fetch, both throw where git succeeds), the tolerating pattern already exists in-tree, and the one test that claims to cover it cannot — it pre-creates only the `.pack`, which `rename` overwrites, so its assertion passes either way. (c) keeps the clobber-then-recover ordering git never performs. (a) is the honest option only if the user judges a receive-path behaviour change too large for a PR whose job is to un-red `main` — that judgment is the user's, which is why this is a candidate and not a decision. Under every option part C ships unchanged. | +| D6 | How ADR-724 expresses three superseding ADRs so the lint and the prose agree | (a) one bare `- **Status:** superseded by ADR-731`, all three-ADR nuance left in the block quote; (b) declare `supersedes: 724` in ADR-732 and ADR-733 too, giving three stacked bare status lines in 724 plus both anchors in each of 732 and 733; (c) (a) plus a separate non-status bullet naming ADR-732 and ADR-733 with their scopes | **(c)** | Only ADR-731 declares the supersession, so the lint demands exactly one line; extra lines are permitted. (c) is one added bullet, keeps the two other superseding ADRs visible at bullet level rather than only in prose, and duplicates nothing. (b) completes the machine-readable graph — the more principled answer — but forces near-identical "carried forward" paragraphs into three ADRs that all carry forward the same body of ADR-724, and asks for new decision prose that only the user can ratify. (a) demotes two real supersessions to prose. | +| D7 | `docs/BACKLOG.md`'s completed 30.3 entry cites ADR-723 | (a) re-point it at ADR-752, naming the addendum that survived; (b) waive the file with `DECISION-CITE-WAIVE(docs/BACKLOG.md)` on the grounds that a completed entry is history; (c) keep the reference but drop the `ADR-` prefix so the sweep stops matching | **(a)** | ADR-752 explicitly carries that addendum forward, so re-pointing keeps the sentence true and sends the reader to the live ADR. (b) waives the **whole file** — the token has no line granularity — so every future stale citation anywhere in the backlog goes unreported; it also needs a waiver file and a `--waiver-source` invocation contract that do not exist here. (c) defeats the check rather than satisfying it. | +| D8 | `docs/understand/security.md` cites ADR-541 for the root-set model | (a) cite ADR-721, naming the root-set model as what it carried forward from its predecessor; (b) waive the file; (c) cite ADR-721 and refer to ADR-541 by title only, so the sweep no longer matches | **(a)** | ADR-721 is the single authority for first-party read containment and its own body records the lineage, so one citation is both accurate and shorter; the file's opening paragraph already describes ADR-721's ruling and currently cites nothing for it. (b) is disproportionate for one line in a document that will keep citing ADRs. (c) preserves a pointer at the cost of writing a citation that deliberately evades the sweep. | +| D9 | The shape of the `bench-summarize.ts` extraction | (a) export the pure functions from `bench-summarize.ts` and guard `main()` — exactly `bench-to-snapshot.ts`'s shape; (b) a new `tooling/bench-summary-render.ts` module with a thin CLI wrapper; (c) share the raw-report types with `bench-to-snapshot.ts` | **(a)** | Smallest diff, one house pattern for two sibling scripts, two new whitelist entries instead of three, no new import specifier to get right under `node --experimental-strip-types`. (b) buys separation this ~100-line script does not need. (c) is foreclosed by ADR-056, which deliberately has each script own its read of the external vitest schema. | +| D10 | How a tsgit-only row's empty baseline cell and a no-tsgit row read | (a) tsgit-only → an em dash in the baseline cell and `n/a` speedup, no-tsgit → today's `_missing entry_` in both cells; (b) tsgit-only → `_not run_` italic marker, no-tsgit → `_missing entry_` in the tsgit cell with the baseline value still rendered; (c) tsgit-only → leave the baseline cell literally empty | **(a)** | An em dash reads as "no peer, by design" where an italic `_not run_` reads as a failure, which is precisely the confusion this part exists to remove; keeping `_missing entry_` for the genuinely anomalous shape preserves today's alarm where it belongs. (b) renders a baseline for a group that has no tsgit entry — a shape that has never occurred and would read as a comparison. (c) makes the two shapes indistinguishable from a truncated table. | + +## Test strategy + +`test/bench/**` and `tooling/**` sit outside the coverage and mutation gates, so the unit +tests below are the only mechanical guard and each must isolate one branch. + +### Unit — `tooling/test/unit/bench-summarize.test.ts` (new, `unit` project) + +Imports the exported renderers; synthetic `RawReport` values only, no artefact on disk. +Given/When/Then describe tree, AAA bodies, `sut` bound to the function under test. + +| case | asserts | +|---|---| +| paired group | the exact row string, byte-for-byte against the current renderer's output | +| tsgit-only group | tsgit cell formatted identically to the paired case; empty baseline marker; `n/a` speedup | +| group with only an `isomorphic-git` entry | the "missing" rendering survives | +| group with an empty benchmark list | same "missing" rendering — the no-entry edge of the same branch | +| tsgit entry with `median` absent but `mean` present | falls back to `mean` | +| tsgit-only group whose entry has neither `median` nor `mean` nor `hz` — the real shape in today's artefact | renders as missing; does **not** throw | +| tsgit entry whose value is `0` | speedup reads `n/a`, not `Infinity×` | +| `renderSummary` over a mixed report with a fixed environment | header, separator, one row per group in file-then-group order, footnote present including the paired-rows-only clause | +| `renderSummary` over an empty report | header and footnote, no rows | + +### Unit — `tooling/test/unit/bench-to-snapshot.test.ts` (extend) + +| case | asserts | +|---|---| +| report where one benchmark has neither `median` nor `mean` | the guard throws; the message contains that scenario's `" > "` key | +| report where two benchmarks lack both | both keys named | +| benchmark with `median` absent, `mean` present | the guard passes and `toSnapshotEntries` values it from `mean` | +| a fully-valued report | the guard is silent and existing entry assertions are unchanged | + +### Unit — `tooling/test/unit/bench-dsl.test.ts` (amend) + +The existing `'Given a comparison without a teardown' … 'Then neither bench receives options'` +case asserts `hooksFor` returns `{}` and **must be rewritten**, not deleted: both benches now +receive throwing options. The two teardown-routing cases keep their current assertions — +teardown still rides the last bench, still ignores `warmup` — with the options object now +also carrying `throws`. + +### Suite-level proof for part C + +1. `npx vitest bench --run --config vitest.bench.config.ts test/bench/fetch-pack.bench.ts`, + then read `reports/benchmarks/raw.json` and assert the entry has `sampleCount > 0` and a + numeric `median`. A green exit code proves nothing on its own — that is the defect. +2. A throwaway scenario whose `sut` throws, run under `vitest bench` to show a non-zero exit + with the error visible, then deleted. It is never committed. +3. The whole `npm run test:bench` sweep, then `tooling/bench-to-snapshot.ts`, then a + `sampleCount > 0` check across every entry in `raw.json` — this is what proves no *other* + scenario was failing silently and is now red. +4. Part A on the real artefact: point the renderer at the nightly `raw.json` copy and count + rows containing `missing`. Against the **pre-fix** artefact the count is **1** — the + fetch-pack scenario, correctly flagged as unmeasured by the uniform anomaly branch — down + from today's 81. Against a locally re-measured `raw.json` it is **0**. Record both counts + in the run record; reporting only "0" would hide which artefact was used. + +### Conditional on D5 — the receive path + +Only if D5 lands on (b) or (c). A cross-tool interop test in +`test/integration/*-interop.test.ts` receives one pack twice and asserts the second call +succeeds with the artefacts unchanged, with real `git` reproducing the same sequence in the +same fixture — parity tests are cross-adapter and prove nothing about faithfulness. Unit +coverage is memory-only: `exists`, `readSlice` and `writeExclusive` behave identically on both +first-party adapters, and the node adapter is covered end to end by the git-gated interop file. The +existing `fetch-missing` tolerance test is repaired in the same slice: it pre-creates only the +`.pack`, which `rename` overwrites, so the refusal it claims to exercise is never reached and +its assertion cannot distinguish the two outcomes — it must pre-create the sibling the writer +actually collides on. Under D5(a) none of this ships and the divergence is escalated instead. + +### Verification for part B + +Re-run the lint from the worktree root; the expected output is the exempt-set banner on +stderr and one `craft-adr: OK — ADR(s) checked, declaring supersession.` line on +stdout, exit 0. Under D6(b) the declaring count rises from 4 to 6; under D6(a) or D6(c) it +stays at 4. + +### Property tests — the four lenses, and why none fits + +Checked deliberately rather than skipped. **Round-trip pair:** none — nothing here parses what +another function serialises; the renderers are one-way and the converter's output is consumed +by an external action. **Compositional matcher or aggregator:** `renderRow` maps one group to +one string and `renderSummary` concatenates rows in order; there is no verdict to invert, no +identity element, no negation. **Total function over an algebraic grammar:** the input grammar +is a fixed three-shape enumeration (paired, tsgit-only, no tsgit), which the example sweep +above covers exhaustively — a generator would only re-draw those three. **Idempotence or +counting invariant:** the row count is trivially the group count, and asserting it would +restate the `map`. A property over the renderers would have to re-implement the format string +as its oracle, which is a tautology, not a property. No `*.properties.test.ts` sibling ships, +and this paragraph is the recorded reason. + +### Gates + +`npm run validate` is the ground truth. `npx cspell` is run bare over any touched +`docs/design` or `docs/plan` page, since the commit hook does not spell-check those +directories. If a gate times out on tests outside the diff, that is oversubscription — re-run +with `WIREIT_PARALLEL=1`, never `--no-verify`. + +## Out of scope + +- **Weakening `writeExclusive`** on either adapter. The exclusive write is the correct + primitive; if D5 is taken, the fix is a tolerant caller, never a permissive file system. +- **Changing any snapshot series key.** Every describe title and both bench names stay + byte-identical; a renamed key silently starts a new gh-pages series and orphans the old one. +- **Any `src/` change beyond what D5 resolves.** If D5 lands on (a), this PR touches no + production source at all. +- **An N-competitor summary renderer.** Foreclosed by ADR-480; part A fixes rendering within + the two-name keying. +- **Sharing a raw-report schema between the two bench tooling scripts.** Foreclosed by + ADR-056. +- **Wiring `adr-lint` into an npm script, a CI job or a hook.** It is invoked manually from + the craft engine today; making it a gate is its own change with its own waiver-file + contract. +- **Rebuilding the lost `main` fixture cache entry.** Self-healing on the first green run + after merge; recorded above so the slow run is not misread. +- **Adding words to `cspell.json`.** A spelling failure is reworded, never added to the dictionary. diff --git a/docs/design/partial-clone.md b/docs/design/partial-clone.md index 21c47e1f1..c40dcd03a 100644 --- a/docs/design/partial-clone.md +++ b/docs/design/partial-clone.md @@ -152,10 +152,12 @@ readonly promisor?: boolean; `promisor` is set. The empty-pack early-return path writes no `.promisor` (there is no pack to vouch for). -`writePackArtifacts` uses `writeExclusive`; a `FILE_EXISTS` collision means a -byte-identical pack (the name is the content SHA) is already on disk. The -lazy-fetch caller (§8) tolerates `FILE_EXISTS` and treats it as success; -`fetchPack` itself is unchanged so `clone` / `fetch` semantics do not move. +The receive path itself compares-and-completes each artefact at its +content-addressed name (see ADR-804 as amended): an identical pack, `.idx`, +`.rev` or sentinel already on disk is adopted; a differing one refuses with +`PACK_ARTIFACT_MISMATCH` naming the artefact. The lazy-fetch caller (§8) has +no separate tolerance of its own to add — the receive path's own posture +already covers it, so `clone` / `fetch` semantics do not move. ## 7. Configuration @@ -296,7 +298,9 @@ Algorithm (`fetchMissingInternal`): 5. `withDefaults` transport → `discoverRefs` → `selectFetchCapabilities`. 6. `fetchPack({ wants: missing, haves: [], capabilities, url, promisor: true, progressOp: 'fetch-missing:write-objects' })`. **No `filter`** (§8.4). - A `FILE_EXISTS` from a concurrent identical pack write is swallowed. + An identical pack from a concurrent write at the same content-addressed + name is adopted by the receive path itself (ADR-804 as amended); a + differing one refuses with `PACK_ARTIFACT_MISMATCH`. 7. Return. ### 8.3 Wiring into `readObject` @@ -445,7 +449,8 @@ src/repository.ts fetchMissing + promisor wiring after retry ⇒ `OBJECT_NOT_FOUND`. Uses a fake `PromisorRemote`. - `fetch-missing` — no promisor ⇒ `NO_PROMISOR_REMOTE`; no remote URL ⇒ `REMOTE_NOT_CONFIGURED`; already-local oids filtered out (no network); - empty oid list ⇒ no-op; `FILE_EXISTS` tolerated. + empty oid list ⇒ no-op; an identical pack already on disk at the receive's + content-addressed name is adopted, completing the siblings. - `clone` — `filter` validated before discovery; `REMOTE_FILTER_UNSUPPORTED` when the server lacks the capability; config block written correctly. @@ -490,8 +495,9 @@ Equivalent mutants documented inline with `// equivalent-mutant:`. silent corruption. Documented; the integration fixture enables it. - **Concurrent pack writes.** Two parallel lazy-fetches of the same object would write the same `pack-`. The in-flight map de-dupes within a - `Context`; cross-`Context` collisions are absorbed by the `FILE_EXISTS` - tolerance (the SHA-named pack is content-identical). + `Context`; cross-`Context` collisions are absorbed by the receive path's + own compare-and-complete rule (ADR-804 as amended) — the SHA-named pack is + content-identical, so both writers succeed. - **`tree:depth` over-fetch.** Accepted and documented (ADR-080); does not affect correctness, only transfer volume, and only for `tree:` clones. diff --git a/docs/plan/bench-snapshot-summary-adr-lint.md b/docs/plan/bench-snapshot-summary-adr-lint.md new file mode 100644 index 000000000..457147079 --- /dev/null +++ b/docs/plan/bench-snapshot-summary-adr-lint.md @@ -0,0 +1,1236 @@ +# Plan — the benchmark snapshot publishes again, the bench summary renders tsgit-only scenarios, `adr-lint` runs clean + +> Source: design doc `docs/design/bench-snapshot-summary-adr-lint.md` · ADRs 800, 801, 802, 803, 804, 805, 806, 807, 808, 809 +> The plan is the implementation script AND the knowledge handoff. Part agents start +> with zero context: whatever a part block omits is paid later as agent rediscovery. +> `plan-lint.sh` enforces the part schema — the plan phase cannot close without it. + +## Sizing rules + +- Every part costs a full agent lifecycle (spin-up, zero-context rebuild, gate) — it + must earn it. No standalone test-only parts for FEATURE code: coverage/interop/property + tests fold into the implementation part whose code they exercise. EXCEPTION: + test-infra-only and docs-only parts (tooling config, test helpers, fixtures, + harness suites, docs/prose) with no `src/` delta ARE standalone — they have no + implementation part to fold into. +- A part that would be a pure test pass over already-landed code merges into its + neighbour. + +Seven parts. Parts 1–4 and 6–7 have no `src/` delta (bench files, the bench DSL, two +tooling scripts, a CI workflow field, documentation, dependency metadata) and are +legitimately standalone. Part 5 is the only `src/` part and carries every one of its +tests — unit, adapter and cross-tool interop — in the same commit. + +## Working agreements — every part + +- **Part gate**, verbatim, with the placeholders resolved per part: + `npx vitest run && npm run check:types && ./node_modules/.bin/biome check && npm run check:spelling` +- **Phase gate**, once, after part 7: `npm run validate`. +- Parts are sequential in ONE working tree and build on each other. Land them in order. +- Never run two wireit scripts concurrently in this tree. If a gate times out on tests + outside the diff, that is oversubscription — re-run with `WIREIT_PARALLEL=1`. Never + `--no-verify`. +- Never commit on a red gate. One atomic conventional commit per part, message given. +- No provenance references (phase, ADR, backlog or decision numbers) inside source or + test code or in a commit subject — the commit is the join point. +- No suppression directives of any flavour (`@ts-ignore`, `biome-ignore`, `v8 ignore`, + `stryker-disable`). No swallowed errors. +- State-mutating probes against real `git` run in a `mktemp -d` throwaway with an + isolated `HOME`, `GIT_CONFIG_NOSYSTEM=1`, every `GIT_*` scrubbed and signing off — + never in this worktree, whose `.git/config` is shared with every sibling worktree. + +### Repository facts the parts rely on — verified, do not re-derive + +- `biome.json`'s `files.includes` is an opt-in **whitelist**. A `tooling/` file absent + from it is silently unlinted (`biome check` reports the path as ignored). Today it + lists `tooling/bench-to-snapshot.ts` and `tooling/test/unit/bench-to-snapshot.test.ts` + but **not** `tooling/bench-summarize.ts`. +- `vitest.config.ts`'s `unit` project already globs `tooling/test/unit/**/*.test.ts`, + so a new tooling unit test needs no config change. +- `vitest.config.ts`'s coverage `include` list is `src/domain/**`, `src/ports/**`, + `src/adapters/node/**`, `src/adapters/memory/**`, `src/operators/**`. It does **not** + cover `src/application/**`, so part 5's file carries no line-coverage gate; the + mutation harness, which mutates all of `src`, is its only mechanical guard. That is + why part 5's tests isolate one condition each. +- `npm run check:spelling` runs cspell over `src/**/*.ts`, `test/**/*.ts`, + `docs/**/*.md` and `*.md` — **not** over `tooling/**`. +- `reports/*` is gitignored except `reports/api.json`, so every bench artefact + (`reports/benchmarks/raw.json`, `summary.md`, `snapshot.json`) stays out of every + commit. Confirm with `git status --porcelain` after any bench run. +- `vitest.bench.config.ts` sets `benchmark.outputJson: 'reports/benchmarks/raw.json'`; + a single-file bench run overwrites that file with only that file's groups. +- Installed and pinned for this work: vitest 4.1.11, tinybench 2.9.0. `BenchOptions` is + vitest's re-export of tinybench's `Options` (`node_modules/vitest/dist/index.d.ts` + line 29), and `Options.throws?: boolean` exists + (`node_modules/tinybench/dist/index.d.ts` line 205) — `throws` needs no cast. +- Commit subjects are capped at 100 characters (`commitlint.config.js`). +- The lint-staged hook runs `biome check --write` and `vitest related --run --project unit` + on staged `.ts` files only; it spell-checks nothing. Markdown-only commits run neither. + +### The zero-sample check — one command, used by parts 1 and 2 + +After any `vitest bench` run, this is the assertion that a green exit code does not give +you (a benchmark that threw in warmup is reported as a pass with `samples: []`): + +```bash +node -e "const r=require('./reports/benchmarks/raw.json');const bad=r.files.flatMap(f=>f.groups.flatMap(g=>g.benchmarks.filter(b=>!(b.sampleCount>0)).map(b=>g.fullName+' > '+b.name)));console.log(bad.length===0?('OK — '+r.files.flatMap(f=>f.groups.flatMap(g=>g.benchmarks)).length+' entries, all sampled'):('ZERO-SAMPLE: '+bad.join(' | ')));process.exit(bad.length===0?0:1)" +``` + +## Decision candidates + +Every load-bearing choice the accepted decisions did not already settle. The part text +below is written against the recommendation; a different ruling changes only the named +step, never the part boundaries. + +| # | Choice | Alternatives | Recommendation | Why | +|---|---|---|---|---| +| P1 | Whether the already-present receive path also drops this Context's cached pack registry (part 5) | (a) call `refreshPackRegistry(ctx)`, exactly as the promote path does; (b) skip it — this call wrote nothing, so nothing it did invalidates the cache | **(a)** | The registry is keyed on `ctx.session` and caches the `objects/pack` scan. A Context that warmed its registry before some other writer landed the pack would, without the refresh, keep reporting the pack's objects as absent after a receive that reports success — the exact failure the promote path's own comment records `pull` hitting. git holds no such cache, so refreshing is the git-faithful side. (b) is one fewer line and one fewer test, at the cost of a real, narrow correctness hole. | +| P2 | Where the already-present check sits relative to the entry walk (part 5) | (a) after `indexQuarantinedPack`, immediately before the rename; (b) right after the trailer verifies, before the walk, skipping the index pass entirely | **(a)** | The accepted decision fixes "before the rename" and no further. (a) keeps `objectCount` truthful on the already-present path (it is the count this call actually walked) and keeps the verify-before-trust ordering intact — a malformed pack that merely looks like a duplicate still throws. It also matches git, which indexes the whole stream before its move step discovers the destination is occupied. (b) is faster but returns an `objectCount` it never measured and would accept a corrupt body whose trailer happens to name an existing pack. | +| P3 | What `toSnapshotEntries` does with a benchmark carrying neither `median` nor `mean`, now that `mean` is optional (part 3) | (a) skip it — `flatMap` to zero entries; (b) emit `value: Number.NaN`; (c) widen `SnapshotEntry.value` to `number \| undefined` | **(a)** | With `mean` optional, `bench.median ?? bench.mean` is `number \| undefined` and stops type-checking, so something must give. (a) keeps the published `SnapshotEntry` shape exactly as its accepted decision fixed it, stays total, and reaches `tooling/bench-check.ts` as a scenario absent from one side — which is precisely that tool's own `missing` verdict. (b) puts a silent poison value in the published series. (c) propagates the lie into the type the publish action consumes. Note that today's runtime behaviour — an entry whose `value` key `JSON.stringify` drops — is the defect, not a semantic worth preserving. | +| P4 | The shape of `renderSummary`'s `environment` parameter (part 4) | (a) a field-per-fact interface: `{ generatedAt, platform, arch, nodeVersion, cpuModel }`; (b) one pre-rendered `{ generatedAt, host }` string pair; (c) inject a clock and an `os` reader as function parameters | **(a)** | The renderer stays the only place that knows the header's byte layout, which is what makes the byte-identical assertion meaningful, and `main()` stays the only reader of the clock, `process` and `os`. (b) moves half the format string into `main()`, where no test can see it. (c) is dependency injection for two reads that have exactly one caller. | +| P5 | Where the re-receive interop test lives, and how the node adapter gets covered (part 5) | (a) a new `test/integration/pack-receive-idempotence-interop.test.ts` with its own `@proves` header, driving a **node** context so the node adapter is covered by the same test; (b) a new describe block inside the existing index-pack interop file; (c) a memory-only unit test plus a cross-adapter parity scenario | **(a)** | A dedicated file states one claim, carries its own small fixture (three commits plus `repack -a -d`, seconds rather than a 300-commit fast-import), and covers the node adapter where it matters — on a real filesystem, against real `git` in the same fixture. (b) reuses a heavyweight fixture and leaves the host file's `unique:` claim no longer describing the file. (c) cannot prove faithfulness at all: parity tests are cross-adapter and compare tsgit against tsgit. | + +## Part 1 — the fetch-pack bench receives into a fresh destination + +### Context + +The single file in scope is `test/bench/fetch-pack.bench.ts` (81 lines). It is the only +benchmark in the suite that has never measured anything: it builds one memory context in +the scenario's `build` callback and receives the same pack into that same context on +every iteration, so the second call renames its quarantined pack over the existing +`.pack` and then throws `FILE_EXISTS` on `pack-.idx`. + +Current shape, all of it load-bearing: + +- Imports: `createMemoryContext` from `../../src/adapters/memory/memory-adapter.js`; + `fetchPack` and the type `NegotiatePackBytes` from + `../../src/application/primitives/fetch-pack.js`; the type `ObjectId` from + `../../src/domain/objects/index.js`; `buildSyntheticPack` and the type `EntrySpec` + from `../unit/application/primitives/pack-fixture.js`; `benchScenario` from + `./support/bench-dsl.js`. +- Module constants `const ENCODER = new TextEncoder()`, `const CHAIN_DEPTH = 200`, + `const CHAIN_COUNT = 8` — unchanged. +- `const buildChainedEntries = (): EntrySpec[]` — unchanged. Produces 1608 entries + (eight independent linear OFS chains, 200 deep each) over 247,544 pack bytes. +- `const toNegotiator = (packBytes: Uint8Array): NegotiatePackBytes => async () => ({ packBody: (async function* () { yield packBytes; })(), shallow: [], unshallow: [] })` + — unchanged. A fresh generator per call, so one negotiator serves any number of + receives. +- The `benchScenario(given, whenThen, build)` call. Its two title strings are the + published snapshot series key and must stay **byte-identical, verbatim**: + - `'Given a pack with 8 independent 200-deep OFS delta chains'` + - `'When fetchPack receives and indexes it in two passes, Then measure tsgit'` + The bench name the DSL registers stays `tsgit`. A renamed key silently starts a new + gh-pages series and orphans the old one. +- `build` today: `const ctx = createMemoryContext(); const built = await buildSyntheticPack(ctx, buildChainedEntries()); const negotiator = toNegotiator(built.packBytes);` + then returns `{ sut }` where `sut: () => Promise` calls + `fetchPack(ctx, negotiator, { wants: [(built.ids[0] ?? 'a'.repeat(40)) as ObjectId], haves: [], capabilities: ['side-band-64k', 'ofs-delta'], progressOp: 'test:write-objects' })` + and ends with `if (result.packPath === '') throw new Error('fetchPack wrote no pack');`. + +The change is which context `sut` receives into, and nothing else: + +- `buildSyntheticPack(ctx, entries)` (see `test/unit/application/primitives/pack-fixture.ts`, + the function body spanning lines 82–166) reaches the context **only** through + `ctx.compressor.deflate` and `ctx.hash.hashHex`, and writes nothing. The produced pack + bytes therefore depend on the hash algorithm, not on the store, so the pack is built + once in `build` and replayed into any number of destinations. +- `build` keeps: one seed context used solely to construct the pack, the entry list, the + built pack, the negotiator closure and the wanted id. +- `sut` becomes `fetchPack(createMemoryContext(), negotiator, { … })` — the same input + object, a brand-new empty destination per iteration, the `packPath === ''` guard kept. +- Rename the seed binding so the two roles cannot be confused (`ctx` → a name that says + it only hashes and compresses). +- The comment claiming *"The packs land in the memory adapter's own store; it dies with + the worker, so there is nothing on disk to release"* is now false and must be replaced: + each iteration's store is unreachable once the iteration returns, so the scenario no + longer accumulates. + +Why a fresh destination rather than cleaning up after each call — probed, not assumed: +removing the `.pack` and `.idx` between calls still throws `FILE_EXISTS` on +`pack-.rev`; the writer's artefact list grew by `.rev` one phase ago and will grow +again, so the removal shape is coupled to it by construction. A fresh context also keeps +the delta cache cold, which is what a real receive faces, where a shared context would +serve iterations 2..n warm and price something the scenario does not claim to measure. +Measured cost of constructing a memory context: 0.0011 ms against a ~35 ms iteration, +about 0.003%. + +Two boundaries this part must not cross: + +- The receive path it measures is `fetchPack → materializePack → indexQuarantinedPack → + writePackSiblingArtifacts` in src/application/primitives/fetch-pack.ts. Part 5 changes + that path; part 1 must not touch it and must not depend on it, because a tolerant + receive path would let a second receive into an occupied destination skip the sibling + writes and price a different code path. +- The DSL entry point is `benchScenario(given, whenThen, build, opts)` in + test/bench/support/bench-dsl.ts. Part 2 changes it; part 1 must not. + +Nothing in `tooling/` or `.github/` changes here. + +### TDD steps + +There is no vitest test for a bench scenario, and a green `vitest bench` exit code +proves nothing — that is the defect. The RED is therefore an explicit measurement probe, +run and recorded before the edit. + +1. **RED (probe, before any edit).** Run + `npx vitest bench --run --config vitest.bench.config.ts test/bench/fetch-pack.bench.ts` + then the zero-sample check from *Working agreements*. Expected failure: the check + exits 1 and names + `Given a pack with 8 independent 200-deep OFS delta chains, When fetchPack receives and indexes it in two passes, Then measure tsgit > tsgit` + — the entry carries `samples: []`, no `sampleCount`, no `median`, no `mean`, no `hz`, + while `vitest bench` itself exited 0. Save a copy of the entry's `fullName` string; + it is the series key the GREEN run must reproduce byte-for-byte. +2. **GREEN.** Apply the fresh-destination edit: `build` constructs the pack through a + seed context; `sut` calls `fetchPack(createMemoryContext(), negotiator, { … })`. + Re-run the same two commands. The check must exit 0, the entry must carry + `sampleCount > 0` and a numeric `median`, and its `fullName` must be byte-identical + to the string saved in step 1 (compare the two strings explicitly, do not eyeball). +3. **REFACTOR.** Replace the stale store-lifetime comment with one that says why a fresh + destination is required (cold cache per iteration, immunity to the writer's artefact + list). Rename the seed binding. Re-run step 2's commands — the numbers move, the key + does not. +4. Confirm `git status --porcelain` shows only `test/bench/fetch-pack.bench.ts`. + +### Gate + +```bash +npx vitest run tooling/test/unit/bench-dsl.test.ts \ + && npm run check:types \ + && ./node_modules/.bin/biome check test/bench/fetch-pack.bench.ts \ + && npm run check:spelling +``` + +`` resolves to `tooling/test/unit/bench-dsl.test.ts` — this part touches +no vitest test of its own, and that is the only unit test covering the DSL this bench +file registers through. The measurement proof is the extra, non-negotiable step: + +```bash +npx vitest bench --run --config vitest.bench.config.ts test/bench/fetch-pack.bench.ts +# then the zero-sample check from Working agreements — must exit 0 +``` + +### Commit + +`fix(bench): receive into a fresh memory context on every fetch-pack iteration` + +## Part 2 — the bench DSL fails a warmup throw, and the snapshot job is time-bounded + +### Context + +Two files carry the change plus one workflow field. The mechanism, pinned against the +installed vitest 4.1.11 and tinybench 2.9.0: `bench(name, fn, options)` stores the +options object verbatim and vitest's benchmark runner passes it straight to +`new Bench(...)`, which reads `throws` off it. Without `throws`, tinybench's `warmup` +stores the error on the task and returns; `run` then returns early on that stored error +**before** dispatching either the `complete` or the `error` event, and vitest listens for +nothing else — so the task keeps the placeholder result the runner built for it +(`{ name, rank: 0, rme: 0, samples: [] }`), the suite is marked pass, and the process +exits 0. + +**`test/bench/support/bench-dsl.ts`** (96 lines). Current symbols: + +- `export interface BenchComparison { readonly sut: () => Promise | void; readonly baseline?: () => Promise | void; readonly teardown?: () => Promise | void }` +- `type Teardown = () => Promise | void;` and `type HookMode = 'warmup' | 'run';` +- `export const onMeasuredRun = (teardown: Teardown) => (mode: HookMode): Promise | void => mode === 'run' ? teardown() : undefined;` +- `export interface MeasuredRunHooks extends BenchOptions { readonly teardown: (task: unknown, mode: HookMode) => Promise | void }` — the `teardown` field is **required** today. +- `const afterMeasuredRun = (teardown: Teardown): MeasuredRunHooks => ({ teardown: (_task, mode) => onMeasuredRun(teardown)(mode) });` +- `export interface ScenarioHooks { readonly tsgit?: MeasuredRunHooks; readonly baseline?: MeasuredRunHooks }` +- `export const hooksFor = (comparison: BenchComparison): ScenarioHooks` — early-returns + `{}` when `comparison.teardown === undefined`; otherwise builds one hooks object and + returns `{ tsgit: hooks }` when there is no baseline, `{ baseline: hooks }` when there is. +- `export interface BenchScenarioOptions { readonly skip?: boolean }` +- `export const benchScenario = (given, whenThen, build, opts = {}) => { … bench('tsgit', comparison.sut, hooks.tsgit); if (comparison.baseline !== undefined) { bench('isomorphic-git', comparison.baseline, hooks.baseline); } }` + +`MeasuredRunHooks` and `ScenarioHooks` have no consumer outside this file (grep over +`src`, `test` and `tooling` returns only bench-dsl.ts itself), so their shape is free to +change. + +Target shape: **one** options interface that always carries `throws: true` and carries +the teardown optionally, with `ScenarioHooks`' two fields becoming REQUIRED (every bench +now gets options). The REDs below read them through `?.` so they fail as assertions +rather than as a `TypeError` while the fields are still optional; once GREEN lands and +the fields are required, drop the optional chaining if biome asks for it. `hooksFor` +returns options for BOTH benches, always; the +teardown routing is unchanged — it still rides the scenario's LAST bench so a baseline +still measures on an intact scratch copy, and `onMeasuredRun` still ignores `'warmup'`; +`benchScenario` always passes the resolved options to `bench(...)`. + +One existing contract becomes load-bearing in a new way and must be left alone: +`removeSync` in test/bench/support/fixture-scratch.ts swallows and logs. tinybench +invokes the teardown hook un-awaited and inside `run`'s own body, so a teardown that +throws lands in the same never-resolving promise as a run-phase failure. Under +`throws: true` that swallow stops being defensive and becomes what keeps a cleanup +failure from hanging the runner. Do not "tidy" it into a rethrow; record the invariant in +the DSL's doc comment instead. + +**`tooling/test/unit/bench-dsl.test.ts`** (95 lines, `unit` project, already in the biome +whitelist). It imports `{ hooksFor, onMeasuredRun } from '../../../test/bench/support/bench-dsl.ts'`. +Module-level helpers at the top: `const noop = (): void => undefined;` and +`const noTask = undefined;` — the hook never reads its task argument, and vitest's +`BenchFactory` / `BenchTask` are type-only re-exports that cannot be constructed here, so +`undefined` is passed for it. Existing cases: + +- `describe('onMeasuredRun')` — two cases, `'warmup'` does not call the teardown, + `'run'` calls it exactly once. Unchanged by this part. +- `describe('hooksFor')` > `describe('Given a comparison without a teardown')` > + `describe('When hooksFor routes it')` > `it('Then neither bench receives options')`, + asserting `expect(result).toEqual({})` on the input `{ sut: noop, baseline: noop }`. + This case must be **rewritten**, not deleted. +- `describe('Given a tsgit-only comparison with a teardown')` — asserts the warmup/run + routing and `expect(Object.hasOwn(result, 'baseline')).toBe(false)`. +- `describe('Given a comparison with a baseline and a teardown')` — asserts the teardown + fires from the baseline and `expect(Object.hasOwn(result, 'tsgit')).toBe(false)`. + +Both `Object.hasOwn(...)` assertions stop being true once every bench receives options; +they become assertions that the OTHER bench's options carry no teardown. + +**`.github/workflows/ci.yml`.** The `benchmark-snapshot` job begins at line 562: + +```yaml + benchmark-snapshot: + if: github.event_name == 'push' + needs: [unit-tests] + runs-on: ubuntu-latest + permissions: + contents: write +``` + +No job anywhere in that file sets `timeout-minutes`. Add `timeout-minutes: 30` +immediately after `runs-on: ubuntu-latest`, the same placement and the same number +`.github/workflows/bench.yml` already uses at its line 19. Rationale to record nowhere in +code but to know while editing: with `throws: true`, an error raised during a benchmark's +**run** phase (after warmup) rejects inside the timer callback vitest wraps the run in, +that promise never settles, and the worker hangs — unbounded, it would burn GitHub's +360-minute default. + +Two consequences of `throws: true`, both deliberate and both recorded in the DSL's doc +comment so a future reader does not diagnose them as fresh defects: + +- A warmup failure aborts the **whole bench file** — scenarios declared after the failing + one never run, so a truncated `raw.json` is expected, not a second bug. +- tinybench fires the bench-level teardown hook with mode `warmup` before raising, which + `onMeasuredRun` deliberately ignores, so a copy-based scenario's scratch directory is + left behind. That is the already-accepted cost of the scratch posture; + `bench:fixture -- --prune` is the reclaimer. + +Exposure of applying `throws: true` to all 30 bench files: the current nightly artefact +has exactly **one** sample-less entry out of 109 — the fetch-pack scenario part 1 fixes. +The sweep is expected green on part 1 alone. If a different scenario surfaces, its fix +rides in this PR (there are no follow-ups); if the fix is not small, escalate +`{ scenario, reason, ≤3 options }` rather than suppressing it. + +### TDD steps + +1. **RED 1.** Rewrite `it('Then neither bench receives options')` under + `describe('Given a comparison without a teardown')`, narrowing its input to the + tsgit-only shape `{ sut: noop }` and retitling it to + `Then both benches receive throwing options and neither carries a teardown`. Assert + `result.tsgit?.throws === true`, `result.baseline?.throws === true`, + `result.tsgit?.teardown === undefined`, `result.baseline?.teardown === undefined`. + Expected failure: `hooksFor` returns `{}`, so every one of the four reads is + `undefined`. +2. **RED 2.** Add a sibling case `describe('Given a comparison with a baseline and no teardown')` + over the input `{ sut: noop, baseline: noop }` with the same four assertions. This + isolates the second half of the no-teardown branch, which RED 1 no longer covers. + Expected failure: same. +3. **RED 3.** Amend `Given a tsgit-only comparison with a teardown`: keep the warmup/run + assertions verbatim, replace `expect(Object.hasOwn(result, 'baseline')).toBe(false)` + with `expect(result.baseline?.throws).toBe(true)` and + `expect(result.baseline?.teardown).toBeUndefined()`. Expected failure: + `result.baseline` is `undefined`. +4. **RED 4.** Amend `Given a comparison with a baseline and a teardown` symmetrically: + keep `expect(teardown).toHaveBeenCalledTimes(1)` after + `await result.baseline?.teardown?.(noTask, 'run')`, replace the `Object.hasOwn` + assertion with `expect(result.tsgit?.throws).toBe(true)` and + `expect(result.tsgit?.teardown).toBeUndefined()`. Expected failure: `result.tsgit` is + `undefined`. +5. **GREEN.** In `bench-dsl.ts`: give the options interface an always-`true` `throws` + field and an OPTIONAL teardown; drop `hooksFor`'s early return so it returns options + for both benches in every case, attaching the teardown to the last bench exactly as + before; make `ScenarioHooks`' two fields required; have `benchScenario` pass + `hooks.tsgit` and `hooks.baseline` unconditionally. All four cases go green. +6. **RED 5 (workflow).** No unit test can assert a YAML job field. The RED is + `grep -n 'timeout-minutes' .github/workflows/ci.yml` printing nothing. **GREEN:** add + the line; re-run the grep and expect exactly one hit, inside the `benchmark-snapshot` + job. Confirm the file still parses as a workflow by eye against bench.yml's shape. +7. **REFACTOR.** The DSL's module doc comment records three things: the file-wide abort + on a warmup throw, the run-phase hang that the workflow timeout bounds, and why + `removeSync`'s swallow must not become a rethrow. Update `BenchComparison.teardown`'s + existing doc note if it now understates the abort. +8. **Suite-level proof.** Run the whole sweep, then the zero-sample check across every + entry (see *Gate*). This is the only thing that proves no OTHER scenario was failing + silently and has now gone red. Record the entry count and the number of skipped + scenarios — a scaled scenario whose fixture cannot be built is `skip`ped and emits no + group at all, so a skip is not a false green but it does shrink the denominator. + +### Gate + +```bash +npx vitest run tooling/test/unit/bench-dsl.test.ts \ + && npm run check:types \ + && ./node_modules/.bin/biome check test/bench/support/bench-dsl.ts tooling/test/unit/bench-dsl.test.ts \ + && npm run check:spelling +``` + +`biome` is not given the workflow file — YAML is outside its `files.includes`. Then, and +this part cannot land without it: + +```bash +npx vitest bench --run --config vitest.bench.config.ts +# then the zero-sample check from Working agreements — must exit 0 over EVERY entry +``` + +The sweep builds or reuses the scaled fixtures under `~/.cache/tsgit-bench` and can take +tens of minutes on a cold cache. Do not shorten it to the fetch-pack file: a single-file +run cannot prove the repo-wide claim this part makes. + +### Commit + +`fix(bench): fail the run on a warmup throw and bound the snapshot job at 30 minutes` + +## Part 3 — the snapshot converter refuses a benchmark it cannot value + +### Context + +One script and its existing unit test. + +**`tooling/bench-to-snapshot.ts`** (121 lines) is already whitelisted in biome.json, +already exports its pure functions and already guards `main()` — it is the house pattern +part 4 copies. Current symbols: + +- `interface RawBenchmark { readonly name: string; readonly mean: number; readonly median?: number }` + — the declared `mean: number` is a lie at runtime. vitest emits the placeholder + `{ id, name, rank, rme: 0, samples: [] }` for a benchmark that threw in warmup, with + neither `mean` nor `median`. `mean` becomes optional. +- `interface RawGroup { readonly fullName: string; readonly benchmarks: ReadonlyArray }`, + `interface RawFile { readonly groups: ReadonlyArray }`, + `export interface RawReport { readonly files: ReadonlyArray }`. +- `export interface SnapshotEntry { readonly name: string; readonly unit: 'ms'; readonly value: number }` + — the shape an accepted decision fixes. Do NOT widen `value`. +- `export interface StampedSnapshotEntry extends SnapshotEntry { readonly extra: string }`. +- `export const toSnapshotEntries = (raw: RawReport): SnapshotEntry[]` — a `flatMap` over + files → groups → benchmarks producing + `{ name: \`${group.fullName} > ${bench.name}\`, unit: 'ms' as const, value: bench.median ?? bench.mean }`. + Once `mean` is optional that expression types as `number | undefined` and stops + compiling — decision candidate P3 settles what replaces it. The metric + (`median ?? mean` in ms) and the `" > "` key are fixed by an accepted + decision and do not change. +- `export const withNodeVersion(entries, resolvedNodeVersion)`, + `export const resolveNodeVersion(env)`. +- `const ROOT`, `const RAW = /reports/benchmarks/raw.json`, + `const OUT = /reports/benchmarks/snapshot.json`. +- `const main = async (): Promise` at line 103 — + `resolveNodeVersion(process.env)`, then `JSON.parse(await readFile(RAW, 'utf8')) as RawReport`, + then `withNodeVersion(toSnapshotEntries(raw), resolvedNodeVersion)`, then + `writeFile(OUT, …)`, then a `Wrote N snapshot entries to ` line on stdout. +- `const invokedDirectly = (): boolean` at lines 111–114: + `const entry = process.argv[1]; return entry !== undefined && path.resolve(entry) === fileURLToPath(import.meta.url);` + and the `if (invokedDirectly()) { main().catch(…) }` tail that exits 1 with the message + on stderr. + +The guard goes in `main()` **between the parse and the conversion**, so `snapshot.json` is +never written when an offender is present and the publish action never sees a partial +file. It is a separate exported pure function, not a check inside `toSnapshotEntries`, +because `tooling/bench-check.ts` also imports `toSnapshotEntries` and runs label-gated on +a `continue-on-error` job, where a hard throw is noise and would foreclose that tool's own +`missing` verdict. `bench-check.ts` is not edited by this part and must not inherit the +refusal. + +The refusal message names **every** offender, each as `" > "` +— the same key `toSnapshotEntries` produces, so the operator can grep the raw report for +it directly. Name the export `assertEveryBenchmarkValued`; it takes the parsed report and +returns it unchanged when every benchmark yields a value, and throws otherwise. It is +INTERNAL to `tooling/`: nothing under `src/` imports it, it reaches no barrel and no +library user, so it trips no public-surface gate and `reports/api.json` needs no +regeneration for this part. + +**`tooling/test/unit/bench-to-snapshot.test.ts`** (already whitelisted, `unit` project). +It imports `{ type RawReport, resolveNodeVersion, toSnapshotEntries, withNodeVersion } from '../../bench-to-snapshot.js'` +— the `.js` specifier is the house form for a tooling test importing its subject. Its +existing tree is `describe('toSnapshotEntries')` > `describe('Given …')` > +`describe('When toSnapshotEntries runs')` > `it('Then …')`, AAA bodies with +`// Arrange` / `// Act` / `// Assert` markers, fixtures built as inline `RawReport` +object literals with group names like `'log:walk'`. Extend that file; do not add a new +one. + +Assertion discipline for the refusal: assert the error's **message text and every +offender key**, never `toThrow(Error)` — a bare class assertion cannot tell a +string-literal mutant from the real message, and `bareClassToThrow` is a gating heuristic +in this repository. + +### TDD steps + +1. **RED 1.** New top-level `describe('assertEveryBenchmarkValued')` > + `Given a report whose only benchmark carries neither median nor mean` > + `When the guard runs` > `Then it throws naming that benchmark`. Build the report with + one group `'log:walk'` and one benchmark `{ name: 'tsgit' }`. Use try/catch, then + assert the caught error is an `Error` and that its `message` contains + `'log:walk > tsgit'`. Expected failure: the exported symbol does not exist yet. +2. **RED 2.** `Given a report with two benchmarks carrying neither median nor mean` > + `Then the message names both keys` — two groups in two files, both offenders asserted + individually. Isolates "every offender, not just the first". +3. **RED 3.** `Given a benchmark with a mean and no median` > `Then the guard returns the report unchanged` + — assert `result` is the same reference as the input (`toBe`). +4. **RED 4.** `Given a benchmark with a median and no mean` > `Then the guard returns the report unchanged`. + RED 3 and RED 4 exist separately so each half of the `median ?? mean` condition is + proven on its own; one test carrying both cannot. +5. **RED 5.** `Given a report with no files` > `Then the guard returns the report unchanged` + — the empty edge of the same branch. +6. **RED 6.** Inside `describe('toSnapshotEntries')`: + `Given a group holding one valued benchmark and one carrying neither median nor mean` > + `Then only the valued benchmark becomes an entry` — asserts the exact one-element + array. This is the behaviour decision candidate P3(a) chooses. vitest strips types + rather than checking them, so the case runs today and fails on the value (a second + entry whose `value` is `undefined`); `npm run check:types` stays red until step 7 + makes `mean` optional, which is expected and is not a reason to reorder. +7. **GREEN.** Make `RawBenchmark.mean` optional. Add two module-private helpers — one + that reads a benchmark's value as `number | undefined`, one that builds the + `" > "` key — and use both from `toSnapshotEntries` (which now `flatMap`s + a benchmark to zero or one entry) and from the new exported guard. Wire the guard into + `main()` between `JSON.parse(...)` and `toSnapshotEntries(...)`. +8. **REFACTOR.** The module doc comment gains one sentence: the publish path refuses a + value-less entry by name, and the comparison tool deliberately does not inherit that + refusal. +9. **End-to-end refusal probe** (not a committed test — the script's `main()` is not unit + testable). Delete any `reports/benchmarks/snapshot.json` a previous run left behind, + write a hand-made `reports/benchmarks/raw.json` holding one group with one + sample-less benchmark, run + `RESOLVED_NODE_VERSION=24.0.0 node --experimental-strip-types tooling/bench-to-snapshot.ts`, + and assert exit 1, the offender key on stderr, and `reports/benchmarks/snapshot.json` + absent. Then regenerate a real `raw.json` with + `npx vitest bench --run --config vitest.bench.config.ts test/bench/fetch-pack.bench.ts` + and re-run the script: exit 0, `snapshot.json` written. `reports/` is gitignored, so + neither file enters the commit — confirm with `git status --porcelain`. + +### Gate + +```bash +npx vitest run tooling/test/unit/bench-to-snapshot.test.ts \ + && npm run check:types \ + && ./node_modules/.bin/biome check tooling/bench-to-snapshot.ts tooling/test/unit/bench-to-snapshot.test.ts \ + && npm run check:spelling +``` + +Plus the end-to-end refusal probe from TDD step 9, both halves. + +### Commit + +`fix(tooling): refuse a benchmark snapshot entry that carries no value` + +## Part 4 — the bench summary renders tsgit-only scenarios + +### Context + +`tooling/bench-summarize.ts` (94 lines) requires **both** a `tsgit` and an +`isomorphic-git` entry in a group and otherwise emits +`| | _missing entry_ | _missing entry_ | n/a |`. Rendering the real nightly +artefact through it produces 95 data rows, **81 of them blank**: the suite has 14 paired +groups and 81 tsgit-only groups, and no group without a `tsgit` entry at all. A reader of +`summary.md` sees 85% of the suite reported as not run. + +Two mechanical facts about the file. It exports nothing and calls `main()` at import +(line 91), so no part of it is reachable from a test. And it is **not** in `biome.json`'s +`files.includes` whitelist, so it is silently unlinted today — its content is +nevertheless already clean under this repository's rule set, so the whitelist entry costs +nothing. + +Current symbols, none exported: + +- `interface BenchEntry { readonly name: string; readonly hz: number; readonly mean: number; readonly median?: number; readonly p99: number; readonly rme: number }` +- `interface BenchGroup { readonly fullName: string; readonly benchmarks: ReadonlyArray }` +- `interface BenchFile { readonly filepath: string; readonly groups: ReadonlyArray }` +- `interface RawReport { readonly files: ReadonlyArray }` +- `const scenarioName = (fullName: string): string` — splits on `' > '`, returns the last + part, falling back to `fullName`. +- `const findByName = (group: BenchGroup, name: string): BenchEntry | undefined` +- `const formatMs = (value: number): string => \`${value.toFixed(3)} ms\`` +- `const formatHz = (value: number): string => \`${value.toFixed(0)}/s\`` +- `const formatSpeedup = (a: number, b: number): string` — `'n/a'` when `b === 0`, + otherwise `` `${(a / b).toFixed(2)}×` ``. +- `const renderRow = (group: BenchGroup): string` — the all-or-nothing guard, then + `const tsgitMean = tsgit.median ?? tsgit.mean; const isoMean = iso.median ?? iso.mean;` + and the row template + `` `| ${scenario} | ${formatMs(tsgitMean)} (${formatHz(tsgit.hz)}, ±${tsgit.rme.toFixed(2)}%) | ${formatMs(isoMean)} (${formatHz(iso.hz)}, ±${iso.rme.toFixed(2)}%) | ${speedup} |` `` + with `speedup = formatSpeedup(isoMean, tsgitMean)`. +- `const main = async (): Promise` — reads `RAW`, flattens + `raw.files.flatMap((file) => file.groups)`, and joins these lines with `'\n'`: + `'# Benchmark results'`, `''`, + `` `Generated ${new Date().toISOString()} on \`${process.platform}-${process.arch}\` (Node ${process.version}, ${os.cpus()[0]?.model ?? 'unknown CPU'}).` ``, + `''`, `'| Scenario | tsgit | isomorphic-git | speedup (tsgit faster) |'`, `'|---|---|---|---|'`, + `...groups.map(renderRow)`, `''`, the four-line block quote beginning + `'> _speedup > 1×_ means tsgit beat isomorphic-git on median runtime. Raw'`, `''`. + Then `writeFile(OUT, …)` and `Wrote ` on stdout. + +Required rendering, an accepted decision: + +| group shape | tsgit cell | baseline cell | speedup | +|---|---|---|---| +| paired (both entries measured) | ` ms (/s, ±%)` | same, from the `isomorphic-git` entry | `×`, or `n/a` when the tsgit value is zero | +| tsgit measured, no measured baseline | as above | a single em dash | `n/a` | +| no measured tsgit entry | `_missing entry_` | `_missing entry_` | `n/a` | + +Paired rows keep their **exact current bytes** — same `toFixed` precisions, same `ms`, +`/s` and `±%` decorations, same `×` suffix, same column order. The anomaly branch is +uniform on purpose: any group that cannot produce a tsgit measurement renders BOTH cells +as `_missing entry_`, whatever the baseline holds. That row is an alarm, not a +comparison. The em dash reads as "no peer, by design"; an italic marker would read as a +failure, which is the confusion this part exists to remove. + +**The renderer must be total, and that is not optional.** Today's all-or-nothing guard +accidentally protects the formatters: the one entry in the suite with no samples sits in +a tsgit-only group and never reaches `formatMs`. The moment a tsgit-only group formats +its own cell, that entry reaches `formatMs(undefined)` and crashes `npm run bench:summary` +on the very artefact this part is meant to fix. So `BenchEntry` gets the same reality +check the converter's raw type gets — `mean` and `hz` become optional, `median` already +is — and one predicate decides a cell: **an entry counts as measured when `median ?? mean` +is a number and `hz` is a number**. vitest emits those fields together (a task carries +either a full result or the `{ id, name, rank, rme, samples }` placeholder), so the two +conditions never disagree in practice; the predicate is what makes that a checked fact +rather than an assumption. A group whose `isomorphic-git` entry exists but is not +measured renders as tsgit-only — the baseline cell only ever carries a number when the +baseline entry is itself measured. + +The two-name keying (`findByName(group, 'tsgit')` and `findByName(group, 'isomorphic-git')`) +is untouched: the runnable bench set stays at exactly two names, so no N-competitor +renderer ships. + +Extraction shape, an accepted decision — mirror tooling/bench-to-snapshot.ts rather than +growing a second module: + +- `renderRow(group)` becomes exported. It is already pure. +- A new exported `renderSummary(raw, environment)` builds the whole document. The three + impure inputs `main()` inlines today — the timestamp, the platform/arch/Node triple and + the CPU model — move into the `environment` parameter (decision candidate P4), so the + document is deterministic under test. `main()` becomes the only place that reads the + clock, `process` and `os`. +- `main()` is guarded by the same invoked-directly predicate bench-to-snapshot.ts uses: + resolve `process.argv[1]` and compare it to `fileURLToPath(import.meta.url)`. Copy it + verbatim; the file already imports `node:path` as `path` and `node:url` as `url`, so no + new import specifier is introduced. Importing the module must then run nothing. +- Export the `RawReport` and `BenchGroup` types so the test can build typed fixtures, and + name the new parameter's type `SummaryEnvironment`, exactly as bench-to-snapshot.ts + exports `RawReport`. Each script keeps its OWN minimal view of the vitest schema; + sharing types between the two is foreclosed. +- Every one of these exports is INTERNAL to `tooling/`: nothing under `src/` imports the + script, it reaches no barrel and no library user, so none of them trips a + public-surface gate and `reports/api.json` needs no regeneration. `check:dead-code` + (knip) is satisfied because the new unit test imports them — the same arrangement + bench-to-snapshot.ts already ships. + +New file **`tooling/test/unit/bench-summarize.test.ts`**. The `unit` project already globs +`tooling/test/unit/**/*.test.ts`, so no config change. Mirror +tooling/test/unit/bench-to-snapshot.test.ts: import the subject as +`'../../bench-summarize.js'`, Given/When/Then describe tree, AAA bodies with section +comments, `sut` bound to the function under test (never to a result), synthetic +`RawReport` literals only — no artefact on disk. + +**`biome.json`** — the `files.includes` array (lines 10–43) gains +`"tooling/bench-summarize.ts"` and `"tooling/test/unit/bench-summarize.test.ts"`. The +array is an opt-in whitelist; an unlisted file is silently unlinted, so both entries are +mandatory. Place them next to the existing `tooling/bench-to-snapshot.ts` / +`tooling/test/unit/bench-to-snapshot.test.ts` pair. + +Nothing about `npm run bench:summary` changes: the same wireit script +(`node --experimental-strip-types tooling/bench-summarize.ts`), the same declared +`files` and `output` paths, the same `Wrote …` line. + +The code in this part is independent of parts 1–3 and 5 and is safe on today's artefact, +whichever order it lands in. Only TDD step 14's "count must be 0" reading assumes parts 1 +and 2 already landed, which the ordering of this plan guarantees. + +### TDD steps + +Each case isolates one branch; the unit test is the only mechanical guard this file will +ever have, since `tooling/` sits outside the coverage and mutation gates. + +1. **RED 1.** `describe('renderRow')` > `Given a group with a measured tsgit entry and a measured isomorphic-git entry` > + `When renderRow renders it` > `Then the row carries both cells and the speedup`. + Assert the exact row string, byte for byte. Build the expected string from the row + template quoted in this part's Context block, then cross-check the shape against a + real paired row the current script produces — + `| … | 3.698 ms (256/s, ±5.26%) | 1.233 ms (529/s, ±13.78%) | 0.33× |` — so the + assertion is anchored to observed output, not to a re-reading of the template. + Expected failure: `renderRow` is not exported. +2. **RED 2.** `Given a group with a measured tsgit entry and no isomorphic-git entry` > + `Then the tsgit cell renders as in a paired row, the baseline cell is an em dash and the speedup is n/a`. +3. **RED 3.** `Given a group holding only an isomorphic-git entry` > + `Then both cells render as missing`. +4. **RED 4.** `Given a group with an empty benchmark list` > `Then both cells render as missing` + — the no-entry edge of the same branch. +5. **RED 5.** `Given a tsgit entry with a mean and no median` > `Then the cell is built from the mean`. +6. **RED 6.** `Given a tsgit-only group whose entry carries neither median nor mean nor hz` > + `Then both cells render as missing and nothing throws` — this is the real shape in + today's artefact and the reason the predicate exists. +7. **RED 7.** `Given a tsgit entry with a median and no hz` > `Then both cells render as missing` + — isolates the second half of the predicate, which RED 6 cannot. +8. **RED 8.** `Given a group whose tsgit entry is measured and whose isomorphic-git entry is not` > + `Then the row renders as a tsgit-only row` — pins that an unmeasured baseline is not a + baseline. +9. **RED 9.** `Given a paired group whose tsgit value is zero` > `Then the speedup reads n/a` + — not `Infinity×`. +10. **RED 10.** `describe('renderSummary')` > + `Given a report with one paired group and one tsgit-only group and a fixed environment` > + `Then the document carries the header, the table header, one row per group in file-then-group order, and the footnote`. + Assert the whole string. Expected failure: `renderSummary` does not exist. +11. **RED 11.** `Given a report with no files and a fixed environment` > + `Then the document carries the header and the footnote and no rows`. +12. **GREEN.** Widen `BenchEntry` (`mean` and `hz` optional); add the measured predicate + and a cell builder; rewrite `renderRow`'s branches; export `renderRow`, the new + `renderSummary`, and the `RawReport` / `BenchGroup` / `SummaryEnvironment` types; move + the three impure reads into `main()`; guard `main()` with the invoked-directly predicate; + add the footnote clause saying the speedup column applies to paired rows only. +13. **REFACTOR.** Add both whitelist entries to `biome.json` and run + `./node_modules/.bin/biome check` over the two files — the script was unlinted until + now, so this is the first time the rule set sees it. Fix anything it reports honestly; + never silence it. +14. **Real-artefact check.** With a `reports/benchmarks/raw.json` in place, run + `node --experimental-strip-types tooling/bench-summarize.ts` and count rows containing + `_missing entry_`. Against a locally re-measured artefact (parts 1–2 landed) the count + must be **0**. Against a hand-made pre-fix artefact holding one sample-less entry the + count must be **1** — that scenario, correctly flagged as unmeasured — down from + today's 81. Record both counts; reporting only the zero would hide which artefact was + used. Confirm `git status --porcelain` shows only the three tracked files. + +### Gate + +```bash +npx vitest run tooling/test/unit/bench-summarize.test.ts \ + && npm run check:types \ + && ./node_modules/.bin/biome check tooling/bench-summarize.ts tooling/test/unit/bench-summarize.test.ts biome.json \ + && npm run check:spelling +``` + +### Commit + +`fix(tooling): render tsgit-only scenarios in the benchmark summary` + +## Part 5 — the receive path tolerates an already-present pack + +### Context + +The only `src/` change in this plan, and the only one with a faithfulness claim. + +**What git does**, pinned against git 2.55.0 in a `mktemp` throwaway with every `GIT_*` +scrubbed, an isolated `HOME`, `GIT_CONFIG_NOSYSTEM=1` and signing off: + +| probe | exit | stderr | destination afterwards | +|---|---|---|---| +| `git index-pack --stdin --fix-thin` into an empty repository | 0 | empty | `.pack` / `.idx` / `.rev` created | +| the same command, byte-identical input, same repository | **0** | **empty** | all three unchanged — same inode, same fractional mtime, no temporary debris | +| the same again with `-v` | 0 | progress only, no "exists" message | unchanged | +| `fetch` with `fetch.unpackLimit=1`, local refs deleted so the server re-sends the same pack | 0 | normal `[new branch]` line | pack unchanged | +| `push` twice into a bare repository with `transfer.unpackLimit=1` | 0 / 0 | normal | pack unchanged | +| loose-object control: tamper a loose object to garbage, then re-write the identical content | 0 | empty | **the garbage is kept** — the already-present test is path existence, never content | +| `.idx` truncated to zero bytes, then re-index | 128 | `error: index file … is too small` | corrupt file left in place | + +Canonical git's receive path is idempotent and silent; its only non-zero exits are +corrupt-store diagnoses, never a collision refusal. + +**What tsgit does today**, diverging twice over. In +`src/application/primitives/fetch-pack.ts`, `materializePack` (lines 130–179) renames the +quarantined pack into place unconditionally — clobbering the destination `.pack` — and +`writePackSiblingArtifacts` then throws `FILE_EXISTS` on the first sibling. The stack is +`fetchPack → materializePack → writePackSiblingArtifacts → writeSiblingsGiven → +writeExclusive`, and the error is `TsgitError` with +`{ code: 'FILE_EXISTS', path: '/pack-.idx' }`. `clone` and `fetch` do not +catch it; only `fetch-missing` does. + +**The change.** When the content-addressed destination pack already exists, the receive +path discards its quarantine copy and returns the existing artefacts without renaming or +rewriting anything, and the check happens BEFORE the rename so nothing is clobbered. +Concretely, in `materializePack`, after the `entries.count === 0` guard and immediately +before the `try { await renamePackIntoPlace(...) }` block (decision candidate P2): + +- Compute the destination with the already-imported `packFilePath(packDir, receipt.packSha)`. +- If `await ctx.fs.exists()` is true: `await cleanupQuarantine(ctx, receipt.tmpPath)` + (the quarantine copy is unlinked as a handled outcome — the existing temp-file posture is + unchanged), refresh the pack registry (decision candidate P1), and return a + `FetchPackResult` carrying the existing `packPath` and `idxPath`, `objectCount: + entries.count`, `packSha: receipt.packSha`, and `download.shallow` / `download.unshallow`. + +The existing-pack test is **by path**, matching git's own already-present test, which +keeps even a tampered file. Do not compare content; do not weaken `writeExclusive` on +either adapter — the exclusive write is the correct primitive, and the fix is a tolerant +caller. + +Symbols and signatures in play: + +- `src/application/primitives/fetch-pack.ts` + - `const materializePack = async (ctx: Context, download: PackDownload, input: FetchPackInput): Promise` + — module-private, called only from `fetchPack`. + - Local bindings it already has at the insertion point: `packDir` (from + `packsDir(commonGitDir(ctx))`), `receipt` (`{ tmpPath, totalBytes, packSha }`), + `entries` (from `indexQuarantinedPack`, carrying `count`). + - Already imported: `packFilePath` and `writePackSiblingArtifacts` from + `./internal/write-pack-artifacts.js`; `refreshPackRegistry` from `./read-object.js`; + `cleanupQuarantine` is module-private in this same file (it wraps + `removeQuarantineFileIfPresent` in `.catch(() => {})`). + - `export interface FetchPackResult { readonly packPath: string; readonly idxPath: string; readonly objectCount: number; readonly packSha: string; readonly shallow: ReadonlyArray; readonly unshallow: ReadonlyArray }`. +- `src/application/primitives/internal/write-pack-artifacts.ts` + - `export const packFilePath = (packDir: string, packSha: string): string => \`${packDir}/pack-${packSha}.pack\`` (line 140). + - `const artifactPaths = (packDir: string, packSha: string): ArtifactPaths` (line 143) + builds `idxPath` inline as `` `${packDir}/pack-${packSha}.idx` ``. There is no exported + idx-path helper today. Add one — `packIdxFilePath(packDir, packSha)` — beside + `packFilePath`, and have `artifactPaths` call it so there stays exactly one source for + that name. + - **Public-surface decision, made here: `packIdxFilePath` is INTERNAL.** The module sits + under `src/application/primitives/internal/` and is imported only by + `src/application/primitives/fetch-pack.ts`, + `src/application/primitives/internal/cruft-pack-lifecycle.ts`, + `src/application/commands/pack-objects.ts` and + `src/application/commands/internal/gc-pipeline.ts`. It is in no barrel and reachable + by no library user, so it trips **no** surface gate: no barrel entry, no facade + binding, no `docs/use/commands/` page, no browser-surface scenario, no README count, + and no `reports/api.json` regeneration. Do not regenerate api.json for this part. + - Neither this file nor `fetch-pack.ts` carries a `@writes` JSDoc tag, so + `check:write-surfaces` is unaffected by the change. +- `src/application/commands/fetch-missing.ts` — its `catch` around `fetchPack` swallows + `FILE_EXISTS` (`const isFileExists = (err: unknown): boolean => err instanceof TsgitError && err.data.code === 'FILE_EXISTS'`, + lines 78–79 and 121–126) with a comment stating exactly the right reason. That tolerance + stays; only its test is repaired. This source file is NOT edited. + +Coverage and mutation posture: `vitest.config.ts`'s coverage `include` does not list +`src/application/**`, so this file has no line-coverage gate; the mutation harness, which +mutates all of `src`, is run standalone on this diff by the orchestrator after the part +lands. Every test below is therefore written to kill a specific mutant class, one +condition per test, with error and value assertions specific enough that a string-literal +or conditional mutant cannot survive. + +**Unit tests — `test/unit/application/primitives/fetch-pack.test.ts`** (5145 lines). Add +one new top-level describe at the end of the file; the file already carries several +non-GWT top-level wrappers (`describe('fetchPack')` at line 400, +`describe('pack quarantine')` at 2202, and so on), so a wrapper such as +`describe('fetchPack — an already-present pack')` is in keeping. Module-level helpers to +reuse, all already defined near the top of that file: + +- `const ENCODER = new TextEncoder()` (line 96). +- `type MemCtx = ReturnType` (line 249). +- `const buildSingleBlobPack = async (ctx, content: string): Promise<{ packBytes: Uint8Array; blobId: ObjectId; idxBytes: Uint8Array }>` (line 387). +- `const buildUploadPackResponseBody = (opts: { packBytes; sideBand: boolean; progressLines? }): Uint8Array` (line 106). +- `const captureRequests = (body: Uint8Array): { transport: HttpTransport; requests: HttpRequest[] }` (line 165) — its `request` enqueues `body.slice()` on every call, so ONE transport serves two `fetchPack` calls. +- `const toNegotiator = (transport: HttpTransport): NegotiatePackBytes` (line 243). +- `const packDir = (ctx: MemCtx): string => \`${ctx.layout.gitDir}/objects/pack\`` (line 267). +- `const tmpPackNames = async (ctx: MemCtx): Promise>` (line 269) — the leftover-quarantine probe. + +The pack sha for a built pack is `await ctx.hash.hashHex(packBytes.subarray(0, -20))` +(the trailer is the last `ctx.hash.digestLength` bytes; sha1 here), the same expression +`test/unit/application/commands/fetch-missing.test.ts` already uses. For the stale-registry +case, a second cache identity over the SAME filesystem is +`{ ...ctx, session: createSession() }` — `Session` is an opaque per-repository cache +anchor exported from `src/ports/context.ts` (`export function createSession(): Session`), +and every identity-keyed cache under `src/application/primitives` keys on it, so two +Contexts sharing an `fs` but not a `session` are two cache identities over one store. +`refreshPackRegistry(ctx)` (exported from `src/application/primitives/read-object.js`, +line 63) drops the registry cached for `ctx.session`. + +**The fetch-missing tolerance repair — `test/unit/application/commands/fetch-missing.test.ts`**, +the case at lines 408–430: `describe('Given a concurrent identical pack already on disk')` +> `describe('When fetchMissing')` > `it('Then the FILE_EXISTS collision is tolerated')`. +It pre-creates only `${packDir}/pack-${packSha}.pack`, which `rename` then overwrites, so +the refusal it claims to exercise is never reached and its assertion cannot tell the two +outcomes apart. After this part it would additionally take the new already-present path +and never raise `FILE_EXISTS` at all. Repair it to pre-create the sibling the writer +actually collides on — `${packDir}/pack-${packSha}.idx` — and NOT the `.pack`: the rename +then succeeds, `writeSiblingsGiven`'s `writeExclusive` on the `.idx` refuses, and +`fetchMissing`'s tolerance is genuinely exercised. Keep the surrounding arrangement +(`seedRepo`, `withConfig(base, PARTIAL_CONFIG)`, `onePackedBlob`, `fakeRemote`) and the +`expect(result).toEqual({ remote: 'origin', requested: 1, fetched: 1 })` assertion; +rewrite the trailing comment so it describes what is actually pre-created. + +**The interop test — new file `test/integration/pack-receive-idempotence-interop.test.ts`** +(decision candidate P5). Parity tests are cross-adapter and prove nothing about +faithfulness; only the interop harness does. Shape, following +`test/integration/index-pack-interop.test.ts`: + +- A first-JSDoc `@proves` header is required by the integration-proof detector. Use + `surface: fetchPack.receive` (unclaimed — the closest existing claims are `packIndex` + and `fetch-pack.walkPackEntries`), `bucket: cross-tool-interop` (its directory rule + allows only the mainline `test/integration/` directory, which is where this file goes), + a `unique:` line between 12 and 200 characters — for example + `re-receiving a byte-identical pack leaves the existing pack, idx and rev untouched, as git does` + — and `interopSurface: packfile` for consistency with the file's siblings. +- Helpers from `./interop-helpers.js`: `GIT_AVAILABLE` (guard the suite with + `describe.skipIf(!GIT_AVAILABLE)`), `makePeerPair(slug)` returning + `{ peer, ours, dispose }` over two `mkdtemp` directories, `runGit(args, { input?, env? })` + which spawns git with every `GIT_*` scrubbed, `HOME` pointed at a deterministic + non-existent path, `GIT_CONFIG_NOSYSTEM=1` and auto-maintenance disabled on the env, + `runGitEnv()` for a copy of that env, `disableAutoMaintenance(dir)`, and + `tryRunGitWithExit(args, { env? })` returning `{ stdout, stderr, exitCode }`. + `tryRunGitWithExit` has no `input` option today and this test needs one to feed pack + bytes on stdin while capturing the exit code and stderr — extend it with an optional + `input` exactly as `runGit` already declares one (`readonly input?: string | Uint8Array`, + passed through to `spawnSync`'s opts). That is an additive helper change; do not alter + its existing behaviour. +- ONE shared `beforeAll` fixture with a **60 000 ms timeout** (git-spawning interop + suites have flaked on load without it): `makePeerPair('pack-receive-idempotence')`, + `git init -q -b main` the peer, set `user.name` / `user.email` / + `commit.gpgsign false`, `disableAutoMaintenance`, create three small commits, then + `git -c pack.threads=1 repack -a -d`, then read the single surviving + `objects/pack/*.pack` into a module-scoped `packBytes`. A git-produced pack is what + makes the two tools comparable. `afterAll` disposes the pair. +- **tsgit row.** `git init -q -b main` a fresh `mkdtemp` directory, build a node context + over it with `createNodeContext({ workDir: dir })` + (`src/adapters/node/node-adapter.js`), and receive `packBytes` twice through + `fetchPack(ctx, negotiator, { wants: ['a'.repeat(40) as ObjectId], haves: [], capabilities: [], progressOp: 'test:write-objects' })` + with an inline `NegotiatePackBytes` that yields the bytes as one chunk from a fresh + generator each call. Assert: the second call resolves; its `packPath`, `idxPath`, + `packSha` and `objectCount` equal the first call's; the `.pack`, `.idx` and `.rev` + bytes are byte-identical across the two calls; each file's `ino` and `mtimeMs` are + unchanged; and no `tmp_pack_*` entry remains in the pack directory. This row is also + the node adapter's coverage of the new path. +- **git row, same fixture.** `git init -q -b main` another fresh directory, run + `git index-pack --stdin --fix-thin` with `packBytes` on stdin twice through the extended + `tryRunGitWithExit`, and assert both `exitCode === 0`, both `stderr === ''`, and the + three artefacts' bytes, `ino` and `mtimeMs` unchanged between the runs. This is the + oracle the tsgit row is measured against, reproduced in the same fixture rather than + quoted from a design table. The two tools are each compared against **themselves** + across two runs, never against each other's file names — git and tsgit derive a pack's + stem differently and no claim here depends on them agreeing. +- Each row creates its own destination directory with `mkdtemp` and removes it in a + `finally` (or registers it for `afterAll`), so a failing assertion never leaves a repo + behind in `os.tmpdir()`. `afterAll` also disposes the peer pair. + +Test-convention constraints the audits gate on: `describe('Given …')` > +`describe('When …')` > `it('Then …')` (the two-level `Given …, When …` shortcut is +allowed when only one expectation lives under the When); AAA bodies with `// Arrange`, +`// Act`, `// Assert` section comments, none of them empty; the system under test bound +to `sut` and never to a result; at least one assertion per test; no `toThrow(SomeClass)` +without data assertions; no `vi.mock` / `vi.fn` / `vi.spyOn` in an integration test. + +### TDD steps + +Every RED below is a real failure against the current code, and each isolates one +condition so a mutant that flips only that condition dies. + +1. **RED 1 — the divergence itself.** In `fetch-pack.test.ts`, add + `Given a pack already received once into this repository` > + `When fetchPack receives the byte-identical pack a second time` > + `Then it succeeds and returns the artefacts already on disk`. Build a single-blob + pack, receive it, then receive it again through the same transport. Assert the second + result's `packPath`, `idxPath` and `packSha` equal the first's and `objectCount` equals + the first's and is greater than zero. Expected failure: `TsgitError` with + `data.code === 'FILE_EXISTS'` on `/pack-.idx`. +2. **RED 2 — no clobber, checked before the rename.** + `Given a pack file already occupying the content-addressed destination with foreign bytes` > + `When fetchPack receives a pack whose trailer names that same destination` > + `Then the file on disk still holds its original bytes`. Pre-create + `/pack-.pack` with a short sentinel byte string (NOT the real pack), then + receive. Assert the returned `packPath` names that file, and that reading it back gives + the sentinel bytes verbatim. Expected failure today: the rename clobbers the sentinel, + then the `.idx` write throws. This is the test that pins the ordering — a fix placed + after the rename passes RED 1 and fails this. +3. **RED 3 — the quarantine copy is discarded.** + `Given a pack already received once into this repository` > + `When fetchPack receives it a second time` > `Then no quarantine file is left behind`. + Assert `tmpPackNames(ctx)` is empty after the second call. Kills the mutant that drops + the cleanup call. +4. **RED 4 — the first receive still writes.** + `Given an empty repository` > `When fetchPack receives a pack` > + `Then the pack, its index and its reverse index are all written`. Assert all three + paths exist and `objectCount` is the entry count. Kills the mutant that forces the new + condition true and turns every receive into a no-op. +5. **RED 5 — the returned sibling path.** Inside RED 1, add one more assertion spelling + the expected path out in full: `expect(second.idxPath).toBe(\`${packDir(ctx)}/pack-${packSha}.idx\`)`. + It belongs in RED 1 rather than a test of its own — a separate case would repeat the + whole two-receive arrangement to check one more string — and it is what kills a + string-literal mutant inside the new path helper. +6. **RED 6 — shallow and unshallow still come from the download.** + `Given a shallow response for a pack already on disk` > + `Then the already-present result still carries the advertised shallow boundaries`. Use + the file's existing `buildShallowResponseBody` helper and pass `depth` in the + `FetchPackInput` so the negotiator actually consumes a shallow block. Kills the mutant + that returns empty arrays on the new path. +7. **RED 7 — the stale registry (decision candidate P1(a)).** + `Given a Context whose pack registry was cached before another writer landed the pack` > + `When fetchPack receives that same pack through the stale Context` > + `Then an object the pack carries is readable through it`. Arrange: + `const ctx = createMemoryContext()`; warm `ctx`'s registry over the still-empty pack + directory with `await getPackRegistry(ctx).lookup()` (`getPackRegistry` is + exported from `src/application/primitives/read-object.js`), which forces the + `objects/pack` scan and caches its empty result; land the pack through + `{ ...ctx, session: createSession() }` — a second cache identity over the same `fs`, + with `createSession` imported from `src/ports/context.js`; then receive through `ctx` + and read the packed blob back with `readObject(ctx, blobId)`. Expected failure without + the refresh: the read misses. If the warm step turns out not to cache (the registry + scans lazily on a later call rather than on `lookup`), escalate + `{ the registry refresh on the already-present path, cannot pin the observable without a mock, ≤3 options }` + rather than shipping an unkillable line or reaching for `vi.spyOn`. +8. **RED 8 — the interop test, written before the fix so it is a real red.** Add the + `input` option to `tryRunGitWithExit` in `test/integration/interop-helpers.ts`, then + write `test/integration/pack-receive-idempotence-interop.test.ts` as described. Run it + now: the git row passes on its own (it measures only git, and git is already + idempotent), and the tsgit row fails on the second `fetchPack` with + `TsgitError { code: 'FILE_EXISTS' }` on the `.idx`. That split — oracle green, tsgit + red, one fixture — is the divergence stated in its most direct form. +9. **GREEN.** Add `packIdxFilePath` beside `packFilePath` in + `internal/write-pack-artifacts.ts` and route `artifactPaths` through it. Add the + already-present branch to `materializePack` at the position described above. Nothing + else in either file changes. RED 1 through RED 8 all go green. +10. **The fetch-missing tolerance repair.** In `fetch-missing.test.ts`, change the + pre-created file from the `.pack` to the `.idx` and re-run. This is a repair, not a + red: the test passes both before and after the GREEN above (with no `.pack` in place + the rename succeeds and the `.idx` write still refuses), so its value has to be + demonstrated another way. Do that with a scratch experiment: temporarily replace + `fetchMissing`'s `if (!isFileExists(err)) throw err;` with an unconditional rethrow + and confirm the repaired test goes red where the old one stayed green. Restore the + line immediately; do not commit the temporary edit. +11. **REFACTOR.** Update `materializePack`'s docstring: it now has three outcomes — + suppress an empty pack, adopt an already-present one, or promote a new one — and the + quarantine copy is unlinked as a handled outcome in the second, leaving the temp-file + posture unchanged. Update `fetch-pack.ts`'s module doc where it says the quarantine + file "is renamed to `pack-.pack`", which is now conditional. No provenance + references in either comment. +12. Run the gate below, then confirm `git status --porcelain` lists exactly six files: + the two under `src/`, the two amended unit tests, the new integration test, and + `test/integration/interop-helpers.ts` for the `input` option. + +### Gate + +```bash +npx vitest run test/unit/application/primitives/fetch-pack.test.ts test/unit/application/commands/fetch-missing.test.ts test/integration/pack-receive-idempotence-interop.test.ts \ + && npm run check:types \ + && ./node_modules/.bin/biome check src/application/primitives/fetch-pack.ts src/application/primitives/internal/write-pack-artifacts.ts test/unit/application/primitives/fetch-pack.test.ts test/unit/application/commands/fetch-missing.test.ts test/integration/pack-receive-idempotence-interop.test.ts test/integration/interop-helpers.ts \ + && npm run check:spelling +``` + +Then, because this part changes a receive path several commands share: + +```bash +npm run check:test-pyramid # GWT titles, AAA sections, sut naming, assertion counts — all gating +npm run check:architecture # no new cross-layer import was introduced +``` + +The `@proves` header check itself is report-only in this repository's manifest, so a +malformed header will not fail the gate — write it correctly anyway, and read the audit's +report rather than trusting its exit code on that one heuristic. + +### Commit + +`fix(fetch-pack): tolerate an already-present pack before the rename, as git does` + +## Part 6 — ADR status lines, anchors and citations satisfy the decision lint + +### Context + +Documentation only, seven files, no `src/` and no test delta. + +The lint is `node /Users/scolladon/workspace/perso/craft/engine/bin/adr-lint.js docs/adr`, +run from the worktree root. It exits **2** today with eight findings plus one stderr +banner. Its rules, read from the engine source rather than inferred from the messages: + +| check | rule | tolerance | +|---|---|---| +| status line | a line whose `trim()` **equals** `- **Status:** superseded by ADR-NNN` | nothing may follow `ADR-NNN`; surrounding whitespace is fine; several such lines may coexist, and extra non-matching bullets are permitted | +| supersession anchor | `/^Superseded from ADR-NNN\b/m` | must start the line; prose after the id is fine, bold wrapping or an indent is not | +| carry-forward anchor | `/^Carried forward from ADR-NNN\b/m` | same | +| citation sweep | one `git grep -E 'ADR-()'` over the whole tracked tree | files under `docs/adr`, `docs/design`, `docs/plan`, `docs/archive` and `docs/prd` are skipped; every other match is reported | + +Only a superseding ADR's YAML front-matter `supersedes:` block creates a supersession for +the lint. Exactly four ADRs declare one today: 718 over 389, 721 over 541, 731 over 724, +752 over 723. That count must stay at 4 — no front matter is edited by this part. + +The eight findings, and the exact edit each takes: + +1. **`docs/adr/389-incremental-stream-hash-verification.md`** — under its `## Status` + heading the bullet reads + `- **Status:** superseded by ADR-718 (default posture; the incremental mechanism stands)`. + Trim it to the bare required form. Nothing is lost: the block quote under the title + already says "for the default-on posture … the incremental end-of-stream verification + mechanism and the `{ verifyHash }` option surface are carried forward". Leave the + `## Status` heading and the outlier title alone. +2. **`docs/adr/541-raw-node-adapter-layout-root-set.md`** — the bullet reads + `- **Status:** superseded by ADR-721 (read-path wrapper role for first-party adapters; root-set model stands)`. + Trim it likewise. Its block quote already carries "for the facade wrapper's read-path + role on first-party adapters … the adapter's root-set containment model, + canonical-prefix derivation and write-path posture are carried forward unchanged". +3. **`docs/adr/724-maintenance-command-with-commit-graph-and-gc-lite.md`** — the + multi-superseder. Today: + `- **Status:** superseded by ADR-731 (prune semantics), ADR-732 (pack consolidation) and ADR-733 (promisor consolidation); the command and commit-graph task stand`. + Replace it with the bare `- **Status:** superseded by ADR-731` **plus a separate + non-status bullet directly below it** naming ADR-732 and ADR-733 with the scope each + took over. Only ADR-731 declares the supersession in front matter, which is why the + lint demands exactly one line; the other two supersessions stay visible at bullet + level rather than being demoted to prose. Do not add `supersedes:` front matter to 732 + or 733 — that would change the declaring count and needs decision prose only the user + can ratify. +4. **`docs/adr/721-first-party-read-containment-is-single-authority.md`**, lines 42–45 — + `Carried forward from ADR-541:` exists but sits mid-line, after the + `Superseded from ADR-541:` sentence. Re-wrap the paragraph so each anchor starts its + own line at column zero, exactly as `docs/adr/718-read-path-hash-verification-is-opt-in.md` + (its lines 45 and 48) already does. **The wording is unchanged** — only the line breaks + move. +5. **`docs/adr/752-tree-read-paths-accept-duplicate-entry-names.md`**, lines 53 and 57 — + both anchors are wrapped in bold markers (`**Superseded from ADR-723:**`, + `**Carried forward from ADR-723:**`). Strip the `**` from both. The colon and + the prose after it stay; the lint's word boundary permits them and + `docs/adr/731-gc-uses-cruft-packs.md` (lines 41–42) writes them exactly that way. +6. **`docs/BACKLOG.md`**, the completed **30.3** entry at line 565 — it reads + `(probed, git 2.55.0 — see ADR-723's addendum)`. ADR-752 explicitly carries that + addendum forward, so the sentence is substantively true and only the identifier is + stale. Re-point it at ADR-752 and name what it carried forward. The rest of the entry + is unchanged. The trailing `· ADRs 748–766 ·` reference is not `ADR-NNN`-shaped and the + sweep does not match it — leave it. +7. **`docs/understand/security.md`**, line 9 — the path-containment paragraph ends + `… byte-identical to before ([ADR-541](../adr/541-raw-node-adapter-layout-root-set.md))`. + ADR-721 superseded 541 on the facade wrapper's read-path role only and carried the + root-set model forward unchanged; the same file's opening paragraph already describes + ADR-721's ruling without citing it. Cite ADR-721 as the single authority for + first-party read containment and say the root-set model is what it carried forward. The + link target becomes `../adr/721-first-party-read-containment-is-single-authority.md` — + that file exists, so `check:doc-links` stays green. No reference to 541 may survive in + this file: the sweep matches the literal identifier anywhere in a tracked, non-exempt + file, so "cite the superseding ADR and keep the old identifier" is not available. + +Templates to copy from: `docs/adr/723-cursor-descent-keeps-the-duplicate-name-refusal.md` +is the status-line template — a bare `- **Status:** superseded by ADR-752` bullet with all +the scope nuance pushed up into the block quote under the title. ADRs 718 and 731 are the +anchor templates — column zero, no bold, `: ` then prose. + +Out of scope, deliberately: wiring `adr-lint` into an npm script, a CI job or a hook. It +is invoked manually from the craft engine today; making it a gate is its own change with +its own waiver-file contract. No waiver file and no `--waiver-source` invocation exists in +this repository, and the waiver token covers a whole file rather than a line, so waiving +`docs/BACKLOG.md` is not on the table. + +`docs/**/*.md` is inside `check:spelling`'s glob, so every edited sentence is spell-checked +by the part gate — but the lint-staged hook spell-checks nothing on a markdown-only +commit, so run the gate before committing, not after. + +### TDD steps + +There is no unit test for prose; the lint IS the test, and it is run before and after each +edit so every fix is a demonstrated red-to-green transition rather than an assumption. + +1. **RED (baseline).** Run + `node /Users/scolladon/workspace/perso/craft/engine/bin/adr-lint.js docs/adr; echo "EXIT=$?"`. + Expected: `EXIT=2`, the stderr banner + `adr-lint: citation sweep exempts (derived): docs/adr, docs/design, docs/plan, docs/archive, docs/prd`, + and exactly these eight lines: + - `docs/adr/389-…: missing required line: - **Status:** superseded by ADR-718` + - `docs/adr/541-…: missing required line: - **Status:** superseded by ADR-721` + - `docs/adr/721-…: missing a line starting "Carried forward from ADR-541"` + - `docs/adr/724-…: missing required line: - **Status:** superseded by ADR-731` + - `docs/adr/752-…: missing a line starting "Superseded from ADR-723"` + - `docs/adr/752-…: missing a line starting "Carried forward from ADR-723"` + - `DECISION-CITE-FOUND(docs/BACKLOG.md): ADR-723@L565` + - `DECISION-CITE-FOUND(docs/understand/security.md): ADR-541@L9` + Record the list; it is the checklist. +2. **GREEN, one file at a time**, re-running the lint after each so a fix that trips a new + finding is caught at its own source: 389 → 541 → 724 (status line plus the extra + bullet) → 721 (re-wrap) → 752 (strip the bold markers from both anchors) → `docs/BACKLOG.md` → + `docs/understand/security.md`. Each step must remove exactly its own finding and add + none. +3. **GREEN (final).** The lint prints the banner on stderr and exactly one stdout line, + `craft-adr: OK — ADR(s) checked, declaring supersession.`, with `` still + **4**, and exits 0. A different `` means front matter was edited — revert it. +4. **REFACTOR / read-back.** Re-read the three edited ADRs end to end and confirm every + scope note the old status lines carried still exists somewhere in the same file + (block quote for 389 and 541, the new bullet for 724). Confirm the two re-pointed + citations still read as true sentences. +5. Confirm `git status --porcelain` lists exactly seven markdown files. + +### Gate + +```bash +npm run check:spelling \ + && node /Users/scolladon/workspace/perso/craft/engine/bin/adr-lint.js docs/adr +``` + +The lint must exit 0 and print nothing beyond the exempt-directories banner on stderr and +the single `craft-adr: OK` line on stdout. There is no vitest, types or biome step: this +part touches no `.ts` file and no configuration biome reads. + +### Commit + +`docs(adr): satisfy the decision lint on status lines, anchors and citations` + +## Part 7 — dependency hygiene + +### Context + +House rule: every PR updates outdated dependencies, including out-of-scope ones. The gate +is `npm run check:deps`, whose command is + +``` +sh -c 'npm outdated || ! npm outdated 2>/dev/null | tail -n +2 | grep -v "^@ls-lint/ls-lint " | grep -v "^typescript " | grep -v "^knip " | grep -v "^jscpd " | grep -v "^vitest " | grep -v "^@vitest/coverage-v8 " | grep -v "^@cloudflare/workers-types " | grep -q .' +``` + +so seven packages are documented exceptions and everything else must be current: +`@ls-lint/ls-lint` (its publisher reports a false positive), `typescript` (7.x crashes +`@rollup/plugin-typescript`; pinned to 6.x), `knip`, `jscpd`, `vitest`, +`@vitest/coverage-v8` and `@cloudflare/workers-types`. + +Measured in this worktree on 2026-09-05, `npm outdated` reported exactly six rows, every +one of them on that exception list: + +| package | current | latest | +|---|---|---| +| `@ls-lint/ls-lint` | v2.3.1 | 2.3.1 | +| `@vitest/coverage-v8` | 4.1.11 | 5.0.0 | +| `jscpd` | 5.0.16 | 5.1.2 | +| `knip` | 6.33.0 | 6.34.0 | +| `typescript` | 6.0.3 | 7.0.2 | +| `vitest` | 4.1.11 | 5.0.0 | + +So `check:deps` is green as this plan is written, and **this part may legitimately land no +commit**. That is the honest outcome, not a skipped step: the measurement is the +deliverable. Re-measure rather than trusting the table — the registry moves. + +If something outside the exception list HAS drifted by the time this part runs, bump it +the way this repository does it: `npx npm@10 install --save-exact @`. Never +`npm install` bare and never regenerate the whole lock file — a partial lock breaks CI +(npm version skew, and a macOS run drops the Linux-only optional binaries). If the lock +file ends up in a bad state, the recovery is to restore `main`'s `package-lock.json` and +re-run `npx npm@10 install --package-lock-only`. + +Files that may change: `package.json` and `package-lock.json`, nothing else. + +This part runs last so a bump lands on top of finished work and any breakage it causes is +attributable to the bump alone. + +### TDD steps + +1. **RED (measurement).** Run `npm outdated` and capture the table verbatim. Then run + `npm run check:deps` and record its exit code. If the exit is 0 and every row is on the + exception list, go to step 4. +2. **GREEN (only if a non-excepted package drifted).** For each such package run + `npx npm@10 install --save-exact @`, one package per command. Re-run + `npm outdated` after each so a transitive change is attributed to the bump that caused + it. +3. **REFACTOR / regression check.** Run `npm run check:types` and + `npx vitest run --project unit` before anything else, then the part gate below. A major + bump that reds a suite is escalated as `{ package, reason, ≤3 options }` — never + pinned back silently and never suppressed. +4. **Record.** Whether or not a bump happened, the part reports the `npm outdated` table + and `check:deps`'s exit code as its evidence. With no bump there is nothing to commit + and the part lands no commit; say so plainly rather than manufacturing one. + +### Gate + +```bash +npm run check:deps \ + && npx vitest run --project unit \ + && npm run check:types \ + && ./node_modules/.bin/biome check package.json \ + && npm run check:spelling +``` + +`` resolves to the whole `unit` project because a dependency bump is not +scoped to any file. If step 1 finds nothing to do, `npm run check:deps` alone is the +evidence and the rest of the gate is unnecessary — nothing changed. + +### Commit + +`chore(deps): bump outdated dependencies` — landed **only** if step 2 actually bumped +something. No bump, no commit. + +## After part 7 — the phase gate + +```bash +npm run validate +``` + +Ground truth for the whole change. If it times out on tests outside the diff, that is +oversubscription: re-run with `WIREIT_PARALLEL=1`. Never `--no-verify`. A green wireit +run can be cached from an earlier invocation — before pushing, re-run `cspell` fresh over +the touched documentation and confirm `reports/api.json` needs no regeneration (this +change adds no public export, so it should not). diff --git a/docs/understand/performance.md b/docs/understand/performance.md index 4d5463605..1bbea69e9 100644 --- a/docs/understand/performance.md +++ b/docs/understand/performance.md @@ -4,7 +4,7 @@ This document explains what tsgit measures, how it measures, and how to read the ## Current measured numbers -Source: the CI **nightly benchmark artifact** (`bench.yml`, a dedicated GitHub Actions runner). The numbers below are hand-transcribed from a dated run so they stay citable; regenerate the raw report anytime with `npm run bench:summary` (writes `reports/benchmarks/summary.md`, uncommitted). They are **not** measured on a personal machine — a host under interactive load biases tsgit's stat-heavy paths (isomorphic-git, a pinned dependency, itself measures 1.2–2.4× slower under load), so its numbers are not citable. See [ADR-483](../adr/483-committed-hand-transcribed-benchmark-snapshot.md). +Source: the CI **nightly benchmark artifact** (`bench.yml`, a dedicated GitHub Actions runner). The numbers below are hand-transcribed from a dated run so they stay citable; regenerate the raw report anytime with `npm run bench:summary` (writes `reports/benchmarks/summary.md`, uncommitted). The rendered summary carries a tsgit-only scenario's own numbers with an em dash in the peer column and `n/a` for speedup, reserving `_missing entry_` for a scenario that produced no tsgit result ([ADR-809](../adr/809-a-tsgit-only-row-renders-an-em-dash-and-n-a-a-no-tsgit-row-keeps-the-missing-marker.md)). They are **not** measured on a personal machine — a host under interactive load biases tsgit's stat-heavy paths (isomorphic-git, a pinned dependency, itself measures 1.2–2.4× slower under load), so its numbers are not citable. See [ADR-483](../adr/483-committed-hand-transcribed-benchmark-snapshot.md). Measured on the CI nightly runner: `linux-x64`, AMD EPYC 7763 64-Core Processor, Node 22.23.2 · isomorphic-git 1.41.3 · captured 2026-08-15 (`bench.yml` run 31869804879, branch `feat/cold-read-first-access`). @@ -40,11 +40,11 @@ For context, two other libraries are sometimes weighed against tsgit — but nei ## Methodology -- **Runner:** `vitest bench`. Each scenario is iterated until 95% confidence interval stabilises (typically 100–10000 samples depending on the scenario's runtime). +- **Runner:** `vitest bench`. Each scenario is iterated until 95% confidence interval stabilises (typically 100–10000 samples depending on the scenario's runtime). A scenario whose measured function throws during warmup fails the run — the bench DSL sets tinybench's `throws` — so a green sweep means every scenario measured; the snapshot converter refuses, by scenario name, any entry with no measurement before anything is published ([ADR-800](../adr/800-the-zero-sample-guard-lives-in-both-the-bench-dsl-and-the-snapshot-converter.md)/[ADR-802](../adr/802-the-converter-refusal-is-a-separate-exported-guard-called-from-main-only.md)). - **Reported metric:** median, with ±RME (relative margin of error) captured in `reports/benchmarks/raw.json`. - **Fixtures:** committed under `test/fixtures/`. Reproducible bit-for-bit on every host. Larger fixtures (`medium`, `large`) are deterministically regenerable via `npm run bench:fixture` and cached in `~/.cache/tsgit-bench`. The cache is shared and read-only for benches: a bench whose `sut` must write (`checkout`, `gc`) works on a disposable copy created beside the fixture and removed after the scenario's last measurement. On a cache hit the generator verifies the fixture's identity — `HEAD` on `refs/heads/main`, its tip matching the recorded commit — and rebuilds, with a warning, a fixture a bench mutated; a fixture git cannot verify is kept and reported, never destroyed. `npm run bench:fixture -- --prune` reclaims stale caches from older generator versions and abandoned build/scratch leftovers whose owning process is gone; nothing is reclaimed automatically. A scaled bench skips only when `git` is unavailable — any other fixture error fails the bench file rather than silently dropping its scenarios. A third fixture, `delta-chain`, is a small evolving 4 KiB blob mutated ~1% per commit and repacked at `--depth=50 --window=250`, producing a near-cap delta chain (~43 deep, within git's default depth cap of 50) — pre-warmed via `npm run bench:fixture -- delta-chain` and cached the same way. See [ADR-471](../adr/471-deep-delta-chain-bench-fixture.md). - **Comparison set:** the runnable peer is **`isomorphic-git@1.41.3`** only — the one mature pure-JS git library — invoked with equivalent options on the same on-disk fixture. Other libraries are not pure-JS peers and are cited only as reference points (see above), never in the speedup table. CGI lifecycle for clone benchmarks documented in [ADR-017](../adr/017-bench-cgi-server-lifecycle.md). -- **CI runs:** the `benchmark-snapshot` job runs on `main` pushes and feeds `github-action-benchmark@v1` ([ADR-056](../adr/056-benchmark-snapshot-converter-schema.md)). +- **CI runs:** the `benchmark-snapshot` job runs on `main` pushes and feeds `github-action-benchmark@v1` ([ADR-056](../adr/056-benchmark-snapshot-converter-schema.md)). `benchmark-snapshot` is bounded at 30 minutes for its one full sweep; `benchmark-compare` at 60 for its six hot-path-subset passes ([ADR-801](../adr/801-the-benchmark-snapshot-job-bounds-the-run-phase-hang-with-a-timeout.md)). - **Unit-of-work asymmetry:** `readBlob:cold-cache` (fresh repo) measures a stateful `openRepository` + `readBlob` + `dispose` sequence against isomorphic-git's stateless `git.readBlob({fs, dir, oid})` call — roughly a third of the tsgit side is handle lifecycle the peer never performs. The reused-handle shape most real consumers use (open once, read many objects) is measured separately by the `readBlob:reused-handle` scenario in `test/bench/loose-read.bench.ts`. - **Profile tick totals and under-sampling (`npm run profile`, `docs/perf/baseline.json`):** each command's `docs/perf/baseline.json` entry carries a `totalTicks` figure alongside its frame shares — the raw sample count the shares were computed from, not just the normalised percentages. Below `UNDER_SAMPLED_TICK_FLOOR` (500 ticks), the entry is marked `underSampled: true` in the JSON and rendered with an explicit "under-sampled" marker in `baseline.md`, rather than presenting a share vector whose ranking rests on too few samples as if it were trustworthy. `tooling/profile-registry.ts` raises each workload's iteration count only as far as needed to clear the floor (recorded per-workload, with the measured tick total in a comment); a command that still cannot clear it economically is left honestly marked rather than hidden. - **Profiler setup-vs-command attribution:** the profiler hoists write-workload scratch-repo construction out of the sampled `commit`/`merge` run loop (build every scratch first, then run the measured command over each) so repo-open cost cannot leak into command frames. `add`'s build stays interleaved with its run — its `run` needs the working-tree files its own build just wrote — so its build cost is instead classified into `setupShares` by name (`SETUP_FRAMES` in `tooling/profile-digest.ts`). `add.bench.ts`, `commit.bench.ts` and `merge.bench.ts` (the `vitest bench` suite, not the profiler) still build their scratch repo inside `sut` — a separate, accepted asymmetry: the bench and the profiler measure with independent framings, and this doc's `add`/`commit`/`merge` bench numbers include that build cost. diff --git a/docs/understand/security.md b/docs/understand/security.md index 47bd42cf3..e209b4927 100644 --- a/docs/understand/security.md +++ b/docs/understand/security.md @@ -6,7 +6,7 @@ To report a vulnerability, see [`SECURITY.md`](../../SECURITY.md) at the repo ro ## Path containment -Every `FileSystem` adapter enforces that every input path resolves to a location **inside one of the adapter's containment roots** — but the two directions of traffic are held to different standards, matching git's own posture. For a normal repository (and a main worktree) that set is a single root, `workDir`. Opening a linked worktree, a submodule working directory, or a `--separate-git-dir` layout widens it to the resolved layout's `{ workDir, gitDir, commonDir }`, minimised so any root already contained in another is dropped — a normal repo still collapses to exactly `[workDir]`, byte-identical to before ([ADR-541](../adr/541-raw-node-adapter-layout-root-set.md)). +Every `FileSystem` adapter enforces that every input path resolves to a location **inside one of the adapter's containment roots** — but the two directions of traffic are held to different standards, matching git's own posture. For a normal repository (and a main worktree) that set is a single root, `workDir`. Opening a linked worktree, a submodule working directory, or a `--separate-git-dir` layout widens it to the resolved layout's `{ workDir, gitDir, commonDir }`, minimised so any root already contained in another is dropped — a normal repo still collapses to exactly `[workDir]`, byte-identical to before — [ADR-721](../adr/721-first-party-read-containment-is-single-authority.md), the single authority for first-party read containment, carries the root-set model forward unchanged. A caller-supplied `commonDir` is a **privilege-relevant argument**, in the same class as `gitDir`: naming one widens the containment root set above (never anything read off disk) — including via the work tree the bareness suppression keeps: supplying the option, even with a value equal to the gitDir, can add the resolved work tree (`cwd` on the explicit route) to the root set where the same open without it stayed gitDir-only — chooses which `config` is authoritative — and therefore which `merge..driver` shell commands run, which `core.excludesFile`/`core.attributesFile` get read, whether `core.worktree` widens the root set again (up to `/`), and which hash algorithm and ref backend the repository uses — and chooses which `hooks/` directory is spawned, with the caller's full environment. The ownership-trust gate (see [Repository trust](#repository-trust) below) checks the resolved value on the routes it already checks `gitDir` on, and is off on the explicit route exactly as it already is for `gitDir` — `openRepository({ gitDir, commonDir })` against another user's directory is accepted without an ownership check, the same as `openRepository({ gitDir })` already is; the option adds a second path into that pre-existing hole, not a new one. `hooks: false` and `command: false` close the two code-execution channels. **`commonDir` is not a sandbox** — a caller that must not reach a subtree must not be handed the ability to name it. diff --git a/docs/use/errors.md b/docs/use/errors.md index f050cb938..7b04ff3e0 100644 --- a/docs/use/errors.md +++ b/docs/use/errors.md @@ -68,6 +68,7 @@ Codes are grouped by domain. Within each group, alphabetical. | `OBJECT_TOO_LARGE` | `id, actualSize, limit` | Object exceeds `maxBytes` cap. | | `OBJECT_NOT_FOUND` | `id` | Id missing locally and (if applicable) the promisor remote did not deliver it. | | `PACK_TOO_LARGE` | `bytes, limit` | Pack exceeded the adapter's size guard. | +| `PACK_ARTIFACT_MISMATCH` | `path` | A file already at a pack artefact's content-addressed name holds different bytes; the receive refuses rather than overwrite, as git's finalize step does. | | `UNEXPECTED_OBJECT_TYPE` | `id, expected, actual` | Resolved object's type does not match the caller's expectation (e.g. asked for tree, got blob). | ### Refs, reflog, revparse diff --git a/docs/use/primitives/internals.md b/docs/use/primitives/internals.md index 13467badc..6fc7221bf 100644 --- a/docs/use/primitives/internals.md +++ b/docs/use/primitives/internals.md @@ -52,7 +52,7 @@ Two further members support `maintenance`'s `gc` task (ADR-731/732/733): `fileNa `expiry-cutoff.ts`. **Fully internal.** Resolves `gc.pruneExpire`'s date-expression grammar to a unix-seconds cutoff for the cruft-pack survival rule `mtime > cutoff` — see [`maintenance`](../commands/maintenance.md) for the caller-facing grammar and defaults. Resolves the keyword layer first, exactly as git's `parse_expiry_date` does: `never` (case- and whitespace-tolerant) and the exact-match `false` mean nothing expires; the exact-match `all` and `now` resolve to the maximum time, so everything — future-dated state included — expires. Uppercase `ALL`/`FALSE` refuse, as in git. Every other form (`yesterday`, ISO-8601, `@`, `..ago`) delegates to `parseApproxidate`, and an expression neither layer parses refuses (`CONFIG_BAD_DATE_VALUE`) rather than being approximated — a mis-parsed expression would silently move a cutoff that can destroy data. Used by `maintenance`'s `gc` task. ### `fetchPack` -`fetch-pack.ts`. Smart-HTTP `git-upload-pack` exchange — discover refs, send `want`/`have`, receive pack. The received pack streams straight to a quarantine file, `objects/pack/tmp_pack_<6-char random>` — git's own on-disk shape — hashed incrementally as bytes arrive rather than buffered whole in memory (ADR-728). Once the trailer verifies against the incrementally-computed digest, the quarantined pack is indexed in two bounded-memory passes (`internal/index-pack.ts`, ADR-787) rather than by materialising every entry's inflated content twice over, as the pipeline it replaces did: pass 1 (`scanEntries`) scans the pack once, sequentially, hashing base entries incrementally and retaining only fixed-width records (`internal/pack-records.ts`); pass 2 (`resolveFromRoots`) walks the delta forest root-down from the base entries on an explicit stack, resolving each delta against its already-resolved parent and releasing that parent the instant its last child is dequeued, so a linear chain retains two objects regardless of depth (ADR-779). Only then is the quarantine file renamed to `pack-.pack` and its `.idx`/`.rev` siblings written; a handled failure best-effort-unlinks the temp file, a hard kill leaves it behind, matching git's own survival posture. The rename falls back to a plain `rename` where an atomic one is unavailable (OPFS). This is not O(1) — one entry's inflated payload, a branching delta forest's retained ancestors, and the per-object record arrays are all irreducible terms, and V8's own allocation churn pushes peak footprint above what is retained — but on a real clone of this repository the two-pass path measured **767.8 MiB → ≈167.7 MiB over baseline** against `main`'s old pipeline (local measurement). Used by [`clone`](../commands/clone.md), [`fetch`](../commands/fetch.md), [`fetchMissing`](../commands/fetch-missing.md). +`fetch-pack.ts`. Smart-HTTP `git-upload-pack` exchange — discover refs, send `want`/`have`, receive pack. The received pack streams straight to a quarantine file, `objects/pack/tmp_pack_<6-char random>` — git's own on-disk shape — hashed incrementally as bytes arrive rather than buffered whole in memory (ADR-728). Once the trailer verifies against the incrementally-computed digest, the quarantined pack is indexed in two bounded-memory passes (`internal/index-pack.ts`, ADR-787) rather than by materialising every entry's inflated content twice over, as the pipeline it replaces did: pass 1 (`scanEntries`) scans the pack once, sequentially, hashing base entries incrementally and retaining only fixed-width records (`internal/pack-records.ts`); pass 2 (`resolveFromRoots`) walks the delta forest root-down from the base entries on an explicit stack, resolving each delta against its already-resolved parent and releasing that parent the instant its last child is dequeued, so a linear chain retains two objects regardless of depth (ADR-779). Only then does the quarantine copy land at `pack-.pack`: a free name takes it by rename; an occupied name is compared to the copy byte-for-byte in bounded windows and, if identical, keeps its place untouched — same inode, same mtime, the copy discarded — or is refused with `PACK_ARTIFACT_MISMATCH` when the occupant is not a regular file or its bytes differ, git's own finalize posture (ADR-804). The `.idx`/`.rev` siblings follow the same rule — written where free, kept when identical, refused when different — and an existing `.promisor` sentinel is kept whatever it holds. A handled failure best-effort-unlinks the temp file, a hard kill leaves it behind, matching git's own survival posture. The rename falls back to a plain `rename` where an atomic one is unavailable (OPFS). This is not O(1) — one entry's inflated payload, a branching delta forest's retained ancestors, and the per-object record arrays are all irreducible terms, and V8's own allocation churn pushes peak footprint above what is retained — but on a real clone of this repository the two-pass path measured **767.8 MiB → ≈167.7 MiB over baseline** against `main`'s old pipeline (local measurement). Used by [`clone`](../commands/clone.md), [`fetch`](../commands/fetch.md), [`fetchMissing`](../commands/fetch-missing.md). ### `getSpawnCwd` `path-layout.ts`. Working directory for a spawned child process (hook, signer, textconv, merge/filter driver): the work tree when the repository has one, else the gitDir — git's own bare hooks run with `PWD=`. Same value as [`getRepoRoot`](get-repo-root.md), distinct in intent: names the spawn contract so call sites stop restating its why-comment. Used by [`runHook`](run-hook.md), `signPayload`, `applyTextconv`, `runFilterDriver`, `runMergeDriver`. @@ -178,7 +178,7 @@ Auto-compaction runs as this call's last, best-effort step: a geometric rule (fa `write-commit-graph.ts`. **Fully internal.** `maintenance`'s `commit-graph` task itself: sources every resolvable ref's peeled target via [`enumerateRefs`](#enumeraterefs) + [`resolveRef`](resolve-ref.md) (refs-only, Pin O — an unresolvable ref roots nothing rather than failing the whole write), walks them with [`walkCommits`](walk-commits.md), and hands the collected commit set to the domain writer (`serializeCommitGraph`, `commit-graph-writer.ts`) for the byte-identical assembly itself. Writes nothing for a repository with no commits or a shallow one (checked before the walk — a shallow boundary makes the format's generation-number invariant unsound, since a shallow commit's true depth from its full history is unknown), both matching `git commit-graph write --reachable`'s own exit-0-no-file behaviour. Commits the result through [`atomicWriteFile`](#atomicwritefile--atomicwriteref), so a concurrent writer contending for `commit-graph.lock` surfaces `RESOURCE_LOCKED` rather than corrupting the file. Used by `maintenance`. ### `writePackArtifacts` -`internal/write-pack-artifacts.ts`. **Fully internal.** Writes a pack's sibling artefacts in git's own order: `.pack`, `.idx`, an optional `.promisor` sentinel, then `.rev` last — `.rev` last because pack discovery keys on the `.pack`/`.idx` pair, so a concurrent reader that observes the pair before the `.rev` lands just takes the absent-artefact arm. The `.rev` write is gated by `pack.writeReverseIndex` (default `true`), resolved *before* any file is created, so a value git's boolean grammar refuses leaves the pack directory untouched. `buildIdx`/`buildRev`/`buildCruftMtimes` (same file) all assemble their artefact's bytes through the same body/trailer split, `ctx.hash` filling the trailer in place — `.idx` now joins `.rev` and `.mtimes` in that shape; before, `.idx` appended its trailer by allocating a second full-size buffer. `packFilePath`/`cruftMtimesFilePath` are the shared path helpers every writer of `.pack`/`.mtimes` bytes agrees on (quarantine-rename callers and from-scratch writers alike); `buildCruftMtimes`'s `.mtimes` sidecar is consumed by the cruft-pack lifecycle (see `readExistingCruftPack` below) rather than by this module's own `writePackArtifacts` call, which never writes `.mtimes` itself, and it now takes an ordinal-keyed `mtimeAt(ordinal)` lookup rather than an oid-keyed one. Used by `fetchPack`, [`packObjects`](../commands/pack-objects.md), and the cruft-pack writer. +`internal/write-pack-artifacts.ts`. **Fully internal.** Writes a pack's sibling artefacts in git's own order: `.pack`, `.idx`, an optional `.promisor` sentinel, then `.rev` last — `.rev` last because pack discovery keys on the `.pack`/`.idx` pair, so a concurrent reader that observes the pair before the `.rev` lands just takes the absent-artefact arm. Each sibling write follows the receive path's own tolerance (ADR-804): write where the name is free, keep an identical occupant in place, refuse a differing one — `gc`'s quarantine rewrite is the deliberate exception, replacing its own prior-run `.rev` and sentinel outright rather than comparing against them. The `.rev` write is gated by `pack.writeReverseIndex` (default `true`), resolved *before* any file is created, so a value git's boolean grammar refuses leaves the pack directory untouched. `buildIdx`/`buildRev`/`buildCruftMtimes` (same file) all assemble their artefact's bytes through the same body/trailer split, `ctx.hash` filling the trailer in place — `.idx` now joins `.rev` and `.mtimes` in that shape; before, `.idx` appended its trailer by allocating a second full-size buffer. `packFilePath`/`cruftMtimesFilePath` are the shared path helpers every writer of `.pack`/`.mtimes` bytes agrees on (quarantine-rename callers and from-scratch writers alike); `buildCruftMtimes`'s `.mtimes` sidecar is consumed by the cruft-pack lifecycle (see `readExistingCruftPack` below) rather than by this module's own `writePackArtifacts` call, which never writes `.mtimes` itself, and it now takes an ordinal-keyed `mtimeAt(ordinal)` lookup rather than an oid-keyed one. Used by `fetchPack`, [`packObjects`](../commands/pack-objects.md), and the cruft-pack writer. ### `writeSparsePatternText` `write-sparse-checkout.ts`. Write raw `.git/info/sparse-checkout` text. diff --git a/package-lock.json b/package-lock.json index 4c63066d1..6f9b2f60c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "isomorphic-git": "1.41.9", "jscpd": "5.0.16", "knip": "6.33.0", - "lint-staged": "17.4.1", + "lint-staged": "17.5.0", "minimatch": "10.2.6", "rollup": "4.63.1", "rollup-plugin-dts": "6.5.1", @@ -9379,15 +9379,15 @@ } }, "node_modules/lint-staged": { - "version": "17.4.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-17.4.1.tgz", - "integrity": "sha512-FmJeudcalbSfg1du+JCfvi5vS6Qt08KgbfLWiHinbef+2JJwUZwAWVoaO1AcJVUTWPfk0t30PMQNwPAeCzYQ+Q==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-17.5.0.tgz", + "integrity": "sha512-ah2qsNtvKP1+Ak4rAvEEIvcXDLjjbr/xmxCvlequxqEOFYk0qINcZcRxD3Ic8wRn7/oQ8+wC9s0DfDrdMVCRFg==", "dev": true, "license": "MIT", "dependencies": { "picomatch": "^4.0.7", "string-argv": "^0.3.2", - "tinyexec": "^1.3.0" + "tinyexec": "^1.3.1" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -11389,9 +11389,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz", - "integrity": "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz", + "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index b841e401b..cf2c79f1e 100644 --- a/package.json +++ b/package.json @@ -839,7 +839,7 @@ "output": [] }, "check:deps": { - "command": "sh -c 'npm outdated || ! npm outdated 2>/dev/null | tail -n +2 | grep -v \"^@ls-lint/ls-lint \" | grep -v \"^typescript \" | grep -v \"^knip \" | grep -v \"^jscpd \" | grep -v \"^vitest \" | grep -v \"^@vitest/coverage-v8 \" | grep -v \"^@cloudflare/workers-types \" | grep -q .'", + "command": "sh -c 'npm outdated || ! npm outdated 2>/dev/null | tail -n +2 | grep -v \"^@ls-lint/ls-lint \" | grep -v \"^typescript \" | grep -v \"^knip \" | grep -v \"^jscpd \" | grep -v \"^vitest \" | grep -v \"^@vitest/coverage-v8 \" | grep -v \"^@cloudflare/workers-types \" | grep -v \"^@playwright/test \" | grep -q .'", "files": [ "package.json", "package-lock.json" @@ -866,6 +866,7 @@ "files": [ "src/**/*.ts", "test/unit/**/*.ts", + "test/bench/**/*.ts", "tooling/**/*.ts", "vitest.config.ts" ], @@ -879,7 +880,11 @@ "files": [ "src/**/*.ts", "test/integration/**/*.ts", + "test/bench/**/*.ts", + "tooling/test/integration/**/*.ts", + "tooling/test/fixtures/**/*.ts", "vitest.config.ts", + "vitest.bench.config.ts", "tooling/dts-entries.ts", "tooling/dts-value-exports.ts", "tooling/truthful-dts.ts", @@ -1161,7 +1166,12 @@ "test-pyramid-budgets.json", "test/unit/**/*.test.ts", "test/integration/**/*.test.ts", - "test/browser/**/*.spec.ts" + "test/parity/**/*.test.ts", + "test/runtime-parity/**/*.test.ts", + "test/perf/**/*.test.ts", + "test/browser/**/*.spec.ts", + "tooling/test/unit/**/*.test.ts", + "tooling/test/integration/**/*.test.ts" ], "output": [ "reports/test-pyramid.json", @@ -1370,7 +1380,7 @@ "isomorphic-git": "1.41.9", "jscpd": "5.0.16", "knip": "6.33.0", - "lint-staged": "17.4.1", + "lint-staged": "17.5.0", "minimatch": "10.2.6", "rollup": "4.63.1", "rollup-plugin-dts": "6.5.1", diff --git a/reports/api.json b/reports/api.json index 000bbde1f..e41436c8d 100644 --- a/reports/api.json +++ b/reports/api.json @@ -18792,14 +18792,14 @@ "flags": {}, "children": [ { - "id": 8520, + "id": 8523, "name": "AckEntry", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8521, + "id": 8524, "name": "id", "variant": "declaration", "kind": 1024, @@ -18814,7 +18814,7 @@ } }, { - "id": 8522, + "id": 8525, "name": "status", "variant": "declaration", "kind": 1024, @@ -18823,7 +18823,7 @@ }, "type": { "type": "reference", - "target": 8523, + "target": 8526, "name": "AckStatus", "package": "@scolladon/tsgit" } @@ -18833,21 +18833,21 @@ { "title": "Properties", "children": [ - 8521, - 8522 + 8524, + 8525 ] } ] }, { - "id": 8524, + "id": 8527, "name": "AdvertisedRef", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8526, + "id": 8529, "name": "id", "variant": "declaration", "kind": 1024, @@ -18862,7 +18862,7 @@ } }, { - "id": 8525, + "id": 8528, "name": "name", "variant": "declaration", "kind": 1024, @@ -18875,7 +18875,7 @@ } }, { - "id": 8527, + "id": 8530, "name": "peeled", "variant": "declaration", "kind": 1024, @@ -18895,22 +18895,22 @@ { "title": "Properties", "children": [ - 8526, - 8525, - 8527 + 8529, + 8528, + 8530 ] } ] }, { - "id": 8528, + "id": 8531, "name": "Advertisement", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8529, + "id": 8532, "name": "capabilities", "variant": "declaration", "kind": 1024, @@ -18930,7 +18930,7 @@ } }, { - "id": 8531, + "id": 8534, "name": "head", "variant": "declaration", "kind": 1024, @@ -18940,13 +18940,13 @@ }, "type": { "type": "reference", - "target": 8524, + "target": 8527, "name": "AdvertisedRef", "package": "@scolladon/tsgit" } }, { - "id": 8530, + "id": 8533, "name": "refs", "variant": "declaration", "kind": 1024, @@ -18960,7 +18960,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8524, + "target": 8527, "name": "AdvertisedRef", "package": "@scolladon/tsgit" } @@ -18972,22 +18972,22 @@ { "title": "Properties", "children": [ - 8529, - 8531, - 8530 + 8532, + 8534, + 8533 ] } ] }, { - "id": 9261, + "id": 9264, "name": "BasePackEntryHeader", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9264, + "id": 9267, "name": "dataOffset", "variant": "declaration", "kind": 1024, @@ -19000,7 +19000,7 @@ } }, { - "id": 9263, + "id": 9266, "name": "size", "variant": "declaration", "kind": 1024, @@ -19013,7 +19013,7 @@ } }, { - "id": 9262, + "id": 9265, "name": "type", "variant": "declaration", "kind": 1024, @@ -19047,22 +19047,22 @@ { "title": "Properties", "children": [ - 9264, - 9263, - 9262 + 9267, + 9266, + 9265 ] } ] }, { - "id": 9028, + "id": 9031, "name": "BitmapEntryHeader", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9031, + "id": 9034, "name": "flags", "variant": "declaration", "kind": 1024, @@ -19075,7 +19075,7 @@ } }, { - "id": 9029, + "id": 9032, "name": "position", "variant": "declaration", "kind": 1024, @@ -19096,7 +19096,7 @@ } }, { - "id": 9032, + "id": 9035, "name": "stream", "variant": "declaration", "kind": 1024, @@ -19105,13 +19105,13 @@ }, "type": { "type": "reference", - "target": 9165, + "target": 9168, "name": "EwahStream", "package": "@scolladon/tsgit" } }, { - "id": 9030, + "id": 9033, "name": "xorOffset", "variant": "declaration", "kind": 1024, @@ -19128,16 +19128,16 @@ { "title": "Properties", "children": [ - 9031, - 9029, + 9034, 9032, - 9030 + 9035, + 9033 ] } ] }, { - "id": 8809, + "id": 8812, "name": "CompactionSegment", "variant": "declaration", "kind": 256, @@ -19180,7 +19180,7 @@ }, "children": [ { - "id": 8811, + "id": 8814, "name": "end", "variant": "declaration", "kind": 1024, @@ -19193,7 +19193,7 @@ } }, { - "id": 8810, + "id": 8813, "name": "start", "variant": "declaration", "kind": 1024, @@ -19210,21 +19210,21 @@ { "title": "Properties", "children": [ - 8811, - 8810 + 8814, + 8813 ] } ] }, { - "id": 8110, + "id": 8113, "name": "ConflictMarkerOptions", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8116, + "id": 8119, "name": "conflictStyle", "variant": "declaration", "kind": 1024, @@ -19247,7 +19247,7 @@ } }, { - "id": 8111, + "id": 8114, "name": "labels", "variant": "declaration", "kind": 1024, @@ -19258,14 +19258,14 @@ "type": { "type": "reflection", "declaration": { - "id": 8112, + "id": 8115, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8114, + "id": 8117, "name": "base", "variant": "declaration", "kind": 1024, @@ -19279,7 +19279,7 @@ } }, { - "id": 8113, + "id": 8116, "name": "ours", "variant": "declaration", "kind": 1024, @@ -19293,7 +19293,7 @@ } }, { - "id": 8115, + "id": 8118, "name": "theirs", "variant": "declaration", "kind": 1024, @@ -19311,9 +19311,9 @@ { "title": "Properties", "children": [ - 8114, - 8113, - 8115 + 8117, + 8116, + 8118 ] } ] @@ -19321,7 +19321,7 @@ } }, { - "id": 8117, + "id": 8120, "name": "markerSize", "variant": "declaration", "kind": 1024, @@ -19355,22 +19355,22 @@ { "title": "Properties", "children": [ - 8116, - 8111, - 8117 + 8119, + 8114, + 8120 ] } ] }, { - "id": 8119, + "id": 8122, "name": "ContentMergeContext", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8121, + "id": 8124, "name": "baseId", "variant": "declaration", "kind": 1024, @@ -19386,7 +19386,7 @@ } }, { - "id": 8124, + "id": 8127, "name": "baseMode", "variant": "declaration", "kind": 1024, @@ -19402,7 +19402,7 @@ } }, { - "id": 8122, + "id": 8125, "name": "ourId", "variant": "declaration", "kind": 1024, @@ -19417,7 +19417,7 @@ } }, { - "id": 8125, + "id": 8128, "name": "ourMode", "variant": "declaration", "kind": 1024, @@ -19432,7 +19432,7 @@ } }, { - "id": 8120, + "id": 8123, "name": "path", "variant": "declaration", "kind": 1024, @@ -19447,7 +19447,7 @@ } }, { - "id": 8123, + "id": 8126, "name": "theirId", "variant": "declaration", "kind": 1024, @@ -19462,7 +19462,7 @@ } }, { - "id": 8126, + "id": 8129, "name": "theirMode", "variant": "declaration", "kind": 1024, @@ -19481,26 +19481,26 @@ { "title": "Properties", "children": [ - 8121, 8124, - 8122, + 8127, 8125, - 8120, + 8128, 8123, - 8126 + 8126, + 8129 ] } ] }, { - "id": 9067, + "id": 9070, "name": "CopyInstruction", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9069, + "id": 9072, "name": "offset", "variant": "declaration", "kind": 1024, @@ -19513,7 +19513,7 @@ } }, { - "id": 9070, + "id": 9073, "name": "size", "variant": "declaration", "kind": 1024, @@ -19526,7 +19526,7 @@ } }, { - "id": 9068, + "id": 9071, "name": "type", "variant": "declaration", "kind": 1024, @@ -19543,22 +19543,22 @@ { "title": "Properties", "children": [ - 9069, - 9070, - 9068 + 9072, + 9073, + 9071 ] } ] }, { - "id": 9072, + "id": 9075, "name": "DeltaParsed", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9075, + "id": 9078, "name": "instructions", "variant": "declaration", "kind": 1024, @@ -19572,7 +19572,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 9071, + "target": 9074, "name": "DeltaInstruction", "package": "@scolladon/tsgit" } @@ -19580,7 +19580,7 @@ } }, { - "id": 9073, + "id": 9076, "name": "sourceLength", "variant": "declaration", "kind": 1024, @@ -19593,7 +19593,7 @@ } }, { - "id": 9074, + "id": 9077, "name": "targetLength", "variant": "declaration", "kind": 1024, @@ -19610,22 +19610,22 @@ { "title": "Properties", "children": [ - 9075, - 9073, - 9074 + 9078, + 9076, + 9077 ] } ] }, { - "id": 8764, + "id": 8767, "name": "DirectRef", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8766, + "id": 8769, "name": "target", "variant": "declaration", "kind": 1024, @@ -19640,7 +19640,7 @@ } }, { - "id": 8765, + "id": 8768, "name": "type", "variant": "declaration", "kind": 1024, @@ -19657,21 +19657,21 @@ { "title": "Properties", "children": [ - 8766, - 8765 + 8769, + 8768 ] } ] }, { - "id": 9165, + "id": 9168, "name": "EwahStream", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9166, + "id": 9169, "name": "bitSize", "variant": "declaration", "kind": 1024, @@ -19716,7 +19716,7 @@ } }, { - "id": 9169, + "id": 9172, "name": "endOffset", "variant": "declaration", "kind": 1024, @@ -19737,7 +19737,7 @@ } }, { - "id": 9167, + "id": 9170, "name": "wordCount", "variant": "declaration", "kind": 1024, @@ -19750,7 +19750,7 @@ } }, { - "id": 9168, + "id": 9171, "name": "wordsOffset", "variant": "declaration", "kind": 1024, @@ -19775,16 +19775,16 @@ { "title": "Properties", "children": [ - 9166, 9169, - 9167, - 9168 + 9172, + 9170, + 9171 ] } ] }, { - "id": 8034, + "id": 8037, "name": "IgnoreLevel", "variant": "declaration", "kind": 256, @@ -19895,7 +19895,7 @@ }, "children": [ { - "id": 8035, + "id": 8038, "name": "basedir", "variant": "declaration", "kind": 1024, @@ -19919,7 +19919,7 @@ } }, { - "id": 8037, + "id": 8040, "name": "kind", "variant": "declaration", "kind": 1024, @@ -19946,7 +19946,7 @@ } }, { - "id": 8036, + "id": 8039, "name": "rules", "variant": "declaration", "kind": 1024, @@ -19955,7 +19955,7 @@ }, "type": { "type": "reference", - "target": 8059, + "target": 8062, "name": "IgnoreRuleset", "package": "@scolladon/tsgit" } @@ -19965,22 +19965,22 @@ { "title": "Properties", "children": [ - 8035, - 8037, - 8036 + 8038, + 8040, + 8039 ] } ] }, { - "id": 8052, + "id": 8055, "name": "IgnoreRule", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8056, + "id": 8059, "name": "anchored", "variant": "declaration", "kind": 1024, @@ -20017,7 +20017,7 @@ } }, { - "id": 8058, + "id": 8061, "name": "compiled", "variant": "declaration", "kind": 1024, @@ -20044,7 +20044,7 @@ } }, { - "id": 8055, + "id": 8058, "name": "directoryOnly", "variant": "declaration", "kind": 1024, @@ -20073,7 +20073,7 @@ } }, { - "id": 8057, + "id": 8060, "name": "lineNumber", "variant": "declaration", "kind": 1024, @@ -20102,7 +20102,7 @@ } }, { - "id": 8054, + "id": 8057, "name": "negated", "variant": "declaration", "kind": 1024, @@ -20131,7 +20131,7 @@ } }, { - "id": 8053, + "id": 8056, "name": "pattern", "variant": "declaration", "kind": 1024, @@ -20156,25 +20156,25 @@ { "title": "Properties", "children": [ - 8056, + 8059, + 8061, 8058, - 8055, + 8060, 8057, - 8054, - 8053 + 8056 ] } ] }, { - "id": 9076, + "id": 9079, "name": "InsertInstruction", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9078, + "id": 9081, "name": "data", "variant": "declaration", "kind": 1024, @@ -20193,7 +20193,7 @@ } }, { - "id": 9077, + "id": 9080, "name": "type", "variant": "declaration", "kind": 1024, @@ -20210,21 +20210,21 @@ { "title": "Properties", "children": [ - 9078, - 9077 + 9081, + 9080 ] } ] }, { - "id": 8859, + "id": 8862, "name": "LoadedReftable", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8863, + "id": 8866, "name": "_bytes", "variant": "declaration", "kind": 1024, @@ -20244,12 +20244,12 @@ }, "inheritedFrom": { "type": "reference", - "target": 8824, + "target": 8827, "name": "Reftable._bytes" } }, { - "id": 8864, + "id": 8867, "name": "_view", "variant": "declaration", "kind": 1024, @@ -20269,12 +20269,12 @@ }, "inheritedFrom": { "type": "reference", - "target": 8825, + "target": 8828, "name": "Reftable._view" } }, { - "id": 8862, + "id": 8865, "name": "footer", "variant": "declaration", "kind": 1024, @@ -20284,18 +20284,18 @@ }, "type": { "type": "reference", - "target": 8826, + "target": 8829, "name": "ReftableFooter", "package": "@scolladon/tsgit" }, "inheritedFrom": { "type": "reference", - "target": 8823, + "target": 8826, "name": "Reftable.footer" } }, { - "id": 8861, + "id": 8864, "name": "header", "variant": "declaration", "kind": 1024, @@ -20305,18 +20305,18 @@ }, "type": { "type": "reference", - "target": 8833, + "target": 8836, "name": "ReftableHeader", "package": "@scolladon/tsgit" }, "inheritedFrom": { "type": "reference", - "target": 8822, + "target": 8825, "name": "Reftable.header" } }, { - "id": 8860, + "id": 8863, "name": "logBlocks", "variant": "declaration", "kind": 1024, @@ -20374,25 +20374,25 @@ { "title": "Properties", "children": [ - 8863, + 8866, + 8867, + 8865, 8864, - 8862, - 8861, - 8860 + 8863 ] } ], "extendedTypes": [ { "type": "reference", - "target": 8821, + "target": 8824, "name": "Reftable", "package": "@scolladon/tsgit" } ] }, { - "id": 8682, + "id": 8685, "name": "LogAllRefUpdates", "variant": "declaration", "kind": 256, @@ -20415,7 +20415,7 @@ }, "children": [ { - "id": 8684, + "id": 8687, "name": "bare", "variant": "declaration", "kind": 1024, @@ -20429,7 +20429,7 @@ } }, { - "id": 8683, + "id": 8686, "name": "logAllRefUpdates", "variant": "declaration", "kind": 1024, @@ -20456,21 +20456,21 @@ { "title": "Properties", "children": [ - 8684, - 8683 + 8687, + 8686 ] } ] }, { - "id": 9190, + "id": 9193, "name": "LruCache", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9208, + "id": 9211, "name": "currentSize", "variant": "declaration", "kind": 1024, @@ -20483,7 +20483,7 @@ } }, { - "id": 9210, + "id": 9213, "name": "entryCount", "variant": "declaration", "kind": 1024, @@ -20496,7 +20496,7 @@ } }, { - "id": 9209, + "id": 9212, "name": "maxSize", "variant": "declaration", "kind": 1024, @@ -20509,14 +20509,14 @@ } }, { - "id": 9206, + "id": 9209, "name": "clear", "variant": "declaration", "kind": 2048, "flags": {}, "signatures": [ { - "id": 9207, + "id": 9210, "name": "clear", "variant": "signature", "kind": 4096, @@ -20529,21 +20529,21 @@ ] }, { - "id": 9203, + "id": 9206, "name": "delete", "variant": "declaration", "kind": 2048, "flags": {}, "signatures": [ { - "id": 9204, + "id": 9207, "name": "delete", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9205, + "id": 9208, "name": "key", "variant": "param", "kind": 32768, @@ -20562,21 +20562,21 @@ ] }, { - "id": 9192, + "id": 9195, "name": "get", "variant": "declaration", "kind": 2048, "flags": {}, "signatures": [ { - "id": 9193, + "id": 9196, "name": "get", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9194, + "id": 9197, "name": "key", "variant": "param", "kind": 32768, @@ -20592,7 +20592,7 @@ "types": [ { "type": "reference", - "target": 9191, + "target": 9194, "name": "V", "package": "@scolladon/tsgit", "qualifiedName": "LruCache.V", @@ -20608,21 +20608,21 @@ ] }, { - "id": 9200, + "id": 9203, "name": "has", "variant": "declaration", "kind": 2048, "flags": {}, "signatures": [ { - "id": 9201, + "id": 9204, "name": "has", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9202, + "id": 9205, "name": "key", "variant": "param", "kind": 32768, @@ -20641,21 +20641,21 @@ ] }, { - "id": 9195, + "id": 9198, "name": "set", "variant": "declaration", "kind": 2048, "flags": {}, "signatures": [ { - "id": 9196, + "id": 9199, "name": "set", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9197, + "id": 9200, "name": "key", "variant": "param", "kind": 32768, @@ -20666,14 +20666,14 @@ } }, { - "id": 9198, + "id": 9201, "name": "value", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9191, + "target": 9194, "name": "V", "package": "@scolladon/tsgit", "qualifiedName": "LruCache.V", @@ -20681,7 +20681,7 @@ } }, { - "id": 9199, + "id": 9202, "name": "byteSize", "variant": "param", "kind": 32768, @@ -20704,25 +20704,25 @@ { "title": "Properties", "children": [ - 9208, - 9210, - 9209 + 9211, + 9213, + 9212 ] }, { "title": "Methods", "children": [ + 9209, 9206, + 9195, 9203, - 9192, - 9200, - 9195 + 9198 ] } ], "typeParameters": [ { - "id": 9191, + "id": 9194, "name": "V", "variant": "typeParam", "kind": 131072, @@ -20731,14 +20731,14 @@ ] }, { - "id": 8589, + "id": 8592, "name": "LsRefsRequestOptions", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8593, + "id": 8596, "name": "objectFormat", "variant": "declaration", "kind": 1024, @@ -20760,7 +20760,7 @@ } }, { - "id": 8591, + "id": 8594, "name": "peel", "variant": "declaration", "kind": 1024, @@ -20774,7 +20774,7 @@ } }, { - "id": 8592, + "id": 8595, "name": "refPrefixes", "variant": "declaration", "kind": 1024, @@ -20795,7 +20795,7 @@ } }, { - "id": 8590, + "id": 8593, "name": "symrefs", "variant": "declaration", "kind": 1024, @@ -20813,23 +20813,23 @@ { "title": "Properties", "children": [ - 8593, - 8591, - 8592, - 8590 + 8596, + 8594, + 8595, + 8593 ] } ] }, { - "id": 8136, + "id": 8139, "name": "MergeConflict", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8139, + "id": 8142, "name": "baseId", "variant": "declaration", "kind": 1024, @@ -20845,7 +20845,7 @@ } }, { - "id": 8142, + "id": 8145, "name": "baseMode", "variant": "declaration", "kind": 1024, @@ -20861,7 +20861,7 @@ } }, { - "id": 8150, + "id": 8153, "name": "basePath", "variant": "declaration", "kind": 1024, @@ -20893,7 +20893,7 @@ } }, { - "id": 8145, + "id": 8148, "name": "conflictContent", "variant": "declaration", "kind": 1024, @@ -20925,7 +20925,7 @@ } }, { - "id": 8146, + "id": 8149, "name": "contentVerdict", "variant": "declaration", "kind": 1024, @@ -20952,7 +20952,7 @@ } }, { - "id": 8147, + "id": 8150, "name": "mergedMode", "variant": "declaration", "kind": 1024, @@ -20984,7 +20984,7 @@ } }, { - "id": 8140, + "id": 8143, "name": "ourId", "variant": "declaration", "kind": 1024, @@ -21000,7 +21000,7 @@ } }, { - "id": 8143, + "id": 8146, "name": "ourMode", "variant": "declaration", "kind": 1024, @@ -21016,7 +21016,7 @@ } }, { - "id": 8148, + "id": 8151, "name": "ourPath", "variant": "declaration", "kind": 1024, @@ -21048,7 +21048,7 @@ } }, { - "id": 8138, + "id": 8141, "name": "path", "variant": "declaration", "kind": 1024, @@ -21063,7 +21063,7 @@ } }, { - "id": 8141, + "id": 8144, "name": "theirId", "variant": "declaration", "kind": 1024, @@ -21079,7 +21079,7 @@ } }, { - "id": 8144, + "id": 8147, "name": "theirMode", "variant": "declaration", "kind": 1024, @@ -21095,7 +21095,7 @@ } }, { - "id": 8149, + "id": 8152, "name": "theirPath", "variant": "declaration", "kind": 1024, @@ -21127,7 +21127,7 @@ } }, { - "id": 8137, + "id": 8140, "name": "type", "variant": "declaration", "kind": 1024, @@ -21136,7 +21136,7 @@ }, "type": { "type": "reference", - "target": 8118, + "target": 8121, "name": "ConflictType", "package": "@scolladon/tsgit" } @@ -21146,26 +21146,26 @@ { "title": "Properties", "children": [ - 8139, 8142, - 8150, 8145, - 8146, - 8147, - 8140, - 8143, + 8153, 8148, - 8138, + 8149, + 8150, + 8143, + 8146, + 8151, 8141, 8144, - 8149, - 8137 + 8147, + 8152, + 8140 ] } ] }, { - "id": 8093, + "id": 8096, "name": "MergeLabels", "variant": "declaration", "kind": 256, @@ -21236,7 +21236,7 @@ }, "children": [ { - "id": 8096, + "id": 8099, "name": "base", "variant": "declaration", "kind": 1024, @@ -21249,7 +21249,7 @@ } }, { - "id": 8094, + "id": 8097, "name": "ours", "variant": "declaration", "kind": 1024, @@ -21262,7 +21262,7 @@ } }, { - "id": 8095, + "id": 8098, "name": "theirs", "variant": "declaration", "kind": 1024, @@ -21279,22 +21279,22 @@ { "title": "Properties", "children": [ - 8096, - 8094, - 8095 + 8099, + 8097, + 8098 ] } ] }, { - "id": 9216, + "id": 9219, "name": "MidxEntry", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9218, + "id": 9221, "name": "offset", "variant": "declaration", "kind": 1024, @@ -21307,7 +21307,7 @@ } }, { - "id": 9217, + "id": 9220, "name": "packIndex", "variant": "declaration", "kind": 1024, @@ -21324,21 +21324,21 @@ { "title": "Properties", "children": [ - 9218, - 9217 + 9221, + 9220 ] } ] }, { - "id": 9219, + "id": 9222, "name": "MultiPackIndex", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9232, + "id": 9235, "name": "_bytes", "variant": "declaration", "kind": 1024, @@ -21357,7 +21357,7 @@ } }, { - "id": 9233, + "id": 9236, "name": "_view", "variant": "declaration", "kind": 1024, @@ -21376,7 +21376,7 @@ } }, { - "id": 9222, + "id": 9225, "name": "digestLength", "variant": "declaration", "kind": 1024, @@ -21389,7 +21389,7 @@ } }, { - "id": 9221, + "id": 9224, "name": "hashVersion", "variant": "declaration", "kind": 1024, @@ -21411,7 +21411,7 @@ } }, { - "id": 9230, + "id": 9233, "name": "largeOffsetCount", "variant": "declaration", "kind": 1024, @@ -21424,7 +21424,7 @@ } }, { - "id": 9229, + "id": 9232, "name": "largeOffsetsOffset", "variant": "declaration", "kind": 1024, @@ -21458,7 +21458,7 @@ } }, { - "id": 9223, + "id": 9226, "name": "numBaseFiles", "variant": "declaration", "kind": 1024, @@ -21479,7 +21479,7 @@ } }, { - "id": 9224, + "id": 9227, "name": "objectCount", "variant": "declaration", "kind": 1024, @@ -21492,7 +21492,7 @@ } }, { - "id": 9228, + "id": 9231, "name": "objectOffsetsOffset", "variant": "declaration", "kind": 1024, @@ -21505,7 +21505,7 @@ } }, { - "id": 9226, + "id": 9229, "name": "oidFanoutOffset", "variant": "declaration", "kind": 1024, @@ -21518,7 +21518,7 @@ } }, { - "id": 9227, + "id": 9230, "name": "oidLookupOffset", "variant": "declaration", "kind": 1024, @@ -21531,7 +21531,7 @@ } }, { - "id": 9225, + "id": 9228, "name": "packNames", "variant": "declaration", "kind": 1024, @@ -21567,7 +21567,7 @@ } }, { - "id": 9231, + "id": 9234, "name": "reverseIndexOffset", "variant": "declaration", "kind": 1024, @@ -21609,7 +21609,7 @@ } }, { - "id": 9220, + "id": 9223, "name": "version", "variant": "declaration", "kind": 1024, @@ -21635,33 +21635,33 @@ { "title": "Properties", "children": [ - 9232, - 9233, - 9222, - 9221, - 9230, - 9229, - 9223, + 9235, + 9236, + 9225, 9224, - 9228, + 9233, + 9232, 9226, 9227, - 9225, 9231, - 9220 + 9229, + 9230, + 9228, + 9234, + 9223 ] } ] }, { - "id": 9266, + "id": 9269, "name": "OfsPackEntryHeader", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9270, + "id": 9273, "name": "baseDistance", "variant": "declaration", "kind": 1024, @@ -21674,7 +21674,7 @@ } }, { - "id": 9269, + "id": 9272, "name": "dataOffset", "variant": "declaration", "kind": 1024, @@ -21687,7 +21687,7 @@ } }, { - "id": 9268, + "id": 9271, "name": "size", "variant": "declaration", "kind": 1024, @@ -21700,7 +21700,7 @@ } }, { - "id": 9267, + "id": 9270, "name": "type", "variant": "declaration", "kind": 1024, @@ -21717,23 +21717,23 @@ { "title": "Properties", "children": [ - 9270, - 9269, - 9268, - 9267 + 9273, + 9272, + 9271, + 9270 ] } ] }, { - "id": 9033, + "id": 9036, "name": "PackBitmap", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9041, + "id": 9044, "name": "_bytes", "variant": "declaration", "kind": 1024, @@ -21752,7 +21752,7 @@ } }, { - "id": 9042, + "id": 9045, "name": "_view", "variant": "declaration", "kind": 1024, @@ -21771,7 +21771,7 @@ } }, { - "id": 9038, + "id": 9041, "name": "checksum", "variant": "declaration", "kind": 1024, @@ -21798,7 +21798,7 @@ } }, { - "id": 9037, + "id": 9040, "name": "digestLength", "variant": "declaration", "kind": 1024, @@ -21811,7 +21811,7 @@ } }, { - "id": 9040, + "id": 9043, "name": "entriesOffset", "variant": "declaration", "kind": 1024, @@ -21832,7 +21832,7 @@ } }, { - "id": 9036, + "id": 9039, "name": "entryCount", "variant": "declaration", "kind": 1024, @@ -21845,7 +21845,7 @@ } }, { - "id": 9035, + "id": 9038, "name": "optionFlags", "variant": "declaration", "kind": 1024, @@ -21858,7 +21858,7 @@ } }, { - "id": 9039, + "id": 9042, "name": "typeStreams", "variant": "declaration", "kind": 1024, @@ -21881,25 +21881,25 @@ "elements": [ { "type": "reference", - "target": 9165, + "target": 9168, "name": "EwahStream", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 9165, + "target": 9168, "name": "EwahStream", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 9165, + "target": 9168, "name": "EwahStream", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 9165, + "target": 9168, "name": "EwahStream", "package": "@scolladon/tsgit" } @@ -21908,7 +21908,7 @@ } }, { - "id": 9034, + "id": 9037, "name": "version", "variant": "declaration", "kind": 1024, @@ -21925,28 +21925,28 @@ { "title": "Properties", "children": [ + 9044, + 9045, 9041, - 9042, - 9038, - 9037, 9040, - 9036, - 9035, + 9043, 9039, - 9034 + 9038, + 9042, + 9037 ] } ] }, { - "id": 8768, + "id": 8771, "name": "PackedRefEntry", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8770, + "id": 8773, "name": "id", "variant": "declaration", "kind": 1024, @@ -21961,7 +21961,7 @@ } }, { - "id": 8769, + "id": 8772, "name": "name", "variant": "declaration", "kind": 1024, @@ -21976,7 +21976,7 @@ } }, { - "id": 8771, + "id": 8774, "name": "peeled", "variant": "declaration", "kind": 1024, @@ -21996,22 +21996,22 @@ { "title": "Properties", "children": [ - 8770, - 8769, - 8771 + 8773, + 8772, + 8774 ] } ] }, { - "id": 8772, + "id": 8775, "name": "PackedRefs", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8773, + "id": 8776, "name": "entries", "variant": "declaration", "kind": 1024, @@ -22025,7 +22025,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8768, + "target": 8771, "name": "PackedRefEntry", "package": "@scolladon/tsgit" } @@ -22033,7 +22033,7 @@ } }, { - "id": 8774, + "id": 8777, "name": "peeling", "variant": "declaration", "kind": 1024, @@ -22059,7 +22059,7 @@ } }, { - "id": 8775, + "id": 8778, "name": "sorted", "variant": "declaration", "kind": 1024, @@ -22076,22 +22076,22 @@ { "title": "Properties", "children": [ - 8773, - 8774, - 8775 + 8776, + 8777, + 8778 ] } ] }, { - "id": 9366, + "id": 9369, "name": "PackEntryMeta", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9367, + "id": 9370, "name": "crc32", "variant": "declaration", "kind": 1024, @@ -22104,7 +22104,7 @@ } }, { - "id": 9368, + "id": 9371, "name": "offset", "variant": "declaration", "kind": 1024, @@ -22121,21 +22121,21 @@ { "title": "Properties", "children": [ - 9367, - 9368 + 9370, + 9371 ] } ] }, { - "id": 9369, + "id": 9372, "name": "PackfileResult", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9370, + "id": 9373, "name": "data", "variant": "declaration", "kind": 1024, @@ -22154,7 +22154,7 @@ } }, { - "id": 9371, + "id": 9374, "name": "entries", "variant": "declaration", "kind": 1024, @@ -22168,7 +22168,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 9366, + "target": 9369, "name": "PackEntryMeta", "package": "@scolladon/tsgit" } @@ -22180,21 +22180,21 @@ { "title": "Properties", "children": [ - 9370, - 9371 + 9373, + 9374 ] } ] }, { - "id": 9273, + "id": 9276, "name": "PackHeader", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9275, + "id": 9278, "name": "objectCount", "variant": "declaration", "kind": 1024, @@ -22207,7 +22207,7 @@ } }, { - "id": 9274, + "id": 9277, "name": "version", "variant": "declaration", "kind": 1024, @@ -22224,21 +22224,21 @@ { "title": "Properties", "children": [ - 9275, - 9274 + 9278, + 9277 ] } ] }, { - "id": 9314, + "id": 9317, "name": "PackIndex", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9321, + "id": 9324, "name": "_bytes", "variant": "declaration", "kind": 1024, @@ -22257,7 +22257,7 @@ } }, { - "id": 9322, + "id": 9325, "name": "_view", "variant": "declaration", "kind": 1024, @@ -22276,7 +22276,7 @@ } }, { - "id": 9317, + "id": 9320, "name": "crc32TableOffset", "variant": "declaration", "kind": 1024, @@ -22289,7 +22289,7 @@ } }, { - "id": 9316, + "id": 9319, "name": "digestLength", "variant": "declaration", "kind": 1024, @@ -22319,7 +22319,7 @@ } }, { - "id": 9319, + "id": 9322, "name": "largeOffsetsTableOffset", "variant": "declaration", "kind": 1024, @@ -22332,7 +22332,7 @@ } }, { - "id": 9315, + "id": 9318, "name": "objectCount", "variant": "declaration", "kind": 1024, @@ -22345,7 +22345,7 @@ } }, { - "id": 9318, + "id": 9321, "name": "smallOffsetsTableOffset", "variant": "declaration", "kind": 1024, @@ -22358,7 +22358,7 @@ } }, { - "id": 9320, + "id": 9323, "name": "trailerOffset", "variant": "declaration", "kind": 1024, @@ -22375,20 +22375,20 @@ { "title": "Properties", "children": [ - 9321, - 9322, - 9317, - 9316, + 9324, + 9325, + 9320, 9319, - 9315, + 9322, 9318, - 9320 + 9321, + 9323 ] } ] }, { - "id": 9354, + "id": 9357, "name": "PackIndexEntries", "variant": "declaration", "kind": 256, @@ -22435,7 +22435,7 @@ }, "children": [ { - "id": 9355, + "id": 9358, "name": "count", "variant": "declaration", "kind": 1024, @@ -22448,7 +22448,7 @@ } }, { - "id": 9358, + "id": 9361, "name": "crcValues", "variant": "declaration", "kind": 1024, @@ -22467,7 +22467,7 @@ } }, { - "id": 9356, + "id": 9359, "name": "digestLength", "variant": "declaration", "kind": 1024, @@ -22480,7 +22480,7 @@ } }, { - "id": 9359, + "id": 9362, "name": "offsets", "variant": "declaration", "kind": 1024, @@ -22499,7 +22499,7 @@ } }, { - "id": 9357, + "id": 9360, "name": "oids", "variant": "declaration", "kind": 1024, @@ -22522,24 +22522,24 @@ { "title": "Properties", "children": [ - 9355, 9358, - 9356, + 9361, 9359, - 9357 + 9362, + 9360 ] } ] }, { - "id": 9389, + "id": 9392, "name": "PackRevIndex", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9395, + "id": 9398, "name": "_bytes", "variant": "declaration", "kind": 1024, @@ -22558,7 +22558,7 @@ } }, { - "id": 9396, + "id": 9399, "name": "_view", "variant": "declaration", "kind": 1024, @@ -22577,7 +22577,7 @@ } }, { - "id": 9392, + "id": 9395, "name": "digestLength", "variant": "declaration", "kind": 1024, @@ -22590,7 +22590,7 @@ } }, { - "id": 9391, + "id": 9394, "name": "hashId", "variant": "declaration", "kind": 1024, @@ -22612,7 +22612,7 @@ } }, { - "id": 9393, + "id": 9396, "name": "objectCount", "variant": "declaration", "kind": 1024, @@ -22625,7 +22625,7 @@ } }, { - "id": 9394, + "id": 9397, "name": "packChecksum", "variant": "declaration", "kind": 1024, @@ -22652,7 +22652,7 @@ } }, { - "id": 9390, + "id": 9393, "name": "version", "variant": "declaration", "kind": 1024, @@ -22669,26 +22669,26 @@ { "title": "Properties", "children": [ + 9398, + 9399, 9395, - 9396, - 9392, - 9391, - 9393, 9394, - 9390 + 9396, + 9397, + 9393 ] } ] }, { - "id": 9372, + "id": 9375, "name": "PackWriterBaseEntry", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9375, + "id": 9378, "name": "compressedData", "variant": "declaration", "kind": 1024, @@ -22707,7 +22707,7 @@ } }, { - "id": 9373, + "id": 9376, "name": "type", "variant": "declaration", "kind": 1024, @@ -22716,13 +22716,13 @@ }, "type": { "type": "reference", - "target": 9265, + "target": 9268, "name": "BasePackEntryType", "package": "@scolladon/tsgit" } }, { - "id": 9374, + "id": 9377, "name": "uncompressedSize", "variant": "declaration", "kind": 1024, @@ -22739,22 +22739,22 @@ { "title": "Properties", "children": [ - 9375, - 9373, - 9374 + 9378, + 9376, + 9377 ] } ] }, { - "id": 9376, + "id": 9379, "name": "PackWriterDeltaEntry", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9380, + "id": 9383, "name": "baseIndex", "variant": "declaration", "kind": 1024, @@ -22775,7 +22775,7 @@ } }, { - "id": 9379, + "id": 9382, "name": "compressedData", "variant": "declaration", "kind": 1024, @@ -22794,7 +22794,7 @@ } }, { - "id": 9377, + "id": 9380, "name": "type", "variant": "declaration", "kind": 1024, @@ -22807,7 +22807,7 @@ } }, { - "id": 9378, + "id": 9381, "name": "uncompressedSize", "variant": "declaration", "kind": 1024, @@ -22832,23 +22832,23 @@ { "title": "Properties", "children": [ + 9383, + 9382, 9380, - 9379, - 9377, - 9378 + 9381 ] } ] }, { - "id": 8532, + "id": 8535, "name": "ParseAdvertisedRefsOptions", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8533, + "id": 8536, "name": "servicePrologue", "variant": "declaration", "kind": 1024, @@ -22906,13 +22906,13 @@ { "title": "Properties", "children": [ - 8533 + 8536 ] } ] }, { - "id": 7381, + "id": 7384, "name": "ParsedConfigKey", "variant": "declaration", "kind": 256, @@ -22943,7 +22943,7 @@ }, "children": [ { - "id": 7384, + "id": 7387, "name": "name", "variant": "declaration", "kind": 1024, @@ -22956,7 +22956,7 @@ } }, { - "id": 7382, + "id": 7385, "name": "section", "variant": "declaration", "kind": 1024, @@ -22969,7 +22969,7 @@ } }, { - "id": 7383, + "id": 7386, "name": "subsection", "variant": "declaration", "kind": 1024, @@ -22995,15 +22995,15 @@ { "title": "Properties", "children": [ - 7384, - 7382, - 7383 + 7387, + 7385, + 7386 ] } ] }, { - "id": 9008, + "id": 9011, "name": "ParsedSparseCheckout", "variant": "declaration", "kind": 256, @@ -23018,7 +23018,7 @@ }, "children": [ { - "id": 9010, + "id": 9013, "name": "degraded", "variant": "declaration", "kind": 1024, @@ -23039,7 +23039,7 @@ } }, { - "id": 9009, + "id": 9012, "name": "spec", "variant": "declaration", "kind": 1024, @@ -23048,7 +23048,7 @@ }, "type": { "type": "reference", - "target": 9020, + "target": 9023, "name": "SparseSpec", "package": "@scolladon/tsgit" } @@ -23058,21 +23058,21 @@ { "title": "Properties", "children": [ - 9010, - 9009 + 9013, + 9012 ] } ] }, { - "id": 8752, + "id": 8755, "name": "PeelResult", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8754, + "id": 8757, "name": "id", "variant": "declaration", "kind": 1024, @@ -23087,7 +23087,7 @@ } }, { - "id": 8753, + "id": 8756, "name": "type", "variant": "declaration", "kind": 1024, @@ -23106,21 +23106,21 @@ { "title": "Properties", "children": [ - 8754, - 8753 + 8757, + 8756 ] } ] }, { - "id": 8466, + "id": 8469, "name": "PushCertPayloadInput", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8469, + "id": 8472, "name": "nonce", "variant": "declaration", "kind": 1024, @@ -23133,7 +23133,7 @@ } }, { - "id": 8468, + "id": 8471, "name": "pushee", "variant": "declaration", "kind": 1024, @@ -23146,7 +23146,7 @@ } }, { - "id": 8467, + "id": 8470, "name": "pusher", "variant": "declaration", "kind": 1024, @@ -23159,7 +23159,7 @@ } }, { - "id": 8470, + "id": 8473, "name": "updates", "variant": "declaration", "kind": 1024, @@ -23173,7 +23173,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8483, + "target": 8486, "name": "RefUpdate", "package": "@scolladon/tsgit" } @@ -23185,23 +23185,23 @@ { "title": "Properties", "children": [ - 8469, - 8468, - 8467, - 8470 + 8472, + 8471, + 8470, + 8473 ] } ] }, { - "id": 8471, + "id": 8474, "name": "ReceivePackRequest", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8473, + "id": 8476, "name": "capabilities", "variant": "declaration", "kind": 1024, @@ -23221,7 +23221,7 @@ } }, { - "id": 8474, + "id": 8477, "name": "packfile", "variant": "declaration", "kind": 1024, @@ -23240,7 +23240,7 @@ } }, { - "id": 8472, + "id": 8475, "name": "updates", "variant": "declaration", "kind": 1024, @@ -23254,7 +23254,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8483, + "target": 8486, "name": "RefUpdate", "package": "@scolladon/tsgit" } @@ -23266,22 +23266,22 @@ { "title": "Properties", "children": [ - 8473, - 8474, - 8472 + 8476, + 8477, + 8475 ] } ] }, { - "id": 8475, + "id": 8478, "name": "ReceivePackResponse", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8478, + "id": 8481, "name": "refUpdates", "variant": "declaration", "kind": 1024, @@ -23295,7 +23295,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8479, + "target": 8482, "name": "RefStatus", "package": "@scolladon/tsgit" } @@ -23303,7 +23303,7 @@ } }, { - "id": 8477, + "id": 8480, "name": "unpackError", "variant": "declaration", "kind": 1024, @@ -23317,7 +23317,7 @@ } }, { - "id": 8476, + "id": 8479, "name": "unpackOk", "variant": "declaration", "kind": 1024, @@ -23334,22 +23334,22 @@ { "title": "Properties", "children": [ - 8478, - 8477, - 8476 + 8481, + 8480, + 8479 ] } ] }, { - "id": 9276, + "id": 9279, "name": "RefPackEntryHeader", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 9280, + "id": 9283, "name": "baseId", "variant": "declaration", "kind": 1024, @@ -23364,7 +23364,7 @@ } }, { - "id": 9279, + "id": 9282, "name": "dataOffset", "variant": "declaration", "kind": 1024, @@ -23377,7 +23377,7 @@ } }, { - "id": 9278, + "id": 9281, "name": "size", "variant": "declaration", "kind": 1024, @@ -23390,7 +23390,7 @@ } }, { - "id": 9277, + "id": 9280, "name": "type", "variant": "declaration", "kind": 1024, @@ -23407,23 +23407,23 @@ { "title": "Properties", "children": [ - 9280, - 9279, - 9278, - 9277 + 9283, + 9282, + 9281, + 9280 ] } ] }, { - "id": 8479, + "id": 8482, "name": "RefStatus", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8481, + "id": 8484, "name": "accepted", "variant": "declaration", "kind": 1024, @@ -23436,7 +23436,7 @@ } }, { - "id": 8480, + "id": 8483, "name": "name", "variant": "declaration", "kind": 1024, @@ -23449,7 +23449,7 @@ } }, { - "id": 8482, + "id": 8485, "name": "reason", "variant": "declaration", "kind": 1024, @@ -23467,22 +23467,22 @@ { "title": "Properties", "children": [ - 8481, - 8480, - 8482 + 8484, + 8483, + 8485 ] } ] }, { - "id": 8821, + "id": 8824, "name": "Reftable", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8824, + "id": 8827, "name": "_bytes", "variant": "declaration", "kind": 1024, @@ -23501,7 +23501,7 @@ } }, { - "id": 8825, + "id": 8828, "name": "_view", "variant": "declaration", "kind": 1024, @@ -23520,7 +23520,7 @@ } }, { - "id": 8823, + "id": 8826, "name": "footer", "variant": "declaration", "kind": 1024, @@ -23529,13 +23529,13 @@ }, "type": { "type": "reference", - "target": 8826, + "target": 8829, "name": "ReftableFooter", "package": "@scolladon/tsgit" } }, { - "id": 8822, + "id": 8825, "name": "header", "variant": "declaration", "kind": 1024, @@ -23544,7 +23544,7 @@ }, "type": { "type": "reference", - "target": 8833, + "target": 8836, "name": "ReftableHeader", "package": "@scolladon/tsgit" } @@ -23554,30 +23554,30 @@ { "title": "Properties", "children": [ - 8824, - 8825, - 8823, - 8822 + 8827, + 8828, + 8826, + 8825 ] } ], "extendedBy": [ { "type": "reference", - "target": 8859, + "target": 8862, "name": "LoadedReftable" } ] }, { - "id": 8826, + "id": 8829, "name": "ReftableFooter", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8832, + "id": 8835, "name": "logIndexPosition", "variant": "declaration", "kind": 1024, @@ -23590,7 +23590,7 @@ } }, { - "id": 8831, + "id": 8834, "name": "logPosition", "variant": "declaration", "kind": 1024, @@ -23603,7 +23603,7 @@ } }, { - "id": 8829, + "id": 8832, "name": "objIdLength", "variant": "declaration", "kind": 1024, @@ -23616,7 +23616,7 @@ } }, { - "id": 8830, + "id": 8833, "name": "objIndexPosition", "variant": "declaration", "kind": 1024, @@ -23629,7 +23629,7 @@ } }, { - "id": 8828, + "id": 8831, "name": "objPosition", "variant": "declaration", "kind": 1024, @@ -23642,7 +23642,7 @@ } }, { - "id": 8827, + "id": 8830, "name": "refIndexPosition", "variant": "declaration", "kind": 1024, @@ -23659,25 +23659,25 @@ { "title": "Properties", "children": [ + 8835, + 8834, 8832, + 8833, 8831, - 8829, - 8830, - 8828, - 8827 + 8830 ] } ] }, { - "id": 8833, + "id": 8836, "name": "ReftableHeader", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8835, + "id": 8838, "name": "blockSize", "variant": "declaration", "kind": 1024, @@ -23690,7 +23690,7 @@ } }, { - "id": 8840, + "id": 8843, "name": "digestLength", "variant": "declaration", "kind": 1024, @@ -23712,7 +23712,7 @@ } }, { - "id": 8838, + "id": 8841, "name": "hashId", "variant": "declaration", "kind": 1024, @@ -23734,7 +23734,7 @@ } }, { - "id": 8839, + "id": 8842, "name": "headerLength", "variant": "declaration", "kind": 1024, @@ -23756,7 +23756,7 @@ } }, { - "id": 8837, + "id": 8840, "name": "maxUpdateIndex", "variant": "declaration", "kind": 1024, @@ -23769,7 +23769,7 @@ } }, { - "id": 8836, + "id": 8839, "name": "minUpdateIndex", "variant": "declaration", "kind": 1024, @@ -23782,7 +23782,7 @@ } }, { - "id": 8834, + "id": 8837, "name": "version", "variant": "declaration", "kind": 1024, @@ -23808,26 +23808,26 @@ { "title": "Properties", "children": [ - 8835, - 8840, 8838, + 8843, + 8841, + 8842, + 8840, 8839, - 8837, - 8836, - 8834 + 8837 ] } ] }, { - "id": 8865, + "id": 8868, "name": "ReftableLogRecord", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8868, + "id": 8871, "name": "entry", "variant": "declaration", "kind": 1024, @@ -23840,14 +23840,14 @@ { "type": "reflection", "declaration": { - "id": 8869, + "id": 8872, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8870, + "id": 8873, "name": "kind", "variant": "declaration", "kind": 1024, @@ -23864,7 +23864,7 @@ { "title": "Properties", "children": [ - 8870 + 8873 ] } ] @@ -23876,14 +23876,14 @@ { "type": "reflection", "declaration": { - "id": 8871, + "id": 8874, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8872, + "id": 8875, "name": "kind", "variant": "declaration", "kind": 1024, @@ -23900,7 +23900,7 @@ { "title": "Properties", "children": [ - 8872 + 8875 ] } ] @@ -23918,7 +23918,7 @@ } }, { - "id": 8866, + "id": 8869, "name": "name", "variant": "declaration", "kind": 1024, @@ -23933,7 +23933,7 @@ } }, { - "id": 8867, + "id": 8870, "name": "updateIndex", "variant": "declaration", "kind": 1024, @@ -23950,22 +23950,22 @@ { "title": "Properties", "children": [ - 8868, - 8866, - 8867 + 8871, + 8869, + 8870 ] } ] }, { - "id": 8785, + "id": 8788, "name": "ReftableRefRecord", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8786, + "id": 8789, "name": "name", "variant": "declaration", "kind": 1024, @@ -23980,7 +23980,7 @@ } }, { - "id": 8787, + "id": 8790, "name": "updateIndex", "variant": "declaration", "kind": 1024, @@ -23993,7 +23993,7 @@ } }, { - "id": 8788, + "id": 8791, "name": "value", "variant": "declaration", "kind": 1024, @@ -24002,7 +24002,7 @@ }, "type": { "type": "reference", - "target": 8789, + "target": 8792, "name": "ReftableRefValue", "package": "@scolladon/tsgit" } @@ -24012,22 +24012,22 @@ { "title": "Properties", "children": [ - 8786, - 8787, - 8788 + 8789, + 8790, + 8791 ] } ] }, { - "id": 8882, + "id": 8885, "name": "ReftableStack", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8884, + "id": 8887, "name": "maxUpdateIndex", "variant": "declaration", "kind": 1024, @@ -24040,7 +24040,7 @@ } }, { - "id": 8883, + "id": 8886, "name": "tables", "variant": "declaration", "kind": 1024, @@ -24054,7 +24054,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8859, + "target": 8862, "name": "LoadedReftable", "package": "@scolladon/tsgit" } @@ -24062,14 +24062,14 @@ } }, { - "id": 8890, + "id": 8893, "name": "entries", "variant": "declaration", "kind": 2048, "flags": {}, "signatures": [ { - "id": 8891, + "id": 8894, "name": "entries", "variant": "signature", "kind": 4096, @@ -24116,7 +24116,7 @@ "typeArguments": [ { "type": "reference", - "target": 8785, + "target": 8788, "name": "ReftableRefRecord", "package": "@scolladon/tsgit" } @@ -24128,21 +24128,21 @@ ] }, { - "id": 8892, + "id": 8895, "name": "logs", "variant": "declaration", "kind": 2048, "flags": {}, "signatures": [ { - "id": 8893, + "id": 8896, "name": "logs", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8894, + "id": 8897, "name": "name", "variant": "param", "kind": 32768, @@ -24165,7 +24165,7 @@ "typeArguments": [ { "type": "reference", - "target": 8865, + "target": 8868, "name": "ReftableLogRecord", "package": "@scolladon/tsgit" } @@ -24177,21 +24177,21 @@ ] }, { - "id": 8885, + "id": 8888, "name": "lookup", "variant": "declaration", "kind": 2048, "flags": {}, "signatures": [ { - "id": 8886, + "id": 8889, "name": "lookup", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8887, + "id": 8890, "name": "name", "variant": "param", "kind": 32768, @@ -24209,7 +24209,7 @@ "types": [ { "type": "reference", - "target": 8785, + "target": 8788, "name": "ReftableRefRecord", "package": "@scolladon/tsgit" }, @@ -24223,14 +24223,14 @@ ] }, { - "id": 8888, + "id": 8891, "name": "names", "variant": "declaration", "kind": 2048, "flags": {}, "signatures": [ { - "id": 8889, + "id": 8892, "name": "names", "variant": "signature", "kind": 4096, @@ -24261,30 +24261,30 @@ { "title": "Properties", "children": [ - 8884, - 8883 + 8887, + 8886 ] }, { "title": "Methods", "children": [ - 8890, - 8892, - 8885, - 8888 + 8893, + 8895, + 8888, + 8891 ] } ] }, { - "id": 8898, + "id": 8901, "name": "ReftableWriteOptions", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8900, + "id": 8903, "name": "blockSize", "variant": "declaration", "kind": 1024, @@ -24297,7 +24297,7 @@ } }, { - "id": 8899, + "id": 8902, "name": "hashId", "variant": "declaration", "kind": 1024, @@ -24319,7 +24319,7 @@ } }, { - "id": 8902, + "id": 8905, "name": "indexObjects", "variant": "declaration", "kind": 1024, @@ -24332,7 +24332,7 @@ } }, { - "id": 8904, + "id": 8907, "name": "maxUpdateIndex", "variant": "declaration", "kind": 1024, @@ -24345,7 +24345,7 @@ } }, { - "id": 8903, + "id": 8906, "name": "minUpdateIndex", "variant": "declaration", "kind": 1024, @@ -24358,7 +24358,7 @@ } }, { - "id": 8901, + "id": 8904, "name": "restartInterval", "variant": "declaration", "kind": 1024, @@ -24375,25 +24375,25 @@ { "title": "Properties", "children": [ - 8900, - 8899, - 8902, - 8904, 8903, - 8901 + 8902, + 8905, + 8907, + 8906, + 8904 ] } ] }, { - "id": 8483, + "id": 8486, "name": "RefUpdate", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8484, + "id": 8487, "name": "name", "variant": "declaration", "kind": 1024, @@ -24406,7 +24406,7 @@ } }, { - "id": 8486, + "id": 8489, "name": "newId", "variant": "declaration", "kind": 1024, @@ -24421,7 +24421,7 @@ } }, { - "id": 8485, + "id": 8488, "name": "oldId", "variant": "declaration", "kind": 1024, @@ -24440,22 +24440,22 @@ { "title": "Properties", "children": [ - 8484, - 8486, - 8485 + 8487, + 8489, + 8488 ] } ] }, { - "id": 8535, + "id": 8538, "name": "ShallowUpdates", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8536, + "id": 8539, "name": "shallow", "variant": "declaration", "kind": 1024, @@ -24477,7 +24477,7 @@ } }, { - "id": 8537, + "id": 8540, "name": "unshallow", "variant": "declaration", "kind": 1024, @@ -24503,21 +24503,21 @@ { "title": "Properties", "children": [ - 8536, - 8537 + 8539, + 8540 ] } ] }, { - "id": 8511, + "id": 8514, "name": "SideBandOptions", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8516, + "id": 8519, "name": "onError", "variant": "declaration", "kind": 1024, @@ -24528,21 +24528,21 @@ "type": { "type": "reflection", "declaration": { - "id": 8517, + "id": 8520, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "signatures": [ { - "id": 8518, + "id": 8521, "name": "__type", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8519, + "id": 8522, "name": "text", "variant": "param", "kind": 32768, @@ -24563,7 +24563,7 @@ } }, { - "id": 8512, + "id": 8515, "name": "onProgress", "variant": "declaration", "kind": 1024, @@ -24574,21 +24574,21 @@ "type": { "type": "reflection", "declaration": { - "id": 8513, + "id": 8516, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "signatures": [ { - "id": 8514, + "id": 8517, "name": "__type", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8515, + "id": 8518, "name": "text", "variant": "param", "kind": 32768, @@ -24613,21 +24613,21 @@ { "title": "Properties", "children": [ - 8516, - 8512 + 8519, + 8515 ] } ] }, { - "id": 8487, + "id": 8490, "name": "SignedReceivePackRequest", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8490, + "id": 8493, "name": "armor", "variant": "declaration", "kind": 1024, @@ -24640,7 +24640,7 @@ } }, { - "id": 8489, + "id": 8492, "name": "capabilities", "variant": "declaration", "kind": 1024, @@ -24660,7 +24660,7 @@ } }, { - "id": 8493, + "id": 8496, "name": "nonce", "variant": "declaration", "kind": 1024, @@ -24673,7 +24673,7 @@ } }, { - "id": 8494, + "id": 8497, "name": "packfile", "variant": "declaration", "kind": 1024, @@ -24692,7 +24692,7 @@ } }, { - "id": 8492, + "id": 8495, "name": "pushee", "variant": "declaration", "kind": 1024, @@ -24705,7 +24705,7 @@ } }, { - "id": 8491, + "id": 8494, "name": "pusher", "variant": "declaration", "kind": 1024, @@ -24718,7 +24718,7 @@ } }, { - "id": 8488, + "id": 8491, "name": "updates", "variant": "declaration", "kind": 1024, @@ -24732,7 +24732,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8483, + "target": 8486, "name": "RefUpdate", "package": "@scolladon/tsgit" } @@ -24744,19 +24744,19 @@ { "title": "Properties", "children": [ - 8490, - 8489, 8493, - 8494, 8492, - 8491, - 8488 + 8496, + 8497, + 8495, + 8494, + 8491 ] } ] }, { - "id": 9360, + "id": 9363, "name": "SortedPackIndex", "variant": "declaration", "kind": 256, @@ -24787,7 +24787,7 @@ }, "children": [ { - "id": 9361, + "id": 9364, "name": "entries", "variant": "declaration", "kind": 1024, @@ -24796,13 +24796,13 @@ }, "type": { "type": "reference", - "target": 9354, + "target": 9357, "name": "PackIndexEntries", "package": "@scolladon/tsgit" } }, { - "id": 9362, + "id": 9365, "name": "order", "variant": "declaration", "kind": 1024, @@ -24825,14 +24825,14 @@ { "title": "Properties", "children": [ - 9361, - 9362 + 9364, + 9365 ] } ] }, { - "id": 9016, + "id": 9019, "name": "SparseRule", "variant": "declaration", "kind": 256, @@ -24847,7 +24847,7 @@ }, "children": [ { - "id": 9019, + "id": 9022, "name": "matcher", "variant": "declaration", "kind": 1024, @@ -24882,7 +24882,7 @@ } }, { - "id": 9018, + "id": 9021, "name": "negated", "variant": "declaration", "kind": 1024, @@ -24911,7 +24911,7 @@ } }, { - "id": 9017, + "id": 9020, "name": "source", "variant": "declaration", "kind": 1024, @@ -24944,22 +24944,22 @@ { "title": "Properties", "children": [ - 9019, - 9018, - 9017 + 9022, + 9021, + 9020 ] } ] }, { - "id": 8776, + "id": 8779, "name": "SymbolicRef", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8778, + "id": 8781, "name": "target", "variant": "declaration", "kind": 1024, @@ -24974,7 +24974,7 @@ } }, { - "id": 8777, + "id": 8780, "name": "type", "variant": "declaration", "kind": 1024, @@ -24991,21 +24991,21 @@ { "title": "Properties", "children": [ - 8778, - 8777 + 8781, + 8780 ] } ] }, { - "id": 7351, + "id": 7354, "name": "TarOptions", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 7356, + "id": 7359, "name": "gname", "variant": "declaration", "kind": 1024, @@ -25035,7 +25035,7 @@ } }, { - "id": 7353, + "id": 7356, "name": "mtime", "variant": "declaration", "kind": 1024, @@ -25065,7 +25065,7 @@ } }, { - "id": 7352, + "id": 7355, "name": "prefix", "variant": "declaration", "kind": 1024, @@ -25103,7 +25103,7 @@ } }, { - "id": 7354, + "id": 7357, "name": "umask", "variant": "declaration", "kind": 1024, @@ -25133,7 +25133,7 @@ } }, { - "id": 7355, + "id": 7358, "name": "uname", "variant": "declaration", "kind": 1024, @@ -25167,17 +25167,17 @@ { "title": "Properties", "children": [ + 7359, 7356, - 7353, - 7352, - 7354, - 7355 + 7355, + 7357, + 7358 ] } ] }, { - "id": 8063, + "id": 8066, "name": "TokenizedIgnoreLine", "variant": "declaration", "kind": 256, @@ -25200,7 +25200,7 @@ }, "children": [ { - "id": 8065, + "id": 8068, "name": "anchored", "variant": "declaration", "kind": 1024, @@ -25229,7 +25229,7 @@ } }, { - "id": 8067, + "id": 8070, "name": "cleanPattern", "variant": "declaration", "kind": 1024, @@ -25266,7 +25266,7 @@ } }, { - "id": 8066, + "id": 8069, "name": "directoryOnly", "variant": "declaration", "kind": 1024, @@ -25295,7 +25295,7 @@ } }, { - "id": 8064, + "id": 8067, "name": "negated", "variant": "declaration", "kind": 1024, @@ -25328,23 +25328,23 @@ { "title": "Properties", "children": [ - 8065, - 8067, - 8066, - 8064 + 8068, + 8070, + 8069, + 8067 ] } ] }, { - "id": 8174, + "id": 8177, "name": "TreeMergeResult", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8177, + "id": 8180, "name": "cleanMerge", "variant": "declaration", "kind": 1024, @@ -25357,7 +25357,7 @@ } }, { - "id": 8176, + "id": 8179, "name": "conflicts", "variant": "declaration", "kind": 1024, @@ -25371,7 +25371,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8136, + "target": 8139, "name": "MergeConflict", "package": "@scolladon/tsgit" } @@ -25379,7 +25379,7 @@ } }, { - "id": 8175, + "id": 8178, "name": "outcomes", "variant": "declaration", "kind": 1024, @@ -25393,7 +25393,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8152, + "target": 8155, "name": "MergeOutcome", "package": "@scolladon/tsgit" } @@ -25405,22 +25405,22 @@ { "title": "Properties", "children": [ - 8177, - 8176, - 8175 + 8180, + 8179, + 8178 ] } ] }, { - "id": 8538, + "id": 8541, "name": "UploadPackResponse", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8539, + "id": 8542, "name": "acks", "variant": "declaration", "kind": 1024, @@ -25434,7 +25434,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8520, + "target": 8523, "name": "AckEntry", "package": "@scolladon/tsgit" } @@ -25442,7 +25442,7 @@ } }, { - "id": 8540, + "id": 8543, "name": "nak", "variant": "declaration", "kind": 1024, @@ -25455,7 +25455,7 @@ } }, { - "id": 8541, + "id": 8544, "name": "packBody", "variant": "declaration", "kind": 1024, @@ -25498,7 +25498,7 @@ } }, { - "id": 8542, + "id": 8545, "name": "shallow", "variant": "declaration", "kind": 1024, @@ -25536,7 +25536,7 @@ } }, { - "id": 8543, + "id": 8546, "name": "unshallow", "variant": "declaration", "kind": 1024, @@ -25578,24 +25578,24 @@ { "title": "Properties", "children": [ - 8539, - 8540, - 8541, 8542, - 8543 + 8543, + 8544, + 8545, + 8546 ] } ] }, { - "id": 8622, + "id": 8625, "name": "V2FetchRequestOptions", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8625, + "id": 8628, "name": "args", "variant": "declaration", "kind": 1024, @@ -25616,7 +25616,7 @@ } }, { - "id": 8626, + "id": 8629, "name": "done", "variant": "declaration", "kind": 1024, @@ -25630,7 +25630,7 @@ } }, { - "id": 8624, + "id": 8627, "name": "haves", "variant": "declaration", "kind": 1024, @@ -25652,7 +25652,7 @@ } }, { - "id": 8627, + "id": 8630, "name": "objectFormat", "variant": "declaration", "kind": 1024, @@ -25674,7 +25674,7 @@ } }, { - "id": 8623, + "id": 8626, "name": "wants", "variant": "declaration", "kind": 1024, @@ -25700,24 +25700,24 @@ { "title": "Properties", "children": [ - 8625, - 8626, - 8624, + 8628, + 8629, 8627, - 8623 + 8630, + 8626 ] } ] }, { - "id": 8628, + "id": 8631, "name": "V2FetchResponse", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8629, + "id": 8632, "name": "acks", "variant": "declaration", "kind": 1024, @@ -25731,7 +25731,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8520, + "target": 8523, "name": "AckEntry", "package": "@scolladon/tsgit" } @@ -25739,7 +25739,7 @@ } }, { - "id": 8630, + "id": 8633, "name": "nak", "variant": "declaration", "kind": 1024, @@ -25752,7 +25752,7 @@ } }, { - "id": 8632, + "id": 8635, "name": "packBody", "variant": "declaration", "kind": 1024, @@ -25795,7 +25795,7 @@ } }, { - "id": 8631, + "id": 8634, "name": "ready", "variant": "declaration", "kind": 1024, @@ -25808,7 +25808,7 @@ } }, { - "id": 8633, + "id": 8636, "name": "shallow", "variant": "declaration", "kind": 1024, @@ -25830,7 +25830,7 @@ } }, { - "id": 8634, + "id": 8637, "name": "unshallow", "variant": "declaration", "kind": 1024, @@ -25852,7 +25852,7 @@ } }, { - "id": 8635, + "id": 8638, "name": "wantedRefs", "variant": "declaration", "kind": 1024, @@ -25866,7 +25866,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8636, + "target": 8639, "name": "WantedRef", "package": "@scolladon/tsgit" } @@ -25878,19 +25878,19 @@ { "title": "Properties", "children": [ - 8629, - 8630, 8632, - 8631, 8633, + 8635, 8634, - 8635 + 8636, + 8637, + 8638 ] } ] }, { - "id": 8031, + "id": 8034, "name": "VerboseLevelMatch", "variant": "declaration", "kind": 256, @@ -25937,7 +25937,7 @@ }, "children": [ { - "id": 8033, + "id": 8036, "name": "ruleIndex", "variant": "declaration", "kind": 1024, @@ -25951,7 +25951,7 @@ } }, { - "id": 8032, + "id": 8035, "name": "verdict", "variant": "declaration", "kind": 1024, @@ -25960,7 +25960,7 @@ }, "type": { "type": "reference", - "target": 8020, + "target": 8023, "name": "MatchResult", "package": "@scolladon/tsgit" } @@ -25970,14 +25970,14 @@ { "title": "Properties", "children": [ - 8033, - 8032 + 8036, + 8035 ] } ] }, { - "id": 8048, + "id": 8051, "name": "VerboseMatch", "variant": "declaration", "kind": 256, @@ -26032,7 +26032,7 @@ }, "children": [ { - "id": 8050, + "id": 8053, "name": "level", "variant": "declaration", "kind": 1024, @@ -26042,13 +26042,13 @@ }, "type": { "type": "reference", - "target": 8034, + "target": 8037, "name": "IgnoreLevel", "package": "@scolladon/tsgit" } }, { - "id": 8051, + "id": 8054, "name": "ruleIndex", "variant": "declaration", "kind": 1024, @@ -26062,7 +26062,7 @@ } }, { - "id": 8049, + "id": 8052, "name": "verdict", "variant": "declaration", "kind": 1024, @@ -26071,7 +26071,7 @@ }, "type": { "type": "reference", - "target": 8020, + "target": 8023, "name": "MatchResult", "package": "@scolladon/tsgit" } @@ -26081,22 +26081,22 @@ { "title": "Properties", "children": [ - 8050, - 8051, - 8049 + 8053, + 8054, + 8052 ] } ] }, { - "id": 8636, + "id": 8639, "name": "WantedRef", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8637, + "id": 8640, "name": "id", "variant": "declaration", "kind": 1024, @@ -26111,7 +26111,7 @@ } }, { - "id": 8638, + "id": 8641, "name": "name", "variant": "declaration", "kind": 1024, @@ -26128,21 +26128,21 @@ { "title": "Properties", "children": [ - 8637, - 8638 + 8640, + 8641 ] } ] }, { - "id": 8544, + "id": 8547, "name": "WantHaveRequest", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 8547, + "id": 8550, "name": "capabilities", "variant": "declaration", "kind": 1024, @@ -26162,7 +26162,7 @@ } }, { - "id": 8548, + "id": 8551, "name": "depth", "variant": "declaration", "kind": 1024, @@ -26176,7 +26176,7 @@ } }, { - "id": 8550, + "id": 8553, "name": "done", "variant": "declaration", "kind": 1024, @@ -26190,7 +26190,7 @@ } }, { - "id": 8549, + "id": 8552, "name": "filter", "variant": "declaration", "kind": 1024, @@ -26236,7 +26236,7 @@ } }, { - "id": 8546, + "id": 8549, "name": "haves", "variant": "declaration", "kind": 1024, @@ -26258,7 +26258,7 @@ } }, { - "id": 8545, + "id": 8548, "name": "wants", "variant": "declaration", "kind": 1024, @@ -26284,25 +26284,25 @@ { "title": "Properties", "children": [ - 8547, - 8548, 8550, + 8551, + 8553, + 8552, 8549, - 8546, - 8545 + 8548 ] } ] }, { - "id": 7363, + "id": 7366, "name": "ZipDeps", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 7364, + "id": 7367, "name": "deflateRaw", "variant": "declaration", "kind": 1024, @@ -26328,21 +26328,21 @@ "type": { "type": "reflection", "declaration": { - "id": 7365, + "id": 7368, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "signatures": [ { - "id": 7366, + "id": 7369, "name": "__type", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7367, + "id": 7370, "name": "data", "variant": "param", "kind": 32768, @@ -26359,7 +26359,7 @@ } }, { - "id": 7368, + "id": 7371, "name": "level", "variant": "param", "kind": 32768, @@ -26416,20 +26416,20 @@ { "title": "Properties", "children": [ - 7364 + 7367 ] } ] }, { - "id": 7369, + "id": 7372, "name": "ZipOptions", "variant": "declaration", "kind": 256, "flags": {}, "children": [ { - "id": 7373, + "id": 7376, "name": "level", "variant": "declaration", "kind": 1024, @@ -26451,7 +26451,7 @@ } }, { - "id": 7371, + "id": 7374, "name": "mtime", "variant": "declaration", "kind": 1024, @@ -26481,7 +26481,7 @@ } }, { - "id": 7370, + "id": 7373, "name": "prefix", "variant": "declaration", "kind": 1024, @@ -26519,7 +26519,7 @@ } }, { - "id": 7372, + "id": 7375, "name": "tzOffsetMinutes", "variant": "declaration", "kind": 1024, @@ -26561,16 +26561,16 @@ { "title": "Properties", "children": [ + 7376, + 7374, 7373, - 7371, - 7370, - 7372 + 7375 ] } ] }, { - "id": 8523, + "id": 8526, "name": "AckStatus", "variant": "declaration", "kind": 2097152, @@ -27420,25 +27420,12 @@ }, "type": { "type": "literal", - "value": "SHALLOW_FILE_MALFORMED" - } - }, - { - "id": 7302, - "name": "lineNumber", - "variant": "declaration", - "kind": 1024, - "flags": { - "isReadonly": true - }, - "type": { - "type": "intrinsic", - "name": "number" + "value": "PACK_ARTIFACT_MISMATCH" } }, { "id": 7301, - "name": "reason", + "name": "path", "variant": "declaration", "kind": 1024, "flags": { @@ -27455,7 +27442,6 @@ "title": "Properties", "children": [ 7300, - 7302, 7301 ] } @@ -27465,14 +27451,14 @@ { "type": "reflection", "declaration": { - "id": 7303, + "id": 7302, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7304, + "id": 7303, "name": "code", "variant": "declaration", "kind": 1024, @@ -27481,11 +27467,24 @@ }, "type": { "type": "literal", - "value": "SNAPSHOT_REQUIRED" + "value": "SHALLOW_FILE_MALFORMED" } }, { "id": 7305, + "name": "lineNumber", + "variant": "declaration", + "kind": 1024, + "flags": { + "isReadonly": true + }, + "type": { + "type": "intrinsic", + "name": "number" + } + }, + { + "id": 7304, "name": "reason", "variant": "declaration", "kind": 1024, @@ -27502,8 +27501,9 @@ { "title": "Properties", "children": [ - 7304, - 7305 + 7303, + 7305, + 7304 ] } ] @@ -27528,11 +27528,58 @@ }, "type": { "type": "literal", - "value": "WORKDIR_RACE" + "value": "SNAPSHOT_REQUIRED" } }, + { + "id": 7308, + "name": "reason", + "variant": "declaration", + "kind": 1024, + "flags": { + "isReadonly": true + }, + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "children": [ + 7307, + 7308 + ] + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 7309, + "name": "__type", + "variant": "declaration", + "kind": 65536, + "flags": {}, + "children": [ { "id": 7310, + "name": "code", + "variant": "declaration", + "kind": 1024, + "flags": { + "isReadonly": true + }, + "type": { + "type": "literal", + "value": "WORKDIR_RACE" + } + }, + { + "id": 7313, "name": "current", "variant": "declaration", "kind": 1024, @@ -27547,7 +27594,7 @@ } }, { - "id": 7309, + "id": 7312, "name": "observed", "variant": "declaration", "kind": 1024, @@ -27562,7 +27609,7 @@ } }, { - "id": 7308, + "id": 7311, "name": "path", "variant": "declaration", "kind": 1024, @@ -27579,10 +27626,10 @@ { "title": "Properties", "children": [ - 7307, 7310, - 7309, - 7308 + 7313, + 7312, + 7311 ] } ] @@ -27591,14 +27638,14 @@ { "type": "reflection", "declaration": { - "id": 7311, + "id": 7314, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7312, + "id": 7315, "name": "code", "variant": "declaration", "kind": 1024, @@ -27611,7 +27658,7 @@ } }, { - "id": 7314, + "id": 7317, "name": "current", "variant": "declaration", "kind": 1024, @@ -27624,7 +27671,7 @@ } }, { - "id": 7313, + "id": 7316, "name": "previous", "variant": "declaration", "kind": 1024, @@ -27641,9 +27688,9 @@ { "title": "Properties", "children": [ - 7312, - 7314, - 7313 + 7315, + 7317, + 7316 ] } ] @@ -27653,7 +27700,7 @@ } }, { - "id": 9265, + "id": 9268, "name": "BasePackEntryType", "variant": "declaration", "kind": 2097152, @@ -27665,7 +27712,7 @@ "type": "query", "queryType": { "type": "reference", - "target": 9293, + "target": 9296, "name": "PACK_ENTRY_TYPE.COMMIT", "package": "@scolladon/tsgit", "qualifiedName": "__object.COMMIT" @@ -27675,7 +27722,7 @@ "type": "query", "queryType": { "type": "reference", - "target": 9294, + "target": 9297, "name": "PACK_ENTRY_TYPE.TREE", "package": "@scolladon/tsgit", "qualifiedName": "__object.TREE" @@ -27685,7 +27732,7 @@ "type": "query", "queryType": { "type": "reference", - "target": 9295, + "target": 9298, "name": "PACK_ENTRY_TYPE.BLOB", "package": "@scolladon/tsgit", "qualifiedName": "__object.BLOB" @@ -27695,7 +27742,7 @@ "type": "query", "queryType": { "type": "reference", - "target": 9296, + "target": 9299, "name": "PACK_ENTRY_TYPE.TAG", "package": "@scolladon/tsgit", "qualifiedName": "__object.TAG" @@ -27705,7 +27752,7 @@ } }, { - "id": 9099, + "id": 9102, "name": "BitmapCheck", "variant": "declaration", "kind": 2097152, @@ -27765,7 +27812,7 @@ } }, { - "id": 7388, + "id": 7391, "name": "CommandError", "variant": "declaration", "kind": 2097152, @@ -27776,14 +27823,14 @@ { "type": "reflection", "declaration": { - "id": 7389, + "id": 7392, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7390, + "id": 7393, "name": "code", "variant": "declaration", "kind": 1024, @@ -27796,7 +27843,7 @@ } }, { - "id": 7391, + "id": 7394, "name": "localChanges", "variant": "declaration", "kind": 1024, @@ -27823,7 +27870,7 @@ } }, { - "id": 7392, + "id": 7395, "name": "untracked", "variant": "declaration", "kind": 1024, @@ -27854,9 +27901,9 @@ { "title": "Properties", "children": [ - 7390, - 7391, - 7392 + 7393, + 7394, + 7395 ] } ] @@ -27865,14 +27912,14 @@ { "type": "reflection", "declaration": { - "id": 7393, + "id": 7396, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7394, + "id": 7397, "name": "code", "variant": "declaration", "kind": 1024, @@ -27885,7 +27932,7 @@ } }, { - "id": 7395, + "id": 7398, "name": "pattern", "variant": "declaration", "kind": 1024, @@ -27902,8 +27949,8 @@ { "title": "Properties", "children": [ - 7394, - 7395 + 7397, + 7398 ] } ] @@ -27912,14 +27959,14 @@ { "type": "reflection", "declaration": { - "id": 7396, + "id": 7399, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7397, + "id": 7400, "name": "code", "variant": "declaration", "kind": 1024, @@ -27932,7 +27979,7 @@ } }, { - "id": 7398, + "id": 7401, "name": "path", "variant": "declaration", "kind": 1024, @@ -27951,8 +27998,8 @@ { "title": "Properties", "children": [ - 7397, - 7398 + 7400, + 7401 ] } ] @@ -27961,14 +28008,14 @@ { "type": "reflection", "declaration": { - "id": 7399, + "id": 7402, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7400, + "id": 7403, "name": "code", "variant": "declaration", "kind": 1024, @@ -27981,7 +28028,7 @@ } }, { - "id": 7401, + "id": 7404, "name": "path", "variant": "declaration", "kind": 1024, @@ -28000,8 +28047,8 @@ { "title": "Properties", "children": [ - 7400, - 7401 + 7403, + 7404 ] } ] @@ -28010,14 +28057,14 @@ { "type": "reflection", "declaration": { - "id": 7402, + "id": 7405, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7403, + "id": 7406, "name": "code", "variant": "declaration", "kind": 1024, @@ -28034,7 +28081,7 @@ { "title": "Properties", "children": [ - 7403 + 7406 ] } ] @@ -28043,14 +28090,14 @@ { "type": "reflection", "declaration": { - "id": 7404, + "id": 7407, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7405, + "id": 7408, "name": "code", "variant": "declaration", "kind": 1024, @@ -28067,7 +28114,7 @@ { "title": "Properties", "children": [ - 7405 + 7408 ] } ] @@ -28076,14 +28123,14 @@ { "type": "reflection", "declaration": { - "id": 7406, + "id": 7409, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7407, + "id": 7410, "name": "code", "variant": "declaration", "kind": 1024, @@ -28100,7 +28147,7 @@ { "title": "Properties", "children": [ - 7407 + 7410 ] } ] @@ -28109,14 +28156,14 @@ { "type": "reflection", "declaration": { - "id": 7408, + "id": 7411, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7409, + "id": 7412, "name": "code", "variant": "declaration", "kind": 1024, @@ -28129,7 +28176,7 @@ } }, { - "id": 7410, + "id": 7413, "name": "name", "variant": "declaration", "kind": 1024, @@ -28148,8 +28195,8 @@ { "title": "Properties", "children": [ - 7409, - 7410 + 7412, + 7413 ] } ] @@ -28158,14 +28205,14 @@ { "type": "reflection", "declaration": { - "id": 7411, + "id": 7414, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7412, + "id": 7415, "name": "code", "variant": "declaration", "kind": 1024, @@ -28178,7 +28225,7 @@ } }, { - "id": 7413, + "id": 7416, "name": "name", "variant": "declaration", "kind": 1024, @@ -28197,8 +28244,8 @@ { "title": "Properties", "children": [ - 7412, - 7413 + 7415, + 7416 ] } ] @@ -28207,14 +28254,14 @@ { "type": "reflection", "declaration": { - "id": 7414, + "id": 7417, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7415, + "id": 7418, "name": "code", "variant": "declaration", "kind": 1024, @@ -28227,7 +28274,7 @@ } }, { - "id": 7416, + "id": 7419, "name": "name", "variant": "declaration", "kind": 1024, @@ -28246,8 +28293,8 @@ { "title": "Properties", "children": [ - 7415, - 7416 + 7418, + 7419 ] } ] @@ -28256,14 +28303,14 @@ { "type": "reflection", "declaration": { - "id": 7417, + "id": 7420, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7418, + "id": 7421, "name": "code", "variant": "declaration", "kind": 1024, @@ -28276,7 +28323,7 @@ } }, { - "id": 7419, + "id": 7422, "name": "name", "variant": "declaration", "kind": 1024, @@ -28295,8 +28342,8 @@ { "title": "Properties", "children": [ - 7418, - 7419 + 7421, + 7422 ] } ] @@ -28305,14 +28352,14 @@ { "type": "reflection", "declaration": { - "id": 7420, + "id": 7423, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7421, + "id": 7424, "name": "code", "variant": "declaration", "kind": 1024, @@ -28325,7 +28372,7 @@ } }, { - "id": 7422, + "id": 7425, "name": "name", "variant": "declaration", "kind": 1024, @@ -28344,8 +28391,8 @@ { "title": "Properties", "children": [ - 7421, - 7422 + 7424, + 7425 ] } ] @@ -28354,14 +28401,14 @@ { "type": "reflection", "declaration": { - "id": 7423, + "id": 7426, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7424, + "id": 7427, "name": "code", "variant": "declaration", "kind": 1024, @@ -28374,7 +28421,7 @@ } }, { - "id": 7425, + "id": 7428, "name": "reason", "variant": "declaration", "kind": 1024, @@ -28391,8 +28438,8 @@ { "title": "Properties", "children": [ - 7424, - 7425 + 7427, + 7428 ] } ] @@ -28401,14 +28448,14 @@ { "type": "reflection", "declaration": { - "id": 7426, + "id": 7429, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7427, + "id": 7430, "name": "code", "variant": "declaration", "kind": 1024, @@ -28421,7 +28468,7 @@ } }, { - "id": 7428, + "id": 7431, "name": "host", "variant": "declaration", "kind": 1024, @@ -28434,7 +28481,7 @@ } }, { - "id": 7429, + "id": 7432, "name": "reason", "variant": "declaration", "kind": 1024, @@ -28451,9 +28498,9 @@ { "title": "Properties", "children": [ - 7427, - 7428, - 7429 + 7430, + 7431, + 7432 ] } ] @@ -28462,14 +28509,14 @@ { "type": "reflection", "declaration": { - "id": 7430, + "id": 7433, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7431, + "id": 7434, "name": "code", "variant": "declaration", "kind": 1024, @@ -28482,7 +28529,7 @@ } }, { - "id": 7432, + "id": 7435, "name": "count", "variant": "declaration", "kind": 1024, @@ -28499,8 +28546,8 @@ { "title": "Properties", "children": [ - 7431, - 7432 + 7434, + 7435 ] } ] @@ -28509,14 +28556,14 @@ { "type": "reflection", "declaration": { - "id": 7433, + "id": 7436, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7434, + "id": 7437, "name": "code", "variant": "declaration", "kind": 1024, @@ -28529,7 +28576,7 @@ } }, { - "id": 7435, + "id": 7438, "name": "scheme", "variant": "declaration", "kind": 1024, @@ -28546,8 +28593,8 @@ { "title": "Properties", "children": [ - 7434, - 7435 + 7437, + 7438 ] } ] @@ -28556,14 +28603,14 @@ { "type": "reflection", "declaration": { - "id": 7436, + "id": 7439, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7437, + "id": 7440, "name": "code", "variant": "declaration", "kind": 1024, @@ -28576,7 +28623,7 @@ } }, { - "id": 7438, + "id": 7441, "name": "path", "variant": "declaration", "kind": 1024, @@ -28595,8 +28642,8 @@ { "title": "Properties", "children": [ - 7437, - 7438 + 7440, + 7441 ] } ] @@ -28605,14 +28652,14 @@ { "type": "reflection", "declaration": { - "id": 7439, + "id": 7442, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7440, + "id": 7443, "name": "code", "variant": "declaration", "kind": 1024, @@ -28629,7 +28676,7 @@ { "title": "Properties", "children": [ - 7440 + 7443 ] } ] @@ -28638,14 +28685,14 @@ { "type": "reflection", "declaration": { - "id": 7441, + "id": 7444, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7442, + "id": 7445, "name": "code", "variant": "declaration", "kind": 1024, @@ -28662,7 +28709,7 @@ { "title": "Properties", "children": [ - 7442 + 7445 ] } ] @@ -28671,14 +28718,14 @@ { "type": "reflection", "declaration": { - "id": 7443, + "id": 7446, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7444, + "id": 7447, "name": "code", "variant": "declaration", "kind": 1024, @@ -28691,7 +28738,7 @@ } }, { - "id": 7446, + "id": 7449, "name": "local", "variant": "declaration", "kind": 1024, @@ -28706,7 +28753,7 @@ } }, { - "id": 7445, + "id": 7448, "name": "ref", "variant": "declaration", "kind": 1024, @@ -28721,7 +28768,7 @@ } }, { - "id": 7447, + "id": 7450, "name": "remote", "variant": "declaration", "kind": 1024, @@ -28740,10 +28787,10 @@ { "title": "Properties", "children": [ - 7444, - 7446, - 7445, - 7447 + 7447, + 7449, + 7448, + 7450 ] } ] @@ -28752,14 +28799,14 @@ { "type": "reflection", "declaration": { - "id": 7448, + "id": 7451, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7449, + "id": 7452, "name": "code", "variant": "declaration", "kind": 1024, @@ -28772,7 +28819,7 @@ } }, { - "id": 7451, + "id": 7454, "name": "reason", "variant": "declaration", "kind": 1024, @@ -28785,7 +28832,7 @@ } }, { - "id": 7450, + "id": 7453, "name": "ref", "variant": "declaration", "kind": 1024, @@ -28800,7 +28847,7 @@ } }, { - "id": 7452, + "id": 7455, "name": "reportStatus", "variant": "declaration", "kind": 1024, @@ -28809,7 +28856,7 @@ }, "type": { "type": "reference", - "target": 8475, + "target": 8478, "name": "ReportStatus", "package": "@scolladon/tsgit", "qualifiedName": "ReceivePackResponse" @@ -28820,10 +28867,10 @@ { "title": "Properties", "children": [ - 7449, - 7451, - 7450, - 7452 + 7452, + 7454, + 7453, + 7455 ] } ] @@ -28832,14 +28879,14 @@ { "type": "reflection", "declaration": { - "id": 7453, + "id": 7456, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7454, + "id": 7457, "name": "code", "variant": "declaration", "kind": 1024, @@ -28852,7 +28899,7 @@ } }, { - "id": 7455, + "id": 7458, "name": "count", "variant": "declaration", "kind": 1024, @@ -28865,7 +28912,7 @@ } }, { - "id": 7456, + "id": 7459, "name": "paths", "variant": "declaration", "kind": 1024, @@ -28892,7 +28939,7 @@ } }, { - "id": 7457, + "id": 7460, "name": "truncated", "variant": "declaration", "kind": 1024, @@ -28910,10 +28957,10 @@ { "title": "Properties", "children": [ - 7454, - 7455, - 7456, - 7457 + 7457, + 7458, + 7459, + 7460 ] } ] @@ -28922,14 +28969,14 @@ { "type": "reflection", "declaration": { - "id": 7458, + "id": 7461, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7459, + "id": 7462, "name": "code", "variant": "declaration", "kind": 1024, @@ -28942,7 +28989,7 @@ } }, { - "id": 7460, + "id": 7463, "name": "localChanges", "variant": "declaration", "kind": 1024, @@ -28969,7 +29016,7 @@ } }, { - "id": 7461, + "id": 7464, "name": "untracked", "variant": "declaration", "kind": 1024, @@ -29000,9 +29047,9 @@ { "title": "Properties", "children": [ - 7459, - 7460, - 7461 + 7462, + 7463, + 7464 ] } ] @@ -29011,14 +29058,14 @@ { "type": "reflection", "declaration": { - "id": 7462, + "id": 7465, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7465, + "id": 7468, "name": "candidates", "variant": "declaration", "kind": 1024, @@ -29045,7 +29092,7 @@ } }, { - "id": 7463, + "id": 7466, "name": "code", "variant": "declaration", "kind": 1024, @@ -29058,7 +29105,7 @@ } }, { - "id": 7464, + "id": 7467, "name": "expression", "variant": "declaration", "kind": 1024, @@ -29075,9 +29122,9 @@ { "title": "Properties", "children": [ - 7465, - 7463, - 7464 + 7468, + 7466, + 7467 ] } ] @@ -29086,14 +29133,14 @@ { "type": "reflection", "declaration": { - "id": 7466, + "id": 7469, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7467, + "id": 7470, "name": "code", "variant": "declaration", "kind": 1024, @@ -29106,7 +29153,7 @@ } }, { - "id": 7468, + "id": 7471, "name": "expression", "variant": "declaration", "kind": 1024, @@ -29123,8 +29170,8 @@ { "title": "Properties", "children": [ - 7467, - 7468 + 7470, + 7471 ] } ] @@ -29133,14 +29180,14 @@ { "type": "reflection", "declaration": { - "id": 7469, + "id": 7472, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7470, + "id": 7473, "name": "code", "variant": "declaration", "kind": 1024, @@ -29153,7 +29200,7 @@ } }, { - "id": 7472, + "id": 7475, "name": "path", "variant": "declaration", "kind": 1024, @@ -29166,7 +29213,7 @@ } }, { - "id": 7471, + "id": 7474, "name": "rev", "variant": "declaration", "kind": 1024, @@ -29183,9 +29230,9 @@ { "title": "Properties", "children": [ - 7470, - 7472, - 7471 + 7473, + 7475, + 7474 ] } ] @@ -29194,14 +29241,14 @@ { "type": "reflection", "declaration": { - "id": 7473, + "id": 7476, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7474, + "id": 7477, "name": "code", "variant": "declaration", "kind": 1024, @@ -29214,7 +29261,7 @@ } }, { - "id": 7475, + "id": 7478, "name": "path", "variant": "declaration", "kind": 1024, @@ -29231,8 +29278,8 @@ { "title": "Properties", "children": [ - 7474, - 7475 + 7477, + 7478 ] } ] @@ -29241,14 +29288,14 @@ { "type": "reflection", "declaration": { - "id": 7476, + "id": 7479, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7477, + "id": 7480, "name": "code", "variant": "declaration", "kind": 1024, @@ -29265,7 +29312,7 @@ { "title": "Properties", "children": [ - 7477 + 7480 ] } ] @@ -29274,14 +29321,14 @@ { "type": "reflection", "declaration": { - "id": 7478, + "id": 7481, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7479, + "id": 7482, "name": "code", "variant": "declaration", "kind": 1024, @@ -29294,7 +29341,7 @@ } }, { - "id": 7480, + "id": 7483, "name": "operation", "variant": "declaration", "kind": 1024, @@ -29317,8 +29364,8 @@ { "title": "Properties", "children": [ - 7479, - 7480 + 7482, + 7483 ] } ] @@ -29327,14 +29374,14 @@ { "type": "reflection", "declaration": { - "id": 7481, + "id": 7484, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7482, + "id": 7485, "name": "code", "variant": "declaration", "kind": 1024, @@ -29347,7 +29394,7 @@ } }, { - "id": 7483, + "id": 7486, "name": "operation", "variant": "declaration", "kind": 1024, @@ -29370,8 +29417,8 @@ { "title": "Properties", "children": [ - 7482, - 7483 + 7485, + 7486 ] } ] @@ -29380,14 +29427,14 @@ { "type": "reflection", "declaration": { - "id": 7484, + "id": 7487, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7485, + "id": 7488, "name": "code", "variant": "declaration", "kind": 1024, @@ -29400,7 +29447,7 @@ } }, { - "id": 7486, + "id": 7489, "name": "count", "variant": "declaration", "kind": 1024, @@ -29413,7 +29460,7 @@ } }, { - "id": 7487, + "id": 7490, "name": "limit", "variant": "declaration", "kind": 1024, @@ -29430,9 +29477,9 @@ { "title": "Properties", "children": [ - 7485, - 7486, - 7487 + 7488, + 7489, + 7490 ] } ] @@ -29441,14 +29488,14 @@ { "type": "reflection", "declaration": { - "id": 7488, + "id": 7491, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7489, + "id": 7492, "name": "code", "variant": "declaration", "kind": 1024, @@ -29461,7 +29508,7 @@ } }, { - "id": 7490, + "id": 7493, "name": "remote", "variant": "declaration", "kind": 1024, @@ -29478,8 +29525,8 @@ { "title": "Properties", "children": [ - 7489, - 7490 + 7492, + 7493 ] } ] @@ -29488,14 +29535,14 @@ { "type": "reflection", "declaration": { - "id": 7491, + "id": 7494, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7493, + "id": 7496, "name": "branch", "variant": "declaration", "kind": 1024, @@ -29510,7 +29557,7 @@ } }, { - "id": 7492, + "id": 7495, "name": "code", "variant": "declaration", "kind": 1024, @@ -29527,8 +29574,8 @@ { "title": "Properties", "children": [ - 7493, - 7492 + 7496, + 7495 ] } ] @@ -29537,14 +29584,14 @@ { "type": "reflection", "declaration": { - "id": 7494, + "id": 7497, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7495, + "id": 7498, "name": "code", "variant": "declaration", "kind": 1024, @@ -29557,7 +29604,7 @@ } }, { - "id": 7496, + "id": 7499, "name": "remote", "variant": "declaration", "kind": 1024, @@ -29574,8 +29621,8 @@ { "title": "Properties", "children": [ - 7495, - 7496 + 7498, + 7499 ] } ] @@ -29584,14 +29631,14 @@ { "type": "reflection", "declaration": { - "id": 7497, + "id": 7500, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7498, + "id": 7501, "name": "code", "variant": "declaration", "kind": 1024, @@ -29604,7 +29651,7 @@ } }, { - "id": 7499, + "id": 7502, "name": "name", "variant": "declaration", "kind": 1024, @@ -29617,7 +29664,7 @@ } }, { - "id": 7500, + "id": 7503, "name": "reason", "variant": "declaration", "kind": 1024, @@ -29634,9 +29681,9 @@ { "title": "Properties", "children": [ - 7498, - 7499, - 7500 + 7501, + 7502, + 7503 ] } ] @@ -29645,14 +29692,14 @@ { "type": "reflection", "declaration": { - "id": 7501, + "id": 7504, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7502, + "id": 7505, "name": "code", "variant": "declaration", "kind": 1024, @@ -29665,7 +29712,7 @@ } }, { - "id": 7503, + "id": 7506, "name": "option", "variant": "declaration", "kind": 1024, @@ -29678,7 +29725,7 @@ } }, { - "id": 7504, + "id": 7507, "name": "reason", "variant": "declaration", "kind": 1024, @@ -29695,9 +29742,9 @@ { "title": "Properties", "children": [ - 7502, - 7503, - 7504 + 7505, + 7506, + 7507 ] } ] @@ -29706,14 +29753,14 @@ { "type": "reflection", "declaration": { - "id": 7505, + "id": 7508, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7506, + "id": 7509, "name": "code", "variant": "declaration", "kind": 1024, @@ -29730,7 +29777,7 @@ { "title": "Properties", "children": [ - 7506 + 7509 ] } ] @@ -29739,14 +29786,14 @@ { "type": "reflection", "declaration": { - "id": 7507, + "id": 7510, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7508, + "id": 7511, "name": "code", "variant": "declaration", "kind": 1024, @@ -29759,7 +29806,7 @@ } }, { - "id": 7510, + "id": 7513, "name": "reason", "variant": "declaration", "kind": 1024, @@ -29772,7 +29819,7 @@ } }, { - "id": 7509, + "id": 7512, "name": "runtime", "variant": "declaration", "kind": 1024, @@ -29802,9 +29849,9 @@ { "title": "Properties", "children": [ - 7508, - 7510, - 7509 + 7511, + 7513, + 7512 ] } ] @@ -29813,14 +29860,14 @@ { "type": "reflection", "declaration": { - "id": 7511, + "id": 7514, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7512, + "id": 7515, "name": "code", "variant": "declaration", "kind": 1024, @@ -29833,7 +29880,7 @@ } }, { - "id": 7514, + "id": 7517, "name": "declared", "variant": "declaration", "kind": 1024, @@ -29855,7 +29902,7 @@ } }, { - "id": 7513, + "id": 7516, "name": "requested", "variant": "declaration", "kind": 1024, @@ -29877,7 +29924,7 @@ } }, { - "id": 7515, + "id": 7518, "name": "source", "variant": "declaration", "kind": 1024, @@ -29903,10 +29950,10 @@ { "title": "Properties", "children": [ - 7512, - 7514, - 7513, - 7515 + 7515, + 7517, + 7516, + 7518 ] } ] @@ -29915,14 +29962,14 @@ { "type": "reflection", "declaration": { - "id": 7516, + "id": 7519, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7517, + "id": 7520, "name": "code", "variant": "declaration", "kind": 1024, @@ -29935,7 +29982,7 @@ } }, { - "id": 7520, + "id": 7523, "name": "limit", "variant": "declaration", "kind": 1024, @@ -29948,7 +29995,7 @@ } }, { - "id": 7518, + "id": 7521, "name": "path", "variant": "declaration", "kind": 1024, @@ -29963,7 +30010,7 @@ } }, { - "id": 7519, + "id": 7522, "name": "size", "variant": "declaration", "kind": 1024, @@ -29980,10 +30027,10 @@ { "title": "Properties", "children": [ - 7517, 7520, - 7518, - 7519 + 7523, + 7521, + 7522 ] } ] @@ -29992,14 +30039,14 @@ { "type": "reflection", "declaration": { - "id": 7521, + "id": 7524, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7522, + "id": 7525, "name": "code", "variant": "declaration", "kind": 1024, @@ -30012,7 +30059,7 @@ } }, { - "id": 7525, + "id": 7528, "name": "limit", "variant": "declaration", "kind": 1024, @@ -30025,7 +30072,7 @@ } }, { - "id": 7523, + "id": 7526, "name": "path", "variant": "declaration", "kind": 1024, @@ -30040,7 +30087,7 @@ } }, { - "id": 7524, + "id": 7527, "name": "size", "variant": "declaration", "kind": 1024, @@ -30057,10 +30104,10 @@ { "title": "Properties", "children": [ - 7522, 7525, - 7523, - 7524 + 7528, + 7526, + 7527 ] } ] @@ -30069,14 +30116,14 @@ { "type": "reflection", "declaration": { - "id": 7526, + "id": 7529, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7527, + "id": 7530, "name": "code", "variant": "declaration", "kind": 1024, @@ -30089,7 +30136,7 @@ } }, { - "id": 7530, + "id": 7533, "name": "limit", "variant": "declaration", "kind": 1024, @@ -30102,7 +30149,7 @@ } }, { - "id": 7528, + "id": 7531, "name": "path", "variant": "declaration", "kind": 1024, @@ -30117,7 +30164,7 @@ } }, { - "id": 7529, + "id": 7532, "name": "size", "variant": "declaration", "kind": 1024, @@ -30134,10 +30181,10 @@ { "title": "Properties", "children": [ - 7527, 7530, - 7528, - 7529 + 7533, + 7531, + 7532 ] } ] @@ -30146,14 +30193,14 @@ { "type": "reflection", "declaration": { - "id": 7531, + "id": 7534, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7532, + "id": 7535, "name": "code", "variant": "declaration", "kind": 1024, @@ -30166,7 +30213,7 @@ } }, { - "id": 7535, + "id": 7538, "name": "limit", "variant": "declaration", "kind": 1024, @@ -30179,7 +30226,7 @@ } }, { - "id": 7533, + "id": 7536, "name": "path", "variant": "declaration", "kind": 1024, @@ -30194,7 +30241,7 @@ } }, { - "id": 7534, + "id": 7537, "name": "size", "variant": "declaration", "kind": 1024, @@ -30211,10 +30258,10 @@ { "title": "Properties", "children": [ - 7532, 7535, - 7533, - 7534 + 7538, + 7536, + 7537 ] } ] @@ -30223,14 +30270,14 @@ { "type": "reflection", "declaration": { - "id": 7536, + "id": 7539, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7537, + "id": 7540, "name": "code", "variant": "declaration", "kind": 1024, @@ -30243,7 +30290,7 @@ } }, { - "id": 7539, + "id": 7542, "name": "exitCode", "variant": "declaration", "kind": 1024, @@ -30256,7 +30303,7 @@ } }, { - "id": 7538, + "id": 7541, "name": "hook", "variant": "declaration", "kind": 1024, @@ -30271,7 +30318,7 @@ } }, { - "id": 7540, + "id": 7543, "name": "stderr", "variant": "declaration", "kind": 1024, @@ -30288,10 +30335,10 @@ { "title": "Properties", "children": [ - 7537, - 7539, - 7538, - 7540 + 7540, + 7542, + 7541, + 7543 ] } ] @@ -30300,14 +30347,14 @@ { "type": "reflection", "declaration": { - "id": 7541, + "id": 7544, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7542, + "id": 7545, "name": "code", "variant": "declaration", "kind": 1024, @@ -30320,7 +30367,7 @@ } }, { - "id": 7545, + "id": 7548, "name": "exitCode", "variant": "declaration", "kind": 1024, @@ -30333,7 +30380,7 @@ } }, { - "id": 7544, + "id": 7547, "name": "filter", "variant": "declaration", "kind": 1024, @@ -30346,7 +30393,7 @@ } }, { - "id": 7543, + "id": 7546, "name": "path", "variant": "declaration", "kind": 1024, @@ -30365,10 +30412,10 @@ { "title": "Properties", "children": [ - 7542, 7545, - 7544, - 7543 + 7548, + 7547, + 7546 ] } ] @@ -30377,14 +30424,14 @@ { "type": "reflection", "declaration": { - "id": 7546, + "id": 7549, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7547, + "id": 7550, "name": "code", "variant": "declaration", "kind": 1024, @@ -30397,7 +30444,7 @@ } }, { - "id": 7550, + "id": 7553, "name": "exitCode", "variant": "declaration", "kind": 1024, @@ -30410,7 +30457,7 @@ } }, { - "id": 7549, + "id": 7552, "name": "filter", "variant": "declaration", "kind": 1024, @@ -30423,7 +30470,7 @@ } }, { - "id": 7548, + "id": 7551, "name": "path", "variant": "declaration", "kind": 1024, @@ -30442,10 +30489,10 @@ { "title": "Properties", "children": [ - 7547, 7550, - 7549, - 7548 + 7553, + 7552, + 7551 ] } ] @@ -30454,14 +30501,14 @@ { "type": "reflection", "declaration": { - "id": 7551, + "id": 7554, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7552, + "id": 7555, "name": "code", "variant": "declaration", "kind": 1024, @@ -30474,7 +30521,7 @@ } }, { - "id": 7553, + "id": 7556, "name": "key", "variant": "declaration", "kind": 1024, @@ -30487,7 +30534,7 @@ } }, { - "id": 7555, + "id": 7558, "name": "position", "variant": "declaration", "kind": 1024, @@ -30501,7 +30548,7 @@ } }, { - "id": 7554, + "id": 7557, "name": "reason", "variant": "declaration", "kind": 1024, @@ -30531,10 +30578,10 @@ { "title": "Properties", "children": [ - 7552, - 7553, 7555, - 7554 + 7556, + 7558, + 7557 ] } ] @@ -30543,14 +30590,14 @@ { "type": "reflection", "declaration": { - "id": 7556, + "id": 7559, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7557, + "id": 7560, "name": "code", "variant": "declaration", "kind": 1024, @@ -30563,7 +30610,7 @@ } }, { - "id": 7558, + "id": 7561, "name": "key", "variant": "declaration", "kind": 1024, @@ -30576,7 +30623,7 @@ } }, { - "id": 7560, + "id": 7563, "name": "position", "variant": "declaration", "kind": 1024, @@ -30589,7 +30636,7 @@ } }, { - "id": 7559, + "id": 7562, "name": "reason", "variant": "declaration", "kind": 1024, @@ -30606,10 +30653,10 @@ { "title": "Properties", "children": [ - 7557, - 7558, 7560, - 7559 + 7561, + 7563, + 7562 ] } ] @@ -30618,14 +30665,14 @@ { "type": "reflection", "declaration": { - "id": 7561, + "id": 7564, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7562, + "id": 7565, "name": "code", "variant": "declaration", "kind": 1024, @@ -30638,7 +30685,7 @@ } }, { - "id": 7563, + "id": 7566, "name": "line", "variant": "declaration", "kind": 1024, @@ -30651,7 +30698,7 @@ } }, { - "id": 7565, + "id": 7568, "name": "partialSectionName", "variant": "declaration", "kind": 1024, @@ -30665,7 +30712,7 @@ } }, { - "id": 7564, + "id": 7567, "name": "source", "variant": "declaration", "kind": 1024, @@ -30683,10 +30730,10 @@ { "title": "Properties", "children": [ - 7562, - 7563, 7565, - 7564 + 7566, + 7568, + 7567 ] } ] @@ -30695,14 +30742,14 @@ { "type": "reflection", "declaration": { - "id": 7566, + "id": 7569, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7567, + "id": 7570, "name": "code", "variant": "declaration", "kind": 1024, @@ -30715,7 +30762,7 @@ } }, { - "id": 7568, + "id": 7571, "name": "key", "variant": "declaration", "kind": 1024, @@ -30728,7 +30775,7 @@ } }, { - "id": 7570, + "id": 7573, "name": "line", "variant": "declaration", "kind": 1024, @@ -30741,7 +30788,7 @@ } }, { - "id": 7569, + "id": 7572, "name": "source", "variant": "declaration", "kind": 1024, @@ -30758,10 +30805,10 @@ { "title": "Properties", "children": [ - 7567, - 7568, 7570, - 7569 + 7571, + 7573, + 7572 ] } ] @@ -30770,14 +30817,14 @@ { "type": "reflection", "declaration": { - "id": 7571, + "id": 7574, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7572, + "id": 7575, "name": "code", "variant": "declaration", "kind": 1024, @@ -30790,7 +30837,7 @@ } }, { - "id": 7573, + "id": 7576, "name": "name", "variant": "declaration", "kind": 1024, @@ -30807,8 +30854,8 @@ { "title": "Properties", "children": [ - 7572, - 7573 + 7575, + 7576 ] } ] @@ -30817,14 +30864,14 @@ { "type": "reflection", "declaration": { - "id": 7574, + "id": 7577, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7575, + "id": 7578, "name": "code", "variant": "declaration", "kind": 1024, @@ -30837,7 +30884,7 @@ } }, { - "id": 7576, + "id": 7579, "name": "key", "variant": "declaration", "kind": 1024, @@ -30850,7 +30897,7 @@ } }, { - "id": 7579, + "id": 7582, "name": "reason", "variant": "declaration", "kind": 1024, @@ -30872,7 +30919,7 @@ } }, { - "id": 7577, + "id": 7580, "name": "source", "variant": "declaration", "kind": 1024, @@ -30885,7 +30932,7 @@ } }, { - "id": 7578, + "id": 7581, "name": "value", "variant": "declaration", "kind": 1024, @@ -30902,11 +30949,11 @@ { "title": "Properties", "children": [ - 7575, - 7576, + 7578, 7579, - 7577, - 7578 + 7582, + 7580, + 7581 ] } ] @@ -30915,14 +30962,14 @@ { "type": "reflection", "declaration": { - "id": 7580, + "id": 7583, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7581, + "id": 7584, "name": "code", "variant": "declaration", "kind": 1024, @@ -30935,7 +30982,7 @@ } }, { - "id": 7582, + "id": 7585, "name": "key", "variant": "declaration", "kind": 1024, @@ -30948,7 +30995,7 @@ } }, { - "id": 7583, + "id": 7586, "name": "source", "variant": "declaration", "kind": 1024, @@ -30961,7 +31008,7 @@ } }, { - "id": 7584, + "id": 7587, "name": "value", "variant": "declaration", "kind": 1024, @@ -30978,10 +31025,10 @@ { "title": "Properties", "children": [ - 7581, - 7582, - 7583, - 7584 + 7584, + 7585, + 7586, + 7587 ] } ] @@ -30990,14 +31037,14 @@ { "type": "reflection", "declaration": { - "id": 7585, + "id": 7588, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7586, + "id": 7589, "name": "code", "variant": "declaration", "kind": 1024, @@ -31010,7 +31057,7 @@ } }, { - "id": 7587, + "id": 7590, "name": "key", "variant": "declaration", "kind": 1024, @@ -31023,7 +31070,7 @@ } }, { - "id": 7588, + "id": 7591, "name": "source", "variant": "declaration", "kind": 1024, @@ -31036,7 +31083,7 @@ } }, { - "id": 7589, + "id": 7592, "name": "value", "variant": "declaration", "kind": 1024, @@ -31053,10 +31100,10 @@ { "title": "Properties", "children": [ - 7586, - 7587, - 7588, - 7589 + 7589, + 7590, + 7591, + 7592 ] } ] @@ -31065,14 +31112,14 @@ { "type": "reflection", "declaration": { - "id": 7590, + "id": 7593, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7591, + "id": 7594, "name": "code", "variant": "declaration", "kind": 1024, @@ -31085,7 +31132,7 @@ } }, { - "id": 7592, + "id": 7595, "name": "value", "variant": "declaration", "kind": 1024, @@ -31102,8 +31149,8 @@ { "title": "Properties", "children": [ - 7591, - 7592 + 7594, + 7595 ] } ] @@ -31112,14 +31159,14 @@ { "type": "reflection", "declaration": { - "id": 7593, + "id": 7596, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7594, + "id": 7597, "name": "code", "variant": "declaration", "kind": 1024, @@ -31132,7 +31179,7 @@ } }, { - "id": 7595, + "id": 7598, "name": "key", "variant": "declaration", "kind": 1024, @@ -31145,7 +31192,7 @@ } }, { - "id": 7598, + "id": 7601, "name": "line", "variant": "declaration", "kind": 1024, @@ -31158,7 +31205,7 @@ } }, { - "id": 7596, + "id": 7599, "name": "source", "variant": "declaration", "kind": 1024, @@ -31171,7 +31218,7 @@ } }, { - "id": 7597, + "id": 7600, "name": "value", "variant": "declaration", "kind": 1024, @@ -31188,11 +31235,11 @@ { "title": "Properties", "children": [ - 7594, - 7595, + 7597, 7598, - 7596, - 7597 + 7601, + 7599, + 7600 ] } ] @@ -31201,14 +31248,14 @@ { "type": "reflection", "declaration": { - "id": 7599, + "id": 7602, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7600, + "id": 7603, "name": "code", "variant": "declaration", "kind": 1024, @@ -31221,7 +31268,7 @@ } }, { - "id": 7601, + "id": 7604, "name": "level", "variant": "declaration", "kind": 1024, @@ -31238,8 +31285,8 @@ { "title": "Properties", "children": [ - 7600, - 7601 + 7603, + 7604 ] } ] @@ -31248,14 +31295,14 @@ { "type": "reflection", "declaration": { - "id": 7602, + "id": 7605, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7603, + "id": 7606, "name": "code", "variant": "declaration", "kind": 1024, @@ -31268,7 +31315,7 @@ } }, { - "id": 7605, + "id": 7608, "name": "count", "variant": "declaration", "kind": 1024, @@ -31281,7 +31328,7 @@ } }, { - "id": 7604, + "id": 7607, "name": "key", "variant": "declaration", "kind": 1024, @@ -31294,7 +31341,7 @@ } }, { - "id": 7606, + "id": 7609, "name": "requested", "variant": "declaration", "kind": 1024, @@ -31320,7 +31367,7 @@ } }, { - "id": 7607, + "id": 7610, "name": "scope", "variant": "declaration", "kind": 1024, @@ -31340,11 +31387,11 @@ { "title": "Properties", "children": [ - 7603, - 7605, - 7604, 7606, - 7607 + 7608, + 7607, + 7609, + 7610 ] } ] @@ -31353,14 +31400,14 @@ { "type": "reflection", "declaration": { - "id": 7608, + "id": 7611, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7609, + "id": 7612, "name": "code", "variant": "declaration", "kind": 1024, @@ -31373,7 +31420,7 @@ } }, { - "id": 7610, + "id": 7613, "name": "sectionName", "variant": "declaration", "kind": 1024, @@ -31386,7 +31433,7 @@ } }, { - "id": 7611, + "id": 7614, "name": "source", "variant": "declaration", "kind": 1024, @@ -31403,9 +31450,9 @@ { "title": "Properties", "children": [ - 7609, - 7610, - 7611 + 7612, + 7613, + 7614 ] } ] @@ -31414,14 +31461,14 @@ { "type": "reflection", "declaration": { - "id": 7612, + "id": 7615, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7613, + "id": 7616, "name": "code", "variant": "declaration", "kind": 1024, @@ -31434,7 +31481,7 @@ } }, { - "id": 7614, + "id": 7617, "name": "name", "variant": "declaration", "kind": 1024, @@ -31447,7 +31494,7 @@ } }, { - "id": 7615, + "id": 7618, "name": "scope", "variant": "declaration", "kind": 1024, @@ -31466,9 +31513,9 @@ { "title": "Properties", "children": [ - 7613, - 7614, - 7615 + 7616, + 7617, + 7618 ] } ] @@ -31477,14 +31524,14 @@ { "type": "reflection", "declaration": { - "id": 7616, + "id": 7619, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7617, + "id": 7620, "name": "code", "variant": "declaration", "kind": 1024, @@ -31497,7 +31544,7 @@ } }, { - "id": 7619, + "id": 7622, "name": "reason", "variant": "declaration", "kind": 1024, @@ -31523,7 +31570,7 @@ } }, { - "id": 7618, + "id": 7621, "name": "scope", "variant": "declaration", "kind": 1024, @@ -31542,9 +31589,9 @@ { "title": "Properties", "children": [ - 7617, - 7619, - 7618 + 7620, + 7622, + 7621 ] } ] @@ -31553,14 +31600,14 @@ { "type": "reflection", "declaration": { - "id": 7620, + "id": 7623, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7621, + "id": 7624, "name": "code", "variant": "declaration", "kind": 1024, @@ -31577,7 +31624,7 @@ { "title": "Properties", "children": [ - 7621 + 7624 ] } ] @@ -31586,14 +31633,14 @@ { "type": "reflection", "declaration": { - "id": 7622, + "id": 7625, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7623, + "id": 7626, "name": "code", "variant": "declaration", "kind": 1024, @@ -31606,7 +31653,7 @@ } }, { - "id": 7625, + "id": 7628, "name": "destination", "variant": "declaration", "kind": 1024, @@ -31621,7 +31668,7 @@ } }, { - "id": 7624, + "id": 7627, "name": "source", "variant": "declaration", "kind": 1024, @@ -31640,9 +31687,9 @@ { "title": "Properties", "children": [ - 7623, - 7625, - 7624 + 7626, + 7628, + 7627 ] } ] @@ -31651,14 +31698,14 @@ { "type": "reflection", "declaration": { - "id": 7626, + "id": 7629, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7627, + "id": 7630, "name": "code", "variant": "declaration", "kind": 1024, @@ -31671,7 +31718,7 @@ } }, { - "id": 7629, + "id": 7632, "name": "destination", "variant": "declaration", "kind": 1024, @@ -31686,7 +31733,7 @@ } }, { - "id": 7628, + "id": 7631, "name": "source", "variant": "declaration", "kind": 1024, @@ -31705,9 +31752,9 @@ { "title": "Properties", "children": [ - 7627, - 7629, - 7628 + 7630, + 7632, + 7631 ] } ] @@ -31716,14 +31763,14 @@ { "type": "reflection", "declaration": { - "id": 7630, + "id": 7633, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7631, + "id": 7634, "name": "code", "variant": "declaration", "kind": 1024, @@ -31736,7 +31783,7 @@ } }, { - "id": 7633, + "id": 7636, "name": "destination", "variant": "declaration", "kind": 1024, @@ -31751,7 +31798,7 @@ } }, { - "id": 7632, + "id": 7635, "name": "source", "variant": "declaration", "kind": 1024, @@ -31770,9 +31817,9 @@ { "title": "Properties", "children": [ - 7631, - 7633, - 7632 + 7634, + 7636, + 7635 ] } ] @@ -31781,14 +31828,14 @@ { "type": "reflection", "declaration": { - "id": 7634, + "id": 7637, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7635, + "id": 7638, "name": "code", "variant": "declaration", "kind": 1024, @@ -31801,7 +31848,7 @@ } }, { - "id": 7637, + "id": 7640, "name": "destination", "variant": "declaration", "kind": 1024, @@ -31816,7 +31863,7 @@ } }, { - "id": 7636, + "id": 7639, "name": "source", "variant": "declaration", "kind": 1024, @@ -31835,9 +31882,9 @@ { "title": "Properties", "children": [ - 7635, - 7637, - 7636 + 7638, + 7640, + 7639 ] } ] @@ -31846,14 +31893,14 @@ { "type": "reflection", "declaration": { - "id": 7638, + "id": 7641, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7639, + "id": 7642, "name": "code", "variant": "declaration", "kind": 1024, @@ -31866,7 +31913,7 @@ } }, { - "id": 7641, + "id": 7644, "name": "destination", "variant": "declaration", "kind": 1024, @@ -31881,7 +31928,7 @@ } }, { - "id": 7640, + "id": 7643, "name": "source", "variant": "declaration", "kind": 1024, @@ -31900,9 +31947,9 @@ { "title": "Properties", "children": [ - 7639, - 7641, - 7640 + 7642, + 7644, + 7643 ] } ] @@ -31911,14 +31958,14 @@ { "type": "reflection", "declaration": { - "id": 7642, + "id": 7645, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7643, + "id": 7646, "name": "code", "variant": "declaration", "kind": 1024, @@ -31931,7 +31978,7 @@ } }, { - "id": 7645, + "id": 7648, "name": "destination", "variant": "declaration", "kind": 1024, @@ -31946,7 +31993,7 @@ } }, { - "id": 7644, + "id": 7647, "name": "source", "variant": "declaration", "kind": 1024, @@ -31965,9 +32012,9 @@ { "title": "Properties", "children": [ - 7643, - 7645, - 7644 + 7646, + 7648, + 7647 ] } ] @@ -31976,14 +32023,14 @@ { "type": "reflection", "declaration": { - "id": 7646, + "id": 7649, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7647, + "id": 7650, "name": "code", "variant": "declaration", "kind": 1024, @@ -31996,7 +32043,7 @@ } }, { - "id": 7649, + "id": 7652, "name": "destination", "variant": "declaration", "kind": 1024, @@ -32011,7 +32058,7 @@ } }, { - "id": 7648, + "id": 7651, "name": "source", "variant": "declaration", "kind": 1024, @@ -32030,9 +32077,9 @@ { "title": "Properties", "children": [ - 7647, - 7649, - 7648 + 7650, + 7652, + 7651 ] } ] @@ -32041,14 +32088,14 @@ { "type": "reflection", "declaration": { - "id": 7650, + "id": 7653, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7652, + "id": 7655, "name": "child", "variant": "declaration", "kind": 1024, @@ -32063,7 +32110,7 @@ } }, { - "id": 7651, + "id": 7654, "name": "code", "variant": "declaration", "kind": 1024, @@ -32076,7 +32123,7 @@ } }, { - "id": 7653, + "id": 7656, "name": "parent", "variant": "declaration", "kind": 1024, @@ -32095,9 +32142,9 @@ { "title": "Properties", "children": [ - 7652, - 7651, - 7653 + 7655, + 7654, + 7656 ] } ] @@ -32106,14 +32153,14 @@ { "type": "reflection", "declaration": { - "id": 7654, + "id": 7657, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7655, + "id": 7658, "name": "code", "variant": "declaration", "kind": 1024, @@ -32126,7 +32173,7 @@ } }, { - "id": 7656, + "id": 7659, "name": "paths", "variant": "declaration", "kind": 1024, @@ -32157,8 +32204,8 @@ { "title": "Properties", "children": [ - 7655, - 7656 + 7658, + 7659 ] } ] @@ -32167,14 +32214,14 @@ { "type": "reflection", "declaration": { - "id": 7657, + "id": 7660, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7658, + "id": 7661, "name": "code", "variant": "declaration", "kind": 1024, @@ -32187,7 +32234,7 @@ } }, { - "id": 7659, + "id": 7662, "name": "paths", "variant": "declaration", "kind": 1024, @@ -32218,8 +32265,8 @@ { "title": "Properties", "children": [ - 7658, - 7659 + 7661, + 7662 ] } ] @@ -32228,14 +32275,14 @@ { "type": "reflection", "declaration": { - "id": 7660, + "id": 7663, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7661, + "id": 7664, "name": "code", "variant": "declaration", "kind": 1024, @@ -32248,7 +32295,7 @@ } }, { - "id": 7662, + "id": 7665, "name": "paths", "variant": "declaration", "kind": 1024, @@ -32279,8 +32326,8 @@ { "title": "Properties", "children": [ - 7661, - 7662 + 7664, + 7665 ] } ] @@ -32289,14 +32336,14 @@ { "type": "reflection", "declaration": { - "id": 7663, + "id": 7666, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7664, + "id": 7667, "name": "code", "variant": "declaration", "kind": 1024, @@ -32313,7 +32360,7 @@ { "title": "Properties", "children": [ - 7664 + 7667 ] } ] @@ -32322,14 +32369,14 @@ { "type": "reflection", "declaration": { - "id": 7665, + "id": 7668, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7666, + "id": 7669, "name": "code", "variant": "declaration", "kind": 1024, @@ -32342,7 +32389,7 @@ } }, { - "id": 7667, + "id": 7670, "name": "index", "variant": "declaration", "kind": 1024, @@ -32355,7 +32402,7 @@ } }, { - "id": 7668, + "id": 7671, "name": "stackSize", "variant": "declaration", "kind": 1024, @@ -32372,9 +32419,9 @@ { "title": "Properties", "children": [ - 7666, - 7667, - 7668 + 7669, + 7670, + 7671 ] } ] @@ -32383,14 +32430,14 @@ { "type": "reflection", "declaration": { - "id": 7669, + "id": 7672, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7670, + "id": 7673, "name": "code", "variant": "declaration", "kind": 1024, @@ -32403,7 +32450,7 @@ } }, { - "id": 7671, + "id": 7674, "name": "paths", "variant": "declaration", "kind": 1024, @@ -32434,8 +32481,8 @@ { "title": "Properties", "children": [ - 7670, - 7671 + 7673, + 7674 ] } ] @@ -32444,14 +32491,14 @@ { "type": "reflection", "declaration": { - "id": 7672, + "id": 7675, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7675, + "id": 7678, "name": "candidates", "variant": "declaration", "kind": 1024, @@ -32478,7 +32525,7 @@ } }, { - "id": 7673, + "id": 7676, "name": "code", "variant": "declaration", "kind": 1024, @@ -32491,7 +32538,7 @@ } }, { - "id": 7674, + "id": 7677, "name": "prefix", "variant": "declaration", "kind": 1024, @@ -32508,9 +32555,9 @@ { "title": "Properties", "children": [ - 7675, - 7673, - 7674 + 7678, + 7676, + 7677 ] } ] @@ -32519,14 +32566,14 @@ { "type": "reflection", "declaration": { - "id": 7676, + "id": 7679, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7677, + "id": 7680, "name": "code", "variant": "declaration", "kind": 1024, @@ -32539,7 +32586,7 @@ } }, { - "id": 7678, + "id": 7681, "name": "reason", "variant": "declaration", "kind": 1024, @@ -32556,8 +32603,8 @@ { "title": "Properties", "children": [ - 7677, - 7678 + 7680, + 7681 ] } ] @@ -32566,14 +32613,14 @@ { "type": "reflection", "declaration": { - "id": 7679, + "id": 7682, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7680, + "id": 7683, "name": "code", "variant": "declaration", "kind": 1024, @@ -32586,7 +32633,7 @@ } }, { - "id": 7681, + "id": 7684, "name": "commit", "variant": "declaration", "kind": 1024, @@ -32605,8 +32652,8 @@ { "title": "Properties", "children": [ - 7680, - 7681 + 7683, + 7684 ] } ] @@ -32615,14 +32662,14 @@ { "type": "reflection", "declaration": { - "id": 7682, + "id": 7685, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7683, + "id": 7686, "name": "code", "variant": "declaration", "kind": 1024, @@ -32635,7 +32682,7 @@ } }, { - "id": 7684, + "id": 7687, "name": "commit", "variant": "declaration", "kind": 1024, @@ -32654,8 +32701,8 @@ { "title": "Properties", "children": [ - 7683, - 7684 + 7686, + 7687 ] } ] @@ -32664,14 +32711,14 @@ { "type": "reflection", "declaration": { - "id": 7685, + "id": 7688, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7686, + "id": 7689, "name": "code", "variant": "declaration", "kind": 1024, @@ -32684,7 +32731,7 @@ } }, { - "id": 7687, + "id": 7690, "name": "oid", "variant": "declaration", "kind": 1024, @@ -32703,8 +32750,8 @@ { "title": "Properties", "children": [ - 7686, - 7687 + 7689, + 7690 ] } ] @@ -32713,14 +32760,14 @@ { "type": "reflection", "declaration": { - "id": 7688, + "id": 7691, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7689, + "id": 7692, "name": "code", "variant": "declaration", "kind": 1024, @@ -32733,7 +32780,7 @@ } }, { - "id": 7690, + "id": 7693, "name": "oid", "variant": "declaration", "kind": 1024, @@ -32752,8 +32799,8 @@ { "title": "Properties", "children": [ - 7689, - 7690 + 7692, + 7693 ] } ] @@ -32762,14 +32809,14 @@ { "type": "reflection", "declaration": { - "id": 7691, + "id": 7694, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7692, + "id": 7695, "name": "code", "variant": "declaration", "kind": 1024, @@ -32782,7 +32829,7 @@ } }, { - "id": 7693, + "id": 7696, "name": "oid", "variant": "declaration", "kind": 1024, @@ -32801,8 +32848,8 @@ { "title": "Properties", "children": [ - 7692, - 7693 + 7695, + 7696 ] } ] @@ -32811,14 +32858,14 @@ { "type": "reflection", "declaration": { - "id": 7694, + "id": 7697, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7695, + "id": 7698, "name": "code", "variant": "declaration", "kind": 1024, @@ -32831,7 +32878,7 @@ } }, { - "id": 7696, + "id": 7699, "name": "oid", "variant": "declaration", "kind": 1024, @@ -32850,8 +32897,8 @@ { "title": "Properties", "children": [ - 7695, - 7696 + 7698, + 7699 ] } ] @@ -32860,14 +32907,14 @@ { "type": "reflection", "declaration": { - "id": 7697, + "id": 7700, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7698, + "id": 7701, "name": "code", "variant": "declaration", "kind": 1024, @@ -32880,7 +32927,7 @@ } }, { - "id": 7699, + "id": 7702, "name": "oid", "variant": "declaration", "kind": 1024, @@ -32899,8 +32946,8 @@ { "title": "Properties", "children": [ - 7698, - 7699 + 7701, + 7702 ] } ] @@ -32909,14 +32956,14 @@ { "type": "reflection", "declaration": { - "id": 7700, + "id": 7703, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7701, + "id": 7704, "name": "code", "variant": "declaration", "kind": 1024, @@ -32929,7 +32976,7 @@ } }, { - "id": 7702, + "id": 7705, "name": "reason", "variant": "declaration", "kind": 1024, @@ -32955,8 +33002,8 @@ { "title": "Properties", "children": [ - 7701, - 7702 + 7704, + 7705 ] } ] @@ -32965,14 +33012,14 @@ { "type": "reflection", "declaration": { - "id": 7703, + "id": 7706, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7704, + "id": 7707, "name": "code", "variant": "declaration", "kind": 1024, @@ -32985,7 +33032,7 @@ } }, { - "id": 7705, + "id": 7708, "name": "path", "variant": "declaration", "kind": 1024, @@ -33002,8 +33049,8 @@ { "title": "Properties", "children": [ - 7704, - 7705 + 7707, + 7708 ] } ] @@ -33015,14 +33062,14 @@ { "type": "reflection", "declaration": { - "id": 7706, + "id": 7709, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7707, + "id": 7710, "name": "code", "variant": "declaration", "kind": 1024, @@ -33035,7 +33082,7 @@ } }, { - "id": 7708, + "id": 7711, "name": "path", "variant": "declaration", "kind": 1024, @@ -33052,8 +33099,8 @@ { "title": "Properties", "children": [ - 7707, - 7708 + 7710, + 7711 ] } ] @@ -33074,14 +33121,14 @@ { "type": "reflection", "declaration": { - "id": 7709, + "id": 7712, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7710, + "id": 7713, "name": "code", "variant": "declaration", "kind": 1024, @@ -33094,7 +33141,7 @@ } }, { - "id": 7711, + "id": 7714, "name": "version", "variant": "declaration", "kind": 1024, @@ -33111,8 +33158,8 @@ { "title": "Properties", "children": [ - 7710, - 7711 + 7713, + 7714 ] } ] @@ -33121,14 +33168,14 @@ { "type": "reflection", "declaration": { - "id": 7712, + "id": 7715, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7713, + "id": 7716, "name": "code", "variant": "declaration", "kind": 1024, @@ -33141,7 +33188,7 @@ } }, { - "id": 7715, + "id": 7718, "name": "objectType", "variant": "declaration", "kind": 1024, @@ -33154,7 +33201,7 @@ } }, { - "id": 7714, + "id": 7717, "name": "oid", "variant": "declaration", "kind": 1024, @@ -33173,9 +33220,9 @@ { "title": "Properties", "children": [ - 7713, - 7715, - 7714 + 7716, + 7718, + 7717 ] } ] @@ -33184,14 +33231,14 @@ { "type": "reflection", "declaration": { - "id": 7716, + "id": 7719, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7719, + "id": 7722, "name": "bundleAlgorithm", "variant": "declaration", "kind": 1024, @@ -33213,7 +33260,7 @@ } }, { - "id": 7717, + "id": 7720, "name": "code", "variant": "declaration", "kind": 1024, @@ -33226,7 +33273,7 @@ } }, { - "id": 7720, + "id": 7723, "name": "localAlgorithm", "variant": "declaration", "kind": 1024, @@ -33248,7 +33295,7 @@ } }, { - "id": 7718, + "id": 7721, "name": "oid", "variant": "declaration", "kind": 1024, @@ -33267,10 +33314,10 @@ { "title": "Properties", "children": [ - 7719, - 7717, + 7722, 7720, - 7718 + 7723, + 7721 ] } ] @@ -33279,14 +33326,14 @@ { "type": "reflection", "declaration": { - "id": 7721, + "id": 7724, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7722, + "id": 7725, "name": "code", "variant": "declaration", "kind": 1024, @@ -33299,7 +33346,7 @@ } }, { - "id": 7723, + "id": 7726, "name": "object", "variant": "declaration", "kind": 1024, @@ -33318,8 +33365,8 @@ { "title": "Properties", "children": [ - 7722, - 7723 + 7725, + 7726 ] } ] @@ -33328,14 +33375,14 @@ { "type": "reflection", "declaration": { - "id": 7724, + "id": 7727, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7725, + "id": 7728, "name": "code", "variant": "declaration", "kind": 1024, @@ -33348,7 +33395,7 @@ } }, { - "id": 7726, + "id": 7729, "name": "object", "variant": "declaration", "kind": 1024, @@ -33367,8 +33414,8 @@ { "title": "Properties", "children": [ - 7725, - 7726 + 7728, + 7729 ] } ] @@ -33377,14 +33424,14 @@ { "type": "reflection", "declaration": { - "id": 7727, + "id": 7730, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7728, + "id": 7731, "name": "code", "variant": "declaration", "kind": 1024, @@ -33397,7 +33444,7 @@ } }, { - "id": 7729, + "id": 7732, "name": "ref", "variant": "declaration", "kind": 1024, @@ -33414,8 +33461,8 @@ { "title": "Properties", "children": [ - 7728, - 7729 + 7731, + 7732 ] } ] @@ -33424,14 +33471,14 @@ { "type": "reflection", "declaration": { - "id": 7730, + "id": 7733, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7731, + "id": 7734, "name": "code", "variant": "declaration", "kind": 1024, @@ -33444,7 +33491,7 @@ } }, { - "id": 7733, + "id": 7736, "name": "format", "variant": "declaration", "kind": 1024, @@ -33471,7 +33518,7 @@ } }, { - "id": 7732, + "id": 7735, "name": "reason", "variant": "declaration", "kind": 1024, @@ -33501,9 +33548,9 @@ { "title": "Properties", "children": [ - 7731, - 7733, - 7732 + 7734, + 7736, + 7735 ] } ] @@ -33512,14 +33559,14 @@ { "type": "reflection", "declaration": { - "id": 7734, + "id": 7737, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7735, + "id": 7738, "name": "code", "variant": "declaration", "kind": 1024, @@ -33532,7 +33579,7 @@ } }, { - "id": 7736, + "id": 7739, "name": "remote", "variant": "declaration", "kind": 1024, @@ -33549,8 +33596,8 @@ { "title": "Properties", "children": [ - 7735, - 7736 + 7738, + 7739 ] } ] @@ -33559,14 +33606,14 @@ { "type": "reflection", "declaration": { - "id": 7737, + "id": 7740, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7738, + "id": 7741, "name": "code", "variant": "declaration", "kind": 1024, @@ -33583,7 +33630,7 @@ { "title": "Properties", "children": [ - 7738 + 7741 ] } ] @@ -33592,14 +33639,14 @@ { "type": "reflection", "declaration": { - "id": 7739, + "id": 7742, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7740, + "id": 7743, "name": "code", "variant": "declaration", "kind": 1024, @@ -33616,7 +33663,7 @@ { "title": "Properties", "children": [ - 7740 + 7743 ] } ] @@ -33625,14 +33672,14 @@ { "type": "reflection", "declaration": { - "id": 7741, + "id": 7744, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7744, + "id": 7747, "name": "branch", "variant": "declaration", "kind": 1024, @@ -33647,7 +33694,7 @@ } }, { - "id": 7742, + "id": 7745, "name": "code", "variant": "declaration", "kind": 1024, @@ -33660,7 +33707,7 @@ } }, { - "id": 7743, + "id": 7746, "name": "remote", "variant": "declaration", "kind": 1024, @@ -33677,9 +33724,9 @@ { "title": "Properties", "children": [ - 7744, - 7742, - 7743 + 7747, + 7745, + 7746 ] } ] @@ -33688,14 +33735,14 @@ { "type": "reflection", "declaration": { - "id": 7745, + "id": 7748, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7747, + "id": 7750, "name": "branch", "variant": "declaration", "kind": 1024, @@ -33710,7 +33757,7 @@ } }, { - "id": 7746, + "id": 7749, "name": "code", "variant": "declaration", "kind": 1024, @@ -33723,7 +33770,7 @@ } }, { - "id": 7748, + "id": 7751, "name": "upstream", "variant": "declaration", "kind": 1024, @@ -33742,9 +33789,9 @@ { "title": "Properties", "children": [ - 7747, - 7746, - 7748 + 7750, + 7749, + 7751 ] } ] @@ -33753,14 +33800,14 @@ { "type": "reflection", "declaration": { - "id": 7749, + "id": 7752, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7750, + "id": 7753, "name": "code", "variant": "declaration", "kind": 1024, @@ -33773,7 +33820,7 @@ } }, { - "id": 7753, + "id": 7756, "name": "line", "variant": "declaration", "kind": 1024, @@ -33786,7 +33833,7 @@ } }, { - "id": 7752, + "id": 7755, "name": "source", "variant": "declaration", "kind": 1024, @@ -33799,7 +33846,7 @@ } }, { - "id": 7751, + "id": 7754, "name": "value", "variant": "declaration", "kind": 1024, @@ -33816,10 +33863,10 @@ { "title": "Properties", "children": [ - 7750, 7753, - 7752, - 7751 + 7756, + 7755, + 7754 ] } ] @@ -33828,14 +33875,14 @@ { "type": "reflection", "declaration": { - "id": 7754, + "id": 7757, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 7755, + "id": 7758, "name": "code", "variant": "declaration", "kind": 1024, @@ -33848,7 +33895,7 @@ } }, { - "id": 7756, + "id": 7759, "name": "length", "variant": "declaration", "kind": 1024, @@ -33861,7 +33908,7 @@ } }, { - "id": 7757, + "id": 7760, "name": "limit", "variant": "declaration", "kind": 1024, @@ -33878,9 +33925,9 @@ { "title": "Properties", "children": [ - 7755, - 7756, - 7757 + 7758, + 7759, + 7760 ] } ] @@ -33890,7 +33937,7 @@ } }, { - "id": 8118, + "id": 8121, "name": "ConflictType", "variant": "declaration", "kind": 2097152, @@ -33934,7 +33981,7 @@ } }, { - "id": 8188, + "id": 8191, "name": "ContentMerger", "variant": "declaration", "kind": 2097152, @@ -33942,34 +33989,34 @@ "type": { "type": "reflection", "declaration": { - "id": 8189, + "id": 8192, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "signatures": [ { - "id": 8190, + "id": 8193, "name": "__type", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8191, + "id": 8194, "name": "ctx", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8119, + "target": 8122, "name": "ContentMergeContext", "package": "@scolladon/tsgit" } }, { - "id": 8192, + "id": 8195, "name": "base", "variant": "param", "kind": 32768, @@ -33995,7 +34042,7 @@ } }, { - "id": 8193, + "id": 8196, "name": "ours", "variant": "param", "kind": 32768, @@ -34012,7 +34059,7 @@ } }, { - "id": 8194, + "id": 8197, "name": "theirs", "variant": "param", "kind": 32768, @@ -34042,7 +34089,7 @@ "typeArguments": [ { "type": "reference", - "target": 8127, + "target": 8130, "name": "ContentMergeResult", "package": "@scolladon/tsgit" } @@ -34052,7 +34099,7 @@ }, { "type": "reference", - "target": 8127, + "target": 8130, "name": "ContentMergeResult", "package": "@scolladon/tsgit" } @@ -34064,7 +34111,7 @@ } }, { - "id": 8127, + "id": 8130, "name": "ContentMergeResult", "variant": "declaration", "kind": 2097152, @@ -34075,14 +34122,14 @@ { "type": "reflection", "declaration": { - "id": 8128, + "id": 8131, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8130, + "id": 8133, "name": "bytes", "variant": "declaration", "kind": 1024, @@ -34101,7 +34148,7 @@ } }, { - "id": 8131, + "id": 8134, "name": "id", "variant": "declaration", "kind": 1024, @@ -34117,7 +34164,7 @@ } }, { - "id": 8129, + "id": 8132, "name": "status", "variant": "declaration", "kind": 1024, @@ -34134,9 +34181,9 @@ { "title": "Properties", "children": [ - 8130, - 8131, - 8129 + 8133, + 8134, + 8132 ] } ] @@ -34145,14 +34192,14 @@ { "type": "reflection", "declaration": { - "id": 8132, + "id": 8135, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8135, + "id": 8138, "name": "conflictType", "variant": "declaration", "kind": 1024, @@ -34174,7 +34221,7 @@ } }, { - "id": 8134, + "id": 8137, "name": "markedBytes", "variant": "declaration", "kind": 1024, @@ -34193,7 +34240,7 @@ } }, { - "id": 8133, + "id": 8136, "name": "status", "variant": "declaration", "kind": 1024, @@ -34210,9 +34257,9 @@ { "title": "Properties", "children": [ - 8135, - 8134, - 8133 + 8138, + 8137, + 8136 ] } ] @@ -34222,7 +34269,7 @@ } }, { - "id": 9100, + "id": 9103, "name": "CruftMtimesCheck", "variant": "declaration", "kind": 2097152, @@ -34306,7 +34353,7 @@ } }, { - "id": 9071, + "id": 9074, "name": "DeltaInstruction", "variant": "declaration", "kind": 2097152, @@ -34316,13 +34363,13 @@ "types": [ { "type": "reference", - "target": 9067, + "target": 9070, "name": "CopyInstruction", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 9076, + "target": 9079, "name": "InsertInstruction", "package": "@scolladon/tsgit" } @@ -34383,7 +34430,7 @@ } }, { - "id": 8450, + "id": 8453, "name": "GitExchange", "variant": "declaration", "kind": 2097152, @@ -34439,21 +34486,21 @@ "type": { "type": "reflection", "declaration": { - "id": 8451, + "id": 8454, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "signatures": [ { - "id": 8452, + "id": 8455, "name": "__type", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8453, + "id": 8456, "name": "requestBytes", "variant": "param", "kind": 32768, @@ -34488,7 +34535,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -34506,7 +34553,7 @@ } }, { - "id": 8059, + "id": 8062, "name": "IgnoreRuleset", "variant": "declaration", "kind": 2097152, @@ -34521,7 +34568,7 @@ "typeArguments": [ { "type": "reference", - "target": 8052, + "target": 8055, "name": "IgnoreRule", "package": "@scolladon/tsgit" } @@ -34531,7 +34578,7 @@ } }, { - "id": 8850, + "id": 8853, "name": "InflateAt", "variant": "declaration", "kind": 2097152, @@ -34539,21 +34586,21 @@ "type": { "type": "reflection", "declaration": { - "id": 8851, + "id": 8854, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "signatures": [ { - "id": 8852, + "id": 8855, "name": "__type", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8856, + "id": 8859, "name": "bytes", "variant": "param", "kind": 32768, @@ -34570,7 +34617,7 @@ } }, { - "id": 8857, + "id": 8860, "name": "offset", "variant": "param", "kind": 32768, @@ -34581,7 +34628,7 @@ } }, { - "id": 8858, + "id": 8861, "name": "maxOutputBytes", "variant": "param", "kind": 32768, @@ -34605,14 +34652,14 @@ { "type": "reflection", "declaration": { - "id": 8853, + "id": 8856, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8855, + "id": 8858, "name": "bytesConsumed", "variant": "declaration", "kind": 1024, @@ -34625,7 +34672,7 @@ } }, { - "id": 8854, + "id": 8857, "name": "output", "variant": "declaration", "kind": 1024, @@ -34648,8 +34695,8 @@ { "title": "Properties", "children": [ - 8855, - 8854 + 8858, + 8857 ] } ] @@ -34665,7 +34712,7 @@ } }, { - "id": 8767, + "id": 8770, "name": "LooseRef", "variant": "declaration", "kind": 2097152, @@ -34675,13 +34722,13 @@ "types": [ { "type": "reference", - "target": 8764, + "target": 8767, "name": "DirectRef", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 8776, + "target": 8779, "name": "SymbolicRef", "package": "@scolladon/tsgit" } @@ -34689,7 +34736,7 @@ } }, { - "id": 8020, + "id": 8023, "name": "MatchResult", "variant": "declaration", "kind": 2097152, @@ -34713,7 +34760,7 @@ } }, { - "id": 8179, + "id": 8182, "name": "MergeContentOptions", "variant": "declaration", "kind": 2097152, @@ -34723,21 +34770,21 @@ "types": [ { "type": "reference", - "target": 8110, + "target": 8113, "name": "ConflictMarkerOptions", "package": "@scolladon/tsgit" }, { "type": "reflection", "declaration": { - "id": 8180, + "id": 8183, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8181, + "id": 8184, "name": "favor", "variant": "declaration", "kind": 1024, @@ -34747,7 +34794,7 @@ }, "type": { "type": "reference", - "target": 8151, + "target": 8154, "name": "MergeFavor", "package": "@scolladon/tsgit" } @@ -34757,7 +34804,7 @@ { "title": "Properties", "children": [ - 8181 + 8184 ] } ] @@ -34767,7 +34814,7 @@ } }, { - "id": 8076, + "id": 8079, "name": "MergeError", "variant": "declaration", "kind": 2097152, @@ -34778,14 +34825,14 @@ { "type": "reflection", "declaration": { - "id": 8077, + "id": 8080, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8078, + "id": 8081, "name": "code", "variant": "declaration", "kind": 1024, @@ -34798,7 +34845,7 @@ } }, { - "id": 8079, + "id": 8082, "name": "reason", "variant": "declaration", "kind": 1024, @@ -34815,8 +34862,8 @@ { "title": "Properties", "children": [ - 8078, - 8079 + 8081, + 8082 ] } ] @@ -34825,14 +34872,14 @@ { "type": "reflection", "declaration": { - "id": 8080, + "id": 8083, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8081, + "id": 8084, "name": "code", "variant": "declaration", "kind": 1024, @@ -34845,7 +34892,7 @@ } }, { - "id": 8082, + "id": 8085, "name": "reason", "variant": "declaration", "kind": 1024, @@ -34862,8 +34909,8 @@ { "title": "Properties", "children": [ - 8081, - 8082 + 8084, + 8085 ] } ] @@ -34873,7 +34920,7 @@ } }, { - "id": 8151, + "id": 8154, "name": "MergeFavor", "variant": "declaration", "kind": 2097152, @@ -34917,7 +34964,7 @@ } }, { - "id": 8152, + "id": 8155, "name": "MergeOutcome", "variant": "declaration", "kind": 2097152, @@ -34928,14 +34975,14 @@ { "type": "reflection", "declaration": { - "id": 8153, + "id": 8156, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8156, + "id": 8159, "name": "id", "variant": "declaration", "kind": 1024, @@ -34950,7 +34997,7 @@ } }, { - "id": 8157, + "id": 8160, "name": "mode", "variant": "declaration", "kind": 1024, @@ -34965,7 +35012,7 @@ } }, { - "id": 8155, + "id": 8158, "name": "path", "variant": "declaration", "kind": 1024, @@ -34980,7 +35027,7 @@ } }, { - "id": 8154, + "id": 8157, "name": "status", "variant": "declaration", "kind": 1024, @@ -34997,10 +35044,10 @@ { "title": "Properties", "children": [ - 8156, - 8157, - 8155, - 8154 + 8159, + 8160, + 8158, + 8157 ] } ] @@ -35009,14 +35056,14 @@ { "type": "reflection", "declaration": { - "id": 8158, + "id": 8161, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8161, + "id": 8164, "name": "id", "variant": "declaration", "kind": 1024, @@ -35031,7 +35078,7 @@ } }, { - "id": 8162, + "id": 8165, "name": "mode", "variant": "declaration", "kind": 1024, @@ -35046,7 +35093,7 @@ } }, { - "id": 8160, + "id": 8163, "name": "path", "variant": "declaration", "kind": 1024, @@ -35061,7 +35108,7 @@ } }, { - "id": 8159, + "id": 8162, "name": "status", "variant": "declaration", "kind": 1024, @@ -35078,10 +35125,10 @@ { "title": "Properties", "children": [ - 8161, - 8162, - 8160, - 8159 + 8164, + 8165, + 8163, + 8162 ] } ] @@ -35090,14 +35137,14 @@ { "type": "reflection", "declaration": { - "id": 8163, + "id": 8166, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8166, + "id": 8169, "name": "bytes", "variant": "declaration", "kind": 1024, @@ -35116,7 +35163,7 @@ } }, { - "id": 8167, + "id": 8170, "name": "mode", "variant": "declaration", "kind": 1024, @@ -35131,7 +35178,7 @@ } }, { - "id": 8165, + "id": 8168, "name": "path", "variant": "declaration", "kind": 1024, @@ -35146,7 +35193,7 @@ } }, { - "id": 8164, + "id": 8167, "name": "status", "variant": "declaration", "kind": 1024, @@ -35163,10 +35210,10 @@ { "title": "Properties", "children": [ - 8166, - 8167, - 8165, - 8164 + 8169, + 8170, + 8168, + 8167 ] } ] @@ -35175,14 +35222,14 @@ { "type": "reflection", "declaration": { - "id": 8168, + "id": 8171, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8170, + "id": 8173, "name": "path", "variant": "declaration", "kind": 1024, @@ -35197,7 +35244,7 @@ } }, { - "id": 8169, + "id": 8172, "name": "status", "variant": "declaration", "kind": 1024, @@ -35214,8 +35261,8 @@ { "title": "Properties", "children": [ - 8170, - 8169 + 8173, + 8172 ] } ] @@ -35224,14 +35271,14 @@ { "type": "reflection", "declaration": { - "id": 8171, + "id": 8174, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8173, + "id": 8176, "name": "conflict", "variant": "declaration", "kind": 1024, @@ -35240,13 +35287,13 @@ }, "type": { "type": "reference", - "target": 8136, + "target": 8139, "name": "MergeConflict", "package": "@scolladon/tsgit" } }, { - "id": 8172, + "id": 8175, "name": "status", "variant": "declaration", "kind": 1024, @@ -35263,8 +35310,8 @@ { "title": "Properties", "children": [ - 8173, - 8172 + 8176, + 8175 ] } ] @@ -35274,7 +35321,7 @@ } }, { - "id": 9101, + "id": 9104, "name": "MidxCheck", "variant": "declaration", "kind": 2097152, @@ -35338,7 +35385,7 @@ } }, { - "id": 8421, + "id": 8424, "name": "ObjectFilter", "variant": "declaration", "kind": 2097152, @@ -35349,14 +35396,14 @@ { "type": "reflection", "declaration": { - "id": 8422, + "id": 8425, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8423, + "id": 8426, "name": "kind", "variant": "declaration", "kind": 1024, @@ -35373,7 +35420,7 @@ { "title": "Properties", "children": [ - 8423 + 8426 ] } ] @@ -35382,14 +35429,14 @@ { "type": "reflection", "declaration": { - "id": 8424, + "id": 8427, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8426, + "id": 8429, "name": "bytes", "variant": "declaration", "kind": 1024, @@ -35402,7 +35449,7 @@ } }, { - "id": 8425, + "id": 8428, "name": "kind", "variant": "declaration", "kind": 1024, @@ -35419,8 +35466,8 @@ { "title": "Properties", "children": [ - 8426, - 8425 + 8429, + 8428 ] } ] @@ -35429,14 +35476,14 @@ { "type": "reflection", "declaration": { - "id": 8427, + "id": 8430, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8429, + "id": 8432, "name": "depth", "variant": "declaration", "kind": 1024, @@ -35449,7 +35496,7 @@ } }, { - "id": 8428, + "id": 8431, "name": "kind", "variant": "declaration", "kind": 1024, @@ -35466,8 +35513,8 @@ { "title": "Properties", "children": [ - 8429, - 8428 + 8432, + 8431 ] } ] @@ -35530,7 +35577,7 @@ } }, { - "id": 9271, + "id": 9274, "name": "PackEntryHeader", "variant": "declaration", "kind": 2097152, @@ -35540,19 +35587,19 @@ "types": [ { "type": "reference", - "target": 9261, + "target": 9264, "name": "BasePackEntryHeader", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 9266, + "target": 9269, "name": "OfsPackEntryHeader", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 9276, + "target": 9279, "name": "RefPackEntryHeader", "package": "@scolladon/tsgit" } @@ -35560,7 +35607,7 @@ } }, { - "id": 9272, + "id": 9275, "name": "PackEntryType", "variant": "declaration", "kind": 2097152, @@ -35574,7 +35621,7 @@ "type": "query", "queryType": { "type": "reference", - "target": 9291, + "target": 9294, "name": "PACK_ENTRY_TYPE", "package": "@scolladon/tsgit" } @@ -35584,7 +35631,7 @@ "type": "query", "queryType": { "type": "reference", - "target": 9291, + "target": 9294, "name": "PACK_ENTRY_TYPE", "package": "@scolladon/tsgit" } @@ -35592,7 +35639,7 @@ } }, { - "id": 9381, + "id": 9384, "name": "PackWriterEntry", "variant": "declaration", "kind": 2097152, @@ -35602,13 +35649,13 @@ "types": [ { "type": "reference", - "target": 9372, + "target": 9375, "name": "PackWriterBaseEntry", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 9376, + "target": 9379, "name": "PackWriterDeltaEntry", "package": "@scolladon/tsgit" } @@ -35616,7 +35663,7 @@ } }, { - "id": 8455, + "id": 8458, "name": "PktLine", "variant": "declaration", "kind": 2097152, @@ -35627,14 +35674,14 @@ { "type": "reflection", "declaration": { - "id": 8456, + "id": 8459, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8457, + "id": 8460, "name": "kind", "variant": "declaration", "kind": 1024, @@ -35647,7 +35694,7 @@ } }, { - "id": 8458, + "id": 8461, "name": "payload", "variant": "declaration", "kind": 1024, @@ -35670,8 +35717,8 @@ { "title": "Properties", "children": [ - 8457, - 8458 + 8460, + 8461 ] } ] @@ -35680,14 +35727,14 @@ { "type": "reflection", "declaration": { - "id": 8459, + "id": 8462, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8460, + "id": 8463, "name": "kind", "variant": "declaration", "kind": 1024, @@ -35704,7 +35751,7 @@ { "title": "Properties", "children": [ - 8460 + 8463 ] } ] @@ -35713,14 +35760,14 @@ { "type": "reflection", "declaration": { - "id": 8461, + "id": 8464, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8462, + "id": 8465, "name": "kind", "variant": "declaration", "kind": 1024, @@ -35737,7 +35784,7 @@ { "title": "Properties", "children": [ - 8462 + 8465 ] } ] @@ -35746,14 +35793,14 @@ { "type": "reflection", "declaration": { - "id": 8463, + "id": 8466, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8464, + "id": 8467, "name": "kind", "variant": "declaration", "kind": 1024, @@ -35770,7 +35817,7 @@ { "title": "Properties", "children": [ - 8464 + 8467 ] } ] @@ -35780,7 +35827,7 @@ } }, { - "id": 8278, + "id": 8281, "name": "ProtocolError", "variant": "declaration", "kind": 2097152, @@ -35791,14 +35838,14 @@ { "type": "reflection", "declaration": { - "id": 8279, + "id": 8282, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8280, + "id": 8283, "name": "code", "variant": "declaration", "kind": 1024, @@ -35811,7 +35858,7 @@ } }, { - "id": 8281, + "id": 8284, "name": "value", "variant": "declaration", "kind": 1024, @@ -35828,8 +35875,8 @@ { "title": "Properties", "children": [ - 8280, - 8281 + 8283, + 8284 ] } ] @@ -35838,14 +35885,14 @@ { "type": "reflection", "declaration": { - "id": 8282, + "id": 8285, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8283, + "id": 8286, "name": "code", "variant": "declaration", "kind": 1024, @@ -35858,7 +35905,7 @@ } }, { - "id": 8284, + "id": 8287, "name": "value", "variant": "declaration", "kind": 1024, @@ -35875,8 +35922,8 @@ { "title": "Properties", "children": [ - 8283, - 8284 + 8286, + 8287 ] } ] @@ -35885,14 +35932,14 @@ { "type": "reflection", "declaration": { - "id": 8285, + "id": 8288, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8286, + "id": 8289, "name": "code", "variant": "declaration", "kind": 1024, @@ -35905,7 +35952,7 @@ } }, { - "id": 8287, + "id": 8290, "name": "value", "variant": "declaration", "kind": 1024, @@ -35922,8 +35969,8 @@ { "title": "Properties", "children": [ - 8286, - 8287 + 8289, + 8290 ] } ] @@ -35932,14 +35979,14 @@ { "type": "reflection", "declaration": { - "id": 8288, + "id": 8291, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8289, + "id": 8292, "name": "code", "variant": "declaration", "kind": 1024, @@ -35952,7 +35999,7 @@ } }, { - "id": 8290, + "id": 8293, "name": "remaining", "variant": "declaration", "kind": 1024, @@ -35969,8 +36016,8 @@ { "title": "Properties", "children": [ - 8289, - 8290 + 8292, + 8293 ] } ] @@ -35979,14 +36026,14 @@ { "type": "reflection", "declaration": { - "id": 8291, + "id": 8294, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8292, + "id": 8295, "name": "code", "variant": "declaration", "kind": 1024, @@ -35999,7 +36046,7 @@ } }, { - "id": 8293, + "id": 8296, "name": "reason", "variant": "declaration", "kind": 1024, @@ -36016,8 +36063,8 @@ { "title": "Properties", "children": [ - 8292, - 8293 + 8295, + 8296 ] } ] @@ -36026,14 +36073,14 @@ { "type": "reflection", "declaration": { - "id": 8294, + "id": 8297, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8297, + "id": 8300, "name": "actual", "variant": "declaration", "kind": 1024, @@ -36046,7 +36093,7 @@ } }, { - "id": 8295, + "id": 8298, "name": "code", "variant": "declaration", "kind": 1024, @@ -36059,7 +36106,7 @@ } }, { - "id": 8296, + "id": 8299, "name": "expected", "variant": "declaration", "kind": 1024, @@ -36076,9 +36123,9 @@ { "title": "Properties", "children": [ - 8297, - 8295, - 8296 + 8300, + 8298, + 8299 ] } ] @@ -36087,14 +36134,14 @@ { "type": "reflection", "declaration": { - "id": 8298, + "id": 8301, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8299, + "id": 8302, "name": "code", "variant": "declaration", "kind": 1024, @@ -36111,7 +36158,7 @@ { "title": "Properties", "children": [ - 8299 + 8302 ] } ] @@ -36120,14 +36167,14 @@ { "type": "reflection", "declaration": { - "id": 8300, + "id": 8303, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8301, + "id": 8304, "name": "code", "variant": "declaration", "kind": 1024, @@ -36140,7 +36187,7 @@ } }, { - "id": 8302, + "id": 8305, "name": "line", "variant": "declaration", "kind": 1024, @@ -36157,8 +36204,8 @@ { "title": "Properties", "children": [ - 8301, - 8302 + 8304, + 8305 ] } ] @@ -36167,14 +36214,14 @@ { "type": "reflection", "declaration": { - "id": 8303, + "id": 8306, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8304, + "id": 8307, "name": "code", "variant": "declaration", "kind": 1024, @@ -36187,7 +36234,7 @@ } }, { - "id": 8305, + "id": 8308, "name": "name", "variant": "declaration", "kind": 1024, @@ -36204,8 +36251,8 @@ { "title": "Properties", "children": [ - 8304, - 8305 + 8307, + 8308 ] } ] @@ -36214,14 +36261,14 @@ { "type": "reflection", "declaration": { - "id": 8306, + "id": 8309, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8308, + "id": 8311, "name": "channel", "variant": "declaration", "kind": 1024, @@ -36234,7 +36281,7 @@ } }, { - "id": 8307, + "id": 8310, "name": "code", "variant": "declaration", "kind": 1024, @@ -36251,8 +36298,8 @@ { "title": "Properties", "children": [ - 8308, - 8307 + 8311, + 8310 ] } ] @@ -36261,14 +36308,14 @@ { "type": "reflection", "declaration": { - "id": 8309, + "id": 8312, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8310, + "id": 8313, "name": "code", "variant": "declaration", "kind": 1024, @@ -36281,7 +36328,7 @@ } }, { - "id": 8311, + "id": 8314, "name": "message", "variant": "declaration", "kind": 1024, @@ -36298,8 +36345,8 @@ { "title": "Properties", "children": [ - 8310, - 8311 + 8313, + 8314 ] } ] @@ -36308,14 +36355,14 @@ { "type": "reflection", "declaration": { - "id": 8312, + "id": 8315, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8313, + "id": 8316, "name": "code", "variant": "declaration", "kind": 1024, @@ -36328,7 +36375,7 @@ } }, { - "id": 8314, + "id": 8317, "name": "value", "variant": "declaration", "kind": 1024, @@ -36345,8 +36392,8 @@ { "title": "Properties", "children": [ - 8313, - 8314 + 8316, + 8317 ] } ] @@ -36355,14 +36402,14 @@ { "type": "reflection", "declaration": { - "id": 8315, + "id": 8318, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8316, + "id": 8319, "name": "code", "variant": "declaration", "kind": 1024, @@ -36375,7 +36422,7 @@ } }, { - "id": 8317, + "id": 8320, "name": "line", "variant": "declaration", "kind": 1024, @@ -36392,8 +36439,8 @@ { "title": "Properties", "children": [ - 8316, - 8317 + 8319, + 8320 ] } ] @@ -36402,14 +36449,14 @@ { "type": "reflection", "declaration": { - "id": 8318, + "id": 8321, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8319, + "id": 8322, "name": "code", "variant": "declaration", "kind": 1024, @@ -36426,7 +36473,7 @@ { "title": "Properties", "children": [ - 8319 + 8322 ] } ] @@ -36435,14 +36482,14 @@ { "type": "reflection", "declaration": { - "id": 8320, + "id": 8323, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8321, + "id": 8324, "name": "code", "variant": "declaration", "kind": 1024, @@ -36459,7 +36506,7 @@ { "title": "Properties", "children": [ - 8321 + 8324 ] } ] @@ -36468,14 +36515,14 @@ { "type": "reflection", "declaration": { - "id": 8322, + "id": 8325, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8323, + "id": 8326, "name": "code", "variant": "declaration", "kind": 1024, @@ -36488,7 +36535,7 @@ } }, { - "id": 8324, + "id": 8327, "name": "raw", "variant": "declaration", "kind": 1024, @@ -36501,7 +36548,7 @@ } }, { - "id": 8325, + "id": 8328, "name": "reason", "variant": "declaration", "kind": 1024, @@ -36518,9 +36565,9 @@ { "title": "Properties", "children": [ - 8323, - 8324, - 8325 + 8326, + 8327, + 8328 ] } ] @@ -36529,14 +36576,14 @@ { "type": "reflection", "declaration": { - "id": 8326, + "id": 8329, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8327, + "id": 8330, "name": "code", "variant": "declaration", "kind": 1024, @@ -36549,7 +36596,7 @@ } }, { - "id": 8328, + "id": 8331, "name": "count", "variant": "declaration", "kind": 1024, @@ -36562,7 +36609,7 @@ } }, { - "id": 8329, + "id": 8332, "name": "limit", "variant": "declaration", "kind": 1024, @@ -36579,9 +36626,9 @@ { "title": "Properties", "children": [ - 8327, - 8328, - 8329 + 8330, + 8331, + 8332 ] } ] @@ -36590,14 +36637,14 @@ { "type": "reflection", "declaration": { - "id": 8330, + "id": 8333, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8331, + "id": 8334, "name": "code", "variant": "declaration", "kind": 1024, @@ -36610,7 +36657,7 @@ } }, { - "id": 8333, + "id": 8336, "name": "reason", "variant": "declaration", "kind": 1024, @@ -36623,7 +36670,7 @@ } }, { - "id": 8332, + "id": 8335, "name": "spec", "variant": "declaration", "kind": 1024, @@ -36640,9 +36687,9 @@ { "title": "Properties", "children": [ - 8331, - 8333, - 8332 + 8334, + 8336, + 8335 ] } ] @@ -36651,14 +36698,14 @@ { "type": "reflection", "declaration": { - "id": 8334, + "id": 8337, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8335, + "id": 8338, "name": "code", "variant": "declaration", "kind": 1024, @@ -36675,7 +36722,7 @@ { "title": "Properties", "children": [ - 8335 + 8338 ] } ] @@ -36684,14 +36731,14 @@ { "type": "reflection", "declaration": { - "id": 8336, + "id": 8339, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8337, + "id": 8340, "name": "code", "variant": "declaration", "kind": 1024, @@ -36704,7 +36751,7 @@ } }, { - "id": 8338, + "id": 8341, "name": "section", "variant": "declaration", "kind": 1024, @@ -36721,8 +36768,8 @@ { "title": "Properties", "children": [ - 8337, - 8338 + 8340, + 8341 ] } ] @@ -36731,14 +36778,14 @@ { "type": "reflection", "declaration": { - "id": 8339, + "id": 8342, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8340, + "id": 8343, "name": "code", "variant": "declaration", "kind": 1024, @@ -36751,7 +36798,7 @@ } }, { - "id": 8341, + "id": 8344, "name": "command", "variant": "declaration", "kind": 1024, @@ -36768,8 +36815,8 @@ { "title": "Properties", "children": [ - 8340, - 8341 + 8343, + 8344 ] } ] @@ -36778,14 +36825,14 @@ { "type": "reflection", "declaration": { - "id": 8342, + "id": 8345, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8343, + "id": 8346, "name": "code", "variant": "declaration", "kind": 1024, @@ -36798,7 +36845,7 @@ } }, { - "id": 8345, + "id": 8348, "name": "count", "variant": "declaration", "kind": 1024, @@ -36811,7 +36858,7 @@ } }, { - "id": 8346, + "id": 8349, "name": "limit", "variant": "declaration", "kind": 1024, @@ -36824,7 +36871,7 @@ } }, { - "id": 8344, + "id": 8347, "name": "section", "variant": "declaration", "kind": 1024, @@ -36841,10 +36888,10 @@ { "title": "Properties", "children": [ - 8343, - 8345, 8346, - 8344 + 8348, + 8349, + 8347 ] } ] @@ -36853,14 +36900,14 @@ { "type": "reflection", "declaration": { - "id": 8347, + "id": 8350, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8348, + "id": 8351, "name": "code", "variant": "declaration", "kind": 1024, @@ -36873,7 +36920,7 @@ } }, { - "id": 8349, + "id": 8352, "name": "format", "variant": "declaration", "kind": 1024, @@ -36894,7 +36941,7 @@ } }, { - "id": 8350, + "id": 8353, "name": "local", "variant": "declaration", "kind": 1024, @@ -36920,9 +36967,9 @@ { "title": "Properties", "children": [ - 8348, - 8349, - 8350 + 8351, + 8352, + 8353 ] } ] @@ -36931,14 +36978,14 @@ { "type": "reflection", "declaration": { - "id": 8351, + "id": 8354, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8352, + "id": 8355, "name": "code", "variant": "declaration", "kind": 1024, @@ -36951,7 +36998,7 @@ } }, { - "id": 8353, + "id": 8356, "name": "local", "variant": "declaration", "kind": 1024, @@ -36964,7 +37011,7 @@ } }, { - "id": 8354, + "id": 8357, "name": "remote", "variant": "declaration", "kind": 1024, @@ -36981,9 +37028,9 @@ { "title": "Properties", "children": [ - 8352, - 8353, - 8354 + 8355, + 8356, + 8357 ] } ] @@ -36993,7 +37040,7 @@ } }, { - "id": 8643, + "id": 8646, "name": "ReflogError", "variant": "declaration", "kind": 2097152, @@ -37004,14 +37051,14 @@ { "type": "reflection", "declaration": { - "id": 8644, + "id": 8647, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8645, + "id": 8648, "name": "code", "variant": "declaration", "kind": 1024, @@ -37024,7 +37071,7 @@ } }, { - "id": 8646, + "id": 8649, "name": "reason", "variant": "declaration", "kind": 1024, @@ -37041,8 +37088,8 @@ { "title": "Properties", "children": [ - 8645, - 8646 + 8648, + 8649 ] } ] @@ -37051,14 +37098,14 @@ { "type": "reflection", "declaration": { - "id": 8647, + "id": 8650, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8648, + "id": 8651, "name": "code", "variant": "declaration", "kind": 1024, @@ -37071,7 +37118,7 @@ } }, { - "id": 8649, + "id": 8652, "name": "ref", "variant": "declaration", "kind": 1024, @@ -37090,8 +37137,8 @@ { "title": "Properties", "children": [ - 8648, - 8649 + 8651, + 8652 ] } ] @@ -37100,14 +37147,14 @@ { "type": "reflection", "declaration": { - "id": 8650, + "id": 8653, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8654, + "id": 8657, "name": "available", "variant": "declaration", "kind": 1024, @@ -37120,7 +37167,7 @@ } }, { - "id": 8651, + "id": 8654, "name": "code", "variant": "declaration", "kind": 1024, @@ -37133,7 +37180,7 @@ } }, { - "id": 8652, + "id": 8655, "name": "ref", "variant": "declaration", "kind": 1024, @@ -37148,7 +37195,7 @@ } }, { - "id": 8653, + "id": 8656, "name": "requested", "variant": "declaration", "kind": 1024, @@ -37165,10 +37212,10 @@ { "title": "Properties", "children": [ + 8657, 8654, - 8651, - 8652, - 8653 + 8655, + 8656 ] } ] @@ -37231,7 +37278,7 @@ } }, { - "id": 8689, + "id": 8692, "name": "RefsError", "variant": "declaration", "kind": 2097152, @@ -37242,14 +37289,14 @@ { "type": "reflection", "declaration": { - "id": 8690, + "id": 8693, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8691, + "id": 8694, "name": "code", "variant": "declaration", "kind": 1024, @@ -37262,7 +37309,7 @@ } }, { - "id": 8692, + "id": 8695, "name": "reason", "variant": "declaration", "kind": 1024, @@ -37279,8 +37326,8 @@ { "title": "Properties", "children": [ - 8691, - 8692 + 8694, + 8695 ] } ] @@ -37289,14 +37336,14 @@ { "type": "reflection", "declaration": { - "id": 8693, + "id": 8696, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8694, + "id": 8697, "name": "code", "variant": "declaration", "kind": 1024, @@ -37309,7 +37356,7 @@ } }, { - "id": 8695, + "id": 8698, "name": "reason", "variant": "declaration", "kind": 1024, @@ -37326,8 +37373,8 @@ { "title": "Properties", "children": [ - 8694, - 8695 + 8697, + 8698 ] } ] @@ -37336,14 +37383,14 @@ { "type": "reflection", "declaration": { - "id": 8696, + "id": 8699, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8698, + "id": 8701, "name": "check", "variant": "declaration", "kind": 1024, @@ -37352,13 +37399,13 @@ }, "type": { "type": "reference", - "target": 8722, + "target": 8725, "name": "ReftableCheck", "package": "@scolladon/tsgit" } }, { - "id": 8697, + "id": 8700, "name": "code", "variant": "declaration", "kind": 1024, @@ -37371,7 +37418,7 @@ } }, { - "id": 8699, + "id": 8702, "name": "reason", "variant": "declaration", "kind": 1024, @@ -37388,9 +37435,9 @@ { "title": "Properties", "children": [ - 8698, - 8697, - 8699 + 8701, + 8700, + 8702 ] } ] @@ -37399,14 +37446,14 @@ { "type": "reflection", "declaration": { - "id": 8700, + "id": 8703, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8701, + "id": 8704, "name": "code", "variant": "declaration", "kind": 1024, @@ -37419,7 +37466,7 @@ } }, { - "id": 8702, + "id": 8705, "name": "name", "variant": "declaration", "kind": 1024, @@ -37438,8 +37485,8 @@ { "title": "Properties", "children": [ - 8701, - 8702 + 8704, + 8705 ] } ] @@ -37448,14 +37495,14 @@ { "type": "reflection", "declaration": { - "id": 8703, + "id": 8706, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8706, + "id": 8709, "name": "chain", "variant": "declaration", "kind": 1024, @@ -37482,7 +37529,7 @@ } }, { - "id": 8704, + "id": 8707, "name": "code", "variant": "declaration", "kind": 1024, @@ -37495,7 +37542,7 @@ } }, { - "id": 8705, + "id": 8708, "name": "depth", "variant": "declaration", "kind": 1024, @@ -37512,9 +37559,9 @@ { "title": "Properties", "children": [ - 8706, - 8704, - 8705 + 8709, + 8707, + 8708 ] } ] @@ -37523,14 +37570,14 @@ { "type": "reflection", "declaration": { - "id": 8707, + "id": 8710, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8709, + "id": 8712, "name": "chain", "variant": "declaration", "kind": 1024, @@ -37557,7 +37604,7 @@ } }, { - "id": 8708, + "id": 8711, "name": "code", "variant": "declaration", "kind": 1024, @@ -37574,8 +37621,8 @@ { "title": "Properties", "children": [ - 8709, - 8708 + 8712, + 8711 ] } ] @@ -37584,14 +37631,14 @@ { "type": "reflection", "declaration": { - "id": 8710, + "id": 8713, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8711, + "id": 8714, "name": "code", "variant": "declaration", "kind": 1024, @@ -37604,7 +37651,7 @@ } }, { - "id": 8712, + "id": 8715, "name": "name", "variant": "declaration", "kind": 1024, @@ -37623,8 +37670,8 @@ { "title": "Properties", "children": [ - 8711, - 8712 + 8714, + 8715 ] } ] @@ -37633,14 +37680,14 @@ { "type": "reflection", "declaration": { - "id": 8713, + "id": 8716, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8717, + "id": 8720, "name": "actual", "variant": "declaration", "kind": 1024, @@ -37664,7 +37711,7 @@ } }, { - "id": 8714, + "id": 8717, "name": "code", "variant": "declaration", "kind": 1024, @@ -37677,7 +37724,7 @@ } }, { - "id": 8716, + "id": 8719, "name": "expected", "variant": "declaration", "kind": 1024, @@ -37701,7 +37748,7 @@ } }, { - "id": 8715, + "id": 8718, "name": "name", "variant": "declaration", "kind": 1024, @@ -37720,10 +37767,10 @@ { "title": "Properties", "children": [ + 8720, 8717, - 8714, - 8716, - 8715 + 8719, + 8718 ] } ] @@ -37732,14 +37779,14 @@ { "type": "reflection", "declaration": { - "id": 8718, + "id": 8721, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8719, + "id": 8722, "name": "code", "variant": "declaration", "kind": 1024, @@ -37752,7 +37799,7 @@ } }, { - "id": 8721, + "id": 8724, "name": "reason", "variant": "declaration", "kind": 1024, @@ -37765,7 +37812,7 @@ } }, { - "id": 8720, + "id": 8723, "name": "stack", "variant": "declaration", "kind": 1024, @@ -37782,9 +37829,9 @@ { "title": "Properties", "children": [ - 8719, - 8721, - 8720 + 8722, + 8724, + 8723 ] } ] @@ -37794,7 +37841,7 @@ } }, { - "id": 8722, + "id": 8725, "name": "ReftableCheck", "variant": "declaration", "kind": 2097152, @@ -37970,7 +38017,7 @@ } }, { - "id": 8789, + "id": 8792, "name": "ReftableRefValue", "variant": "declaration", "kind": 2097152, @@ -37981,14 +38028,14 @@ { "type": "reflection", "declaration": { - "id": 8790, + "id": 8793, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8791, + "id": 8794, "name": "kind", "variant": "declaration", "kind": 1024, @@ -38005,7 +38052,7 @@ { "title": "Properties", "children": [ - 8791 + 8794 ] } ] @@ -38014,14 +38061,14 @@ { "type": "reflection", "declaration": { - "id": 8792, + "id": 8795, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8794, + "id": 8797, "name": "id", "variant": "declaration", "kind": 1024, @@ -38036,7 +38083,7 @@ } }, { - "id": 8793, + "id": 8796, "name": "kind", "variant": "declaration", "kind": 1024, @@ -38053,8 +38100,8 @@ { "title": "Properties", "children": [ - 8794, - 8793 + 8797, + 8796 ] } ] @@ -38063,14 +38110,14 @@ { "type": "reflection", "declaration": { - "id": 8795, + "id": 8798, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8797, + "id": 8800, "name": "id", "variant": "declaration", "kind": 1024, @@ -38085,7 +38132,7 @@ } }, { - "id": 8796, + "id": 8799, "name": "kind", "variant": "declaration", "kind": 1024, @@ -38098,7 +38145,7 @@ } }, { - "id": 8798, + "id": 8801, "name": "peeled", "variant": "declaration", "kind": 1024, @@ -38117,9 +38164,9 @@ { "title": "Properties", "children": [ - 8797, - 8796, - 8798 + 8800, + 8799, + 8801 ] } ] @@ -38128,14 +38175,14 @@ { "type": "reflection", "declaration": { - "id": 8799, + "id": 8802, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8800, + "id": 8803, "name": "kind", "variant": "declaration", "kind": 1024, @@ -38148,7 +38195,7 @@ } }, { - "id": 8801, + "id": 8804, "name": "target", "variant": "declaration", "kind": 1024, @@ -38167,8 +38214,8 @@ { "title": "Properties", "children": [ - 8800, - 8801 + 8803, + 8804 ] } ] @@ -38178,7 +38225,7 @@ } }, { - "id": 8915, + "id": 8918, "name": "RepositoryError", "variant": "declaration", "kind": 2097152, @@ -38189,14 +38236,14 @@ { "type": "reflection", "declaration": { - "id": 8916, + "id": 8919, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8917, + "id": 8920, "name": "code", "variant": "declaration", "kind": 1024, @@ -38209,7 +38256,7 @@ } }, { - "id": 8918, + "id": 8921, "name": "path", "variant": "declaration", "kind": 1024, @@ -38228,8 +38275,8 @@ { "title": "Properties", "children": [ - 8917, - 8918 + 8920, + 8921 ] } ] @@ -38238,14 +38285,14 @@ { "type": "reflection", "declaration": { - "id": 8919, + "id": 8922, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8920, + "id": 8923, "name": "code", "variant": "declaration", "kind": 1024, @@ -38258,7 +38305,7 @@ } }, { - "id": 8921, + "id": 8924, "name": "operation", "variant": "declaration", "kind": 1024, @@ -38275,8 +38322,8 @@ { "title": "Properties", "children": [ - 8920, - 8921 + 8923, + 8924 ] } ] @@ -38285,14 +38332,14 @@ { "type": "reflection", "declaration": { - "id": 8922, + "id": 8925, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8923, + "id": 8926, "name": "code", "variant": "declaration", "kind": 1024, @@ -38305,7 +38352,7 @@ } }, { - "id": 8924, + "id": 8927, "name": "operation", "variant": "declaration", "kind": 1024, @@ -38322,8 +38369,8 @@ { "title": "Properties", "children": [ - 8923, - 8924 + 8926, + 8927 ] } ] @@ -38332,14 +38379,14 @@ { "type": "reflection", "declaration": { - "id": 8925, + "id": 8928, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8926, + "id": 8929, "name": "code", "variant": "declaration", "kind": 1024, @@ -38352,7 +38399,7 @@ } }, { - "id": 8927, + "id": 8930, "name": "gitDir", "variant": "declaration", "kind": 1024, @@ -38369,8 +38416,8 @@ { "title": "Properties", "children": [ - 8926, - 8927 + 8929, + 8930 ] } ] @@ -38379,14 +38426,14 @@ { "type": "reflection", "declaration": { - "id": 8928, + "id": 8931, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8929, + "id": 8932, "name": "code", "variant": "declaration", "kind": 1024, @@ -38399,7 +38446,7 @@ } }, { - "id": 8931, + "id": 8934, "name": "gitDir", "variant": "declaration", "kind": 1024, @@ -38412,7 +38459,7 @@ } }, { - "id": 8930, + "id": 8933, "name": "value", "variant": "declaration", "kind": 1024, @@ -38429,9 +38476,9 @@ { "title": "Properties", "children": [ - 8929, - 8931, - 8930 + 8932, + 8934, + 8933 ] } ] @@ -38440,14 +38487,14 @@ { "type": "reflection", "declaration": { - "id": 8932, + "id": 8935, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8933, + "id": 8936, "name": "code", "variant": "declaration", "kind": 1024, @@ -38460,7 +38507,7 @@ } }, { - "id": 8934, + "id": 8937, "name": "path", "variant": "declaration", "kind": 1024, @@ -38479,8 +38526,8 @@ { "title": "Properties", "children": [ - 8933, - 8934 + 8936, + 8937 ] } ] @@ -38489,14 +38536,14 @@ { "type": "reflection", "declaration": { - "id": 8935, + "id": 8938, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8936, + "id": 8939, "name": "code", "variant": "declaration", "kind": 1024, @@ -38509,7 +38556,7 @@ } }, { - "id": 8937, + "id": 8940, "name": "version", "variant": "declaration", "kind": 1024, @@ -38526,8 +38573,8 @@ { "title": "Properties", "children": [ - 8936, - 8937 + 8939, + 8940 ] } ] @@ -38536,14 +38583,14 @@ { "type": "reflection", "declaration": { - "id": 8938, + "id": 8941, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8939, + "id": 8942, "name": "code", "variant": "declaration", "kind": 1024, @@ -38556,7 +38603,7 @@ } }, { - "id": 8941, + "id": 8944, "name": "extensions", "variant": "declaration", "kind": 1024, @@ -38581,7 +38628,7 @@ } }, { - "id": 8940, + "id": 8943, "name": "version", "variant": "declaration", "kind": 1024, @@ -38598,9 +38645,9 @@ { "title": "Properties", "children": [ - 8939, - 8941, - 8940 + 8942, + 8944, + 8943 ] } ] @@ -38609,14 +38656,14 @@ { "type": "reflection", "declaration": { - "id": 8942, + "id": 8945, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8943, + "id": 8946, "name": "code", "variant": "declaration", "kind": 1024, @@ -38629,7 +38676,7 @@ } }, { - "id": 8944, + "id": 8947, "name": "extension", "variant": "declaration", "kind": 1024, @@ -38642,7 +38689,7 @@ } }, { - "id": 8945, + "id": 8948, "name": "value", "variant": "declaration", "kind": 1024, @@ -38659,9 +38706,9 @@ { "title": "Properties", "children": [ - 8943, - 8944, - 8945 + 8946, + 8947, + 8948 ] } ] @@ -38670,14 +38717,14 @@ { "type": "reflection", "declaration": { - "id": 8946, + "id": 8949, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8947, + "id": 8950, "name": "code", "variant": "declaration", "kind": 1024, @@ -38690,7 +38737,7 @@ } }, { - "id": 8949, + "id": 8952, "name": "foreignPath", "variant": "declaration", "kind": 1024, @@ -38706,7 +38753,7 @@ } }, { - "id": 8948, + "id": 8951, "name": "path", "variant": "declaration", "kind": 1024, @@ -38725,9 +38772,9 @@ { "title": "Properties", "children": [ - 8947, - 8949, - 8948 + 8950, + 8952, + 8951 ] } ] @@ -38736,14 +38783,14 @@ { "type": "reflection", "declaration": { - "id": 8950, + "id": 8953, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8951, + "id": 8954, "name": "code", "variant": "declaration", "kind": 1024, @@ -38756,7 +38803,7 @@ } }, { - "id": 8952, + "id": 8955, "name": "gitDir", "variant": "declaration", "kind": 1024, @@ -38773,8 +38820,8 @@ { "title": "Properties", "children": [ - 8951, - 8952 + 8954, + 8955 ] } ] @@ -38784,7 +38831,7 @@ } }, { - "id": 9102, + "id": 9105, "name": "RevIndexCheck", "variant": "declaration", "kind": 2097152, @@ -38828,7 +38875,7 @@ } }, { - "id": 8607, + "id": 8610, "name": "Section", "variant": "declaration", "kind": 2097152, @@ -38867,7 +38914,7 @@ }, "children": [ { - "id": 8610, + "id": 8613, "name": "lines", "variant": "declaration", "kind": 1024, @@ -38898,7 +38945,7 @@ } }, { - "id": 8609, + "id": 8612, "name": "name", "variant": "declaration", "kind": 1024, @@ -38907,7 +38954,7 @@ }, "type": { "type": "reference", - "target": 8611, + "target": 8614, "name": "SectionName", "package": "@scolladon/tsgit" } @@ -38917,14 +38964,14 @@ { "title": "Properties", "children": [ - 8610, - 8609 + 8613, + 8612 ] } ] }, { - "id": 8611, + "id": 8614, "name": "SectionName", "variant": "declaration", "kind": 2097152, @@ -38952,7 +38999,7 @@ } }, { - "id": 8534, + "id": 8537, "name": "Service", "variant": "declaration", "kind": 2097152, @@ -38972,7 +39019,7 @@ } }, { - "id": 9020, + "id": 9023, "name": "SparseSpec", "variant": "declaration", "kind": 2097152, @@ -39007,14 +39054,14 @@ { "type": "reflection", "declaration": { - "id": 9021, + "id": 9024, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9022, + "id": 9025, "name": "mode", "variant": "declaration", "kind": 1024, @@ -39027,7 +39074,7 @@ } }, { - "id": 9024, + "id": 9027, "name": "parents", "variant": "declaration", "kind": 1024, @@ -39060,7 +39107,7 @@ } }, { - "id": 9023, + "id": 9026, "name": "recursive", "variant": "declaration", "kind": 1024, @@ -39097,9 +39144,9 @@ { "title": "Properties", "children": [ - 9022, - 9024, - 9023 + 9025, + 9027, + 9026 ] } ] @@ -39108,14 +39155,14 @@ { "type": "reflection", "declaration": { - "id": 9025, + "id": 9028, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9026, + "id": 9029, "name": "mode", "variant": "declaration", "kind": 1024, @@ -39128,7 +39175,7 @@ } }, { - "id": 9027, + "id": 9030, "name": "rules", "variant": "declaration", "kind": 1024, @@ -39145,7 +39192,7 @@ "typeArguments": [ { "type": "reference", - "target": 9016, + "target": 9019, "name": "SparseRule", "package": "@scolladon/tsgit" } @@ -39159,8 +39206,8 @@ { "title": "Properties", "children": [ - 9026, - 9027 + 9029, + 9030 ] } ] @@ -39170,7 +39217,7 @@ } }, { - "id": 9103, + "id": 9106, "name": "StorageError", "variant": "declaration", "kind": 2097152, @@ -39181,14 +39228,14 @@ { "type": "reflection", "declaration": { - "id": 9104, + "id": 9107, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9105, + "id": 9108, "name": "code", "variant": "declaration", "kind": 1024, @@ -39201,7 +39248,7 @@ } }, { - "id": 9106, + "id": 9109, "name": "reason", "variant": "declaration", "kind": 1024, @@ -39218,8 +39265,8 @@ { "title": "Properties", "children": [ - 9105, - 9106 + 9108, + 9109 ] } ] @@ -39228,14 +39275,14 @@ { "type": "reflection", "declaration": { - "id": 9107, + "id": 9110, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9108, + "id": 9111, "name": "code", "variant": "declaration", "kind": 1024, @@ -39248,7 +39295,7 @@ } }, { - "id": 9109, + "id": 9112, "name": "reason", "variant": "declaration", "kind": 1024, @@ -39265,8 +39312,8 @@ { "title": "Properties", "children": [ - 9108, - 9109 + 9111, + 9112 ] } ] @@ -39275,14 +39322,14 @@ { "type": "reflection", "declaration": { - "id": 9110, + "id": 9113, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9111, + "id": 9114, "name": "code", "variant": "declaration", "kind": 1024, @@ -39295,7 +39342,7 @@ } }, { - "id": 9112, + "id": 9115, "name": "offset", "variant": "declaration", "kind": 1024, @@ -39308,7 +39355,7 @@ } }, { - "id": 9113, + "id": 9116, "name": "reason", "variant": "declaration", "kind": 1024, @@ -39325,9 +39372,9 @@ { "title": "Properties", "children": [ - 9111, - 9112, - 9113 + 9114, + 9115, + 9116 ] } ] @@ -39336,14 +39383,14 @@ { "type": "reflection", "declaration": { - "id": 9114, + "id": 9117, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9115, + "id": 9118, "name": "code", "variant": "declaration", "kind": 1024, @@ -39356,7 +39403,7 @@ } }, { - "id": 9116, + "id": 9119, "name": "reason", "variant": "declaration", "kind": 1024, @@ -39373,8 +39420,8 @@ { "title": "Properties", "children": [ - 9115, - 9116 + 9118, + 9119 ] } ] @@ -39383,14 +39430,14 @@ { "type": "reflection", "declaration": { - "id": 9117, + "id": 9120, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9118, + "id": 9121, "name": "code", "variant": "declaration", "kind": 1024, @@ -39403,7 +39450,7 @@ } }, { - "id": 9119, + "id": 9122, "name": "depth", "variant": "declaration", "kind": 1024, @@ -39420,8 +39467,8 @@ { "title": "Properties", "children": [ - 9118, - 9119 + 9121, + 9122 ] } ] @@ -39430,14 +39477,14 @@ { "type": "reflection", "declaration": { - "id": 9120, + "id": 9123, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9123, + "id": 9126, "name": "check", "variant": "declaration", "kind": 1024, @@ -39446,13 +39493,13 @@ }, "type": { "type": "reference", - "target": 9101, + "target": 9104, "name": "MidxCheck", "package": "@scolladon/tsgit" } }, { - "id": 9121, + "id": 9124, "name": "code", "variant": "declaration", "kind": 1024, @@ -39465,7 +39512,7 @@ } }, { - "id": 9122, + "id": 9125, "name": "reason", "variant": "declaration", "kind": 1024, @@ -39482,9 +39529,9 @@ { "title": "Properties", "children": [ - 9123, - 9121, - 9122 + 9126, + 9124, + 9125 ] } ] @@ -39493,14 +39540,14 @@ { "type": "reflection", "declaration": { - "id": 9124, + "id": 9127, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9127, + "id": 9130, "name": "check", "variant": "declaration", "kind": 1024, @@ -39509,13 +39556,13 @@ }, "type": { "type": "reference", - "target": 9102, + "target": 9105, "name": "RevIndexCheck", "package": "@scolladon/tsgit" } }, { - "id": 9125, + "id": 9128, "name": "code", "variant": "declaration", "kind": 1024, @@ -39528,7 +39575,7 @@ } }, { - "id": 9126, + "id": 9129, "name": "reason", "variant": "declaration", "kind": 1024, @@ -39545,9 +39592,9 @@ { "title": "Properties", "children": [ - 9127, - 9125, - 9126 + 9130, + 9128, + 9129 ] } ] @@ -39556,14 +39603,14 @@ { "type": "reflection", "declaration": { - "id": 9128, + "id": 9131, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9131, + "id": 9134, "name": "check", "variant": "declaration", "kind": 1024, @@ -39572,13 +39619,13 @@ }, "type": { "type": "reference", - "target": 9099, + "target": 9102, "name": "BitmapCheck", "package": "@scolladon/tsgit" } }, { - "id": 9129, + "id": 9132, "name": "code", "variant": "declaration", "kind": 1024, @@ -39591,7 +39638,7 @@ } }, { - "id": 9130, + "id": 9133, "name": "reason", "variant": "declaration", "kind": 1024, @@ -39608,9 +39655,9 @@ { "title": "Properties", "children": [ - 9131, - 9129, - 9130 + 9134, + 9132, + 9133 ] } ] @@ -39619,14 +39666,14 @@ { "type": "reflection", "declaration": { - "id": 9132, + "id": 9135, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9135, + "id": 9138, "name": "check", "variant": "declaration", "kind": 1024, @@ -39635,13 +39682,13 @@ }, "type": { "type": "reference", - "target": 9100, + "target": 9103, "name": "CruftMtimesCheck", "package": "@scolladon/tsgit" } }, { - "id": 9133, + "id": 9136, "name": "code", "variant": "declaration", "kind": 1024, @@ -39654,7 +39701,7 @@ } }, { - "id": 9134, + "id": 9137, "name": "reason", "variant": "declaration", "kind": 1024, @@ -39671,9 +39718,9 @@ { "title": "Properties", "children": [ - 9135, - 9133, - 9134 + 9138, + 9136, + 9137 ] } ] @@ -39683,14 +39730,14 @@ } }, { - "id": 8615, + "id": 8618, "name": "V2Capabilities", "variant": "declaration", "kind": 2097152, "flags": {}, "children": [ { - "id": 8618, + "id": 8621, "name": "agent", "variant": "declaration", "kind": 1024, @@ -39704,7 +39751,7 @@ } }, { - "id": 8619, + "id": 8622, "name": "commands", "variant": "declaration", "kind": 1024, @@ -39729,7 +39776,7 @@ } }, { - "id": 8620, + "id": 8623, "name": "fetchFeatures", "variant": "declaration", "kind": 1024, @@ -39810,7 +39857,7 @@ } }, { - "id": 8621, + "id": 8624, "name": "objectFormat", "variant": "declaration", "kind": 1024, @@ -39823,7 +39870,7 @@ } }, { - "id": 8617, + "id": 8620, "name": "version", "variant": "declaration", "kind": 1024, @@ -39840,17 +39887,17 @@ { "title": "Properties", "children": [ - 8618, - 8619, - 8620, 8621, - 8617 + 8622, + 8623, + 8624, + 8620 ] } ] }, { - "id": 8255, + "id": 8258, "name": "AGENT", "variant": "declaration", "kind": 32, @@ -39864,7 +39911,7 @@ "defaultValue": "'agent=tsgit/0.0'" }, { - "id": 8256, + "id": 8259, "name": "CLIENT_CAPABILITIES_FETCH", "variant": "declaration", "kind": 32, @@ -39890,7 +39937,7 @@ "defaultValue": "..." }, { - "id": 8257, + "id": 8260, "name": "CLIENT_CAPABILITIES_PUSH", "variant": "declaration", "kind": 32, @@ -39916,7 +39963,7 @@ "defaultValue": "..." }, { - "id": 9053, + "id": 9056, "name": "CRUFT_MTIMES_MAGIC", "variant": "declaration", "kind": 32, @@ -39930,7 +39977,7 @@ "defaultValue": "0x4d544d45" }, { - "id": 8816, + "id": 8819, "name": "DEFAULT_GEOMETRIC_FACTOR", "variant": "declaration", "kind": 32, @@ -39960,7 +40007,7 @@ "defaultValue": "2" }, { - "id": 8092, + "id": 8095, "name": "DEFAULT_MERGE_LABELS", "variant": "declaration", "kind": 32, @@ -40001,14 +40048,14 @@ }, "type": { "type": "reference", - "target": 8093, + "target": 8096, "name": "MergeLabels", "package": "@scolladon/tsgit" }, "defaultValue": "..." }, { - "id": 8433, + "id": 8436, "name": "DELIM_PKT", "variant": "declaration", "kind": 32, @@ -40104,7 +40151,7 @@ } }, { - "id": 8449, + "id": 8452, "name": "FLUSH_PKT", "variant": "declaration", "kind": 32, @@ -40136,7 +40183,7 @@ "defaultValue": "..." }, { - "id": 8178, + "id": 8181, "name": "MAX_CONFLICT_OUTPUT_BYTES", "variant": "declaration", "kind": 32, @@ -40150,7 +40197,7 @@ "defaultValue": "..." }, { - "id": 8454, + "id": 8457, "name": "MAX_PKT_LINE_PAYLOAD", "variant": "declaration", "kind": 32, @@ -40164,7 +40211,7 @@ "defaultValue": "65516" }, { - "id": 9006, + "id": 9009, "name": "MAX_SPARSE_PATTERN_BYTES", "variant": "declaration", "kind": 32, @@ -40186,7 +40233,7 @@ "defaultValue": "256" }, { - "id": 9007, + "id": 9010, "name": "MAX_SPARSE_PATTERNS", "variant": "declaration", "kind": 32, @@ -40394,7 +40441,7 @@ } }, { - "id": 9291, + "id": 9294, "name": "PACK_ENTRY_TYPE", "variant": "declaration", "kind": 32, @@ -40404,14 +40451,14 @@ "type": { "type": "reflection", "declaration": { - "id": 9292, + "id": 9295, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 9295, + "id": 9298, "name": "BLOB", "variant": "declaration", "kind": 1024, @@ -40425,7 +40472,7 @@ "defaultValue": "3" }, { - "id": 9293, + "id": 9296, "name": "COMMIT", "variant": "declaration", "kind": 1024, @@ -40439,7 +40486,7 @@ "defaultValue": "1" }, { - "id": 9297, + "id": 9300, "name": "OFS_DELTA", "variant": "declaration", "kind": 1024, @@ -40453,7 +40500,7 @@ "defaultValue": "6" }, { - "id": 9298, + "id": 9301, "name": "REF_DELTA", "variant": "declaration", "kind": 1024, @@ -40467,7 +40514,7 @@ "defaultValue": "7" }, { - "id": 9296, + "id": 9299, "name": "TAG", "variant": "declaration", "kind": 1024, @@ -40481,7 +40528,7 @@ "defaultValue": "4" }, { - "id": 9294, + "id": 9297, "name": "TREE", "variant": "declaration", "kind": 1024, @@ -40499,12 +40546,12 @@ { "title": "Properties", "children": [ - 9295, - 9293, - 9297, 9298, 9296, - 9294 + 9300, + 9301, + 9299, + 9297 ] } ] @@ -40513,7 +40560,7 @@ "defaultValue": "..." }, { - "id": 8268, + "id": 8271, "name": "PUSH_CERT", "variant": "declaration", "kind": 32, @@ -40527,7 +40574,7 @@ "defaultValue": "'push-cert'" }, { - "id": 9402, + "id": 9405, "name": "REASON_REV_INDEX_CORRUPT", "variant": "declaration", "kind": 32, @@ -40541,7 +40588,7 @@ "defaultValue": "..." }, { - "id": 9403, + "id": 9406, "name": "REASON_REV_INDEX_TOO_SMALL", "variant": "declaration", "kind": 32, @@ -40619,7 +40666,7 @@ } }, { - "id": 8465, + "id": 8468, "name": "RESPONSE_END_PKT", "variant": "declaration", "kind": 32, @@ -40651,7 +40698,7 @@ "defaultValue": "..." }, { - "id": 9404, + "id": 9407, "name": "REV_HEADER_SIZE", "variant": "declaration", "kind": 32, @@ -40665,7 +40712,7 @@ "defaultValue": "12" }, { - "id": 7908, + "id": 7911, "name": "sanitize", "variant": "declaration", "kind": 32, @@ -40675,14 +40722,14 @@ "type": { "type": "reflection", "declaration": { - "id": 7909, + "id": 7912, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "signatures": [ { - "id": 7910, + "id": 7913, "name": "__type", "variant": "signature", "kind": 4096, @@ -40705,7 +40752,7 @@ }, "parameters": [ { - "id": 7911, + "id": 7914, "name": "s", "variant": "param", "kind": 32768, @@ -40727,7 +40774,7 @@ "defaultValue": "sanitizeForDisplay" }, { - "id": 8109, + "id": 8112, "name": "STASH_LABELS", "variant": "declaration", "kind": 32, @@ -40752,21 +40799,21 @@ }, "type": { "type": "reference", - "target": 8093, + "target": 8096, "name": "MergeLabels", "package": "@scolladon/tsgit" }, "defaultValue": "..." }, { - "id": 8089, + "id": 8092, "name": "abbreviateOid", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8090, + "id": 8093, "name": "abbreviateOid", "variant": "signature", "kind": 4096, @@ -40781,7 +40828,7 @@ }, "parameters": [ { - "id": 8091, + "id": 8094, "name": "oid", "variant": "param", "kind": 32768, @@ -40802,21 +40849,21 @@ ] }, { - "id": 8953, + "id": 8956, "name": "alreadyInitialized", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8954, + "id": 8957, "name": "alreadyInitialized", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8955, + "id": 8958, "name": "path", "variant": "param", "kind": 32768, @@ -40839,21 +40886,21 @@ ] }, { - "id": 9079, + "id": 9082, "name": "applyDelta", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9080, + "id": 9083, "name": "applyDelta", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9081, + "id": 9084, "name": "base", "variant": "param", "kind": 32768, @@ -40870,7 +40917,7 @@ } }, { - "id": 9082, + "id": 9085, "name": "delta", "variant": "param", "kind": 32768, @@ -40901,14 +40948,14 @@ ] }, { - "id": 7758, + "id": 7761, "name": "authorUnconfigured", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7759, + "id": 7762, "name": "authorUnconfigured", "variant": "signature", "kind": 4096, @@ -40923,21 +40970,21 @@ ] }, { - "id": 8956, + "id": 8959, "name": "bareRepository", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8957, + "id": 8960, "name": "bareRepository", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8958, + "id": 8961, "name": "operation", "variant": "param", "kind": 32768, @@ -40958,14 +41005,14 @@ ] }, { - "id": 9043, + "id": 9046, "name": "bitmapEntryHeaders", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9044, + "id": 9047, "name": "bitmapEntryHeaders", "variant": "signature", "kind": 4096, @@ -41044,14 +41091,14 @@ }, "parameters": [ { - "id": 9045, + "id": 9048, "name": "bitmap", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9033, + "target": 9036, "name": "PackBitmap", "package": "@scolladon/tsgit" } @@ -41064,7 +41111,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 9028, + "target": 9031, "name": "BitmapEntryHeader", "package": "@scolladon/tsgit" } @@ -41074,21 +41121,21 @@ ] }, { - "id": 7760, + "id": 7763, "name": "blockedHost", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7761, + "id": 7764, "name": "blockedHost", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7762, + "id": 7765, "name": "host", "variant": "param", "kind": 32768, @@ -41099,7 +41146,7 @@ } }, { - "id": 7763, + "id": 7766, "name": "reason", "variant": "param", "kind": 32768, @@ -41120,21 +41167,21 @@ ] }, { - "id": 7764, + "id": 7767, "name": "branchExists", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7765, + "id": 7768, "name": "branchExists", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7766, + "id": 7769, "name": "name", "variant": "param", "kind": 32768, @@ -41157,21 +41204,21 @@ ] }, { - "id": 7767, + "id": 7770, "name": "branchNotFound", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7768, + "id": 7771, "name": "branchNotFound", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7769, + "id": 7772, "name": "name", "variant": "param", "kind": 32768, @@ -41194,14 +41241,14 @@ ] }, { - "id": 8968, + "id": 8971, "name": "buildConeSpec", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8969, + "id": 8972, "name": "buildConeSpec", "variant": "signature", "kind": 4096, @@ -41248,7 +41295,7 @@ }, "parameters": [ { - "id": 8970, + "id": 8973, "name": "dirs", "variant": "param", "kind": 32768, @@ -41269,14 +41316,14 @@ "type": { "type": "reflection", "declaration": { - "id": 8971, + "id": 8974, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8972, + "id": 8975, "name": "mode", "variant": "declaration", "kind": 1024, @@ -41289,7 +41336,7 @@ } }, { - "id": 8974, + "id": 8977, "name": "parents", "variant": "declaration", "kind": 1024, @@ -41322,7 +41369,7 @@ } }, { - "id": 8973, + "id": 8976, "name": "recursive", "variant": "declaration", "kind": 1024, @@ -41359,9 +41406,9 @@ { "title": "Properties", "children": [ - 8972, - 8974, - 8973 + 8975, + 8977, + 8976 ] } ] @@ -41371,21 +41418,21 @@ ] }, { - "id": 8551, + "id": 8554, "name": "buildDiscoveryUrl", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8552, + "id": 8555, "name": "buildDiscoveryUrl", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8553, + "id": 8556, "name": "baseUrl", "variant": "param", "kind": 32768, @@ -41396,14 +41443,14 @@ } }, { - "id": 8554, + "id": 8557, "name": "service", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8534, + "target": 8537, "name": "Service", "package": "@scolladon/tsgit" } @@ -41417,28 +41464,28 @@ ] }, { - "id": 8577, + "id": 8580, "name": "buildLsRefsRequest", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8578, + "id": 8581, "name": "buildLsRefsRequest", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8579, + "id": 8582, "name": "options", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8589, + "target": 8592, "name": "LsRefsRequestOptions", "package": "@scolladon/tsgit" } @@ -41458,28 +41505,28 @@ ] }, { - "id": 8495, + "id": 8498, "name": "buildPushCertPayload", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8496, + "id": 8499, "name": "buildPushCertPayload", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8497, + "id": 8500, "name": "input", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8466, + "target": 8469, "name": "PushCertPayloadInput", "package": "@scolladon/tsgit" } @@ -41499,28 +41546,28 @@ ] }, { - "id": 8498, + "id": 8501, "name": "buildReceivePackRequest", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8499, + "id": 8502, "name": "buildReceivePackRequest", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8500, + "id": 8503, "name": "req", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8471, + "target": 8474, "name": "ReceivePackRequest", "package": "@scolladon/tsgit" } @@ -41540,14 +41587,14 @@ ] }, { - "id": 8905, + "id": 8908, "name": "buildReftableRefSection", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8906, + "id": 8909, "name": "buildReftableRefSection", "variant": "signature", "kind": 4096, @@ -41570,7 +41617,7 @@ }, "parameters": [ { - "id": 8907, + "id": 8910, "name": "refs", "variant": "param", "kind": 32768, @@ -41582,7 +41629,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8785, + "target": 8788, "name": "ReftableRefRecord", "package": "@scolladon/tsgit" } @@ -41590,14 +41637,14 @@ } }, { - "id": 8908, + "id": 8911, "name": "options", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8898, + "target": 8901, "name": "ReftableWriteOptions", "package": "@scolladon/tsgit" } @@ -41617,28 +41664,28 @@ ] }, { - "id": 8501, + "id": 8504, "name": "buildSignedReceivePackRequest", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8502, + "id": 8505, "name": "buildSignedReceivePackRequest", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8503, + "id": 8506, "name": "req", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8487, + "target": 8490, "name": "SignedReceivePackRequest", "package": "@scolladon/tsgit" } @@ -41658,14 +41705,14 @@ ] }, { - "id": 9003, + "id": 9006, "name": "buildSparseMatcher", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9004, + "id": 9007, "name": "buildSparseMatcher", "variant": "signature", "kind": 4096, @@ -41680,14 +41727,14 @@ }, "parameters": [ { - "id": 9005, + "id": 9008, "name": "spec", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9020, + "target": 9023, "name": "SparseSpec", "package": "@scolladon/tsgit" } @@ -41703,28 +41750,28 @@ ] }, { - "id": 8555, + "id": 8558, "name": "buildUploadPackRequest", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8556, + "id": 8559, "name": "buildUploadPackRequest", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8557, + "id": 8560, "name": "req", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8544, + "target": 8547, "name": "WantHaveRequest", "package": "@scolladon/tsgit" } @@ -41744,28 +41791,28 @@ ] }, { - "id": 8580, + "id": 8583, "name": "buildV2FetchRequest", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8581, + "id": 8584, "name": "buildV2FetchRequest", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8582, + "id": 8585, "name": "options", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8622, + "target": 8625, "name": "V2FetchRequestOptions", "package": "@scolladon/tsgit" } @@ -41785,21 +41832,21 @@ ] }, { - "id": 7770, + "id": 7773, "name": "cannotDeleteCheckedOutBranch", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7771, + "id": 7774, "name": "cannotDeleteCheckedOutBranch", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7772, + "id": 7775, "name": "name", "variant": "param", "kind": 32768, @@ -41822,21 +41869,21 @@ ] }, { - "id": 7773, + "id": 7776, "name": "checkoutOverwriteDirty", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7774, + "id": 7777, "name": "checkoutOverwriteDirty", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7775, + "id": 7778, "name": "__namedParameters", "variant": "param", "kind": 32768, @@ -41863,14 +41910,14 @@ ] }, { - "id": 8812, + "id": 8815, "name": "compactionMetric", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8813, + "id": 8816, "name": "compactionMetric", "variant": "signature", "kind": 4096, @@ -41885,7 +41932,7 @@ }, "parameters": [ { - "id": 8814, + "id": 8817, "name": "fileSize", "variant": "param", "kind": 32768, @@ -41896,7 +41943,7 @@ } }, { - "id": 8815, + "id": 8818, "name": "version", "variant": "param", "kind": 32768, @@ -41924,14 +41971,14 @@ ] }, { - "id": 8996, + "id": 8999, "name": "compileSparseRule", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8997, + "id": 9000, "name": "compileSparseRule", "variant": "signature", "kind": 4096, @@ -41978,20 +42025,20 @@ }, "parameters": [ { - "id": 8998, + "id": 9001, "name": "tokenized", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8063, + "target": 8066, "name": "TokenizedIgnoreLine", "package": "@scolladon/tsgit" } }, { - "id": 8999, + "id": 9002, "name": "source", "variant": "param", "kind": 32768, @@ -42004,7 +42051,7 @@ ], "type": { "type": "reference", - "target": 9016, + "target": 9019, "name": "SparseRule", "package": "@scolladon/tsgit" } @@ -42012,21 +42059,21 @@ ] }, { - "id": 7316, + "id": 7319, "name": "compressFailed", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7317, + "id": 7320, "name": "compressFailed", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7318, + "id": 7321, "name": "reason", "variant": "param", "kind": 32768, @@ -42047,21 +42094,21 @@ ] }, { - "id": 9187, + "id": 9190, "name": "computeLooseObjectPath", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9188, + "id": 9191, "name": "computeLooseObjectPath", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9189, + "id": 9192, "name": "id", "variant": "param", "kind": 32768, @@ -42082,14 +42129,14 @@ ] }, { - "id": 8975, + "id": 8978, "name": "coneMatcher", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8976, + "id": 8979, "name": "coneMatcher", "variant": "signature", "kind": 4096, @@ -42120,7 +42167,7 @@ }, "parameters": [ { - "id": 8977, + "id": 8980, "name": "spec", "variant": "param", "kind": 32768, @@ -42128,14 +42175,14 @@ "type": { "type": "reflection", "declaration": { - "id": 8978, + "id": 8981, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8979, + "id": 8982, "name": "mode", "variant": "declaration", "kind": 1024, @@ -42148,7 +42195,7 @@ } }, { - "id": 8981, + "id": 8984, "name": "parents", "variant": "declaration", "kind": 1024, @@ -42181,7 +42228,7 @@ } }, { - "id": 8980, + "id": 8983, "name": "recursive", "variant": "declaration", "kind": 1024, @@ -42218,9 +42265,9 @@ { "title": "Properties", "children": [ - 8979, - 8981, - 8980 + 8982, + 8984, + 8983 ] } ] @@ -42238,21 +42285,21 @@ ] }, { - "id": 7776, + "id": 7779, "name": "configKeyInvalid", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7777, + "id": 7780, "name": "configKeyInvalid", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7778, + "id": 7781, "name": "key", "variant": "param", "kind": 32768, @@ -42263,7 +42310,7 @@ } }, { - "id": 7779, + "id": 7782, "name": "reason", "variant": "param", "kind": 32768, @@ -42287,7 +42334,7 @@ } }, { - "id": 7780, + "id": 7783, "name": "position", "variant": "param", "kind": 32768, @@ -42310,21 +42357,21 @@ ] }, { - "id": 7781, + "id": 7784, "name": "configMultipleValues", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7782, + "id": 7785, "name": "configMultipleValues", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7783, + "id": 7786, "name": "key", "variant": "param", "kind": 32768, @@ -42335,7 +42382,7 @@ } }, { - "id": 7784, + "id": 7787, "name": "count", "variant": "param", "kind": 32768, @@ -42346,7 +42393,7 @@ } }, { - "id": 7785, + "id": 7788, "name": "requested", "variant": "param", "kind": 32768, @@ -42370,7 +42417,7 @@ } }, { - "id": 7786, + "id": 7789, "name": "scope", "variant": "param", "kind": 32768, @@ -42395,21 +42442,21 @@ ] }, { - "id": 7787, + "id": 7790, "name": "configScopeNotAvailable", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7788, + "id": 7791, "name": "configScopeNotAvailable", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7789, + "id": 7792, "name": "scope", "variant": "param", "kind": 32768, @@ -42422,7 +42469,7 @@ } }, { - "id": 7790, + "id": 7793, "name": "reason", "variant": "param", "kind": 32768, @@ -42456,21 +42503,21 @@ ] }, { - "id": 7791, + "id": 7794, "name": "configSectionNotFound", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7792, + "id": 7795, "name": "configSectionNotFound", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7793, + "id": 7796, "name": "name", "variant": "param", "kind": 32768, @@ -42481,7 +42528,7 @@ } }, { - "id": 7794, + "id": 7797, "name": "scope", "variant": "param", "kind": 32768, @@ -42504,14 +42551,14 @@ ] }, { - "id": 7795, + "id": 7798, "name": "configSystemPathUnresolved", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7796, + "id": 7799, "name": "configSystemPathUnresolved", "variant": "signature", "kind": 4096, @@ -42526,21 +42573,21 @@ ] }, { - "id": 7797, + "id": 7800, "name": "configValueInvalid", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7798, + "id": 7801, "name": "configValueInvalid", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7799, + "id": 7802, "name": "key", "variant": "param", "kind": 32768, @@ -42551,7 +42598,7 @@ } }, { - "id": 7800, + "id": 7803, "name": "position", "variant": "param", "kind": 32768, @@ -42572,21 +42619,21 @@ ] }, { - "id": 9050, + "id": 9053, "name": "crc32", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9051, + "id": 9054, "name": "crc32", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9052, + "id": 9055, "name": "data", "variant": "param", "kind": 32768, @@ -42611,21 +42658,21 @@ ] }, { - "id": 9211, + "id": 9214, "name": "createLruCache", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9212, + "id": 9215, "name": "createLruCache", "variant": "signature", "kind": 4096, "flags": {}, "typeParameters": [ { - "id": 9213, + "id": 9216, "name": "V", "variant": "typeParam", "kind": 131072, @@ -42634,7 +42681,7 @@ ], "parameters": [ { - "id": 9214, + "id": 9217, "name": "maxSizeBytes", "variant": "param", "kind": 32768, @@ -42645,7 +42692,7 @@ } }, { - "id": 9215, + "id": 9218, "name": "maxEntries", "variant": "param", "kind": 32768, @@ -42659,11 +42706,11 @@ ], "type": { "type": "reference", - "target": 9190, + "target": 9193, "typeArguments": [ { "type": "reference", - "target": 9213, + "target": 9216, "name": "V", "package": "@scolladon/tsgit", "refersToTypeParameter": true @@ -42676,14 +42723,14 @@ ] }, { - "id": 8895, + "id": 8898, "name": "createReftableStack", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8896, + "id": 8899, "name": "createReftableStack", "variant": "signature", "kind": 4096, @@ -42706,7 +42753,7 @@ }, "parameters": [ { - "id": 8897, + "id": 8900, "name": "tables", "variant": "param", "kind": 32768, @@ -42718,7 +42765,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8859, + "target": 8862, "name": "LoadedReftable", "package": "@scolladon/tsgit" } @@ -42728,7 +42775,7 @@ ], "type": { "type": "reference", - "target": 8882, + "target": 8885, "name": "ReftableStack", "package": "@scolladon/tsgit" } @@ -42736,21 +42783,21 @@ ] }, { - "id": 8434, + "id": 8437, "name": "decodePktStream", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8435, + "id": 8438, "name": "decodePktStream", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8436, + "id": 8439, "name": "source", "variant": "param", "kind": 32768, @@ -42791,7 +42838,7 @@ } }, { - "id": 8437, + "id": 8440, "name": "options", "variant": "param", "kind": 32768, @@ -42801,14 +42848,14 @@ "type": { "type": "reflection", "declaration": { - "id": 8438, + "id": 8441, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8439, + "id": 8442, "name": "v2", "variant": "declaration", "kind": 1024, @@ -42826,7 +42873,7 @@ { "title": "Properties", "children": [ - 8439 + 8442 ] } ] @@ -42844,7 +42891,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -42856,21 +42903,21 @@ ] }, { - "id": 7319, + "id": 7322, "name": "decompressFailed", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7320, + "id": 7323, "name": "decompressFailed", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7321, + "id": 7324, "name": "reason", "variant": "param", "kind": 32768, @@ -42891,21 +42938,21 @@ ] }, { - "id": 7993, + "id": 7996, "name": "diffTrees", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7994, + "id": 7997, "name": "diffTrees", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7995, + "id": 7998, "name": "oldTree", "variant": "param", "kind": 32768, @@ -42927,7 +42974,7 @@ } }, { - "id": 7996, + "id": 7999, "name": "newTree", "variant": "param", "kind": 32768, @@ -42959,21 +43006,21 @@ ] }, { - "id": 7322, + "id": 7325, "name": "directoryNotEmpty", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7323, + "id": 7326, "name": "directoryNotEmpty", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7324, + "id": 7327, "name": "path", "variant": "param", "kind": 32768, @@ -42994,21 +43041,21 @@ ] }, { - "id": 8355, + "id": 8358, "name": "duplicateRef", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8356, + "id": 8359, "name": "duplicateRef", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8357, + "id": 8360, "name": "name", "variant": "param", "kind": 32768, @@ -43029,14 +43076,14 @@ ] }, { - "id": 7801, + "id": 7804, "name": "emptyCommitMessage", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7802, + "id": 7805, "name": "emptyCommitMessage", "variant": "signature", "kind": 4096, @@ -43051,14 +43098,14 @@ ] }, { - "id": 7803, + "id": 7806, "name": "emptyPathspec", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7804, + "id": 7807, "name": "emptyPathspec", "variant": "signature", "kind": 4096, @@ -43073,14 +43120,14 @@ ] }, { - "id": 8358, + "id": 8361, "name": "emptyReceiveUpdates", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8359, + "id": 8362, "name": "emptyReceiveUpdates", "variant": "signature", "kind": 4096, @@ -43095,14 +43142,14 @@ ] }, { - "id": 8360, + "id": 8363, "name": "emptyWants", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8361, + "id": 8364, "name": "emptyWants", "variant": "signature", "kind": 4096, @@ -43117,21 +43164,21 @@ ] }, { - "id": 8583, + "id": 8586, "name": "encodeCommandRequest", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8584, + "id": 8587, "name": "encodeCommandRequest", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8585, + "id": 8588, "name": "command", "variant": "param", "kind": 32768, @@ -43142,7 +43189,7 @@ } }, { - "id": 8586, + "id": 8589, "name": "args", "variant": "param", "kind": 32768, @@ -43160,7 +43207,7 @@ } }, { - "id": 8587, + "id": 8590, "name": "payloads", "variant": "param", "kind": 32768, @@ -43196,7 +43243,7 @@ } }, { - "id": 8588, + "id": 8591, "name": "objectFormat", "variant": "param", "kind": 32768, @@ -43230,21 +43277,21 @@ ] }, { - "id": 9089, + "id": 9092, "name": "encodeDelta", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9090, + "id": 9093, "name": "encodeDelta", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9091, + "id": 9094, "name": "base", "variant": "param", "kind": 32768, @@ -43261,7 +43308,7 @@ } }, { - "id": 9092, + "id": 9095, "name": "target", "variant": "param", "kind": 32768, @@ -43278,7 +43325,7 @@ } }, { - "id": 9093, + "id": 9096, "name": "maxSize", "variant": "param", "kind": 32768, @@ -43326,21 +43373,21 @@ ] }, { - "id": 9281, + "id": 9284, "name": "encodeOfsDistance", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9282, + "id": 9285, "name": "encodeOfsDistance", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9283, + "id": 9286, "name": "distance", "variant": "param", "kind": 32768, @@ -43365,34 +43412,34 @@ ] }, { - "id": 9284, + "id": 9287, "name": "encodePackEntryHeader", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9285, + "id": 9288, "name": "encodePackEntryHeader", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9286, + "id": 9289, "name": "type", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9272, + "target": 9275, "name": "PackEntryType", "package": "@scolladon/tsgit" } }, { - "id": 9287, + "id": 9290, "name": "size", "variant": "param", "kind": 32768, @@ -43417,21 +43464,21 @@ ] }, { - "id": 8440, + "id": 8443, "name": "encodePktLine", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8441, + "id": 8444, "name": "encodePktLine", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8442, + "id": 8445, "name": "payload", "variant": "param", "kind": 32768, @@ -43462,14 +43509,14 @@ ] }, { - "id": 8443, + "id": 8446, "name": "encodePktLines", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8444, + "id": 8447, "name": "encodePktLines", "variant": "signature", "kind": 4096, @@ -43492,7 +43539,7 @@ }, "parameters": [ { - "id": 8445, + "id": 8448, "name": "payloads", "variant": "param", "kind": 32768, @@ -43542,21 +43589,21 @@ ] }, { - "id": 8446, + "id": 8449, "name": "encodePktStream", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8447, + "id": 8450, "name": "encodePktStream", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8448, + "id": 8451, "name": "payloads", "variant": "param", "kind": 32768, @@ -43606,28 +43653,28 @@ ] }, { - "id": 9323, + "id": 9326, "name": "entryOffsets", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9324, + "id": 9327, "name": "entryOffsets", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9325, + "id": 9328, "name": "index", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9314, + "target": 9317, "name": "PackIndex", "package": "@scolladon/tsgit" } @@ -43648,14 +43695,14 @@ ] }, { - "id": 9326, + "id": 9329, "name": "entryOffsetsF64", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9327, + "id": 9330, "name": "entryOffsetsF64", "variant": "signature", "kind": 4096, @@ -43706,14 +43753,14 @@ }, "parameters": [ { - "id": 9328, + "id": 9331, "name": "index", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9314, + "target": 9317, "name": "PackIndex", "package": "@scolladon/tsgit" } @@ -43733,21 +43780,21 @@ ] }, { - "id": 7325, + "id": 7328, "name": "fileExists", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7326, + "id": 7329, "name": "fileExists", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7327, + "id": 7330, "name": "path", "variant": "param", "kind": 32768, @@ -43768,21 +43815,21 @@ ] }, { - "id": 7328, + "id": 7331, "name": "fileNotFound", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7329, + "id": 7332, "name": "fileNotFound", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7330, + "id": 7333, "name": "path", "variant": "param", "kind": 32768, @@ -43803,34 +43850,34 @@ ] }, { - "id": 9329, + "id": 9332, "name": "findByPrefix", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9330, + "id": 9333, "name": "findByPrefix", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9331, + "id": 9334, "name": "index", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9314, + "target": 9317, "name": "PackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9332, + "id": 9335, "name": "prefix", "variant": "param", "kind": 32768, @@ -43858,14 +43905,14 @@ ] }, { - "id": 9170, + "id": 9173, "name": "foldEwahStream", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9171, + "id": 9174, "name": "foldEwahStream", "variant": "signature", "kind": 4096, @@ -43880,7 +43927,7 @@ }, "parameters": [ { - "id": 9172, + "id": 9175, "name": "bytes", "variant": "param", "kind": 32768, @@ -43897,7 +43944,7 @@ } }, { - "id": 9173, + "id": 9176, "name": "view", "variant": "param", "kind": 32768, @@ -43914,20 +43961,20 @@ } }, { - "id": 9174, + "id": 9177, "name": "stream", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9165, + "target": 9168, "name": "EwahStream", "package": "@scolladon/tsgit" } }, { - "id": 9175, + "id": 9178, "name": "into", "variant": "param", "kind": 32768, @@ -43944,7 +43991,7 @@ } }, { - "id": 9176, + "id": 9179, "name": "op", "variant": "param", "kind": 32768, @@ -43969,21 +44016,21 @@ ] }, { - "id": 8258, + "id": 8261, "name": "formatCapabilities", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8259, + "id": 8262, "name": "formatCapabilities", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8260, + "id": 8263, "name": "caps", "variant": "param", "kind": 32768, @@ -44009,14 +44056,14 @@ ] }, { - "id": 8418, + "id": 8421, "name": "formatObjectFilter", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8419, + "id": 8422, "name": "formatObjectFilter", "variant": "signature", "kind": 4096, @@ -44039,14 +44086,14 @@ }, "parameters": [ { - "id": 8420, + "id": 8423, "name": "filter", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8421, + "target": 8424, "name": "ObjectFilter", "package": "@scolladon/tsgit" } @@ -44060,21 +44107,21 @@ ] }, { - "id": 7331, + "id": 7334, "name": "hashFailed", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7332, + "id": 7335, "name": "hashFailed", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7333, + "id": 7336, "name": "reason", "variant": "param", "kind": 32768, @@ -44095,21 +44142,21 @@ ] }, { - "id": 7334, + "id": 7337, "name": "httpError", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7335, + "id": 7338, "name": "httpError", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7336, + "id": 7339, "name": "statusCode", "variant": "param", "kind": 32768, @@ -44120,7 +44167,7 @@ } }, { - "id": 7337, + "id": 7340, "name": "reason", "variant": "param", "kind": 32768, @@ -44141,21 +44188,21 @@ ] }, { - "id": 8362, + "id": 8365, "name": "invalidBaseUrl", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8363, + "id": 8366, "name": "invalidBaseUrl", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8364, + "id": 8367, "name": "reason", "variant": "param", "kind": 32768, @@ -44176,34 +44223,34 @@ ] }, { - "id": 9136, + "id": 9139, "name": "invalidCruftMtimes", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9137, + "id": 9140, "name": "invalidCruftMtimes", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9138, + "id": 9141, "name": "check", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9100, + "target": 9103, "name": "CruftMtimesCheck", "package": "@scolladon/tsgit" } }, { - "id": 9139, + "id": 9142, "name": "reason", "variant": "param", "kind": 32768, @@ -44224,21 +44271,21 @@ ] }, { - "id": 9140, + "id": 9143, "name": "invalidDelta", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9141, + "id": 9144, "name": "invalidDelta", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9142, + "id": 9145, "name": "reason", "variant": "param", "kind": 32768, @@ -44259,21 +44306,21 @@ ] }, { - "id": 8365, + "id": 8368, "name": "invalidFilterSpec", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8366, + "id": 8369, "name": "invalidFilterSpec", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8367, + "id": 8370, "name": "spec", "variant": "param", "kind": 32768, @@ -44284,7 +44331,7 @@ } }, { - "id": 8368, + "id": 8371, "name": "reason", "variant": "param", "kind": 32768, @@ -44305,21 +44352,21 @@ ] }, { - "id": 8083, + "id": 8086, "name": "invalidMergeInput", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8084, + "id": 8087, "name": "invalidMergeInput", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8085, + "id": 8088, "name": "reason", "variant": "param", "kind": 32768, @@ -44340,21 +44387,21 @@ ] }, { - "id": 8086, + "id": 8089, "name": "invalidMergeTree", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8087, + "id": 8090, "name": "invalidMergeTree", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8088, + "id": 8091, "name": "reason", "variant": "param", "kind": 32768, @@ -44375,34 +44422,34 @@ ] }, { - "id": 9143, + "id": 9146, "name": "invalidMultiPackIndex", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9144, + "id": 9147, "name": "invalidMultiPackIndex", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9145, + "id": 9148, "name": "check", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9101, + "target": 9104, "name": "MidxCheck", "package": "@scolladon/tsgit" } }, { - "id": 9146, + "id": 9149, "name": "reason", "variant": "param", "kind": 32768, @@ -44423,34 +44470,34 @@ ] }, { - "id": 9147, + "id": 9150, "name": "invalidPackBitmap", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9148, + "id": 9151, "name": "invalidPackBitmap", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9149, + "id": 9152, "name": "check", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9099, + "target": 9102, "name": "BitmapCheck", "package": "@scolladon/tsgit" } }, { - "id": 9150, + "id": 9153, "name": "reason", "variant": "param", "kind": 32768, @@ -44471,21 +44518,21 @@ ] }, { - "id": 8723, + "id": 8726, "name": "invalidPackedRefs", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8724, + "id": 8727, "name": "invalidPackedRefs", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8725, + "id": 8728, "name": "reason", "variant": "param", "kind": 32768, @@ -44506,21 +44553,21 @@ ] }, { - "id": 9151, + "id": 9154, "name": "invalidPackEntry", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9152, + "id": 9155, "name": "invalidPackEntry", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9153, + "id": 9156, "name": "offset", "variant": "param", "kind": 32768, @@ -44531,7 +44578,7 @@ } }, { - "id": 9154, + "id": 9157, "name": "reason", "variant": "param", "kind": 32768, @@ -44552,21 +44599,21 @@ ] }, { - "id": 9155, + "id": 9158, "name": "invalidPackHeader", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9156, + "id": 9159, "name": "invalidPackHeader", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9157, + "id": 9160, "name": "reason", "variant": "param", "kind": 32768, @@ -44587,21 +44634,21 @@ ] }, { - "id": 9158, + "id": 9161, "name": "invalidPackIndex", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9159, + "id": 9162, "name": "invalidPackIndex", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9160, + "id": 9163, "name": "reason", "variant": "param", "kind": 32768, @@ -44622,34 +44669,34 @@ ] }, { - "id": 9161, + "id": 9164, "name": "invalidPackRevIndex", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9162, + "id": 9165, "name": "invalidPackRevIndex", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9163, + "id": 9166, "name": "check", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9102, + "target": 9105, "name": "RevIndexCheck", "package": "@scolladon/tsgit" } }, { - "id": 9164, + "id": 9167, "name": "reason", "variant": "param", "kind": 32768, @@ -44670,21 +44717,21 @@ ] }, { - "id": 8369, + "id": 8372, "name": "invalidPktLength", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8370, + "id": 8373, "name": "invalidPktLength", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8371, + "id": 8374, "name": "value", "variant": "param", "kind": 32768, @@ -44705,21 +44752,21 @@ ] }, { - "id": 8726, + "id": 8729, "name": "invalidRef", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8727, + "id": 8730, "name": "invalidRef", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8728, + "id": 8731, "name": "reason", "variant": "param", "kind": 32768, @@ -44740,21 +44787,21 @@ ] }, { - "id": 8372, + "id": 8375, "name": "invalidRefLine", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8373, + "id": 8376, "name": "invalidRefLine", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8374, + "id": 8377, "name": "line", "variant": "param", "kind": 32768, @@ -44775,21 +44822,21 @@ ] }, { - "id": 8655, + "id": 8658, "name": "invalidReflogEntry", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8656, + "id": 8659, "name": "invalidReflogEntry", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8657, + "id": 8660, "name": "reason", "variant": "param", "kind": 32768, @@ -44810,34 +44857,34 @@ ] }, { - "id": 8729, + "id": 8732, "name": "invalidReftable", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8730, + "id": 8733, "name": "invalidReftable", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8731, + "id": 8734, "name": "check", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8722, + "target": 8725, "name": "ReftableCheck", "package": "@scolladon/tsgit" } }, { - "id": 8732, + "id": 8735, "name": "reason", "variant": "param", "kind": 32768, @@ -44858,21 +44905,21 @@ ] }, { - "id": 8375, + "id": 8378, "name": "invalidReportStatus", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8376, + "id": 8379, "name": "invalidReportStatus", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8377, + "id": 8380, "name": "line", "variant": "param", "kind": 32768, @@ -44893,21 +44940,21 @@ ] }, { - "id": 8378, + "id": 8381, "name": "invalidSidebandChannel", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8379, + "id": 8382, "name": "invalidSidebandChannel", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8380, + "id": 8383, "name": "channel", "variant": "param", "kind": 32768, @@ -44928,21 +44975,21 @@ ] }, { - "id": 7805, + "id": 7808, "name": "invalidUrl", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7806, + "id": 7809, "name": "invalidUrl", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7807, + "id": 7810, "name": "reason", "variant": "param", "kind": 32768, @@ -44963,14 +45010,14 @@ ] }, { - "id": 8758, + "id": 8761, "name": "isPerWorktreeRef", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8759, + "id": 8762, "name": "isPerWorktreeRef", "variant": "signature", "kind": 4096, @@ -44993,7 +45040,7 @@ }, "parameters": [ { - "id": 8760, + "id": 8763, "name": "name", "variant": "param", "kind": 32768, @@ -45014,21 +45061,21 @@ ] }, { - "id": 8779, + "id": 8782, "name": "isSafeRefName", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8780, + "id": 8783, "name": "isSafeRefName", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8781, + "id": 8784, "name": "name", "variant": "param", "kind": 32768, @@ -45047,14 +45094,14 @@ ] }, { - "id": 8261, + "id": 8264, "name": "isSupportedObjectFormat", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8262, + "id": 8265, "name": "isSupportedObjectFormat", "variant": "signature", "kind": 4096, @@ -45093,7 +45140,7 @@ }, "parameters": [ { - "id": 8263, + "id": 8266, "name": "value", "variant": "param", "kind": 32768, @@ -45126,14 +45173,14 @@ ] }, { - "id": 8873, + "id": 8876, "name": "iterateReftableLogs", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8874, + "id": 8877, "name": "iterateReftableLogs", "variant": "signature", "kind": 4096, @@ -45156,20 +45203,20 @@ }, "parameters": [ { - "id": 8875, + "id": 8878, "name": "table", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8859, + "target": 8862, "name": "LoadedReftable", "package": "@scolladon/tsgit" } }, { - "id": 8876, + "id": 8879, "name": "name", "variant": "param", "kind": 32768, @@ -45194,7 +45241,7 @@ "typeArguments": [ { "type": "reference", - "target": 8865, + "target": 8868, "name": "ReftableLogRecord", "package": "@scolladon/tsgit" } @@ -45206,14 +45253,14 @@ ] }, { - "id": 8802, + "id": 8805, "name": "iterateReftableRefs", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8803, + "id": 8806, "name": "iterateReftableRefs", "variant": "signature", "kind": 4096, @@ -45236,14 +45283,14 @@ }, "parameters": [ { - "id": 8804, + "id": 8807, "name": "table", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8821, + "target": 8824, "name": "Reftable", "package": "@scolladon/tsgit" } @@ -45259,7 +45306,7 @@ "typeArguments": [ { "type": "reference", - "target": 8785, + "target": 8788, "name": "ReftableRefRecord", "package": "@scolladon/tsgit" } @@ -45271,14 +45318,14 @@ ] }, { - "id": 8877, + "id": 8880, "name": "loadReftable", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8878, + "id": 8881, "name": "loadReftable", "variant": "signature", "kind": 4096, @@ -45355,7 +45402,7 @@ }, "parameters": [ { - "id": 8879, + "id": 8882, "name": "bytes", "variant": "param", "kind": 32768, @@ -45372,20 +45419,20 @@ } }, { - "id": 8880, + "id": 8883, "name": "inflateAt", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8850, + "target": 8853, "name": "InflateAt", "package": "@scolladon/tsgit" } }, { - "id": 8881, + "id": 8884, "name": "budget", "variant": "param", "kind": 32768, @@ -45413,7 +45460,7 @@ "typeArguments": [ { "type": "reference", - "target": 8859, + "target": 8862, "name": "LoadedReftable", "package": "@scolladon/tsgit" } @@ -45425,14 +45472,14 @@ ] }, { - "id": 9234, + "id": 9237, "name": "lookupMidxPosition", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9235, + "id": 9238, "name": "lookupMidxPosition", "variant": "signature", "kind": 4096, @@ -45471,20 +45518,20 @@ }, "parameters": [ { - "id": 9236, + "id": 9239, "name": "midx", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9219, + "target": 9222, "name": "MultiPackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9237, + "id": 9240, "name": "id", "variant": "param", "kind": 32768, @@ -45514,14 +45561,14 @@ ] }, { - "id": 9238, + "id": 9241, "name": "lookupMultiPackIndex", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9239, + "id": 9242, "name": "lookupMultiPackIndex", "variant": "signature", "kind": 4096, @@ -45552,20 +45599,20 @@ }, "parameters": [ { - "id": 9240, + "id": 9243, "name": "midx", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9219, + "target": 9222, "name": "MultiPackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9241, + "id": 9244, "name": "id", "variant": "param", "kind": 32768, @@ -45583,7 +45630,7 @@ "types": [ { "type": "reference", - "target": 9216, + "target": 9219, "name": "MidxEntry", "package": "@scolladon/tsgit" }, @@ -45597,34 +45644,34 @@ ] }, { - "id": 9333, + "id": 9336, "name": "lookupPackIndex", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9334, + "id": 9337, "name": "lookupPackIndex", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9335, + "id": 9338, "name": "index", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9314, + "target": 9317, "name": "PackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9336, + "id": 9339, "name": "id", "variant": "param", "kind": 32768, @@ -45654,14 +45701,14 @@ ] }, { - "id": 9337, + "id": 9340, "name": "lookupPackIndexPosition", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9338, + "id": 9341, "name": "lookupPackIndexPosition", "variant": "signature", "kind": 4096, @@ -45692,20 +45739,20 @@ }, "parameters": [ { - "id": 9339, + "id": 9342, "name": "index", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9314, + "target": 9317, "name": "PackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9340, + "id": 9343, "name": "id", "variant": "param", "kind": 32768, @@ -45735,14 +45782,14 @@ ] }, { - "id": 8805, + "id": 8808, "name": "lookupReftableRef", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8806, + "id": 8809, "name": "lookupReftableRef", "variant": "signature", "kind": 4096, @@ -45773,20 +45820,20 @@ }, "parameters": [ { - "id": 8807, + "id": 8810, "name": "table", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8821, + "target": 8824, "name": "Reftable", "package": "@scolladon/tsgit" } }, { - "id": 8808, + "id": 8811, "name": "name", "variant": "param", "kind": 32768, @@ -45804,7 +45851,7 @@ "types": [ { "type": "reference", - "target": 8785, + "target": 8788, "name": "ReftableRefRecord", "package": "@scolladon/tsgit" }, @@ -45818,14 +45865,14 @@ ] }, { - "id": 8021, + "id": 8024, "name": "matches", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8022, + "id": 8025, "name": "matches", "variant": "signature", "kind": 4096, @@ -45864,20 +45911,20 @@ }, "parameters": [ { - "id": 8023, + "id": 8026, "name": "rules", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8059, + "target": 8062, "name": "IgnoreRuleset", "package": "@scolladon/tsgit" } }, { - "id": 8024, + "id": 8027, "name": "path", "variant": "param", "kind": 32768, @@ -45890,7 +45937,7 @@ } }, { - "id": 8025, + "id": 8028, "name": "isDir", "variant": "param", "kind": 32768, @@ -45903,7 +45950,7 @@ ], "type": { "type": "reference", - "target": 8020, + "target": 8023, "name": "MatchResult", "package": "@scolladon/tsgit" } @@ -45911,14 +45958,14 @@ ] }, { - "id": 8026, + "id": 8029, "name": "matchesVerbose", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8027, + "id": 8030, "name": "matchesVerbose", "variant": "signature", "kind": 4096, @@ -45965,20 +46012,20 @@ }, "parameters": [ { - "id": 8028, + "id": 8031, "name": "rules", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8059, + "target": 8062, "name": "IgnoreRuleset", "package": "@scolladon/tsgit" } }, { - "id": 8029, + "id": 8032, "name": "path", "variant": "param", "kind": 32768, @@ -45991,7 +46038,7 @@ } }, { - "id": 8030, + "id": 8033, "name": "isDir", "variant": "param", "kind": 32768, @@ -46004,7 +46051,7 @@ ], "type": { "type": "reference", - "target": 8031, + "target": 8034, "name": "VerboseLevelMatch", "package": "@scolladon/tsgit" } @@ -46012,14 +46059,14 @@ ] }, { - "id": 8038, + "id": 8041, "name": "matchInStack", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8039, + "id": 8042, "name": "matchInStack", "variant": "signature", "kind": 4096, @@ -46050,7 +46097,7 @@ }, "parameters": [ { - "id": 8040, + "id": 8043, "name": "stack", "variant": "param", "kind": 32768, @@ -46062,7 +46109,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8034, + "target": 8037, "name": "IgnoreLevel", "package": "@scolladon/tsgit" } @@ -46070,7 +46117,7 @@ } }, { - "id": 8041, + "id": 8044, "name": "path", "variant": "param", "kind": 32768, @@ -46083,7 +46130,7 @@ } }, { - "id": 8042, + "id": 8045, "name": "isDir", "variant": "param", "kind": 32768, @@ -46096,7 +46143,7 @@ ], "type": { "type": "reference", - "target": 8020, + "target": 8023, "name": "MatchResult", "package": "@scolladon/tsgit" } @@ -46104,14 +46151,14 @@ ] }, { - "id": 8043, + "id": 8046, "name": "matchInStackVerbose", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8044, + "id": 8047, "name": "matchInStackVerbose", "variant": "signature", "kind": 4096, @@ -46142,7 +46189,7 @@ }, "parameters": [ { - "id": 8045, + "id": 8048, "name": "stack", "variant": "param", "kind": 32768, @@ -46154,7 +46201,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8034, + "target": 8037, "name": "IgnoreLevel", "package": "@scolladon/tsgit" } @@ -46162,7 +46209,7 @@ } }, { - "id": 8046, + "id": 8049, "name": "path", "variant": "param", "kind": 32768, @@ -46175,7 +46222,7 @@ } }, { - "id": 8047, + "id": 8050, "name": "isDir", "variant": "param", "kind": 32768, @@ -46188,7 +46235,7 @@ ], "type": { "type": "reference", - "target": 8048, + "target": 8051, "name": "VerboseMatch", "package": "@scolladon/tsgit" } @@ -46196,21 +46243,21 @@ ] }, { - "id": 7808, + "id": 7811, "name": "maxRefspecsExceeded", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7809, + "id": 7812, "name": "maxRefspecsExceeded", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7810, + "id": 7813, "name": "count", "variant": "param", "kind": 32768, @@ -46221,7 +46268,7 @@ } }, { - "id": 7811, + "id": 7814, "name": "limit", "variant": "param", "kind": 32768, @@ -46242,14 +46289,14 @@ ] }, { - "id": 9177, + "id": 9180, "name": "maxSetBitPosition", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9178, + "id": 9181, "name": "maxSetBitPosition", "variant": "signature", "kind": 4096, @@ -46288,7 +46335,7 @@ }, "parameters": [ { - "id": 9179, + "id": 9182, "name": "bytes", "variant": "param", "kind": 32768, @@ -46305,7 +46352,7 @@ } }, { - "id": 9180, + "id": 9183, "name": "view", "variant": "param", "kind": 32768, @@ -46322,14 +46369,14 @@ } }, { - "id": 9181, + "id": 9184, "name": "stream", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9165, + "target": 9168, "name": "EwahStream", "package": "@scolladon/tsgit" } @@ -46343,14 +46390,14 @@ ] }, { - "id": 8182, + "id": 8185, "name": "mergeContent", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8183, + "id": 8186, "name": "mergeContent", "variant": "signature", "kind": 4096, @@ -46389,7 +46436,7 @@ }, "parameters": [ { - "id": 8184, + "id": 8187, "name": "base", "variant": "param", "kind": 32768, @@ -46427,7 +46474,7 @@ } }, { - "id": 8185, + "id": 8188, "name": "ours", "variant": "param", "kind": 32768, @@ -46444,7 +46491,7 @@ } }, { - "id": 8186, + "id": 8189, "name": "theirs", "variant": "param", "kind": 32768, @@ -46461,14 +46508,14 @@ } }, { - "id": 8187, + "id": 8190, "name": "options", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8179, + "target": 8182, "name": "MergeContentOptions", "package": "@scolladon/tsgit" }, @@ -46477,7 +46524,7 @@ ], "type": { "type": "reference", - "target": 8127, + "target": 8130, "name": "ContentMergeResult", "package": "@scolladon/tsgit" } @@ -46485,21 +46532,21 @@ ] }, { - "id": 7812, + "id": 7815, "name": "mergeHasConflicts", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7813, + "id": 7816, "name": "mergeHasConflicts", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7814, + "id": 7817, "name": "count", "variant": "param", "kind": 32768, @@ -46510,7 +46557,7 @@ } }, { - "id": 7815, + "id": 7818, "name": "paths", "variant": "param", "kind": 32768, @@ -46541,14 +46588,14 @@ ] }, { - "id": 8097, + "id": 8100, "name": "mergeLabels", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8098, + "id": 8101, "name": "mergeLabels", "variant": "signature", "kind": 4096, @@ -46571,7 +46618,7 @@ }, "parameters": [ { - "id": 8099, + "id": 8102, "name": "revName", "variant": "param", "kind": 32768, @@ -46582,7 +46629,7 @@ } }, { - "id": 8100, + "id": 8103, "name": "base", "variant": "param", "kind": 32768, @@ -46606,7 +46653,7 @@ ], "type": { "type": "reference", - "target": 8093, + "target": 8096, "name": "MergeLabels", "package": "@scolladon/tsgit" } @@ -46614,21 +46661,21 @@ ] }, { - "id": 8195, + "id": 8198, "name": "mergeTrees", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8196, + "id": 8199, "name": "mergeTrees", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8197, + "id": 8200, "name": "base", "variant": "param", "kind": 32768, @@ -46650,7 +46697,7 @@ } }, { - "id": 8198, + "id": 8201, "name": "ours", "variant": "param", "kind": 32768, @@ -46672,7 +46719,7 @@ } }, { - "id": 8199, + "id": 8202, "name": "theirs", "variant": "param", "kind": 32768, @@ -46694,27 +46741,27 @@ } }, { - "id": 8200, + "id": 8203, "name": "contentMerger", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8188, + "target": 8191, "name": "ContentMerger", "package": "@scolladon/tsgit" } }, { - "id": 8201, + "id": 8204, "name": "labels", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8093, + "target": 8096, "name": "MergeLabels", "package": "@scolladon/tsgit" }, @@ -46731,7 +46778,7 @@ "typeArguments": [ { "type": "reference", - "target": 8174, + "target": 8177, "name": "TreeMergeResult", "package": "@scolladon/tsgit" } @@ -46743,14 +46790,14 @@ ] }, { - "id": 9242, + "id": 9245, "name": "midxEntryAt", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9243, + "id": 9246, "name": "midxEntryAt", "variant": "signature", "kind": 4096, @@ -46797,20 +46844,20 @@ }, "parameters": [ { - "id": 9244, + "id": 9247, "name": "midx", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9219, + "target": 9222, "name": "MultiPackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9245, + "id": 9248, "name": "index", "variant": "param", "kind": 32768, @@ -46823,7 +46870,7 @@ ], "type": { "type": "reference", - "target": 9216, + "target": 9219, "name": "MidxEntry", "package": "@scolladon/tsgit" } @@ -46831,14 +46878,14 @@ ] }, { - "id": 9246, + "id": 9249, "name": "midxOidAt", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9247, + "id": 9250, "name": "midxOidAt", "variant": "signature", "kind": 4096, @@ -46861,20 +46908,20 @@ }, "parameters": [ { - "id": 9248, + "id": 9251, "name": "midx", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9219, + "target": 9222, "name": "MultiPackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9249, + "id": 9252, "name": "index", "variant": "param", "kind": 32768, @@ -46895,14 +46942,14 @@ ] }, { - "id": 9250, + "id": 9253, "name": "midxReverseIndexAt", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9251, + "id": 9254, "name": "midxReverseIndexAt", "variant": "signature", "kind": 4096, @@ -46973,20 +47020,20 @@ }, "parameters": [ { - "id": 9252, + "id": 9255, "name": "midx", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9219, + "target": 9222, "name": "MultiPackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9253, + "id": 9256, "name": "position", "variant": "param", "kind": 32768, @@ -47005,14 +47052,14 @@ ] }, { - "id": 9254, + "id": 9257, "name": "midxReverseIndexPositions", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9255, + "id": 9258, "name": "midxReverseIndexPositions", "variant": "signature", "kind": 4096, @@ -47051,14 +47098,14 @@ }, "parameters": [ { - "id": 9256, + "id": 9259, "name": "midx", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9219, + "target": 9222, "name": "MultiPackIndex", "package": "@scolladon/tsgit" } @@ -47099,14 +47146,14 @@ ] }, { - "id": 8381, + "id": 8384, "name": "missingCapabilities", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8382, + "id": 8385, "name": "missingCapabilities", "variant": "signature", "kind": 4096, @@ -47121,21 +47168,21 @@ ] }, { - "id": 8383, + "id": 8386, "name": "missingServiceHeader", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8384, + "id": 8387, "name": "missingServiceHeader", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8385, + "id": 8388, "name": "expected", "variant": "param", "kind": 32768, @@ -47146,7 +47193,7 @@ } }, { - "id": 8386, + "id": 8389, "name": "actual", "variant": "param", "kind": 32768, @@ -47167,21 +47214,21 @@ ] }, { - "id": 7816, + "id": 7819, "name": "mvBadSource", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7817, + "id": 7820, "name": "mvBadSource", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7818, + "id": 7821, "name": "source", "variant": "param", "kind": 32768, @@ -47194,7 +47241,7 @@ } }, { - "id": 7819, + "id": 7822, "name": "destination", "variant": "param", "kind": 32768, @@ -47217,21 +47264,21 @@ ] }, { - "id": 7820, + "id": 7823, "name": "mvDestinationDirectoryMissing", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7821, + "id": 7824, "name": "mvDestinationDirectoryMissing", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7822, + "id": 7825, "name": "source", "variant": "param", "kind": 32768, @@ -47244,7 +47291,7 @@ } }, { - "id": 7823, + "id": 7826, "name": "destination", "variant": "param", "kind": 32768, @@ -47267,21 +47314,21 @@ ] }, { - "id": 7824, + "id": 7827, "name": "mvDestinationExists", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7825, + "id": 7828, "name": "mvDestinationExists", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7826, + "id": 7829, "name": "source", "variant": "param", "kind": 32768, @@ -47294,7 +47341,7 @@ } }, { - "id": 7827, + "id": 7830, "name": "destination", "variant": "param", "kind": 32768, @@ -47317,21 +47364,21 @@ ] }, { - "id": 7828, + "id": 7831, "name": "mvDestinationNotDirectory", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7829, + "id": 7832, "name": "mvDestinationNotDirectory", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7830, + "id": 7833, "name": "source", "variant": "param", "kind": 32768, @@ -47344,7 +47391,7 @@ } }, { - "id": 7831, + "id": 7834, "name": "destination", "variant": "param", "kind": 32768, @@ -47367,21 +47414,21 @@ ] }, { - "id": 7832, + "id": 7835, "name": "mvIntoSelf", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7833, + "id": 7836, "name": "mvIntoSelf", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7834, + "id": 7837, "name": "source", "variant": "param", "kind": 32768, @@ -47394,7 +47441,7 @@ } }, { - "id": 7835, + "id": 7838, "name": "destination", "variant": "param", "kind": 32768, @@ -47417,21 +47464,21 @@ ] }, { - "id": 7836, + "id": 7839, "name": "mvMultipleSourcesSameTarget", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7837, + "id": 7840, "name": "mvMultipleSourcesSameTarget", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7838, + "id": 7841, "name": "source", "variant": "param", "kind": 32768, @@ -47444,7 +47491,7 @@ } }, { - "id": 7839, + "id": 7842, "name": "destination", "variant": "param", "kind": 32768, @@ -47467,21 +47514,21 @@ ] }, { - "id": 7840, + "id": 7843, "name": "mvOverlappingSources", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7841, + "id": 7844, "name": "mvOverlappingSources", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7842, + "id": 7845, "name": "child", "variant": "param", "kind": 32768, @@ -47494,7 +47541,7 @@ } }, { - "id": 7843, + "id": 7846, "name": "parent", "variant": "param", "kind": 32768, @@ -47517,21 +47564,21 @@ ] }, { - "id": 7844, + "id": 7847, "name": "mvSourceNotTracked", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7845, + "id": 7848, "name": "mvSourceNotTracked", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7846, + "id": 7849, "name": "source", "variant": "param", "kind": 32768, @@ -47544,7 +47591,7 @@ } }, { - "id": 7847, + "id": 7850, "name": "destination", "variant": "param", "kind": 32768, @@ -47567,21 +47614,21 @@ ] }, { - "id": 8264, + "id": 8267, "name": "negotiateCapabilities", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8265, + "id": 8268, "name": "negotiateCapabilities", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8266, + "id": 8269, "name": "serverCaps", "variant": "param", "kind": 32768, @@ -47599,7 +47646,7 @@ } }, { - "id": 8267, + "id": 8270, "name": "clientCaps", "variant": "param", "kind": 32768, @@ -47632,21 +47679,21 @@ ] }, { - "id": 7338, + "id": 7341, "name": "networkError", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7339, + "id": 7342, "name": "networkError", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7340, + "id": 7343, "name": "reason", "variant": "param", "kind": 32768, @@ -47667,14 +47714,14 @@ ] }, { - "id": 9000, + "id": 9003, "name": "nonConeMatcher", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9001, + "id": 9004, "name": "nonConeMatcher", "variant": "signature", "kind": 4096, @@ -47689,7 +47736,7 @@ }, "parameters": [ { - "id": 9002, + "id": 9005, "name": "rules", "variant": "param", "kind": 32768, @@ -47701,7 +47748,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 9016, + "target": 9019, "name": "SparseRule", "package": "@scolladon/tsgit" } @@ -47719,21 +47766,21 @@ ] }, { - "id": 7848, + "id": 7851, "name": "nonFastForward", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7849, + "id": 7852, "name": "nonFastForward", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7850, + "id": 7853, "name": "ref", "variant": "param", "kind": 32768, @@ -47746,7 +47793,7 @@ } }, { - "id": 7851, + "id": 7854, "name": "local", "variant": "param", "kind": 32768, @@ -47759,7 +47806,7 @@ } }, { - "id": 7852, + "id": 7855, "name": "remote", "variant": "param", "kind": 32768, @@ -47782,21 +47829,21 @@ ] }, { - "id": 7853, + "id": 7856, "name": "noOperationInProgress", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7854, + "id": 7857, "name": "noOperationInProgress", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7855, + "id": 7858, "name": "operation", "variant": "param", "kind": 32768, @@ -47834,14 +47881,14 @@ ] }, { - "id": 7856, + "id": 7859, "name": "noPromisorRemote", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7857, + "id": 7860, "name": "noPromisorRemote", "variant": "signature", "kind": 4096, @@ -47856,21 +47903,21 @@ ] }, { - "id": 7341, + "id": 7344, "name": "notADirectory", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7342, + "id": 7345, "name": "notADirectory", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7343, + "id": 7346, "name": "path", "variant": "param", "kind": 32768, @@ -47891,21 +47938,21 @@ ] }, { - "id": 8959, + "id": 8962, "name": "notARepository", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8960, + "id": 8963, "name": "notARepository", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8961, + "id": 8964, "name": "path", "variant": "param", "kind": 32768, @@ -47928,14 +47975,14 @@ ] }, { - "id": 7858, + "id": 7861, "name": "nothingToCommit", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7859, + "id": 7862, "name": "nothingToCommit", "variant": "signature", "kind": 4096, @@ -47950,21 +47997,21 @@ ] }, { - "id": 7860, + "id": 7863, "name": "noUpstreamConfigured", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7861, + "id": 7864, "name": "noUpstreamConfigured", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7862, + "id": 7865, "name": "branch", "variant": "param", "kind": 32768, @@ -47987,14 +48034,14 @@ ] }, { - "id": 9341, + "id": 9344, "name": "objectIdAt", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9342, + "id": 9345, "name": "objectIdAt", "variant": "signature", "kind": 4096, @@ -48057,20 +48104,20 @@ }, "parameters": [ { - "id": 9343, + "id": 9346, "name": "index", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9314, + "target": 9317, "name": "PackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9344, + "id": 9347, "name": "position", "variant": "param", "kind": 32768, @@ -48091,14 +48138,14 @@ ] }, { - "id": 9288, + "id": 9291, "name": "objectTypeToPackEntryType", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9289, + "id": 9292, "name": "objectTypeToPackEntryType", "variant": "signature", "kind": 4096, @@ -48121,7 +48168,7 @@ }, "parameters": [ { - "id": 9290, + "id": 9293, "name": "type", "variant": "param", "kind": 32768, @@ -48136,7 +48183,7 @@ ], "type": { "type": "reference", - "target": 9265, + "target": 9268, "name": "BasePackEntryType", "package": "@scolladon/tsgit" } @@ -48144,14 +48191,14 @@ ] }, { - "id": 9345, + "id": 9348, "name": "offsetAtPackPosition", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9346, + "id": 9349, "name": "offsetAtPackPosition", "variant": "signature", "kind": 4096, @@ -48270,33 +48317,33 @@ }, "parameters": [ { - "id": 9347, + "id": 9350, "name": "index", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9314, + "target": 9317, "name": "PackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9348, + "id": 9351, "name": "rev", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9389, + "target": 9392, "name": "PackRevIndex", "package": "@scolladon/tsgit" } }, { - "id": 9349, + "id": 9352, "name": "p", "variant": "param", "kind": 32768, @@ -48324,21 +48371,21 @@ ] }, { - "id": 7863, + "id": 7866, "name": "operationInProgress", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7864, + "id": 7867, "name": "operationInProgress", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7865, + "id": 7868, "name": "operation", "variant": "param", "kind": 32768, @@ -48376,14 +48423,14 @@ ] }, { - "id": 9299, + "id": 9302, "name": "packEntryTypeToObjectType", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9300, + "id": 9303, "name": "packEntryTypeToObjectType", "variant": "signature", "kind": 4096, @@ -48398,14 +48445,14 @@ }, "parameters": [ { - "id": 9301, + "id": 9304, "name": "type", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9265, + "target": 9268, "name": "BasePackEntryType", "package": "@scolladon/tsgit" } @@ -48421,21 +48468,21 @@ ] }, { - "id": 8558, + "id": 8561, "name": "parseAdvertisedRefs", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8559, + "id": 8562, "name": "parseAdvertisedRefs", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8560, + "id": 8563, "name": "source", "variant": "param", "kind": 32768, @@ -48450,7 +48497,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -48460,20 +48507,20 @@ } }, { - "id": 8561, + "id": 8564, "name": "expectedService", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8534, + "target": 8537, "name": "Service", "package": "@scolladon/tsgit" } }, { - "id": 8562, + "id": 8565, "name": "options", "variant": "param", "kind": 32768, @@ -48482,7 +48529,7 @@ }, "type": { "type": "reference", - "target": 8532, + "target": 8535, "name": "ParseAdvertisedRefsOptions", "package": "@scolladon/tsgit" } @@ -48498,7 +48545,7 @@ "typeArguments": [ { "type": "reference", - "target": 8528, + "target": 8531, "name": "Advertisement", "package": "@scolladon/tsgit" } @@ -48510,14 +48557,14 @@ ] }, { - "id": 8639, + "id": 8642, "name": "parseApproxidate", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8640, + "id": 8643, "name": "parseApproxidate", "variant": "signature", "kind": 4096, @@ -48540,7 +48587,7 @@ }, "parameters": [ { - "id": 8641, + "id": 8644, "name": "text", "variant": "param", "kind": 32768, @@ -48551,7 +48598,7 @@ } }, { - "id": 8642, + "id": 8645, "name": "now", "variant": "param", "kind": 32768, @@ -48579,21 +48626,21 @@ ] }, { - "id": 8269, + "id": 8272, "name": "parseCapabilities", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8270, + "id": 8273, "name": "parseCapabilities", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8271, + "id": 8274, "name": "tail", "variant": "param", "kind": 32768, @@ -48619,14 +48666,14 @@ ] }, { - "id": 8982, + "id": 8985, "name": "parseCone", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8983, + "id": 8986, "name": "parseCone", "variant": "signature", "kind": 4096, @@ -48649,7 +48696,7 @@ }, "parameters": [ { - "id": 8984, + "id": 8987, "name": "text", "variant": "param", "kind": 32768, @@ -48666,14 +48713,14 @@ { "type": "reflection", "declaration": { - "id": 8985, + "id": 8988, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8986, + "id": 8989, "name": "mode", "variant": "declaration", "kind": 1024, @@ -48686,7 +48733,7 @@ } }, { - "id": 8988, + "id": 8991, "name": "parents", "variant": "declaration", "kind": 1024, @@ -48719,7 +48766,7 @@ } }, { - "id": 8987, + "id": 8990, "name": "recursive", "variant": "declaration", "kind": 1024, @@ -48756,9 +48803,9 @@ { "title": "Properties", "children": [ - 8986, - 8988, - 8987 + 8989, + 8991, + 8990 ] } ] @@ -48774,14 +48821,14 @@ ] }, { - "id": 7385, + "id": 7388, "name": "parseConfigKey", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7386, + "id": 7389, "name": "parseConfigKey", "variant": "signature", "kind": 4096, @@ -48820,7 +48867,7 @@ }, "parameters": [ { - "id": 7387, + "id": 7390, "name": "raw", "variant": "param", "kind": 32768, @@ -48833,7 +48880,7 @@ ], "type": { "type": "reference", - "target": 7381, + "target": 7384, "name": "ParsedConfigKey", "package": "@scolladon/tsgit" } @@ -48841,14 +48888,14 @@ ] }, { - "id": 9054, + "id": 9057, "name": "parseCruftMtimes", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9055, + "id": 9058, "name": "parseCruftMtimes", "variant": "signature", "kind": 4096, @@ -48911,7 +48958,7 @@ }, "parameters": [ { - "id": 9056, + "id": 9059, "name": "bytes", "variant": "param", "kind": 32768, @@ -48928,7 +48975,7 @@ } }, { - "id": 9057, + "id": 9060, "name": "oidsInIndexOrder", "variant": "param", "kind": 32768, @@ -48948,7 +48995,7 @@ } }, { - "id": 9058, + "id": 9061, "name": "selfChecksum", "variant": "param", "kind": 32768, @@ -49005,21 +49052,21 @@ ] }, { - "id": 9083, + "id": 9086, "name": "parseDelta", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9084, + "id": 9087, "name": "parseDelta", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9085, + "id": 9088, "name": "delta", "variant": "param", "kind": 32768, @@ -49038,7 +49085,7 @@ ], "type": { "type": "reference", - "target": 9072, + "target": 9075, "name": "DeltaParsed", "package": "@scolladon/tsgit" } @@ -49046,21 +49093,21 @@ ] }, { - "id": 8060, + "id": 8063, "name": "parseGitignore", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8061, + "id": 8064, "name": "parseGitignore", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8062, + "id": 8065, "name": "text", "variant": "param", "kind": 32768, @@ -49073,7 +49120,7 @@ ], "type": { "type": "reference", - "target": 8059, + "target": 8062, "name": "IgnoreRuleset", "package": "@scolladon/tsgit" } @@ -49081,21 +49128,21 @@ ] }, { - "id": 8737, + "id": 8740, "name": "parseLooseRef", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8738, + "id": 8741, "name": "parseLooseRef", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8739, + "id": 8742, "name": "content", "variant": "param", "kind": 32768, @@ -49108,7 +49155,7 @@ ], "type": { "type": "reference", - "target": 8767, + "target": 8770, "name": "LooseRef", "package": "@scolladon/tsgit" } @@ -49116,21 +49163,21 @@ ] }, { - "id": 8594, + "id": 8597, "name": "parseLsRefsResponse", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8595, + "id": 8598, "name": "parseLsRefsResponse", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8596, + "id": 8599, "name": "pktStream", "variant": "param", "kind": 32768, @@ -49145,7 +49192,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -49165,7 +49212,7 @@ "typeArguments": [ { "type": "reference", - "target": 8528, + "target": 8531, "name": "Advertisement", "package": "@scolladon/tsgit" } @@ -49177,14 +49224,14 @@ ] }, { - "id": 9257, + "id": 9260, "name": "parseMultiPackIndex", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9258, + "id": 9261, "name": "parseMultiPackIndex", "variant": "signature", "kind": 4096, @@ -49215,7 +49262,7 @@ }, "parameters": [ { - "id": 9259, + "id": 9262, "name": "bytes", "variant": "param", "kind": 32768, @@ -49232,7 +49279,7 @@ } }, { - "id": 9260, + "id": 9263, "name": "digestLength", "variant": "param", "kind": 32768, @@ -49245,7 +49292,7 @@ ], "type": { "type": "reference", - "target": 9219, + "target": 9222, "name": "MultiPackIndex", "package": "@scolladon/tsgit" } @@ -49253,14 +49300,14 @@ ] }, { - "id": 8430, + "id": 8433, "name": "parseObjectFilter", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8431, + "id": 8434, "name": "parseObjectFilter", "variant": "signature", "kind": 4096, @@ -49291,7 +49338,7 @@ }, "parameters": [ { - "id": 8432, + "id": 8435, "name": "spec", "variant": "param", "kind": 32768, @@ -49304,7 +49351,7 @@ ], "type": { "type": "reference", - "target": 8421, + "target": 8424, "name": "ObjectFilter", "package": "@scolladon/tsgit" } @@ -49312,14 +49359,14 @@ ] }, { - "id": 9046, + "id": 9049, "name": "parsePackBitmap", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9047, + "id": 9050, "name": "parsePackBitmap", "variant": "signature", "kind": 4096, @@ -49374,7 +49421,7 @@ }, "parameters": [ { - "id": 9048, + "id": 9051, "name": "bytes", "variant": "param", "kind": 32768, @@ -49391,7 +49438,7 @@ } }, { - "id": 9049, + "id": 9052, "name": "digestLength", "variant": "param", "kind": 32768, @@ -49404,7 +49451,7 @@ ], "type": { "type": "reference", - "target": 9033, + "target": 9036, "name": "PackBitmap", "package": "@scolladon/tsgit" } @@ -49412,21 +49459,21 @@ ] }, { - "id": 8746, + "id": 8749, "name": "parsePackedRefs", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8747, + "id": 8750, "name": "parsePackedRefs", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8748, + "id": 8751, "name": "content", "variant": "param", "kind": 32768, @@ -49439,7 +49486,7 @@ ], "type": { "type": "reference", - "target": 8772, + "target": 8775, "name": "PackedRefs", "package": "@scolladon/tsgit" } @@ -49447,21 +49494,21 @@ ] }, { - "id": 9302, + "id": 9305, "name": "parsePackEntryHeader", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9303, + "id": 9306, "name": "parsePackEntryHeader", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9304, + "id": 9307, "name": "bytes", "variant": "param", "kind": 32768, @@ -49478,7 +49525,7 @@ } }, { - "id": 9305, + "id": 9308, "name": "offset", "variant": "param", "kind": 32768, @@ -49489,7 +49536,7 @@ } }, { - "id": 9306, + "id": 9309, "name": "hash", "variant": "param", "kind": 32768, @@ -49504,7 +49551,7 @@ ], "type": { "type": "reference", - "target": 9271, + "target": 9274, "name": "PackEntryHeader", "package": "@scolladon/tsgit" } @@ -49512,21 +49559,21 @@ ] }, { - "id": 9307, + "id": 9310, "name": "parsePackHeader", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9308, + "id": 9311, "name": "parsePackHeader", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9309, + "id": 9312, "name": "bytes", "variant": "param", "kind": 32768, @@ -49545,7 +49592,7 @@ ], "type": { "type": "reference", - "target": 9273, + "target": 9276, "name": "PackHeader", "package": "@scolladon/tsgit" } @@ -49553,21 +49600,21 @@ ] }, { - "id": 9350, + "id": 9353, "name": "parsePackIndex", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9351, + "id": 9354, "name": "parsePackIndex", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9352, + "id": 9355, "name": "bytes", "variant": "param", "kind": 32768, @@ -49584,7 +49631,7 @@ } }, { - "id": 9353, + "id": 9356, "name": "digestLength", "variant": "param", "kind": 32768, @@ -49606,7 +49653,7 @@ ], "type": { "type": "reference", - "target": 9314, + "target": 9317, "name": "PackIndex", "package": "@scolladon/tsgit" } @@ -49614,14 +49661,14 @@ ] }, { - "id": 9397, + "id": 9400, "name": "parsePackRevIndex", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9398, + "id": 9401, "name": "parsePackRevIndex", "variant": "signature", "kind": 4096, @@ -49668,7 +49715,7 @@ }, "parameters": [ { - "id": 9399, + "id": 9402, "name": "bytes", "variant": "param", "kind": 32768, @@ -49685,7 +49732,7 @@ } }, { - "id": 9400, + "id": 9403, "name": "digestLength", "variant": "param", "kind": 32768, @@ -49696,7 +49743,7 @@ } }, { - "id": 9401, + "id": 9404, "name": "objectCount", "variant": "param", "kind": 32768, @@ -49709,7 +49756,7 @@ ], "type": { "type": "reference", - "target": 9389, + "target": 9392, "name": "PackRevIndex", "package": "@scolladon/tsgit" } @@ -49717,21 +49764,21 @@ ] }, { - "id": 8504, + "id": 8507, "name": "parseReceivePackResponse", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8505, + "id": 8508, "name": "parseReceivePackResponse", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8506, + "id": 8509, "name": "source", "variant": "param", "kind": 32768, @@ -49746,7 +49793,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -49766,7 +49813,7 @@ "typeArguments": [ { "type": "reference", - "target": 8475, + "target": 8478, "name": "ReceivePackResponse", "package": "@scolladon/tsgit" } @@ -49778,14 +49825,14 @@ ] }, { - "id": 8667, + "id": 8670, "name": "parseReflog", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8668, + "id": 8671, "name": "parseReflog", "variant": "signature", "kind": 4096, @@ -49800,7 +49847,7 @@ }, "parameters": [ { - "id": 8669, + "id": 8672, "name": "text", "variant": "param", "kind": 32768, @@ -49811,7 +49858,7 @@ } }, { - "id": 8670, + "id": 8673, "name": "hexLength", "variant": "param", "kind": 32768, @@ -49848,14 +49895,14 @@ ] }, { - "id": 8671, + "id": 8674, "name": "parseReflogLine", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8672, + "id": 8675, "name": "parseReflogLine", "variant": "signature", "kind": 4096, @@ -49870,7 +49917,7 @@ }, "parameters": [ { - "id": 8673, + "id": 8676, "name": "line", "variant": "param", "kind": 32768, @@ -49881,7 +49928,7 @@ } }, { - "id": 8674, + "id": 8677, "name": "hexLength", "variant": "param", "kind": 32768, @@ -49911,14 +49958,14 @@ ] }, { - "id": 8841, + "id": 8844, "name": "parseReftable", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8842, + "id": 8845, "name": "parseReftable", "variant": "signature", "kind": 4096, @@ -49957,7 +50004,7 @@ }, "parameters": [ { - "id": 8843, + "id": 8846, "name": "bytes", "variant": "param", "kind": 32768, @@ -49976,7 +50023,7 @@ ], "type": { "type": "reference", - "target": 8821, + "target": 8824, "name": "Reftable", "package": "@scolladon/tsgit" } @@ -49984,14 +50031,14 @@ ] }, { - "id": 8563, + "id": 8566, "name": "parseShallowResponse", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8564, + "id": 8567, "name": "parseShallowResponse", "variant": "signature", "kind": 4096, @@ -50022,7 +50069,7 @@ }, "parameters": [ { - "id": 8565, + "id": 8568, "name": "iter", "variant": "param", "kind": 32768, @@ -50037,7 +50084,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -50057,7 +50104,7 @@ "typeArguments": [ { "type": "reference", - "target": 8535, + "target": 8538, "name": "ShallowUpdates", "package": "@scolladon/tsgit" } @@ -50069,21 +50116,21 @@ ] }, { - "id": 8507, + "id": 8510, "name": "parseSideBand", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8508, + "id": 8511, "name": "parseSideBand", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8509, + "id": 8512, "name": "source", "variant": "param", "kind": 32768, @@ -50098,7 +50145,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -50108,14 +50155,14 @@ } }, { - "id": 8510, + "id": 8513, "name": "options", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8511, + "target": 8514, "name": "SideBandOptions", "package": "@scolladon/tsgit" } @@ -50159,14 +50206,14 @@ ] }, { - "id": 9011, + "id": 9014, "name": "parseSparseCheckout", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9012, + "id": 9015, "name": "parseSparseCheckout", "variant": "signature", "kind": 4096, @@ -50205,7 +50252,7 @@ }, "parameters": [ { - "id": 9013, + "id": 9016, "name": "text", "variant": "param", "kind": 32768, @@ -50216,7 +50263,7 @@ } }, { - "id": 9014, + "id": 9017, "name": "coneRequested", "variant": "param", "kind": 32768, @@ -50229,7 +50276,7 @@ ], "type": { "type": "reference", - "target": 9008, + "target": 9011, "name": "ParsedSparseCheckout", "package": "@scolladon/tsgit" } @@ -50237,21 +50284,21 @@ ] }, { - "id": 8566, + "id": 8569, "name": "parseUploadPackResponse", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8567, + "id": 8570, "name": "parseUploadPackResponse", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8568, + "id": 8571, "name": "source", "variant": "param", "kind": 32768, @@ -50266,7 +50313,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -50276,7 +50323,7 @@ } }, { - "id": 8569, + "id": 8572, "name": "options", "variant": "param", "kind": 32768, @@ -50284,14 +50331,14 @@ "type": { "type": "reflection", "declaration": { - "id": 8570, + "id": 8573, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8576, + "id": 8579, "name": "expectShallow", "variant": "declaration", "kind": 1024, @@ -50305,7 +50352,7 @@ } }, { - "id": 8572, + "id": 8575, "name": "onProgress", "variant": "declaration", "kind": 1024, @@ -50316,21 +50363,21 @@ "type": { "type": "reflection", "declaration": { - "id": 8573, + "id": 8576, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "signatures": [ { - "id": 8574, + "id": 8577, "name": "__type", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8575, + "id": 8578, "name": "text", "variant": "param", "kind": 32768, @@ -50351,7 +50398,7 @@ } }, { - "id": 8571, + "id": 8574, "name": "sideBand", "variant": "declaration", "kind": 1024, @@ -50368,9 +50415,9 @@ { "title": "Properties", "children": [ - 8576, - 8572, - 8571 + 8579, + 8575, + 8574 ] } ] @@ -50388,7 +50435,7 @@ "typeArguments": [ { "type": "reference", - "target": 8538, + "target": 8541, "name": "UploadPackResponse", "package": "@scolladon/tsgit" } @@ -50400,21 +50447,21 @@ ] }, { - "id": 8597, + "id": 8600, "name": "parseV2Capabilities", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8598, + "id": 8601, "name": "parseV2Capabilities", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8599, + "id": 8602, "name": "pktStream", "variant": "param", "kind": 32768, @@ -50429,7 +50476,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -50449,7 +50496,7 @@ "typeArguments": [ { "type": "reference", - "target": 8615, + "target": 8618, "name": "V2Capabilities", "package": "@scolladon/tsgit" } @@ -50461,21 +50508,21 @@ ] }, { - "id": 8600, + "id": 8603, "name": "parseV2FetchResponse", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8601, + "id": 8604, "name": "parseV2FetchResponse", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8602, + "id": 8605, "name": "pktStream", "variant": "param", "kind": 32768, @@ -50490,7 +50537,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -50500,7 +50547,7 @@ } }, { - "id": 8603, + "id": 8606, "name": "options", "variant": "param", "kind": 32768, @@ -50528,7 +50575,7 @@ "typeArguments": [ { "type": "reference", - "target": 8628, + "target": 8631, "name": "V2FetchResponse", "package": "@scolladon/tsgit" } @@ -50540,21 +50587,21 @@ ] }, { - "id": 7866, + "id": 7869, "name": "pathspecBeyondSymlink", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7867, + "id": 7870, "name": "pathspecBeyondSymlink", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7868, + "id": 7871, "name": "path", "variant": "param", "kind": 32768, @@ -50577,21 +50624,21 @@ ] }, { - "id": 7869, + "id": 7872, "name": "pathspecNoMatch", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7870, + "id": 7873, "name": "pathspecNoMatch", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7871, + "id": 7874, "name": "pattern", "variant": "param", "kind": 32768, @@ -50612,21 +50659,21 @@ ] }, { - "id": 7872, + "id": 7875, "name": "pathspecOutsideRepo", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7873, + "id": 7876, "name": "pathspecOutsideRepo", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7874, + "id": 7877, "name": "path", "variant": "param", "kind": 32768, @@ -50649,21 +50696,21 @@ ] }, { - "id": 8755, + "id": 8758, "name": "peelOneLevel", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8756, + "id": 8759, "name": "peelOneLevel", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8757, + "id": 8760, "name": "object", "variant": "param", "kind": 32768, @@ -50681,7 +50728,7 @@ "types": [ { "type": "reference", - "target": 8752, + "target": 8755, "name": "PeelResult", "package": "@scolladon/tsgit" }, @@ -50695,14 +50742,14 @@ ] }, { - "id": 8272, + "id": 8275, "name": "peerNegotiatesObjectFormat", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8273, + "id": 8276, "name": "peerNegotiatesObjectFormat", "variant": "signature", "kind": 4096, @@ -50757,7 +50804,7 @@ }, "parameters": [ { - "id": 8274, + "id": 8277, "name": "advertised", "variant": "param", "kind": 32768, @@ -50783,21 +50830,21 @@ ] }, { - "id": 7344, + "id": 7347, "name": "permissionDenied", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7345, + "id": 7348, "name": "permissionDenied", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7346, + "id": 7349, "name": "path", "variant": "param", "kind": 32768, @@ -50818,21 +50865,21 @@ ] }, { - "id": 8387, + "id": 8390, "name": "pktLengthReserved", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8388, + "id": 8391, "name": "pktLengthReserved", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8389, + "id": 8392, "name": "value", "variant": "param", "kind": 32768, @@ -50853,21 +50900,21 @@ ] }, { - "id": 8390, + "id": 8393, "name": "pktTooLarge", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8391, + "id": 8394, "name": "pktTooLarge", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8392, + "id": 8395, "name": "value", "variant": "param", "kind": 32768, @@ -50888,21 +50935,21 @@ ] }, { - "id": 8393, + "id": 8396, "name": "pktTruncated", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8394, + "id": 8397, "name": "pktTruncated", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8395, + "id": 8398, "name": "remaining", "variant": "param", "kind": 32768, @@ -50923,21 +50970,21 @@ ] }, { - "id": 8396, + "id": 8399, "name": "pushObjectFormatUnsupported", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8397, + "id": 8400, "name": "pushObjectFormatUnsupported", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8398, + "id": 8401, "name": "local", "variant": "param", "kind": 32768, @@ -50948,7 +50995,7 @@ } }, { - "id": 8399, + "id": 8402, "name": "remote", "variant": "param", "kind": 32768, @@ -50969,21 +51016,21 @@ ] }, { - "id": 7875, + "id": 7878, "name": "pushRejected", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7876, + "id": 7879, "name": "pushRejected", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7877, + "id": 7880, "name": "ref", "variant": "param", "kind": 32768, @@ -50996,7 +51043,7 @@ } }, { - "id": 7878, + "id": 7881, "name": "reason", "variant": "param", "kind": 32768, @@ -51007,14 +51054,14 @@ } }, { - "id": 7879, + "id": 7882, "name": "reportStatus", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8475, + "target": 8478, "name": "ReceivePackResponse", "package": "@scolladon/tsgit" } @@ -51030,14 +51077,14 @@ ] }, { - "id": 9086, + "id": 9089, "name": "readDeltaTargetSize", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9087, + "id": 9090, "name": "readDeltaTargetSize", "variant": "signature", "kind": 4096, @@ -51084,7 +51131,7 @@ }, "parameters": [ { - "id": 9088, + "id": 9091, "name": "delta", "variant": "param", "kind": 32768, @@ -51109,14 +51156,14 @@ ] }, { - "id": 9182, + "id": 9185, "name": "readEwahStream", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9183, + "id": 9186, "name": "readEwahStream", "variant": "signature", "kind": 4096, @@ -51147,7 +51194,7 @@ }, "parameters": [ { - "id": 9184, + "id": 9187, "name": "bytes", "variant": "param", "kind": 32768, @@ -51164,7 +51211,7 @@ } }, { - "id": 9185, + "id": 9188, "name": "view", "variant": "param", "kind": 32768, @@ -51181,7 +51228,7 @@ } }, { - "id": 9186, + "id": 9189, "name": "at", "variant": "param", "kind": 32768, @@ -51194,7 +51241,7 @@ ], "type": { "type": "reference", - "target": 9165, + "target": 9168, "name": "EwahStream", "package": "@scolladon/tsgit" } @@ -51202,14 +51249,14 @@ ] }, { - "id": 8844, + "id": 8847, "name": "readMagicAndVersion", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8845, + "id": 8848, "name": "readMagicAndVersion", "variant": "signature", "kind": 4096, @@ -51224,7 +51271,7 @@ "kind": "inline-tag", "tag": "@link", "text": "parseReftable", - "target": 8841 + "target": 8844 }, { "kind": "text", @@ -51306,7 +51353,7 @@ }, "parameters": [ { - "id": 8846, + "id": 8849, "name": "prefix", "variant": "param", "kind": 32768, @@ -51323,7 +51370,7 @@ } }, { - "id": 8847, + "id": 8850, "name": "fileByteLength", "variant": "param", "kind": 32768, @@ -51337,14 +51384,14 @@ "type": { "type": "reflection", "declaration": { - "id": 8848, + "id": 8851, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8849, + "id": 8852, "name": "version", "variant": "declaration", "kind": 1024, @@ -51370,7 +51417,7 @@ { "title": "Properties", "children": [ - 8849 + 8852 ] } ] @@ -51380,14 +51427,14 @@ ] }, { - "id": 8275, + "id": 8278, "name": "readObjectFormat", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8276, + "id": 8279, "name": "readObjectFormat", "variant": "signature", "kind": 4096, @@ -51426,7 +51473,7 @@ }, "parameters": [ { - "id": 8277, + "id": 8280, "name": "caps", "variant": "param", "kind": 32768, @@ -51452,21 +51499,21 @@ ] }, { - "id": 8604, + "id": 8607, "name": "readSections", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8605, + "id": 8608, "name": "readSections", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8606, + "id": 8609, "name": "pktStream", "variant": "param", "kind": 32768, @@ -51481,7 +51528,7 @@ "typeArguments": [ { "type": "reference", - "target": 8455, + "target": 8458, "name": "PktLine", "package": "@scolladon/tsgit" } @@ -51501,7 +51548,7 @@ "typeArguments": [ { "type": "reference", - "target": 8607, + "target": 8610, "name": "Section", "package": "@scolladon/tsgit" } @@ -51513,14 +51560,14 @@ ] }, { - "id": 8761, + "id": 8764, "name": "refCandidates", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8762, + "id": 8765, "name": "refCandidates", "variant": "signature", "kind": 4096, @@ -51631,7 +51678,7 @@ }, "parameters": [ { - "id": 8763, + "id": 8766, "name": "base", "variant": "param", "kind": 32768, @@ -51668,21 +51715,21 @@ ] }, { - "id": 8658, + "id": 8661, "name": "reflogEntryOutOfRange", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8659, + "id": 8662, "name": "reflogEntryOutOfRange", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8660, + "id": 8663, "name": "ref", "variant": "param", "kind": 32768, @@ -51695,7 +51742,7 @@ } }, { - "id": 8661, + "id": 8664, "name": "requested", "variant": "param", "kind": 32768, @@ -51706,7 +51753,7 @@ } }, { - "id": 8662, + "id": 8665, "name": "available", "variant": "param", "kind": 32768, @@ -51727,21 +51774,21 @@ ] }, { - "id": 8663, + "id": 8666, "name": "reflogNotFound", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8664, + "id": 8667, "name": "reflogNotFound", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8665, + "id": 8668, "name": "ref", "variant": "param", "kind": 32768, @@ -51764,21 +51811,21 @@ ] }, { - "id": 8733, + "id": 8736, "name": "reftableLocked", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8734, + "id": 8737, "name": "reftableLocked", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8735, + "id": 8738, "name": "stack", "variant": "param", "kind": 32768, @@ -51789,7 +51836,7 @@ } }, { - "id": 8736, + "id": 8739, "name": "reason", "variant": "param", "kind": 32768, @@ -51810,14 +51857,14 @@ ] }, { - "id": 7880, + "id": 7883, "name": "remoteAdvertisesNoRefs", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7881, + "id": 7884, "name": "remoteAdvertisesNoRefs", "variant": "signature", "kind": 4096, @@ -51832,21 +51879,21 @@ ] }, { - "id": 7882, + "id": 7885, "name": "remoteExists", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7883, + "id": 7886, "name": "remoteExists", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7884, + "id": 7887, "name": "remote", "variant": "param", "kind": 32768, @@ -51867,14 +51914,14 @@ ] }, { - "id": 8400, + "id": 8403, "name": "remoteFilterUnsupported", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8401, + "id": 8404, "name": "remoteFilterUnsupported", "variant": "signature", "kind": 4096, @@ -51889,21 +51936,21 @@ ] }, { - "id": 7885, + "id": 7888, "name": "remoteNameInvalid", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7886, + "id": 7889, "name": "remoteNameInvalid", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7887, + "id": 7890, "name": "name", "variant": "param", "kind": 32768, @@ -51914,7 +51961,7 @@ } }, { - "id": 7888, + "id": 7891, "name": "reason", "variant": "param", "kind": 32768, @@ -51935,21 +51982,21 @@ ] }, { - "id": 7889, + "id": 7892, "name": "remoteNotConfigured", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7890, + "id": 7893, "name": "remoteNotConfigured", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7891, + "id": 7894, "name": "remote", "variant": "param", "kind": 32768, @@ -51970,14 +52017,14 @@ ] }, { - "id": 8101, + "id": 8104, "name": "replayLabels", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8102, + "id": 8105, "name": "replayLabels", "variant": "signature", "kind": 4096, @@ -51992,7 +52039,7 @@ }, "parameters": [ { - "id": 8103, + "id": 8106, "name": "oid", "variant": "param", "kind": 32768, @@ -52005,7 +52052,7 @@ } }, { - "id": 8104, + "id": 8107, "name": "subject", "variant": "param", "kind": 32768, @@ -52018,7 +52065,7 @@ ], "type": { "type": "reference", - "target": 8093, + "target": 8096, "name": "MergeLabels", "package": "@scolladon/tsgit" } @@ -52026,14 +52073,14 @@ ] }, { - "id": 8105, + "id": 8108, "name": "revertLabels", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8106, + "id": 8109, "name": "revertLabels", "variant": "signature", "kind": 4096, @@ -52048,7 +52095,7 @@ "kind": "inline-tag", "tag": "@link", "text": "replayLabels", - "target": 8101 + "target": 8104 }, { "kind": "text", @@ -52058,7 +52105,7 @@ }, "parameters": [ { - "id": 8107, + "id": 8110, "name": "oid", "variant": "param", "kind": 32768, @@ -52071,7 +52118,7 @@ } }, { - "id": 8108, + "id": 8111, "name": "subject", "variant": "param", "kind": 32768, @@ -52084,7 +52131,7 @@ ], "type": { "type": "reference", - "target": 8093, + "target": 8096, "name": "MergeLabels", "package": "@scolladon/tsgit" } @@ -52092,14 +52139,14 @@ ] }, { - "id": 9405, + "id": 9408, "name": "revIndexPositionAt", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9406, + "id": 9409, "name": "revIndexPositionAt", "variant": "signature", "kind": 4096, @@ -52130,20 +52177,20 @@ }, "parameters": [ { - "id": 9407, + "id": 9410, "name": "rev", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9389, + "target": 9392, "name": "PackRevIndex", "package": "@scolladon/tsgit" } }, { - "id": 9408, + "id": 9411, "name": "p", "variant": "param", "kind": 32768, @@ -52162,21 +52209,21 @@ ] }, { - "id": 7892, + "id": 7895, "name": "revparseAmbiguous", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7893, + "id": 7896, "name": "revparseAmbiguous", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7894, + "id": 7897, "name": "expression", "variant": "param", "kind": 32768, @@ -52187,7 +52234,7 @@ } }, { - "id": 7895, + "id": 7898, "name": "candidates", "variant": "param", "kind": 32768, @@ -52217,21 +52264,21 @@ ] }, { - "id": 7896, + "id": 7899, "name": "revparseUnresolved", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7897, + "id": 7900, "name": "revparseUnresolved", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7898, + "id": 7901, "name": "expression", "variant": "param", "kind": 32768, @@ -52252,21 +52299,21 @@ ] }, { - "id": 7899, + "id": 7902, "name": "rmLocalModifications", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7900, + "id": 7903, "name": "rmLocalModifications", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7901, + "id": 7904, "name": "paths", "variant": "param", "kind": 32768, @@ -52296,21 +52343,21 @@ ] }, { - "id": 7902, + "id": 7905, "name": "rmStagedAndLocalChanges", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7903, + "id": 7906, "name": "rmStagedAndLocalChanges", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7904, + "id": 7907, "name": "paths", "variant": "param", "kind": 32768, @@ -52340,21 +52387,21 @@ ] }, { - "id": 7905, + "id": 7908, "name": "rmStagedChanges", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7906, + "id": 7909, "name": "rmStagedChanges", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7907, + "id": 7910, "name": "paths", "variant": "param", "kind": 32768, @@ -52384,14 +52431,14 @@ ] }, { - "id": 8675, + "id": 8678, "name": "sanitizeReflogMessage", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8676, + "id": 8679, "name": "sanitizeReflogMessage", "variant": "signature", "kind": 4096, @@ -52406,7 +52453,7 @@ }, "parameters": [ { - "id": 8677, + "id": 8680, "name": "message", "variant": "param", "kind": 32768, @@ -52425,14 +52472,14 @@ ] }, { - "id": 8989, + "id": 8992, "name": "serializeCone", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8990, + "id": 8993, "name": "serializeCone", "variant": "signature", "kind": 4096, @@ -52471,7 +52518,7 @@ }, "parameters": [ { - "id": 8991, + "id": 8994, "name": "spec", "variant": "param", "kind": 32768, @@ -52479,14 +52526,14 @@ "type": { "type": "reflection", "declaration": { - "id": 8992, + "id": 8995, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "children": [ { - "id": 8993, + "id": 8996, "name": "mode", "variant": "declaration", "kind": 1024, @@ -52499,7 +52546,7 @@ } }, { - "id": 8995, + "id": 8998, "name": "parents", "variant": "declaration", "kind": 1024, @@ -52532,7 +52579,7 @@ } }, { - "id": 8994, + "id": 8997, "name": "recursive", "variant": "declaration", "kind": 1024, @@ -52569,9 +52616,9 @@ { "title": "Properties", "children": [ - 8993, - 8995, - 8994 + 8996, + 8998, + 8997 ] } ] @@ -52587,14 +52634,14 @@ ] }, { - "id": 9059, + "id": 9062, "name": "serializeCruftMtimes", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9060, + "id": 9063, "name": "serializeCruftMtimes", "variant": "signature", "kind": 4096, @@ -52665,20 +52712,20 @@ }, "parameters": [ { - "id": 9061, + "id": 9064, "name": "sorted", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9360, + "target": 9363, "name": "SortedPackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9062, + "id": 9065, "name": "packChecksum", "variant": "param", "kind": 32768, @@ -52695,7 +52742,7 @@ } }, { - "id": 9063, + "id": 9066, "name": "mtimeAt", "variant": "param", "kind": 32768, @@ -52703,21 +52750,21 @@ "type": { "type": "reflection", "declaration": { - "id": 9064, + "id": 9067, "name": "__type", "variant": "declaration", "kind": 65536, "flags": {}, "signatures": [ { - "id": 9065, + "id": 9068, "name": "__type", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9066, + "id": 9069, "name": "ordinal", "variant": "param", "kind": 32768, @@ -52752,21 +52799,21 @@ ] }, { - "id": 9094, + "id": 9097, "name": "serializeDelta", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9095, + "id": 9098, "name": "serializeDelta", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9096, + "id": 9099, "name": "sourceLength", "variant": "param", "kind": 32768, @@ -52777,7 +52824,7 @@ } }, { - "id": 9097, + "id": 9100, "name": "targetLength", "variant": "param", "kind": 32768, @@ -52788,7 +52835,7 @@ } }, { - "id": 9098, + "id": 9101, "name": "instructions", "variant": "param", "kind": 32768, @@ -52800,7 +52847,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 9071, + "target": 9074, "name": "DeltaInstruction", "package": "@scolladon/tsgit" } @@ -52822,21 +52869,21 @@ ] }, { - "id": 8740, + "id": 8743, "name": "serializeDirectRef", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8741, + "id": 8744, "name": "serializeDirectRef", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8742, + "id": 8745, "name": "id", "variant": "param", "kind": 32768, @@ -52857,28 +52904,28 @@ ] }, { - "id": 8749, + "id": 8752, "name": "serializePackedRefs", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8750, + "id": 8753, "name": "serializePackedRefs", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8751, + "id": 8754, "name": "refs", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8772, + "target": 8775, "name": "PackedRefs", "package": "@scolladon/tsgit" } @@ -52892,21 +52939,21 @@ ] }, { - "id": 9382, + "id": 9385, "name": "serializePackfile", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9383, + "id": 9386, "name": "serializePackfile", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9384, + "id": 9387, "name": "entries", "variant": "param", "kind": 32768, @@ -52918,7 +52965,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 9381, + "target": 9384, "name": "PackWriterEntry", "package": "@scolladon/tsgit" } @@ -52928,7 +52975,7 @@ ], "type": { "type": "reference", - "target": 9369, + "target": 9372, "name": "PackfileResult", "package": "@scolladon/tsgit" } @@ -52936,21 +52983,21 @@ ] }, { - "id": 9310, + "id": 9313, "name": "serializePackHeader", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9311, + "id": 9314, "name": "serializePackHeader", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 9312, + "id": 9315, "name": "version", "variant": "param", "kind": 32768, @@ -52961,7 +53008,7 @@ } }, { - "id": 9313, + "id": 9316, "name": "objectCount", "variant": "param", "kind": 32768, @@ -52986,14 +53033,14 @@ ] }, { - "id": 9385, + "id": 9388, "name": "serializePackIndex", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9386, + "id": 9389, "name": "serializePackIndex", "variant": "signature", "kind": 4096, @@ -53048,20 +53095,20 @@ }, "parameters": [ { - "id": 9387, + "id": 9390, "name": "sorted", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9360, + "target": 9363, "name": "SortedPackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9388, + "id": 9391, "name": "packChecksum", "variant": "param", "kind": 32768, @@ -53092,14 +53139,14 @@ ] }, { - "id": 9409, + "id": 9412, "name": "serializePackRevIndex", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9410, + "id": 9413, "name": "serializePackRevIndex", "variant": "signature", "kind": 4096, @@ -53162,20 +53209,20 @@ }, "parameters": [ { - "id": 9411, + "id": 9414, "name": "sorted", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9360, + "target": 9363, "name": "SortedPackIndex", "package": "@scolladon/tsgit" } }, { - "id": 9412, + "id": 9415, "name": "packChecksum", "variant": "param", "kind": 32768, @@ -53206,14 +53253,14 @@ ] }, { - "id": 8678, + "id": 8681, "name": "serializeReflogLine", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8679, + "id": 8682, "name": "serializeReflogLine", "variant": "signature", "kind": 4096, @@ -53228,7 +53275,7 @@ }, "parameters": [ { - "id": 8680, + "id": 8683, "name": "entry", "variant": "param", "kind": 32768, @@ -53241,7 +53288,7 @@ } }, { - "id": 8681, + "id": 8684, "name": "hexLength", "variant": "param", "kind": 32768, @@ -53269,14 +53316,14 @@ ] }, { - "id": 8909, + "id": 8912, "name": "serializeReftable", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8910, + "id": 8913, "name": "serializeReftable", "variant": "signature", "kind": 4096, @@ -53315,7 +53362,7 @@ }, "parameters": [ { - "id": 8911, + "id": 8914, "name": "refs", "variant": "param", "kind": 32768, @@ -53327,7 +53374,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8785, + "target": 8788, "name": "ReftableRefRecord", "package": "@scolladon/tsgit" } @@ -53335,7 +53382,7 @@ } }, { - "id": 8912, + "id": 8915, "name": "logs", "variant": "param", "kind": 32768, @@ -53347,7 +53394,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8865, + "target": 8868, "name": "ReftableLogRecord", "package": "@scolladon/tsgit" } @@ -53355,20 +53402,20 @@ } }, { - "id": 8913, + "id": 8916, "name": "options", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8898, + "target": 8901, "name": "ReftableWriteOptions", "package": "@scolladon/tsgit" } }, { - "id": 8914, + "id": 8917, "name": "deflate", "variant": "param", "kind": 32768, @@ -53423,21 +53470,21 @@ ] }, { - "id": 8743, + "id": 8746, "name": "serializeSymbolicRef", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8744, + "id": 8747, "name": "serializeSymbolicRef", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8745, + "id": 8748, "name": "target", "variant": "param", "kind": 32768, @@ -53458,14 +53505,14 @@ ] }, { - "id": 8685, + "id": 8688, "name": "shouldAutocreateReflog", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8686, + "id": 8689, "name": "shouldAutocreateReflog", "variant": "signature", "kind": 4096, @@ -53520,7 +53567,7 @@ }, "parameters": [ { - "id": 8687, + "id": 8690, "name": "ref", "variant": "param", "kind": 32768, @@ -53533,14 +53580,14 @@ } }, { - "id": 8688, + "id": 8691, "name": "cfg", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8682, + "target": 8685, "name": "LogAllRefUpdates", "package": "@scolladon/tsgit" } @@ -53554,21 +53601,21 @@ ] }, { - "id": 8402, + "id": 8405, "name": "sidebandFatal", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8403, + "id": 8406, "name": "sidebandFatal", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8404, + "id": 8407, "name": "message", "variant": "param", "kind": 32768, @@ -53589,14 +53636,14 @@ ] }, { - "id": 9363, + "id": 9366, "name": "sortPackIndexEntries", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 9364, + "id": 9367, "name": "sortPackIndexEntries", "variant": "signature", "kind": 4096, @@ -53659,14 +53706,14 @@ }, "parameters": [ { - "id": 9365, + "id": 9368, "name": "entries", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 9354, + "target": 9357, "name": "PackIndexEntries", "package": "@scolladon/tsgit" } @@ -53674,7 +53721,7 @@ ], "type": { "type": "reference", - "target": 9360, + "target": 9363, "name": "SortedPackIndex", "package": "@scolladon/tsgit" } @@ -53682,14 +53729,14 @@ ] }, { - "id": 8817, + "id": 8820, "name": "suggestCompactionSegment", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8818, + "id": 8821, "name": "suggestCompactionSegment", "variant": "signature", "kind": 4096, @@ -53750,7 +53797,7 @@ }, "parameters": [ { - "id": 8819, + "id": 8822, "name": "sizes", "variant": "param", "kind": 32768, @@ -53768,7 +53815,7 @@ } }, { - "id": 8820, + "id": 8823, "name": "factor", "variant": "param", "kind": 32768, @@ -53781,7 +53828,7 @@ ], "type": { "type": "reference", - "target": 8809, + "target": 8812, "name": "CompactionSegment", "package": "@scolladon/tsgit" } @@ -53789,28 +53836,28 @@ ] }, { - "id": 8612, + "id": 8615, "name": "supportsV2Fetch", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8613, + "id": 8616, "name": "supportsV2Fetch", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8614, + "id": 8617, "name": "caps", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8615, + "target": 8618, "name": "V2Capabilities", "package": "@scolladon/tsgit" } @@ -53824,21 +53871,21 @@ ] }, { - "id": 7912, + "id": 7915, "name": "tagExists", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7913, + "id": 7916, "name": "tagExists", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7914, + "id": 7917, "name": "name", "variant": "param", "kind": 32768, @@ -53861,21 +53908,21 @@ ] }, { - "id": 7915, + "id": 7918, "name": "tagNotFound", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7916, + "id": 7919, "name": "tagNotFound", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7917, + "id": 7920, "name": "name", "variant": "param", "kind": 32768, @@ -53898,14 +53945,14 @@ ] }, { - "id": 7357, + "id": 7360, "name": "tarArchive", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7358, + "id": 7361, "name": "tarArchive", "variant": "signature", "kind": 4096, @@ -53936,7 +53983,7 @@ }, "parameters": [ { - "id": 7359, + "id": 7362, "name": "result", "variant": "param", "kind": 32768, @@ -53949,7 +53996,7 @@ } }, { - "id": 7360, + "id": 7363, "name": "opts", "variant": "param", "kind": 32768, @@ -53958,7 +54005,7 @@ }, "type": { "type": "reference", - "target": 7351, + "target": 7354, "name": "TarOptions", "package": "@scolladon/tsgit" } @@ -54002,21 +54049,21 @@ ] }, { - "id": 7918, + "id": 7921, "name": "targetDirectoryNotEmpty", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7919, + "id": 7922, "name": "targetDirectoryNotEmpty", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7920, + "id": 7923, "name": "path", "variant": "param", "kind": 32768, @@ -54039,14 +54086,14 @@ ] }, { - "id": 8068, + "id": 8071, "name": "tokenizeIgnoreLine", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8069, + "id": 8072, "name": "tokenizeIgnoreLine", "variant": "signature", "kind": 4096, @@ -54109,7 +54156,7 @@ }, "parameters": [ { - "id": 8070, + "id": 8073, "name": "rawLine", "variant": "param", "kind": 32768, @@ -54125,7 +54172,7 @@ "types": [ { "type": "reference", - "target": 8063, + "target": 8066, "name": "TokenizedIgnoreLine", "package": "@scolladon/tsgit" }, @@ -54139,21 +54186,21 @@ ] }, { - "id": 7921, + "id": 7924, "name": "tooManyRedirects", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7922, + "id": 7925, "name": "tooManyRedirects", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7923, + "id": 7926, "name": "count", "variant": "param", "kind": 32768, @@ -54174,21 +54221,21 @@ ] }, { - "id": 8405, + "id": 8408, "name": "unexpectedV2Section", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8406, + "id": 8409, "name": "unexpectedV2Section", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8407, + "id": 8410, "name": "section", "variant": "param", "kind": 32768, @@ -54209,21 +54256,21 @@ ] }, { - "id": 8408, + "id": 8411, "name": "unknownAckStatus", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8409, + "id": 8412, "name": "unknownAckStatus", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8410, + "id": 8413, "name": "value", "variant": "param", "kind": 32768, @@ -54244,21 +54291,21 @@ ] }, { - "id": 8411, + "id": 8414, "name": "unsupportedObjectFormat", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8412, + "id": 8415, "name": "unsupportedObjectFormat", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8413, + "id": 8416, "name": "format", "variant": "param", "kind": 32768, @@ -54269,7 +54316,7 @@ } }, { - "id": 8414, + "id": 8417, "name": "local", "variant": "param", "kind": 32768, @@ -54292,21 +54339,21 @@ ] }, { - "id": 7347, + "id": 7350, "name": "unsupportedOperation", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7348, + "id": 7351, "name": "unsupportedOperation", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7349, + "id": 7352, "name": "operation", "variant": "param", "kind": 32768, @@ -54317,7 +54364,7 @@ } }, { - "id": 7350, + "id": 7353, "name": "reason", "variant": "param", "kind": 32768, @@ -54338,21 +54385,21 @@ ] }, { - "id": 7924, + "id": 7927, "name": "unsupportedScheme", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7925, + "id": 7928, "name": "unsupportedScheme", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7926, + "id": 7929, "name": "scheme", "variant": "param", "kind": 32768, @@ -54373,21 +54420,21 @@ ] }, { - "id": 8415, + "id": 8418, "name": "v2CommandUnsupported", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8416, + "id": 8419, "name": "v2CommandUnsupported", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8417, + "id": 8420, "name": "command", "variant": "param", "kind": 32768, @@ -54408,21 +54455,21 @@ ] }, { - "id": 8782, + "id": 8785, "name": "validateRefName", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8783, + "id": 8786, "name": "validateRefName", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 8784, + "id": 8787, "name": "name", "variant": "param", "kind": 32768, @@ -54443,21 +54490,21 @@ ] }, { - "id": 7927, + "id": 7930, "name": "workingTreeDirty", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7928, + "id": 7931, "name": "workingTreeDirty", "variant": "signature", "kind": 4096, "flags": {}, "parameters": [ { - "id": 7929, + "id": 7932, "name": "__namedParameters", "variant": "param", "kind": 32768, @@ -54484,14 +54531,14 @@ ] }, { - "id": 8962, + "id": 8965, "name": "workTreeConfigInvalid", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8963, + "id": 8966, "name": "workTreeConfigInvalid", "variant": "signature", "kind": 4096, @@ -54530,7 +54577,7 @@ }, "parameters": [ { - "id": 8964, + "id": 8967, "name": "gitDir", "variant": "param", "kind": 32768, @@ -54551,14 +54598,14 @@ ] }, { - "id": 8965, + "id": 8968, "name": "workTreeRequired", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8966, + "id": 8969, "name": "workTreeRequired", "variant": "signature", "kind": 4096, @@ -54613,7 +54660,7 @@ }, "parameters": [ { - "id": 8967, + "id": 8970, "name": "operation", "variant": "param", "kind": 32768, @@ -54634,14 +54681,14 @@ ] }, { - "id": 8071, + "id": 8074, "name": "writeConflictMarkers", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 8072, + "id": 8075, "name": "writeConflictMarkers", "variant": "signature", "kind": 4096, @@ -54680,7 +54727,7 @@ }, "parameters": [ { - "id": 8073, + "id": 8076, "name": "oursLines", "variant": "param", "kind": 32768, @@ -54716,7 +54763,7 @@ } }, { - "id": 8074, + "id": 8077, "name": "theirsLines", "variant": "param", "kind": 32768, @@ -54752,14 +54799,14 @@ } }, { - "id": 8075, + "id": 8078, "name": "options", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 8110, + "target": 8113, "name": "ConflictMarkerOptions", "package": "@scolladon/tsgit" }, @@ -54780,14 +54827,14 @@ ] }, { - "id": 7374, + "id": 7377, "name": "zipArchive", "variant": "declaration", "kind": 64, "flags": {}, "signatures": [ { - "id": 7375, + "id": 7378, "name": "zipArchive", "variant": "signature", "kind": 4096, @@ -54826,7 +54873,7 @@ }, "parameters": [ { - "id": 7376, + "id": 7379, "name": "result", "variant": "param", "kind": 32768, @@ -54839,20 +54886,20 @@ } }, { - "id": 7377, + "id": 7380, "name": "deps", "variant": "param", "kind": 32768, "flags": {}, "type": { "type": "reference", - "target": 7363, + "target": 7366, "name": "ZipDeps", "package": "@scolladon/tsgit" } }, { - "id": 7378, + "id": 7381, "name": "opts", "variant": "param", "kind": 32768, @@ -54861,7 +54908,7 @@ }, "type": { "type": "reference", - "target": 7369, + "target": 7372, "name": "ZipOptions", "package": "@scolladon/tsgit" } @@ -54905,7 +54952,7 @@ ] }, { - "id": 7932, + "id": 7935, "name": "AddChange", "variant": "reference", "kind": 4194304, @@ -54913,7 +54960,7 @@ "target": 993 }, { - "id": 7361, + "id": 7364, "name": "ArchiveEntry", "variant": "reference", "kind": 4194304, @@ -54921,7 +54968,7 @@ "target": 1065 }, { - "id": 7362, + "id": 7365, "name": "ArchiveResult", "variant": "reference", "kind": 4194304, @@ -54929,7 +54976,7 @@ "target": 1072 }, { - "id": 8202, + "id": 8205, "name": "AuthorIdentity", "variant": "reference", "kind": 4194304, @@ -54937,7 +54984,7 @@ "target": 964 }, { - "id": 7957, + "id": 7960, "name": "BINARY_DETECTION_BYTES", "variant": "reference", "kind": 4194304, @@ -54945,7 +54992,7 @@ "target": 831 }, { - "id": 8205, + "id": 8208, "name": "Blob", "variant": "reference", "kind": 4194304, @@ -54953,7 +55000,7 @@ "target": 3677 }, { - "id": 7970, + "id": 7973, "name": "BodyLine", "variant": "reference", "kind": 4194304, @@ -54961,7 +55008,7 @@ "target": 3529 }, { - "id": 8214, + "id": 8217, "name": "bytesToHex", "variant": "reference", "kind": 4194304, @@ -54969,7 +55016,7 @@ "target": 3713 }, { - "id": 8006, + "id": 8009, "name": "CacheTreeEntry", "variant": "reference", "kind": 4194304, @@ -54977,7 +55024,7 @@ "target": 3589 }, { - "id": 7931, + "id": 7934, "name": "classifyUnmerged", "variant": "reference", "kind": 4194304, @@ -54985,7 +55032,7 @@ "target": 832 }, { - "id": 8208, + "id": 8211, "name": "Commit", "variant": "reference", "kind": 4194304, @@ -54993,7 +55040,7 @@ "target": 3688 }, { - "id": 8209, + "id": 8212, "name": "CommitData", "variant": "reference", "kind": 4194304, @@ -55001,7 +55048,7 @@ "target": 3692 }, { - "id": 8215, + "id": 8218, "name": "compareBytes", "variant": "reference", "kind": 4194304, @@ -55009,7 +55056,7 @@ "target": 3716 }, { - "id": 8017, + "id": 8020, "name": "compareEntryPath", "variant": "reference", "kind": 4194304, @@ -55017,7 +55064,7 @@ "target": 3643 }, { - "id": 7977, + "id": 7980, "name": "comparePaths", "variant": "reference", "kind": 4194304, @@ -55025,7 +55072,7 @@ "target": 835 }, { - "id": 7975, + "id": 7978, "name": "computeHunks", "variant": "reference", "kind": 4194304, @@ -55033,7 +55080,7 @@ "target": 839 }, { - "id": 7992, + "id": 7995, "name": "computeStatFields", "variant": "reference", "kind": 4194304, @@ -55041,7 +55088,7 @@ "target": 845 }, { - "id": 7379, + "id": 7382, "name": "ConfigKey", "variant": "reference", "kind": 4194304, @@ -55049,7 +55096,7 @@ "target": 2876 }, { - "id": 7380, + "id": 7383, "name": "ConfigScope", "variant": "reference", "kind": 4194304, @@ -55057,7 +55104,7 @@ "target": 2879 }, { - "id": 7930, + "id": 7933, "name": "ConflictKind", "variant": "reference", "kind": 4194304, @@ -55065,7 +55112,7 @@ "target": 2663 }, { - "id": 7949, + "id": 7952, "name": "conflictsToIndexEntries", "variant": "reference", "kind": 4194304, @@ -55073,7 +55120,7 @@ "target": 850 }, { - "id": 7933, + "id": 7936, "name": "CopyChange", "variant": "reference", "kind": 4194304, @@ -55081,7 +55128,7 @@ "target": 998 }, { - "id": 7982, + "id": 7985, "name": "DEFAULT_BREAK_SCORE", "variant": "reference", "kind": 4194304, @@ -55089,7 +55136,7 @@ "target": 857 }, { - "id": 7983, + "id": 7986, "name": "DEFAULT_MERGE_SCORE", "variant": "reference", "kind": 4194304, @@ -55097,7 +55144,7 @@ "target": 858 }, { - "id": 7984, + "id": 7987, "name": "DEFAULT_RENAME_THRESHOLD", "variant": "reference", "kind": 4194304, @@ -55105,7 +55152,7 @@ "target": 859 }, { - "id": 7934, + "id": 7937, "name": "DeleteChange", "variant": "reference", "kind": 4194304, @@ -55113,7 +55160,7 @@ "target": 1007 }, { - "id": 8227, + "id": 8230, "name": "deriveWorkingMode", "variant": "reference", "kind": 4194304, @@ -55121,7 +55168,7 @@ "target": 3798 }, { - "id": 7980, + "id": 7983, "name": "detectRenames", "variant": "reference", "kind": 4194304, @@ -55129,7 +55176,7 @@ "target": 860 }, { - "id": 7935, + "id": 7938, "name": "DiffChange", "variant": "reference", "kind": 4194304, @@ -55137,7 +55184,7 @@ "target": 1012 }, { - "id": 7936, + "id": 7939, "name": "DiffChangeType", "variant": "reference", "kind": 4194304, @@ -55145,7 +55192,7 @@ "target": 1013 }, { - "id": 7941, + "id": 7944, "name": "DiffError", "variant": "reference", "kind": 4194304, @@ -55153,7 +55200,7 @@ "target": 3496 }, { - "id": 7950, + "id": 7953, "name": "diffIndexAgainstTree", "variant": "reference", "kind": 4194304, @@ -55161,7 +55208,7 @@ "target": 864 }, { - "id": 7958, + "id": 7961, "name": "diffLines", "variant": "reference", "kind": 4194304, @@ -55169,7 +55216,7 @@ "target": 868 }, { - "id": 8217, + "id": 8220, "name": "DomainObjectError", "variant": "reference", "kind": 4194304, @@ -55193,7 +55240,7 @@ "target": 526 }, { - "id": 7985, + "id": 7988, "name": "estimateSimilarity", "variant": "reference", "kind": 4194304, @@ -55201,7 +55248,7 @@ "target": 873 }, { - "id": 8210, + "id": 8213, "name": "ExtraHeader", "variant": "reference", "kind": 4194304, @@ -55209,7 +55256,7 @@ "target": 3700 }, { - "id": 8228, + "id": 8231, "name": "FILE_MODE", "variant": "reference", "kind": 4194304, @@ -55217,7 +55264,7 @@ "target": 3804 }, { - "id": 8226, + "id": 8229, "name": "FileMode", "variant": "reference", "kind": 4194304, @@ -55225,7 +55272,7 @@ "target": 3797 }, { - "id": 7944, + "id": 7947, "name": "FlatTree", "variant": "reference", "kind": 4194304, @@ -55233,7 +55280,7 @@ "target": 3503 }, { - "id": 7945, + "id": 7948, "name": "FlatTreeEntry", "variant": "reference", "kind": 4194304, @@ -55241,7 +55288,7 @@ "target": 3505 }, { - "id": 8007, + "id": 8010, "name": "GitIndex", "variant": "reference", "kind": 4194304, @@ -55249,7 +55296,7 @@ "target": 3595 }, { - "id": 8232, + "id": 8235, "name": "GitObject", "variant": "reference", "kind": 4194304, @@ -55257,7 +55304,7 @@ "target": 3820 }, { - "id": 7947, + "id": 7950, "name": "GroupedIndex", "variant": "reference", "kind": 4194304, @@ -55265,7 +55312,7 @@ "target": 3508 }, { - "id": 7951, + "id": 7954, "name": "groupUnmergedEntries", "variant": "reference", "kind": 4194304, @@ -55273,7 +55320,7 @@ "target": 877 }, { - "id": 8235, + "id": 8238, "name": "HashConfig", "variant": "reference", "kind": 4194304, @@ -55281,7 +55328,7 @@ "target": 3830 }, { - "id": 8216, + "id": 8219, "name": "hexToBytes", "variant": "reference", "kind": 4194304, @@ -55289,7 +55336,7 @@ "target": 3720 }, { - "id": 8019, + "id": 8022, "name": "HookName", "variant": "reference", "kind": 4194304, @@ -55297,7 +55344,7 @@ "target": 3948 }, { - "id": 8008, + "id": 8011, "name": "IndexEntry", "variant": "reference", "kind": 4194304, @@ -55305,7 +55352,7 @@ "target": 6123 }, { - "id": 8009, + "id": 8012, "name": "IndexEntryFlags", "variant": "reference", "kind": 4194304, @@ -55313,7 +55360,7 @@ "target": 3604 }, { - "id": 8003, + "id": 8006, "name": "IndexError", "variant": "reference", "kind": 4194304, @@ -55321,7 +55368,7 @@ "target": 3574 }, { - "id": 8010, + "id": 8013, "name": "IndexExtension", "variant": "reference", "kind": 4194304, @@ -55329,7 +55376,7 @@ "target": 3609 }, { - "id": 8218, + "id": 8221, "name": "invalidCommit", "variant": "reference", "kind": 4194304, @@ -55337,7 +55384,7 @@ "target": 3774 }, { - "id": 7942, + "id": 7945, "name": "invalidDiffInput", "variant": "reference", "kind": 4194304, @@ -55345,7 +55392,7 @@ "target": 880 }, { - "id": 8219, + "id": 8222, "name": "invalidFileMode", "variant": "reference", "kind": 4194304, @@ -55353,7 +55400,7 @@ "target": 3777 }, { - "id": 8220, + "id": 8223, "name": "invalidIdentity", "variant": "reference", "kind": 4194304, @@ -55361,7 +55408,7 @@ "target": 3780 }, { - "id": 8004, + "id": 8007, "name": "invalidIndexEntry", "variant": "reference", "kind": 4194304, @@ -55369,7 +55416,7 @@ "target": 3582 }, { - "id": 8005, + "id": 8008, "name": "invalidIndexHeader", "variant": "reference", "kind": 4194304, @@ -55377,7 +55424,7 @@ "target": 3586 }, { - "id": 8221, + "id": 8224, "name": "invalidObjectHeader", "variant": "reference", "kind": 4194304, @@ -55385,7 +55432,7 @@ "target": 3784 }, { - "id": 8222, + "id": 8225, "name": "invalidObjectId", "variant": "reference", "kind": 4194304, @@ -55393,7 +55440,7 @@ "target": 3787 }, { - "id": 8223, + "id": 8226, "name": "invalidTag", "variant": "reference", "kind": 4194304, @@ -55401,7 +55448,7 @@ "target": 3790 }, { - "id": 8224, + "id": 8227, "name": "invalidTreeEntry", "variant": "reference", "kind": 4194304, @@ -55409,7 +55456,7 @@ "target": 3793 }, { - "id": 7943, + "id": 7946, "name": "invalidTreeForDiff", "variant": "reference", "kind": 4194304, @@ -55417,7 +55464,7 @@ "target": 883 }, { - "id": 7959, + "id": 7962, "name": "isBinary", "variant": "reference", "kind": 4194304, @@ -55425,7 +55472,7 @@ "target": 886 }, { - "id": 8229, + "id": 8232, "name": "isDirectory", "variant": "reference", "kind": 4194304, @@ -55433,7 +55480,7 @@ "target": 3811 }, { - "id": 7967, + "id": 7970, "name": "isGitlink", "variant": "reference", "kind": 4194304, @@ -55441,7 +55488,7 @@ "target": 889 }, { - "id": 8241, + "id": 8244, "name": "isOid", "variant": "reference", "kind": 4194304, @@ -55449,7 +55496,7 @@ "target": 3848 }, { - "id": 7968, + "id": 7971, "name": "isSameKind", "variant": "reference", "kind": 4194304, @@ -55457,7 +55504,7 @@ "target": 892 }, { - "id": 8012, + "id": 8015, "name": "isStatClean", "variant": "reference", "kind": 4194304, @@ -55465,7 +55512,7 @@ "target": 3623 }, { - "id": 7969, + "id": 7972, "name": "kindOf", "variant": "reference", "kind": 4194304, @@ -55473,7 +55520,7 @@ "target": 896 }, { - "id": 7954, + "id": 7957, "name": "LineDiff", "variant": "reference", "kind": 4194304, @@ -55481,7 +55528,7 @@ "target": 3515 }, { - "id": 7955, + "id": 7958, "name": "LineDiffOptions", "variant": "reference", "kind": 4194304, @@ -55489,7 +55536,7 @@ "target": 3520 }, { - "id": 7956, + "id": 7959, "name": "LineHunk", "variant": "reference", "kind": 4194304, @@ -55497,7 +55544,7 @@ "target": 3522 }, { - "id": 7997, + "id": 8000, "name": "LineKey", "variant": "reference", "kind": 4194304, @@ -55505,7 +55552,7 @@ "target": 3570 }, { - "id": 7999, + "id": 8002, "name": "lineKeyIsActive", "variant": "reference", "kind": 4194304, @@ -55513,7 +55560,7 @@ "target": 899 }, { - "id": 8000, + "id": 8003, "name": "linesEqualUnder", "variant": "reference", "kind": 4194304, @@ -55521,7 +55568,7 @@ "target": 902 }, { - "id": 7960, + "id": 7963, "name": "MAX_DIFF_EDIT_DISTANCE", "variant": "reference", "kind": 4194304, @@ -55529,7 +55576,7 @@ "target": 907 }, { - "id": 7961, + "id": 7964, "name": "MAX_DIFF_ITERATION_FACTOR", "variant": "reference", "kind": 4194304, @@ -55537,7 +55584,7 @@ "target": 908 }, { - "id": 7962, + "id": 7965, "name": "MAX_DIFF_LINES", "variant": "reference", "kind": 4194304, @@ -55545,7 +55592,7 @@ "target": 909 }, { - "id": 7946, + "id": 7949, "name": "MAX_FLAT_TREE_ENTRIES", "variant": "reference", "kind": 4194304, @@ -55553,7 +55600,7 @@ "target": 910 }, { - "id": 7963, + "id": 7966, "name": "MAX_LINE_BYTES", "variant": "reference", "kind": 4194304, @@ -55561,7 +55608,7 @@ "target": 911 }, { - "id": 7964, + "id": 7967, "name": "MAX_LINES", "variant": "reference", "kind": 4194304, @@ -55569,7 +55616,7 @@ "target": 912 }, { - "id": 7986, + "id": 7989, "name": "MAX_SCORE", "variant": "reference", "kind": 4194304, @@ -55577,7 +55624,7 @@ "target": 913 }, { - "id": 7966, + "id": 7969, "name": "ModeKind", "variant": "reference", "kind": 4194304, @@ -55585,7 +55632,7 @@ "target": 3528 }, { - "id": 7937, + "id": 7940, "name": "ModifyChange", "variant": "reference", "kind": 4194304, @@ -55593,7 +55640,7 @@ "target": 1014 }, { - "id": 8230, + "id": 8233, "name": "normalizeFileMode", "variant": "reference", "kind": 4194304, @@ -55601,7 +55648,7 @@ "target": 3814 }, { - "id": 8001, + "id": 8004, "name": "normalizeLine", "variant": "reference", "kind": 4194304, @@ -55609,7 +55656,7 @@ "target": 914 }, { - "id": 8238, + "id": 8241, "name": "ObjectType", "variant": "reference", "kind": 4194304, @@ -55617,7 +55664,7 @@ "target": 3836 }, { - "id": 8242, + "id": 8245, "name": "oidPattern", "variant": "reference", "kind": 4194304, @@ -55625,7 +55672,7 @@ "target": 3852 }, { - "id": 7971, + "id": 7974, "name": "OutputHunk", "variant": "reference", "kind": 4194304, @@ -55633,7 +55680,7 @@ "target": 3533 }, { - "id": 8206, + "id": 8209, "name": "parseBlobContent", "variant": "reference", "kind": 4194304, @@ -55641,7 +55688,7 @@ "target": 3681 }, { - "id": 8015, + "id": 8018, "name": "parseCacheTree", "variant": "reference", "kind": 4194304, @@ -55649,7 +55696,7 @@ "target": 3635 }, { - "id": 8211, + "id": 8214, "name": "parseCommitContent", "variant": "reference", "kind": 4194304, @@ -55657,7 +55704,7 @@ "target": 3703 }, { - "id": 8239, + "id": 8242, "name": "parseHeader", "variant": "reference", "kind": 4194304, @@ -55665,7 +55712,7 @@ "target": 3837 }, { - "id": 8203, + "id": 8206, "name": "parseIdentity", "variant": "reference", "kind": 4194304, @@ -55673,7 +55720,7 @@ "target": 3671 }, { - "id": 8016, + "id": 8019, "name": "parseIndex", "variant": "reference", "kind": 4194304, @@ -55681,7 +55728,7 @@ "target": 3639 }, { - "id": 8233, + "id": 8236, "name": "parseObject", "variant": "reference", "kind": 4194304, @@ -55689,7 +55736,7 @@ "target": 3821 }, { - "id": 8246, + "id": 8249, "name": "parseTagContent", "variant": "reference", "kind": 4194304, @@ -55697,7 +55744,7 @@ "target": 3871 }, { - "id": 8250, + "id": 8253, "name": "parseTreeContent", "variant": "reference", "kind": 4194304, @@ -55705,7 +55752,7 @@ "target": 3882 }, { - "id": 7972, + "id": 7975, "name": "PatchFile", "variant": "reference", "kind": 4194304, @@ -55713,7 +55760,7 @@ "target": 3539 }, { - "id": 7973, + "id": 7976, "name": "PatchOptions", "variant": "reference", "kind": 4194304, @@ -55721,7 +55768,7 @@ "target": 3545 }, { - "id": 7974, + "id": 7977, "name": "PatchPathPrefix", "variant": "reference", "kind": 4194304, @@ -55729,7 +55776,7 @@ "target": 3550 }, { - "id": 8243, + "id": 8246, "name": "payloadByteLength", "variant": "reference", "kind": 4194304, @@ -55737,7 +55784,7 @@ "target": 3855 }, { - "id": 7952, + "id": 7955, "name": "recordedPaths", "variant": "reference", "kind": 4194304, @@ -55745,7 +55792,7 @@ "target": 918 }, { - "id": 8666, + "id": 8669, "name": "ReflogEntry", "variant": "reference", "kind": 4194304, @@ -55753,7 +55800,7 @@ "target": 2880 }, { - "id": 7938, + "id": 7941, "name": "RenameChange", "variant": "reference", "kind": 4194304, @@ -55761,7 +55808,7 @@ "target": 1022 }, { - "id": 7979, + "id": 7982, "name": "RenameDetectOptions", "variant": "reference", "kind": 4194304, @@ -55769,7 +55816,7 @@ "target": 3553 }, { - "id": 7976, + "id": 7979, "name": "renderPatch", "variant": "reference", "kind": 4194304, @@ -55777,7 +55824,7 @@ "target": 921 }, { - "id": 8002, + "id": 8005, "name": "resolveLineKey", "variant": "reference", "kind": 4194304, @@ -55785,7 +55832,7 @@ "target": 925 }, { - "id": 8207, + "id": 8210, "name": "serializeBlobContent", "variant": "reference", "kind": 4194304, @@ -55793,7 +55840,7 @@ "target": 3685 }, { - "id": 8212, + "id": 8215, "name": "serializeCommitContent", "variant": "reference", "kind": 4194304, @@ -55801,7 +55848,7 @@ "target": 3707 }, { - "id": 8240, + "id": 8243, "name": "serializeHeader", "variant": "reference", "kind": 4194304, @@ -55809,7 +55856,7 @@ "target": 3844 }, { - "id": 8204, + "id": 8207, "name": "serializeIdentity", "variant": "reference", "kind": 4194304, @@ -55817,7 +55864,7 @@ "target": 3674 }, { - "id": 8018, + "id": 8021, "name": "serializeIndex", "variant": "reference", "kind": 4194304, @@ -55825,7 +55872,7 @@ "target": 3647 }, { - "id": 8234, + "id": 8237, "name": "serializeObject", "variant": "reference", "kind": 4194304, @@ -55833,7 +55880,7 @@ "target": 3826 }, { - "id": 8247, + "id": 8250, "name": "serializeTagContent", "variant": "reference", "kind": 4194304, @@ -55841,7 +55888,7 @@ "target": 3875 }, { - "id": 8251, + "id": 8254, "name": "serializeTreeContent", "variant": "reference", "kind": 4194304, @@ -55849,7 +55896,7 @@ "target": 3887 }, { - "id": 8236, + "id": 8239, "name": "SHA1_CONFIG", "variant": "reference", "kind": 4194304, @@ -55857,7 +55904,7 @@ "target": 3834 }, { - "id": 8237, + "id": 8240, "name": "SHA256_CONFIG", "variant": "reference", "kind": 4194304, @@ -55865,7 +55912,7 @@ "target": 3835 }, { - "id": 7981, + "id": 7984, "name": "SimilarityScore", "variant": "reference", "kind": 4194304, @@ -55873,7 +55920,7 @@ "target": 3563 }, { - "id": 8014, + "id": 8017, "name": "skipWorktreeEntry", "variant": "reference", "kind": 4194304, @@ -55881,7 +55928,7 @@ "target": 3628 }, { - "id": 7978, + "id": 7981, "name": "sortByPath", "variant": "reference", "kind": 4194304, @@ -55889,7 +55936,7 @@ "target": 932 }, { - "id": 7953, + "id": 7956, "name": "sortedRecordedPaths", "variant": "reference", "kind": 4194304, @@ -55897,7 +55944,7 @@ "target": 940 }, { - "id": 8252, + "id": 8255, "name": "sortTreeEntries", "variant": "reference", "kind": 4194304, @@ -55905,7 +55952,7 @@ "target": 3891 }, { - "id": 9015, + "id": 9018, "name": "SparseMatcher", "variant": "reference", "kind": 4194304, @@ -55913,7 +55960,7 @@ "target": 2889 }, { - "id": 7965, + "id": 7968, "name": "splitLines", "variant": "reference", "kind": 4194304, @@ -55921,7 +55968,7 @@ "target": 943 }, { - "id": 8013, + "id": 8016, "name": "STAGE0_FLAGS", "variant": "reference", "kind": 4194304, @@ -55929,7 +55976,7 @@ "target": 3627 }, { - "id": 8011, + "id": 8014, "name": "StatData", "variant": "reference", "kind": 4194304, @@ -55937,7 +55984,7 @@ "target": 3612 }, { - "id": 7988, + "id": 7991, "name": "StatDiffChange", "variant": "reference", "kind": 4194304, @@ -55945,7 +55992,7 @@ "target": 1031 }, { - "id": 7989, + "id": 7992, "name": "StatFields", "variant": "reference", "kind": 4194304, @@ -55953,7 +56000,7 @@ "target": 1032 }, { - "id": 7990, + "id": 7993, "name": "StatFieldsOptions", "variant": "reference", "kind": 4194304, @@ -55961,7 +56008,7 @@ "target": 3566 }, { - "id": 7991, + "id": 7994, "name": "StatTreeDiff", "variant": "reference", "kind": 4194304, @@ -55969,7 +56016,7 @@ "target": 1036 }, { - "id": 8213, + "id": 8216, "name": "stripspace", "variant": "reference", "kind": 4194304, @@ -55977,7 +56024,7 @@ "target": 3710 }, { - "id": 8244, + "id": 8247, "name": "Tag", "variant": "reference", "kind": 4194304, @@ -55985,7 +56032,7 @@ "target": 3859 }, { - "id": 8245, + "id": 8248, "name": "TagData", "variant": "reference", "kind": 4194304, @@ -55993,7 +56040,7 @@ "target": 3863 }, { - "id": 7987, + "id": 7990, "name": "toSimilarityPercent", "variant": "reference", "kind": 4194304, @@ -56001,7 +56048,7 @@ "target": 946 }, { - "id": 8248, + "id": 8251, "name": "Tree", "variant": "reference", "kind": 4194304, @@ -56009,7 +56056,7 @@ "target": 3878 }, { - "id": 7939, + "id": 7942, "name": "TreeDiff", "variant": "reference", "kind": 4194304, @@ -56017,7 +56064,7 @@ "target": 1038 }, { - "id": 8253, + "id": 8256, "name": "treeEntry", "variant": "reference", "kind": 4194304, @@ -56025,7 +56072,7 @@ "target": 972 }, { - "id": 8249, + "id": 8252, "name": "TreeEntry", "variant": "reference", "kind": 4194304, @@ -56033,7 +56080,7 @@ "target": 6137 }, { - "id": 8254, + "id": 8257, "name": "treeEntryCompare", "variant": "reference", "kind": 4194304, @@ -56041,7 +56088,7 @@ "target": 3894 }, { - "id": 8225, + "id": 8228, "name": "TsgitError", "variant": "reference", "kind": 4194304, @@ -56049,7 +56096,7 @@ "target": 701 }, { - "id": 7315, + "id": 7318, "name": "TsgitErrorData", "variant": "reference", "kind": 4194304, @@ -56057,7 +56104,7 @@ "target": 707 }, { - "id": 7940, + "id": 7943, "name": "TypeChangeChange", "variant": "reference", "kind": 4194304, @@ -56065,7 +56112,7 @@ "target": 1040 }, { - "id": 7948, + "id": 7951, "name": "UnmergedEntryGroup", "variant": "reference", "kind": 4194304, @@ -56073,7 +56120,7 @@ "target": 3511 }, { - "id": 8231, + "id": 8234, "name": "validateFileMode", "variant": "reference", "kind": 4194304, @@ -56081,7 +56128,7 @@ "target": 3817 }, { - "id": 7998, + "id": 8001, "name": "WhitespaceMode", "variant": "reference", "kind": 4194304, @@ -56109,538 +56156,538 @@ { "title": "Interfaces", "children": [ - 8520, - 8524, - 8528, - 9261, - 9028, - 8809, - 8110, - 8119, - 9067, - 9072, - 8764, - 9165, - 8034, - 8052, - 9076, - 8859, - 8682, - 9190, - 8589, - 8136, - 8093, - 9216, + 8523, + 8527, + 8531, + 9264, + 9031, + 8812, + 8113, + 8122, + 9070, + 9075, + 8767, + 9168, + 8037, + 8055, + 9079, + 8862, + 8685, + 9193, + 8592, + 8139, + 8096, 9219, - 9266, - 9033, - 8768, - 8772, - 9366, + 9222, + 9269, + 9036, + 8771, + 8775, 9369, - 9273, - 9314, - 9354, - 9389, 9372, - 9376, - 8532, - 7381, - 9008, - 8752, - 8466, - 8471, - 8475, 9276, - 8479, - 8821, - 8826, - 8833, - 8865, - 8785, - 8882, - 8898, - 8483, + 9317, + 9357, + 9392, + 9375, + 9379, 8535, - 8511, - 8487, - 9360, - 9016, - 8776, - 7351, - 8063, - 8174, + 7384, + 9011, + 8755, + 8469, + 8474, + 8478, + 9279, + 8482, + 8824, + 8829, + 8836, + 8868, + 8788, + 8885, + 8901, + 8486, 8538, - 8622, - 8628, - 8031, - 8048, - 8636, - 8544, - 7363, - 7369 + 8514, + 8490, + 9363, + 9019, + 8779, + 7354, + 8066, + 8177, + 8541, + 8625, + 8631, + 8034, + 8051, + 8639, + 8547, + 7366, + 7372 ] }, { "title": "Type Aliases", "children": [ - 8523, + 8526, 7248, 7284, - 9265, - 9099, - 7388, - 8118, - 8188, - 8127, - 9100, - 9071, + 9268, + 9102, + 7391, + 8121, + 8191, + 8130, + 9103, + 9074, 687, - 8450, - 8059, - 8850, - 8767, - 8020, - 8179, - 8076, - 8151, - 8152, - 9101, - 8421, + 8453, + 8062, + 8853, + 8770, + 8023, + 8182, + 8079, + 8154, + 8155, + 9104, + 8424, 669, - 9271, - 9272, - 9381, - 8455, - 8278, - 8643, + 9274, + 9275, + 9384, + 8458, + 8281, + 8646, 679, - 8689, - 8722, - 8789, - 8915, - 9102, - 8607, - 8611, - 8534, - 9020, - 9103, - 8615 + 8692, + 8725, + 8792, + 8918, + 9105, + 8610, + 8614, + 8537, + 9023, + 9106, + 8618 ] }, { "title": "Variables", "children": [ - 8255, - 8256, - 8257, - 9053, - 8816, - 8092, - 8433, + 8258, + 8259, + 8260, + 9056, + 8819, + 8095, + 8436, 682, - 8449, - 8178, - 8454, - 9006, - 9007, + 8452, + 8181, + 8457, + 9009, + 9010, 658, - 9291, - 8268, - 9402, - 9403, + 9294, + 8271, + 9405, + 9406, 674, - 8465, - 9404, - 7908, - 8109 + 8468, + 9407, + 7911, + 8112 ] }, { "title": "Functions", "children": [ - 8089, - 8953, - 9079, - 7758, + 8092, 8956, - 9043, - 7760, - 7764, + 9082, + 7761, + 8959, + 9046, + 7763, 7767, - 8968, - 8551, - 8577, - 8495, + 7770, + 8971, + 8554, + 8580, 8498, - 8905, 8501, - 9003, - 8555, - 8580, - 7770, + 8908, + 8504, + 9006, + 8558, + 8583, 7773, - 8812, - 8996, - 7316, - 9187, - 8975, 7776, - 7781, - 7787, - 7791, - 7795, - 7797, - 9050, - 9211, - 8895, - 8434, + 8815, + 8999, 7319, - 7993, + 9190, + 8978, + 7779, + 7784, + 7790, + 7794, + 7798, + 7800, + 9053, + 9214, + 8898, + 8437, 7322, - 8355, - 7801, - 7803, + 7996, + 7325, 8358, - 8360, - 8583, - 9089, - 9281, + 7804, + 7806, + 8361, + 8363, + 8586, + 9092, 9284, - 8440, + 9287, 8443, 8446, - 9323, + 8449, 9326, - 7325, - 7328, 9329, - 9170, - 8258, - 8418, + 7328, 7331, + 9332, + 9173, + 8261, + 8421, 7334, - 8362, - 9136, - 9140, + 7337, 8365, - 8083, - 8086, + 9139, 9143, - 9147, - 8723, - 9151, - 9155, + 8368, + 8086, + 8089, + 9146, + 9150, + 8726, + 9154, 9158, 9161, - 8369, - 8726, + 9164, 8372, - 8655, 8729, 8375, + 8658, + 8732, 8378, - 7805, - 8758, - 8779, - 8261, - 8873, - 8802, - 8877, - 9234, - 9238, - 9333, - 9337, - 8805, - 8021, - 8026, - 8038, - 8043, - 7808, - 9177, - 8182, - 7812, - 8097, - 8195, - 9242, - 9246, - 9250, - 9254, 8381, - 8383, - 7816, - 7820, - 7824, - 7828, - 7832, - 7836, - 7840, - 7844, + 7808, + 8761, + 8782, 8264, - 7338, - 9000, - 7848, - 7853, - 7856, + 8876, + 8805, + 8880, + 9237, + 9241, + 9336, + 9340, + 8808, + 8024, + 8029, + 8041, + 8046, + 7811, + 9180, + 8185, + 7815, + 8100, + 8198, + 9245, + 9249, + 9253, + 9257, + 8384, + 8386, + 7819, + 7823, + 7827, + 7831, + 7835, + 7839, + 7843, + 7847, + 8267, 7341, - 8959, - 7858, - 7860, - 9341, - 9288, - 9345, + 9003, + 7851, + 7856, + 7859, + 7344, + 8962, + 7861, 7863, - 9299, - 8558, - 8639, - 8269, - 8982, - 7385, - 9054, - 9083, - 8060, - 8737, - 8594, - 9257, - 8430, - 9046, - 8746, + 9344, + 9291, + 9348, + 7866, 9302, - 9307, - 9350, - 9397, - 8504, - 8667, - 8671, - 8841, - 8563, + 8561, + 8642, + 8272, + 8985, + 7388, + 9057, + 9086, + 8063, + 8740, + 8597, + 9260, + 8433, + 9049, + 8749, + 9305, + 9310, + 9353, + 9400, 8507, - 9011, + 8670, + 8674, + 8844, 8566, - 8597, + 8510, + 9014, + 8569, 8600, - 7866, + 8603, 7869, 7872, - 8755, - 8272, - 7344, - 8387, + 7875, + 8758, + 8275, + 7347, 8390, 8393, 8396, - 7875, - 9086, - 9182, - 8844, - 8275, - 8604, - 8761, - 8658, - 8663, - 8733, - 7880, - 7882, - 8400, + 8399, + 7878, + 9089, + 9185, + 8847, + 8278, + 8607, + 8764, + 8661, + 8666, + 8736, + 7883, 7885, - 7889, - 8101, - 8105, - 9405, + 8403, + 7888, 7892, - 7896, + 8104, + 8108, + 9408, + 7895, 7899, 7902, 7905, - 8675, - 8989, - 9059, - 9094, - 8740, - 8749, - 9382, - 9310, - 9385, - 9409, + 7908, 8678, - 8909, + 8992, + 9062, + 9097, 8743, - 8685, - 8402, - 9363, - 8817, - 8612, - 7912, + 8752, + 9385, + 9313, + 9388, + 9412, + 8681, + 8912, + 8746, + 8688, + 8405, + 9366, + 8820, + 8615, 7915, - 7357, 7918, - 8068, + 7360, 7921, - 8405, + 8071, + 7924, 8408, 8411, - 7347, - 7924, - 8415, - 8782, + 8414, + 7350, 7927, - 8962, + 8418, + 8785, + 7930, 8965, - 8071, - 7374 + 8968, + 8074, + 7377 ] }, { "title": "References", "children": [ - 7932, - 7361, - 7362, - 8202, - 7957, + 7935, + 7364, + 7365, 8205, - 7970, - 8214, - 8006, - 7931, + 7960, 8208, - 8209, - 8215, - 8017, - 7977, - 7975, - 7992, - 7379, - 7380, - 7930, - 7949, - 7933, - 7982, - 7983, - 7984, + 7973, + 8217, + 8009, 7934, - 8227, + 8211, + 8212, + 8218, + 8020, 7980, - 7935, + 7978, + 7995, + 7382, + 7383, + 7933, + 7952, 7936, - 7941, - 7950, - 7958, - 8217, - 673, - 657, 7985, - 8210, - 8228, - 8226, + 7986, + 7987, + 7937, + 8230, + 7983, + 7938, + 7939, 7944, - 7945, - 8007, - 8232, + 7953, + 7961, + 8220, + 673, + 657, + 7988, + 8213, + 8231, + 8229, 7947, - 7951, - 8235, - 8216, - 8019, - 8008, - 8009, - 8003, + 7948, 8010, - 8218, - 7942, + 8235, + 7950, + 7954, + 8238, 8219, - 8220, - 8004, - 8005, + 8022, + 8011, + 8012, + 8006, + 8013, 8221, + 7945, 8222, 8223, + 8007, + 8008, 8224, - 7943, + 8225, + 8226, + 8227, + 7946, + 7962, + 8232, + 7970, + 8244, + 7971, + 8015, + 7972, + 7957, + 7958, 7959, - 8229, - 7967, - 8241, - 7968, - 8012, - 7969, - 7954, - 7955, - 7956, - 7997, - 7999, 8000, - 7960, - 7961, - 7962, - 7946, + 8002, + 8003, 7963, 7964, - 7986, + 7965, + 7949, 7966, - 7937, - 8230, - 8001, - 8238, + 7967, + 7989, + 7969, + 7940, + 8233, + 8004, + 8241, + 8245, + 7974, + 8209, + 8018, + 8214, 8242, - 7971, 8206, - 8015, - 8211, - 8239, - 8203, - 8016, - 8233, + 8019, + 8236, + 8249, + 8253, + 7975, + 7976, + 7977, 8246, - 8250, - 7972, - 7973, - 7974, - 8243, - 7952, - 8666, - 7938, + 7955, + 8669, + 7941, + 7982, 7979, - 7976, - 8002, + 8005, + 8210, + 8215, + 8243, 8207, - 8212, - 8240, - 8204, - 8018, - 8234, - 8247, - 8251, - 8236, + 8021, 8237, + 8250, + 8254, + 8239, + 8240, + 7984, + 8017, 7981, + 7956, + 8255, + 9018, + 7968, + 8016, 8014, - 7978, - 7953, - 8252, - 9015, - 7965, - 8013, - 8011, - 7988, - 7989, - 7990, 7991, - 8213, - 8244, - 8245, - 7987, + 7992, + 7993, + 7994, + 8216, + 8247, 8248, - 7939, - 8253, - 8249, - 8254, - 8225, - 7315, - 7940, - 7948, - 8231, - 7998, + 7990, + 8251, + 7942, + 8256, + 8252, + 8257, + 8228, + 7318, + 7943, + 7951, + 8234, + 8001, 672, 656 ] @@ -75975,7 +76022,7 @@ }, "type": { "type": "reference", - "target": 9354, + "target": 9357, "name": "PackIndexEntries", "package": "@scolladon/tsgit" } @@ -76772,7 +76819,7 @@ }, "type": { "type": "reference", - "target": 8421, + "target": 8424, "name": "ObjectFilter", "package": "@scolladon/tsgit" } @@ -77980,7 +78027,7 @@ }, "type": { "type": "reference", - "target": 8118, + "target": 8121, "name": "ConflictType", "package": "@scolladon/tsgit" } @@ -82376,7 +82423,7 @@ }, "type": { "type": "reference", - "target": 9190, + "target": 9193, "typeArguments": [ { "type": "reference", @@ -83258,7 +83305,7 @@ }, "type": { "type": "reference", - "target": 9190, + "target": 9193, "typeArguments": [ { "type": "reference", @@ -103280,7 +103327,7 @@ }, "type": { "type": "reference", - "target": 8118, + "target": 8121, "name": "ConflictType", "package": "@scolladon/tsgit" } @@ -107147,7 +107194,7 @@ }, "type": { "type": "reference", - "target": 8118, + "target": 8121, "name": "ConflictType", "package": "@scolladon/tsgit" } @@ -111235,7 +111282,7 @@ }, "type": { "type": "reference", - "target": 8118, + "target": 8121, "name": "ConflictType", "package": "@scolladon/tsgit" } @@ -128839,19 +128886,19 @@ }, { "type": "reference", - "target": 9103, + "target": 9106, "name": "StorageError", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 8689, + "target": 8692, "name": "RefsError", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 8643, + "target": 8646, "name": "ReflogError", "package": "@scolladon/tsgit" }, @@ -128875,7 +128922,7 @@ }, { "type": "reference", - "target": 8076, + "target": 8079, "name": "MergeError", "package": "@scolladon/tsgit" }, @@ -128887,19 +128934,19 @@ }, { "type": "reference", - "target": 8278, + "target": 8281, "name": "ProtocolError", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 8915, + "target": 8918, "name": "RepositoryError", "package": "@scolladon/tsgit" }, { "type": "reference", - "target": 7388, + "target": 7391, "name": "CommandError", "package": "@scolladon/tsgit" }, @@ -135300,7 +135347,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8136, + "target": 8139, "name": "MergeConflict", "package": "@scolladon/tsgit" } @@ -144711,7 +144758,7 @@ "flags": {}, "type": { "type": "reference", - "target": 8136, + "target": 8139, "name": "MergeConflict", "package": "@scolladon/tsgit" } @@ -148576,7 +148623,7 @@ "type": "array", "elementType": { "type": "reference", - "target": 8136, + "target": 8139, "name": "MergeConflict", "package": "@scolladon/tsgit" } @@ -202151,27 +202198,27 @@ "7301": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.path" }, "7302": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type.lineNumber" + "qualifiedName": "__type" }, "7303": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7304": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.reason" }, "7305": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.lineNumber" }, "7306": { "packageName": "@scolladon/tsgit", @@ -202186,67 +202233,67 @@ "7308": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.reason" }, "7309": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type.observed" + "qualifiedName": "__type" }, "7310": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type.current" + "qualifiedName": "__type.code" }, "7311": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.path" }, "7312": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.observed" }, "7313": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type.previous" + "qualifiedName": "__type.current" }, "7314": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "__type.current" + "qualifiedName": "__type" }, "7315": { "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/index.ts", - "qualifiedName": "TsgitErrorData" + "packagePath": "src/domain/error.ts", + "qualifiedName": "__type.code" }, "7316": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "compressFailed" + "qualifiedName": "__type.previous" }, "7317": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "compressFailed" + "qualifiedName": "__type.current" }, "7318": { "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/error.ts", - "qualifiedName": "reason" + "packagePath": "src/domain/index.ts", + "qualifiedName": "TsgitErrorData" }, "7319": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "decompressFailed" + "qualifiedName": "compressFailed" }, "7320": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "decompressFailed" + "qualifiedName": "compressFailed" }, "7321": { "packageName": "@scolladon/tsgit", @@ -202256,27 +202303,27 @@ "7322": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "directoryNotEmpty" + "qualifiedName": "decompressFailed" }, "7323": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "directoryNotEmpty" + "qualifiedName": "decompressFailed" }, "7324": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "path" + "qualifiedName": "reason" }, "7325": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "fileExists" + "qualifiedName": "directoryNotEmpty" }, "7326": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "fileExists" + "qualifiedName": "directoryNotEmpty" }, "7327": { "packageName": "@scolladon/tsgit", @@ -202286,12 +202333,12 @@ "7328": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "fileNotFound" + "qualifiedName": "fileExists" }, "7329": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "fileNotFound" + "qualifiedName": "fileExists" }, "7330": { "packageName": "@scolladon/tsgit", @@ -202301,47 +202348,47 @@ "7331": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "hashFailed" + "qualifiedName": "fileNotFound" }, "7332": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "hashFailed" + "qualifiedName": "fileNotFound" }, "7333": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "reason" + "qualifiedName": "path" }, "7334": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "httpError" + "qualifiedName": "hashFailed" }, "7335": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "httpError" + "qualifiedName": "hashFailed" }, "7336": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "statusCode" + "qualifiedName": "reason" }, "7337": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "reason" + "qualifiedName": "httpError" }, "7338": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "networkError" + "qualifiedName": "httpError" }, "7339": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "networkError" + "qualifiedName": "statusCode" }, "7340": { "packageName": "@scolladon/tsgit", @@ -202351,27 +202398,27 @@ "7341": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "notADirectory" + "qualifiedName": "networkError" }, "7342": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "notADirectory" + "qualifiedName": "networkError" }, "7343": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "path" + "qualifiedName": "reason" }, "7344": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "permissionDenied" + "qualifiedName": "notADirectory" }, "7345": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "permissionDenied" + "qualifiedName": "notADirectory" }, "7346": { "packageName": "@scolladon/tsgit", @@ -202381,247 +202428,247 @@ "7347": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "unsupportedOperation" + "qualifiedName": "permissionDenied" }, "7348": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "unsupportedOperation" + "qualifiedName": "permissionDenied" }, "7349": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "operation" + "qualifiedName": "path" }, "7350": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", - "qualifiedName": "reason" + "qualifiedName": "unsupportedOperation" }, "7351": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/error.ts", + "qualifiedName": "unsupportedOperation" + }, + "7352": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/error.ts", + "qualifiedName": "operation" + }, + "7353": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/error.ts", + "qualifiedName": "reason" + }, + "7354": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/tar.ts", "qualifiedName": "TarOptions" }, - "7352": { + "7355": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/tar.ts", "qualifiedName": "TarOptions.prefix" }, - "7353": { + "7356": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/tar.ts", "qualifiedName": "TarOptions.mtime" }, - "7354": { + "7357": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/tar.ts", "qualifiedName": "TarOptions.umask" }, - "7355": { + "7358": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/tar.ts", "qualifiedName": "TarOptions.uname" }, - "7356": { + "7359": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/tar.ts", "qualifiedName": "TarOptions.gname" }, - "7357": { + "7360": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/tar.ts", "qualifiedName": "tarArchive" }, - "7358": { + "7361": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/tar.ts", "qualifiedName": "tarArchive" }, - "7359": { + "7362": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/tar.ts", "qualifiedName": "result" }, - "7360": { + "7363": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/tar.ts", "qualifiedName": "opts" }, - "7361": { + "7364": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/index.ts", "qualifiedName": "ArchiveEntry" }, - "7362": { + "7365": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/index.ts", "qualifiedName": "ArchiveResult" }, - "7363": { + "7366": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "ZipDeps" }, - "7364": { + "7367": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "ZipDeps.deflateRaw" }, - "7365": { + "7368": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "__type" }, - "7366": { + "7369": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "__type" }, - "7367": { + "7370": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "data" }, - "7368": { + "7371": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "level" }, - "7369": { + "7372": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "ZipOptions" }, - "7370": { + "7373": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "ZipOptions.prefix" }, - "7371": { + "7374": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "ZipOptions.mtime" }, - "7372": { + "7375": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "ZipOptions.tzOffsetMinutes" }, - "7373": { + "7376": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "ZipOptions.level" }, - "7374": { + "7377": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "zipArchive" }, - "7375": { + "7378": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "zipArchive" }, - "7376": { + "7379": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "result" }, - "7377": { + "7380": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "deps" }, - "7378": { + "7381": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/archive/zip.ts", "qualifiedName": "opts" }, - "7379": { + "7382": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/index.ts", "qualifiedName": "ConfigKey" }, - "7380": { + "7383": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/index.ts", "qualifiedName": "ConfigScope" }, - "7381": { + "7384": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/config-key.ts", "qualifiedName": "ParsedConfigKey" }, - "7382": { + "7385": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/config-key.ts", "qualifiedName": "ParsedConfigKey.section" }, - "7383": { + "7386": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/config-key.ts", "qualifiedName": "ParsedConfigKey.subsection" }, - "7384": { + "7387": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/config-key.ts", "qualifiedName": "ParsedConfigKey.name" }, - "7385": { + "7388": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/config-key.ts", "qualifiedName": "parseConfigKey" }, - "7386": { + "7389": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/config-key.ts", "qualifiedName": "parseConfigKey" }, - "7387": { + "7390": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/config-key.ts", "qualifiedName": "raw" }, - "7388": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "CommandError" - }, - "7389": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" - }, - "7390": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" - }, "7391": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.localChanges" + "qualifiedName": "CommandError" }, "7392": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.untracked" + "qualifiedName": "__type" }, "7393": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7394": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.localChanges" }, "7395": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.pattern" + "qualifiedName": "__type.untracked" }, "7396": { "packageName": "@scolladon/tsgit", @@ -202636,7 +202683,7 @@ "7398": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.pattern" }, "7399": { "packageName": "@scolladon/tsgit", @@ -202666,37 +202713,37 @@ "7404": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.path" }, "7405": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7406": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7407": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7408": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7409": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7410": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.name" + "qualifiedName": "__type.code" }, "7411": { "packageName": "@scolladon/tsgit", @@ -202771,7 +202818,7 @@ "7425": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.name" }, "7426": { "packageName": "@scolladon/tsgit", @@ -202786,27 +202833,27 @@ "7428": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.host" + "qualifiedName": "__type.reason" }, "7429": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "7430": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7431": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.host" }, "7432": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.count" + "qualifiedName": "__type.reason" }, "7433": { "packageName": "@scolladon/tsgit", @@ -202821,7 +202868,7 @@ "7435": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.scheme" + "qualifiedName": "__type.count" }, "7436": { "packageName": "@scolladon/tsgit", @@ -202836,7 +202883,7 @@ "7438": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.scheme" }, "7439": { "packageName": "@scolladon/tsgit", @@ -202851,142 +202898,142 @@ "7441": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.path" }, "7442": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7443": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7444": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7445": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.ref" + "qualifiedName": "__type.code" }, "7446": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.local" + "qualifiedName": "__type" }, "7447": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.remote" + "qualifiedName": "__type.code" }, "7448": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.ref" }, "7449": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.local" }, "7450": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.ref" + "qualifiedName": "__type.remote" }, "7451": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "7452": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reportStatus" + "qualifiedName": "__type.code" }, "7453": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.ref" }, "7454": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.reason" }, "7455": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.count" + "qualifiedName": "__type.reportStatus" }, "7456": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.paths" + "qualifiedName": "__type" }, "7457": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.truncated" + "qualifiedName": "__type.code" }, "7458": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.count" }, "7459": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.paths" }, "7460": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.localChanges" + "qualifiedName": "__type.truncated" }, "7461": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.untracked" + "qualifiedName": "__type" }, "7462": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7463": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.localChanges" }, "7464": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.expression" + "qualifiedName": "__type.untracked" }, "7465": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.candidates" + "qualifiedName": "__type" }, "7466": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7467": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.expression" }, "7468": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.expression" + "qualifiedName": "__type.candidates" }, "7469": { "packageName": "@scolladon/tsgit", @@ -203001,22 +203048,22 @@ "7471": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.rev" + "qualifiedName": "__type.expression" }, "7472": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type" }, "7473": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7474": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.rev" }, "7475": { "packageName": "@scolladon/tsgit", @@ -203036,17 +203083,17 @@ "7478": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.path" }, "7479": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7480": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.operation" + "qualifiedName": "__type.code" }, "7481": { "packageName": "@scolladon/tsgit", @@ -203076,27 +203123,27 @@ "7486": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.count" + "qualifiedName": "__type.operation" }, "7487": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.limit" + "qualifiedName": "__type" }, "7488": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7489": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.count" }, "7490": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.remote" + "qualifiedName": "__type.limit" }, "7491": { "packageName": "@scolladon/tsgit", @@ -203111,7 +203158,7 @@ "7493": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.branch" + "qualifiedName": "__type.remote" }, "7494": { "packageName": "@scolladon/tsgit", @@ -203126,7 +203173,7 @@ "7496": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.remote" + "qualifiedName": "__type.branch" }, "7497": { "packageName": "@scolladon/tsgit", @@ -203141,377 +203188,377 @@ "7499": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.name" + "qualifiedName": "__type.remote" }, "7500": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "7501": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7502": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.name" }, "7503": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.option" + "qualifiedName": "__type.reason" }, "7504": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "7505": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7506": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.option" }, "7507": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.reason" }, "7508": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7509": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.runtime" + "qualifiedName": "__type.code" }, "7510": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "7511": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7512": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.runtime" }, "7513": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.requested" + "qualifiedName": "__type.reason" }, "7514": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.declared" + "qualifiedName": "__type" }, "7515": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type.code" }, "7516": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.requested" }, "7517": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.declared" }, "7518": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.source" }, "7519": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.size" + "qualifiedName": "__type" }, "7520": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.limit" + "qualifiedName": "__type.code" }, "7521": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.path" }, "7522": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.size" }, "7523": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.limit" }, "7524": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.size" + "qualifiedName": "__type" }, "7525": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.limit" + "qualifiedName": "__type.code" }, "7526": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.path" }, "7527": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.size" }, "7528": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.limit" }, "7529": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.size" + "qualifiedName": "__type" }, "7530": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.limit" + "qualifiedName": "__type.code" }, "7531": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.path" }, "7532": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.size" }, "7533": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.limit" }, "7534": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.size" + "qualifiedName": "__type" }, "7535": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.limit" + "qualifiedName": "__type.code" }, "7536": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.path" }, "7537": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.size" }, "7538": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.hook" + "qualifiedName": "__type.limit" }, "7539": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.exitCode" + "qualifiedName": "__type" }, "7540": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.stderr" + "qualifiedName": "__type.code" }, "7541": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.hook" }, "7542": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.exitCode" }, "7543": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.stderr" }, "7544": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.filter" + "qualifiedName": "__type" }, "7545": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.exitCode" + "qualifiedName": "__type.code" }, "7546": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.path" }, "7547": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.filter" }, "7548": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.exitCode" }, "7549": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.filter" + "qualifiedName": "__type" }, "7550": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.exitCode" + "qualifiedName": "__type.code" }, "7551": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.path" }, "7552": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.filter" }, "7553": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.key" + "qualifiedName": "__type.exitCode" }, "7554": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "7555": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.position" + "qualifiedName": "__type.code" }, "7556": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.key" }, "7557": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.reason" }, "7558": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.key" + "qualifiedName": "__type.position" }, "7559": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "7560": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.position" + "qualifiedName": "__type.code" }, "7561": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.key" }, "7562": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.reason" }, "7563": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.line" + "qualifiedName": "__type.position" }, "7564": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type" }, "7565": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.partialSectionName" + "qualifiedName": "__type.code" }, "7566": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.line" }, "7567": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7568": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.key" + "qualifiedName": "__type.partialSectionName" }, "7569": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type" }, "7570": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.line" + "qualifiedName": "__type.code" }, "7571": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.key" }, "7572": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7573": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.name" + "qualifiedName": "__type.line" }, "7574": { "packageName": "@scolladon/tsgit", @@ -203526,82 +203573,82 @@ "7576": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.key" + "qualifiedName": "__type.name" }, "7577": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type" }, "7578": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.value" + "qualifiedName": "__type.code" }, "7579": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.key" }, "7580": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.source" }, "7581": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.value" }, "7582": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.key" + "qualifiedName": "__type.reason" }, "7583": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type" }, "7584": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.value" + "qualifiedName": "__type.code" }, "7585": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.key" }, "7586": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7587": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.key" + "qualifiedName": "__type.value" }, "7588": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type" }, "7589": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.value" + "qualifiedName": "__type.code" }, "7590": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.key" }, "7591": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7592": { "packageName": "@scolladon/tsgit", @@ -203621,37 +203668,37 @@ "7595": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.key" + "qualifiedName": "__type.value" }, "7596": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type" }, "7597": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.value" + "qualifiedName": "__type.code" }, "7598": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.line" + "qualifiedName": "__type.key" }, "7599": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.source" }, "7600": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.value" }, "7601": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.level" + "qualifiedName": "__type.line" }, "7602": { "packageName": "@scolladon/tsgit", @@ -203666,72 +203713,72 @@ "7604": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.key" + "qualifiedName": "__type.level" }, "7605": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.count" + "qualifiedName": "__type" }, "7606": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.requested" + "qualifiedName": "__type.code" }, "7607": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.scope" + "qualifiedName": "__type.key" }, "7608": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.count" }, "7609": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.requested" }, "7610": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.sectionName" + "qualifiedName": "__type.scope" }, "7611": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type" }, "7612": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7613": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.sectionName" }, "7614": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.name" + "qualifiedName": "__type.source" }, "7615": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.scope" + "qualifiedName": "__type" }, "7616": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7617": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.name" }, "7618": { "packageName": "@scolladon/tsgit", @@ -203741,192 +203788,192 @@ "7619": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "7620": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7621": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.scope" }, "7622": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.reason" }, "7623": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7624": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type.code" }, "7625": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.destination" + "qualifiedName": "__type" }, "7626": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7627": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7628": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type.destination" }, "7629": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.destination" + "qualifiedName": "__type" }, "7630": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7631": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7632": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type.destination" }, "7633": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.destination" + "qualifiedName": "__type" }, "7634": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7635": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7636": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type.destination" }, "7637": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.destination" + "qualifiedName": "__type" }, "7638": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7639": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7640": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type.destination" }, "7641": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.destination" + "qualifiedName": "__type" }, "7642": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7643": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7644": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type.destination" }, "7645": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.destination" + "qualifiedName": "__type" }, "7646": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7647": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7648": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type.destination" }, "7649": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.destination" + "qualifiedName": "__type" }, "7650": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7651": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7652": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.child" + "qualifiedName": "__type.destination" }, "7653": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.parent" + "qualifiedName": "__type" }, "7654": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7655": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.child" }, "7656": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.paths" + "qualifiedName": "__type.parent" }, "7657": { "packageName": "@scolladon/tsgit", @@ -203971,37 +204018,37 @@ "7665": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.paths" }, "7666": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7667": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.index" + "qualifiedName": "__type.code" }, "7668": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.stackSize" + "qualifiedName": "__type" }, "7669": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7670": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.index" }, "7671": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.paths" + "qualifiedName": "__type.stackSize" }, "7672": { "packageName": "@scolladon/tsgit", @@ -204016,27 +204063,27 @@ "7674": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.prefix" + "qualifiedName": "__type.paths" }, "7675": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.candidates" + "qualifiedName": "__type" }, "7676": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7677": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.prefix" }, "7678": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.candidates" }, "7679": { "packageName": "@scolladon/tsgit", @@ -204051,7 +204098,7 @@ "7681": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.commit" + "qualifiedName": "__type.reason" }, "7682": { "packageName": "@scolladon/tsgit", @@ -204081,7 +204128,7 @@ "7687": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.oid" + "qualifiedName": "__type.commit" }, "7688": { "packageName": "@scolladon/tsgit", @@ -204156,7 +204203,7 @@ "7702": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.oid" }, "7703": { "packageName": "@scolladon/tsgit", @@ -204171,7 +204218,7 @@ "7705": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.reason" }, "7706": { "packageName": "@scolladon/tsgit", @@ -204201,7 +204248,7 @@ "7711": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.version" + "qualifiedName": "__type.path" }, "7712": { "packageName": "@scolladon/tsgit", @@ -204216,52 +204263,52 @@ "7714": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.oid" + "qualifiedName": "__type.version" }, "7715": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.objectType" + "qualifiedName": "__type" }, "7716": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7717": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.oid" }, "7718": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.oid" + "qualifiedName": "__type.objectType" }, "7719": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.bundleAlgorithm" + "qualifiedName": "__type" }, "7720": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.localAlgorithm" + "qualifiedName": "__type.code" }, "7721": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.oid" }, "7722": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.bundleAlgorithm" }, "7723": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.object" + "qualifiedName": "__type.localAlgorithm" }, "7724": { "packageName": "@scolladon/tsgit", @@ -204291,7 +204338,7 @@ "7729": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.ref" + "qualifiedName": "__type.object" }, "7730": { "packageName": "@scolladon/tsgit", @@ -204306,27 +204353,27 @@ "7732": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.ref" }, "7733": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.format" + "qualifiedName": "__type" }, "7734": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7735": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.reason" }, "7736": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.remote" + "qualifiedName": "__type.format" }, "7737": { "packageName": "@scolladon/tsgit", @@ -204341,42 +204388,42 @@ "7739": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.remote" }, "7740": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7741": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7742": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "7743": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.remote" + "qualifiedName": "__type.code" }, "7744": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.branch" + "qualifiedName": "__type" }, "7745": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7746": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.remote" }, "7747": { "packageName": "@scolladon/tsgit", @@ -204386,107 +204433,107 @@ "7748": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.upstream" + "qualifiedName": "__type" }, "7749": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "7750": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.branch" }, "7751": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.value" + "qualifiedName": "__type.upstream" }, "7752": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.source" + "qualifiedName": "__type" }, "7753": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.line" + "qualifiedName": "__type.code" }, "7754": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.value" }, "7755": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.source" }, "7756": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.length" + "qualifiedName": "__type.line" }, "7757": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__type.limit" + "qualifiedName": "__type" }, "7758": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "authorUnconfigured" + "qualifiedName": "__type.code" }, "7759": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "authorUnconfigured" + "qualifiedName": "__type.length" }, "7760": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "blockedHost" + "qualifiedName": "__type.limit" }, "7761": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "blockedHost" + "qualifiedName": "authorUnconfigured" }, "7762": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "host" + "qualifiedName": "authorUnconfigured" }, "7763": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "reason" + "qualifiedName": "blockedHost" }, "7764": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "branchExists" + "qualifiedName": "blockedHost" }, "7765": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "branchExists" + "qualifiedName": "host" }, "7766": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "name" + "qualifiedName": "reason" }, "7767": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "branchNotFound" + "qualifiedName": "branchExists" }, "7768": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "branchNotFound" + "qualifiedName": "branchExists" }, "7769": { "packageName": "@scolladon/tsgit", @@ -204496,12 +204543,12 @@ "7770": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "cannotDeleteCheckedOutBranch" + "qualifiedName": "branchNotFound" }, "7771": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "cannotDeleteCheckedOutBranch" + "qualifiedName": "branchNotFound" }, "7772": { "packageName": "@scolladon/tsgit", @@ -204511,82 +204558,82 @@ "7773": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "checkoutOverwriteDirty" + "qualifiedName": "cannotDeleteCheckedOutBranch" }, "7774": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "checkoutOverwriteDirty" + "qualifiedName": "cannotDeleteCheckedOutBranch" }, "7775": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "__0" + "qualifiedName": "name" }, "7776": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configKeyInvalid" + "qualifiedName": "checkoutOverwriteDirty" }, "7777": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configKeyInvalid" + "qualifiedName": "checkoutOverwriteDirty" }, "7778": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "key" + "qualifiedName": "__0" }, "7779": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "reason" + "qualifiedName": "configKeyInvalid" }, "7780": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "position" + "qualifiedName": "configKeyInvalid" }, "7781": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configMultipleValues" + "qualifiedName": "key" }, "7782": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configMultipleValues" + "qualifiedName": "reason" }, "7783": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "key" + "qualifiedName": "position" }, "7784": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "count" + "qualifiedName": "configMultipleValues" }, "7785": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "requested" + "qualifiedName": "configMultipleValues" }, "7786": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "scope" + "qualifiedName": "key" }, "7787": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configScopeNotAvailable" + "qualifiedName": "count" }, "7788": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configScopeNotAvailable" + "qualifiedName": "requested" }, "7789": { "packageName": "@scolladon/tsgit", @@ -204596,572 +204643,572 @@ "7790": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "reason" + "qualifiedName": "configScopeNotAvailable" }, "7791": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configSectionNotFound" + "qualifiedName": "configScopeNotAvailable" }, "7792": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configSectionNotFound" + "qualifiedName": "scope" }, "7793": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "name" + "qualifiedName": "reason" }, "7794": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "scope" + "qualifiedName": "configSectionNotFound" }, "7795": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configSystemPathUnresolved" + "qualifiedName": "configSectionNotFound" }, "7796": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configSystemPathUnresolved" + "qualifiedName": "name" }, "7797": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configValueInvalid" + "qualifiedName": "scope" }, "7798": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "configValueInvalid" + "qualifiedName": "configSystemPathUnresolved" }, "7799": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "key" + "qualifiedName": "configSystemPathUnresolved" }, "7800": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "position" + "qualifiedName": "configValueInvalid" }, "7801": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "emptyCommitMessage" + "qualifiedName": "configValueInvalid" }, "7802": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "emptyCommitMessage" + "qualifiedName": "key" }, "7803": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "emptyPathspec" + "qualifiedName": "position" }, "7804": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "emptyPathspec" + "qualifiedName": "emptyCommitMessage" }, "7805": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "invalidUrl" + "qualifiedName": "emptyCommitMessage" }, "7806": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "invalidUrl" + "qualifiedName": "emptyPathspec" }, "7807": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "reason" + "qualifiedName": "emptyPathspec" }, "7808": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "maxRefspecsExceeded" + "qualifiedName": "invalidUrl" }, "7809": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "maxRefspecsExceeded" + "qualifiedName": "invalidUrl" }, "7810": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "count" + "qualifiedName": "reason" }, "7811": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "limit" + "qualifiedName": "maxRefspecsExceeded" }, "7812": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mergeHasConflicts" + "qualifiedName": "maxRefspecsExceeded" }, "7813": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mergeHasConflicts" + "qualifiedName": "count" }, "7814": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "count" + "qualifiedName": "limit" }, "7815": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "paths" + "qualifiedName": "mergeHasConflicts" }, "7816": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvBadSource" + "qualifiedName": "mergeHasConflicts" }, "7817": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvBadSource" + "qualifiedName": "count" }, "7818": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "source" + "qualifiedName": "paths" }, "7819": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "destination" + "qualifiedName": "mvBadSource" }, "7820": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvDestinationDirectoryMissing" + "qualifiedName": "mvBadSource" }, "7821": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvDestinationDirectoryMissing" + "qualifiedName": "source" }, "7822": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "source" + "qualifiedName": "destination" }, "7823": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "destination" + "qualifiedName": "mvDestinationDirectoryMissing" }, "7824": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvDestinationExists" + "qualifiedName": "mvDestinationDirectoryMissing" }, "7825": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvDestinationExists" + "qualifiedName": "source" }, "7826": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "source" + "qualifiedName": "destination" }, "7827": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "destination" + "qualifiedName": "mvDestinationExists" }, "7828": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvDestinationNotDirectory" + "qualifiedName": "mvDestinationExists" }, "7829": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvDestinationNotDirectory" + "qualifiedName": "source" }, "7830": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "source" + "qualifiedName": "destination" }, "7831": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "destination" + "qualifiedName": "mvDestinationNotDirectory" }, "7832": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvIntoSelf" + "qualifiedName": "mvDestinationNotDirectory" }, "7833": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvIntoSelf" + "qualifiedName": "source" }, "7834": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "source" + "qualifiedName": "destination" }, "7835": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "destination" + "qualifiedName": "mvIntoSelf" }, "7836": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvMultipleSourcesSameTarget" + "qualifiedName": "mvIntoSelf" }, "7837": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvMultipleSourcesSameTarget" + "qualifiedName": "source" }, "7838": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "source" + "qualifiedName": "destination" }, "7839": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "destination" + "qualifiedName": "mvMultipleSourcesSameTarget" }, "7840": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvOverlappingSources" + "qualifiedName": "mvMultipleSourcesSameTarget" }, "7841": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvOverlappingSources" + "qualifiedName": "source" }, "7842": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "child" + "qualifiedName": "destination" }, "7843": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "parent" + "qualifiedName": "mvOverlappingSources" }, "7844": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvSourceNotTracked" + "qualifiedName": "mvOverlappingSources" }, "7845": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "mvSourceNotTracked" + "qualifiedName": "child" }, "7846": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "source" + "qualifiedName": "parent" }, "7847": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "destination" + "qualifiedName": "mvSourceNotTracked" }, "7848": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "nonFastForward" + "qualifiedName": "mvSourceNotTracked" }, "7849": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "nonFastForward" + "qualifiedName": "source" }, "7850": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "ref" + "qualifiedName": "destination" }, "7851": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "local" + "qualifiedName": "nonFastForward" }, "7852": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remote" + "qualifiedName": "nonFastForward" }, "7853": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "noOperationInProgress" + "qualifiedName": "ref" }, "7854": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "noOperationInProgress" + "qualifiedName": "local" }, "7855": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "operation" + "qualifiedName": "remote" }, "7856": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "noPromisorRemote" + "qualifiedName": "noOperationInProgress" }, "7857": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "noPromisorRemote" + "qualifiedName": "noOperationInProgress" }, "7858": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "nothingToCommit" + "qualifiedName": "operation" }, "7859": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "nothingToCommit" + "qualifiedName": "noPromisorRemote" }, "7860": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "noUpstreamConfigured" + "qualifiedName": "noPromisorRemote" }, "7861": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "noUpstreamConfigured" + "qualifiedName": "nothingToCommit" }, "7862": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "branch" + "qualifiedName": "nothingToCommit" }, "7863": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "operationInProgress" + "qualifiedName": "noUpstreamConfigured" }, "7864": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "operationInProgress" + "qualifiedName": "noUpstreamConfigured" }, "7865": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "operation" + "qualifiedName": "branch" }, "7866": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "pathspecBeyondSymlink" + "qualifiedName": "operationInProgress" }, "7867": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "pathspecBeyondSymlink" + "qualifiedName": "operationInProgress" }, "7868": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "path" + "qualifiedName": "operation" }, "7869": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "pathspecNoMatch" + "qualifiedName": "pathspecBeyondSymlink" }, "7870": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "pathspecNoMatch" + "qualifiedName": "pathspecBeyondSymlink" }, "7871": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "pattern" + "qualifiedName": "path" }, "7872": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "pathspecOutsideRepo" + "qualifiedName": "pathspecNoMatch" }, "7873": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "pathspecOutsideRepo" + "qualifiedName": "pathspecNoMatch" }, "7874": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "path" + "qualifiedName": "pattern" }, "7875": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "pushRejected" + "qualifiedName": "pathspecOutsideRepo" }, "7876": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "pushRejected" + "qualifiedName": "pathspecOutsideRepo" }, "7877": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "ref" + "qualifiedName": "path" }, "7878": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "reason" + "qualifiedName": "pushRejected" }, "7879": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "reportStatus" + "qualifiedName": "pushRejected" }, "7880": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remoteAdvertisesNoRefs" + "qualifiedName": "ref" }, "7881": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remoteAdvertisesNoRefs" + "qualifiedName": "reason" }, "7882": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remoteExists" + "qualifiedName": "reportStatus" }, "7883": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remoteExists" + "qualifiedName": "remoteAdvertisesNoRefs" }, "7884": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remote" + "qualifiedName": "remoteAdvertisesNoRefs" }, "7885": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remoteNameInvalid" + "qualifiedName": "remoteExists" }, "7886": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remoteNameInvalid" + "qualifiedName": "remoteExists" }, "7887": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "name" + "qualifiedName": "remote" }, "7888": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "reason" + "qualifiedName": "remoteNameInvalid" }, "7889": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remoteNotConfigured" + "qualifiedName": "remoteNameInvalid" }, "7890": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remoteNotConfigured" + "qualifiedName": "name" }, "7891": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "remote" + "qualifiedName": "reason" }, "7892": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "revparseAmbiguous" + "qualifiedName": "remoteNotConfigured" }, "7893": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "revparseAmbiguous" + "qualifiedName": "remoteNotConfigured" }, "7894": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "expression" + "qualifiedName": "remote" }, "7895": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "candidates" + "qualifiedName": "revparseAmbiguous" }, "7896": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "revparseUnresolved" + "qualifiedName": "revparseAmbiguous" }, "7897": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "revparseUnresolved" + "qualifiedName": "expression" }, "7898": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "expression" + "qualifiedName": "candidates" }, "7899": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "rmLocalModifications" + "qualifiedName": "revparseUnresolved" }, "7900": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "rmLocalModifications" + "qualifiedName": "revparseUnresolved" }, "7901": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "paths" + "qualifiedName": "expression" }, "7902": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "rmStagedAndLocalChanges" + "qualifiedName": "rmLocalModifications" }, "7903": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "rmStagedAndLocalChanges" + "qualifiedName": "rmLocalModifications" }, "7904": { "packageName": "@scolladon/tsgit", @@ -205171,12 +205218,12 @@ "7905": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "rmStagedChanges" + "qualifiedName": "rmStagedAndLocalChanges" }, "7906": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "rmStagedChanges" + "qualifiedName": "rmStagedAndLocalChanges" }, "7907": { "packageName": "@scolladon/tsgit", @@ -205186,1872 +205233,1872 @@ "7908": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", - "qualifiedName": "sanitize" + "qualifiedName": "rmStagedChanges" }, "7909": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/commands/error.ts", + "qualifiedName": "rmStagedChanges" + }, + "7910": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/commands/error.ts", + "qualifiedName": "paths" + }, + "7911": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/commands/error.ts", + "qualifiedName": "sanitize" + }, + "7912": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", "qualifiedName": "__function" }, - "7910": { + "7913": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", "qualifiedName": "__function" }, - "7911": { + "7914": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/error.ts", "qualifiedName": "s" }, - "7912": { + "7915": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "tagExists" }, - "7913": { + "7916": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "tagExists" }, - "7914": { + "7917": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "name" }, - "7915": { + "7918": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "tagNotFound" }, - "7916": { + "7919": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "tagNotFound" }, - "7917": { + "7920": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "name" }, - "7918": { + "7921": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "targetDirectoryNotEmpty" }, - "7919": { + "7922": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "targetDirectoryNotEmpty" }, - "7920": { + "7923": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "path" }, - "7921": { + "7924": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "tooManyRedirects" }, - "7922": { + "7925": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "tooManyRedirects" }, - "7923": { + "7926": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "count" }, - "7924": { + "7927": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "unsupportedScheme" }, - "7925": { + "7928": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "unsupportedScheme" }, - "7926": { + "7929": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "scheme" }, - "7927": { + "7930": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "workingTreeDirty" }, - "7928": { + "7931": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "workingTreeDirty" }, - "7929": { + "7932": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/commands/error.ts", "qualifiedName": "__0" }, - "7930": { + "7933": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "ConflictKind" }, - "7931": { + "7934": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "classifyUnmerged" }, - "7932": { + "7935": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "AddChange" }, - "7933": { + "7936": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "CopyChange" }, - "7934": { + "7937": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "DeleteChange" }, - "7935": { + "7938": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "DiffChange" }, - "7936": { + "7939": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "DiffChangeType" }, - "7937": { + "7940": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "ModifyChange" }, - "7938": { + "7941": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "RenameChange" }, - "7939": { + "7942": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "TreeDiff" }, - "7940": { + "7943": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "TypeChangeChange" }, - "7941": { + "7944": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "DiffError" }, - "7942": { + "7945": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "invalidDiffInput" }, - "7943": { + "7946": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "invalidTreeForDiff" }, - "7944": { + "7947": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "FlatTree" }, - "7945": { + "7948": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "FlatTreeEntry" }, - "7946": { + "7949": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "MAX_FLAT_TREE_ENTRIES" }, - "7947": { + "7950": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "GroupedIndex" }, - "7948": { + "7951": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "UnmergedEntryGroup" }, - "7949": { + "7952": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "conflictsToIndexEntries" }, - "7950": { + "7953": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "diffIndexAgainstTree" }, - "7951": { + "7954": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "groupUnmergedEntries" }, - "7952": { + "7955": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "recordedPaths" }, - "7953": { + "7956": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "sortedRecordedPaths" }, - "7954": { + "7957": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "LineDiff" }, - "7955": { + "7958": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "LineDiffOptions" }, - "7956": { + "7959": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "LineHunk" }, - "7957": { + "7960": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "BINARY_DETECTION_BYTES" }, - "7958": { + "7961": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "diffLines" }, - "7959": { + "7962": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "isBinary" }, - "7960": { + "7963": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "MAX_DIFF_EDIT_DISTANCE" }, - "7961": { + "7964": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "MAX_DIFF_ITERATION_FACTOR" }, - "7962": { + "7965": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "MAX_DIFF_LINES" }, - "7963": { + "7966": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "MAX_LINE_BYTES" }, - "7964": { + "7967": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "MAX_LINES" }, - "7965": { + "7968": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "splitLines" }, - "7966": { + "7969": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "ModeKind" }, - "7967": { + "7970": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "isGitlink" }, - "7968": { + "7971": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "isSameKind" }, - "7969": { + "7972": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "kindOf" }, - "7970": { + "7973": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "BodyLine" }, - "7971": { + "7974": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "OutputHunk" }, - "7972": { + "7975": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "PatchFile" }, - "7973": { + "7976": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "PatchOptions" }, - "7974": { + "7977": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "PatchPathPrefix" }, - "7975": { + "7978": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "computeHunks" }, - "7976": { + "7979": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "renderPatch" }, - "7977": { + "7980": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "comparePaths" }, - "7978": { + "7981": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "sortByPath" }, - "7979": { + "7982": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "RenameDetectOptions" }, - "7980": { + "7983": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "detectRenames" }, - "7981": { + "7984": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "SimilarityScore" }, - "7982": { + "7985": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "DEFAULT_BREAK_SCORE" }, - "7983": { + "7986": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "DEFAULT_MERGE_SCORE" }, - "7984": { + "7987": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "DEFAULT_RENAME_THRESHOLD" }, - "7985": { + "7988": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "estimateSimilarity" }, - "7986": { + "7989": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "MAX_SCORE" }, - "7987": { + "7990": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "toSimilarityPercent" }, - "7988": { + "7991": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "StatDiffChange" }, - "7989": { + "7992": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "StatFields" }, - "7990": { + "7993": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "StatFieldsOptions" }, - "7991": { + "7994": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "StatTreeDiff" }, - "7992": { + "7995": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "computeStatFields" }, - "7993": { + "7996": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/tree-diff.ts", "qualifiedName": "diffTrees" }, - "7994": { + "7997": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/tree-diff.ts", "qualifiedName": "diffTrees" }, - "7995": { + "7998": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/tree-diff.ts", "qualifiedName": "oldTree" }, - "7996": { + "7999": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/tree-diff.ts", "qualifiedName": "newTree" }, - "7997": { + "8000": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "LineKey" }, - "7998": { + "8001": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "WhitespaceMode" }, - "7999": { + "8002": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "lineKeyIsActive" }, - "8000": { + "8003": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "linesEqualUnder" }, - "8001": { + "8004": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "normalizeLine" }, - "8002": { + "8005": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/diff/index.ts", "qualifiedName": "resolveLineKey" }, - "8003": { + "8006": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "IndexError" }, - "8004": { + "8007": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "invalidIndexEntry" }, - "8005": { + "8008": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "invalidIndexHeader" }, - "8006": { + "8009": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "CacheTreeEntry" }, - "8007": { + "8010": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "GitIndex" }, - "8008": { + "8011": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "IndexEntry" }, - "8009": { + "8012": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "IndexEntryFlags" }, - "8010": { + "8013": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "IndexExtension" }, - "8011": { + "8014": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "StatData" }, - "8012": { + "8015": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "isStatClean" }, - "8013": { + "8016": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "STAGE0_FLAGS" }, - "8014": { + "8017": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "skipWorktreeEntry" }, - "8015": { + "8018": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "parseCacheTree" }, - "8016": { + "8019": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "parseIndex" }, - "8017": { + "8020": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "compareEntryPath" }, - "8018": { + "8021": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/git-index/index.ts", "qualifiedName": "serializeIndex" }, - "8019": { + "8022": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/hooks/index.ts", "qualifiedName": "HookName" }, - "8020": { + "8023": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "MatchResult" }, - "8021": { + "8024": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "matches" }, - "8022": { + "8025": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "matches" }, - "8023": { + "8026": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "rules" }, - "8024": { + "8027": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "path" }, - "8025": { + "8028": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "isDir" }, - "8026": { + "8029": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "matchesVerbose" }, - "8027": { + "8030": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "matchesVerbose" }, - "8028": { + "8031": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "rules" }, - "8029": { + "8032": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "path" }, - "8030": { + "8033": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "isDir" }, - "8031": { + "8034": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "VerboseLevelMatch" }, - "8032": { + "8035": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "VerboseLevelMatch.verdict" }, - "8033": { + "8036": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/match.ts", "qualifiedName": "VerboseLevelMatch.ruleIndex" }, - "8034": { + "8037": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "IgnoreLevel" }, - "8035": { + "8038": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "IgnoreLevel.basedir" }, - "8036": { + "8039": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "IgnoreLevel.rules" }, - "8037": { + "8040": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "IgnoreLevel.kind" }, - "8038": { + "8041": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "matchInStack" }, - "8039": { + "8042": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "matchInStack" }, - "8040": { + "8043": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "stack" }, - "8041": { + "8044": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "path" }, - "8042": { + "8045": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "isDir" }, - "8043": { + "8046": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "matchInStackVerbose" }, - "8044": { + "8047": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "matchInStackVerbose" }, - "8045": { + "8048": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "stack" }, - "8046": { + "8049": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "path" }, - "8047": { + "8050": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "isDir" }, - "8048": { + "8051": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "VerboseMatch" }, - "8049": { + "8052": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "VerboseMatch.verdict" }, - "8050": { + "8053": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "VerboseMatch.level" }, - "8051": { + "8054": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/matcher-stack.ts", "qualifiedName": "VerboseMatch.ruleIndex" }, - "8052": { + "8055": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "IgnoreRule" }, - "8053": { + "8056": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "IgnoreRule.pattern" }, - "8054": { + "8057": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "IgnoreRule.negated" }, - "8055": { + "8058": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "IgnoreRule.directoryOnly" }, - "8056": { + "8059": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "IgnoreRule.anchored" }, - "8057": { + "8060": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "IgnoreRule.lineNumber" }, - "8058": { + "8061": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "IgnoreRule.compiled" }, - "8059": { + "8062": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "IgnoreRuleset" }, - "8060": { + "8063": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "parseGitignore" }, - "8061": { + "8064": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "parseGitignore" }, - "8062": { + "8065": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "text" }, - "8063": { + "8066": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "TokenizedIgnoreLine" }, - "8064": { + "8067": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "TokenizedIgnoreLine.negated" }, - "8065": { + "8068": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "TokenizedIgnoreLine.anchored" }, - "8066": { + "8069": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "TokenizedIgnoreLine.directoryOnly" }, - "8067": { + "8070": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "TokenizedIgnoreLine.cleanPattern" }, - "8068": { + "8071": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "tokenizeIgnoreLine" }, - "8069": { + "8072": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "tokenizeIgnoreLine" }, - "8070": { + "8073": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/ignore/parse-gitignore.ts", "qualifiedName": "rawLine" }, - "8071": { + "8074": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/conflict-markers.ts", "qualifiedName": "writeConflictMarkers" }, - "8072": { + "8075": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/conflict-markers.ts", "qualifiedName": "writeConflictMarkers" }, - "8073": { + "8076": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/conflict-markers.ts", "qualifiedName": "oursLines" }, - "8074": { + "8077": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/conflict-markers.ts", "qualifiedName": "theirsLines" }, - "8075": { + "8078": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/conflict-markers.ts", "qualifiedName": "options" }, - "8076": { + "8079": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "MergeError" }, - "8077": { + "8080": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "__type" }, - "8078": { + "8081": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "__type.code" }, - "8079": { + "8082": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "__type.reason" }, - "8080": { + "8083": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "__type" }, - "8081": { + "8084": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "__type.code" }, - "8082": { + "8085": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "__type.reason" }, - "8083": { + "8086": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "invalidMergeInput" }, - "8084": { + "8087": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "invalidMergeInput" }, - "8085": { + "8088": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "reason" }, - "8086": { + "8089": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "invalidMergeTree" }, - "8087": { + "8090": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "invalidMergeTree" }, - "8088": { + "8091": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/error.ts", "qualifiedName": "reason" }, - "8089": { + "8092": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "abbreviateOid" }, - "8090": { + "8093": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "abbreviateOid" }, - "8091": { + "8094": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "oid" }, - "8092": { + "8095": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "DEFAULT_MERGE_LABELS" }, - "8093": { + "8096": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "MergeLabels" }, - "8094": { + "8097": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "MergeLabels.ours" }, - "8095": { + "8098": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "MergeLabels.theirs" }, - "8096": { + "8099": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "MergeLabels.base" }, - "8097": { + "8100": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "mergeLabels" }, - "8098": { + "8101": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "mergeLabels" }, - "8099": { + "8102": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "revName" }, - "8100": { + "8103": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "base" }, - "8101": { + "8104": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "replayLabels" }, - "8102": { + "8105": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "replayLabels" }, - "8103": { + "8106": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "oid" }, - "8104": { + "8107": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "subject" }, - "8105": { + "8108": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "revertLabels" }, - "8106": { + "8109": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "revertLabels" }, - "8107": { + "8110": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "oid" }, - "8108": { + "8111": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "subject" }, - "8109": { + "8112": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-labels.ts", "qualifiedName": "STASH_LABELS" }, - "8110": { + "8113": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ConflictMarkerOptions" }, - "8111": { + "8114": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ConflictMarkerOptions.labels" }, - "8112": { + "8115": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type" }, - "8113": { + "8116": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.ours" }, - "8114": { + "8117": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.base" }, - "8115": { + "8118": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.theirs" }, - "8116": { + "8119": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ConflictMarkerOptions.conflictStyle" }, - "8117": { + "8120": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ConflictMarkerOptions.markerSize" }, - "8118": { + "8121": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ConflictType" }, - "8119": { + "8122": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ContentMergeContext" }, - "8120": { + "8123": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ContentMergeContext.path" }, - "8121": { + "8124": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ContentMergeContext.baseId" }, - "8122": { + "8125": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ContentMergeContext.ourId" }, - "8123": { + "8126": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ContentMergeContext.theirId" }, - "8124": { + "8127": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ContentMergeContext.baseMode" }, - "8125": { + "8128": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ContentMergeContext.ourMode" }, - "8126": { + "8129": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ContentMergeContext.theirMode" }, - "8127": { + "8130": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "ContentMergeResult" }, - "8128": { + "8131": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type" }, - "8129": { + "8132": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.status" }, - "8130": { + "8133": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.bytes" }, - "8131": { + "8134": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.id" }, - "8132": { + "8135": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type" }, - "8133": { + "8136": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.status" }, - "8134": { + "8137": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.markedBytes" }, - "8135": { + "8138": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.conflictType" }, - "8136": { + "8139": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict" }, - "8137": { + "8140": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.type" }, - "8138": { + "8141": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.path" }, - "8139": { + "8142": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.baseId" }, - "8140": { + "8143": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.ourId" }, - "8141": { + "8144": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.theirId" }, - "8142": { + "8145": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.baseMode" }, - "8143": { + "8146": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.ourMode" }, - "8144": { + "8147": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.theirMode" }, - "8145": { + "8148": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.conflictContent" }, - "8146": { + "8149": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.contentVerdict" }, - "8147": { + "8150": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.mergedMode" }, - "8148": { + "8151": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.ourPath" }, - "8149": { + "8152": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.theirPath" }, - "8150": { + "8153": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeConflict.basePath" }, - "8151": { + "8154": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeFavor" }, - "8152": { + "8155": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MergeOutcome" }, - "8153": { + "8156": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type" }, - "8154": { + "8157": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.status" }, - "8155": { + "8158": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.path" }, - "8156": { + "8159": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.id" }, - "8157": { + "8160": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.mode" }, - "8158": { + "8161": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type" }, - "8159": { + "8162": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.status" }, - "8160": { + "8163": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.path" }, - "8161": { + "8164": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.id" }, - "8162": { + "8165": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.mode" }, - "8163": { + "8166": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type" }, - "8164": { + "8167": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.status" }, - "8165": { + "8168": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.path" }, - "8166": { + "8169": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.bytes" }, - "8167": { + "8170": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.mode" }, - "8168": { + "8171": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type" }, - "8169": { + "8172": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.status" }, - "8170": { + "8173": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.path" }, - "8171": { + "8174": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type" }, - "8172": { + "8175": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.status" }, - "8173": { + "8176": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "__type.conflict" }, - "8174": { + "8177": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "TreeMergeResult" }, - "8175": { + "8178": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "TreeMergeResult.outcomes" }, - "8176": { + "8179": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "TreeMergeResult.conflicts" }, - "8177": { + "8180": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "TreeMergeResult.cleanMerge" }, - "8178": { + "8181": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/merge-types.ts", "qualifiedName": "MAX_CONFLICT_OUTPUT_BYTES" }, - "8179": { + "8182": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-content.ts", "qualifiedName": "MergeContentOptions" }, - "8180": { + "8183": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-content.ts", "qualifiedName": "__type" }, - "8181": { + "8184": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-content.ts", "qualifiedName": "__type.favor" }, - "8182": { + "8185": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-content.ts", "qualifiedName": "mergeContent" }, - "8183": { + "8186": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-content.ts", "qualifiedName": "mergeContent" }, - "8184": { + "8187": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-content.ts", "qualifiedName": "base" }, - "8185": { + "8188": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-content.ts", "qualifiedName": "ours" }, - "8186": { + "8189": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-content.ts", "qualifiedName": "theirs" }, - "8187": { + "8190": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-content.ts", "qualifiedName": "options" }, - "8188": { + "8191": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "ContentMerger" }, - "8189": { + "8192": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "__type" }, - "8190": { + "8193": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "__type" }, - "8191": { + "8194": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "ctx" }, - "8192": { + "8195": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "base" }, - "8193": { + "8196": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "ours" }, - "8194": { + "8197": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "theirs" }, - "8195": { + "8198": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "mergeTrees" }, - "8196": { + "8199": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "mergeTrees" }, - "8197": { + "8200": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "base" }, - "8198": { + "8201": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "ours" }, - "8199": { + "8202": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "theirs" }, - "8200": { + "8203": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "contentMerger" }, - "8201": { + "8204": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/merge/three-way-tree.ts", "qualifiedName": "labels" }, - "8202": { + "8205": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "AuthorIdentity" }, - "8203": { + "8206": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "parseIdentity" }, - "8204": { + "8207": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "serializeIdentity" }, - "8205": { + "8208": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "Blob" }, - "8206": { + "8209": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "parseBlobContent" }, - "8207": { + "8210": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "serializeBlobContent" }, - "8208": { + "8211": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "Commit" }, - "8209": { + "8212": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "CommitData" }, - "8210": { + "8213": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "ExtraHeader" }, - "8211": { + "8214": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "parseCommitContent" }, - "8212": { + "8215": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "serializeCommitContent" }, - "8213": { + "8216": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "stripspace" }, - "8214": { + "8217": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "bytesToHex" }, - "8215": { + "8218": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "compareBytes" }, - "8216": { + "8219": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "hexToBytes" }, - "8217": { + "8220": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "DomainObjectError" }, - "8218": { + "8221": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "invalidCommit" }, - "8219": { + "8222": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "invalidFileMode" }, - "8220": { + "8223": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "invalidIdentity" }, - "8221": { + "8224": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "invalidObjectHeader" }, - "8222": { + "8225": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "invalidObjectId" }, - "8223": { + "8226": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "invalidTag" }, - "8224": { + "8227": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "invalidTreeEntry" }, - "8225": { + "8228": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "TsgitError" }, - "8226": { + "8229": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "FileMode" }, - "8227": { + "8230": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "deriveWorkingMode" }, - "8228": { + "8231": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "FILE_MODE" }, - "8229": { + "8232": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "isDirectory" }, - "8230": { + "8233": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "normalizeFileMode" }, - "8231": { + "8234": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "validateFileMode" }, - "8232": { + "8235": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "GitObject" }, - "8233": { + "8236": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "parseObject" }, - "8234": { + "8237": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "serializeObject" }, - "8235": { + "8238": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "HashConfig" }, - "8236": { + "8239": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "SHA1_CONFIG" }, - "8237": { + "8240": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "SHA256_CONFIG" }, - "8238": { + "8241": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "ObjectType" }, - "8239": { + "8242": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "parseHeader" }, - "8240": { + "8243": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "serializeHeader" }, - "8241": { + "8244": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "isOid" }, - "8242": { + "8245": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "oidPattern" }, - "8243": { + "8246": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "payloadByteLength" }, - "8244": { + "8247": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "Tag" }, - "8245": { + "8248": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "TagData" }, - "8246": { + "8249": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "parseTagContent" }, - "8247": { + "8250": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "serializeTagContent" }, - "8248": { + "8251": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "Tree" }, - "8249": { + "8252": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "TreeEntry" }, - "8250": { + "8253": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "parseTreeContent" }, - "8251": { + "8254": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "serializeTreeContent" }, - "8252": { + "8255": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "sortTreeEntries" }, - "8253": { + "8256": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "treeEntry" }, - "8254": { + "8257": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/objects/index.ts", "qualifiedName": "treeEntryCompare" }, - "8255": { + "8258": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "AGENT" }, - "8256": { + "8259": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "CLIENT_CAPABILITIES_FETCH" }, - "8257": { + "8260": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "CLIENT_CAPABILITIES_PUSH" }, - "8258": { + "8261": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "formatCapabilities" }, - "8259": { + "8262": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "formatCapabilities" }, - "8260": { + "8263": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "caps" }, - "8261": { + "8264": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "isSupportedObjectFormat" }, - "8262": { + "8265": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "isSupportedObjectFormat" }, - "8263": { + "8266": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "value" }, - "8264": { + "8267": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "negotiateCapabilities" }, - "8265": { + "8268": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "negotiateCapabilities" }, - "8266": { + "8269": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "serverCaps" }, - "8267": { + "8270": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "clientCaps" }, - "8268": { + "8271": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "PUSH_CERT" }, - "8269": { + "8272": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "parseCapabilities" }, - "8270": { + "8273": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "parseCapabilities" }, - "8271": { + "8274": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "tail" }, - "8272": { + "8275": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "peerNegotiatesObjectFormat" }, - "8273": { + "8276": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "peerNegotiatesObjectFormat" }, - "8274": { + "8277": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "advertised" }, - "8275": { + "8278": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "readObjectFormat" }, - "8276": { + "8279": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "readObjectFormat" }, - "8277": { + "8280": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/capabilities.ts", "qualifiedName": "caps" }, - "8278": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "ProtocolError" - }, - "8279": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" - }, - "8280": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" - }, "8281": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.value" + "qualifiedName": "ProtocolError" }, "8282": { "packageName": "@scolladon/tsgit", @@ -207096,7 +207143,7 @@ "8290": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.remaining" + "qualifiedName": "__type.value" }, "8291": { "packageName": "@scolladon/tsgit", @@ -207111,7 +207158,7 @@ "8293": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.remaining" }, "8294": { "packageName": "@scolladon/tsgit", @@ -207126,37 +207173,37 @@ "8296": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.expected" + "qualifiedName": "__type.reason" }, "8297": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.actual" + "qualifiedName": "__type" }, "8298": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8299": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.expected" }, "8300": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.actual" }, "8301": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "8302": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.line" + "qualifiedName": "__type.code" }, "8303": { "packageName": "@scolladon/tsgit", @@ -207171,7 +207218,7 @@ "8305": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.name" + "qualifiedName": "__type.line" }, "8306": { "packageName": "@scolladon/tsgit", @@ -207186,7 +207233,7 @@ "8308": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.channel" + "qualifiedName": "__type.name" }, "8309": { "packageName": "@scolladon/tsgit", @@ -207201,7 +207248,7 @@ "8311": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.message" + "qualifiedName": "__type.channel" }, "8312": { "packageName": "@scolladon/tsgit", @@ -207216,7 +207263,7 @@ "8314": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.value" + "qualifiedName": "__type.message" }, "8315": { "packageName": "@scolladon/tsgit", @@ -207231,7 +207278,7 @@ "8317": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.line" + "qualifiedName": "__type.value" }, "8318": { "packageName": "@scolladon/tsgit", @@ -207246,97 +207293,97 @@ "8320": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.line" }, "8321": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "8322": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8323": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "8324": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.raw" + "qualifiedName": "__type.code" }, "8325": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "8326": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8327": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.raw" }, "8328": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.count" + "qualifiedName": "__type.reason" }, "8329": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.limit" + "qualifiedName": "__type" }, "8330": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8331": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.count" }, "8332": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.spec" + "qualifiedName": "__type.limit" }, "8333": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "8334": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8335": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.spec" }, "8336": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.reason" }, "8337": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type" }, "8338": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.section" + "qualifiedName": "__type.code" }, "8339": { "packageName": "@scolladon/tsgit", @@ -207351,7 +207398,7 @@ "8341": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.command" + "qualifiedName": "__type.section" }, "8342": { "packageName": "@scolladon/tsgit", @@ -207366,47 +207413,47 @@ "8344": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.section" + "qualifiedName": "__type.command" }, "8345": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.count" + "qualifiedName": "__type" }, "8346": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.limit" + "qualifiedName": "__type.code" }, "8347": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.section" }, "8348": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.count" }, "8349": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.format" + "qualifiedName": "__type.limit" }, "8350": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.local" + "qualifiedName": "__type" }, "8351": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8352": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.format" }, "8353": { "packageName": "@scolladon/tsgit", @@ -207416,117 +207463,117 @@ "8354": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "__type.remote" + "qualifiedName": "__type" }, "8355": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "duplicateRef" + "qualifiedName": "__type.code" }, "8356": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "duplicateRef" + "qualifiedName": "__type.local" }, "8357": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "name" + "qualifiedName": "__type.remote" }, "8358": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "emptyReceiveUpdates" + "qualifiedName": "duplicateRef" }, "8359": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "emptyReceiveUpdates" + "qualifiedName": "duplicateRef" }, "8360": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "emptyWants" + "qualifiedName": "name" }, "8361": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "emptyWants" + "qualifiedName": "emptyReceiveUpdates" }, "8362": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidBaseUrl" + "qualifiedName": "emptyReceiveUpdates" }, "8363": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidBaseUrl" + "qualifiedName": "emptyWants" }, "8364": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "reason" + "qualifiedName": "emptyWants" }, "8365": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidFilterSpec" + "qualifiedName": "invalidBaseUrl" }, "8366": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidFilterSpec" + "qualifiedName": "invalidBaseUrl" }, "8367": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "spec" + "qualifiedName": "reason" }, "8368": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "reason" + "qualifiedName": "invalidFilterSpec" }, "8369": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidPktLength" + "qualifiedName": "invalidFilterSpec" }, "8370": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidPktLength" + "qualifiedName": "spec" }, "8371": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "value" + "qualifiedName": "reason" }, "8372": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidRefLine" + "qualifiedName": "invalidPktLength" }, "8373": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidRefLine" + "qualifiedName": "invalidPktLength" }, "8374": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "line" + "qualifiedName": "value" }, "8375": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidReportStatus" + "qualifiedName": "invalidRefLine" }, "8376": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidReportStatus" + "qualifiedName": "invalidRefLine" }, "8377": { "packageName": "@scolladon/tsgit", @@ -207536,72 +207583,72 @@ "8378": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidSidebandChannel" + "qualifiedName": "invalidReportStatus" }, "8379": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "invalidSidebandChannel" + "qualifiedName": "invalidReportStatus" }, "8380": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "channel" + "qualifiedName": "line" }, "8381": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "missingCapabilities" + "qualifiedName": "invalidSidebandChannel" }, "8382": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "missingCapabilities" + "qualifiedName": "invalidSidebandChannel" }, "8383": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "missingServiceHeader" + "qualifiedName": "channel" }, "8384": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "missingServiceHeader" + "qualifiedName": "missingCapabilities" }, "8385": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "expected" + "qualifiedName": "missingCapabilities" }, "8386": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "actual" + "qualifiedName": "missingServiceHeader" }, "8387": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "pktLengthReserved" + "qualifiedName": "missingServiceHeader" }, "8388": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "pktLengthReserved" + "qualifiedName": "expected" }, "8389": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "value" + "qualifiedName": "actual" }, "8390": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "pktTooLarge" + "qualifiedName": "pktLengthReserved" }, "8391": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "pktTooLarge" + "qualifiedName": "pktLengthReserved" }, "8392": { "packageName": "@scolladon/tsgit", @@ -207611,1492 +207658,1492 @@ "8393": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "pktTruncated" + "qualifiedName": "pktTooLarge" }, "8394": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "pktTruncated" + "qualifiedName": "pktTooLarge" }, "8395": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "remaining" + "qualifiedName": "value" }, "8396": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "pushObjectFormatUnsupported" + "qualifiedName": "pktTruncated" }, "8397": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "pushObjectFormatUnsupported" + "qualifiedName": "pktTruncated" }, "8398": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "local" + "qualifiedName": "remaining" }, "8399": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "remote" + "qualifiedName": "pushObjectFormatUnsupported" }, "8400": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "remoteFilterUnsupported" + "qualifiedName": "pushObjectFormatUnsupported" }, "8401": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "remoteFilterUnsupported" + "qualifiedName": "local" }, "8402": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "sidebandFatal" + "qualifiedName": "remote" }, "8403": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "sidebandFatal" + "qualifiedName": "remoteFilterUnsupported" }, "8404": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "message" + "qualifiedName": "remoteFilterUnsupported" }, "8405": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "unexpectedV2Section" + "qualifiedName": "sidebandFatal" }, "8406": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "unexpectedV2Section" + "qualifiedName": "sidebandFatal" }, "8407": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "section" + "qualifiedName": "message" }, "8408": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "unknownAckStatus" + "qualifiedName": "unexpectedV2Section" }, "8409": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "unknownAckStatus" + "qualifiedName": "unexpectedV2Section" }, "8410": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "value" + "qualifiedName": "section" }, "8411": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "unsupportedObjectFormat" + "qualifiedName": "unknownAckStatus" }, "8412": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "unsupportedObjectFormat" + "qualifiedName": "unknownAckStatus" }, "8413": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "format" + "qualifiedName": "value" }, "8414": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "local" + "qualifiedName": "unsupportedObjectFormat" }, "8415": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "v2CommandUnsupported" + "qualifiedName": "unsupportedObjectFormat" }, "8416": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "v2CommandUnsupported" + "qualifiedName": "format" }, "8417": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/error.ts", - "qualifiedName": "command" + "qualifiedName": "local" }, "8418": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/protocol/error.ts", + "qualifiedName": "v2CommandUnsupported" + }, + "8419": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/protocol/error.ts", + "qualifiedName": "v2CommandUnsupported" + }, + "8420": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/protocol/error.ts", + "qualifiedName": "command" + }, + "8421": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "formatObjectFilter" }, - "8419": { + "8422": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "formatObjectFilter" }, - "8420": { + "8423": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "filter" }, - "8421": { + "8424": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "ObjectFilter" }, - "8422": { + "8425": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "__type" }, - "8423": { + "8426": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "__type.kind" }, - "8424": { + "8427": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "__type" }, - "8425": { + "8428": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "__type.kind" }, - "8426": { + "8429": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "__type.bytes" }, - "8427": { + "8430": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "__type" }, - "8428": { + "8431": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "__type.kind" }, - "8429": { + "8432": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "__type.depth" }, - "8430": { + "8433": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "parseObjectFilter" }, - "8431": { + "8434": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "parseObjectFilter" }, - "8432": { + "8435": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/object-filter.ts", "qualifiedName": "spec" }, - "8433": { + "8436": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "DELIM_PKT" }, - "8434": { + "8437": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "decodePktStream" }, - "8435": { + "8438": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "decodePktStream" }, - "8436": { + "8439": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "source" }, - "8437": { + "8440": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "options" }, - "8438": { + "8441": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type" }, - "8439": { + "8442": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type.v2" }, - "8440": { + "8443": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "encodePktLine" }, - "8441": { + "8444": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "encodePktLine" }, - "8442": { + "8445": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "payload" }, - "8443": { + "8446": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "encodePktLines" }, - "8444": { + "8447": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "encodePktLines" }, - "8445": { + "8448": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "payloads" }, - "8446": { + "8449": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "encodePktStream" }, - "8447": { + "8450": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "encodePktStream" }, - "8448": { + "8451": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "payloads" }, - "8449": { + "8452": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "FLUSH_PKT" }, - "8450": { + "8453": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "GitExchange" }, - "8451": { + "8454": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type" }, - "8452": { + "8455": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type" }, - "8453": { + "8456": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "requestBytes" }, - "8454": { + "8457": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "MAX_PKT_LINE_PAYLOAD" }, - "8455": { + "8458": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "PktLine" }, - "8456": { + "8459": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type" }, - "8457": { + "8460": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type.kind" }, - "8458": { + "8461": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type.payload" }, - "8459": { + "8462": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type" }, - "8460": { + "8463": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type.kind" }, - "8461": { + "8464": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type" }, - "8462": { + "8465": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type.kind" }, - "8463": { + "8466": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type" }, - "8464": { + "8467": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "__type.kind" }, - "8465": { + "8468": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/pkt-line.ts", "qualifiedName": "RESPONSE_END_PKT" }, - "8466": { + "8469": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "PushCertPayloadInput" }, - "8467": { + "8470": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "PushCertPayloadInput.pusher" }, - "8468": { + "8471": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "PushCertPayloadInput.pushee" }, - "8469": { + "8472": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "PushCertPayloadInput.nonce" }, - "8470": { + "8473": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "PushCertPayloadInput.updates" }, - "8471": { + "8474": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "ReceivePackRequest" }, - "8472": { + "8475": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "ReceivePackRequest.updates" }, - "8473": { + "8476": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "ReceivePackRequest.capabilities" }, - "8474": { + "8477": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "ReceivePackRequest.packfile" }, - "8475": { + "8478": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "ReceivePackResponse" }, - "8476": { + "8479": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "ReceivePackResponse.unpackOk" }, - "8477": { + "8480": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "ReceivePackResponse.unpackError" }, - "8478": { + "8481": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "ReceivePackResponse.refUpdates" }, - "8479": { + "8482": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "RefStatus" }, - "8480": { + "8483": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "RefStatus.name" }, - "8481": { + "8484": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "RefStatus.accepted" }, - "8482": { + "8485": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "RefStatus.reason" }, - "8483": { + "8486": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "RefUpdate" }, - "8484": { + "8487": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "RefUpdate.name" }, - "8485": { + "8488": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "RefUpdate.oldId" }, - "8486": { + "8489": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "RefUpdate.newId" }, - "8487": { + "8490": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "SignedReceivePackRequest" }, - "8488": { + "8491": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "SignedReceivePackRequest.updates" }, - "8489": { + "8492": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "SignedReceivePackRequest.capabilities" }, - "8490": { + "8493": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "SignedReceivePackRequest.armor" }, - "8491": { + "8494": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "SignedReceivePackRequest.pusher" }, - "8492": { + "8495": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "SignedReceivePackRequest.pushee" }, - "8493": { + "8496": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "SignedReceivePackRequest.nonce" }, - "8494": { + "8497": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "SignedReceivePackRequest.packfile" }, - "8495": { + "8498": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "buildPushCertPayload" }, - "8496": { + "8499": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "buildPushCertPayload" }, - "8497": { + "8500": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "input" }, - "8498": { + "8501": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "buildReceivePackRequest" }, - "8499": { + "8502": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "buildReceivePackRequest" }, - "8500": { + "8503": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "req" }, - "8501": { + "8504": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "buildSignedReceivePackRequest" }, - "8502": { + "8505": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "buildSignedReceivePackRequest" }, - "8503": { + "8506": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "req" }, - "8504": { + "8507": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "parseReceivePackResponse" }, - "8505": { + "8508": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "parseReceivePackResponse" }, - "8506": { + "8509": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/receive-pack.ts", "qualifiedName": "source" }, - "8507": { + "8510": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "parseSideBand" }, - "8508": { + "8511": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "parseSideBand" }, - "8509": { + "8512": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "source" }, - "8510": { + "8513": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "options" }, - "8511": { + "8514": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "SideBandOptions" }, - "8512": { + "8515": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "SideBandOptions.onProgress" }, - "8513": { + "8516": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "__type" }, - "8514": { + "8517": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "__type" }, - "8515": { + "8518": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "text" }, - "8516": { + "8519": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "SideBandOptions.onError" }, - "8517": { + "8520": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "__type" }, - "8518": { + "8521": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "__type" }, - "8519": { + "8522": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/side-band.ts", "qualifiedName": "text" }, - "8520": { + "8523": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "AckEntry" }, - "8521": { + "8524": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "AckEntry.id" }, - "8522": { + "8525": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "AckEntry.status" }, - "8523": { + "8526": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "AckStatus" }, - "8524": { + "8527": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "AdvertisedRef" }, - "8525": { + "8528": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "AdvertisedRef.name" }, - "8526": { + "8529": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "AdvertisedRef.id" }, - "8527": { + "8530": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "AdvertisedRef.peeled" }, - "8528": { + "8531": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "Advertisement" }, - "8529": { + "8532": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "Advertisement.capabilities" }, - "8530": { + "8533": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "Advertisement.refs" }, - "8531": { + "8534": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "Advertisement.head" }, - "8532": { + "8535": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "ParseAdvertisedRefsOptions" }, - "8533": { + "8536": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "ParseAdvertisedRefsOptions.servicePrologue" }, - "8534": { + "8537": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "Service" }, - "8535": { + "8538": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "ShallowUpdates" }, - "8536": { + "8539": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "ShallowUpdates.shallow" }, - "8537": { + "8540": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "ShallowUpdates.unshallow" }, - "8538": { + "8541": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "UploadPackResponse" }, - "8539": { + "8542": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "UploadPackResponse.acks" }, - "8540": { + "8543": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "UploadPackResponse.nak" }, - "8541": { + "8544": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "UploadPackResponse.packBody" }, - "8542": { + "8545": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "UploadPackResponse.shallow" }, - "8543": { + "8546": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "UploadPackResponse.unshallow" }, - "8544": { + "8547": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "WantHaveRequest" }, - "8545": { + "8548": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "WantHaveRequest.wants" }, - "8546": { + "8549": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "WantHaveRequest.haves" }, - "8547": { + "8550": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "WantHaveRequest.capabilities" }, - "8548": { + "8551": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "WantHaveRequest.depth" }, - "8549": { + "8552": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "WantHaveRequest.filter" }, - "8550": { + "8553": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "WantHaveRequest.done" }, - "8551": { + "8554": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "buildDiscoveryUrl" }, - "8552": { + "8555": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "buildDiscoveryUrl" }, - "8553": { + "8556": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "baseUrl" }, - "8554": { + "8557": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "service" }, - "8555": { + "8558": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "buildUploadPackRequest" }, - "8556": { + "8559": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "buildUploadPackRequest" }, - "8557": { + "8560": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "req" }, - "8558": { + "8561": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "parseAdvertisedRefs" }, - "8559": { + "8562": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "parseAdvertisedRefs" }, - "8560": { + "8563": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "source" }, - "8561": { + "8564": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "expectedService" }, - "8562": { + "8565": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "options" }, - "8563": { + "8566": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "parseShallowResponse" }, - "8564": { + "8567": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "parseShallowResponse" }, - "8565": { + "8568": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "iter" }, - "8566": { + "8569": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "parseUploadPackResponse" }, - "8567": { + "8570": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "parseUploadPackResponse" }, - "8568": { + "8571": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "source" }, - "8569": { + "8572": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "options" }, - "8570": { + "8573": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "__type" }, - "8571": { + "8574": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "__type.sideBand" }, - "8572": { + "8575": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "__type.onProgress" }, - "8573": { + "8576": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "__type" }, - "8574": { + "8577": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "__type" }, - "8575": { + "8578": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "text" }, - "8576": { + "8579": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/upload-pack.ts", "qualifiedName": "__type.expectShallow" }, - "8577": { + "8580": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "buildLsRefsRequest" }, - "8578": { + "8581": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "buildLsRefsRequest" }, - "8579": { + "8582": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "options" }, - "8580": { + "8583": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "buildV2FetchRequest" }, - "8581": { + "8584": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "buildV2FetchRequest" }, - "8582": { + "8585": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "options" }, - "8583": { + "8586": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "encodeCommandRequest" }, - "8584": { + "8587": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "encodeCommandRequest" }, - "8585": { + "8588": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "command" }, - "8586": { + "8589": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "args" }, - "8587": { + "8590": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "payloads" }, - "8588": { + "8591": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "objectFormat" }, - "8589": { + "8592": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "LsRefsRequestOptions" }, - "8590": { + "8593": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "LsRefsRequestOptions.symrefs" }, - "8591": { + "8594": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "LsRefsRequestOptions.peel" }, - "8592": { + "8595": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "LsRefsRequestOptions.refPrefixes" }, - "8593": { + "8596": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "LsRefsRequestOptions.objectFormat" }, - "8594": { + "8597": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "parseLsRefsResponse" }, - "8595": { + "8598": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "parseLsRefsResponse" }, - "8596": { + "8599": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/ls-refs.ts", "qualifiedName": "pktStream" }, - "8597": { + "8600": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "parseV2Capabilities" }, - "8598": { + "8601": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "parseV2Capabilities" }, - "8599": { + "8602": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "pktStream" }, - "8600": { + "8603": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "parseV2FetchResponse" }, - "8601": { + "8604": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "parseV2FetchResponse" }, - "8602": { + "8605": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "pktStream" }, - "8603": { + "8606": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "options" }, - "8604": { + "8607": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "readSections" }, - "8605": { + "8608": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "readSections" }, - "8606": { + "8609": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "pktStream" }, - "8607": { + "8610": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "Section" }, - "8609": { + "8612": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "__type.name" }, - "8610": { + "8613": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "__type.lines" }, - "8611": { + "8614": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/sections.ts", "qualifiedName": "SectionName" }, - "8612": { + "8615": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "supportsV2Fetch" }, - "8613": { + "8616": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "supportsV2Fetch" }, - "8614": { + "8617": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "caps" }, - "8615": { + "8618": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "V2Capabilities" }, - "8617": { + "8620": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "__type.version" }, - "8618": { + "8621": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "__type.agent" }, - "8619": { + "8622": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "__type.commands" }, - "8620": { + "8623": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "__type.fetchFeatures" }, - "8621": { + "8624": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/capabilities.ts", "qualifiedName": "__type.objectFormat" }, - "8622": { + "8625": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchRequestOptions" }, - "8623": { + "8626": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchRequestOptions.wants" }, - "8624": { + "8627": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchRequestOptions.haves" }, - "8625": { + "8628": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchRequestOptions.args" }, - "8626": { + "8629": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchRequestOptions.done" }, - "8627": { + "8630": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchRequestOptions.objectFormat" }, - "8628": { + "8631": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchResponse" }, - "8629": { + "8632": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchResponse.acks" }, - "8630": { + "8633": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchResponse.nak" }, - "8631": { + "8634": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchResponse.ready" }, - "8632": { + "8635": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchResponse.packBody" }, - "8633": { + "8636": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchResponse.shallow" }, - "8634": { + "8637": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchResponse.unshallow" }, - "8635": { + "8638": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "V2FetchResponse.wantedRefs" }, - "8636": { + "8639": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "WantedRef" }, - "8637": { + "8640": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "WantedRef.id" }, - "8638": { + "8641": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/protocol/v2/fetch.ts", "qualifiedName": "WantedRef.name" }, - "8639": { + "8642": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/approxidate.ts", "qualifiedName": "parseApproxidate" }, - "8640": { + "8643": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/approxidate.ts", "qualifiedName": "parseApproxidate" }, - "8641": { + "8644": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/approxidate.ts", "qualifiedName": "text" }, - "8642": { + "8645": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/approxidate.ts", "qualifiedName": "now" }, - "8643": { + "8646": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "ReflogError" }, - "8644": { + "8647": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type" }, - "8645": { + "8648": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type.code" }, - "8646": { + "8649": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type.reason" }, - "8647": { + "8650": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type" }, - "8648": { + "8651": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type.code" }, - "8649": { + "8652": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type.ref" }, - "8650": { + "8653": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type" }, - "8651": { + "8654": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type.code" }, - "8652": { + "8655": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type.ref" }, - "8653": { + "8656": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type.requested" }, - "8654": { + "8657": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "__type.available" }, - "8655": { + "8658": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "invalidReflogEntry" }, - "8656": { + "8659": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "invalidReflogEntry" }, - "8657": { + "8660": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "reason" }, - "8658": { + "8661": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "reflogEntryOutOfRange" }, - "8659": { + "8662": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "reflogEntryOutOfRange" }, - "8660": { + "8663": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "ref" }, - "8661": { + "8664": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "requested" }, - "8662": { + "8665": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "available" }, - "8663": { + "8666": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "reflogNotFound" }, - "8664": { + "8667": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "reflogNotFound" }, - "8665": { + "8668": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/error.ts", "qualifiedName": "ref" }, - "8666": { + "8669": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/index.ts", "qualifiedName": "ReflogEntry" }, - "8667": { + "8670": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "parseReflog" }, - "8668": { + "8671": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "parseReflog" }, - "8669": { + "8672": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "text" }, - "8670": { + "8673": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "hexLength" }, - "8671": { + "8674": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "parseReflogLine" }, - "8672": { + "8675": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "parseReflogLine" }, - "8673": { + "8676": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "line" }, - "8674": { + "8677": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "hexLength" }, - "8675": { + "8678": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "sanitizeReflogMessage" }, - "8676": { + "8679": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "sanitizeReflogMessage" }, - "8677": { + "8680": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "message" }, - "8678": { + "8681": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "serializeReflogLine" }, - "8679": { + "8682": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "serializeReflogLine" }, - "8680": { + "8683": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "entry" }, - "8681": { + "8684": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/reflog-format.ts", "qualifiedName": "hexLength" }, - "8682": { + "8685": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/should-log.ts", "qualifiedName": "LogAllRefUpdates" }, - "8683": { + "8686": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/should-log.ts", "qualifiedName": "LogAllRefUpdates.logAllRefUpdates" }, - "8684": { + "8687": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/should-log.ts", "qualifiedName": "LogAllRefUpdates.bare" }, - "8685": { + "8688": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/should-log.ts", "qualifiedName": "shouldAutocreateReflog" }, - "8686": { + "8689": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/should-log.ts", "qualifiedName": "shouldAutocreateReflog" }, - "8687": { + "8690": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/should-log.ts", "qualifiedName": "ref" }, - "8688": { + "8691": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/reflog/should-log.ts", "qualifiedName": "cfg" }, - "8689": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "RefsError" - }, - "8690": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type" - }, - "8691": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.code" - }, "8692": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "RefsError" }, "8693": { "packageName": "@scolladon/tsgit", @@ -209126,27 +209173,27 @@ "8698": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.check" + "qualifiedName": "__type.reason" }, "8699": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "8700": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8701": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.check" }, "8702": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.name" + "qualifiedName": "__type.reason" }, "8703": { "packageName": "@scolladon/tsgit", @@ -209161,22 +209208,22 @@ "8705": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.depth" + "qualifiedName": "__type.name" }, "8706": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.chain" + "qualifiedName": "__type" }, "8707": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8708": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.depth" }, "8709": { "packageName": "@scolladon/tsgit", @@ -209196,7 +209243,7 @@ "8712": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.name" + "qualifiedName": "__type.chain" }, "8713": { "packageName": "@scolladon/tsgit", @@ -209216,62 +209263,62 @@ "8716": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.expected" + "qualifiedName": "__type" }, "8717": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.actual" + "qualifiedName": "__type.code" }, "8718": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.name" }, "8719": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.expected" }, "8720": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.stack" + "qualifiedName": "__type.actual" }, "8721": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "8722": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "ReftableCheck" + "qualifiedName": "__type.code" }, "8723": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "invalidPackedRefs" + "qualifiedName": "__type.stack" }, "8724": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "invalidPackedRefs" + "qualifiedName": "__type.reason" }, "8725": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "reason" + "qualifiedName": "ReftableCheck" }, "8726": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "invalidRef" + "qualifiedName": "invalidPackedRefs" }, "8727": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "invalidRef" + "qualifiedName": "invalidPackedRefs" }, "8728": { "packageName": "@scolladon/tsgit", @@ -209281,952 +209328,952 @@ "8729": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "invalidReftable" + "qualifiedName": "invalidRef" }, "8730": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "invalidReftable" + "qualifiedName": "invalidRef" }, "8731": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "check" + "qualifiedName": "reason" }, "8732": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "reason" + "qualifiedName": "invalidReftable" }, "8733": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "reftableLocked" + "qualifiedName": "invalidReftable" }, "8734": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "reftableLocked" + "qualifiedName": "check" }, "8735": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "stack" + "qualifiedName": "reason" }, "8736": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/error.ts", - "qualifiedName": "reason" + "qualifiedName": "reftableLocked" }, "8737": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/refs/error.ts", + "qualifiedName": "reftableLocked" + }, + "8738": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/refs/error.ts", + "qualifiedName": "stack" + }, + "8739": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/refs/error.ts", + "qualifiedName": "reason" + }, + "8740": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/loose-ref.ts", "qualifiedName": "parseLooseRef" }, - "8738": { + "8741": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/loose-ref.ts", "qualifiedName": "parseLooseRef" }, - "8739": { + "8742": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/loose-ref.ts", "qualifiedName": "content" }, - "8740": { + "8743": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/loose-ref.ts", "qualifiedName": "serializeDirectRef" }, - "8741": { + "8744": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/loose-ref.ts", "qualifiedName": "serializeDirectRef" }, - "8742": { + "8745": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/loose-ref.ts", "qualifiedName": "id" }, - "8743": { + "8746": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/loose-ref.ts", "qualifiedName": "serializeSymbolicRef" }, - "8744": { + "8747": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/loose-ref.ts", "qualifiedName": "serializeSymbolicRef" }, - "8745": { + "8748": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/loose-ref.ts", "qualifiedName": "target" }, - "8746": { + "8749": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/packed-refs.ts", "qualifiedName": "parsePackedRefs" }, - "8747": { + "8750": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/packed-refs.ts", "qualifiedName": "parsePackedRefs" }, - "8748": { + "8751": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/packed-refs.ts", "qualifiedName": "content" }, - "8749": { + "8752": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/packed-refs.ts", "qualifiedName": "serializePackedRefs" }, - "8750": { + "8753": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/packed-refs.ts", "qualifiedName": "serializePackedRefs" }, - "8751": { + "8754": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/packed-refs.ts", "qualifiedName": "refs" }, - "8752": { + "8755": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/peel.ts", "qualifiedName": "PeelResult" }, - "8753": { + "8756": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/peel.ts", "qualifiedName": "PeelResult.type" }, - "8754": { + "8757": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/peel.ts", "qualifiedName": "PeelResult.id" }, - "8755": { + "8758": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/peel.ts", "qualifiedName": "peelOneLevel" }, - "8756": { + "8759": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/peel.ts", "qualifiedName": "peelOneLevel" }, - "8757": { + "8760": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/peel.ts", "qualifiedName": "object" }, - "8758": { + "8761": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/per-worktree-ref.ts", "qualifiedName": "isPerWorktreeRef" }, - "8759": { + "8762": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/per-worktree-ref.ts", "qualifiedName": "isPerWorktreeRef" }, - "8760": { + "8763": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/per-worktree-ref.ts", "qualifiedName": "name" }, - "8761": { + "8764": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-candidates.ts", "qualifiedName": "refCandidates" }, - "8762": { + "8765": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-candidates.ts", "qualifiedName": "refCandidates" }, - "8763": { + "8766": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-candidates.ts", "qualifiedName": "base" }, - "8764": { + "8767": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "DirectRef" }, - "8765": { + "8768": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "DirectRef.type" }, - "8766": { + "8769": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "DirectRef.target" }, - "8767": { + "8770": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "LooseRef" }, - "8768": { + "8771": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "PackedRefEntry" }, - "8769": { + "8772": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "PackedRefEntry.name" }, - "8770": { + "8773": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "PackedRefEntry.id" }, - "8771": { + "8774": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "PackedRefEntry.peeled" }, - "8772": { + "8775": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "PackedRefs" }, - "8773": { + "8776": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "PackedRefs.entries" }, - "8774": { + "8777": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "PackedRefs.peeling" }, - "8775": { + "8778": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "PackedRefs.sorted" }, - "8776": { + "8779": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "SymbolicRef" }, - "8777": { + "8780": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "SymbolicRef.type" }, - "8778": { + "8781": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-types.ts", "qualifiedName": "SymbolicRef.target" }, - "8779": { + "8782": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-validation.ts", "qualifiedName": "isSafeRefName" }, - "8780": { + "8783": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-validation.ts", "qualifiedName": "isSafeRefName" }, - "8781": { + "8784": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-validation.ts", "qualifiedName": "name" }, - "8782": { + "8785": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-validation.ts", "qualifiedName": "validateRefName" }, - "8783": { + "8786": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-validation.ts", "qualifiedName": "validateRefName" }, - "8784": { + "8787": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/ref-validation.ts", "qualifiedName": "name" }, - "8785": { + "8788": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "ReftableRefRecord" }, - "8786": { + "8789": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "ReftableRefRecord.name" }, - "8787": { + "8790": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "ReftableRefRecord.updateIndex" }, - "8788": { + "8791": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "ReftableRefRecord.value" }, - "8789": { + "8792": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "ReftableRefValue" }, - "8790": { + "8793": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type" }, - "8791": { + "8794": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type.kind" }, - "8792": { + "8795": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type" }, - "8793": { + "8796": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type.kind" }, - "8794": { + "8797": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type.id" }, - "8795": { + "8798": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type" }, - "8796": { + "8799": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type.kind" }, - "8797": { + "8800": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type.id" }, - "8798": { + "8801": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type.peeled" }, - "8799": { + "8802": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type" }, - "8800": { + "8803": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type.kind" }, - "8801": { + "8804": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "__type.target" }, - "8802": { + "8805": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "iterateReftableRefs" }, - "8803": { + "8806": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "iterateReftableRefs" }, - "8804": { + "8807": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "table" }, - "8805": { + "8808": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "lookupReftableRef" }, - "8806": { + "8809": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "lookupReftableRef" }, - "8807": { + "8810": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "table" }, - "8808": { + "8811": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-block.ts", "qualifiedName": "name" }, - "8809": { + "8812": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "CompactionSegment" }, - "8810": { + "8813": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "CompactionSegment.start" }, - "8811": { + "8814": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "CompactionSegment.end" }, - "8812": { + "8815": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "compactionMetric" }, - "8813": { + "8816": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "compactionMetric" }, - "8814": { + "8817": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "fileSize" }, - "8815": { + "8818": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "version" }, - "8816": { + "8819": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "DEFAULT_GEOMETRIC_FACTOR" }, - "8817": { + "8820": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "suggestCompactionSegment" }, - "8818": { + "8821": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "suggestCompactionSegment" }, - "8819": { + "8822": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "sizes" }, - "8820": { + "8823": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-compaction.ts", "qualifiedName": "factor" }, - "8821": { + "8824": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "Reftable" }, - "8822": { + "8825": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "Reftable.header" }, - "8823": { + "8826": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "Reftable.footer" }, - "8824": { + "8827": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "Reftable._bytes" }, - "8825": { + "8828": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "Reftable._view" }, - "8826": { + "8829": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableFooter" }, - "8827": { + "8830": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableFooter.refIndexPosition" }, - "8828": { + "8831": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableFooter.objPosition" }, - "8829": { + "8832": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableFooter.objIdLength" }, - "8830": { + "8833": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableFooter.objIndexPosition" }, - "8831": { + "8834": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableFooter.logPosition" }, - "8832": { + "8835": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableFooter.logIndexPosition" }, - "8833": { + "8836": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableHeader" }, - "8834": { + "8837": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableHeader.version" }, - "8835": { + "8838": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableHeader.blockSize" }, - "8836": { + "8839": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableHeader.minUpdateIndex" }, - "8837": { + "8840": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableHeader.maxUpdateIndex" }, - "8838": { + "8841": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableHeader.hashId" }, - "8839": { + "8842": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableHeader.headerLength" }, - "8840": { + "8843": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "ReftableHeader.digestLength" }, - "8841": { + "8844": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "parseReftable" }, - "8842": { + "8845": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "parseReftable" }, - "8843": { + "8846": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "bytes" }, - "8844": { + "8847": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "readMagicAndVersion" }, - "8845": { + "8848": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "readMagicAndVersion" }, - "8846": { + "8849": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "prefix" }, - "8847": { + "8850": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "fileByteLength" }, - "8848": { + "8851": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "__type" }, - "8849": { + "8852": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "__type.version" }, - "8850": { + "8853": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "InflateAt" }, - "8851": { + "8854": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "__type" }, - "8852": { + "8855": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "__type" }, - "8853": { + "8856": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "__type" }, - "8854": { + "8857": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "__type.output" }, - "8855": { + "8858": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "__type.bytesConsumed" }, - "8856": { + "8859": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "bytes" }, - "8857": { + "8860": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "offset" }, - "8858": { + "8861": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "maxOutputBytes" }, - "8859": { + "8862": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "LoadedReftable" }, - "8860": { + "8863": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "LoadedReftable.logBlocks" }, - "8861": { + "8864": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "Reftable.header" }, - "8862": { + "8865": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "Reftable.footer" }, - "8863": { + "8866": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "Reftable._bytes" }, - "8864": { + "8867": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-format.ts", "qualifiedName": "Reftable._view" }, - "8865": { + "8868": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "ReftableLogRecord" }, - "8866": { + "8869": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "ReftableLogRecord.name" }, - "8867": { + "8870": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "ReftableLogRecord.updateIndex" }, - "8868": { + "8871": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "ReftableLogRecord.entry" }, - "8869": { + "8872": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "__type" }, - "8870": { + "8873": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "__type.kind" }, - "8871": { + "8874": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "__type" }, - "8872": { + "8875": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "__type.kind" }, - "8873": { + "8876": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "iterateReftableLogs" }, - "8874": { + "8877": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "iterateReftableLogs" }, - "8875": { + "8878": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "table" }, - "8876": { + "8879": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "name" }, - "8877": { + "8880": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "loadReftable" }, - "8878": { + "8881": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "loadReftable" }, - "8879": { + "8882": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "bytes" }, - "8880": { + "8883": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "inflateAt" }, - "8881": { + "8884": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-log.ts", "qualifiedName": "budget" }, - "8882": { + "8885": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack" }, - "8883": { + "8886": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack.tables" }, - "8884": { + "8887": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack.maxUpdateIndex" }, - "8885": { + "8888": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack.lookup" }, - "8886": { + "8889": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack.lookup" }, - "8887": { + "8890": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "name" }, - "8888": { + "8891": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack.names" }, - "8889": { + "8892": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack.names" }, - "8890": { + "8893": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack.entries" }, - "8891": { + "8894": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack.entries" }, - "8892": { + "8895": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack.logs" }, - "8893": { + "8896": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "ReftableStack.logs" }, - "8894": { + "8897": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "name" }, - "8895": { + "8898": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "createReftableStack" }, - "8896": { + "8899": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "createReftableStack" }, - "8897": { + "8900": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-stack.ts", "qualifiedName": "tables" }, - "8898": { + "8901": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "ReftableWriteOptions" }, - "8899": { + "8902": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "ReftableWriteOptions.hashId" }, - "8900": { + "8903": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "ReftableWriteOptions.blockSize" }, - "8901": { + "8904": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "ReftableWriteOptions.restartInterval" }, - "8902": { + "8905": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "ReftableWriteOptions.indexObjects" }, - "8903": { + "8906": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "ReftableWriteOptions.minUpdateIndex" }, - "8904": { + "8907": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "ReftableWriteOptions.maxUpdateIndex" }, - "8905": { + "8908": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "buildReftableRefSection" }, - "8906": { + "8909": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "buildReftableRefSection" }, - "8907": { + "8910": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "refs" }, - "8908": { + "8911": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "options" }, - "8909": { + "8912": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "serializeReftable" }, - "8910": { + "8913": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "serializeReftable" }, - "8911": { + "8914": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "refs" }, - "8912": { + "8915": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "logs" }, - "8913": { + "8916": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "options" }, - "8914": { + "8917": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/refs/reftable/reftable-writer.ts", "qualifiedName": "deflate" }, - "8915": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "RepositoryError" - }, - "8916": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type" - }, - "8917": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.code" - }, "8918": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "RepositoryError" }, "8919": { "packageName": "@scolladon/tsgit", @@ -210241,7 +210288,7 @@ "8921": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.operation" + "qualifiedName": "__type.path" }, "8922": { "packageName": "@scolladon/tsgit", @@ -210271,7 +210318,7 @@ "8927": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.gitDir" + "qualifiedName": "__type.operation" }, "8928": { "packageName": "@scolladon/tsgit", @@ -210286,27 +210333,27 @@ "8930": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.value" + "qualifiedName": "__type.gitDir" }, "8931": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.gitDir" + "qualifiedName": "__type" }, "8932": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8933": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.value" }, "8934": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.gitDir" }, "8935": { "packageName": "@scolladon/tsgit", @@ -210321,7 +210368,7 @@ "8937": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.version" + "qualifiedName": "__type.path" }, "8938": { "packageName": "@scolladon/tsgit", @@ -210341,832 +210388,832 @@ "8941": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.extensions" + "qualifiedName": "__type" }, "8942": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8943": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.version" }, "8944": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.extension" + "qualifiedName": "__type.extensions" }, "8945": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.value" + "qualifiedName": "__type" }, "8946": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8947": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.extension" }, "8948": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.path" + "qualifiedName": "__type.value" }, "8949": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.foreignPath" + "qualifiedName": "__type" }, "8950": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "8951": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.path" }, "8952": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "__type.gitDir" + "qualifiedName": "__type.foreignPath" }, "8953": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "alreadyInitialized" + "qualifiedName": "__type" }, "8954": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "alreadyInitialized" + "qualifiedName": "__type.code" }, "8955": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "path" + "qualifiedName": "__type.gitDir" }, "8956": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "bareRepository" + "qualifiedName": "alreadyInitialized" }, "8957": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "bareRepository" + "qualifiedName": "alreadyInitialized" }, "8958": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "operation" + "qualifiedName": "path" }, "8959": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "notARepository" + "qualifiedName": "bareRepository" }, "8960": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "notARepository" + "qualifiedName": "bareRepository" }, "8961": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "path" + "qualifiedName": "operation" }, "8962": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "workTreeConfigInvalid" + "qualifiedName": "notARepository" }, "8963": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "workTreeConfigInvalid" + "qualifiedName": "notARepository" }, "8964": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "gitDir" + "qualifiedName": "path" }, "8965": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "workTreeRequired" + "qualifiedName": "workTreeConfigInvalid" }, "8966": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "workTreeRequired" + "qualifiedName": "workTreeConfigInvalid" }, "8967": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/repository/error.ts", - "qualifiedName": "operation" + "qualifiedName": "gitDir" }, "8968": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/repository/error.ts", + "qualifiedName": "workTreeRequired" + }, + "8969": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/repository/error.ts", + "qualifiedName": "workTreeRequired" + }, + "8970": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/repository/error.ts", + "qualifiedName": "operation" + }, + "8971": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "buildConeSpec" }, - "8969": { + "8972": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "buildConeSpec" }, - "8970": { + "8973": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "dirs" }, - "8971": { + "8974": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type" }, - "8972": { + "8975": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.mode" }, - "8973": { + "8976": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.recursive" }, - "8974": { + "8977": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.parents" }, - "8975": { + "8978": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "coneMatcher" }, - "8976": { + "8979": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "coneMatcher" }, - "8977": { + "8980": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "spec" }, - "8978": { + "8981": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type" }, - "8979": { + "8982": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.mode" }, - "8980": { + "8983": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.recursive" }, - "8981": { + "8984": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.parents" }, - "8982": { + "8985": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "parseCone" }, - "8983": { + "8986": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "parseCone" }, - "8984": { + "8987": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "text" }, - "8985": { + "8988": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type" }, - "8986": { + "8989": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.mode" }, - "8987": { + "8990": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.recursive" }, - "8988": { + "8991": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.parents" }, - "8989": { + "8992": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "serializeCone" }, - "8990": { + "8993": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "serializeCone" }, - "8991": { + "8994": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/cone.ts", "qualifiedName": "spec" }, - "8992": { + "8995": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type" }, - "8993": { + "8996": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.mode" }, - "8994": { + "8997": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.recursive" }, - "8995": { + "8998": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.parents" }, - "8996": { + "8999": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/non-cone.ts", "qualifiedName": "compileSparseRule" }, - "8997": { + "9000": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/non-cone.ts", "qualifiedName": "compileSparseRule" }, - "8998": { + "9001": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/non-cone.ts", "qualifiedName": "tokenized" }, - "8999": { + "9002": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/non-cone.ts", "qualifiedName": "source" }, - "9000": { + "9003": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/non-cone.ts", "qualifiedName": "nonConeMatcher" }, - "9001": { + "9004": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/non-cone.ts", "qualifiedName": "nonConeMatcher" }, - "9002": { + "9005": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/non-cone.ts", "qualifiedName": "rules" }, - "9003": { + "9006": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "buildSparseMatcher" }, - "9004": { + "9007": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "buildSparseMatcher" }, - "9005": { + "9008": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "spec" }, - "9006": { + "9009": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "MAX_SPARSE_PATTERN_BYTES" }, - "9007": { + "9010": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "MAX_SPARSE_PATTERNS" }, - "9008": { + "9011": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "ParsedSparseCheckout" }, - "9009": { + "9012": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "ParsedSparseCheckout.spec" }, - "9010": { + "9013": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "ParsedSparseCheckout.degraded" }, - "9011": { + "9014": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "parseSparseCheckout" }, - "9012": { + "9015": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "parseSparseCheckout" }, - "9013": { + "9016": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "text" }, - "9014": { + "9017": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/parse-sparse-checkout.ts", "qualifiedName": "coneRequested" }, - "9015": { + "9018": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/index.ts", "qualifiedName": "SparseMatcher" }, - "9016": { + "9019": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "SparseRule" }, - "9017": { + "9020": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "SparseRule.source" }, - "9018": { + "9021": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "SparseRule.negated" }, - "9019": { + "9022": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "SparseRule.matcher" }, - "9020": { + "9023": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "SparseSpec" }, - "9021": { + "9024": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type" }, - "9022": { + "9025": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.mode" }, - "9023": { + "9026": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.recursive" }, - "9024": { + "9027": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.parents" }, - "9025": { + "9028": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type" }, - "9026": { + "9029": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.mode" }, - "9027": { + "9030": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/sparse/sparse-pattern.ts", "qualifiedName": "__type.rules" }, - "9028": { + "9031": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "BitmapEntryHeader" }, - "9029": { + "9032": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "BitmapEntryHeader.position" }, - "9030": { + "9033": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "BitmapEntryHeader.xorOffset" }, - "9031": { + "9034": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "BitmapEntryHeader.flags" }, - "9032": { + "9035": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "BitmapEntryHeader.stream" }, - "9033": { + "9036": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "PackBitmap" }, - "9034": { + "9037": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "PackBitmap.version" }, - "9035": { + "9038": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "PackBitmap.optionFlags" }, - "9036": { + "9039": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "PackBitmap.entryCount" }, - "9037": { + "9040": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "PackBitmap.digestLength" }, - "9038": { + "9041": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "PackBitmap.checksum" }, - "9039": { + "9042": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "PackBitmap.typeStreams" }, - "9040": { + "9043": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "PackBitmap.entriesOffset" }, - "9041": { + "9044": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "PackBitmap._bytes" }, - "9042": { + "9045": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "PackBitmap._view" }, - "9043": { + "9046": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "bitmapEntryHeaders" }, - "9044": { + "9047": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "bitmapEntryHeaders" }, - "9045": { + "9048": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "bitmap" }, - "9046": { + "9049": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "parsePackBitmap" }, - "9047": { + "9050": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "parsePackBitmap" }, - "9048": { + "9051": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "bytes" }, - "9049": { + "9052": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/bitmap.ts", "qualifiedName": "digestLength" }, - "9050": { + "9053": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/crc32.ts", "qualifiedName": "crc32" }, - "9051": { + "9054": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/crc32.ts", "qualifiedName": "crc32" }, - "9052": { + "9055": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/crc32.ts", "qualifiedName": "data" }, - "9053": { + "9056": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "CRUFT_MTIMES_MAGIC" }, - "9054": { + "9057": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "parseCruftMtimes" }, - "9055": { + "9058": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "parseCruftMtimes" }, - "9056": { + "9059": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "bytes" }, - "9057": { + "9060": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "oidsInIndexOrder" }, - "9058": { + "9061": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "selfChecksum" }, - "9059": { + "9062": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "serializeCruftMtimes" }, - "9060": { + "9063": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "serializeCruftMtimes" }, - "9061": { + "9064": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "sorted" }, - "9062": { + "9065": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "packChecksum" }, - "9063": { + "9066": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "mtimeAt" }, - "9064": { + "9067": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "__type" }, - "9065": { + "9068": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "__type" }, - "9066": { + "9069": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/cruft-pack.ts", "qualifiedName": "ordinal" }, - "9067": { + "9070": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "CopyInstruction" }, - "9068": { + "9071": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "CopyInstruction.type" }, - "9069": { + "9072": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "CopyInstruction.offset" }, - "9070": { + "9073": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "CopyInstruction.size" }, - "9071": { + "9074": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "DeltaInstruction" }, - "9072": { + "9075": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "DeltaParsed" }, - "9073": { + "9076": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "DeltaParsed.sourceLength" }, - "9074": { + "9077": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "DeltaParsed.targetLength" }, - "9075": { + "9078": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "DeltaParsed.instructions" }, - "9076": { + "9079": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "InsertInstruction" }, - "9077": { + "9080": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "InsertInstruction.type" }, - "9078": { + "9081": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "InsertInstruction.data" }, - "9079": { + "9082": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "applyDelta" }, - "9080": { + "9083": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "applyDelta" }, - "9081": { + "9084": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "base" }, - "9082": { + "9085": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "delta" }, - "9083": { + "9086": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "parseDelta" }, - "9084": { + "9087": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "parseDelta" }, - "9085": { + "9088": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "delta" }, - "9086": { + "9089": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "readDeltaTargetSize" }, - "9087": { + "9090": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "readDeltaTargetSize" }, - "9088": { + "9091": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta.ts", "qualifiedName": "delta" }, - "9089": { + "9092": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta-encode.ts", "qualifiedName": "encodeDelta" }, - "9090": { + "9093": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta-encode.ts", "qualifiedName": "encodeDelta" }, - "9091": { + "9094": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta-encode.ts", "qualifiedName": "base" }, - "9092": { + "9095": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta-encode.ts", "qualifiedName": "target" }, - "9093": { + "9096": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta-encode.ts", "qualifiedName": "maxSize" }, - "9094": { + "9097": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta-encode.ts", "qualifiedName": "serializeDelta" }, - "9095": { + "9098": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta-encode.ts", "qualifiedName": "serializeDelta" }, - "9096": { + "9099": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta-encode.ts", "qualifiedName": "sourceLength" }, - "9097": { + "9100": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta-encode.ts", "qualifiedName": "targetLength" }, - "9098": { + "9101": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/delta-encode.ts", "qualifiedName": "instructions" }, - "9099": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "BitmapCheck" - }, - "9100": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "CruftMtimesCheck" - }, - "9101": { - "packageName": "@scolladon/tsgit", - "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "MidxCheck" - }, "9102": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "RevIndexCheck" + "qualifiedName": "BitmapCheck" }, "9103": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "StorageError" + "qualifiedName": "CruftMtimesCheck" }, "9104": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type" + "qualifiedName": "MidxCheck" }, "9105": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "RevIndexCheck" }, "9106": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "StorageError" }, "9107": { "packageName": "@scolladon/tsgit", @@ -211196,22 +211243,22 @@ "9112": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.offset" + "qualifiedName": "__type.reason" }, "9113": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type" }, "9114": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "9115": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.offset" }, "9116": { "packageName": "@scolladon/tsgit", @@ -211231,7 +211278,7 @@ "9119": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.depth" + "qualifiedName": "__type.reason" }, "9120": { "packageName": "@scolladon/tsgit", @@ -211246,102 +211293,102 @@ "9122": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.depth" }, "9123": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.check" + "qualifiedName": "__type" }, "9124": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "9125": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.reason" }, "9126": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.check" }, "9127": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.check" + "qualifiedName": "__type" }, "9128": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "9129": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.reason" }, "9130": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.check" }, "9131": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.check" + "qualifiedName": "__type" }, "9132": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type" + "qualifiedName": "__type.code" }, "9133": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.code" + "qualifiedName": "__type.reason" }, "9134": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.reason" + "qualifiedName": "__type.check" }, "9135": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "__type.check" + "qualifiedName": "__type" }, "9136": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidCruftMtimes" + "qualifiedName": "__type.code" }, "9137": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidCruftMtimes" + "qualifiedName": "__type.reason" }, "9138": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "check" + "qualifiedName": "__type.check" }, "9139": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "reason" + "qualifiedName": "invalidCruftMtimes" }, "9140": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidDelta" + "qualifiedName": "invalidCruftMtimes" }, "9141": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidDelta" + "qualifiedName": "check" }, "9142": { "packageName": "@scolladon/tsgit", @@ -211351,72 +211398,72 @@ "9143": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidMultiPackIndex" + "qualifiedName": "invalidDelta" }, "9144": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidMultiPackIndex" + "qualifiedName": "invalidDelta" }, "9145": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "check" + "qualifiedName": "reason" }, "9146": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "reason" + "qualifiedName": "invalidMultiPackIndex" }, "9147": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidPackBitmap" + "qualifiedName": "invalidMultiPackIndex" }, "9148": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidPackBitmap" + "qualifiedName": "check" }, "9149": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "check" + "qualifiedName": "reason" }, "9150": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "reason" + "qualifiedName": "invalidPackBitmap" }, "9151": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidPackEntry" + "qualifiedName": "invalidPackBitmap" }, "9152": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidPackEntry" + "qualifiedName": "check" }, "9153": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "offset" + "qualifiedName": "reason" }, "9154": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "reason" + "qualifiedName": "invalidPackEntry" }, "9155": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidPackHeader" + "qualifiedName": "invalidPackEntry" }, "9156": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidPackHeader" + "qualifiedName": "offset" }, "9157": { "packageName": "@scolladon/tsgit", @@ -211426,12 +211473,12 @@ "9158": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidPackIndex" + "qualifiedName": "invalidPackHeader" }, "9159": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidPackIndex" + "qualifiedName": "invalidPackHeader" }, "9160": { "packageName": "@scolladon/tsgit", @@ -211441,1259 +211488,1274 @@ "9161": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidPackRevIndex" + "qualifiedName": "invalidPackIndex" }, "9162": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "invalidPackRevIndex" + "qualifiedName": "invalidPackIndex" }, "9163": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "check" + "qualifiedName": "reason" }, "9164": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/error.ts", - "qualifiedName": "reason" + "qualifiedName": "invalidPackRevIndex" }, "9165": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/storage/error.ts", + "qualifiedName": "invalidPackRevIndex" + }, + "9166": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/storage/error.ts", + "qualifiedName": "check" + }, + "9167": { + "packageName": "@scolladon/tsgit", + "packagePath": "src/domain/storage/error.ts", + "qualifiedName": "reason" + }, + "9168": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "EwahStream" }, - "9166": { + "9169": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "EwahStream.bitSize" }, - "9167": { + "9170": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "EwahStream.wordCount" }, - "9168": { + "9171": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "EwahStream.wordsOffset" }, - "9169": { + "9172": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "EwahStream.endOffset" }, - "9170": { + "9173": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "foldEwahStream" }, - "9171": { + "9174": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "foldEwahStream" }, - "9172": { + "9175": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "bytes" }, - "9173": { + "9176": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "view" }, - "9174": { + "9177": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "stream" }, - "9175": { + "9178": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "into" }, - "9176": { + "9179": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "op" }, - "9177": { + "9180": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "maxSetBitPosition" }, - "9178": { + "9181": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "maxSetBitPosition" }, - "9179": { + "9182": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "bytes" }, - "9180": { + "9183": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "view" }, - "9181": { + "9184": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "stream" }, - "9182": { + "9185": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "readEwahStream" }, - "9183": { + "9186": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "readEwahStream" }, - "9184": { + "9187": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "bytes" }, - "9185": { + "9188": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "view" }, - "9186": { + "9189": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/ewah.ts", "qualifiedName": "at" }, - "9187": { + "9190": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/loose-path.ts", "qualifiedName": "computeLooseObjectPath" }, - "9188": { + "9191": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/loose-path.ts", "qualifiedName": "computeLooseObjectPath" }, - "9189": { + "9192": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/loose-path.ts", "qualifiedName": "id" }, - "9190": { + "9193": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache" }, - "9191": { + "9194": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.V" }, - "9192": { + "9195": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.get" }, - "9193": { + "9196": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.get" }, - "9194": { + "9197": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "key" }, - "9195": { + "9198": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.set" }, - "9196": { + "9199": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.set" }, - "9197": { + "9200": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "key" }, - "9198": { + "9201": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "value" }, - "9199": { + "9202": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "byteSize" }, - "9200": { + "9203": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.has" }, - "9201": { + "9204": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.has" }, - "9202": { + "9205": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "key" }, - "9203": { + "9206": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.delete" }, - "9204": { + "9207": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.delete" }, - "9205": { + "9208": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "key" }, - "9206": { + "9209": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.clear" }, - "9207": { + "9210": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.clear" }, - "9208": { + "9211": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.currentSize" }, - "9209": { + "9212": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.maxSize" }, - "9210": { + "9213": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "LruCache.entryCount" }, - "9211": { + "9214": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "createLruCache" }, - "9212": { + "9215": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "createLruCache" }, - "9213": { + "9216": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "V" }, - "9214": { + "9217": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "maxSizeBytes" }, - "9215": { + "9218": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/lru-cache.ts", "qualifiedName": "maxEntries" }, - "9216": { + "9219": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MidxEntry" }, - "9217": { + "9220": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MidxEntry.packIndex" }, - "9218": { + "9221": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MidxEntry.offset" }, - "9219": { + "9222": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex" }, - "9220": { + "9223": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.version" }, - "9221": { + "9224": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.hashVersion" }, - "9222": { + "9225": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.digestLength" }, - "9223": { + "9226": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.numBaseFiles" }, - "9224": { + "9227": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.objectCount" }, - "9225": { + "9228": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.packNames" }, - "9226": { + "9229": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.oidFanoutOffset" }, - "9227": { + "9230": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.oidLookupOffset" }, - "9228": { + "9231": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.objectOffsetsOffset" }, - "9229": { + "9232": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.largeOffsetsOffset" }, - "9230": { + "9233": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.largeOffsetCount" }, - "9231": { + "9234": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex.reverseIndexOffset" }, - "9232": { + "9235": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex._bytes" }, - "9233": { + "9236": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "MultiPackIndex._view" }, - "9234": { + "9237": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "lookupMidxPosition" }, - "9235": { + "9238": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "lookupMidxPosition" }, - "9236": { + "9239": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midx" }, - "9237": { + "9240": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "id" }, - "9238": { + "9241": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "lookupMultiPackIndex" }, - "9239": { + "9242": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "lookupMultiPackIndex" }, - "9240": { + "9243": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midx" }, - "9241": { + "9244": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "id" }, - "9242": { + "9245": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midxEntryAt" }, - "9243": { + "9246": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midxEntryAt" }, - "9244": { + "9247": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midx" }, - "9245": { + "9248": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "index" }, - "9246": { + "9249": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midxOidAt" }, - "9247": { + "9250": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midxOidAt" }, - "9248": { + "9251": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midx" }, - "9249": { + "9252": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "index" }, - "9250": { + "9253": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midxReverseIndexAt" }, - "9251": { + "9254": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midxReverseIndexAt" }, - "9252": { + "9255": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midx" }, - "9253": { + "9256": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "position" }, - "9254": { + "9257": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midxReverseIndexPositions" }, - "9255": { + "9258": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midxReverseIndexPositions" }, - "9256": { + "9259": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "midx" }, - "9257": { + "9260": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "parseMultiPackIndex" }, - "9258": { + "9261": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "parseMultiPackIndex" }, - "9259": { + "9262": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "bytes" }, - "9260": { + "9263": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/midx.ts", "qualifiedName": "digestLength" }, - "9261": { + "9264": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "BasePackEntryHeader" }, - "9262": { + "9265": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "BasePackEntryHeader.type" }, - "9263": { + "9266": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "BasePackEntryHeader.size" }, - "9264": { + "9267": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "BasePackEntryHeader.dataOffset" }, - "9265": { + "9268": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "BasePackEntryType" }, - "9266": { + "9269": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "OfsPackEntryHeader" }, - "9267": { + "9270": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "OfsPackEntryHeader.type" }, - "9268": { + "9271": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "OfsPackEntryHeader.size" }, - "9269": { + "9272": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "OfsPackEntryHeader.dataOffset" }, - "9270": { + "9273": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "OfsPackEntryHeader.baseDistance" }, - "9271": { + "9274": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "PackEntryHeader" }, - "9272": { + "9275": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "PackEntryType" }, - "9273": { + "9276": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "PackHeader" }, - "9274": { + "9277": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "PackHeader.version" }, - "9275": { + "9278": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "PackHeader.objectCount" }, - "9276": { + "9279": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "RefPackEntryHeader" }, - "9277": { + "9280": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "RefPackEntryHeader.type" }, - "9278": { + "9281": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "RefPackEntryHeader.size" }, - "9279": { + "9282": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "RefPackEntryHeader.dataOffset" }, - "9280": { + "9283": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "RefPackEntryHeader.baseId" }, - "9281": { + "9284": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "encodeOfsDistance" }, - "9282": { + "9285": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "encodeOfsDistance" }, - "9283": { + "9286": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "distance" }, - "9284": { + "9287": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "encodePackEntryHeader" }, - "9285": { + "9288": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "encodePackEntryHeader" }, - "9286": { + "9289": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "type" }, - "9287": { + "9290": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "size" }, - "9288": { + "9291": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "objectTypeToPackEntryType" }, - "9289": { + "9292": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "objectTypeToPackEntryType" }, - "9290": { + "9293": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "type" }, - "9291": { + "9294": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "PACK_ENTRY_TYPE" }, - "9292": { + "9295": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "__object" }, - "9293": { + "9296": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "__object.COMMIT" }, - "9294": { + "9297": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "__object.TREE" }, - "9295": { + "9298": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "__object.BLOB" }, - "9296": { + "9299": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "__object.TAG" }, - "9297": { + "9300": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "__object.OFS_DELTA" }, - "9298": { + "9301": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "__object.REF_DELTA" }, - "9299": { + "9302": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "packEntryTypeToObjectType" }, - "9300": { + "9303": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "packEntryTypeToObjectType" }, - "9301": { + "9304": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "type" }, - "9302": { + "9305": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "parsePackEntryHeader" }, - "9303": { + "9306": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "parsePackEntryHeader" }, - "9304": { + "9307": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "bytes" }, - "9305": { + "9308": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "offset" }, - "9306": { + "9309": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "hash" }, - "9307": { + "9310": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "parsePackHeader" }, - "9308": { + "9311": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "parsePackHeader" }, - "9309": { + "9312": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "bytes" }, - "9310": { + "9313": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "serializePackHeader" }, - "9311": { + "9314": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "serializePackHeader" }, - "9312": { + "9315": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "version" }, - "9313": { + "9316": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-entry.ts", "qualifiedName": "objectCount" }, - "9314": { + "9317": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "PackIndex" }, - "9315": { + "9318": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "PackIndex.objectCount" }, - "9316": { + "9319": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "PackIndex.digestLength" }, - "9317": { + "9320": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "PackIndex.crc32TableOffset" }, - "9318": { + "9321": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "PackIndex.smallOffsetsTableOffset" }, - "9319": { + "9322": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "PackIndex.largeOffsetsTableOffset" }, - "9320": { + "9323": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "PackIndex.trailerOffset" }, - "9321": { + "9324": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "PackIndex._bytes" }, - "9322": { + "9325": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "PackIndex._view" }, - "9323": { + "9326": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "entryOffsets" }, - "9324": { + "9327": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "entryOffsets" }, - "9325": { + "9328": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "index" }, - "9326": { + "9329": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "entryOffsetsF64" }, - "9327": { + "9330": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "entryOffsetsF64" }, - "9328": { + "9331": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "index" }, - "9329": { + "9332": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "findByPrefix" }, - "9330": { + "9333": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "findByPrefix" }, - "9331": { + "9334": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "index" }, - "9332": { + "9335": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "prefix" }, - "9333": { + "9336": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "lookupPackIndex" }, - "9334": { + "9337": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "lookupPackIndex" }, - "9335": { + "9338": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "index" }, - "9336": { + "9339": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "id" }, - "9337": { + "9340": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "lookupPackIndexPosition" }, - "9338": { + "9341": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "lookupPackIndexPosition" }, - "9339": { + "9342": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "index" }, - "9340": { + "9343": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "id" }, - "9341": { + "9344": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "objectIdAt" }, - "9342": { + "9345": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "objectIdAt" }, - "9343": { + "9346": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "index" }, - "9344": { + "9347": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "position" }, - "9345": { + "9348": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "offsetAtPackPosition" }, - "9346": { + "9349": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "offsetAtPackPosition" }, - "9347": { + "9350": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "index" }, - "9348": { + "9351": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "rev" }, - "9349": { + "9352": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "p" }, - "9350": { + "9353": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "parsePackIndex" }, - "9351": { + "9354": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "parsePackIndex" }, - "9352": { + "9355": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "bytes" }, - "9353": { + "9356": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-index.ts", "qualifiedName": "digestLength" }, - "9354": { + "9357": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "PackIndexEntries" }, - "9355": { + "9358": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "PackIndexEntries.count" }, - "9356": { + "9359": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "PackIndexEntries.digestLength" }, - "9357": { + "9360": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "PackIndexEntries.oids" }, - "9358": { + "9361": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "PackIndexEntries.crcValues" }, - "9359": { + "9362": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "PackIndexEntries.offsets" }, - "9360": { + "9363": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "SortedPackIndex" }, - "9361": { + "9364": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "SortedPackIndex.entries" }, - "9362": { + "9365": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "SortedPackIndex.order" }, - "9363": { + "9366": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "sortPackIndexEntries" }, - "9364": { + "9367": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "sortPackIndexEntries" }, - "9365": { + "9368": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-order.ts", "qualifiedName": "entries" }, - "9366": { + "9369": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackEntryMeta" }, - "9367": { + "9370": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackEntryMeta.crc32" }, - "9368": { + "9371": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackEntryMeta.offset" }, - "9369": { + "9372": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackfileResult" }, - "9370": { + "9373": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackfileResult.data" }, - "9371": { + "9374": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackfileResult.entries" }, - "9372": { + "9375": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackWriterBaseEntry" }, - "9373": { + "9376": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackWriterBaseEntry.type" }, - "9374": { + "9377": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackWriterBaseEntry.uncompressedSize" }, - "9375": { + "9378": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackWriterBaseEntry.compressedData" }, - "9376": { + "9379": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackWriterDeltaEntry" }, - "9377": { + "9380": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackWriterDeltaEntry.type" }, - "9378": { + "9381": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackWriterDeltaEntry.uncompressedSize" }, - "9379": { + "9382": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackWriterDeltaEntry.compressedData" }, - "9380": { + "9383": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackWriterDeltaEntry.baseIndex" }, - "9381": { + "9384": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "PackWriterEntry" }, - "9382": { + "9385": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "serializePackfile" }, - "9383": { + "9386": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "serializePackfile" }, - "9384": { + "9387": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "entries" }, - "9385": { + "9388": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "serializePackIndex" }, - "9386": { + "9389": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "serializePackIndex" }, - "9387": { + "9390": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "sorted" }, - "9388": { + "9391": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/pack-writer.ts", "qualifiedName": "packChecksum" }, - "9389": { + "9392": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "PackRevIndex" }, - "9390": { + "9393": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "PackRevIndex.version" }, - "9391": { + "9394": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "PackRevIndex.hashId" }, - "9392": { + "9395": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "PackRevIndex.digestLength" }, - "9393": { + "9396": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "PackRevIndex.objectCount" }, - "9394": { + "9397": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "PackRevIndex.packChecksum" }, - "9395": { + "9398": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "PackRevIndex._bytes" }, - "9396": { + "9399": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "PackRevIndex._view" }, - "9397": { + "9400": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "parsePackRevIndex" }, - "9398": { + "9401": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "parsePackRevIndex" }, - "9399": { + "9402": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "bytes" }, - "9400": { + "9403": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "digestLength" }, - "9401": { + "9404": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "objectCount" }, - "9402": { + "9405": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "REASON_REV_INDEX_CORRUPT" }, - "9403": { + "9406": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "REASON_REV_INDEX_TOO_SMALL" }, - "9404": { + "9407": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "REV_HEADER_SIZE" }, - "9405": { + "9408": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "revIndexPositionAt" }, - "9406": { + "9409": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "revIndexPositionAt" }, - "9407": { + "9410": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "rev" }, - "9408": { + "9411": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "p" }, - "9409": { + "9412": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "serializePackRevIndex" }, - "9410": { + "9413": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "serializePackRevIndex" }, - "9411": { + "9414": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "sorted" }, - "9412": { + "9415": { "packageName": "@scolladon/tsgit", "packagePath": "src/domain/storage/rev-index.ts", "qualifiedName": "packChecksum" diff --git a/src/application/commands/fetch-missing.ts b/src/application/commands/fetch-missing.ts index 2d58fcb9a..b550b5222 100644 --- a/src/application/commands/fetch-missing.ts +++ b/src/application/commands/fetch-missing.ts @@ -8,7 +8,6 @@ * - `createPromisorRemote` — the `PromisorRemote` port implementation behind * `readObject`'s automatic lazy-fetch; reports `attempted: false` instead. */ -import { TsgitError } from '../../domain/error.js'; import { noPromisorRemote, remoteNotConfigured } from '../../domain/index.js'; import type { ObjectId } from '../../domain/objects/index.js'; import type { Context } from '../../ports/context.js'; @@ -75,9 +74,6 @@ const collectMissing = async ( return missing; }; -const isFileExists = (err: unknown): boolean => - err instanceof TsgitError && err.data.code === 'FILE_EXISTS'; - const fetchMissingInternal = async ( ctx: Context, oids: ReadonlyArray, @@ -109,21 +105,16 @@ const fetchMissingInternal = async ( discovery.advertisement.capabilities, ctx.hashConfig.algorithm, ); - try { - // No `filter`: a lazy-fetch requests exact oids. - await fetchPack(ctx, (c, req) => negotiatePackBytes(c, session, discovery.version, req), { - wants: missing, - haves: [], - capabilities, - progressOp: FETCH_MISSING_OP, - promisor: true, - }); - } catch (err) { - // Packs are content-addressed (`pack-.*`), so any FILE_EXISTS from - // `fetchPack` — on the `.pack`, `.idx`, or `.promisor` write — means a - // concurrent fetch already landed byte-identical artifacts. Tolerate it. - if (!isFileExists(err)) throw err; - } + // No `filter`: a lazy-fetch requests exact oids. A pack another fetch + // landed first is adopted by the receive path itself, so nothing is + // tolerated here — a differing artefact at that name is a refusal. + await fetchPack(ctx, (c, req) => negotiatePackBytes(c, session, discovery.version, req), { + wants: missing, + haves: [], + capabilities, + progressOp: FETCH_MISSING_OP, + promisor: true, + }); } finally { await session.close(); } diff --git a/src/application/primitives/fetch-pack.ts b/src/application/primitives/fetch-pack.ts index a8dff5d88..00633b35c 100644 --- a/src/application/primitives/fetch-pack.ts +++ b/src/application/primitives/fetch-pack.ts @@ -1,27 +1,32 @@ /** - * pack-fetch primitive. Shared between clone (12.1) and the - * forthcoming fetch (12.2) / push (12.3) commands. + * pack-fetch primitive. Shared by clone, fetch and push. * * Performs the `git-upload-pack` POST and streams the side-banded response * straight to a quarantine file (`objects/pack/tmp_pack_`), bounded * by `config.maxResponseBytes` and hashed incrementally as bytes arrive — * the whole pack is never held in memory at once. Once the trailer verifies - * against the incrementally-computed digest, the quarantine file is renamed - * to `pack-.pack` and its `.idx`/`.rev` siblings are written — exactly - * git's own on-disk shape for a received pack. + * against the incrementally-computed digest, the quarantine file lands at + * `pack-.pack` — by rename when the name is free, discarded when an + * identical pack already occupies it, refused when a differing file does — + * and any missing `.idx`/`.rev` sibling is written beside it: exactly + * git's own on-disk shape and finalize posture for a received pack. * * Out of scope here (handled by callers): URL validation, capability * negotiation, ref-update propagation. */ -import { fileExists, TsgitError } from '../../domain/error.js'; -import { bytesToHex } from '../../domain/objects/encoding.js'; +import { fileExists, packArtifactMismatch, TsgitError } from '../../domain/error.js'; +import { bytesEqual, bytesToHex } from '../../domain/objects/encoding.js'; import type { ObjectId } from '../../domain/objects/object-id.js'; -import { invalidPackHeader } from '../../domain/storage/index.js'; +import { invalidPackHeader, type PackIndexEntries } from '../../domain/storage/index.js'; import { PACK_HEADER_SIZE } from '../../domain/storage/pack-entry.js'; import type { Context } from '../../ports/context.js'; import { errorDataCode } from './internal/error-data-code.js'; import { indexQuarantinedPack } from './internal/index-pack.js'; -import { packFilePath, writePackSiblingArtifacts } from './internal/write-pack-artifacts.js'; +import { + packFilePath, + type WrittenPackArtifacts, + writePackSiblingArtifacts, +} from './internal/write-pack-artifacts.js'; import { commonGitDir, packsDir } from './path-layout.js'; import { refreshPackRegistry } from './read-object.js'; @@ -121,11 +126,15 @@ const emptyPackResult = ( /** * Post-download tail: stream the pack into quarantine, verify the trailer, - * walk entries, then either suppress or promote it (rename + sibling - * artefacts). Split out of `fetchPack` so the negotiated response can be - * fully verified (trailer + entry walk) before deciding whether it is - * empty — a malformed pack that merely *looks* empty (bad trailer, - * truncated entries) must still throw, never be silently dropped. + * walk entries, then settle the quarantine copy at its content-addressed + * name (rename, adopt an identical occupant, or refuse a differing one) and + * complete whichever siblings are missing. An empty pack is suppressed and + * an adopted copy discarded as handled outcomes, so the temp-file posture is + * the same across every path. + * Split out of `fetchPack` so the negotiated response can be fully verified + * (trailer + entry walk) before deciding whether it is empty — a malformed + * pack that merely *looks* empty (bad trailer, truncated entries) must still + * throw, never be silently dropped. */ const materializePack = async ( ctx: Context, @@ -133,49 +142,130 @@ const materializePack = async ( input: FetchPackInput, ): Promise => { const packDir = packsDir(commonGitDir(ctx)); - const receipt = await receivePackToQuarantine(ctx, input, packDir, download.packBody); - // git-upload-pack returns a zero-byte body when the client's `have` set - // already covers every wanted oid. This is a legitimate protocol state - // (the server has nothing to send), not an error. Surface it as an - // empty result so the caller can advance refs and return cleanly. - if (receipt.totalBytes === 0) { - return emptyPackResult(download.shallow, download.unshallow); - } + const verified = await receiveVerified(ctx, input, packDir, download.packBody); + if (verified === undefined) return emptyPackResult(download.shallow, download.unshallow); + const { receipt, entries } = verified; + await settleQuarantine(ctx, receipt, packFilePath(packDir, receipt.packSha)); + const written = await writePackSiblingArtifacts(ctx, { + packDir, + entries, + packSha: receipt.packSha, + promisor: input.promisor === true, + }); + // Drop the per-Context pack-registry cache so reads through this same + // handle (e.g. a follow-up merge in `pull`) see the pack now on disk — + // whether this call wrote it or another writer landed it first. + refreshPackRegistry(ctx); + return packResult(written, download); +}; + +interface VerifiedReceipt { + readonly receipt: QuarantineReceipt; + readonly entries: PackIndexEntries; +} + +/** + * Streams the pack into quarantine and indexes it. `undefined` means the + * response carried nothing to land: git-upload-pack returns a zero-byte body + * when the client's `have` set already covers every wanted oid, and a + * verified pack can legitimately carry zero entries (a round-tripped pack + * rather than an empty body). Both are legitimate protocol states, surfaced + * as an empty result so the caller can advance refs and return cleanly — a + * malformed pack that merely *looks* empty still throws from the index pass. + */ +const receiveVerified = async ( + ctx: Context, + input: FetchPackInput, + packDir: string, + body: AsyncIterable, +): Promise => { + const receipt = await receivePackToQuarantine(ctx, input, packDir, body); + if (receipt.totalBytes === 0) return undefined; const entries = await indexQuarantinedPack(ctx, receipt.tmpPath, receipt.totalBytes, (p) => cleanupQuarantine(ctx, p), ); - // A verified pack can legitimately carry zero entries (e.g. the negotiated - // response round-tripped a pack rather than a zero-byte body). Suppress - // promoting it, same as the zero-byte-body guard above. - if (entries.count === 0) { + if (entries.count > 0) return { receipt, entries }; + await cleanupQuarantine(ctx, receipt.tmpPath); + return undefined; +}; + +const packResult = (written: WrittenPackArtifacts, download: PackDownload): FetchPackResult => ({ + packPath: written.packPath, + idxPath: written.idxPath, + objectCount: written.objectCount, + packSha: written.packSha, + shallow: download.shallow, + unshallow: download.unshallow, +}); + +const COMPARE_CHUNK_BYTES = 1 << 20; + +/** Byte-for-byte comparison of two files, one bounded window at a time — + * a pack can be larger than memory, and this runs only on the rare path + * where the destination is already occupied. A non-regular occupant (a + * directory, most concretely) is a mismatch, never a raw read failure: + * the `isFile` check settles that before any window is ever read. */ +const sameFileContents = async (ctx: Context, left: string, right: string): Promise => { + const size = (await ctx.fs.stat(left)).size; + const rightStat = await ctx.fs.stat(right); + if (!rightStat.isFile || rightStat.size !== size) return false; + // Stryker disable next-line EqualityOperator: equivalent — `<=` only adds an iteration when + // `size` is an exact multiple of the window, and that iteration compares two zero-length + // slices, which are equal, then exits; every other size never reaches it. + for (let offset = 0; offset < size; offset += COMPARE_CHUNK_BYTES) { + const length = Math.min(COMPARE_CHUNK_BYTES, size - offset); + const [a, b] = await Promise.all([ + ctx.fs.readSlice(left, offset, length), + ctx.fs.readSlice(right, offset, length), + ]); + if (!bytesEqual(a, b)) return false; + } + return true; +}; + +/** + * Lands the verified quarantine copy at its content-addressed name the way + * git's finalize step does: a free name takes the copy by rename; an + * occupant with identical bytes keeps its place (same inode, same mtime) + * and the copy is discarded; an occupant with differing bytes is refused, + * never overwritten — packs are content-addressed, so a differing file at + * this name is corruption or tampering, not this pack. + */ +const settleQuarantine = async ( + ctx: Context, + receipt: QuarantineReceipt, + destination: string, +): Promise => { + if (!(await ctx.fs.exists(destination))) { + await promoteQuarantine(ctx, receipt.tmpPath, destination); + return; + } + // The quarantine copy must be released on every exit from the compare — + // a concurrent gc removing the occupant (FILE_NOT_FOUND) or an unreadable + // one (PERMISSION_DENIED) must not strand it, so cleanup runs in `finally` + // and the original error, whatever it is, still propagates. + let identical: boolean; + try { + identical = await sameFileContents(ctx, receipt.tmpPath, destination); + } finally { await cleanupQuarantine(ctx, receipt.tmpPath); - return emptyPackResult(download.shallow, download.unshallow); } + if (!identical) throw packArtifactMismatch(destination); +}; + +const promoteQuarantine = async ( + ctx: Context, + tmpPath: string, + destination: string, +): Promise => { try { - await renamePackIntoPlace(ctx, receipt.tmpPath, packFilePath(packDir, receipt.packSha)); + await renamePackIntoPlace(ctx, tmpPath, destination); } catch (err) { // A rename failure leaves the verified quarantine file behind unless - // cleaned up here — nothing later in this function gets a chance to. - await cleanupQuarantine(ctx, receipt.tmpPath); + // cleaned up here — nothing later in the receive gets a chance to. + await cleanupQuarantine(ctx, tmpPath); throw err; } - const written = await writePackSiblingArtifacts(ctx, { - packDir, - entries, - packSha: receipt.packSha, - promisor: input.promisor === true, - }); - // Drop the per-Context pack-registry cache so reads through this same - // handle (e.g. a follow-up merge in `pull`) see the just-written pack. - refreshPackRegistry(ctx); - return { - packPath: written.packPath, - idxPath: written.idxPath, - objectCount: written.objectCount, - packSha: written.packSha, - shallow: download.shallow, - unshallow: download.unshallow, - }; }; /** diff --git a/src/application/primitives/internal/write-pack-artifacts.ts b/src/application/primitives/internal/write-pack-artifacts.ts index 95d59077f..65a7937ae 100644 --- a/src/application/primitives/internal/write-pack-artifacts.ts +++ b/src/application/primitives/internal/write-pack-artifacts.ts @@ -12,7 +12,8 @@ * The gate is resolved before any artefact is created, so a refused config * value leaves the pack directory untouched — see `writeReverseIndex`. */ -import { hexToBytes } from '../../../domain/objects/encoding.js'; +import { packArtifactMismatch } from '../../../domain/error.js'; +import { bytesEqual, hexToBytes } from '../../../domain/objects/encoding.js'; import { type PackIndexEntries, type SortedPackIndex, @@ -140,17 +141,50 @@ interface ArtifactPaths { export const packFilePath = (packDir: string, packSha: string): string => `${packDir}/pack-${packSha}.pack`; +/** The on-disk path for a pack's `.idx` sibling, keyed the same way as + * `packFilePath`. Only `artifactPaths` builds an `ArtifactPaths` record, so + * this stays in-module rather than exported. */ +const packIdxFilePath = (packDir: string, packSha: string): string => + `${packDir}/pack-${packSha}.idx`; + const artifactPaths = (packDir: string, packSha: string): ArtifactPaths => ({ packPath: packFilePath(packDir, packSha), - idxPath: `${packDir}/pack-${packSha}.idx`, + idxPath: packIdxFilePath(packDir, packSha), promisorPath: `${packDir}/pack-${packSha}.promisor`, revPath: `${packDir}/pack-${packSha}.rev`, }); +/** Writes `bytes` at `path` unless an identical artefact already occupies + * it — git's finalize step keeps an identical file in place and reports a + * mismatch on anything else, never overwriting. The stat pre-check runs + * before the occupant is ever read: a non-regular file (a planted FIFO + * would hang the read) or one of a different size (read in full otherwise) + * is a mismatch by shape alone, with no read attempted. */ +const writeOrKeepArtifact = async ( + ctx: Context, + path: string, + bytes: Uint8Array, +): Promise => { + try { + await ctx.fs.writeExclusive(path, bytes); + } catch (err) { + if (errorDataCode(err) !== 'FILE_EXISTS') throw err; + const occupant = await ctx.fs.stat(path); + if (!occupant.isFile || occupant.size !== bytes.length) throw packArtifactMismatch(path); + if (!bytesEqual(await ctx.fs.read(path), bytes)) throw packArtifactMismatch(path); + } +}; + // A promisor pack vouches for the objects it references but omits; the -// empty `.promisor` sentinel marks it so missing objects read as promised. -const writeEmptySentinel = (ctx: Context, path: string): Promise => - ctx.fs.writeExclusive(path, new Uint8Array(0)); +// `.promisor` sentinel marks it so missing objects read as promised. An +// existing sentinel is kept whatever it holds — git writes free-form text there. +const writeSentinelIfAbsent = async (ctx: Context, path: string): Promise => { + try { + await ctx.fs.writeExclusive(path, new Uint8Array(0)); + } catch (err) { + if (errorDataCode(err) !== 'FILE_EXISTS') throw err; + } +}; const writeRevArtifact = async ( ctx: Context, @@ -159,7 +193,7 @@ const writeRevArtifact = async ( packSha: string, ): Promise => { const revBytes = await buildRev(ctx, sorted, packSha); - await ctx.fs.writeExclusive(path, revBytes); + await writeOrKeepArtifact(ctx, path, revBytes); }; export interface WritePackSiblingArtifactsInput { @@ -176,6 +210,8 @@ export interface WritePackSiblingArtifactsInput { * separate from `writePackSiblingArtifacts` so `writePackArtifacts` can * resolve the gate BEFORE writing `.pack` — a refused config value must * leave the pack directory untouched, not just the `.idx`/`.rev` pair. + * Each sibling is written only where its name is free: an identical + * occupant is kept, a differing one is refused — git's finalize posture. */ const writeSiblingsGiven = async ( ctx: Context, @@ -188,8 +224,8 @@ const writeSiblingsGiven = async ( // the sort is the most expensive step of either artefact's assembly. const sorted = sortPackIndexEntries(input.entries); const idxBytes = await buildIdx(ctx, sorted, input.packSha); - await ctx.fs.writeExclusive(paths.idxPath, idxBytes); - if (input.promisor) await writeEmptySentinel(ctx, paths.promisorPath); + await writeOrKeepArtifact(ctx, paths.idxPath, idxBytes); + if (input.promisor) await writeSentinelIfAbsent(ctx, paths.promisorPath); if (wantRev) await writeRevArtifact(ctx, paths.revPath, sorted, input.packSha); return { packPath: paths.packPath, @@ -326,14 +362,21 @@ export const writePackArtifactsViaQuarantine = async ( } if (input.promisor) { - // A same-sha rewrite (Pin W's no-op boundary, promisor class included) - // finds its own sentinel from the PRIOR run still in place at this exact - // path — `writeExclusive` alone would refuse with `FILE_EXISTS`, exactly - // as the `.rev` write below tolerates the same shape of stale sibling. + // Unlike this module's own sibling writers on the receive path — + // `writeOrKeepArtifact` keeps only a byte-identical occupant and refuses + // anything else, `writeSentinelIfAbsent` keeps a sentinel whatever it + // holds — gc's rewrite of a sha it already produced must REPLACE its + // prior-run sentinel and `.rev`: `rmTolerant` clears the stale artefact + // first, so the write below is fresh rather than adopting bytes an + // earlier gc run left behind. await rmTolerant(ctx, paths.promisorPath); - await writeEmptySentinel(ctx, paths.promisorPath); + await writeSentinelIfAbsent(ctx, paths.promisorPath); } if (wantRev) { + // Same REPLACE posture as the sentinel above: any stale `.rev` from a + // prior gc run at this sha is removed first, then rebuilt fresh from + // the entries this call already has — the keep-or-refuse compare arm + // is not the intended path here. await rmTolerant(ctx, paths.revPath); await writeRevArtifact(ctx, paths.revPath, sorted, input.packSha); } diff --git a/src/domain/error.ts b/src/domain/error.ts index 6208a1214..e203b80a0 100644 --- a/src/domain/error.ts +++ b/src/domain/error.ts @@ -45,6 +45,7 @@ export type ApplicationError = readonly objectCount: number; readonly limit: number; } + | { readonly code: 'PACK_ARTIFACT_MISMATCH'; readonly path: string } | { readonly code: 'SHALLOW_FILE_MALFORMED'; readonly reason: string; @@ -169,6 +170,11 @@ export const networkError = (reason: string): TsgitError => export const invalidWalkInput = (reason: string): TsgitError => new TsgitError({ code: 'INVALID_WALK_INPUT', reason }); +/** An artefact already occupying a content-addressed pack name holds different + * bytes — git's finalize step refuses this rather than overwriting. */ +export const packArtifactMismatch = (path: string): TsgitError => + new TsgitError({ code: 'PACK_ARTIFACT_MISMATCH', path }); + /** * `.git/shallow` violates git's strict line grammar (blank/short/non-hex * line, or exceeds the parser's entry-count cap). Carries a `reason` and the @@ -330,6 +336,8 @@ function extractDetail(data: TsgitErrorData): string { return `${data.resource} locked: ${basename(data.path)}`; case 'PACK_TOO_LARGE': return `pack contains ${data.objectCount} objects, exceeds limit ${data.limit}`; + case 'PACK_ARTIFACT_MISMATCH': + return `existing pack artefact differs in contents: ${basename(data.path)}`; case 'SHALLOW_FILE_MALFORMED': return `bad shallow file at line ${data.lineNumber}: ${data.reason}`; case 'NOT_A_REPOSITORY': diff --git a/test/bench/fetch-pack.bench.ts b/test/bench/fetch-pack.bench.ts index 6a559d523..7de547f95 100644 --- a/test/bench/fetch-pack.bench.ts +++ b/test/bench/fetch-pack.bench.ts @@ -60,20 +60,22 @@ benchScenario( 'Given a pack with 8 independent 200-deep OFS delta chains', 'When fetchPack receives and indexes it in two passes, Then measure tsgit', async () => { - const ctx = createMemoryContext(); - const built = await buildSyntheticPack(ctx, buildChainedEntries()); + const seedCtx = createMemoryContext(); + const built = await buildSyntheticPack(seedCtx, buildChainedEntries()); const negotiator = toNegotiator(built.packBytes); const sut = async (): Promise => { - const result = await fetchPack(ctx, negotiator, { + const result = await fetchPack(createMemoryContext(), negotiator, { wants: [(built.ids[0] ?? 'a'.repeat(40)) as ObjectId], haves: [], capabilities: ['side-band-64k', 'ofs-delta'], progressOp: 'test:write-objects', }); - // The packs land in the memory adapter's own store; it dies with the - // worker, so there is nothing on disk to release. Reading a field keeps - // the write observable to the runner. + // A fresh destination per iteration keeps every iteration a genuine + // cold-cache receive: a shared one would serve a warm delta cache + // from iteration 2 on, and would also adopt the identical occupant + // rather than receive it, pricing the compare path instead. Reading + // a field keeps the write observable to the runner. if (result.packPath === '') throw new Error('fetchPack wrote no pack'); }; return { sut }; diff --git a/test/bench/support/bench-dsl.ts b/test/bench/support/bench-dsl.ts index 1aed39f65..d321b3c95 100644 --- a/test/bench/support/bench-dsl.ts +++ b/test/bench/support/bench-dsl.ts @@ -9,6 +9,27 @@ * The two `bench()` names stay exactly `tsgit` / `isomorphic-git` — the * summary script, the `benchmark-compare` CI job, and the snapshot converter * all key on them. Only the describe title changes. + * + * Every bench receives `throws: true` (see `hooksFor`). Without it, a warmup + * error is stored on the task and `run` returns before dispatching `complete` + * or `error`, so vitest reports a pass with an empty `samples` array. Three + * consequences of that choice, deliberate and recorded here so a future + * reader does not diagnose them as fresh defects: + * + * - A warmup throw aborts the whole bench **file**: scenarios declared after + * the failing one never run, so a truncated `reports/benchmarks/raw.json` + * is expected, not a second bug. + * - A throw during the measured **run** (after warmup) rejects inside the + * timer callback vitest wraps the run in; that promise never settles and + * the worker hangs. Nothing in-process can bound this — the + * `benchmark-snapshot` CI job carries `timeout-minutes: 30` (matching + * `bench.yml`) so the worst case is a bounded red run. + * - `removeSync` in `fixture-scratch.ts` swallows and logs rather than + * rethrowing. tinybench fires a bench's teardown hook un-awaited, inside + * `run`'s own body, so a teardown that throws would land in the same + * never-resolving promise as a run-phase failure. Do not "tidy" that + * swallow into a rethrow — it is what keeps a cleanup failure from hanging + * the runner. */ import { type BenchOptions, bench, describe } from 'vitest'; @@ -26,7 +47,8 @@ export interface BenchComparison { * `afterAll`, so a handle or scratch copy released there is never released. * tinybench does not await it — remove directories synchronously. It also * never fires when the measured function throws during warmup (tinybench - * skips the run phase); a scratch copy left that way is reclaimed by + * skips the run phase and, under `throws: true`, aborts the rest of the + * bench file with it); a scratch copy left that way is reclaimed by * `bench:fixture -- --prune` once its process is gone. */ readonly teardown?: () => Promise | void; @@ -41,26 +63,34 @@ export const onMeasuredRun = (mode: HookMode): Promise | void => mode === 'run' ? teardown() : undefined; -/** The bench options a scenario attaches; the task argument is never read, so callers need not build one. */ -export interface MeasuredRunHooks extends BenchOptions { - readonly teardown: (task: unknown, mode: HookMode) => Promise | void; +/** + * The bench options a scenario attaches. `throws: true` is always set: without it, + * tinybench stores a warmup error on the task and `run` returns before dispatching + * `complete` or `error`, so the placeholder `{ rank: 0, rme: 0, samples: [] }` result + * reports a pass. The task argument is never read, so callers need not build one. + */ +export interface MeasuredRunOptions extends BenchOptions { + readonly throws: true; + readonly teardown?: (task: unknown, mode: HookMode) => Promise | void; } -const afterMeasuredRun = (teardown: Teardown): MeasuredRunHooks => ({ - teardown: (_task, mode) => onMeasuredRun(teardown)(mode), +const throwingOptions = (teardown?: Teardown): MeasuredRunOptions => ({ + throws: true, + ...(teardown === undefined + ? {} + : { teardown: (_task: unknown, mode: HookMode) => onMeasuredRun(teardown)(mode) }), }); export interface ScenarioHooks { - readonly tsgit?: MeasuredRunHooks; - readonly baseline?: MeasuredRunHooks; + readonly tsgit: MeasuredRunOptions; + readonly baseline: MeasuredRunOptions; } -/** The hooks ride on the scenario's LAST bench, so a baseline still measures on an intact scratch. */ -export const hooksFor = (comparison: BenchComparison): ScenarioHooks => { - if (comparison.teardown === undefined) return {}; - const hooks = afterMeasuredRun(comparison.teardown); - return comparison.baseline === undefined ? { tsgit: hooks } : { baseline: hooks }; -}; +/** Every bench gets throwing options; the teardown rides on the scenario's LAST bench, so a baseline still measures on an intact scratch. */ +export const hooksFor = (comparison: BenchComparison): ScenarioHooks => + comparison.baseline === undefined + ? { tsgit: throwingOptions(comparison.teardown), baseline: throwingOptions() } + : { tsgit: throwingOptions(), baseline: throwingOptions(comparison.teardown) }; export interface BenchScenarioOptions { /** Skip the whole scenario (missing fixture, Stryker sandbox, …). */ diff --git a/test/integration/interop-helpers.ts b/test/integration/interop-helpers.ts index 0bf4dcda5..5c42527b9 100644 --- a/test/integration/interop-helpers.ts +++ b/test/integration/interop-helpers.ts @@ -256,10 +256,15 @@ export const topReflogSubject = (dir: string, ref: string): string => */ export const tryRunGitWithExit = ( args: ReadonlyArray, - options: { readonly env?: NodeJS.ProcessEnv } = {}, + options: { readonly input?: string | Uint8Array; readonly env?: NodeJS.ProcessEnv } = {}, ): { readonly stdout: string; readonly stderr: string; readonly exitCode: number } => { const env = options.env ?? SAFE_ENV; - const result = spawnSync('git', args as string[], { env, encoding: 'utf8' }); + const opts = { + env, + encoding: 'utf8' as const, + ...(options.input === undefined ? {} : { input: options.input }), + }; + const result = spawnSync('git', args as string[], opts); return { stdout: result.stdout ?? '', stderr: result.stderr ?? '', diff --git a/test/integration/pack-receive-idempotence-interop.test.ts b/test/integration/pack-receive-idempotence-interop.test.ts new file mode 100644 index 000000000..022f3c777 --- /dev/null +++ b/test/integration/pack-receive-idempotence-interop.test.ts @@ -0,0 +1,387 @@ +/** + * Cross-tool interop for the receive path's already-present tolerance, + * per artefact and exactly as canonical git's own `index-pack --stdin + * --fix-thin` behaves: a second identical run keeps every existing artefact + * untouched (same bytes, same inode, same mtime), recreates a sibling that + * went missing, and refuses when an artefact on disk differs in contents. Each tool is measured + * against itself across two runs, never against the other's file names: + * git and tsgit derive a pack's stem differently and no claim here depends + * on them agreeing. + * + * @proves + * surface: fetchPack.receive + * bucket: cross-tool-interop + * unique: re-receiving a pack keeps identical artefacts, recreates missing siblings and refuses differing bytes, as git does + * interopSurface: packfile + */ +import { mkdtemp, readdir, readFile, rm, stat, writeFile } from 'node:fs/promises'; +import * as os from 'node:os'; +import * as path from 'node:path'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; +import { createNodeContext } from '../../src/adapters/node/node-adapter.js'; +import { fetchPack, type NegotiatePackBytes } from '../../src/application/primitives/fetch-pack.js'; +import { TsgitError } from '../../src/domain/error.js'; +import type { ObjectId } from '../../src/domain/objects/object-id.js'; +import { + disableAutoMaintenance, + GIT_AVAILABLE, + makePeerPair, + type PeerPair, + runGit, + tryRunGitWithExit, +} from './interop-helpers.js'; + +const COMMIT_COUNT = 3; +const PLANTED = new TextEncoder().encode('planted bytes, not a real pack'); +const TRAILER_BYTES = 20; + +/** git's own `index-pack` invocation, with the reverse-index write pinned + * explicitly rather than inherited from the runner's git default. */ +const indexPackArgs = (dir: string): string[] => [ + '-C', + dir, + '-c', + 'pack.writeReverseIndex=true', + 'index-pack', + '--stdin', + '--fix-thin', +]; + +const RECEIVE_INPUT = { + wants: ['a'.repeat(40) as ObjectId], + haves: [], + capabilities: [], + progressOp: 'test:write-objects', +}; + +const singleChunk = + (bytes: Uint8Array): NegotiatePackBytes => + async () => ({ + packBody: (async function* chunk() { + yield bytes; + })(), + shallow: [], + unshallow: [], + }); + +const gitPackDir = (dir: string): string => path.join(dir, '.git', 'objects', 'pack'); + +/** git names a received pack after its trailer checksum. */ +const gitPackStem = (bytes: Uint8Array): string => + `pack-${Buffer.from(bytes.subarray(bytes.length - TRAILER_BYTES)).toString('hex')}`; + +const expectMismatch = (caught: unknown, artefactPath: string): void => { + expect(caught).toBeInstanceOf(TsgitError); + if (!(caught instanceof TsgitError)) expect.unreachable(); + expect(caught.data.code).toBe('PACK_ARTIFACT_MISMATCH'); + if (caught.data.code !== 'PACK_ARTIFACT_MISMATCH') expect.unreachable(); + expect(caught.data.path).toBe(artefactPath); +}; + +describe.skipIf(!GIT_AVAILABLE)('pack-receive-idempotence interop', () => { + let pair: PeerPair; + let packBytes: Uint8Array; + + beforeAll(async () => { + pair = await makePeerPair('pack-receive-idempotence'); + runGit(['init', '-q', '-b', 'main', pair.peer]); + runGit(['-C', pair.peer, 'config', 'user.name', 'Ada']); + runGit(['-C', pair.peer, 'config', 'user.email', 'ada@example.com']); + runGit(['-C', pair.peer, 'config', 'commit.gpgsign', 'false']); + disableAutoMaintenance(pair.peer); + + for (let i = 0; i < COMMIT_COUNT; i += 1) { + await writeFile(path.join(pair.peer, `file-${i}.txt`), `content ${i}\n`); + runGit(['-C', pair.peer, 'add', `file-${i}.txt`]); + runGit(['-C', pair.peer, 'commit', '-q', '-m', `commit ${i}`]); + } + runGit(['-C', pair.peer, '-c', 'pack.threads=1', 'repack', '-a', '-d']); + + const packDir = path.join(pair.peer, '.git', 'objects', 'pack'); + const packName = (await readdir(packDir)).find((name) => name.endsWith('.pack')); + if (packName === undefined) { + throw new Error('pack-receive-idempotence interop: no pack survived repack -a -d'); + } + packBytes = await readFile(path.join(packDir, packName)); + }, 60_000); + + afterAll(async () => { + await pair.dispose(); + }); + + describe('Given a real git-produced pack and a fresh tsgit repository', () => { + describe('When fetchPack receives that pack twice', () => { + it('Then the second receive returns the same artefacts, byte-identical and with an unchanged inode and mtime, and leaves no quarantine file', async () => { + // Arrange + const dir = await mkdtemp(path.join(os.tmpdir(), 'tsgit-pack-receive-idempotence-')); + try { + runGit(['init', '-q', '-b', 'main', dir]); + const ctx = createNodeContext({ workDir: dir }); + const negotiator = singleChunk(packBytes); + const sut = fetchPack; + + const first = await sut(ctx, negotiator, RECEIVE_INPUT); + const revPath = `${path.dirname(first.idxPath)}/pack-${first.packSha}.rev`; + const packBytesAfterFirst = await ctx.fs.read(first.packPath); + const idxBytesAfterFirst = await ctx.fs.read(first.idxPath); + const revBytesAfterFirst = await ctx.fs.read(revPath); + const packStatAfterFirst = await ctx.fs.stat(first.packPath); + const idxStatAfterFirst = await ctx.fs.stat(first.idxPath); + const revStatAfterFirst = await ctx.fs.stat(revPath); + + // Act + const second = await sut(ctx, negotiator, RECEIVE_INPUT); + + // Assert — same artefacts, same identity. + expect(second.packPath).toBe(first.packPath); + expect(second.idxPath).toBe(first.idxPath); + expect(second.packSha).toBe(first.packSha); + expect(second.objectCount).toBe(first.objectCount); + expect(second.objectCount).toBeGreaterThan(0); + + // Assert — byte-identical across the two calls. + expect(await ctx.fs.read(second.packPath)).toEqual(packBytesAfterFirst); + expect(await ctx.fs.read(second.idxPath)).toEqual(idxBytesAfterFirst); + expect(await ctx.fs.read(revPath)).toEqual(revBytesAfterFirst); + + // Assert — same inode, same mtime: nothing was rewritten. + const packStatAfterSecond = await ctx.fs.stat(second.packPath); + const idxStatAfterSecond = await ctx.fs.stat(second.idxPath); + const revStatAfterSecond = await ctx.fs.stat(revPath); + expect(packStatAfterSecond.ino).toBe(packStatAfterFirst.ino); + expect(packStatAfterSecond.mtimeMs).toBe(packStatAfterFirst.mtimeMs); + expect(idxStatAfterSecond.ino).toBe(idxStatAfterFirst.ino); + expect(idxStatAfterSecond.mtimeMs).toBe(idxStatAfterFirst.mtimeMs); + expect(revStatAfterSecond.ino).toBe(revStatAfterFirst.ino); + expect(revStatAfterSecond.mtimeMs).toBe(revStatAfterFirst.mtimeMs); + + // Assert — no leftover quarantine file. + const packDirEntries = await ctx.fs.readdir(path.dirname(first.packPath)); + expect(packDirEntries.some((entry) => entry.name.startsWith('tmp_pack_'))).toBe(false); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }, 30_000); + }); + }); + + describe('Given the same real git-produced pack and a fresh repository', () => { + describe('When git index-pack --stdin --fix-thin receives it twice', () => { + it('Then both runs exit 0 with empty stderr, and the artefacts stay byte-identical with an unchanged inode and mtime', async () => { + // Arrange + const dir = await mkdtemp(path.join(os.tmpdir(), 'tsgit-pack-receive-idempotence-git-')); + try { + runGit(['init', '-q', '-b', 'main', dir]); + + // Act + const first = tryRunGitWithExit(indexPackArgs(dir), { + input: packBytes, + }); + const packDir = path.join(dir, '.git', 'objects', 'pack'); + const packName = (await readdir(packDir)).find((name) => name.endsWith('.pack')); + if (packName === undefined) { + throw new Error('pack-receive-idempotence interop: git row produced no pack'); + } + const stem = packName.slice(0, -'.pack'.length); + const packPath = path.join(packDir, `${stem}.pack`); + const idxPath = path.join(packDir, `${stem}.idx`); + const revPath = path.join(packDir, `${stem}.rev`); + const packBytesAfterFirst = await readFile(packPath); + const idxBytesAfterFirst = await readFile(idxPath); + const revBytesAfterFirst = await readFile(revPath); + const packStatAfterFirst = await stat(packPath); + const idxStatAfterFirst = await stat(idxPath); + const revStatAfterFirst = await stat(revPath); + + const second = tryRunGitWithExit(indexPackArgs(dir), { + input: packBytes, + }); + + // Assert — both runs succeed silently. + expect(first.exitCode).toBe(0); + expect(first.stderr).toBe(''); + expect(second.exitCode).toBe(0); + expect(second.stderr).toBe(''); + + // Assert — byte-identical across the two runs. + expect(await readFile(packPath)).toEqual(packBytesAfterFirst); + expect(await readFile(idxPath)).toEqual(idxBytesAfterFirst); + expect(await readFile(revPath)).toEqual(revBytesAfterFirst); + + // Assert — same inode, same mtime: nothing was rewritten. + const packStatAfterSecond = await stat(packPath); + const idxStatAfterSecond = await stat(idxPath); + const revStatAfterSecond = await stat(revPath); + expect(packStatAfterSecond.ino).toBe(packStatAfterFirst.ino); + expect(packStatAfterSecond.mtimeMs).toBe(packStatAfterFirst.mtimeMs); + expect(idxStatAfterSecond.ino).toBe(idxStatAfterFirst.ino); + expect(idxStatAfterSecond.mtimeMs).toBe(idxStatAfterFirst.mtimeMs); + expect(revStatAfterSecond.ino).toBe(revStatAfterFirst.ino); + expect(revStatAfterSecond.mtimeMs).toBe(revStatAfterFirst.mtimeMs); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }, 30_000); + }); + }); + describe('Given a foreign file planted at the pack content-addressed name', () => { + describe('When git index-pack receives the real pack', () => { + it('Then it refuses with exit 128 naming a contents mismatch and leaves the planted bytes untouched', async () => { + // Arrange + const dir = await mkdtemp(path.join(os.tmpdir(), 'tsgit-pack-receive-planted-git-')); + try { + runGit(['init', '-q', '-b', 'main', dir]); + const planted = path.join(gitPackDir(dir), `${gitPackStem(packBytes)}.pack`); + await writeFile(planted, PLANTED); + + // Act + const run = tryRunGitWithExit(indexPackArgs(dir), { input: packBytes }); + + // Assert + expect(run.exitCode).toBe(128); + expect(run.stderr).toContain('differ in contents'); + expect(new Uint8Array(await readFile(planted))).toEqual(PLANTED); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }, 30_000); + }); + + describe('When fetchPack receives the real pack', () => { + it('Then it refuses naming the destination, leaves the planted bytes untouched and leaves no quarantine file', async () => { + // Arrange + const dir = await mkdtemp(path.join(os.tmpdir(), 'tsgit-pack-receive-planted-tsgit-')); + try { + runGit(['init', '-q', '-b', 'main', dir]); + const ctx = createNodeContext({ workDir: dir }); + const packSha = await ctx.hash.hashHex(packBytes.subarray(0, -TRAILER_BYTES)); + const destination = `${gitPackDir(dir)}/pack-${packSha}.pack`; + await ctx.fs.writeExclusive(destination, PLANTED); + const sut = fetchPack; + + // Act + let caught: unknown; + try { + await sut(ctx, singleChunk(packBytes), RECEIVE_INPUT); + } catch (err) { + caught = err; + } + + // Assert + expectMismatch(caught, destination); + expect(await ctx.fs.read(destination)).toEqual(PLANTED); + const entries = await ctx.fs.readdir(gitPackDir(dir)); + expect(entries.some((entry) => entry.name.startsWith('tmp_pack_'))).toBe(false); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }, 30_000); + }); + }); + + describe('Given the pack present and its index and reverse index removed', () => { + describe('When git index-pack receives the identical pack again', () => { + it('Then it exits 0 and recreates both siblings', async () => { + // Arrange + const dir = await mkdtemp(path.join(os.tmpdir(), 'tsgit-pack-receive-siblings-git-')); + try { + runGit(['init', '-q', '-b', 'main', dir]); + tryRunGitWithExit(indexPackArgs(dir), { input: packBytes }); + const stem = path.join(gitPackDir(dir), gitPackStem(packBytes)); + await rm(`${stem}.idx`); + await rm(`${stem}.rev`); + + // Act + const run = tryRunGitWithExit(indexPackArgs(dir), { input: packBytes }); + + // Assert + expect(run.exitCode).toBe(0); + expect((await stat(`${stem}.idx`)).isFile()).toBe(true); + expect((await stat(`${stem}.rev`)).isFile()).toBe(true); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }, 30_000); + }); + + describe('When fetchPack receives the identical pack again', () => { + it('Then it succeeds and recreates both siblings', async () => { + // Arrange + const dir = await mkdtemp(path.join(os.tmpdir(), 'tsgit-pack-receive-siblings-tsgit-')); + try { + runGit(['init', '-q', '-b', 'main', dir]); + const ctx = createNodeContext({ workDir: dir }); + const sut = fetchPack; + const first = await sut(ctx, singleChunk(packBytes), RECEIVE_INPUT); + const revPath = `${gitPackDir(dir)}/pack-${first.packSha}.rev`; + await ctx.fs.rm(first.idxPath); + await ctx.fs.rm(revPath); + + // Act + const second = await sut(ctx, singleChunk(packBytes), RECEIVE_INPUT); + + // Assert + expect(second.packSha).toBe(first.packSha); + expect(await ctx.fs.exists(second.idxPath)).toBe(true); + expect(await ctx.fs.exists(revPath)).toBe(true); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }, 30_000); + }); + }); + + describe('Given a zero-byte index beside the pack', () => { + describe('When git index-pack receives the identical pack again', () => { + it('Then it refuses with exit 128 naming a contents mismatch', async () => { + // Arrange + const dir = await mkdtemp(path.join(os.tmpdir(), 'tsgit-pack-receive-corrupt-idx-git-')); + try { + runGit(['init', '-q', '-b', 'main', dir]); + tryRunGitWithExit(indexPackArgs(dir), { input: packBytes }); + const idxPath = path.join(gitPackDir(dir), `${gitPackStem(packBytes)}.idx`); + // git leaves its pack artefacts read-only; replace the file rather than truncating it. + await rm(idxPath); + await writeFile(idxPath, new Uint8Array(0)); + + // Act + const run = tryRunGitWithExit(indexPackArgs(dir), { input: packBytes }); + + // Assert + expect(run.exitCode).toBe(128); + expect(run.stderr).toContain('differ in contents'); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }, 30_000); + }); + + describe('When fetchPack receives the identical pack again', () => { + it('Then it refuses naming the index', async () => { + // Arrange + const dir = await mkdtemp(path.join(os.tmpdir(), 'tsgit-pack-receive-corrupt-idx-tsgit-')); + try { + runGit(['init', '-q', '-b', 'main', dir]); + const ctx = createNodeContext({ workDir: dir }); + const sut = fetchPack; + const first = await sut(ctx, singleChunk(packBytes), RECEIVE_INPUT); + await ctx.fs.rm(first.idxPath); + await ctx.fs.writeExclusive(first.idxPath, new Uint8Array(0)); + + // Act + let caught: unknown; + try { + await sut(ctx, singleChunk(packBytes), RECEIVE_INPUT); + } catch (err) { + caught = err; + } + + // Assert + expectMismatch(caught, first.idxPath); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }, 30_000); + }); + }); +}); diff --git a/test/unit/application/commands/fetch-missing.test.ts b/test/unit/application/commands/fetch-missing.test.ts index 7d852627d..a432b5e06 100644 --- a/test/unit/application/commands/fetch-missing.test.ts +++ b/test/unit/application/commands/fetch-missing.test.ts @@ -405,9 +405,9 @@ describe('fetchMissing', () => { }); }); - describe('Given a concurrent identical pack already on disk', () => { - describe('When fetchMissing', () => { - it('Then the FILE_EXISTS collision is tolerated', async () => { + describe('Given a corrupt index already occupying the pack sibling name', () => { + describe('When fetchMissing receives the pack', () => { + it('Then it refuses naming the index, as git does', async () => { // Arrange const base = createMemoryContext(); await seedRepo(base, {}); @@ -417,15 +417,27 @@ describe('fetchMissing', () => { const ctx: Context = { ...base, transport }; const packSha = await ctx.hash.hashHex(packBytes.subarray(0, -20)); const packDir = `${ctx.layout.gitDir}/objects/pack`; + const idxPath = `${packDir}/pack-${packSha}.idx`; await ctx.fs.mkdir(packDir); - await ctx.fs.writeExclusive(`${packDir}/pack-${packSha}.pack`, packBytes); + await ctx.fs.writeExclusive(idxPath, new Uint8Array(0)); + const sut = fetchMissing; // Act - const result = await fetchMissing(ctx, { oids: [blobId] }); + let caught: unknown; + try { + await sut(ctx, { oids: [blobId] }); + } catch (err) { + caught = err; + } - // Assert — the pre-existing pack made writeExclusive throw FILE_EXISTS, - // which fetchMissing swallows: the objects are already on disk. - expect(result).toEqual({ remote: 'origin', requested: 1, fetched: 1 }); + // Assert — the pack itself is absent, so the receive renames its quarantine + // copy into place, then finds the zero-byte index differs from the one it + // would write: a refusal, never a silent success over an unreadable pack. + expect(caught).toBeInstanceOf(TsgitError); + if (!(caught instanceof TsgitError)) expect.unreachable(); + expect(caught.data.code).toBe('PACK_ARTIFACT_MISMATCH'); + if (caught.data.code !== 'PACK_ARTIFACT_MISMATCH') expect.unreachable(); + expect(caught.data.path).toBe(idxPath); }); }); }); @@ -471,7 +483,7 @@ describe('fetchMissing', () => { }); }); - describe('Given fetchPack fails with a non-FILE_EXISTS error', () => { + describe('Given fetchPack fails', () => { describe('When fetchMissing', () => { it('Then the error propagates', async () => { // Arrange — discovery succeeds, the upload-pack POST returns 500. @@ -496,13 +508,42 @@ describe('fetchMissing', () => { caught = err; } - // Assert — a non-FILE_EXISTS failure is rethrown, not swallowed. + // Assert — the failure propagates. expect(caught).toBeInstanceOf(TsgitError); expect((caught as TsgitError).data.code).toBe('HTTP_ERROR'); }); }); }); + describe('Given the identical pack already occupies the sibling artefact name', () => { + describe('When fetchMissing', () => { + it('Then the receive adopts it and completes the siblings', async () => { + // Arrange — the receive path adopts an identical occupant itself; a + // pre-created pack at the same content-addressed name must not be + // treated as a failure. + const base = createMemoryContext(); + await seedRepo(base, {}); + await withConfig(base, PARTIAL_CONFIG); + const { packBytes, blobId } = await onePackedBlob(base, 'already present\n'); + const { transport } = fakeRemote(packBytes); + const ctx: Context = { ...base, transport }; + const packSha = await ctx.hash.hashHex(packBytes.subarray(0, -20)); + const packDir = `${ctx.layout.gitDir}/objects/pack`; + const packPath = `${packDir}/pack-${packSha}.pack`; + await ctx.fs.mkdir(packDir); + await ctx.fs.writeExclusive(packPath, packBytes); + + // Act + const result = await fetchMissing(ctx, { oids: [blobId] }); + + // Assert + expect(result).toEqual({ remote: 'origin', requested: 1, fetched: 1 }); + expect(await ctx.fs.exists(`${packDir}/pack-${packSha}.idx`)).toBe(true); + expect(await ctx.fs.exists(`${packDir}/pack-${packSha}.rev`)).toBe(true); + }); + }); + }); + describe('Given a configured auth credential', () => { describe('When fetchMissing', () => { it('Then the fetch carries it', async () => { diff --git a/test/unit/application/primitives/fetch-pack.test.ts b/test/unit/application/primitives/fetch-pack.test.ts index 415a5ed1a..261f95fa6 100644 --- a/test/unit/application/primitives/fetch-pack.test.ts +++ b/test/unit/application/primitives/fetch-pack.test.ts @@ -15,7 +15,7 @@ import { indexQuarantinedPack, walkPackEntries, } from '../../../../src/application/primitives/internal/index-pack.js'; -import { readObject } from '../../../../src/application/primitives/read-object.js'; +import { getPackRegistry, readObject } from '../../../../src/application/primitives/read-object.js'; import { writeObject } from '../../../../src/application/primitives/write-object.js'; import { fileExists, @@ -48,7 +48,7 @@ import { sortPackIndexEntries } from '../../../../src/domain/storage/pack-order. import { serializePackIndex } from '../../../../src/domain/storage/pack-writer.js'; import { serializePackRevIndex } from '../../../../src/domain/storage/rev-index.js'; import { readableStreamToAsyncIterable } from '../../../../src/operators/readable-stream.js'; -import type { Context } from '../../../../src/ports/context.js'; +import { type Context, createSession } from '../../../../src/ports/context.js'; import type { HttpRequest, HttpResponse, @@ -373,6 +373,10 @@ const pseudoRandomBytes = (length: number, seed: number): Uint8Array => { const MULTI_WINDOW_ENTRY_COUNT = 12; const MULTI_WINDOW_ENTRY_BYTES = 60_000; +/** Comfortably over `1 << 20` (1 MiB) once packed — incompressible content, + * so the deflated pack tracks this size almost 1:1 (see `pseudoRandomBytes`). */ +const OVER_COMPARE_WINDOW_BYTES = 1_100_000; + const buildMultiWindowPack = ( ctx: ReturnType, ): Promise>> => { @@ -5143,3 +5147,597 @@ describe('baseCacheSlotFor — session-scoped slot reuse', () => { }); }); }); + +describe('fetchPack — an already-present pack', () => { + describe('Given a pack already received once into this repository', () => { + describe('When fetchPack receives the byte-identical pack a second time', () => { + it('Then it succeeds and returns the artefacts already on disk', async () => { + // Arrange + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'already present\n'); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const negotiator = toNegotiator(transport); + const input = { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }; + const sut = fetchPack; + const first = await sut(ctx, negotiator, input); + + // Act + const second = await sut(ctx, negotiator, input); + + // Assert + expect(second.packPath).toBe(first.packPath); + expect(second.packSha).toBe(first.packSha); + expect(second.objectCount).toBe(first.objectCount); + expect(second.objectCount).toBeGreaterThan(0); + expect(second.idxPath).toBe(`${packDir(ctx)}/pack-${second.packSha}.idx`); + }); + }); + }); + + describe('Given a pack file already occupying the content-addressed destination with foreign bytes', () => { + describe('When fetchPack receives a pack whose trailer names that same destination', () => { + it('Then it refuses naming the destination, leaves the foreign bytes untouched and leaves no quarantine file', async () => { + // Arrange + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'sentinel destination\n'); + const packSha = await ctx.hash.hashHex(packBytes.subarray(0, -20)); + const destination = `${packDir(ctx)}/pack-${packSha}.pack`; + const sentinel = ENCODER.encode('sentinel bytes, not a real pack'); + await ctx.fs.mkdir(packDir(ctx)); + await ctx.fs.writeExclusive(destination, sentinel); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const sut = fetchPack; + + // Act + let caught: unknown; + try { + await sut(ctx, toNegotiator(transport), { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }); + } catch (err) { + caught = err; + } + + // Assert + expect(caught).toBeInstanceOf(TsgitError); + if (!(caught instanceof TsgitError)) expect.unreachable(); + expect(caught.data.code).toBe('PACK_ARTIFACT_MISMATCH'); + if (caught.data.code !== 'PACK_ARTIFACT_MISMATCH') expect.unreachable(); + expect(caught.data.path).toBe(destination); + expect(await ctx.fs.read(destination)).toEqual(sentinel); + expect(await ctx.fs.exists(`${packDir(ctx)}/pack-${packSha}.idx`)).toBe(false); + expect(await tmpPackNames(ctx)).toHaveLength(0); + }); + }); + }); + + describe('Given a same-size file with one differing byte occupying the content-addressed destination', () => { + describe('When fetchPack receives the pack whose trailer names that destination', () => { + it('Then it refuses naming the destination and leaves the differing bytes untouched', async () => { + // Arrange + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'one byte off\n'); + const packSha = await ctx.hash.hashHex(packBytes.subarray(0, -20)); + const destination = `${packDir(ctx)}/pack-${packSha}.pack`; + const differing = packBytes.slice(); + const middle = Math.floor(differing.length / 2); + differing[middle] = (differing[middle] ?? 0) ^ 0xff; + await ctx.fs.mkdir(packDir(ctx)); + await ctx.fs.writeExclusive(destination, differing); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const sut = fetchPack; + + // Act + let caught: unknown; + try { + await sut(ctx, toNegotiator(transport), { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }); + } catch (err) { + caught = err; + } + + // Assert + expect(caught).toBeInstanceOf(TsgitError); + if (!(caught instanceof TsgitError)) expect.unreachable(); + expect(caught.data.code).toBe('PACK_ARTIFACT_MISMATCH'); + if (caught.data.code !== 'PACK_ARTIFACT_MISMATCH') expect.unreachable(); + expect(caught.data.path).toBe(destination); + expect(await ctx.fs.read(destination)).toEqual(differing); + }); + }); + }); + + describe('Given a first receive landed the pack, and readSlice then fails reading the destination back', () => { + describe('When fetchPack receives the identical pack a second time', () => { + it('Then the failure propagates and no quarantine file is left behind', async () => { + // Arrange — a concurrent gc (FILE_NOT_FOUND) or an unreadable + // occupant (PERMISSION_DENIED) must not strand the quarantine copy: + // the compare arm has to release it on every exit, not only the + // clean ones. + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'compare read failure\n'); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const negotiator = toNegotiator(transport); + const input = { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }; + const sut = fetchPack; + const first = await sut(ctx, negotiator, input); + const destination = first.packPath; + const failingCtx = withFsPatch(ctx, { + readSlice: async (path: string, offset: number, length: number): Promise => { + if (path === destination) throw permissionDenied(destination); + return ctx.fs.readSlice(path, offset, length); + }, + }); + + // Act + let caught: unknown; + try { + await sut(failingCtx, negotiator, input); + } catch (err) { + caught = err; + } + + // Assert + expect(caught).toBeInstanceOf(TsgitError); + if (!(caught instanceof TsgitError)) expect.unreachable(); + expect(caught.data.code).toBe('PERMISSION_DENIED'); + if (caught.data.code !== 'PERMISSION_DENIED') expect.unreachable(); + expect(caught.data.path).toBe(destination); + expect(await tmpPackNames(ctx)).toHaveLength(0); + }); + }); + }); + + describe('Given a directory whose stat happens to report the same size as the pack, occupying the content-addressed destination', () => { + describe('When fetchPack receives a pack whose trailer names that destination', () => { + it('Then it refuses naming the destination instead of surfacing a raw filesystem error, and leaves no quarantine file', async () => { + // Arrange — a real filesystem can report a nonzero directory size + // (block-aligned); stubbing stat to coincidentally match the pack's + // size is what actually exercises the isFile guard — the plain + // size check alone cannot distinguish this from a same-size file, + // and `readSlice` on the (real, memory-backed) directory would + // otherwise surface a raw FILE_NOT_FOUND instead of a clean refusal. + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'directory occupant\n'); + const packSha = await ctx.hash.hashHex(packBytes.subarray(0, -20)); + const destination = `${packDir(ctx)}/pack-${packSha}.pack`; + await ctx.fs.mkdir(destination); + const realStat = ctx.fs.stat.bind(ctx.fs); + const patchedCtx = withFsPatch(ctx, { + stat: async (path: string) => { + const stat = await realStat(path); + return path === destination ? { ...stat, size: packBytes.length } : stat; + }, + }); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const sut = fetchPack; + + // Act + let caught: unknown; + try { + await sut(patchedCtx, toNegotiator(transport), { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }); + } catch (err) { + caught = err; + } + + // Assert + expect(caught).toBeInstanceOf(TsgitError); + if (!(caught instanceof TsgitError)) expect.unreachable(); + expect(caught.data.code).toBe('PACK_ARTIFACT_MISMATCH'); + if (caught.data.code !== 'PACK_ARTIFACT_MISMATCH') expect.unreachable(); + expect(caught.data.path).toBe(destination); + expect(await tmpPackNames(ctx)).toHaveLength(0); + }); + }); + }); + + describe('Given a pack file with extra trailing bytes appended already occupying the content-addressed destination', () => { + describe('When fetchPack receives a pack whose trailer names that destination', () => { + it('Then it refuses naming the destination and leaves the superset bytes untouched', async () => { + // Arrange — the size-mismatch short-circuit is otherwise only ever + // exercised by a SMALLER foreign occupant in every existing + // fixture; a mutant flipping it would adopt this corruption as a + // successful receive instead of refusing it. + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'superset occupant\n'); + const packSha = await ctx.hash.hashHex(packBytes.subarray(0, -20)); + const destination = `${packDir(ctx)}/pack-${packSha}.pack`; + const extraBytes = ENCODER.encode('extra trailing bytes'); + const superset = new Uint8Array(packBytes.length + extraBytes.length); + superset.set(packBytes, 0); + superset.set(extraBytes, packBytes.length); + await ctx.fs.mkdir(packDir(ctx)); + await ctx.fs.writeExclusive(destination, superset); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const sut = fetchPack; + + // Act + let caught: unknown; + try { + await sut(ctx, toNegotiator(transport), { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }); + } catch (err) { + caught = err; + } + + // Assert + expect(caught).toBeInstanceOf(TsgitError); + if (!(caught instanceof TsgitError)) expect.unreachable(); + expect(caught.data.code).toBe('PACK_ARTIFACT_MISMATCH'); + if (caught.data.code !== 'PACK_ARTIFACT_MISMATCH') expect.unreachable(); + expect(caught.data.path).toBe(destination); + expect(await ctx.fs.read(destination)).toEqual(superset); + expect(await tmpPackNames(ctx)).toHaveLength(0); + }); + }); + }); + + describe('Given a pack already received once into this repository, When fetchPack receives it a second time', () => { + it('Then no quarantine file is left behind', async () => { + // Arrange + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'no leftover quarantine\n'); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const negotiator = toNegotiator(transport); + const input = { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }; + const sut = fetchPack; + await sut(ctx, negotiator, input); + + // Act + await sut(ctx, negotiator, input); + + // Assert + expect(await tmpPackNames(ctx)).toHaveLength(0); + }); + }); + + describe('Given a shallow response for a pack already on disk', () => { + describe('When fetchPack receives it a second time with depth set', () => { + it('Then the already-present result still carries the advertised shallow boundaries', async () => { + // Arrange + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'shallow already present\n'); + const shallowOid = 'b'.repeat(40); + const unshallowOid = 'c'.repeat(40); + const body = buildShallowResponseBody({ + packBytes, + shallow: [shallowOid], + unshallow: [unshallowOid], + }); + const { transport } = captureRequests(body); + const negotiator = toNegotiator(transport); + const input = { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + depth: 1, + }; + const sut = fetchPack; + await sut(ctx, negotiator, input); + + // Act + const second = await sut(ctx, negotiator, input); + + // Assert + expect(second.shallow).toEqual([shallowOid]); + expect(second.unshallow).toEqual([unshallowOid]); + }); + }); + }); + + describe('Given the pack is present but its index and reverse index are missing', () => { + describe('When fetchPack receives the identical pack again', () => { + it('Then the index and reverse index are recreated and the pack is readable', async () => { + // Arrange + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'siblings recreated\n'); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const negotiator = toNegotiator(transport); + const input = { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }; + const sut = fetchPack; + const first = await sut(ctx, negotiator, input); + const revPath = `${packDir(ctx)}/pack-${first.packSha}.rev`; + await ctx.fs.rm(first.idxPath); + await ctx.fs.rm(revPath); + + // Act + const second = await sut(ctx, negotiator, input); + const result = await readObject(ctx, blobId); + + // Assert + expect(await ctx.fs.exists(second.idxPath)).toBe(true); + expect(await ctx.fs.exists(revPath)).toBe(true); + expect(second.objectCount).toBe(first.objectCount); + expect(result.id).toBe(blobId); + }); + }); + }); + + describe('Given the pack is present beside a zero-byte index', () => { + describe('When fetchPack receives the identical pack again', () => { + it('Then it refuses naming the index and leaves the pack untouched', async () => { + // Arrange + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'corrupt index\n'); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const negotiator = toNegotiator(transport); + const input = { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }; + const sut = fetchPack; + const first = await sut(ctx, negotiator, input); + const packBytesOnDisk = await ctx.fs.read(first.packPath); + await ctx.fs.rm(first.idxPath); + await ctx.fs.writeExclusive(first.idxPath, new Uint8Array(0)); + + // Act + let caught: unknown; + try { + await sut(ctx, negotiator, input); + } catch (err) { + caught = err; + } + + // Assert + expect(caught).toBeInstanceOf(TsgitError); + if (!(caught instanceof TsgitError)) expect.unreachable(); + expect(caught.data.code).toBe('PACK_ARTIFACT_MISMATCH'); + if (caught.data.code !== 'PACK_ARTIFACT_MISMATCH') expect.unreachable(); + expect(caught.data.path).toBe(first.idxPath); + expect(await ctx.fs.read(first.packPath)).toEqual(packBytesOnDisk); + expect(await tmpPackNames(ctx)).toHaveLength(0); + }); + }); + }); + + describe('Given a promisor receive of a pack already present without its sentinel', () => { + describe('When fetchPack receives the identical pack with promisor set', () => { + it('Then the .promisor sentinel is written beside the existing pack', async () => { + // Arrange + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'promisor completed\n'); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const negotiator = toNegotiator(transport); + const input = { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }; + const sut = fetchPack; + const first = await sut(ctx, negotiator, input); + const sentinelPath = `${packDir(ctx)}/pack-${first.packSha}.promisor`; + const sentinelBefore = await ctx.fs.exists(sentinelPath); + + // Act + const second = await sut(ctx, negotiator, { ...input, promisor: true }); + + // Assert + expect(sentinelBefore).toBe(false); + expect(await ctx.fs.exists(sentinelPath)).toBe(true); + expect(second.packSha).toBe(first.packSha); + }); + }); + }); + + describe('Given a Context whose pack registry was cached before another writer landed the pack', () => { + describe('When fetchPack receives that same pack through the stale Context', () => { + it('Then an object the pack carries is readable through it', async () => { + // Arrange + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'stale registry\n'); + await getPackRegistry(ctx).lookup(blobId); + const writerCtx = { ...ctx, session: createSession() }; + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const negotiator = toNegotiator(transport); + const input = { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }; + const sut = fetchPack; + await sut(writerCtx, negotiator, input); + + // Act + await sut(ctx, negotiator, input); + const result = await readObject(ctx, blobId); + + // Assert + expect(result.type).toBe('blob'); + expect(result.id).toBe(blobId); + }); + }); + }); + + describe('Given a pack whose bytes exceed one compare window (over 1 MiB)', () => { + describe('When fetchPack receives the byte-identical pack a second time', () => { + it('Then it succeeds and returns the artefacts already on disk', async () => { + // Arrange — incompressible content so the deflated pack itself, not + // just the source blob, exceeds one compare window: a one-window + // fixture could never distinguish the multi-window loop from a + // single bounds check. + const ctx = createMemoryContext(); + const built = await buildSyntheticPack(ctx, [ + { + kind: 'base', + type: 'blob', + content: pseudoRandomBytes(OVER_COMPARE_WINDOW_BYTES, 9001), + }, + ]); + expect(built.packBytes.length).toBeGreaterThan(1 << 20); + const body = buildMultiChunkSidebandBody(built.packBytes, 32_768); + const { transport } = captureRequests(body); + const negotiator = toNegotiator(transport); + const input = { + wants: [built.ids[0] as ObjectId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }; + const sut = fetchPack; + const first = await sut(ctx, negotiator, input); + // Every slice the compare requests from the occupant is recorded: + // both adapters clamp a read at end of file, so only the requested + // lengths can prove the compare stays inside its window. + const sliceRequests: Array<{ readonly offset: number; readonly length: number }> = []; + const spied = withFsPatch(ctx, { + readSlice: async (path: string, offset: number, length: number) => { + if (path === first.packPath) sliceRequests.push({ offset, length }); + return ctx.fs.readSlice(path, offset, length); + }, + }); + + // Act + const second = await sut(spied, negotiator, input); + + // Assert + expect(second.packSha).toBe(first.packSha); + expect(await ctx.fs.read(second.packPath)).toEqual(await ctx.fs.read(first.packPath)); + expect(await tmpPackNames(ctx)).toHaveLength(0); + expect(sliceRequests.length).toBeGreaterThanOrEqual(2); + expect(sliceRequests.every((request) => request.length <= 1 << 20)).toBe(true); + expect(sliceRequests.map((request) => request.offset)).toEqual( + sliceRequests.map((_, index) => index * (1 << 20)), + ); + expect(sliceRequests.reduce((total, request) => total + request.length, 0)).toBe( + built.packBytes.length, + ); + }); + }); + }); + + describe('Given a same-size occupant (over 1 MiB) differing only in its last compare window', () => { + describe('When fetchPack receives the pack whose trailer names that destination', () => { + it('Then it refuses naming the destination and leaves the differing bytes untouched', async () => { + // Arrange + const ctx = createMemoryContext(); + const built = await buildSyntheticPack(ctx, [ + { + kind: 'base', + type: 'blob', + content: pseudoRandomBytes(OVER_COMPARE_WINDOW_BYTES, 9002), + }, + ]); + expect(built.packBytes.length).toBeGreaterThan(1 << 20); + const packSha = await ctx.hash.hashHex(built.packBytes.subarray(0, -20)); + const destination = `${packDir(ctx)}/pack-${packSha}.pack`; + const differing = built.packBytes.slice(); + const lastWindowIndex = differing.length - 5; + differing[lastWindowIndex] = (differing[lastWindowIndex] ?? 0) ^ 0xff; + await ctx.fs.mkdir(packDir(ctx)); + await ctx.fs.writeExclusive(destination, differing); + const body = buildMultiChunkSidebandBody(built.packBytes, 32_768); + const { transport } = captureRequests(body); + const sut = fetchPack; + + // Act + let caught: unknown; + try { + await sut(ctx, toNegotiator(transport), { + wants: [built.ids[0] as ObjectId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }); + } catch (err) { + caught = err; + } + + // Assert + expect(caught).toBeInstanceOf(TsgitError); + if (!(caught instanceof TsgitError)) expect.unreachable(); + expect(caught.data.code).toBe('PACK_ARTIFACT_MISMATCH'); + if (caught.data.code !== 'PACK_ARTIFACT_MISMATCH') expect.unreachable(); + expect(caught.data.path).toBe(destination); + expect(await ctx.fs.read(destination)).toEqual(differing); + }); + }); + }); + + describe('Given two concurrent receives of the same pack over one memory context', () => { + describe('When both calls run via Promise.all', () => { + it('Then both resolve with the same artefacts and no quarantine file is left behind', async () => { + // Arrange — captureRequests builds a fresh ReadableStream (a fresh + // `body.slice()`) on every `request()` call, so both concurrent + // negotiations each get their own independent copy of the body. + const ctx = createMemoryContext(); + const { packBytes, blobId } = await buildSingleBlobPack(ctx, 'concurrent receive\n'); + const body = buildUploadPackResponseBody({ packBytes, sideBand: true }); + const { transport } = captureRequests(body); + const negotiator = toNegotiator(transport); + const input = { + wants: [blobId], + haves: [], + capabilities: ['side-band-64k'], + progressOp: 'test:write-objects', + }; + const sut = fetchPack; + + // Act + const [first, second] = await Promise.all([ + sut(ctx, negotiator, input), + sut(ctx, negotiator, input), + ]); + + // Assert + expect(second.packSha).toBe(first.packSha); + expect(await ctx.fs.exists(first.idxPath)).toBe(true); + const revPath = `${packDir(ctx)}/pack-${first.packSha}.rev`; + expect(await ctx.fs.exists(revPath)).toBe(true); + expect(await tmpPackNames(ctx)).toHaveLength(0); + }); + }); + }); +}); diff --git a/test/unit/application/primitives/internal/write-pack-artifacts.test.ts b/test/unit/application/primitives/internal/write-pack-artifacts.test.ts index f0a0efedf..eefb51fb1 100644 --- a/test/unit/application/primitives/internal/write-pack-artifacts.test.ts +++ b/test/unit/application/primitives/internal/write-pack-artifacts.test.ts @@ -433,6 +433,40 @@ describe('writePackArtifactsViaQuarantine', () => { }); }); + describe('Given a non-empty .promisor sentinel already sitting at the sha name', () => { + describe('When writePackArtifactsViaQuarantine runs with promisor: true', () => { + it('Then the sentinel is replaced empty rather than kept as it was', async () => { + // Arrange — unlike the receive path (writeSentinelIfAbsent, which + // keeps whatever an existing sentinel holds), gc's own rewrite of a + // sha it already produced REPLACES its prior-run sentinel: without + // the `rmTolerant` removal below, `writeSentinelIfAbsent` would find + // this non-empty sentinel already present and leave it untouched. + const ctx = createMemoryContext(); + const entries = buildEntries(2); + const dir = packDirOf(ctx); + const sentinelPath = `${dir}/pack-${PACK_SHA}.promisor`; + await ctx.fs.mkdir(dir); + await ctx.fs.writeExclusive( + sentinelPath, + new TextEncoder().encode('from a prior gc run\n'), + ); + const sut = writePackArtifactsViaQuarantine; + + // Act + await sut(ctx, { + packDir: dir, + packBytes: PACK_BYTES, + entries, + packSha: PACK_SHA, + promisor: true, + }); + + // Assert + expect(await ctx.fs.read(sentinelPath)).toEqual(new Uint8Array(0)); + }); + }); + }); + describe('Given a normal (non-colliding) quarantine write', () => { describe('When writePackArtifactsViaQuarantine claims its tmp names', () => { it('Then both claimed names match the tmp_pack_/tmp_idx_ + 6-char alphabet shape exactly', async () => { @@ -782,3 +816,300 @@ describe('writePackSiblingArtifacts', () => { }); }); }); + +describe('writePackSiblingArtifacts — artefacts already present', () => { + const siblingInput = (packDir: string, entries: PackIndexEntries) => ({ + packDir, + entries, + packSha: PACK_SHA, + promisor: false, + }); + + const expectMismatch = (caught: unknown, path: string): void => { + expect(caught).toBeInstanceOf(TsgitError); + if (!(caught instanceof TsgitError)) expect.unreachable(); + expect(caught.data.code).toBe('PACK_ARTIFACT_MISMATCH'); + if (caught.data.code !== 'PACK_ARTIFACT_MISMATCH') expect.unreachable(); + expect(caught.data.path).toBe(path); + }; + + describe('Given an identical .idx already occupying its sibling name', () => { + describe('When writePackSiblingArtifacts runs', () => { + it('Then it keeps the existing index untouched and still writes the .rev', async () => { + // Arrange + const ctx = createMemoryContext(); + const entries = buildEntries(3); + const dir = packDirOf(ctx); + const idxPath = `${dir}/pack-${PACK_SHA}.idx`; + const idxBytes = await buildIdx(ctx, sortPackIndexEntries(entries), PACK_SHA); + await ctx.fs.writeExclusive(idxPath, idxBytes); + const before = await ctx.fs.stat(idxPath); + const sut = writePackSiblingArtifacts; + + // Act + const result = await sut(ctx, siblingInput(dir, entries)); + + // Assert + expect(result.idxPath).toBe(idxPath); + expect(await ctx.fs.read(idxPath)).toEqual(idxBytes); + expect((await ctx.fs.stat(idxPath)).mtimeMs).toBe(before.mtimeMs); + expect(await ctx.fs.exists(`${dir}/pack-${PACK_SHA}.rev`)).toBe(true); + }); + }); + }); + + describe('Given a .idx with different bytes already occupying its sibling name', () => { + describe('When writePackSiblingArtifacts runs', () => { + it('Then it refuses naming the index, leaves the existing bytes untouched and writes no .rev', async () => { + // Arrange + const ctx = createMemoryContext(); + const entries = buildEntries(3); + const dir = packDirOf(ctx); + const idxPath = `${dir}/pack-${PACK_SHA}.idx`; + const foreign = new TextEncoder().encode('not an index'); + await ctx.fs.writeExclusive(idxPath, foreign); + const sut = writePackSiblingArtifacts; + + // Act + let caught: unknown; + try { + await sut(ctx, siblingInput(dir, entries)); + } catch (err) { + caught = err; + } + + // Assert + expectMismatch(caught, idxPath); + expect(await ctx.fs.read(idxPath)).toEqual(foreign); + expect(await ctx.fs.exists(`${dir}/pack-${PACK_SHA}.rev`)).toBe(false); + }); + }); + }); + + describe('Given a directory occupying the .idx sibling name', () => { + describe('When writePackSiblingArtifacts runs', () => { + it('Then it refuses naming the index instead of surfacing a raw filesystem error', async () => { + // Arrange — a real directory: `ctx.fs.stat` reports isFile: false + // and `ctx.fs.read` throws FILE_NOT_FOUND (a directory is never in + // the files map) — the raw error this refusal replaces. Real POSIX + // `open(path, 'wx')` throws EEXIST for an existing directory too + // (confirmed against Node), which the memory adapter's + // `writeExclusive` does not model — it only checks files/symlinks — + // so `writeExclusive` is patched here to reject the same way a + // correct adapter (or a real one) would. + const ctx = createMemoryContext(); + const entries = buildEntries(3); + const dir = packDirOf(ctx); + const idxPath = `${dir}/pack-${PACK_SHA}.idx`; + await ctx.fs.mkdir(idxPath); + // The directory's stat is patched to report the exact size of the + // index about to be written, so `isFile` is the only discriminator + // this case can trip — the size check is pinned by its own case. + const idxBytes = await buildIdx(ctx, sortPackIndexEntries(entries), PACK_SHA); + const originalWriteExclusive = ctx.fs.writeExclusive.bind(ctx.fs); + const originalStat = ctx.fs.stat.bind(ctx.fs); + const failingFs: Context['fs'] = { + ...ctx.fs, + writeExclusive: async (path: string, data: Uint8Array) => { + if (path === idxPath) throw new TsgitError({ code: 'FILE_EXISTS', path }); + return originalWriteExclusive(path, data); + }, + stat: async (path: string) => { + const real = await originalStat(path); + return path === idxPath ? { ...real, size: idxBytes.length } : real; + }, + }; + const failingCtx: Context = { ...ctx, fs: failingFs }; + const sut = writePackSiblingArtifacts; + + // Act + let caught: unknown; + try { + await sut(failingCtx, siblingInput(dir, entries)); + } catch (err) { + caught = err; + } + + // Assert + expectMismatch(caught, idxPath); + }); + }); + }); + + describe('Given a same-size, differing-bytes .idx already occupying its sibling name', () => { + describe('When writePackSiblingArtifacts runs', () => { + it('Then it refuses naming the index, leaves the existing bytes untouched and writes no .rev', async () => { + // Arrange — same length as the real buildIdx output, so only the + // byte-compare guard (not the stat-based size short-circuit) can + // observe the difference — keeps that branch alive as a fixture. + const ctx = createMemoryContext(); + const entries = buildEntries(3); + const dir = packDirOf(ctx); + const idxPath = `${dir}/pack-${PACK_SHA}.idx`; + const idxBytes = await buildIdx(ctx, sortPackIndexEntries(entries), PACK_SHA); + const flipped = idxBytes.slice(); + flipped[0] = (flipped[0] ?? 0) ^ 0xff; + await ctx.fs.writeExclusive(idxPath, flipped); + const sut = writePackSiblingArtifacts; + + // Act + let caught: unknown; + try { + await sut(ctx, siblingInput(dir, entries)); + } catch (err) { + caught = err; + } + + // Assert + expectMismatch(caught, idxPath); + expect(await ctx.fs.read(idxPath)).toEqual(flipped); + expect(await ctx.fs.exists(`${dir}/pack-${PACK_SHA}.rev`)).toBe(false); + }); + }); + }); + + describe('Given writeExclusive rejects the .promisor path with something other than FILE_EXISTS', () => { + describe('When writePackSiblingArtifacts runs with promisor: true', () => { + it('Then the rejection propagates rather than being treated as tolerable absence', async () => { + // Arrange — mirrors the `.rev` failing-fs case above, for + // writeSentinelIfAbsent's own rethrow branch. + const ctx = createMemoryContext(); + const entries = buildEntries(2); + const dir = packDirOf(ctx); + const failingFs: Context['fs'] = { + ...ctx.fs, + writeExclusive: async (path: string, data: Uint8Array) => { + if (path.endsWith('.promisor')) { + throw new TsgitError({ code: 'PERMISSION_DENIED', path }); + } + return ctx.fs.writeExclusive(path, data); + }, + }; + const failingCtx: Context = { ...ctx, fs: failingFs }; + const sut = writePackSiblingArtifacts; + + // Act + let caught: unknown; + try { + await sut(failingCtx, { packDir: dir, entries, packSha: PACK_SHA, promisor: true }); + } catch (err) { + caught = err; + } + + // Assert + expect(caught).toBeInstanceOf(TsgitError); + expect((caught as TsgitError).data.code).toBe('PERMISSION_DENIED'); + }); + }); + }); + + describe('Given a .idx occupant whose size differs from the index about to be written', () => { + describe('When writePackSiblingArtifacts runs', () => { + it('Then it refuses naming the index without ever reading the occupant', async () => { + // Arrange — a wrong-size occupant must be refused on its stat alone; a + // read that reaches it is the unbounded-read defect, so it fails loudly. + const ctx = createMemoryContext(); + const entries = buildEntries(3); + const dir = packDirOf(ctx); + const idxPath = `${dir}/pack-${PACK_SHA}.idx`; + await ctx.fs.writeExclusive(idxPath, new TextEncoder().encode('short occupant')); + const originalRead = ctx.fs.read.bind(ctx.fs); + const spiedFs: Context['fs'] = { + ...ctx.fs, + read: async (path: string) => { + if (path === idxPath) throw new Error('occupant was read before its size was checked'); + return originalRead(path); + }, + }; + const spiedCtx: Context = { ...ctx, fs: spiedFs }; + const sut = writePackSiblingArtifacts; + + // Act + let caught: unknown; + try { + await sut(spiedCtx, siblingInput(dir, entries)); + } catch (err) { + caught = err; + } + + // Assert + expectMismatch(caught, idxPath); + }); + }); + }); + + describe('Given an identical .rev already present and no .idx', () => { + describe('When writePackSiblingArtifacts runs', () => { + it('Then it writes the index and keeps the existing reverse index untouched', async () => { + // Arrange + const ctx = createMemoryContext(); + const entries = buildEntries(3); + const dir = packDirOf(ctx); + const revPath = `${dir}/pack-${PACK_SHA}.rev`; + const revBytes = await buildRev(ctx, sortPackIndexEntries(entries), PACK_SHA); + await ctx.fs.writeExclusive(revPath, revBytes); + const before = await ctx.fs.stat(revPath); + const sut = writePackSiblingArtifacts; + + // Act + await sut(ctx, siblingInput(dir, entries)); + + // Assert + expect(await ctx.fs.exists(`${dir}/pack-${PACK_SHA}.idx`)).toBe(true); + expect(await ctx.fs.read(revPath)).toEqual(revBytes); + expect((await ctx.fs.stat(revPath)).mtimeMs).toBe(before.mtimeMs); + }); + }); + }); + + describe('Given a .rev with different bytes already present', () => { + describe('When writePackSiblingArtifacts runs', () => { + it('Then it refuses naming the reverse index after the index was written', async () => { + // Arrange + const ctx = createMemoryContext(); + const entries = buildEntries(3); + const dir = packDirOf(ctx); + const revPath = `${dir}/pack-${PACK_SHA}.rev`; + const foreign = new TextEncoder().encode('not a reverse index'); + await ctx.fs.writeExclusive(revPath, foreign); + const sut = writePackSiblingArtifacts; + + // Act + let caught: unknown; + try { + await sut(ctx, siblingInput(dir, entries)); + } catch (err) { + caught = err; + } + + // Assert + expectMismatch(caught, revPath); + expect(await ctx.fs.exists(`${dir}/pack-${PACK_SHA}.idx`)).toBe(true); + expect(await ctx.fs.read(revPath)).toEqual(foreign); + }); + }); + }); + + describe('Given promisor: true and a .promisor sentinel already present', () => { + describe('When writePackSiblingArtifacts runs', () => { + it('Then the existing sentinel is kept as it is and the write succeeds', async () => { + // Arrange + const ctx = createMemoryContext(); + const entries = buildEntries(2); + const dir = packDirOf(ctx); + const sentinelPath = `${dir}/pack-${PACK_SHA}.promisor`; + const existing = new TextEncoder().encode('from origin\n'); + await ctx.fs.writeExclusive(sentinelPath, existing); + const sut = writePackSiblingArtifacts; + + // Act + const result = await sut(ctx, { ...siblingInput(dir, entries), promisor: true }); + + // Assert + expect(result.packSha).toBe(PACK_SHA); + expect(await ctx.fs.read(sentinelPath)).toEqual(existing); + expect(await ctx.fs.exists(`${dir}/pack-${PACK_SHA}.idx`)).toBe(true); + }); + }); + }); +}); diff --git a/test/unit/domain/error.test.ts b/test/unit/domain/error.test.ts index 474c82992..74addc6b1 100644 --- a/test/unit/domain/error.test.ts +++ b/test/unit/domain/error.test.ts @@ -759,6 +759,23 @@ describe('domain error — AdapterError', () => { }); }); + describe('Given PACK_ARTIFACT_MISMATCH', () => { + describe('When TsgitError.message is read', () => { + it('Then it names the artefact that differs in contents', () => { + // Arrange & Act + const result = new TsgitErrorClass({ + code: 'PACK_ARTIFACT_MISMATCH', + path: '/repo/.git/objects/pack/pack-abc.idx', + }); + + // Assert + expect(result.message).toBe( + 'PACK_ARTIFACT_MISMATCH: existing pack artefact differs in contents: pack-abc.idx', + ); + }); + }); + }); + describe('Given SHALLOW_FILE_MALFORMED', () => { describe('When TsgitError.message is read', () => { it('Then it equals the documented format with line number and reason', () => { diff --git a/test/unit/domain/exhaustiveness.ts b/test/unit/domain/exhaustiveness.ts index d792b86b7..ab3f4fd51 100644 --- a/test/unit/domain/exhaustiveness.ts +++ b/test/unit/domain/exhaustiveness.ts @@ -81,6 +81,7 @@ export function assertExhaustiveSwitch(data: TsgitErrorData): void { case 'EMPTY_RECEIVE_UPDATES': case 'RESOURCE_LOCKED': case 'PACK_TOO_LARGE': + case 'PACK_ARTIFACT_MISMATCH': case 'SHALLOW_FILE_MALFORMED': case 'NOT_A_REPOSITORY': case 'DUBIOUS_OWNERSHIP': diff --git a/tooling/bench-summarize.ts b/tooling/bench-summarize.ts index 0a9a321fa..669205447 100644 --- a/tooling/bench-summarize.ts +++ b/tooling/bench-summarize.ts @@ -9,21 +9,19 @@ import * as os from 'node:os'; import * as path from 'node:path'; import * as url from 'node:url'; -const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); -const ROOT = path.resolve(__dirname, '..'); +const ROOT = path.resolve(path.dirname(url.fileURLToPath(import.meta.url)), '..'); const RAW = path.join(ROOT, 'reports', 'benchmarks', 'raw.json'); const OUT = path.join(ROOT, 'reports', 'benchmarks', 'summary.md'); interface BenchEntry { readonly name: string; - readonly hz: number; - readonly mean: number; + readonly hz?: number; + readonly mean?: number; readonly median?: number; - readonly p99: number; readonly rme: number; } -interface BenchGroup { +export interface BenchGroup { readonly fullName: string; readonly benchmarks: ReadonlyArray; } @@ -33,10 +31,28 @@ interface BenchFile { readonly groups: ReadonlyArray; } -interface RawReport { +export interface RawReport { readonly files: ReadonlyArray; } +/** The three impure facts `main()` alone is allowed to read (clock, `process`, + * `os`) — a fixed value here keeps {@link renderSummary} deterministic. */ +export interface SummaryEnvironment { + readonly generatedAt: string; + readonly platform: string; + readonly arch: string; + readonly nodeVersion: string; + readonly cpuModel: string; +} + +/** A {@link BenchEntry} narrowed to the fields a rendered cell needs, once it + * has passed the measured predicate below. */ +interface MeasuredBenchEntry { + readonly value: number; + readonly hz: number; + readonly rme: number; +} + const scenarioName = (fullName: string): string => { const parts = fullName.split(' > '); return parts[parts.length - 1] ?? fullName; @@ -53,26 +69,41 @@ const formatSpeedup = (a: number, b: number): string => { return `${ratio.toFixed(2)}×`; }; -const renderRow = (group: BenchGroup): string => { +/** + * An entry counts as measured when `median ?? mean` is a number AND `hz` is + * a number — vitest emits those together (a full result), never one without + * the other. A benchmark that threw during warmup yields neither. + */ +const asMeasured = (entry: BenchEntry | undefined): MeasuredBenchEntry | undefined => { + if (entry === undefined) return undefined; + const value = entry.median ?? entry.mean; + if (typeof value !== 'number' || typeof entry.hz !== 'number') return undefined; + return { value, hz: entry.hz, rme: entry.rme }; +}; + +const formatCell = (entry: MeasuredBenchEntry): string => + `${formatMs(entry.value)} (${formatHz(entry.hz)}, ±${entry.rme.toFixed(2)}%)`; + +export const renderRow = (group: BenchGroup): string => { const scenario = scenarioName(group.fullName); - const tsgit = findByName(group, 'tsgit'); - const iso = findByName(group, 'isomorphic-git'); - if (tsgit === undefined || iso === undefined) { + const tsgit = asMeasured(findByName(group, 'tsgit')); + if (tsgit === undefined) { return `| ${scenario} | _missing entry_ | _missing entry_ | n/a |`; } - const tsgitMean = tsgit.median ?? tsgit.mean; - const isoMean = iso.median ?? iso.mean; - const speedup = formatSpeedup(isoMean, tsgitMean); - return `| ${scenario} | ${formatMs(tsgitMean)} (${formatHz(tsgit.hz)}, ±${tsgit.rme.toFixed(2)}%) | ${formatMs(isoMean)} (${formatHz(iso.hz)}, ±${iso.rme.toFixed(2)}%) | ${speedup} |`; + const iso = asMeasured(findByName(group, 'isomorphic-git')); + if (iso === undefined) { + return `| ${scenario} | ${formatCell(tsgit)} | — | n/a |`; + } + const speedup = formatSpeedup(iso.value, tsgit.value); + return `| ${scenario} | ${formatCell(tsgit)} | ${formatCell(iso)} | ${speedup} |`; }; -const main = async (): Promise => { - const raw = JSON.parse(await readFile(RAW, 'utf8')) as RawReport; +export const renderSummary = (raw: RawReport, environment: SummaryEnvironment): string => { const groups = raw.files.flatMap((file) => file.groups); const lines: string[] = [ '# Benchmark results', '', - `Generated ${new Date().toISOString()} on \`${process.platform}-${process.arch}\` (Node ${process.version}, ${os.cpus()[0]?.model ?? 'unknown CPU'}).`, + `Generated ${environment.generatedAt} on \`${environment.platform}-${environment.arch}\` (Node ${environment.nodeVersion}, ${environment.cpuModel}).`, '', '| Scenario | tsgit | isomorphic-git | speedup (tsgit faster) |', '|---|---|---|---|', @@ -81,14 +112,34 @@ const main = async (): Promise => { '> _speedup > 1×_ means tsgit beat isomorphic-git on median runtime. Raw', '> data in `reports/benchmarks/raw.json` includes p75/p99/RME and per-run', '> sample counts. GitHub Actions runners introduce ±20% variance — trust', - '> direction more than absolute numbers.', + '> direction more than absolute numbers. The speedup column applies to', + '> paired rows only.', '', ]; - await writeFile(OUT, lines.join('\n'), 'utf8'); + return lines.join('\n'); +}; + +const invokedDirectly = (): boolean => { + const entry = process.argv[1]; + return entry !== undefined && path.resolve(entry) === url.fileURLToPath(import.meta.url); +}; + +const main = async (): Promise => { + const raw = JSON.parse(await readFile(RAW, 'utf8')) as RawReport; + const environment: SummaryEnvironment = { + generatedAt: new Date().toISOString(), + platform: process.platform, + arch: process.arch, + nodeVersion: process.version, + cpuModel: os.cpus()[0]?.model ?? 'unknown CPU', + }; + await writeFile(OUT, renderSummary(raw, environment), 'utf8'); process.stdout.write(`Wrote ${OUT}\n`); }; -main().catch((err: unknown) => { - process.stderr.write(`${err instanceof Error ? err.message : String(err)}\n`); - process.exit(1); -}); +if (invokedDirectly()) { + main().catch((err: unknown) => { + process.stderr.write(`${err instanceof Error ? err.message : String(err)}\n`); + process.exit(1); + }); +} diff --git a/tooling/bench-to-snapshot.ts b/tooling/bench-to-snapshot.ts index f64246993..3daa6c190 100644 --- a/tooling/bench-to-snapshot.ts +++ b/tooling/bench-to-snapshot.ts @@ -14,6 +14,10 @@ * resolved Node version (never the CI alias, which is constant) in `extra`, * so a step in the `gh-pages` trend series can be attributed to a runtime * change rather than misread as a regression. + * + * The publish path refuses a value-less entry by name before writing + * anything; `bench-check.ts`, the other consumer of `toSnapshotEntries`, + * deliberately does not inherit that refusal. */ import { readFile, writeFile } from 'node:fs/promises'; import * as path from 'node:path'; @@ -23,7 +27,7 @@ const RESOLVED_NODE_VERSION_ENV_VAR = 'RESOLVED_NODE_VERSION'; interface RawBenchmark { readonly name: string; - readonly mean: number; + readonly mean?: number; readonly median?: number; } @@ -52,22 +56,56 @@ export interface StampedSnapshotEntry extends SnapshotEntry { readonly extra: string; } +/** A benchmark's tracked metric — median runtime, falling back to mean — or + * `undefined` when vitest emitted neither (a benchmark that threw in warmup). */ +const benchmarkValue = (bench: RawBenchmark): number | undefined => bench.median ?? bench.mean; + +/** The `" > "` key shared by every snapshot entry + * and by {@link assertEveryBenchmarkValued}'s offender list. */ +const benchmarkKey = (group: RawGroup, bench: RawBenchmark): string => + `${group.fullName} > ${bench.name}`; + /** - * Flattens every (group, benchmark) pair into one snapshot entry. `value` is - * the median runtime (fallback: mean) in ms — smaller is better, matching - * `customSmallerIsBetter`. + * Flattens every (group, benchmark) pair into one snapshot entry, skipping a + * benchmark that yields no value. `value` is the median runtime (fallback: + * mean) in ms — smaller is better, matching `customSmallerIsBetter`. */ export const toSnapshotEntries = (raw: RawReport): SnapshotEntry[] => raw.files.flatMap((file) => file.groups.flatMap((group) => - group.benchmarks.map((bench) => ({ - name: `${group.fullName} > ${bench.name}`, - unit: 'ms' as const, - value: bench.median ?? bench.mean, - })), + group.benchmarks.flatMap((bench) => { + const value = benchmarkValue(bench); + return value === undefined + ? [] + : [{ name: benchmarkKey(group, bench), unit: 'ms' as const, value }]; + }), ), ); +/** + * Refuses a parsed report that holds a benchmark carrying neither `median` + * nor `mean`, naming every offender as `" > "`. + * Returns the report unchanged (same reference) when every benchmark yields + * a value. Placed beside `toSnapshotEntries` rather than inside it: the + * comparison tool (`bench-check.ts`) also converts a report and deliberately + * does not inherit this refusal. + */ +export const assertEveryBenchmarkValued = (raw: RawReport): RawReport => { + const offenders = raw.files.flatMap((file) => + file.groups.flatMap((group) => + group.benchmarks + .filter((bench) => benchmarkValue(bench) === undefined) + .map((bench) => benchmarkKey(group, bench)), + ), + ); + if (offenders.length > 0) { + throw new Error( + `Benchmark(s) with no value (neither median nor mean): ${offenders.join(', ')}`, + ); + } + return raw; +}; + /** Stamps every entry with the resolved Node version, producing the shape * the `gh-pages` publish path writes. */ export const withNodeVersion = ( @@ -102,7 +140,7 @@ const OUT = path.join(ROOT, 'reports', 'benchmarks', 'snapshot.json'); const main = async (): Promise => { const resolvedNodeVersion = resolveNodeVersion(process.env); - const raw = JSON.parse(await readFile(RAW, 'utf8')) as RawReport; + const raw = assertEveryBenchmarkValued(JSON.parse(await readFile(RAW, 'utf8')) as RawReport); const entries = withNodeVersion(toSnapshotEntries(raw), resolvedNodeVersion); await writeFile(OUT, JSON.stringify(entries, null, 2), 'utf8'); process.stdout.write(`Wrote ${entries.length} snapshot entries to ${OUT}\n`); diff --git a/tooling/test/fixtures/bench/throwing-warmup.bench.ts b/tooling/test/fixtures/bench/throwing-warmup.bench.ts new file mode 100644 index 000000000..fc0ac0a49 --- /dev/null +++ b/tooling/test/fixtures/bench/throwing-warmup.bench.ts @@ -0,0 +1,25 @@ +/** + * Fixture for the run-phase-hang guard (see bench-dsl.ts's `throws: true` + * doc comment): registers a single scenario whose `sut` throws on its very + * first call, i.e. during vitest's warmup phase. Lives outside + * `test/bench/**` so the real sweep (`vitest.bench.config.ts`'s + * `include: ['test/bench/**\/*.bench.ts']`) never runs it — only the + * integration test that spawns vitest against a config scoped to this one + * file does. + * + * Not imported by that integration test: loading this module outside + * benchmark mode calls vitest's `bench()` before it is registered, which + * throws. The sibling test asserts on this file's error message as a + * literal instead — keep the two in sync. + */ +import { benchScenario } from '../../../../test/bench/support/bench-dsl.js'; + +benchScenario( + 'Given a scenario whose sut throws on its first (warmup) call', + 'When vitest bench runs it under throws: true, Then the run fails rather than hanging or passing silently', + () => ({ + sut: (): void => { + throw new Error('warmup boom: this scenario must fail the run'); + }, + }), +); diff --git a/tooling/test/integration/bench-warmup-throw.test.ts b/tooling/test/integration/bench-warmup-throw.test.ts new file mode 100644 index 000000000..d48f5ebad --- /dev/null +++ b/tooling/test/integration/bench-warmup-throw.test.ts @@ -0,0 +1,144 @@ +/** + * @proves + * surface: benchDsl.throws + * bucket: coverage-gap + * unique: a warmup throw fails the vitest bench run instead of reporting a silent zero-sample pass; only a spawned run can observe the verdict + */ +import { execFile } from 'node:child_process'; +import { mkdtemp, rm, writeFile } from 'node:fs/promises'; +import * as path from 'node:path'; +import { promisify } from 'node:util'; + +import { minimatch } from 'minimatch'; +import { describe, expect, it } from 'vitest'; + +import benchSweepConfig from '../../../vitest.bench.config.ts'; + +const execFileAsync = promisify(execFile); +const REPO_ROOT = path.resolve(import.meta.dirname, '..', '..', '..'); +const VITEST_BIN = path.join(REPO_ROOT, 'node_modules', '.bin', 'vitest'); +const FIXTURE = path.join( + REPO_ROOT, + 'tooling', + 'test', + 'fixtures', + 'bench', + 'throwing-warmup.bench.ts', +); +const FIXTURE_RELATIVE_TO_ROOT = path.relative(REPO_ROOT, FIXTURE).split(path.sep).join('/'); +// Not imported from the fixture: loading that module outside benchmark mode +// calls vitest's `bench()` before it is registered, which throws. Keep this +// literal in sync with the `throw` in throwing-warmup.bench.ts. +const WARMUP_ERROR_MESSAGE = 'warmup boom: this scenario must fail the run'; + +// The spawned vitest process should fail promptly; this is a safety net +// against a regression that makes it hang instead. +const SPAWN_KILL_TIMEOUT_MS = 60_000; +const TEST_TIMEOUT_MS = 90_000; + +interface CliRun { + readonly stdout: string; + readonly stderr: string; + readonly code: number; + /** True when `execFile`'s own timeout killed the process — the guard this + * test names can only fail with a non-zero `code` for the RIGHT reason + * (the fixture's warmup throw) if this is false; a hang would also + * produce a non-zero code, but via a forced kill instead. */ + readonly killed: boolean; +} + +const runVitestBenchAgainstFixture = async (configPath: string): Promise => { + try { + const { stdout, stderr } = await execFileAsync( + VITEST_BIN, + ['bench', '--run', '--config', configPath], + { cwd: REPO_ROOT, timeout: SPAWN_KILL_TIMEOUT_MS }, + ); + return { stdout, stderr, code: 0, killed: false }; + } catch (err) { + const e = err as { stdout?: string; stderr?: string; code?: number; killed?: boolean }; + return { + stdout: e.stdout ?? '', + stderr: e.stderr ?? '', + code: e.code ?? 1, + killed: e.killed ?? false, + }; + } +}; + +/** Scopes a throwaway vitest run to exactly the fixture — the real sweep + * (`vitest.bench.config.ts`) must never pick it up; see the sibling test + * below that pins that. */ +const writeFixtureOnlyConfig = async (configPath: string): Promise => { + await writeFile( + configPath, + [ + "import { defineConfig } from 'vitest/config';", + '', + 'export default defineConfig({', + ' test: {', + ` root: ${JSON.stringify(REPO_ROOT)},`, + ' benchmark: {', + ` include: [${JSON.stringify(FIXTURE)}],`, + ' },', + ' },', + '});', + '', + ].join('\n'), + 'utf8', + ); +}; + +describe('the real bench sweep config', () => { + describe('Given its include glob and the throwing-warmup fixture path', () => { + describe('When the glob is matched against the fixture', () => { + it('Then the fixture falls outside the sweep and is never picked up by it', () => { + // Arrange + const sut = minimatch; + const includeGlobs = benchSweepConfig.test?.benchmark?.include ?? []; + + // Act + const matchesSweep = includeGlobs.some((glob) => sut(FIXTURE_RELATIVE_TO_ROOT, glob)); + + // Assert + expect(includeGlobs).not.toEqual([]); + expect(matchesSweep).toBe(false); + }); + }); + }); +}); + +describe('vitest bench run-phase-throw guard (integration)', () => { + describe('Given a bench scenario whose sut throws on its first (warmup) call', () => { + describe('When vitest bench runs it in isolation under throws: true', () => { + it( + 'Then the run fails, naming the warmup error, instead of hanging or passing silently', + async () => { + // Arrange — mkdtemp itself lives inside the try: a config-write + // failure between the two must not leak the directory past the + // finally below. + let configDir: string | undefined; + try { + configDir = await mkdtemp(path.join(REPO_ROOT, '.bench-warmup-throw-')); + const configPath = path.join(configDir, 'vitest.config.ts'); + await writeFixtureOnlyConfig(configPath); + const sut = runVitestBenchAgainstFixture; + + // Act + const result = await sut(configPath); + + // Assert — a non-zero code without a forced kill proves the + // fixture's warmup throw failed the run rather than a hang + // getting reaped by execFile's own timeout. + expect(result.code).not.toBe(0); + expect(result.killed).toBe(false); + expect(`${result.stdout}${result.stderr}`).toContain(WARMUP_ERROR_MESSAGE); + } finally { + if (configDir !== undefined) await rm(configDir, { recursive: true, force: true }); + } + }, + TEST_TIMEOUT_MS, + ); + }); + }); +}); diff --git a/tooling/test/unit/bench-dsl.test.ts b/tooling/test/unit/bench-dsl.test.ts index 1c62e55c9..9c669a526 100644 --- a/tooling/test/unit/bench-dsl.test.ts +++ b/tooling/test/unit/bench-dsl.test.ts @@ -41,7 +41,25 @@ describe('onMeasuredRun', () => { describe('hooksFor', () => { describe('Given a comparison without a teardown', () => { describe('When hooksFor routes it', () => { - it('Then neither bench receives options', () => { + it('Then both benches receive throwing options and neither carries a teardown', () => { + // Arrange + const sut = hooksFor; + + // Act + const result = sut({ sut: noop }); + + // Assert + expect(result.tsgit?.throws).toBe(true); + expect(result.baseline?.throws).toBe(true); + expect(result.tsgit?.teardown).toBeUndefined(); + expect(result.baseline?.teardown).toBeUndefined(); + }); + }); + }); + + describe('Given a comparison with a baseline and no teardown', () => { + describe('When hooksFor routes it', () => { + it('Then both benches receive throwing options and neither carries a teardown', () => { // Arrange const sut = hooksFor; @@ -49,7 +67,10 @@ describe('hooksFor', () => { const result = sut({ sut: noop, baseline: noop }); // Assert - expect(result).toEqual({}); + expect(result.tsgit?.throws).toBe(true); + expect(result.baseline?.throws).toBe(true); + expect(result.tsgit?.teardown).toBeUndefined(); + expect(result.baseline?.teardown).toBeUndefined(); }); }); }); @@ -70,7 +91,9 @@ describe('hooksFor', () => { // Assert expect(callsAfterWarmup).toBe(0); expect(teardown).toHaveBeenCalledTimes(1); - expect(Object.hasOwn(result, 'baseline')).toBe(false); + expect(result.tsgit?.throws).toBe(true); + expect(result.baseline?.throws).toBe(true); + expect(result.baseline?.teardown).toBeUndefined(); }); }); }); @@ -88,7 +111,9 @@ describe('hooksFor', () => { // Assert expect(teardown).toHaveBeenCalledTimes(1); - expect(Object.hasOwn(result, 'tsgit')).toBe(false); + expect(result.tsgit?.throws).toBe(true); + expect(result.baseline?.throws).toBe(true); + expect(result.tsgit?.teardown).toBeUndefined(); }); }); }); diff --git a/tooling/test/unit/bench-summarize.test.ts b/tooling/test/unit/bench-summarize.test.ts new file mode 100644 index 000000000..64066ffe1 --- /dev/null +++ b/tooling/test/unit/bench-summarize.test.ts @@ -0,0 +1,391 @@ +import { describe, expect, it } from 'vitest'; + +import { + type BenchGroup, + type RawReport, + renderRow, + renderSummary, + type SummaryEnvironment, +} from '../../bench-summarize.js'; + +describe('renderRow', () => { + describe('Given a group with a measured tsgit entry and a measured isomorphic-git entry', () => { + describe('When renderRow renders it', () => { + it('Then the row carries both cells and the speedup', () => { + // Arrange + const group: BenchGroup = { + fullName: + 'Given a delta-chain repo (300 commits, deep delta chains), When readBlob() reads a deep-chain leaf from a cold pack, Then compare tsgit against isomorphic-git', + benchmarks: [ + { name: 'tsgit', median: 3.698, hz: 256, rme: 5.26 }, + { name: 'isomorphic-git', median: 1.233, hz: 529, rme: 13.78 }, + ], + }; + const sut = renderRow; + + // Act + const result = sut(group); + + // Assert + expect(result).toBe( + '| Given a delta-chain repo (300 commits, deep delta chains), When readBlob() reads a deep-chain leaf from a cold pack, Then compare tsgit against isomorphic-git | 3.698 ms (256/s, ±5.26%) | 1.233 ms (529/s, ±13.78%) | 0.33× |', + ); + }); + }); + }); + + describe('Given a group with a measured tsgit entry and no isomorphic-git entry', () => { + describe('When renderRow renders it', () => { + it('Then the tsgit cell renders as in a paired row, the baseline cell is an em dash and the speedup is n/a', () => { + // Arrange + const group: BenchGroup = { + fullName: 'inflate a 64 KiB zlib member', + benchmarks: [{ name: 'tsgit', median: 0.512, hz: 1953, rme: 2.1 }], + }; + const sut = renderRow; + + // Act + const result = sut(group); + + // Assert + expect(result).toBe( + '| inflate a 64 KiB zlib member | 0.512 ms (1953/s, ±2.10%) | — | n/a |', + ); + }); + }); + }); + + describe('Given a group holding only an isomorphic-git entry', () => { + describe('When renderRow renders it', () => { + it('Then both cells render as missing', () => { + // Arrange + const group: BenchGroup = { + fullName: 'inflate a 64 KiB zlib member', + benchmarks: [{ name: 'isomorphic-git', median: 0.9, hz: 1111, rme: 3.4 }], + }; + const sut = renderRow; + + // Act + const result = sut(group); + + // Assert + expect(result).toBe( + '| inflate a 64 KiB zlib member | _missing entry_ | _missing entry_ | n/a |', + ); + }); + }); + }); + + describe('Given a group with an empty benchmark list', () => { + describe('When renderRow renders it', () => { + it('Then both cells render as missing', () => { + // Arrange + const group: BenchGroup = { fullName: 'inflate a 64 KiB zlib member', benchmarks: [] }; + const sut = renderRow; + + // Act + const result = sut(group); + + // Assert + expect(result).toBe( + '| inflate a 64 KiB zlib member | _missing entry_ | _missing entry_ | n/a |', + ); + }); + }); + }); + + describe('Given a tsgit entry with a mean and no median', () => { + describe('When renderRow renders it', () => { + it('Then the cell is built from the mean', () => { + // Arrange + const group: BenchGroup = { + fullName: 'inflate a 64 KiB zlib member', + benchmarks: [{ name: 'tsgit', mean: 0.75, hz: 1333, rme: 1.5 }], + }; + const sut = renderRow; + + // Act + const result = sut(group); + + // Assert + expect(result).toBe( + '| inflate a 64 KiB zlib member | 0.750 ms (1333/s, ±1.50%) | — | n/a |', + ); + }); + }); + }); + + describe('Given a tsgit-only group whose entry carries neither median nor mean nor hz', () => { + describe('When renderRow renders it', () => { + it('Then both cells render as missing and nothing throws', () => { + // Arrange + const group: BenchGroup = { + fullName: 'a scenario that threw during warmup', + benchmarks: [{ name: 'tsgit', rme: 0 }], + }; + const sut = renderRow; + + // Act + const result = sut(group); + + // Assert + expect(result).toBe( + '| a scenario that threw during warmup | _missing entry_ | _missing entry_ | n/a |', + ); + }); + }); + }); + + describe('Given a tsgit entry with a median and no hz', () => { + describe('When renderRow renders it', () => { + it('Then both cells render as missing', () => { + // Arrange + const group: BenchGroup = { + fullName: 'inflate a 64 KiB zlib member', + benchmarks: [{ name: 'tsgit', median: 0.5, rme: 1.5 }], + }; + const sut = renderRow; + + // Act + const result = sut(group); + + // Assert + expect(result).toBe( + '| inflate a 64 KiB zlib member | _missing entry_ | _missing entry_ | n/a |', + ); + }); + }); + }); + + describe('Given a tsgit entry with an hz and neither median nor mean', () => { + describe('When renderRow renders it', () => { + it('Then both cells render as missing', () => { + // Arrange + const group: BenchGroup = { + fullName: 'inflate a 64 KiB zlib member', + benchmarks: [{ name: 'tsgit', hz: 1953, rme: 2.1 }], + }; + const sut = renderRow; + + // Act + const result = sut(group); + + // Assert + expect(result).toBe( + '| inflate a 64 KiB zlib member | _missing entry_ | _missing entry_ | n/a |', + ); + }); + }); + }); + + describe('Given a group whose tsgit entry is measured and whose isomorphic-git entry is not', () => { + describe('When renderRow renders it', () => { + it('Then the row renders as a tsgit-only row', () => { + // Arrange + const group: BenchGroup = { + fullName: 'inflate a 64 KiB zlib member', + benchmarks: [ + { name: 'tsgit', median: 0.512, hz: 1953, rme: 2.1 }, + { name: 'isomorphic-git', rme: 0 }, + ], + }; + const sut = renderRow; + + // Act + const result = sut(group); + + // Assert + expect(result).toBe( + '| inflate a 64 KiB zlib member | 0.512 ms (1953/s, ±2.10%) | — | n/a |', + ); + }); + }); + }); + + describe('Given a paired group whose tsgit value is zero', () => { + describe('When renderRow renders it', () => { + it('Then the speedup reads n/a', () => { + // Arrange + const group: BenchGroup = { + fullName: 'a scenario tsgit runs instantaneously', + benchmarks: [ + { name: 'tsgit', median: 0, hz: 500000, rme: 0.01 }, + { name: 'isomorphic-git', median: 1.5, hz: 667, rme: 4.2 }, + ], + }; + const sut = renderRow; + + // Act + const result = sut(group); + + // Assert + expect(result).toBe( + '| a scenario tsgit runs instantaneously | 0.000 ms (500000/s, ±0.01%) | 1.500 ms (667/s, ±4.20%) | n/a |', + ); + }); + }); + }); +}); + +describe('renderSummary', () => { + describe('Given a report with one paired group and one tsgit-only group and a fixed environment', () => { + describe('When renderSummary builds the document', () => { + it('Then the document carries the header, the table header, one row per group in file-then-group order, and the footnote', () => { + // Arrange + const raw: RawReport = { + files: [ + { + filepath: 'test/bench/example.bench.ts', + groups: [ + { + fullName: 'first scenario', + benchmarks: [ + { name: 'tsgit', median: 3.698, hz: 256, rme: 5.26 }, + { name: 'isomorphic-git', median: 1.233, hz: 529, rme: 13.78 }, + ], + }, + { + fullName: 'second scenario', + benchmarks: [{ name: 'tsgit', median: 0.512, hz: 1953, rme: 2.1 }], + }, + ], + }, + ], + }; + const environment: SummaryEnvironment = { + generatedAt: '2026-09-05T00:00:00.000Z', + platform: 'darwin', + arch: 'arm64', + nodeVersion: 'v24.19.0', + cpuModel: 'Apple M4', + }; + const sut = renderSummary; + + // Act + const result = sut(raw, environment); + + // Assert + expect(result).toBe( + [ + '# Benchmark results', + '', + 'Generated 2026-09-05T00:00:00.000Z on `darwin-arm64` (Node v24.19.0, Apple M4).', + '', + '| Scenario | tsgit | isomorphic-git | speedup (tsgit faster) |', + '|---|---|---|---|', + '| first scenario | 3.698 ms (256/s, ±5.26%) | 1.233 ms (529/s, ±13.78%) | 0.33× |', + '| second scenario | 0.512 ms (1953/s, ±2.10%) | — | n/a |', + '', + '> _speedup > 1×_ means tsgit beat isomorphic-git on median runtime. Raw', + '> data in `reports/benchmarks/raw.json` includes p75/p99/RME and per-run', + '> sample counts. GitHub Actions runners introduce ±20% variance — trust', + '> direction more than absolute numbers. The speedup column applies to', + '> paired rows only.', + '', + ].join('\n'), + ); + }); + }); + }); + + describe('Given a report with two files, each holding one group, and a fixed environment', () => { + describe('When renderSummary builds the document', () => { + it('Then both rows appear, the first file’s group before the second’s', () => { + // Arrange + const raw: RawReport = { + files: [ + { + filepath: 'test/bench/a.bench.ts', + groups: [ + { + fullName: 'from file a', + benchmarks: [{ name: 'tsgit', median: 1, hz: 1000, rme: 1 }], + }, + ], + }, + { + filepath: 'test/bench/b.bench.ts', + groups: [ + { + fullName: 'from file b', + benchmarks: [{ name: 'tsgit', median: 2, hz: 500, rme: 2 }], + }, + ], + }, + ], + }; + const environment: SummaryEnvironment = { + generatedAt: '2026-09-05T00:00:00.000Z', + platform: 'darwin', + arch: 'arm64', + nodeVersion: 'v24.19.0', + cpuModel: 'Apple M4', + }; + const sut = renderSummary; + + // Act + const result = sut(raw, environment); + + // Assert + expect(result).toBe( + [ + '# Benchmark results', + '', + 'Generated 2026-09-05T00:00:00.000Z on `darwin-arm64` (Node v24.19.0, Apple M4).', + '', + '| Scenario | tsgit | isomorphic-git | speedup (tsgit faster) |', + '|---|---|---|---|', + '| from file a | 1.000 ms (1000/s, ±1.00%) | — | n/a |', + '| from file b | 2.000 ms (500/s, ±2.00%) | — | n/a |', + '', + '> _speedup > 1×_ means tsgit beat isomorphic-git on median runtime. Raw', + '> data in `reports/benchmarks/raw.json` includes p75/p99/RME and per-run', + '> sample counts. GitHub Actions runners introduce ±20% variance — trust', + '> direction more than absolute numbers. The speedup column applies to', + '> paired rows only.', + '', + ].join('\n'), + ); + }); + }); + }); + + describe('Given a report with no files and a fixed environment', () => { + describe('When renderSummary builds the document', () => { + it('Then the document carries the header and the footnote and no rows', () => { + // Arrange + const raw: RawReport = { files: [] }; + const environment: SummaryEnvironment = { + generatedAt: '2026-09-05T00:00:00.000Z', + platform: 'darwin', + arch: 'arm64', + nodeVersion: 'v24.19.0', + cpuModel: 'Apple M4', + }; + const sut = renderSummary; + + // Act + const result = sut(raw, environment); + + // Assert + expect(result).toBe( + [ + '# Benchmark results', + '', + 'Generated 2026-09-05T00:00:00.000Z on `darwin-arm64` (Node v24.19.0, Apple M4).', + '', + '| Scenario | tsgit | isomorphic-git | speedup (tsgit faster) |', + '|---|---|---|---|', + '', + '> _speedup > 1×_ means tsgit beat isomorphic-git on median runtime. Raw', + '> data in `reports/benchmarks/raw.json` includes p75/p99/RME and per-run', + '> sample counts. GitHub Actions runners introduce ±20% variance — trust', + '> direction more than absolute numbers. The speedup column applies to', + '> paired rows only.', + '', + ].join('\n'), + ); + }); + }); + }); +}); diff --git a/tooling/test/unit/bench-to-snapshot.test.ts b/tooling/test/unit/bench-to-snapshot.test.ts index ca99dfe46..903ff22e4 100644 --- a/tooling/test/unit/bench-to-snapshot.test.ts +++ b/tooling/test/unit/bench-to-snapshot.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { + assertEveryBenchmarkValued, type RawReport, resolveNodeVersion, toSnapshotEntries, @@ -96,6 +97,136 @@ describe('toSnapshotEntries', () => { }); }); }); + + describe('Given a group holding one valued benchmark and one carrying neither median nor mean', () => { + describe('When toSnapshotEntries runs', () => { + it('Then only the valued benchmark becomes an entry', () => { + // Arrange + const report: RawReport = { + files: [ + { + groups: [ + { + fullName: 'log:walk', + benchmarks: [{ name: 'tsgit', mean: 1, median: 1 }, { name: 'isomorphic-git' }], + }, + ], + }, + ], + }; + + // Act + const result = toSnapshotEntries(report); + + // Assert + expect(result).toEqual([{ name: 'log:walk > tsgit', unit: 'ms', value: 1 }]); + }); + }); + }); +}); + +describe('assertEveryBenchmarkValued', () => { + describe('Given a report whose only benchmark carries neither median nor mean', () => { + describe('When the guard runs', () => { + it('Then it throws naming that benchmark', () => { + // Arrange + const report: RawReport = { + files: [{ groups: [{ fullName: 'log:walk', benchmarks: [{ name: 'tsgit' }] }] }], + }; + + // Act + let thrown: unknown; + try { + assertEveryBenchmarkValued(report); + } catch (err) { + thrown = err; + } + + // Assert + expect(thrown).toBeInstanceOf(Error); + expect((thrown as Error).message).toContain('log:walk > tsgit'); + }); + }); + }); + + describe('Given a report with two benchmarks carrying neither median nor mean', () => { + describe('When the guard runs', () => { + it('Then the message names the exact prefix and both keys, comma-separated', () => { + // Arrange + const report: RawReport = { + files: [ + { groups: [{ fullName: 'log:walk', benchmarks: [{ name: 'tsgit' }] }] }, + { groups: [{ fullName: 'status:clean', benchmarks: [{ name: 'isomorphic-git' }] }] }, + ], + }; + + // Act + let thrown: unknown; + try { + assertEveryBenchmarkValued(report); + } catch (err) { + thrown = err; + } + + // Assert + expect(thrown).toBeInstanceOf(Error); + expect((thrown as Error).message).toBe( + 'Benchmark(s) with no value (neither median nor mean): log:walk > tsgit, status:clean > isomorphic-git', + ); + }); + }); + }); + + describe('Given a benchmark with a mean and no median', () => { + describe('When the guard runs', () => { + it('Then it returns the report unchanged', () => { + // Arrange + const report: RawReport = { + files: [{ groups: [{ fullName: 'log:walk', benchmarks: [{ name: 'tsgit', mean: 9 }] }] }], + }; + + // Act + const result = assertEveryBenchmarkValued(report); + + // Assert + expect(result).toBe(report); + }); + }); + }); + + describe('Given a benchmark with a median and no mean', () => { + describe('When the guard runs', () => { + it('Then it returns the report unchanged', () => { + // Arrange + const report: RawReport = { + files: [ + { groups: [{ fullName: 'log:walk', benchmarks: [{ name: 'tsgit', median: 4 }] }] }, + ], + }; + + // Act + const result = assertEveryBenchmarkValued(report); + + // Assert + expect(result).toBe(report); + }); + }); + }); + + describe('Given a report with no files', () => { + describe('When the guard runs', () => { + it('Then it returns the report unchanged', () => { + // Arrange + const report: RawReport = { files: [] }; + + // Act + const result = assertEveryBenchmarkValued(report); + + // Assert + expect(result).toBe(report); + }); + }); + }); }); describe('withNodeVersion', () => {