@scolladon/tsgit 0.9.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +116 -1
- package/dist/cjs/adapters/browser/index.cjs +1 -1
- package/dist/cjs/adapters/browser/index.cjs.map +1 -1
- package/dist/cjs/adapters/memory/index.cjs +1 -1
- package/dist/cjs/adapters/memory/index.cjs.map +1 -1
- package/dist/cjs/adapters/node/index.cjs +1 -1
- package/dist/cjs/adapters/node/index.cjs.map +1 -1
- package/dist/cjs/chunks/{browser-http-transport-BBF8uw-f.cjs → browser-http-transport-DcG05jw3.cjs} +2 -2
- package/dist/cjs/chunks/{browser-http-transport-BBF8uw-f.cjs.map → browser-http-transport-DcG05jw3.cjs.map} +1 -1
- package/dist/cjs/chunks/context-BcoAzPuU.cjs.map +1 -1
- package/dist/cjs/chunks/error-CqLvhejR.cjs +2 -0
- package/dist/cjs/chunks/error-CqLvhejR.cjs.map +1 -0
- package/dist/cjs/chunks/index-BcxdLkNe.cjs +2 -0
- package/dist/cjs/chunks/index-BcxdLkNe.cjs.map +1 -0
- package/dist/cjs/chunks/index-D5Nd-Mks.cjs +2 -0
- package/dist/cjs/chunks/index-D5Nd-Mks.cjs.map +1 -0
- package/dist/cjs/chunks/{logger-Cz9r6yt5.cjs → logger-C8Z5BfFF.cjs} +2 -2
- package/dist/cjs/chunks/{logger-Cz9r6yt5.cjs.map → logger-C8Z5BfFF.cjs.map} +1 -1
- package/dist/cjs/chunks/memory-http-transport-Pjyme5KN.cjs +2 -0
- package/dist/cjs/chunks/memory-http-transport-Pjyme5KN.cjs.map +1 -0
- package/dist/cjs/chunks/node-http-transport-UkW5eEm3.cjs +2 -0
- package/dist/cjs/chunks/node-http-transport-UkW5eEm3.cjs.map +1 -0
- package/dist/cjs/chunks/{progress-CK7CT9vU.cjs → progress-CntEbiuo.cjs} +2 -2
- package/dist/cjs/chunks/{progress-CK7CT9vU.cjs.map → progress-CntEbiuo.cjs.map} +1 -1
- package/dist/cjs/chunks/readable-stream-MTA6D0Zh.cjs +2 -0
- package/dist/cjs/chunks/readable-stream-MTA6D0Zh.cjs.map +1 -0
- package/dist/cjs/chunks/repository-B_jx2AKW.cjs +2 -0
- package/dist/cjs/chunks/repository-B_jx2AKW.cjs.map +1 -0
- package/dist/cjs/commands/index.cjs +1 -1
- package/dist/cjs/index.browser.cjs +1 -1
- package/dist/cjs/index.browser.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.default.cjs +1 -1
- package/dist/cjs/index.default.cjs.map +1 -1
- package/dist/cjs/index.node.cjs +1 -1
- package/dist/cjs/index.node.cjs.map +1 -1
- package/dist/cjs/operators/index.cjs +1 -1
- package/dist/cjs/operators/index.cjs.map +1 -1
- package/dist/cjs/primitives/index.cjs +1 -1
- package/dist/cjs/primitives/index.cjs.map +1 -1
- package/dist/cjs/transport/index.cjs.map +1 -1
- package/dist/esm/adapters/browser/index.js +1 -1
- package/dist/esm/adapters/browser/index.js.map +1 -1
- package/dist/esm/adapters/memory/index.js +1 -1
- package/dist/esm/adapters/memory/index.js.map +1 -1
- package/dist/esm/adapters/node/index.js +1 -1
- package/dist/esm/adapters/node/index.js.map +1 -1
- package/dist/esm/chunks/{browser-http-transport-CRPPmib5.js → browser-http-transport-COFgnEyq.js} +2 -2
- package/dist/esm/chunks/{browser-http-transport-CRPPmib5.js.map → browser-http-transport-COFgnEyq.js.map} +1 -1
- package/dist/esm/chunks/context-CumKOV7K.js.map +1 -1
- package/dist/esm/chunks/error-BN9rdQ33.js +2 -0
- package/dist/esm/chunks/error-BN9rdQ33.js.map +1 -0
- package/dist/esm/chunks/index-BdV37p4e.js +2 -0
- package/dist/esm/chunks/index-BdV37p4e.js.map +1 -0
- package/dist/esm/chunks/index-BkRJ9-Im.js +2 -0
- package/dist/esm/chunks/index-BkRJ9-Im.js.map +1 -0
- package/dist/esm/chunks/{logger-Cg7fUh8D.js → logger-BLZbLzva.js} +2 -2
- package/dist/esm/chunks/{logger-Cg7fUh8D.js.map → logger-BLZbLzva.js.map} +1 -1
- package/dist/esm/chunks/memory-http-transport-DRYdYgiE.js +2 -0
- package/dist/esm/chunks/memory-http-transport-DRYdYgiE.js.map +1 -0
- package/dist/esm/chunks/node-http-transport-Bp5cFZCt.js +2 -0
- package/dist/esm/chunks/node-http-transport-Bp5cFZCt.js.map +1 -0
- package/dist/esm/chunks/progress-DJU_f66N.js +2 -0
- package/dist/esm/chunks/{progress-OxUHmDV4.js.map → progress-DJU_f66N.js.map} +1 -1
- package/dist/esm/chunks/readable-stream-CGuf8k1J.js +2 -0
- package/dist/esm/chunks/readable-stream-CGuf8k1J.js.map +1 -0
- package/dist/esm/chunks/repository-DiagDiT_.js +2 -0
- package/dist/esm/chunks/repository-DiagDiT_.js.map +1 -0
- package/dist/esm/commands/index.js +1 -1
- package/dist/esm/index.browser.js +1 -1
- package/dist/esm/index.browser.js.map +1 -1
- package/dist/esm/index.default.js +1 -1
- package/dist/esm/index.default.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.node.js +1 -1
- package/dist/esm/index.node.js.map +1 -1
- package/dist/esm/operators/index.js +1 -1
- package/dist/esm/operators/index.js.map +1 -1
- package/dist/esm/primitives/index.js +1 -1
- package/dist/esm/primitives/index.js.map +1 -1
- package/dist/esm/transport/index.js.map +1 -1
- package/dist/types/adapters/browser/index.d.cts +2 -2
- package/dist/types/adapters/browser/index.d.ts +2 -2
- package/dist/types/adapters/memory/index.d.cts +4 -2
- package/dist/types/adapters/memory/index.d.ts +4 -2
- package/dist/types/adapters/node/index.d.cts +117 -3
- package/dist/types/adapters/node/index.d.ts +117 -3
- package/dist/types/chunks/{context-Ku1aP8Ie.d.cts → context-D84z1i5F.d.cts} +39 -21
- package/dist/types/chunks/{context-C6df52Qs.d.ts → context-o5TPfMB2.d.ts} +39 -21
- package/dist/types/chunks/{diff-change-BwO75AgS.d.cts → diff-change-Bm1zvVsC.d.cts} +1 -1
- package/dist/types/chunks/{diff-change-CUWN3OSK.d.ts → diff-change-alGRzD_j.d.ts} +1 -1
- package/dist/types/chunks/{http-transport--_NdQOiw.d.cts → http-transport-DirKfK2S.d.cts} +1 -1
- package/dist/types/chunks/{http-transport--_NdQOiw.d.ts → http-transport-DirKfK2S.d.ts} +1 -1
- package/dist/types/chunks/{repository-Cv4Y0T9t.d.cts → repository-23evW2h-.d.cts} +5 -4
- package/dist/types/chunks/{repository-BBKJnr8a.d.ts → repository-BT7Xq1kJ.d.ts} +5 -4
- package/dist/types/chunks/write-tree-DNjhjS3t.d.ts +282 -0
- package/dist/types/chunks/write-tree-DVp0RJ_r.d.cts +282 -0
- package/dist/types/commands/index.d.cts +82 -36
- package/dist/types/commands/index.d.ts +82 -36
- package/dist/types/index.browser.d.cts +5 -5
- package/dist/types/index.browser.d.ts +5 -5
- package/dist/types/index.d.cts +5 -5
- package/dist/types/index.d.ts +5 -5
- package/dist/types/index.default.d.cts +5 -5
- package/dist/types/index.default.d.ts +5 -5
- package/dist/types/index.node.d.cts +5 -5
- package/dist/types/index.node.d.ts +5 -5
- package/dist/types/operators/index.d.cts +17 -1
- package/dist/types/operators/index.d.ts +17 -1
- package/dist/types/primitives/index.d.cts +223 -186
- package/dist/types/primitives/index.d.ts +223 -186
- package/dist/types/transport/index.d.cts +1 -1
- package/dist/types/transport/index.d.ts +1 -1
- package/package.json +70 -23
- package/dist/cjs/chunks/error-DL4SHCBJ.cjs +0 -2
- package/dist/cjs/chunks/error-DL4SHCBJ.cjs.map +0 -1
- package/dist/cjs/chunks/error-DN8Vnwr4.cjs +0 -2
- package/dist/cjs/chunks/error-DN8Vnwr4.cjs.map +0 -1
- package/dist/cjs/chunks/index-iUd-bwwm.cjs +0 -2
- package/dist/cjs/chunks/index-iUd-bwwm.cjs.map +0 -1
- package/dist/cjs/chunks/memory-http-transport-DGll7Af4.cjs +0 -2
- package/dist/cjs/chunks/memory-http-transport-DGll7Af4.cjs.map +0 -1
- package/dist/cjs/chunks/merge-base-DlGWnkxP.cjs +0 -2
- package/dist/cjs/chunks/merge-base-DlGWnkxP.cjs.map +0 -1
- package/dist/cjs/chunks/node-http-transport-CuOgJlws.cjs +0 -2
- package/dist/cjs/chunks/node-http-transport-CuOgJlws.cjs.map +0 -1
- package/dist/cjs/chunks/repository-Cbzk-Qwz.cjs +0 -2
- package/dist/cjs/chunks/repository-Cbzk-Qwz.cjs.map +0 -1
- package/dist/esm/chunks/error-CAlAXhN3.js +0 -2
- package/dist/esm/chunks/error-CAlAXhN3.js.map +0 -1
- package/dist/esm/chunks/error-DVZkS_ub.js +0 -2
- package/dist/esm/chunks/error-DVZkS_ub.js.map +0 -1
- package/dist/esm/chunks/index-gUdap5AF.js +0 -2
- package/dist/esm/chunks/index-gUdap5AF.js.map +0 -1
- package/dist/esm/chunks/memory-http-transport-Cv1sbkCX.js +0 -2
- package/dist/esm/chunks/memory-http-transport-Cv1sbkCX.js.map +0 -1
- package/dist/esm/chunks/merge-base-opORz-S1.js +0 -2
- package/dist/esm/chunks/merge-base-opORz-S1.js.map +0 -1
- package/dist/esm/chunks/node-http-transport-CuXVJf0s.js +0 -2
- package/dist/esm/chunks/node-http-transport-CuXVJf0s.js.map +0 -1
- package/dist/esm/chunks/progress-OxUHmDV4.js +0 -2
- package/dist/esm/chunks/repository-BaEhU6zt.js +0 -2
- package/dist/esm/chunks/repository-BaEhU6zt.js.map +0 -1
package/README.md
CHANGED
|
@@ -25,12 +25,22 @@ A pure TypeScript git implementation designed to be the fastest portable git lib
|
|
|
25
25
|
| 9 | Commands (Tier 1 API) | ✅ |
|
|
26
26
|
| 10 | Repository facade | ✅ |
|
|
27
27
|
| 11 | Polish & Launch (CI matrix, browser E2E, benchmarks, TypeDoc, MIGRATION) | ✅ |
|
|
28
|
+
| 12.1 | Clone — smart-HTTP pack fetch + write-objects loop | ✅ |
|
|
29
|
+
| 12.2 | Fetch — ls-refs + want/have negotiation + shallow + prune | ✅ |
|
|
30
|
+
| 12.3 | Push — receive-pack negotiation + pack send + force-with-lease | ✅ |
|
|
31
|
+
| 12.4 | Bench — `clone:small-repo` vs isomorphic-git over `git-http-backend` | ✅ |
|
|
32
|
+
| 13.1 | Working-tree materialisation — `checkout` writes / deletes / chmods files; index + HEAD updated atomically per file | ✅ |
|
|
33
|
+
| 13.2 | `reset --mixed` rebuilds `.git/index` from the target commit's tree under `index.lock`; stat-cache preserved for unchanged paths | ✅ |
|
|
34
|
+
| 13.3 | `reset --hard` materialises both index and working tree to match the target commit's tree; force-rewrites locally-modified files | ✅ |
|
|
35
|
+
| 13.5 | `checkout` acquires `index.lock` before reading the index — closes a known TOCTOU window; path-restore from `'index'` stays lock-free | ✅ |
|
|
36
|
+
| 13.6 | `checkout({ paths, source: 'index' })` synthesises a tree from staged entries — restores from index content, honouring divergence from HEAD | ✅ |
|
|
37
|
+
| 14.4 | Full Windows support — 8.3 short-name reconciliation in `NodeFileSystem.checkContainment`, `ELOOP`/`EACCES` errno parity, `windows-latest` re-added to the unit-test matrix | ✅ |
|
|
28
38
|
|
|
29
39
|
## Features
|
|
30
40
|
|
|
31
41
|
- **Lightning fast** — 3-5x faster than isomorphic-git via fanout binary search, LRU delta cache, zero-copy parsing, streaming inflate
|
|
32
42
|
- **Portable** — Runs on Node.js 18+, Chrome 90+, Firefox 100+, Safari 15.4+, Deno, Bun, Cloudflare Workers
|
|
33
|
-
- **Lightweight** — <
|
|
43
|
+
- **Lightweight** — < 200 kB gzipped full library. Zero runtime dependencies. Tree-shakeable.
|
|
34
44
|
- **Two-tier API** — Ergonomic repository object for common operations + composable AsyncIterable primitives for power users
|
|
35
45
|
- **Type-safe** — Branded types, discriminated unions, exhaustive error codes. No `any`.
|
|
36
46
|
- **Testable** — First-class in-memory adapter. All ports are mockable. Pure functions throughout.
|
|
@@ -86,6 +96,110 @@ const repo = await openRepository({
|
|
|
86
96
|
await repo.init();
|
|
87
97
|
```
|
|
88
98
|
|
|
99
|
+
### Cloning a remote
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
import { openRepository } from '@scolladon/tsgit';
|
|
103
|
+
|
|
104
|
+
const repo = await openRepository({
|
|
105
|
+
cwd: '/tmp/my-clone',
|
|
106
|
+
config: {
|
|
107
|
+
dnsResolver: async (host) => (await import('node:dns')).promises.resolve(host),
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
const result = await repo.clone({
|
|
112
|
+
url: 'https://github.com/owner/repo.git',
|
|
113
|
+
resolver: async (host) => (await import('node:dns')).promises.resolve(host),
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
console.log(result.head); // refs/heads/main
|
|
117
|
+
console.log(result.fetchedRefs.length); // total refs propagated
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Phase 12.1 gives you a valid `.git` directory whose `git log` matches the
|
|
121
|
+
remote's HEAD line. To materialise the working tree, run
|
|
122
|
+
`repo.checkout({ target: result.head })` immediately after — Phase 13.1
|
|
123
|
+
writes every blob, sets the executable bit, follows symlinks, and commits a
|
|
124
|
+
matching `.git/index` atomically. See
|
|
125
|
+
`test/integration/network/clone-http-backend.test.ts` for an end-to-end
|
|
126
|
+
example against a local `git-http-backend`.
|
|
127
|
+
|
|
128
|
+
### Staging files
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
// Literal paths.
|
|
132
|
+
await repo.add(['src/foo.ts', 'src/bar.ts']);
|
|
133
|
+
|
|
134
|
+
// Pathspec globs (Phase 14.2). Any pattern with `*`, `?`, or `**` is a
|
|
135
|
+
// glob; everything else is a literal that also matches descendants.
|
|
136
|
+
// `!`-prefixed entries exclude. Last-match wins.
|
|
137
|
+
await repo.add(['*.ts', '!*.test.ts']); // every .ts minus tests
|
|
138
|
+
await repo.add(['src/**']); // everything under src/
|
|
139
|
+
|
|
140
|
+
// Bulk mode — walk the working tree, stage every modified/new file plus
|
|
141
|
+
// every untracked file that isn't ignored, drop tracked files missing
|
|
142
|
+
// from disk. `paths` MUST be empty when `all: true`.
|
|
143
|
+
const result = await repo.add([], { all: true });
|
|
144
|
+
console.log(result.added); // new staged paths (sorted)
|
|
145
|
+
console.log(result.modified); // changed paths (sorted)
|
|
146
|
+
console.log(result.removed); // tracked paths gone from disk (sorted)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
`repo.rm` and `repo.checkout({ paths })` accept the same pathspec
|
|
150
|
+
syntax. A literal pattern that matches nothing throws
|
|
151
|
+
`PATHSPEC_NO_MATCH`; a glob that matches nothing is a silent no-op
|
|
152
|
+
(matches Git's behaviour). Pathspec syntax is `*`, `?`, `**`, and
|
|
153
|
+
`!` negation; character classes (`[abc]`) and Git magic prefixes
|
|
154
|
+
(`:(top)`, `:(literal)`) are not supported in v1.
|
|
155
|
+
|
|
156
|
+
Phase 14.1 ships bulk-mode `add --all` walking via the new
|
|
157
|
+
`walkWorkingTree` primitive. The host repository's `.git` is skipped, and
|
|
158
|
+
embedded clones (directories containing a `.git` child) are not
|
|
159
|
+
auto-staged — matches Git's default. Symlinks stage as mode `120000`
|
|
160
|
+
with the link target as blob content. Files larger than
|
|
161
|
+
`MAX_WORKING_TREE_BLOB_BYTES` (256 MiB) reject with
|
|
162
|
+
`WORKING_TREE_FILE_TOO_LARGE` and no partial index commit.
|
|
163
|
+
|
|
164
|
+
Phase 14.3 wires `.gitignore` evaluation across `add --all` AND `status`:
|
|
165
|
+
|
|
166
|
+
- **Sources (last match wins):** `core.excludesFile` (from git config,
|
|
167
|
+
`~`-expanded against `ctx.layout.homeDir`) → `.git/info/exclude` →
|
|
168
|
+
repo-root `.gitignore` → nested `.gitignore` per directory.
|
|
169
|
+
- **Walk-time pruning:** ignored directories are skipped without
|
|
170
|
+
lstat-ing their contents — big perf win on `node_modules`, `dist`,
|
|
171
|
+
etc.
|
|
172
|
+
- **Tracked-but-ignored stays tracked:** a path already in the index
|
|
173
|
+
is preserved across re-adds even if a new ignore rule would match
|
|
174
|
+
it (or its parent directory). Git's invariant.
|
|
175
|
+
- **`status` emits `'untracked'`:** non-ignored working-tree files
|
|
176
|
+
not in the index now appear as `{ kind: 'untracked', path }` and
|
|
177
|
+
`status.clean` reflects them.
|
|
178
|
+
- **`.gitignore` size cap:** 1 MiB per file (`MAX_GITIGNORE_BYTES`).
|
|
179
|
+
Reject with `GITIGNORE_FILE_TOO_LARGE`.
|
|
180
|
+
|
|
181
|
+
### Push
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
const result = await repo.push({
|
|
185
|
+
remote: 'origin',
|
|
186
|
+
refspecs: ['refs/heads/main:refs/heads/main'],
|
|
187
|
+
// optional: force-with-lease against the cached remote-tracking ref
|
|
188
|
+
// forceWithLease: 'auto',
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
for (const r of result.pushedRefs) {
|
|
192
|
+
console.log(r.name, r.status, r.reason ?? ''); // 'refs/heads/main' 'ok'
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Phase 12.3 supports `<src>:<dst>`, `+<src>:<dst>`, `:<dst>` (delete), short-form
|
|
197
|
+
branch names, and `HEAD` as a source. Force-with-lease accepts either an explicit
|
|
198
|
+
`ObjectId` or `'auto'` (resolves to the cached `refs/remotes/<remote>/<branch>`).
|
|
199
|
+
A successful push updates the local remote-tracking cache for accepted refs.
|
|
200
|
+
See `test/integration/network/push-http-backend.test.ts` for an end-to-end
|
|
201
|
+
example.
|
|
202
|
+
|
|
89
203
|
### Progress reporting
|
|
90
204
|
|
|
91
205
|
```typescript
|
|
@@ -131,6 +245,7 @@ are medians from `vitest bench`; ±RME and full p99 distribution live in
|
|
|
131
245
|
| `status:dirty-25-files` | ~1.7 ms | ~3.7 ms | ~2.2× |
|
|
132
246
|
| `log:walk-50-commits` | ~6 ms | ~4 ms | ~0.7× |
|
|
133
247
|
| `readBlob:warm-cache` | ~0.1 ms | ~0.1 ms | ~1.0× |
|
|
248
|
+
| `clone:small-repo` | ~40 ms | ~40 ms | ~1.0× |
|
|
134
249
|
|
|
135
250
|
Reproduce locally with `npm run bench:summary` (writes `reports/benchmarks/summary.md`).
|
|
136
251
|
GitHub Actions runners introduce ±20% variance — trust direction more than
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var r=require("../../chunks/lru-cache-1OU7JhD8.cjs"),e=require("../../chunks/context-BcoAzPuU.cjs"),s=require("../../chunks/progress-
|
|
1
|
+
"use strict";var r=require("../../chunks/lru-cache-1OU7JhD8.cjs"),e=require("../../chunks/context-BcoAzPuU.cjs"),s=require("../../chunks/progress-CntEbiuo.cjs"),o=require("../../chunks/browser-http-transport-DcG05jw3.cjs");require("../../chunks/error-CqLvhejR.cjs"),exports.BrowserCompressor=o.BrowserCompressor,exports.BrowserFileSystem=o.BrowserFileSystem,exports.BrowserHashService=o.BrowserHashService,exports.BrowserHttpTransport=o.BrowserHttpTransport,exports.createBrowserContext=function(t){const a=t.gitDirName??".git",n=r.createLruCache(t.deltaCacheMaxBytes??16777216,t.deltaCacheMaxEntries??65536),c={fs:new o.BrowserFileSystem(t.rootHandle),hash:new o.BrowserHashService,compressor:new o.BrowserCompressor,transport:new o.BrowserHttpTransport,progress:s.noopProgress,layout:{workDir:"/",gitDir:`/${a}`,bare:t.bare??!1},hashConfig:r.SHA1_CONFIG,deltaCache:n,...void 0!==t.signal?{signal:t.signal}:{}};return e.createContext(c)};
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/adapters/browser/browser-adapter.ts"],"sourcesContent":[null],"names":["options","gitDirName","deltaCache","createLruCache","deltaCacheMaxBytes","deltaCacheMaxEntries","parts","fs","BrowserFileSystem","rootHandle","hash","BrowserHashService","compressor","BrowserCompressor","transport","BrowserHttpTransport","progress","noopProgress","layout","workDir","gitDir","bare","hashConfig","SHA1_CONFIG","undefined","signal","createContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/adapters/browser/browser-adapter.ts"],"sourcesContent":[null],"names":["options","gitDirName","deltaCache","createLruCache","deltaCacheMaxBytes","deltaCacheMaxEntries","parts","fs","BrowserFileSystem","rootHandle","hash","BrowserHashService","compressor","BrowserCompressor","transport","BrowserHttpTransport","progress","noopProgress","layout","workDir","gitDir","bare","hashConfig","SHA1_CONFIG","undefined","signal","createContext"],"mappings":"ueAyBM,SAA+BA,GACnC,MAAMC,EAAaD,EAAQC,YAJA,OAKrBC,EAAaC,EAAAA,eACjBH,EAAQI,oBAlBsB,SAmB9BJ,EAAQK,sBAlBwB,OAoB5BC,EAA4B,CAChCC,GAAI,IAAIC,EAAAA,kBAAkBR,EAAQS,YAClCC,KAAM,IAAIC,EAAAA,mBACVC,WAAY,IAAIC,EAAAA,kBAChBC,UAAW,IAAIC,EAAAA,qBACfC,SAAUC,EAAAA,aACVC,OAAQ,CACNC,QAfgB,IAgBhBC,OAAQ,IAAmBnB,IAC3BoB,KAAMrB,EAAQqB,OAAQ,GAExBC,WAAYC,EAAAA,YACZrB,qBACuBsB,IAAnBxB,EAAQyB,OAAuB,CAAEA,OAAQzB,EAAQyB,QAAW,IAElE,OAAOC,EAAAA,cAAcpB,EACvB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var r=require("../../chunks/lru-cache-1OU7JhD8.cjs"),e=require("../../chunks/context-BcoAzPuU.cjs"),
|
|
1
|
+
"use strict";var r=require("../../chunks/lru-cache-1OU7JhD8.cjs"),e=require("../../chunks/context-BcoAzPuU.cjs"),o=require("../../chunks/progress-CntEbiuo.cjs"),s=require("../../chunks/memory-http-transport-Pjyme5KN.cjs");require("../../chunks/error-CqLvhejR.cjs");const t="/repo",i="/repo/.git";exports.MemoryCompressor=s.MemoryCompressor,exports.MemoryFileSystem=s.MemoryFileSystem,exports.MemoryHashService=s.MemoryHashService,exports.MemoryHttpTransport=s.MemoryHttpTransport,exports.createMemoryContext=function(a={}){const c=new s.MemoryFileSystem(void 0===a.files?{rootDir:t}:{rootDir:t,files:a.files}),n=a.algorithm??"sha1",m=new s.MemoryHashService(n),h=new s.MemoryCompressor,p=new s.MemoryHttpTransport,y=void 0===a.homeDir?{workDir:t,gitDir:i,bare:!1}:{workDir:t,gitDir:i,bare:!1,homeDir:a.homeDir},u="sha256"===n?r.SHA256_CONFIG:r.SHA1_CONFIG,l=r.createLruCache(a.deltaCacheMaxBytes??16777216,a.deltaCacheMaxEntries??65536),M={fs:c,hash:m,compressor:h,transport:p,progress:o.noopProgress,layout:y,hashConfig:u,deltaCache:l};return e.createContext(void 0===a.signal?M:{...M,signal:a.signal})};
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/adapters/memory/memory-adapter.ts"],"sourcesContent":[null],"names":["DEFAULT_WORK_DIR","options","fs","MemoryFileSystem","undefined","files","rootDir","algorithm","hash","MemoryHashService","compressor","MemoryCompressor","transport","MemoryHttpTransport","layout","workDir","gitDir","bare","hashConfig","SHA256_CONFIG","SHA1_CONFIG","deltaCache","createLruCache","deltaCacheMaxBytes","deltaCacheMaxEntries","parts","progress","noopProgress","createContext","signal"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/adapters/memory/memory-adapter.ts"],"sourcesContent":[null],"names":["DEFAULT_WORK_DIR","DEFAULT_GIT_DIR","options","fs","MemoryFileSystem","undefined","files","rootDir","algorithm","hash","MemoryHashService","compressor","MemoryCompressor","transport","MemoryHttpTransport","layout","homeDir","workDir","gitDir","bare","hashConfig","SHA256_CONFIG","SHA1_CONFIG","deltaCache","createLruCache","deltaCacheMaxBytes","deltaCacheMaxEntries","parts","progress","noopProgress","createContext","signal"],"mappings":"yQASA,MAaMA,EAAmB,QACnBC,EAAkB,iOAElB,SAA8BC,EAAgC,IAClE,MAIMC,EAAK,IAAIC,EAAAA,sBAHKC,IAAlBH,EAAQI,MACJ,CAAEC,QAASP,GACX,CAAEO,QAASP,EAAkBM,MAAOJ,EAAQI,QAE5CE,EAAYN,EAAQM,WAAa,OACjCC,EAAO,IAAIC,EAAAA,kBAAkBF,GAC7BG,EAAa,IAAIC,mBACjBC,EAAY,IAAIC,sBAChBC,OACgBV,IAApBH,EAAQc,QACJ,CAAEC,QAASjB,EAAkBkB,OAAQjB,EAAiBkB,MAAM,GAC5D,CACEF,QAASjB,EACTkB,OAAQjB,EACRkB,MAAM,EACNH,QAASd,EAAQc,SAEnBI,EAA2B,WAAdZ,EAAyBa,EAAAA,cAAgBC,EAAAA,YACtDC,EAAaC,EAAAA,eACjBtB,EAAQuB,oBArCsB,SAsC9BvB,EAAQwB,sBArCwB,OAuC5BC,EAAQ,CACZxB,KACAM,OACAE,aACAE,YACAe,SAAUC,EAAAA,aACVd,SACAK,aACAG,cAEF,OACIO,EAAAA,mBADsBzB,IAAnBH,EAAQ6B,OACGJ,EACA,IAAKA,EAAOI,OAAQ7B,EAAQ6B,QAChD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("node:
|
|
1
|
+
"use strict";var e=require("node:os"),r=require("node:path"),o=require("../../chunks/lru-cache-1OU7JhD8.cjs"),t=require("../../chunks/context-BcoAzPuU.cjs"),s=require("../../chunks/progress-CntEbiuo.cjs"),i=require("../../chunks/node-http-transport-UkW5eEm3.cjs");function n(e){var r=Object.create(null);return e&&Object.keys(e).forEach(function(o){if("default"!==o){var t=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(r,o,t.get?t:{enumerable:!0,get:function(){return e[o]}})}}),r.default=e,Object.freeze(r)}require("../../chunks/error-CqLvhejR.cjs"),require("node:zlib"),require("node:fs"),require("node:fs/promises"),require("node:crypto"),require("node:http"),require("node:https"),require("node:stream");var a=n(r);exports.NodeCompressor=i.NodeCompressor,exports.NodeFileSystem=i.NodeFileSystem,exports.NodeHashService=i.NodeHashService,exports.NodeHttpTransport=i.NodeHttpTransport,exports.createNodeContext=function(r){const n=a.resolve(r.workDir),c=void 0!==r.gitDir?a.resolve(r.gitDir):a.join(n,".git"),u=new i.NodeFileSystem(n),d=new i.NodeHashService,p=new i.NodeCompressor,h=new i.NodeHttpTransport({allowInsecureHttp:r.allowInsecureHttp??!1}),l=((e,r,o,t)=>void 0===t?{workDir:e,gitDir:r,bare:o}:{workDir:e,gitDir:r,bare:o,homeDir:t})(n,c,r.bare??!1,""===(q=e.homedir())?void 0:q),g=o.createLruCache(r.deltaCacheMaxBytes??16777216,r.deltaCacheMaxEntries??65536),f={fs:u,hash:d,compressor:p,transport:h,progress:s.noopProgress,layout:l,hashConfig:o.SHA1_CONFIG,deltaCache:g};var q;return t.createContext(void 0!==r.signal?{...f,signal:r.signal}:f)};
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/adapters/node/node-adapter.ts"],"sourcesContent":[null],"names":["options","workDir","nodePath","resolve","gitDir","undefined","join","fs","NodeFileSystem","hash","NodeHashService","compressor","NodeCompressor","transport","NodeHttpTransport","allowInsecureHttp","layout","bare","deltaCache","createLruCache","deltaCacheMaxBytes","deltaCacheMaxEntries","parts","progress","noopProgress","hashConfig","SHA1_CONFIG","createContext","signal"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/adapters/node/node-adapter.ts"],"sourcesContent":[null],"names":["options","workDir","nodePath","resolve","gitDir","undefined","join","fs","NodeFileSystem","hash","NodeHashService","compressor","NodeCompressor","transport","NodeHttpTransport","allowInsecureHttp","layout","bare","homeDir","buildLayout","raw","homedir","deltaCache","createLruCache","deltaCacheMaxBytes","deltaCacheMaxEntries","parts","progress","noopProgress","hashConfig","SHA1_CONFIG","createContext","signal"],"mappings":"85BAwBM,SAA4BA,GAChC,MAAMC,EAAUC,EAASC,QAAQH,EAAQC,SACnCG,OACeC,IAAnBL,EAAQI,OACJF,EAASC,QAAQH,EAAQI,QACzBF,EAASI,KAAKL,EAAS,QACvBM,EAAK,IAAIC,EAAAA,eAAeP,GACxBQ,EAAO,IAAIC,kBACXC,EAAa,IAAIC,iBACjBC,EAAY,IAAIC,oBAAkB,CACtCC,kBAAmBf,EAAQe,oBAAqB,IAE5CC,EAmCmB,EACzBf,EACAG,EACAa,EACAC,SAEYb,IAAZa,EAAwB,CAAEjB,UAASG,SAAQa,QAAS,CAAEhB,UAASG,SAAQa,OAAMC,WAzC9DC,CAAYlB,EAASG,EAAQJ,EAAQiB,OAAQ,EA2Bc,MAA7CG,EAgB8BC,EAAAA,gBAhBoBhB,EAAYe,GA1BrFE,EAAaC,EAAAA,eACjBvB,EAAQwB,oBA3BsB,SA4B9BxB,EAAQyB,sBA3BwB,OA6B5BC,EAAQ,CACZnB,KACAE,OACAE,aACAE,YACAc,SAAUC,EAAAA,aACVZ,SACAa,WAAYC,EAAAA,YACZR,cA8BgB,IAhBWF,EAZ7B,OACIW,EAAAA,mBADsB1B,IAAnBL,EAAQgC,OACG,IAAKN,EAAOM,OAAQhC,EAAQgC,QAC5BN,EACpB"}
|
package/dist/cjs/chunks/{browser-http-transport-BBF8uw-f.cjs → browser-http-transport-DcG05jw3.cjs}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var t=require("./error-
|
|
2
|
-
//# sourceMappingURL=browser-http-transport-
|
|
1
|
+
"use strict";var t=require("./error-CqLvhejR.cjs");function e(e,r){const a=e[e.length-1];if(void 0===a)throw t.fileNotFound(r);return a}function r(e){return e instanceof t.TsgitError&&"FILE_NOT_FOUND"===e.data.code}function a(t,e,r){return{ctimeMs:e,mtimeMs:e,dev:0,ino:0,mode:r?33188:16877,uid:0,gid:0,size:t,isFile:r,isDirectory:!r,isSymbolicLink:!1}}function s(t){let e="";for(const r of t)e+=r.toString(16).padStart(2,"0");return e}exports.BrowserCompressor=class{async deflate(e){try{const t=new Blob([e]).stream().pipeThrough(new CompressionStream("deflate"));return new Uint8Array(await new Response(t).arrayBuffer())}catch(e){throw t.compressFailed(e instanceof Error?e.message:String(e))}}async inflate(e){try{const t=new Blob([e]).stream().pipeThrough(new DecompressionStream("deflate"));return new Uint8Array(await new Response(t).arrayBuffer())}catch(e){throw t.decompressFailed(e instanceof Error?e.message:String(e))}}async streamInflate(e,r){const a=e.subarray(r);if(a.length>65536)throw t.decompressFailed("BrowserCompressor.streamInflate input exceeds 65536 byte safety cap");for(let t=1;t<=a.length;t+=1){const e=a.subarray(0,t);try{const r=new Blob([e]).stream().pipeThrough(new DecompressionStream("deflate"));return{output:new Uint8Array(await new Response(r).arrayBuffer()),bytesConsumed:t}}catch{}}throw t.decompressFailed("no valid zlib stream at offset")}createInflateStream(){return new DecompressionStream("deflate")}},exports.BrowserFileSystem=class{rootHandle;constructor(t){this.rootHandle=t}async read(t){const e=await this.resolveFileHandle(t,!1),r=await e.getFile();return new Uint8Array(await r.arrayBuffer())}async readSlice(e,r,a){if(r<0||a<0)throw t.permissionDenied(e);const s=await this.resolveFileHandle(e,!1),i=(await s.getFile()).slice(r,r+a);return new Uint8Array(await i.arrayBuffer())}async readUtf8(t){const e=await this.resolveFileHandle(t,!1);return(await e.getFile()).text()}async write(t,e){const r=await this.resolveFileHandle(t,!0),a=await r.createWritable();await a.write(e),await a.close()}async writeExclusive(r,a){const s=this.splitPath(r);if(0===s.length)throw t.permissionDenied(r);const i=await this.walkToParent(s,!0),o=e(s,r);await this.assertDoesNotExist(i,o,r);const n=await i.getFileHandle(o,{create:!0}),c=await n.createWritable();await c.write(a),await c.close()}async writeUtf8(t,e){await this.write(t,(new TextEncoder).encode(e))}async exists(t){try{return await this.resolveFileHandle(t,!1),!0}catch(e){if(r(e))try{return await this.resolveDirHandle(t,!1),!0}catch{return!1}throw e}}async stat(t){try{const e=await this.resolveFileHandle(t,!1),r=await e.getFile();return a(r.size,r.lastModified,!0)}catch(e){if(!r(e))throw e;return await this.resolveDirHandle(t,!1),a(0,Date.now(),!1)}}async lstat(t){return this.stat(t)}async readdir(t){const e=[],r=await this.resolveDirHandle(t,!1);for await(const[t,a]of r.entries())e.push({name:t,isFile:"file"===a.kind,isDirectory:"directory"===a.kind,isSymbolicLink:!1});return e}async mkdir(t){const e=this.splitPath(t);let r=this.rootHandle;for(const t of e)r=await r.getDirectoryHandle(t,{create:!0})}async rm(r){const a=this.splitPath(r);if(0===a.length)throw t.permissionDenied(r);const s=await this.walkToParent(a,!1),i=e(a,r);try{await s.removeEntry(i)}catch{throw t.fileNotFound(r)}}async rename(t,e){const r=await this.read(t);await this.write(e,r),await this.rm(t)}async readlink(e){throw t.unsupportedOperation("readlink","OPFS does not support symbolic links")}async symlink(e,r){throw t.unsupportedOperation("symlink","OPFS does not support symbolic links")}async chmod(t,e){try{await this.resolveFileHandle(t,!1)}catch(e){if(!r(e))throw e;await this.resolveDirHandle(t,!1)}}async rmRecursive(a){const s=this.splitPath(a);if(0===s.length)throw t.permissionDenied(a);const i=await this.walkToParent(s,!1).catch(t=>{if(!r(t))throw t});if(void 0===i)return;const o=e(s,a);try{await i.removeEntry(o,{recursive:!0})}catch{}}async openWithNoFollow(e,r){throw t.unsupportedOperation("openWithNoFollow","browser FS does not support O_NOFOLLOW")}splitPath(e){const r=e.replace(/^\/+/,"").split("/").filter(t=>""!==t&&"."!==t);for(const a of r)if(".."===a)throw t.permissionDenied(e);return r}async resolveFileHandle(r,a){const s=this.splitPath(r);if(0===s.length)throw t.fileNotFound(r);const i=await this.walkToParent(s,a),o=e(s,r);try{return await i.getFileHandle(o,{create:a})}catch(e){if(e instanceof t.TsgitError)throw e;throw t.fileNotFound(r)}}async resolveDirHandle(r,a){const s=this.splitPath(r);if(0===s.length)return this.rootHandle;const i=await this.walkToParent(s,a),o=e(s,r);try{return await i.getDirectoryHandle(o,{create:a})}catch(e){if(e instanceof t.TsgitError)throw e;throw t.fileNotFound(r)}}async walkToParent(e,r){let a=this.rootHandle;for(let s=0;s<e.length-1;s++){const i=e[s];if(void 0===i)throw t.fileNotFound(e.join("/"));try{a=await a.getDirectoryHandle(i,{create:r})}catch(r){if(r instanceof t.TsgitError)throw r;throw t.fileNotFound(e.join("/"))}}return a}async assertDoesNotExist(e,r,a){try{await e.getFileHandle(r,{create:!1})}catch(e){if(e instanceof t.TsgitError)throw e;return}throw t.fileExists(a)}},exports.BrowserHashService=class{algorithm;digestLength;constructor(e="sha1"){if(!globalThis.crypto?.subtle)throw t.hashFailed("crypto.subtle unavailable");this.algorithm=e,this.digestLength="sha1"===e?20:32}async hash(t){return new Uint8Array(await crypto.subtle.digest(this.algoName,t))}async hashHex(t){return s(await this.hash(t))}createHasher(){const e=[],r=this.algoName;let a=!1;const i=async()=>{if(a)throw t.hashFailed("cannot digest after digest");a=!0;const s=e.reduce((t,e)=>t+e.length,0),i=new Uint8Array(s);let o=0;for(const t of e)i.set(t,o),o+=t.length;return new Uint8Array(await crypto.subtle.digest(r,i))};return{update(r){if(a)throw t.hashFailed("cannot update after digest");e.push(r.slice())},digest:i,digestHex:async()=>s(await i())}}get algoName(){return"sha1"===this.algorithm?"SHA-1":"SHA-256"}},exports.BrowserHttpTransport=class{async request(e){try{const t={method:e.method,headers:{...e.headers}};void 0!==e.body&&(t.body=e.body),void 0!==e.signal&&(t.signal=e.signal);const r=await fetch(e.url,t),a={};r.headers.forEach((t,e)=>{a[e.toLowerCase()]=t});const s=r.body??new ReadableStream;return{statusCode:r.status,headers:a,body:s}}catch(e){throw t.networkError(e instanceof Error?e.message:String(e))}}};
|
|
2
|
+
//# sourceMappingURL=browser-http-transport-DcG05jw3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-http-transport-
|
|
1
|
+
{"version":3,"file":"browser-http-transport-DcG05jw3.cjs","sources":["../../../src/adapters/browser/browser-file-system.ts","../../../src/adapters/browser/browser-hash-service.ts","../../../src/adapters/browser/browser-compressor.ts","../../../src/adapters/browser/browser-http-transport.ts"],"sourcesContent":[null,null,null,null],"names":["leafSegment","segments","path","leaf","length","undefined","fileNotFound","isFileNotFound","err","TsgitError","data","code","buildFileStat","size","timeMs","isFile","ctimeMs","mtimeMs","dev","ino","mode","uid","gid","isDirectory","isSymbolicLink","toHex","bytes","result","byte","toString","padStart","deflate","stream","Blob","pipeThrough","CompressionStream","Uint8Array","Response","arrayBuffer","compressFailed","Error","message","String","inflate","DecompressionStream","decompressFailed","streamInflate","offset","slice","subarray","end","attempt","output","bytesConsumed","createInflateStream","rootHandle","constructor","this","read","handle","resolveFileHandle","file","getFile","readSlice","permissionDenied","readUtf8","text","write","writable","createWritable","close","writeExclusive","splitPath","dir","walkToParent","assertDoesNotExist","getFileHandle","create","writeUtf8","content","TextEncoder","encode","exists","resolveDirHandle","stat","lastModified","Date","now","lstat","readdir","entries","iterable","name","child","push","kind","mkdir","segment","getDirectoryHandle","rm","removeEntry","rename","src","dst","readlink","_path","unsupportedOperation","symlink","_target","chmod","_mode","rmRecursive","parent","catch","recursive","openWithNoFollow","replace","split","filter","s","i","join","fileExists","algorithm","digestLength","globalThis","crypto","subtle","hashFailed","hash","digest","algoName","hashHex","createHasher","chunks","consumed","finalize","async","total","reduce","sum","chunk","concatenated","set","update","digestHex","request","req","init","method","headers","body","signal","res","fetch","url","forEach","value","key","toLowerCase","ReadableStream","statusCode","status","networkError"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-BcoAzPuU.cjs","sources":["../../../src/ports/context.ts"],"sourcesContent":[null],"names":["parts","Object","freeze","cwd","layout","workDir"],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-BcoAzPuU.cjs","sources":["../../../src/ports/context.ts"],"sourcesContent":[null],"names":["parts","Object","freeze","cwd","layout","workDir"],"mappings":"mCAqHM,SAAwBA,GAC5B,OAAOC,OAAOC,OAAO,IAAKF,EAAOG,IAAKH,EAAMG,KAAOH,EAAMI,OAAOC,SAClE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";class e extends Error{data;name="TsgitError";constructor(e){super(`${e.code}: ${function(e){switch(e.code){case"INVALID_OBJECT_ID":case"INVALID_FILE_MODE":return e.value;case"INVALID_OBJECT_HEADER":case"INVALID_TREE_ENTRY":case"INVALID_COMMIT":case"INVALID_TAG":case"INVALID_IDENTITY":case"INVALID_PACK_HEADER":case"INVALID_PACK_INDEX":case"INVALID_PACK_ENTRY":case"INVALID_DELTA":case"INVALID_REF":case"INVALID_PACKED_REFS":case"INVALID_INDEX_HEADER":case"INVALID_INDEX_ENTRY":return e.reason;case"FILE_NOT_FOUND":return`file not found: ${t(e.path)}`;case"FILE_EXISTS":return`file already exists: ${t(e.path)}`;case"NOT_A_DIRECTORY":return`not a directory: ${t(e.path)}`;case"DIRECTORY_NOT_EMPTY":return`directory not empty: ${t(e.path)}`;case"PERMISSION_DENIED":return`permission denied: ${t(e.path)}`;case"UNSUPPORTED_OPERATION":return`unsupported operation: ${e.operation}: ${e.reason}`;case"HASH_FAILED":return`hash computation failed: ${e.reason}`;case"COMPRESS_FAILED":return`compression failed: ${e.reason}`;case"DECOMPRESS_FAILED":return`decompression failed: ${e.reason}`;case"HTTP_ERROR":return`HTTP ${e.statusCode}: ${e.reason}`;case"NETWORK_ERROR":return`network error: ${e.reason}`;case"INVALID_TREE_FOR_DIFF":return`invalid tree for diff: ${e.reason}`;case"INVALID_DIFF_INPUT":return`invalid diff input: ${e.reason}`;case"INVALID_MERGE_TREE":return`invalid merge tree: ${e.reason}`;case"INVALID_MERGE_INPUT":return`invalid merge input: ${e.reason}`;case"OBJECT_NOT_FOUND":return`object not found: ${e.id}`;case"OBJECT_HASH_MISMATCH":return`object hash mismatch: expected=${e.expected} actual=${e.actual}`;case"UNEXPECTED_OBJECT_TYPE":return`unexpected object type: expected=${e.expected} actual=${e.actual} id=${e.id}`;case"TREE_CYCLE_DETECTED":return`tree cycle detected: ${e.id}`;case"TREE_DEPTH_EXCEEDED":return`tree depth exceeded: ${e.depth}`;case"TREE_ENTRY_LIMIT_EXCEEDED":return`tree entry limit exceeded: count=${e.count} limit=${e.limit}`;case"OBJECT_TOO_LARGE":return`object too large: id=${e.id} size=${e.actualSize} limit=${e.limit}`;case"DELTA_CHAIN_TOO_DEEP":return`delta chain too deep: ${e.depth}`;case"REF_NOT_FOUND":return`ref not found: ${e.name}`;case"REF_CHAIN_TOO_DEEP":return`ref chain too deep: depth=${e.depth} chain=${e.chain.join("->")}`;case"REF_CYCLE_DETECTED":return`ref cycle detected: ${e.chain.join("->")}`;case"REF_LOCKED":return`ref locked: ${e.name}`;case"REF_UPDATE_CONFLICT":return`ref update conflict: name=${e.name} expected=${e.expected} actual=${e.actual}`;case"INVALID_WALK_INPUT":return`invalid walk input: ${e.reason}`;case"OPERATION_ABORTED":return"operation aborted";case"INVALID_PKT_LENGTH":return`invalid pkt-line length: ${e.value}`;case"PKT_LENGTH_RESERVED":return`reserved pkt-line length: ${e.value}`;case"PKT_TOO_LARGE":return`pkt-line too large: ${e.value} bytes (max 65520)`;case"PKT_TRUNCATED":return`pkt-line truncated: ${e.remaining} bytes remaining`;case"INVALID_BASE_URL":return`invalid base URL: ${e.reason}`;case"MISSING_SERVICE_HEADER":return`missing service header: expected=${e.expected} actual=${e.actual}`;case"MISSING_CAPABILITIES":return"missing capabilities in advertisement";case"INVALID_REF_LINE":return`invalid ref line: ${e.line}`;case"DUPLICATE_REF":return`duplicate ref: ${e.name}`;case"INVALID_SIDEBAND_CHANNEL":return`invalid sideband channel: ${e.channel}`;case"SIDEBAND_FATAL":return`sideband fatal: ${e.message}`;case"UNKNOWN_ACK_STATUS":return`unknown ack status: ${e.value}`;case"INVALID_REPORT_STATUS":return`invalid report-status line: ${e.line}`;case"EMPTY_WANTS":return"upload-pack request has no wants";case"EMPTY_RECEIVE_UPDATES":return"receive-pack request has no updates";case"TOO_MANY_ADVERTISED_REFS":return`advertised refs (${e.count}) exceed limit ${e.limit}`;case"RESOURCE_LOCKED":return`${e.resource} locked: ${t(e.path)}`;case"PACK_TOO_LARGE":return`pack contains ${e.objectCount} objects, exceeds limit ${e.limit}`;case"NOT_A_REPOSITORY":return`not a git repository: ${t(e.path)}`;case"BARE_REPOSITORY":return`operation requires a working tree: ${e.operation}`;case"ALREADY_INITIALIZED":return`repository already exists: ${t(e.path)}`;case"WORKING_TREE_DIRTY":return`working tree has uncommitted changes: ${e.paths.length} files`;case"PATHSPEC_NO_MATCH":return`pathspec did not match any files: ${e.pattern}`;case"PATHSPEC_OUTSIDE_REPO":return`pathspec resolves outside repository: ${t(e.path)}`;case"NOTHING_TO_COMMIT":return"nothing to commit (use allowEmpty: true to commit anyway)";case"EMPTY_COMMIT_MESSAGE":return"commit message is empty (use allowEmptyMessage: true to commit anyway)";case"AUTHOR_UNCONFIGURED":return"author identity not configured (set ctx.config.user or pass author/committer)";case"BRANCH_EXISTS":return`branch already exists: ${e.name}`;case"BRANCH_NOT_FOUND":return`branch not found: ${e.name}`;case"TAG_EXISTS":return`tag already exists: ${e.name}`;case"TAG_NOT_FOUND":return`tag not found: ${e.name}`;case"CANNOT_DELETE_CHECKED_OUT_BRANCH":return`cannot delete branch currently checked out: ${e.name}`;case"INVALID_URL":return`invalid URL: ${e.reason}`;case"BLOCKED_HOST":return`host blocked: ${e.host} (${e.reason})`;case"TOO_MANY_REDIRECTS":return`too many redirects: ${e.count}`;case"UNSUPPORTED_SCHEME":return`unsupported URL scheme: ${e.scheme}`;case"TARGET_DIRECTORY_NOT_EMPTY":return`target directory is not empty: ${t(e.path)}`;case"REMOTE_ADVERTISES_NO_REFS":return"remote advertised no refs";case"NON_FAST_FORWARD":return`non-fast-forward update for ${e.ref}: local=${e.local} remote=${e.remote}`;case"PUSH_REJECTED":return`push rejected for ${e.ref}: ${e.reason}`;case"MERGE_HAS_CONFLICTS":return`merge has unresolved conflicts: ${e.count} files`;case"CHECKOUT_OVERWRITE_DIRTY":return`checkout would overwrite uncommitted changes: ${e.paths.length} files`;case"REVPARSE_AMBIGUOUS":return`revision expression "${e.expression}" is ambiguous (${e.candidates.length} candidates)`;case"REVPARSE_UNRESOLVED":return`cannot resolve revision: ${e.expression}`;case"EMPTY_PATHSPEC":return'pathspec is empty (use "." to mean "all paths")';case"OPERATION_IN_PROGRESS":return`${e.operation} in progress; complete or abort it before running this command`;case"MAX_REFSPECS_EXCEEDED":return`${e.count} refspecs exceeds limit ${e.limit}`;case"REMOTE_NOT_CONFIGURED":return`remote not configured: ${e.remote}`;case"REFSPEC_INVALID":return`invalid refspec "${e.raw}": ${e.reason}`;case"INVALID_OPTION":return`invalid option: ${e.option} — ${e.reason}`;case"REPOSITORY_DISPOSED":return"repository has been disposed; create a new one with openRepository()";case"ADAPTER_UNAVAILABLE":return`adapter unavailable for runtime ${e.runtime}: ${e.reason}`;case"WORKING_TREE_FILE_TOO_LARGE":return`working-tree file too large: ${t(e.path)} size=${e.size} limit=${e.limit}`;case"GITIGNORE_FILE_TOO_LARGE":return`.gitignore too large: ${t(e.path)} size=${e.size} limit=${e.limit}`;default:return String(e)}}(e)}`),this.data=e}}function t(e){const t=e.split(/[/\\]/);for(let e=t.length-1;e>=0;e--){const r=t[e];if(void 0!==r&&""!==r)return r}return e}const r=e=>{let t="";for(let r=0;r<e.length;r+=1){const n=e.charCodeAt(r);t+=9===n||10===n||n>=32&&n<=126?e[r]:`\\x${n.toString(16).toUpperCase().padStart(2,"0")}`}return t},n=r;exports.TsgitError=e,exports.adapterUnavailable=(t,n)=>new e({code:"ADAPTER_UNAVAILABLE",runtime:t,reason:r(n)}),exports.authorUnconfigured=()=>new e({code:"AUTHOR_UNCONFIGURED"}),exports.blockedHost=(t,n)=>new e({code:"BLOCKED_HOST",host:r(t),reason:r(n)}),exports.branchExists=t=>new e({code:"BRANCH_EXISTS",name:t}),exports.branchNotFound=t=>new e({code:"BRANCH_NOT_FOUND",name:t}),exports.cannotDeleteCheckedOutBranch=t=>new e({code:"CANNOT_DELETE_CHECKED_OUT_BRANCH",name:t}),exports.checkoutOverwriteDirty=t=>new e({code:"CHECKOUT_OVERWRITE_DIRTY",paths:t}),exports.compressFailed=t=>new e({code:"COMPRESS_FAILED",reason:t}),exports.decompressFailed=t=>new e({code:"DECOMPRESS_FAILED",reason:t}),exports.directoryNotEmpty=t=>new e({code:"DIRECTORY_NOT_EMPTY",path:t}),exports.emptyCommitMessage=()=>new e({code:"EMPTY_COMMIT_MESSAGE"}),exports.emptyPathspec=()=>new e({code:"EMPTY_PATHSPEC"}),exports.fileExists=t=>new e({code:"FILE_EXISTS",path:t}),exports.fileNotFound=t=>new e({code:"FILE_NOT_FOUND",path:t}),exports.gitignoreFileTooLarge=(t,r,n)=>new e({code:"GITIGNORE_FILE_TOO_LARGE",path:t,size:r,limit:n}),exports.hashFailed=t=>new e({code:"HASH_FAILED",reason:t}),exports.httpError=(t,r)=>new e({code:"HTTP_ERROR",statusCode:t,reason:r}),exports.invalidOption=(t,n)=>new e({code:"INVALID_OPTION",option:t,reason:r(n)}),exports.invalidUrl=t=>new e({code:"INVALID_URL",reason:t}),exports.invalidWalkInput=t=>new e({code:"INVALID_WALK_INPUT",reason:t}),exports.mergeHasConflicts=(t,r=[])=>{const n=r.length>100,a=n?r.slice(0,100):r;return new e(n?{code:"MERGE_HAS_CONFLICTS",count:t,paths:a,truncated:!0}:{code:"MERGE_HAS_CONFLICTS",count:t,paths:a})},exports.networkError=t=>new e({code:"NETWORK_ERROR",reason:t}),exports.nonFastForward=(t,r,n)=>new e({code:"NON_FAST_FORWARD",ref:t,local:r,remote:n}),exports.notADirectory=t=>new e({code:"NOT_A_DIRECTORY",path:t}),exports.nothingToCommit=()=>new e({code:"NOTHING_TO_COMMIT"}),exports.operationAborted=()=>new e({code:"OPERATION_ABORTED"}),exports.operationInProgress=t=>new e({code:"OPERATION_IN_PROGRESS",operation:t}),exports.pathspecNoMatch=t=>new e({code:"PATHSPEC_NO_MATCH",pattern:t}),exports.pathspecOutsideRepo=t=>new e({code:"PATHSPEC_OUTSIDE_REPO",path:t}),exports.permissionDenied=t=>new e({code:"PERMISSION_DENIED",path:t}),exports.pushRejected=(t,r,n)=>new e({code:"PUSH_REJECTED",ref:t,reason:r,reportStatus:n}),exports.remoteAdvertisesNoRefs=()=>new e({code:"REMOTE_ADVERTISES_NO_REFS"}),exports.remoteNotConfigured=t=>new e({code:"REMOTE_NOT_CONFIGURED",remote:t}),exports.repositoryDisposed=()=>new e({code:"REPOSITORY_DISPOSED"}),exports.revparseUnresolved=t=>new e({code:"REVPARSE_UNRESOLVED",expression:t}),exports.sanitize=n,exports.tagExists=t=>new e({code:"TAG_EXISTS",name:t}),exports.tagNotFound=t=>new e({code:"TAG_NOT_FOUND",name:t}),exports.targetDirectoryNotEmpty=t=>new e({code:"TARGET_DIRECTORY_NOT_EMPTY",path:t}),exports.unsupportedOperation=(t,r)=>new e({code:"UNSUPPORTED_OPERATION",operation:t,reason:r}),exports.unsupportedScheme=t=>new e({code:"UNSUPPORTED_SCHEME",scheme:t}),exports.workingTreeFileTooLarge=(t,r,n)=>new e({code:"WORKING_TREE_FILE_TOO_LARGE",path:t,size:r,limit:n});
|
|
2
|
+
//# sourceMappingURL=error-CqLvhejR.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-CqLvhejR.cjs","sources":["../../../src/domain/error.ts","../../../src/domain/commands/error.ts"],"sourcesContent":[null,null],"names":["TsgitError","Error","data","name","constructor","super","code","value","reason","basename","path","operation","statusCode","id","expected","actual","depth","count","limit","actualSize","chain","join","remaining","line","channel","message","resource","objectCount","paths","length","pattern","host","scheme","ref","local","remote","expression","candidates","raw","option","runtime","size","String","extractDetail","this","segments","split","i","segment","undefined","sanitizeForDisplay","s","out","charCodeAt","toString","toUpperCase","padStart","sanitize","truncated","cappedPaths","slice","reportStatus"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=require("./error-CqLvhejR.cjs"),e=require("./index-D5Nd-Mks.cjs"),r=require("../transport/index.cjs"),a=require("./readable-stream-MTA6D0Zh.cjs");const n=e=>new t.TsgitError({code:"INVALID_DIFF_INPUT",reason:e});function i(t){const e=[];return void 0!==t.baseId&&void 0!==t.baseMode&&e.push({id:t.baseId,mode:t.baseMode,stage:1}),void 0!==t.ourId&&void 0!==t.ourMode&&e.push({id:t.ourId,mode:t.ourMode,stage:2}),void 0!==t.theirId&&void 0!==t.theirMode&&e.push({id:t.theirId,mode:t.theirMode,stage:3}),e}function o(t,e,r){const a=r(e.mode);return{ctimeSeconds:a.ctimeSeconds,ctimeNanoseconds:a.ctimeNanoseconds,mtimeSeconds:a.mtimeSeconds,mtimeNanoseconds:a.mtimeNanoseconds,dev:a.dev,ino:a.ino,mode:e.mode,uid:a.uid,gid:a.gid,fileSize:a.fileSize,id:e.id,flags:{assumeValid:!1,extended:!1,stage:e.stage},path:t}}const s=1e5;function c(t){const e=[];let r=0;for(let a=0;a<t.length;a++)10===t[a]&&(e.push(t.subarray(r,a+1)),r=a+1);return r<t.length&&e.push(t.subarray(r)),e}function d(t){return function(t){const e=Math.min(t.length,8e3);for(let r=0;r<e;r++)if(0===t[r])return!0;return!1}(t)||function(t){let e=0,r=0;for(let a=0;a<t.length;a++){if(e++,e>=65536)return!0;if(10===t[a]){if(r++,r>=s)return!0;e=0}}return e>0&&(r++,r>=s)}(t)}function f(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}function l(t,e,r,a){return a===-r||t[a-1+e]<t[a+1+e]}function u(t,e,r,a,n,i){let o=l(r,a,n,i)?r[i+1+a]:r[i-1+a]+1,s=o-i;for(;o<t.length&&s<e.length&&f(t[o],e[s]);)o++,s++;return{x:o,y:s}}function h(t){const e=[];let r=0,a=0,n=0;for(;n<t.length;){const i=t[n],o=r,s=a;for(;t[n]===i;)"equal"===i?(r++,a++):"delete"===i?r++:a++,n++;e.push({kind:"equal"===i?"common":"delete"===i?"ours-only":"theirs-only",oursStart:o,oursEnd:r,theirsStart:s,theirsEnd:a})}return e}function w(t,e){const r=c(t),a=c(e),n=r.length,i=a.length;if(0===n&&0===i)return{hunks:[{kind:"common",oursStart:0,oursEnd:0,theirsStart:0,theirsEnd:0}],oursLines:r,theirsLines:a,degraded:!1};const o=function(t,e){const r=t.length,a=e.length;if(r+a>5e4)return;const n=r+a,i=n,o=new Array(2*n+1).fill(0),s=[],c=1e3*n;let d=0;for(let n=0;;n++){const f=2*n+1,l=new Array(f);for(let t=0;t<f;t++)l[t]=o[i-n+t];s.push(l);for(let f=-n;f<=n;f+=2){if(d++,d>c)return;const l=u(t,e,o,i,n,f);if(o[f+i]=l.x,l.x>=r&&l.y>=a)return{trace:s,totalD:n}}}}(r,a);return void 0===o?function(t,e){const r=[];return t.length>0&&r.push({kind:"ours-only",oursStart:0,oursEnd:t.length,theirsStart:0,theirsEnd:0}),e.length>0&&r.push({kind:"theirs-only",oursStart:t.length,oursEnd:t.length,theirsStart:0,theirsEnd:e.length}),{hunks:r,oursLines:t,theirsLines:e,degraded:!0}}(r,a):{hunks:h(function(t,e,r){const a=[];let n=t,i=e;for(let t=r.length-1;t>0;t--){const e=r[t],o=t,s=n-i,c=l(e,o,t,s)?s+1:s-1,d=e[c+o],f=d-c;for(;n>d&&i>f;)a.push("equal"),n--,i--;a.push(n===d?"insert":"delete"),n===d?i--:n--}for(;n>0;)a.push("equal"),n--;return a.reverse(),a}(n,i,o.trace)),oursLines:r,theirsLines:a,degraded:!1}}function m(t,e){const r=t.path,a=e.path;return r<a?-1:r>a?1:0}function p(t,r,a,n,i){r.setUint32(a,n.ctimeSeconds),r.setUint32(a+4,n.ctimeNanoseconds),r.setUint32(a+8,n.mtimeSeconds),r.setUint32(a+12,n.mtimeNanoseconds),r.setUint32(a+16,n.dev),r.setUint32(a+20,n.ino),r.setUint32(a+24,Number.parseInt(n.mode,8)),r.setUint32(a+28,n.uid),r.setUint32(a+32,n.gid),r.setUint32(a+36,n.fileSize);const o=e.hexToBytes(n.id);t.set(o,a+40);const s=Math.min(i.length,4095);r.setUint16(a+60,(n.flags.assumeValid?32768:0)|n.flags.stage<<12|s),t.set(i,a+62)}const g=(t,e,r)=>{let a="unset";for(const n of t)n.directoryOnly&&!r||n.compiled.test(e)&&(a=n.negated?"unignored":"ignored");return a},y=(t,e)=>{if(""===e)return t;const r=`${e}/`;return t.startsWith(r)?t.slice(r.length):void 0},v=/[.+^${}()|[\]\\]/,b=(t,e)=>{let r="",a=0;for(;a<t.length;){const e=k(t,a);r+=e.regex,a=e.next}return new RegExp(`${e.anchored?"^":"(^|.*/)"}${r}${!0===e.withDirSuffix?"(/.*)?$":"$"}`)},k=(t,e)=>{const r=t[e];return"*"===r?E(t,e):"?"===r?{regex:"[^/]",next:e+1}:{regex:v.test(r)?`\\${r}`:r,next:e+1}},E=(t,e)=>{if("*"!==t[e+1])return{regex:"[^/]*",next:e+1};const r=e+2;return"/"===t[r]?{regex:"(.*/)?",next:r+1}:{regex:".*",next:r}},x=t=>{const e=t.startsWith("!"),r=e?t.slice(1):t;var a;return(a=r).includes("*")||a.includes("?")?{pattern:t,body:r,negated:e,isLiteral:!1,compiled:b(r,{anchored:r.includes("/")})}:{pattern:t,body:r,negated:e,isLiteral:!0,compiled:b(r,{anchored:!0,withDirSuffix:!0})}},$=(t,e)=>{let r=!1;for(const a of t)a.compiled.test(e)&&(r=!a.negated);return r},I=t=>{let e=t.length;for(;e>0&&32===t.charCodeAt(e-1)&&!(e>=2&&92===t.charCodeAt(e-2));)e-=1;return t.slice(0,e)},D=t=>t.replace(/\\(.)/g,"$1"),R=e=>new t.TsgitError({code:"INVALID_MERGE_TREE",reason:e}),T=e=>new t.TsgitError({code:"INVALID_MERGE_INPUT",reason:e}),S=268435456,A=["<<<<<<<","=======",">>>>>>>","|||||||"],M=new TextEncoder;function O(t){return t<=31||t>=127&&t<=159}function L(t){return t>=8234&&t<=8238||t>=8294&&t<=8297||8203===t||8204===t||8205===t||8288===t||65279===t}function N(t,e){if(t.length>255)throw T(`conflict marker ${e} label exceeds maximum length`);if(""===t.trim())throw T(`conflict marker ${e} label is empty or whitespace-only`);if(function(t){for(let e=0;e<t.length;e++){const r=t.charCodeAt(e);if(O(r)||L(r))return!0}return!1}(t))throw T(`conflict marker ${e} label contains forbidden control character`);if(function(t){for(const e of A)if(t.includes(e))return!0;return!1}(t))throw T(`conflict marker ${e} label contains forbidden marker substring`)}function _(t){let e=0;for(const r of t)e+=r.length;return e}function U(t){if(0===t.length)return new Uint8Array(0);const e=_(t),r=t[t.length-1],a=0===r.length||10!==r[r.length-1],n=new Uint8Array(e+(a?1:0));let i=0;for(const e of t)n.set(e,i),i+=e.length;return a&&(n[i]=10),n}function F(t,e,r={}){if("diff3"===r.conflictStyle)throw T("diff3 conflict style requires base lines — not supported in v1");const a=r.labels?.ours??"ours",n=r.labels?.theirs??"theirs";if(N(a,"ours"),N(n,"theirs"),void 0!==r.labels?.base&&N(r.labels.base,"base"),_(t)+_(e)>S)throw T("conflict output exceeds MAX_CONFLICT_OUTPUT_BYTES");const i=M.encode(`<<<<<<< ${a}\n`),o=M.encode("=======\n"),s=M.encode(`>>>>>>> ${n}\n`),c=U(t),d=U(e),f=new Uint8Array(i.length+c.length+o.length+d.length+s.length);let l=0;return f.set(i,l),l+=i.length,f.set(c,l),l+=c.length,f.set(o,l),l+=o.length,f.set(d,l),l+=d.length,f.set(s,l),f}function B(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}function C(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(!B(t[r],e[r]))return!1;return!0}function P(t){let e=0;for(const r of t)e+=r.length;const r=new Uint8Array(e);let a=0;for(const e of t)r.set(e,a),a+=e.length;return r}function H(t,e){const r=[];let a;const n=()=>{void 0!==a&&(r.push({baseStart:a.baseStart,baseEnd:a.baseEnd,replacement:a.replacement}),a=void 0)};for(const r of t)if("common"!==r.kind)if(void 0===a&&(a={baseStart:r.oursStart,baseEnd:r.oursStart,replacement:[]}),"ours-only"===r.kind)a.baseEnd=Math.max(a.baseEnd,r.oursEnd);else for(let t=r.theirsStart;t<r.theirsEnd;t++)a.replacement.push(e[t]);else n();return n(),r}function W(t,e){return t.baseStart===t.baseEnd?e.baseStart===e.baseEnd?t.baseStart===e.baseStart:t.baseStart>=e.baseStart&&t.baseStart<e.baseEnd:e.baseStart===e.baseEnd?e.baseStart>=t.baseStart&&e.baseStart<t.baseEnd:t.baseStart<e.baseEnd&&e.baseStart<t.baseEnd}function j(t,e){for(const r of e)if(r.baseStart===t.baseStart&&r.baseEnd===t.baseEnd&&C(r.replacement,t.replacement))return r}function z(t,e){for(const r of e)if(W(t,r))return!0;return!1}function G(t,e,r){return{status:"conflict",conflictType:"content",markedBytes:F(t,e,r)}}function X(t,e){return t.id===e.id&&t.mode===e.mode}function Y(t,r){if(void 0!==t&&t.entries.size>e.MAX_FLAT_TREE_ENTRIES)throw R(`${r} FlatTree exceeds MAX_FLAT_TREE_ENTRIES`)}function V(t){return{status:"conflict",conflict:t}}function q(t,e,r,a){return V({type:"modify-delete",path:t,baseId:e.id,baseMode:e.mode,...void 0===r?{}:{ourId:r.id,ourMode:r.mode},...void 0===a?{}:{theirId:a.id,theirMode:a.mode}})}function K(t,e,r,a){return void 0===e?{status:"resolved-known",path:t,id:r.id,mode:r.mode}:X(e,r)?{status:"resolved-deleted",path:t}:"our"===a?q(t,e,r,void 0):q(t,e,void 0,r)}function Z(t,r,a,n,i){return void 0===a&&void 0===n?{status:"resolved-deleted",path:t}:void 0===a?K(t,r,n,"their"):void 0===n?K(t,r,a,"our"):void 0===r?function(t,e,r){return X(e,r)?{status:"resolved-known",path:t,id:e.id,mode:e.mode}:function(t,e,r){return V({type:"add-add",path:t,ourId:e.id,theirId:r.id,ourMode:e.mode,theirMode:r.mode})}(t,e,r)}(t,a,n):async function(t,r,a,n,i){const o=X(r,a),s=X(r,n);if(o&&s)return{status:"unchanged",path:t,id:r.id,mode:r.mode};if(o)return{status:"resolved-known",path:t,id:n.id,mode:n.mode};if(s)return{status:"resolved-known",path:t,id:a.id,mode:a.mode};if(X(a,n))return{status:"resolved-known",path:t,id:a.id,mode:a.mode};if(!e.isSameKind(a.mode,n.mode)||!e.isSameKind(r.mode,a.mode))return function(t,e,r,a){return V({type:"type-change",path:t,baseId:e.id,ourId:r.id,theirId:a.id,baseMode:e.mode,ourMode:r.mode,theirMode:a.mode})}(t,r,a,n);const c=function(t,e,r){return e.mode===r.mode?e.mode:e.mode===t.mode?r.mode:e.mode}(r,a,n);return function(t){return t===e.FILE_MODE.GITLINK}(c)?function(t,e,r,a){return V({type:"gitlink",path:t,baseId:e.id,ourId:r.id,theirId:a.id,baseMode:e.mode,ourMode:r.mode,theirMode:a.mode})}(t,r,a,n):async function(t,e,r,a,n,i){const o={path:t,baseId:e.id,ourId:r.id,theirId:a.id,baseMode:e.mode,ourMode:r.mode,theirMode:a.mode},s=await i(o,void 0,new Uint8Array(0),new Uint8Array(0));if("clean"===s.status){if(s.bytes.length>S)throw T("contentMerger returned oversize clean bytes");return void 0!==s.id?{status:"resolved-known",path:t,id:s.id,mode:n}:{status:"resolved-merged",path:t,bytes:s.bytes,mode:n}}if(s.markedBytes.length>S)throw T("contentMerger returned oversize marked bytes");return V({type:s.conflictType,path:t,baseId:e.id,ourId:r.id,theirId:a.id,baseMode:e.mode,ourMode:r.mode,theirMode:a.mode,conflictContent:s.markedBytes})}(t,r,a,n,c,i)}(t,r,a,n,i)}const J=new TextDecoder("utf-8",{fatal:!1}),Q=new TextEncoder,tt=t=>t.endsWith("\n")?t.slice(0,-1):t,et=t=>{if(t.startsWith("ok "))return{name:t.slice(3),accepted:!0};if(t.startsWith("ng ")){const r=t.slice(3),a=r.indexOf(" ");if(a<0)throw e.invalidReportStatus(t);return{name:r.slice(0,a),accepted:!1,reason:r.slice(a+1)}}throw e.invalidReportStatus(t)},rt=async t=>{const r=await(async t=>{const e=[];for await(const r of t){if("data"!==r.kind)return e;e.push(tt(J.decode(r.payload)))}return e})(t);if(0===r.length)throw e.invalidReportStatus("");const[a,...n]=r,i=(t=>{if("unpack ok"===t)return{ok:!0};if(t.startsWith("unpack "))return{ok:!1,error:t.slice(7)};throw e.invalidReportStatus(t)})(a);return i.ok?{unpackOk:!0,refUpdates:n.map(et)}:{unpackOk:!1,unpackError:i.error,refUpdates:[]}};let at=new WeakMap;const nt=t=>{const e=at.get(t);if(void 0!==e)return e;const r=it(t);return at.set(t,r),r},it=async t=>{const e=await ot(t);return void 0===e?{}:st(e)},ot=async e=>{try{return await e.fs.readUtf8(`${e.layout.gitDir}/config`)}catch(e){if(e instanceof t.TsgitError&&"FILE_NOT_FOUND"===e.data.code)return;throw e}},st=t=>{const e=ct(t);return wt(e)},ct=t=>{const e=[];let r;for(const a of dt(t.split("\n"))){const t=ft(a).trim();if(""===t)continue;const n=ut(t);if(void 0!==n){r={section:n.section,subsection:n.subsection,entries:[]},e.push(r);continue}if(void 0===r)continue;const i=ht(t);void 0!==i&&r.entries.push(i)}return e},dt=t=>{const e=[];let r="";for(const a of t){const t=""===r?a:a.replace(/^\s+/,"");a.endsWith("\\")?r+=t.slice(0,t.length-1):(e.push(`${r}${t}`),r="")}return""!==r&&e.push(r),e},ft=t=>{const e=[lt(t,"#"),lt(t,";")].filter(t=>t>=0);return 0===e.length?t:t.slice(0,Math.min(...e))},lt=(t,e)=>{let r=!1;for(let a=0;a<t.length;a+=1){const n=t[a];if('"'===n)r=!r;else if(!r&&n===e)return a}return-1},ut=t=>{if(!t.startsWith("[")||!t.endsWith("]"))return;const e=t.slice(1,-1).trim();if(""===e)return;const r=e.indexOf('"');if(-1===r)return{section:e,subsection:void 0};const a=e.slice(0,r).trim(),n=e.lastIndexOf('"');return n<=r?void 0:{section:a,subsection:e.slice(r+1,n)}},ht=t=>{const e=t.indexOf("=");if(-1===e)return;const r=t.slice(0,e).trim();return""!==r?{key:r,value:t.slice(e+1).trim()}:void 0},wt=t=>{const e={};for(const r of t)"core"===r.section&&void 0===r.subsection?mt(e,r):"user"===r.section&&void 0===r.subsection?pt(e,r):"remote"===r.section&&void 0!==r.subsection?gt(e,r.subsection,r):"branch"===r.section&&void 0!==r.subsection&&yt(e,r.subsection,r);return vt(e)},mt=(t,e)=>{for(const{key:r,value:a}of e.entries){const e=r.toLowerCase();"bare"===e?t.core={...t.core,bare:kt(a)}:"excludesfile"===e&&(t.core={...t.core,excludesFile:a})}},pt=(t,e)=>{for(const{key:r,value:a}of e.entries)"name"===r?t.user={...t.user,name:a}:"email"===r&&(t.user={...t.user,email:a})},gt=(t,e,r)=>{t.remote??=new Map;const a=t.remote.get(e)??{},n=a.fetch?[...a.fetch]:[];let i=a.url;for(const{key:t,value:e}of r.entries)"url"===t?i=e:"fetch"===t&&n.push(e);const o={};void 0!==i&&(o.url=i),n.length>0&&(o.fetch=n),t.remote.set(e,o)},yt=(t,e,r)=>{t.branch??=new Map;const a={...t.branch.get(e)??{}};for(const{key:t,value:e}of r.entries)"remote"===t?a.remote=e:"merge"===t&&(a.merge=e);t.branch.set(e,a)},vt=t=>{const e={};return void 0===t.core?.bare&&void 0===t.core?.excludesFile||(e.core={...void 0!==t.core?.bare?{bare:t.core.bare}:{},...void 0!==t.core?.excludesFile?{excludesFile:t.core.excludesFile}:{}}),void 0!==t.user?.name&&void 0!==t.user?.email&&(e.user={name:t.user.name,email:t.user.email}),void 0!==t.remote&&t.remote.size>0&&(e.remote=t.remote),void 0!==t.branch&&t.branch.size>0&&(e.branch=t.branch),e},bt=new Set(["true","yes","on","1"]),kt=t=>bt.has(t.toLowerCase()),Et=async(t,e)=>xt(t,""===e?`${t.layout.workDir}/.gitignore`:`${t.layout.workDir}/${e}/.gitignore`),xt=async(r,a)=>{let n;try{n=await r.fs.lstat(a)}catch(e){if(e instanceof t.TsgitError&&"FILE_NOT_FOUND"===e.data.code)return;throw e}if(n.isFile&&!n.isSymbolicLink){if(n.size>e.MAX_GITIGNORE_BYTES)throw t.gitignoreFileTooLarge($t(a),n.size,e.MAX_GITIGNORE_BYTES);return(t=>{const e=[];for(const r of t.split("\n")){if(""===r)continue;if(/^\s*$/.test(r))continue;if(r.startsWith("#"))continue;const t=I(r),a=t.startsWith("!"),n=a?t.slice(1):t,i=n.endsWith("/"),o=i?n.slice(0,-1):n,s=o.startsWith("/")||o.includes("/"),c=o.startsWith("/")?o.slice(1):o,d=D(c),f=b(d,{anchored:s});e.push({pattern:D(t),negated:a,directoryOnly:i,anchored:s,compiled:f})}return e})(await r.fs.readUtf8(a))}},$t=t=>{const e=t.lastIndexOf("/");return-1===e?t:t.slice(e+1)},It=async t=>{const e=await(async t=>{const e=[],r=await(async t=>{const e=await nt(t),r=e.core?.excludesFile;if(void 0===r)return;const a=((t,e)=>{if("~"===e)return t.layout.homeDir;if(e.startsWith("~/")){if(void 0===t.layout.homeDir)return;return`${t.layout.homeDir}/${e.slice(2)}`}return e})(t,r);return void 0!==a?xt(t,a):void 0})(t);void 0!==r&&e.push({basedir:"",rules:r});const a=await(async t=>xt(t,`${t.layout.gitDir}/info/exclude`))(t);void 0!==a&&e.push({basedir:"",rules:a});const n=await Et(t,"");void 0!==n&&e.push({basedir:"",rules:n});const i=new Map;return{base:e,loadDirRules:async e=>{const r=i.get(e);if(void 0!==r)return r;const a=await Et(t,e)??[];return i.set(e,a),a}}})(t),r=[...e.base],a=new Set([]);return async(t,n)=>{for(const n of Dt(t)){if(a.has(n))continue;a.add(n);const t=await e.loadDirRules(n);t.length>0&&r.push({basedir:n,rules:t})}return"ignored"===((t,e,r)=>{let a="unset";for(const n of t){const t=y(e,n.basedir);if(void 0===t)continue;const i=g(n.rules,t,r);"unset"!==i&&(a=i)}return a})(r,t,n)}},Dt=t=>{const e=t.split("/");if(e.length<=1)return[];const r=[];for(let t=1;t<e.length;t+=1)r.push(e.slice(0,t).join("/"));return r},Rt=(e,r)=>new t.TsgitError(void 0===r?{code:"RESOURCE_LOCKED",resource:"index",path:e}:{code:"RESOURCE_LOCKED",resource:"index",path:e,mtimeMs:r}),Tt=async(r,a={})=>{const n=`${e.indexPath(r.layout.gitDir)}${e.lockSuffix}`,i=e.indexPath(r.layout.gitDir),o=a.now??(()=>Date.now()),s=a.breakStaleLockMs;try{await r.fs.writeExclusive(n,new Uint8Array)}catch(e){if(!(e instanceof t.TsgitError)||"FILE_EXISTS"!==e.data.code)throw e;if(void 0===s)throw Rt(n,await St(r,n));await At(r,n,s,o)}return Mt(r,n,i)},St=async(t,e)=>{try{return(await t.fs.lstat(e)).mtimeMs}catch{return}},At=async(e,r,a,n)=>{const i=await St(e,r);if(void 0===i)return void await e.fs.writeExclusive(r,new Uint8Array);const o=n()-i;if(o<0)throw Rt(r,i);if(o<a)throw Rt(r,i);await e.fs.rm(r);try{await e.fs.writeExclusive(r,new Uint8Array)}catch(a){if(a instanceof t.TsgitError&&"FILE_EXISTS"===a.data.code)throw Rt(r,await St(e,r));throw a}},Mt=(r,a,n)=>{let i=!1,o=!1;return{release:async()=>{if(!i&&!o){o=!0;try{await r.fs.rm(a)}catch(e){if(!(e instanceof t.TsgitError)||"FILE_NOT_FOUND"!==e.data.code)throw e}}},commit:async t=>{if(i||o)return;const s=function(t){const r=[...t.entries].sort(m),a=r.map(t=>{const r=e.encode(t.path);return{entry:t,pathBytes:r,paddedLength:62+r.length+8&-8}}),n=t.extensions.map(t=>({ext:t,sigBytes:e.encode(t.signature),totalLength:8+t.data.length})),i=12+a.reduce((t,e)=>t+e.paddedLength,0)+n.reduce((t,e)=>t+e.totalLength,0),o=new Uint8Array(i),s=new DataView(o.buffer);s.setUint32(0,1145655875),s.setUint32(4,2),s.setUint32(8,r.length);let c=12;for(const{entry:t,pathBytes:e,paddedLength:r}of a)p(o,s,c,t,e),c+=r;for(const{ext:t,sigBytes:e,totalLength:r}of n)o.set(e,c),s.setUint32(c+4,t.data.length),o.set(t.data,c+8),c+=r;return o}({entries:[...t],extensions:[]}),c=await r.hash.hash(s),d=new Uint8Array(s.length+c.length);d.set(s,0),d.set(c,s.length),await r.fs.write(a,d),await r.fs.rename(a,n),i=!0}}},Ot=e.RefName.from("HEAD"),Lt=async e=>{const r=`${e.layout.gitDir}/HEAD`;if(!await e.fs.exists(r))throw new t.TsgitError({code:"NOT_A_REPOSITORY",path:e.layout.workDir});return e.layout.bare?e.layout.gitDir:e.layout.workDir},Nt=async(e,r)=>{if(await(async t=>{const e=await nt(t);return e.core?.bare??!1})(e))throw(e=>new t.TsgitError({code:"BARE_REPOSITORY",operation:e}))(r)},_t=async r=>{const a=`${r.layout.gitDir}/HEAD`;let n;try{n=await r.fs.readUtf8(a)}catch(r){if(r instanceof t.TsgitError&&"FILE_NOT_FOUND"===r.data.code)throw e.refNotFound(Ot);throw r}const i=e.parseLooseRef(n);return"symbolic"===i.type?{kind:"symbolic",target:i.target}:{kind:"direct",id:i.target}},Ut=[{file:"MERGE_HEAD",operation:"merge"},{file:"CHERRY_PICK_HEAD",operation:"cherry-pick"},{file:"REVERT_HEAD",operation:"revert"},{file:"REBASE_HEAD",operation:"rebase"}],Ft=async(e,r={})=>{const a=await Promise.all(Ut.map(t=>e.fs.exists(`${e.layout.gitDir}/${t.file}`)));for(let e=0;e<Ut.length;e+=1){const n=Ut[e];if(void 0!==n&&r.except!==n.operation&&!0===a[e])throw t.operationInProgress(n.operation)}},Bt=e.validateWorkingTreePath,Ct=(t,e)=>`${t.layout.workDir}/${e}`,Pt=async(t,e)=>{const r=Bt(e);return t.fs.read(Ct(t,r))},Ht=async(e,r)=>{const a=Bt(r),n=Ct(e,a);let i;try{i=await e.fs.lstat(n)}catch{throw t.checkoutOverwriteDirty([a])}if(!i.isFile&&!i.isSymbolicLink)throw t.checkoutOverwriteDirty([a]);await e.fs.rm(n)},Wt=new TextEncoder,jt=t=>{for(const e of t){const t=e.startsWith("!")?e.slice(1):e;Bt(t),zt(e)}const e=(t=>t.map(x))(t),r=e.filter(Yt).map(t=>qt(t)),a=e.some(Vt);return{matcher:e,literalMustMatch:r,hasGlob:a}},zt=e=>{if(Wt.encode(e).byteLength>256)throw t.invalidOption("paths","pattern exceeds max length 256 bytes");if(Gt(e)>4)throw t.invalidOption("paths","pattern exceeds max **-token count 4")},Gt=t=>{let e=0,r=0;for(;r<t.length;)"*"!==t[r]||"*"!==t[r+1]?r+=1:(e+=1,r+=2);return e},Xt=(e,r)=>{if(0===e.length)return;const a=new Set(r);for(const n of e)if(!a.has(n)&&!r.some(t=>t.startsWith(`${n}/`)))throw t.pathspecNoMatch(n)},Yt=t=>!t.negated&&t.isLiteral,Vt=t=>!t.negated&&!t.isLiteral,qt=t=>t.body,Kt=new Set(["FILE_NOT_FOUND","INVALID_INDEX_HEADER","INVALID_INDEX_ENTRY"]),Zt=async(e,r,a)=>{const n=await Tt(e,void 0!==a.breakStaleLockMs?{breakStaleLockMs:a.breakStaleLockMs}:{});try{const a=await re(e),i=new Map(a),o=[],s=[];for(const n of r){const r=await ae(e,n);if("missing"===r)throw t.pathspecNoMatch(n);const c=a.get(n);i.set(n,r),void 0===c?o.push(n):c.id===r.id&&c.mode===r.mode||s.push(n)}return await n.commit(Array.from(i.values())),{added:o,modified:s,removed:[]}}finally{await n.release()}},Jt=async(t,e)=>{if(0===e.length)return!1;for(const r of e){const e=await t.fs.lstat(`${t.layout.workDir}/${r}`).catch(()=>{});if(void 0===e)return!1;if(e.isDirectory&&!e.isSymbolicLink)return!1}return!0},Qt=async(t,r,a,n)=>{const i=await It(t),o=async(t,e)=>!!await i(t,e)||!e&&!$(r,t),s=await Tt(t,void 0!==n.breakStaleLockMs?{breakStaleLockMs:n.breakStaleLockMs}:{});try{const r=await re(t),n=new Map(r),i=[],c=[],d=[],f=new Set;for await(const a of e.walkWorkingTree(t,{ignore:o})){const e=await ee(t,a,r,f);void 0!==e&&(i.push(e.path),n.set(e.path,e.entry),"added"===e.kind?c.push(e.path):"modified"===e.kind&&d.push(e.path))}return Xt(a,i),c.sort(),d.sort(),await s.commit(Array.from(n.values())),{added:c,modified:d,removed:[]}}finally{await s.release()}},te=async(t,e)=>{if(await e(t,!1))return!0;const r=t.split("/");for(let t=1;t<r.length;t+=1){const a=r.slice(0,t).join("/");if(await e(a,!0))return!0}return!1},ee=async(r,a,n,i)=>{const{path:o,stat:s}=a;if(i.add(o),s.size>e.MAX_WORKING_TREE_BLOB_BYTES)throw t.workingTreeFileTooLarge(o,s.size,e.MAX_WORKING_TREE_BLOB_BYTES);const c=await ne(r,o,s),d=n.get(o);return void 0===d?{kind:"added",path:o,entry:c}:d.id!==c.id||d.mode!==c.mode?{kind:"modified",path:o,entry:c}:{kind:"unchanged",path:o,entry:c}},re=async r=>{try{const t=await e.readIndex(r),a=new Map;for(const e of t.entries)a.set(e.path,e);return a}catch(e){if(e instanceof t.TsgitError&&Kt.has(e.data.code))return new Map;throw e}},ae=async(t,e)=>{const r=await t.fs.lstat(`${t.layout.workDir}/${e}`).catch(()=>{});return void 0===r?"missing":ne(t,e,r)},ne=async(r,a,n)=>{const i=await r.fs.lstat(`${r.layout.workDir}/${a}`);if(i.isSymbolicLink!==n.isSymbolicLink||i.isDirectory!==n.isDirectory||i.isFile!==n.isFile)throw t.operationAborted();if(i.size>e.MAX_WORKING_TREE_BLOB_BYTES)throw t.workingTreeFileTooLarge(a,i.size,e.MAX_WORKING_TREE_BLOB_BYTES);const o=i.isSymbolicLink?"120000":73&i.mode?"100755":"100644",s=await ie(r,a,i),c=await e.writeObject(r,{type:"blob",id:"",content:s});return oe(i,o,c,a)},ie=async(r,a,n)=>{if(n.isSymbolicLink){const n=(new TextEncoder).encode(await r.fs.readlink(`${r.layout.workDir}/${a}`));if(n.byteLength>e.MAX_WORKING_TREE_BLOB_BYTES)throw t.workingTreeFileTooLarge(a,n.byteLength,e.MAX_WORKING_TREE_BLOB_BYTES);return n}return Pt(r,a)},oe=(t,e,r,a)=>({ctimeSeconds:Math.floor(t.ctimeMs/1e3),ctimeNanoseconds:0,mtimeSeconds:Math.floor(t.mtimeMs/1e3),mtimeNanoseconds:0,dev:t.dev,ino:t.ino,mode:e,uid:t.uid,gid:t.gid,fileSize:t.size,id:r,flags:{assumeValid:!1,extended:!1,stage:0},path:a}),se="refs/heads/",ce=(t,e)=>t<e?-1:t>e?1:0,de=async(r,a)=>{if(/^[0-9a-f]{40}$/.test(a))return a;const n="HEAD"===a?["HEAD"]:[`${se}${a}`,a];for(const t of n)try{return await e.resolveRef(r,t)}catch{}throw t.branchNotFound(a)},fe="checkout:materialize",le=async(t,r)=>{if("HEAD"===r){const r=await e.resolveRef(t,"HEAD");return(await e.readTree(t,r)).id}return(await e.readTree(t,r)).id},ue=async(t,r)=>{const a=e.validateRefName(r.initialBranch),n=t.layout.gitDir;try{await t.fs.mkdir(n),await t.fs.writeUtf8(`${n}/HEAD`,`ref: refs/heads/${a}\n`),await t.fs.writeUtf8(`${n}/config`,(i=r.bare,`[core]\n\trepositoryformatversion = 0\n\tfilemode = true\n\tbare = ${i?"true":"false"}\n`)),await t.fs.mkdir(`${n}/refs/heads`),await t.fs.mkdir(`${n}/refs/tags`),await t.fs.mkdir(`${n}/objects/info`),await t.fs.mkdir(`${n}/objects/pack`),await t.fs.writeUtf8(`${n}/info/exclude`,"# git ls-files --others --exclude-from=.git/info/exclude\n# Lines that start with '#' are comments.\n# For a project mostly in C, the following would be a good set of\n# exclude patterns (uncomment them if you want to use them):\n# *.[oa]\n# *~\n"),await t.fs.writeUtf8(`${n}/description`,"Unnamed repository; edit this file 'description' to name the repository.\n")}catch(e){throw await t.fs.rmRecursive(n).catch(()=>{}),e}var i;return{gitDir:n,initialBranch:a,bare:r.bare}},he={attempts:3,backoff:"exponential",baseMs:250,maxDelayMs:5e3},we=(t,e={})=>{const a=void 0!==e.logger?me(e.logger):void 0;let n=t.transport;return n=r.withRetry(e.retry??he)(n),void 0!==e.auth&&(n=r.withAuth(e.auth)(n)),void 0!==a&&(n=r.withLogging({logger:a})(n)),n},me=t=>({log:e=>t.log(pe(e))}),pe=t=>"request"===t.kind||"response"===t.kind?{...t,url:ye(t.url),headers:ge(t.headers)}:{...t,url:ye(t.url),errorMessage:ye(t.errorMessage)},ge=t=>{const e={};for(const[r,a]of Object.entries(t))e[r]=ye(a);return e},ye=t=>{let e="";for(let r=0;r<t.length;r+=1){const a=t.charCodeAt(r);e+=9===a||10===a?t[r]:a<32||a>126?`\\x${a.toString(16).padStart(2,"0").toUpperCase()}`:t[r]}return e},ve={"git-upload-pack":"application/x-git-upload-pack-advertisement","git-receive-pack":"application/x-git-receive-pack-advertisement"},be=async(r,n,i,o)=>{const s=e.buildDiscoveryUrl(i,o),c=await n.request({url:s,method:"GET",headers:{accept:ve[o]},...void 0!==r.signal?{signal:r.signal}:{}});if(200!==c.statusCode)throw t.httpError(c.statusCode,`${o} discovery returned ${c.statusCode}`);const d=e.decodePktStream(a.readableStreamToAsyncIterable(c.body));return e.parseAdvertisedRefs(d,o)},ke=async(t,e,r)=>be(t,e,r,"git-upload-pack"),Ee=t=>{const r=e.CLIENT_CAPABILITIES_FETCH.filter(t=>"multi_ack_detailed"!==t&&"thin-pack"!==t&&"no-progress"!==t&&t!==e.AGENT);return[...e.negotiateCapabilities(t,r),e.AGENT]},xe=t=>{const e=new Set,r=[];for(const a of t)e.has(a.id)||(e.add(a.id),r.push(a.id));return r},$e=async(t,e)=>{Ie(t);const r=De(t);Re(r,e.allowInsecure??!1),Te(r);const a=await e.resolver(r.hostname);return{url:t,pinnedAddress:Se(a,e.allowPrivateNetworks??!1)}},Ie=e=>{for(let r=0;r<e.length;r+=1){const a=e.charCodeAt(r);if(10===a||13===a)throw t.invalidUrl("contains forbidden control character")}},De=e=>{try{return new URL(e)}catch{throw t.invalidUrl("not a valid URL")}},Re=(e,r)=>{const a=e.protocol;if("https:"!==a&&("http:"!==a||!r))throw t.unsupportedScheme(a.replace(":",""))},Te=e=>{if(""!==e.hash)throw t.invalidUrl("URL fragment is not allowed")},Se=(e,r)=>{for(const t of e)if(r||!Ae(t))return t;if(0===e.length)throw t.blockedHost("<unresolved>","no DNS records returned");throw t.blockedHost(e[0],"all resolved addresses are in a blocked range")},Ae=t=>t.includes(":")?Oe(t):Me(t),Me=t=>{const e=(t=>{const e=t.split(".");if(4!==e.length)return;const r=[];for(const t of e){if(!/^\d{1,3}$/.test(t))return;const e=Number(t);if(e>255)return;r.push(e)}return r})(t);if(void 0===e)return!1;const[r,a]=e;return 0===r||10===r||100===r&&a>=64&&a<=127||127===r||169===r&&254===a||172===r&&a>=16&&a<=31||192===r&&168===a||r>=224},Oe=t=>{const e=t.toLowerCase(),r=e.match(/::ffff:(?:0:)?(\d+\.\d+\.\d+\.\d+)$/);if(void 0!==r?.[1])return Me(r[1]);const a=e.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/);if(void 0!==a?.[1]&&void 0!==a[2]){const t=parseInt(a[1],16),e=parseInt(a[2],16);return Me(`${t>>8}.${255&t}.${e>>8}.${255&e}`)}return!!("::1"===e||"::"===e||e.startsWith("fe80:")||e.startsWith("fe80::")||e.startsWith("ff")||e.startsWith("fc")||e.startsWith("fd"))},Le="clone:discover",Ne=async(t,e)=>{const r=Ue(e),a=[];for(const n of e.refs)if("HEAD"!==n.name){if(n.name.startsWith("refs/heads/")){const e=n.name.slice(11),i=`refs/remotes/origin/${e}`;if(await _e(t,i,n.id),a.push({name:i,id:n.id}),void 0!==r&&e===r){const e=n.name;await _e(t,e,n.id),a.push({name:e,id:n.id})}continue}if(n.name.startsWith("refs/tags/")){const e=n.name;await _e(t,e,n.id),a.push({name:e,id:n.id});continue}t.logger?.debug?.("clone: skipping unsupported ref namespace",{name:n.name})}return a},_e=async(t,e,r)=>{const a=`${t.layout.gitDir}/${e}`;await t.fs.writeUtf8(a,`${r}\n`)},Ue=t=>{const e=t.capabilities.find(t=>t.startsWith("symref=HEAD:refs/heads/"));if(void 0!==e)return e.slice(23)},Fe=async(t,e)=>{const r=Ue(e);if(void 0!==r){const e=`refs/heads/${r}`;return await t.fs.writeUtf8(`${t.layout.gitDir}/HEAD`,`ref: ${e}\n`),e}void 0===e.head||await t.fs.writeUtf8(`${t.layout.gitDir}/HEAD`,`${e.head.id}\n`)},Be=e=>{if(void 0!==e.explicit)return e.explicit;if(void 0!==e.configUser)return e.configUser;throw t.authorUnconfigured()},Ce=e=>{if(void 0!==e.explicit)return e.explicit;if(void 0!==e.author)return e.author;if(void 0!==e.configUser)return e.configUser;throw t.authorUnconfigured()},Pe=(e,r)=>{const a=e.trim();if(""===a&&!r.allowEmpty)throw t.emptyCommitMessage();return a},He=t=>`${t.layout.gitDir}/MERGE_HEAD`,We=t=>`${t.layout.gitDir}/MERGE_MSG`,je=(t,e,r)=>{if(1===e.length)return void t.files.set(e[0],{id:r.id,mode:r.mode});const[a,...n]=e,i=a;let o=t.subdirs.get(i);void 0===o&&(o={files:new Map,subdirs:new Map},t.subdirs.set(i,o)),je(o,n,r)},ze=async(t,r)=>{const a=[];for(const[t,e]of r.files)a.push({mode:e.mode,name:t,id:e.id});const n=await Promise.all(Array.from(r.subdirs).map(async([e,r])=>({name:e,id:await ze(t,r)})));for(const{name:t,id:e}of n)a.push({mode:"40000",name:t,id:e});return e.writeTree(t,a)},Ge=async(t,r)=>{const a=/^[0-9a-f]{40}$/.test(r)?r:await e.resolveRef(t,e.validateRefName(r)),n=await e.readObject(t,a);return"commit"===n.type?n.data.tree:a},Xe="fetch:negotiate",Ye=async(t,r)=>{const a=[],n=[`refs/remotes/${r}`,"refs/tags"];for(const e of n){const r=`${t.layout.gitDir}/${e}`;await t.fs.exists(r)&&await Ve(t,r,a)}const i=`refs/remotes/${r}/`,o=await e.getRefStore(t).getPackedRefs();for(const t of o.entries)(t.name.startsWith(i)||t.name.startsWith("refs/tags/"))&&a.push(t.id);return a},Ve=async(t,e,r)=>{const a=await t.fs.readdir(e);for(const n of a){const a=`${e}/${n.name}`;if(n.isDirectory){await Ve(t,a,r);continue}const i=(await t.fs.readUtf8(a)).trim();Ke(i)&&r.push(i)}},qe=/^[0-9a-f]{40}([0-9a-f]{24})?$/i,Ke=t=>qe.test(t),Ze=(t,e)=>{if("HEAD"!==e.name&&Je(e.name)){if(e.name.startsWith("refs/heads/")){const r=`refs/remotes/${t}/${e.name.slice(11)}`;if(!Je(r))return;return r}return e.name.startsWith("refs/tags/")?e.name:void 0}},Je=t=>{try{return e.validateRefName(t),!0}catch{return!1}},Qe=async(t,r)=>{e.validateRefName(r);const a=`${t.layout.gitDir}/${r}`;if(!await t.fs.exists(a))return;const n=(await t.fs.readUtf8(a)).trim();return Ke(n)?n:void 0},tr=async(t,e,r)=>{const a=new Set(r.refs.filter(t=>t.name.startsWith("refs/heads/")).map(t=>t.name.slice(11))),n=`${t.layout.gitDir}/refs/remotes/${e}`;if(!await t.fs.exists(n))return[];const i=[];return await er(t,n,"",a,e,i),i},er=async(t,r,a,n,i,o)=>{const s=await t.fs.readdir(r);for(const c of s){const s=`${r}/${c.name}`,d=""===a?c.name:`${a}/${c.name}`;if(c.isDirectory){await er(t,s,d,n,i,o);continue}if(n.has(d))continue;const f=`refs/remotes/${i}/${d}`;if(!Je(f)){t.logger?.warn?.("fetch.prune: skipping unsafe ref name",{name:f});continue}const l=f;try{await e.updateRef(t,l,"0".repeat(40),{delete:!0})}catch(e){if(rr(e)){t.logger?.warn?.("fetch.prune: skipping packed-only ref",{name:l});continue}throw e}o.push(l)}},rr=e=>e instanceof t.TsgitError&&"UNSUPPORTED_OPERATION"===e.data.code&&"delete-packed-ref"===e.data.operation,ar=async(t,r)=>{const a=new Map;for await(const n of e.walkTree(t,r))n.mode!==e.FILE_MODE.DIRECTORY&&a.set(n.path,{id:n.id,mode:n.mode});return{entries:a}},nr="merge:write-files",ir=new Set(["rename-rename","gitlink"]),or=async(t,r,a,n,i,o)=>{const s=await xr(t,r),c={tree:o,parents:[n,i],author:s,committer:$r(r,s),message:Pe(r.message??`Merge ${r.target}`,{allowEmpty:!1}),extraHeaders:[]},d=await e.createCommit(t,c);return await e.updateRef(t,a,d,{expected:n}),{kind:"merge",id:d,branch:a,parents:[n,i]}},sr=async(t,r,a,n)=>{const i=await Ir(t,r),o=await Ir(t,a),s=void 0!==n?await Ir(t,n):void 0,[c,d,f]=await Promise.all([ar(t,i),ar(t,o),void 0!==s?ar(t,s):Promise.resolve(void 0)]),l=cr(t),u=await async function(t,r,a,n){Y(t,"base"),Y(r,"ours"),Y(a,"theirs");const i=function(t,r,a){const n=new Set;for(const e of[t,r,a])if(void 0!==e)for(const t of e.entries.keys())n.add(t);if(n.size>e.MAX_FLAT_TREE_ENTRIES)throw R("union FlatTree exceeds MAX_FLAT_TREE_ENTRIES");return n}(t,r,a),o=e.sortByPath([...i],t=>t),s=[];for(const e of o){const i=Z(e,t?.entries.get(e),r?.entries.get(e),a?.entries.get(e),n),o=i instanceof Promise?await i:i;s.push(o)}const c=function(t){const e=[];for(const r of t)"conflict"===r.status&&e.push(r.conflict);return e}(s);return{outcomes:s,conflicts:c,cleanMerge:0===c.length}}(f,c,d,l);return u.cleanMerge?{kind:"clean",tree:await dr(t,u.outcomes)}:{kind:"conflict",outcomes:u.outcomes,conflicts:u.conflicts}},cr=t=>async(r,a,n,i)=>{const[o,s,f]=await Promise.all([e.readBlob(t,r.ourId,{maxBytes:S}),e.readBlob(t,r.theirId,{maxBytes:S}),void 0!==r.baseId?e.readBlob(t,r.baseId,{maxBytes:S}):Promise.resolve(void 0)]);return function(t,e,r,a={}){if(d(e)||d(r)||void 0!==t&&d(t))return{status:"conflict",conflictType:"binary",markedBytes:e};if(void 0===t)return B(e,r)?{status:"clean",bytes:e}:G(c(e),c(r),a);if(B(e,t))return{status:"clean",bytes:r};if(B(r,t))return{status:"clean",bytes:e};if(B(e,r))return{status:"clean",bytes:e};const n=w(t,e),i=w(t,r);if(n.degraded||i.degraded)return G(c(e),c(r),a);const o=function(t,e){const r=[],a=new Set;for(const n of t){const t=j(n,e);if(void 0===t){if(z(n,e))return;r.push(n)}else a.add(t),r.push(n)}for(const t of e)a.has(t)||r.push(t);return r.sort((t,e)=>t.baseStart-e.baseStart),{changes:r}}(H(n.hunks,n.theirsLines),H(i.hunks,i.theirsLines));if(void 0===o)return G(c(e),c(r),a);return{status:"clean",bytes:P(function(t,e){const r=[];let a=0;for(const n of e.changes){for(let e=a;e<n.baseStart;e++)r.push(t[e]);for(const t of n.replacement)r.push(t);a=n.baseEnd}for(let e=a;e<t.length;e++)r.push(t[e]);return r}(n.oursLines,o))}}(f?.content,o.content,s.content)},dr=async(t,r)=>{const a=await(async(t,r)=>{const a=[];for(const n of r)if("resolved-deleted"!==n.status&&"conflict"!==n.status){if("resolved-merged"===n.status){const r=await e.writeObject(t,{type:"blob",content:n.bytes,id:""});a.push({path:n.path,id:r,mode:n.mode});continue}a.push({path:n.path,id:n.id,mode:n.mode})}return a})(t,r);return fr(t,a)},fr=async(t,r,a=0)=>{if(a>4096)throw e.treeDepthExceeded(a);const{files:n,subdirs:i}=(t=>{const e=[],r=new Map;for(const a of t){const t=a.path.indexOf("/");if(-1===t){e.push(a);continue}const n=a.path.slice(0,t),i={path:a.path.slice(t+1),id:a.id,mode:a.mode},o=r.get(n);void 0===o?r.set(n,[i]):o.push(i)}return{files:e,subdirs:r}})(r),o=await Promise.all(Array.from(i,async([r,n])=>({name:r,id:await fr(t,n,a+1),mode:e.FILE_MODE.DIRECTORY}))),s=n.map(t=>({name:t.path,id:t.id,mode:t.mode}));return e.writeTree(t,[...s,...o])},lr=async(t,e,r,a,n)=>{ur(r.conflicts);const i=await Tt(t);try{await hr(t,r.outcomes,r.conflicts),await(async(t,e)=>{await t.fs.writeUtf8((t=>`${t.layout.gitDir}/ORIG_HEAD`)(t),`${e}\n`)})(t,a),await(async(t,e)=>{await t.fs.writeUtf8(He(t),`${e}\n`)})(t,n);const o=Pe(e.message??`Merge ${e.target}`,{allowEmpty:!1});await(async(t,e)=>{await t.fs.writeUtf8(We(t),e)})(t,o);const s=Er(r.outcomes,r.conflicts);await i.commit(s)}finally{await i.release()}return{kind:"conflict",conflicts:r.conflicts.map(t=>({path:t.path,type:t.type})),mergeHead:n,origHead:a}},ur=e=>{for(const r of e)if(ir.has(r.type))throw t.unsupportedOperation("merge",`conflict type '${r.type}' not supported in v1 (path=${r.path})`)},hr=async(t,e,r)=>{await wr(e,32,e=>mr(t,e)),await wr(r,32,e=>pr(t,e))},wr=async(t,e,r)=>{let a=0;const n=[],i=async()=>{for(;a<t.length;){const e=t[a++];if(void 0===e)break;await r(e)}},o=Math.min(e,t.length);for(let t=0;t<o;t++)n.push(i());await Promise.all(n)},mr=async(t,r)=>{if("unchanged"===r.status||"resolved-known"===r.status){const a=await e.readBlob(t,r.id,{maxBytes:S});return void await yr(t,r.path,a.content)}"resolved-merged"!==r.status?"resolved-deleted"===r.status&&await vr(t,r.path):await yr(t,r.path,r.bytes)},pr=async(t,e)=>{const r=await gr(t,e);void 0!==r&&await yr(t,e.path,r)},gr=async(t,r)=>{if("content"===r.type&&void 0!==r.conflictContent)return r.conflictContent;if("binary"===r.type&&void 0!==r.ourId)return(await e.readBlob(t,r.ourId,{maxBytes:S})).content;if(("add-add"===r.type||"type-change"===r.type)&&void 0!==r.ourId)return(await e.readBlob(t,r.ourId,{maxBytes:S})).content;if("modify-delete"===r.type){const a=r.ourId??r.theirId;if(void 0!==a)return(await e.readBlob(t,a,{maxBytes:S})).content}if("content"===r.type&&void 0!==r.ourId&&void 0!==r.theirId){const[a,n]=await Promise.all([e.readBlob(t,r.ourId,{maxBytes:S}),e.readBlob(t,r.theirId,{maxBytes:S})]);return F([a.content],[n.content])}},yr=async(t,e,r)=>{const a=`${t.layout.workDir}/${e}`,n=br(a);void 0!==n&&await t.fs.mkdir(n),await t.fs.write(a,r)},vr=async(t,e)=>{const r=`${t.layout.workDir}/${e}`;await t.fs.exists(r)&&await t.fs.rm(r)},br=t=>{const e=t.lastIndexOf("/");if(!(e<=0))return t.slice(0,e)},kr=t=>({ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,mode:t,uid:0,gid:0,fileSize:0}),Er=(t,r)=>{const a=[];for(const e of t)"unchanged"!==e.status&&"resolved-known"!==e.status||a.push({...kr(e.mode),id:e.id,flags:{assumeValid:!1,extended:!1,stage:0},path:e.path});const s=function(t,r){const a=new Set;for(const e of t){if(a.has(e.path))throw n("duplicate conflict path");a.add(e.path)}const s=[];for(const e of t)for(const t of i(e))s.push(o(e.path,t,r));return s.sort((t,r)=>{const a=e.comparePaths(t.path,r.path);return 0!==a?a:t.flags.stage-r.flags.stage}),s}(r,kr),c=[...a,...s];return c.sort((t,e)=>t.path<e.path?-1:t.path>e.path?1:t.flags.stage-e.flags.stage),c},xr=async(t,e)=>{const r=await nt(t),a=r.user?{name:r.user.name,email:r.user.email,timestamp:Math.floor(Date.now()/1e3),timezoneOffset:"+0000"}:void 0,n={};return void 0!==e.author&&(n.explicit=e.author),void 0!==a&&(n.configUser=a),Be(n)},$r=(t,e)=>{const r={author:e};return void 0!==t.committer&&(r.explicit=t.committer),Ce(r)},Ir=async(t,r)=>{const a=await e.readObject(t,r);if("commit"!==a.type)throw e.unexpectedObjectType("commit",a.type,r);return a.data.tree},Dr=t=>"HEAD"===t||t.includes("/")?t:`refs/heads/${t}`,Rr=t=>{if(""===t)throw e.refspecInvalid(t,"refspec must not be empty");let r=t,a="normal";if(r.startsWith("+")&&(a="force",r=r.slice(1)),""===r)throw e.refspecInvalid(t,"refspec must not be empty after force prefix");const n=Tr(r,":");if(n>1)throw e.refspecInvalid(t,"refspec must contain at most one colon");if(0===n){const t=Dr(r);return{force:a,src:t,dst:t,isDelete:!1}}const i=r.indexOf(":"),o=r.slice(0,i),s=r.slice(i+1);if(""===s)throw e.refspecInvalid(t,"destination must not be empty");const c=Dr(s);if("HEAD"===c)throw e.refspecInvalid(t,"destination must not be HEAD");return""===o?{force:a,src:"",dst:c,isDelete:!0}:{force:a,src:Dr(o),dst:c,isDelete:!1}},Tr=(t,e)=>{let r=0;for(let a=0;a<t.length;a+=1)t[a]===e&&(r+=1);return r},Sr="push:enumerate-objects",Ar="push:upload",Mr=e.ObjectId.from("0".repeat(40)),Or="refs/heads/",Lr=new Set(["side-band-64k","side-band"]),Nr=/^[A-Za-z0-9._-]+$/,_r=t=>{const e=new Map;for(const r of t)e.set(r.name,r.id);return e},Ur=async(r,a,n,i,o)=>{const s=n.get(a.dst)??Mr;if(a.isDelete){if(s===Mr)throw t.invalidOption("refspecs",`delete target ${a.dst} is not advertised`);return{parsed:a,localOid:Mr,remoteOid:s}}const c=await e.resolveRef(r,a.src);return await Fr(r,a,c,s,i,o),{parsed:a,localOid:c,remoteOid:s}},Fr=async(e,r,a,n,i,o)=>{const s=await Br(e,r,i,o);if(void 0===s){if("force"!==r.force&&!0!==o.force&&n!==Mr&&!await Cr(e,n,a))throw t.nonFastForward(r.dst,a,n)}else if(s!==n)throw t.pushRejected(r.dst,"lease-mismatch",Pr())},Br=async(r,a,n,i)=>{if(void 0===i.forceWithLease)return;if("auto"!==i.forceWithLease)return i.forceWithLease;if(!a.dst.startsWith(Or))throw t.invalidOption("forceWithLease","lease-on-non-branch");const o=a.dst.slice(11);return e.resolveRef(r,`refs/remotes/${n}/${o}`)},Cr=async(t,r,a)=>{for await(const n of e.walkCommits(t,{from:[a],ignoreMissing:!0}))if(n.id===r)return!0;return!1},Pr=()=>({unpackOk:!0,refUpdates:[]}),Hr=async(r,a,n,i,o,s)=>{const c=o.filter(t=>!t.parsed.isDelete).map(t=>t.localOid),d=i.refs.map(t=>t.id),f=await Wr(r,c,d),l=await e.buildPack(r,{oids:f}),u=(t=>{const r=e.CLIENT_CAPABILITIES_PUSH.filter(t=>t!==e.AGENT);return[...e.negotiateCapabilities(t,r),e.AGENT]})(i.capabilities),h=(t=>{if(0===t.updates.length)throw e.emptyReceiveUpdates();const r=t.updates.map((e,r)=>((t,e)=>{const r=0===e.length?"":`\0${e.join(" ")}`;return Q.encode(`${t.oldId} ${t.newId} ${t.name}${r}\n`)})(e,0===r?t.capabilities:[])),a=e.encodePktStream(r),n=new Uint8Array(a.byteLength+t.packfile.byteLength);return n.set(a,0),n.set(t.packfile,a.byteLength),n})({updates:o.map(jr),capabilities:u,packfile:l.bytes}),w=await zr(r,a,n,h),m=await Xr(r,w,u);if(!m.unpackOk)throw t.pushRejected(o[0]?.parsed.dst,m.unpackError??"unpack failed",m);return await Vr(r,o,m.refUpdates,s)},Wr=async(t,r,a)=>{if(0===r.length)return[];const n=[];for await(const i of e.enumeratePushObjects(t,{wants:r,haves:a}))n.push(i);return n},jr=t=>({name:t.parsed.dst,oldId:t.remoteOid,newId:t.localOid}),zr=async(e,r,a,n)=>{e.progress.start(Ar);try{const i=Gr(a),o=await r.request({url:i,method:"POST",headers:{"content-type":"application/x-git-receive-pack-request",accept:"application/x-git-receive-pack-result"},body:n,...void 0!==e.signal?{signal:e.signal}:{}});if(200!==o.statusCode)throw t.httpError(o.statusCode,`git-receive-pack returned ${o.statusCode}`);return o}finally{e.progress.end(Ar)}},Gr=t=>{let r;try{r=new URL(t)}catch{throw e.invalidBaseUrl("invalid URL")}if(""!==r.hash)throw e.invalidBaseUrl("fragment must not be set");const a=r.pathname.endsWith("/")?r.pathname.slice(0,-1):r.pathname;return`${r.protocol}//${r.host}${a}/git-receive-pack${r.search}`},Xr=async(r,n,i)=>{const o=a.readableStreamToAsyncIterable(n.body),s=e.decodePktStream(o);if(Yr(i)){const a=e.parseSideBand(s,{onProgress:e=>r.progress.update(Ar,0,void 0,t.sanitize(e))});return rt(e.decodePktStream(a))}return rt(s)},Yr=t=>t.some(t=>Lr.has(t)),Vr=async(t,e,r,a)=>{const n=new Map;for(const t of r)n.set(t.name,t);const i=[];for(const r of e){const e=n.get(r.parsed.dst),o=!0===e?.accepted;o&&await qr(t,r,a),i.push({name:r.parsed.dst,oldId:r.remoteOid,newId:r.localOid,status:o?"ok":"rejected",...void 0!==e?.reason?{reason:e.reason}:{}})}return i},qr=async(t,r,a)=>{if(!r.parsed.dst.startsWith(Or))return;if(r.parsed.isDelete)return;const n=`refs/remotes/${a}/${r.parsed.dst.slice(11)}`;Kr(n)&&await e.updateRef(t,n,r.localOid)},Kr=t=>{try{return e.validateRefName(t),!0}catch{return!1}},Zr=new Set(["commit","tree","blob","tag"]),Jr=/^:(\d):(.+)$/,Qr=/^[0-9a-f]{1,6}$/,ta=e=>{throw t.revparseUnresolved(e)},ea=t=>{for(let e=0;e<t.length;e+=1){const r=t[e];if("~"===r||"^"===r)return e}return-1},ra=(t,e)=>{const r=[];let a=e;for(;a<t.length;){const e=t[a];if("~"===e){const e=aa(t,a);r.push(e.op),a=e.next}else if("^"===e){const e=na(t,a);r.push(e.op),a=e.next}else ta(t)}return r},aa=(t,e)=>{let r=e+1;for(;r<t.length&&ia(t.charCodeAt(r));)r+=1;return r===e+1&&ta(t),{op:{kind:"ancestor",n:Number(t.slice(e+1,r))},next:r}},na=(t,e)=>{if("{"===t[e+1]){const r=t.indexOf("}",e+2);-1===r&&ta(t);const a=t.slice(e+2,r);return Zr.has(a)||ta(t),{op:{kind:"peel",target:a},next:r+1}}let r=e+1;for(;r<t.length&&ia(t.charCodeAt(r));)r+=1;const a=t.slice(e+1,r);return{op:{kind:"parent",n:""===a?1:Number(a)},next:r}},ia=t=>t>=48&&t<=57,oa=async(t,r)=>{if(/^[0-9a-f]{40}$/.test(r))return e.ObjectId.from(r);const a=[r,`refs/heads/${r}`,`refs/tags/${r}`,`refs/remotes/${r}`];for(const r of a)try{return await e.resolveRef(t,r)}catch{}throw e.objectNotFound(r)},sa=async(t,e,r)=>{if("parent"===r.kind)return ca(t,e,r.n);if("ancestor"===r.kind){let a=e;for(let e=0;e<r.n;e+=1)a=await ca(t,a,1);return a}return da(t,e,r.target)},ca=async(t,r,a)=>{const n=await e.readObject(t,r);if("commit"!==n.type)throw e.objectNotFound(r);const i=n.data.parents[a-1];if(void 0===i)throw e.objectNotFound(r);return i},da=async(t,r,a)=>{let n=r;for(let r=0;r<5;r+=1){const r=await e.readObject(t,n);if(r.type===a)return n;if("tag"!==r.type){if("tree"===a&&"commit"===r.type)return r.data.tree;throw e.objectNotFound(n)}n=r.data.object}throw e.objectNotFound(n)},fa=async(t,r)=>{const a=await e.readIndex(t);for(const t of a.entries)if(t.path===r.path&&t.flags.stage===r.stage)return t.id;throw e.objectNotFound(`${r.stage}:${r.path}`)},la="status:scan",ua=(t,e)=>t.path<e.path?-1:1,ha=new TextEncoder,wa=async(t,e,r)=>{try{const a=await Pt(t,Bt(e)),n=ha.encode(`blob ${a.byteLength}\0`),i=new Uint8Array(n.byteLength+a.byteLength);return i.set(n,0),i.set(a,n.byteLength),await t.hash.hashHex(i)!==r.id}catch{return!0}},ma="refs/tags/",pa=async t=>{const r=await _t(t);return"direct"===r.kind?r.id:e.resolveRef(t,r.target)};exports.add=async(r,a,n={})=>{if(await Lt(r),await Nt(r,"add"),await Ft(r,{except:"merge"}),!0===n.all){if(0!==a.length)throw t.invalidOption("all","pathspec must be empty when all=true");return(async(t,r)=>{const a=await It(t),n=await Tt(t,void 0!==r.breakStaleLockMs?{breakStaleLockMs:r.breakStaleLockMs}:{});try{const r=await re(t),i=new Map(r),o=new Set,s=[],c=[],d=[];for await(const n of e.walkWorkingTree(t,{ignore:a})){const e=await ee(t,n,r,o);void 0!==e&&(i.set(e.path,e.entry),"added"===e.kind?s.push(e.path):"modified"===e.kind&&c.push(e.path))}for(const[t]of r)o.has(t)||await te(t,a)||(i.delete(t),d.push(t));return s.sort(),c.sort(),d.sort(),await n.commit(Array.from(i.values())),{added:s,modified:c,removed:d}}finally{await n.release()}})(r,n)}if(0===a.length)throw t.emptyPathspec();return(async(t,e,r)=>{const{matcher:a,literalMustMatch:n,hasGlob:i}=jt(e);return!i&&await Jt(t,n)?Zt(t,n,r):Qt(t,a,n,r)})(r,a,n)},exports.branch=async(r,a)=>(await Lt(r),"list"===a.kind?(async t=>{const r=`${t.layout.gitDir}/refs/heads`;if(!await t.fs.exists(r))return{kind:"list",branches:[]};const a=await _t(t),n="symbolic"===a.kind&&a.target.startsWith(se)?a.target:void 0,i=await t.fs.readdir(r),o=[];for(const r of i){if(!r.isFile)continue;const a=`${se}${r.name}`,i=await e.resolveRef(t,a);o.push({name:a,id:i,current:a===n})}return o.sort((t,e)=>ce(t.name,e.name)),{kind:"list",branches:o}})(r):"create"===a.kind?(async(r,a)=>{const n=e.validateRefName(`${se}${a.name}`),i=a.startPoint??"HEAD",o=await de(r,i);try{await e.updateRef(r,n,o,!0===a.force?{}:{expected:"absent"})}catch(e){if(e instanceof t.TsgitError&&"REF_UPDATE_CONFLICT"===e.data.code)throw t.branchExists(n);throw e}return{kind:"create",name:n,id:o}})(r,a):"delete"===a.kind?(async(r,a)=>{const n=e.validateRefName(`${se}${a.name}`),i=await _t(r);if("symbolic"===i.kind&&i.target===n)throw t.cannotDeleteCheckedOutBranch(n);if(!await r.fs.exists(`${r.layout.gitDir}/${n}`))throw t.branchNotFound(n);return await e.updateRef(r,n,"0".repeat(40),{delete:!0}),{kind:"delete",name:n}})(r,a):(async(r,a)=>{const n=e.validateRefName(`${se}${a.from}`),i=e.validateRefName(`${se}${a.to}`),o=await e.resolveRef(r,n);try{await e.updateRef(r,i,o,!0===a.force?{}:{expected:"absent"})}catch(e){if(e instanceof t.TsgitError&&"REF_UPDATE_CONFLICT"===e.data.code)throw t.branchExists(i);throw e}await e.updateRef(r,n,"0".repeat(40),{delete:!0});const s=await _t(r);return"symbolic"===s.kind&&s.target===n&&await e.writeSymbolicRef(r,"HEAD",i),{kind:"rename",from:n,to:i}})(r,a)),exports.checkout=async(r,a)=>{await Lt(r),await Nt(r,"checkout"),await Ft(r);const n=(t=>"target"in t&&void 0!==t.target)(a),i=(t=>"paths"in t&&void 0!==t.paths)(a);if(n&&i)throw t.invalidOption("paths","cannot be combined with target");if(!n&&!i)throw t.invalidOption("target","either target or paths must be provided");r.progress.start(fe);try{return i?await(async(r,a)=>{if(0===a.paths.length)throw t.invalidOption("paths","must not be empty");const n=a.source??"index",{matcher:i,literalMustMatch:o}=jt(a.paths),s=(await(async(t,r)=>{if("index"===r)return(await e.readIndex(t)).entries.map(t=>t.path);const a=await le(t,r),n=[];for await(const r of e.walkTree(t,a))r.mode!==e.FILE_MODE.DIRECTORY&&n.push(r.path);return n})(r,n)).filter(t=>$(i,t));Xt(o,s);const c=new Set(s);if(0===c.size)return{branch:void 0,id:await e.resolveRef(r,"HEAD"),detached:!1,changedPaths:0};const d="index"===n?await(async(t,r)=>{const a=await e.readIndex(t),n=await e.synthesizeTreeFromIndex(t,a.entries);return e.materializeTree(t,{targetTree:n,currentIndex:a,force:!0,forceRewriteAll:!0,paths:r})})(r,c):await(async(t,r,a)=>{const n=await Tt(t);try{const i=await e.readIndex(t),o=await e.materializeTree(t,{targetTree:r,currentIndex:i,force:!0,forceRewriteAll:!0,paths:a});return await n.commit(o.newIndexEntries),o}finally{await n.release()}})(r,await le(r,n),c);return{branch:void 0,id:await e.resolveRef(r,"HEAD"),detached:!1,changedPaths:d.written+d.deleted}})(r,a):await(async(r,a)=>{const n=!0===a.detach||/^[0-9a-f]{40}$/.test(a.target);let i,o;if(n)o=await(async(t,r)=>/^[0-9a-f]{40}$/.test(r)?r:e.resolveRef(t,r))(r,a.target);else{if(i=e.validateRefName(`refs/heads/${a.target}`),!await r.fs.exists(`${r.layout.gitDir}/${i}`))throw t.branchNotFound(i);o=await e.resolveRef(r,i)}const s=await e.readTree(r,o),c=await Tt(r);let d;try{const t=await e.readIndex(r);d=await e.materializeTree(r,{targetTree:s.id,currentIndex:t,force:a.force??!1}),0===d.written&&0===d.deleted||await c.commit(d.newIndexEntries)}finally{await c.release()}return n?(await r.fs.writeUtf8(`${r.layout.gitDir}/HEAD`,`${o}\n`),{branch:void 0,id:o,detached:!0,changedPaths:d.written+d.deleted}):(await e.writeSymbolicRef(r,"HEAD",i),{branch:i,id:o,detached:!1,changedPaths:d.written+d.deleted})})(r,a)}finally{r.progress.end(fe)}},exports.clone=async(r,a)=>{if(await r.fs.exists(`${r.layout.gitDir}/HEAD`))throw t.targetDirectoryNotEmpty(r.layout.workDir);if(""===a.url)throw t.remoteAdvertisesNoRefs();r.progress.start(Le);try{void 0!==a.resolver&&await $e(a.url,{resolver:a.resolver,...void 0!==a.allowInsecure?{allowInsecure:a.allowInsecure}:{},...void 0!==a.allowPrivateNetworks?{allowPrivateNetworks:a.allowPrivateNetworks}:{}});const n=await ue(r,{initialBranch:a.initialBranch??"main",bare:a.bare??!1});try{return await(async(r,a,n)=>{const i=we(r,{...void 0!==r.config?.auth?{auth:r.config.auth}:{}}),o=await ke(r,i,a.url);if(0===o.refs.length)throw t.remoteAdvertisesNoRefs();const s=Ee(o.capabilities),c=xe(o.refs),d=await e.fetchPack(r,i,{wants:c,haves:[],capabilities:s,url:a.url,progressOp:"clone:write-objects",...void 0!==a.depth?{depth:a.depth}:{}});d.shallow.length>0&&await e.updateShallow(r,{shallow:d.shallow,unshallow:d.unshallow});const f=await Ne(r,o);return{path:n,head:await Fe(r,o),fetchedRefs:f}})(r,a,n.gitDir)}catch(t){throw await r.fs.rmRecursive(r.layout.gitDir).catch(()=>{}),t}}finally{r.progress.end(Le)}},exports.commit=async(r,a)=>{await Lt(r),await Nt(r,"commit");const n=await(async t=>{const r=He(t);if(!await t.fs.exists(r))return;const a=(await t.fs.readUtf8(r)).trim();return 0!==a.length?e.ObjectId.from(a):void 0})(r);await Ft(r,void 0!==n?{except:"merge"}:{});const i=await(async(t,e,r)=>{if(e.message.length>0||void 0===r)return Pe(e.message,{allowEmpty:e.allowEmptyMessage??!1});const a=await(async t=>{const e=We(t);if(await t.fs.exists(e))return t.fs.readUtf8(e)})(t);return Pe(a??"",{allowEmpty:e.allowEmptyMessage??!1})})(r,a,n),o=(t=>{if(void 0!==t)return{name:t.name,email:t.email,timestamp:Math.floor(Date.now()/1e3),timezoneOffset:"+0000"}})((await nt(r)).user),s=Be(((t,e)=>{const r={};return void 0!==t&&(r.explicit=t),void 0!==e&&(r.configUser=e),r})(a.author,o)),c=Ce(((t,e,r)=>{const a={};return void 0!==t&&(a.explicit=t),void 0!==e&&(a.author=e),void 0!==r&&(a.configUser=r),a})(a.committer,s,o)),d=await e.readIndex(r);(e=>{const r=new Set;for(const t of e)0!==t.flags.stage&&r.add(t.path);if(r.size>0)throw t.mergeHasConflicts(r.size,[...r])})(d.entries);const f=await(async(t,e)=>{const r={files:new Map,subdirs:new Map};for(const t of e)je(r,t.path.split("/"),t);return ze(t,r)})(r,d.entries),l=await _t(r),u="symbolic"===l.kind?await(async(t,r)=>{try{return await e.resolveRef(t,r)}catch{return}})(r,l.target):l.id,h=((t,e)=>{const r=[];return void 0!==t&&r.push(t),void 0!==e&&r.push(e),r})(u,n);if(!a.allowEmpty&&void 0!==u&&void 0===n&&await(async(t,r)=>{const a=await e.readObject(t,r);return"commit"!==a.type?e.ObjectId.from("0".repeat(40)):a.data.tree})(r,u)===f)throw t.nothingToCommit();const w={tree:f,parents:h,author:s,committer:c,message:i,extraHeaders:[]},m=await e.createCommit(r,w),p="symbolic"===l.kind?l.target:void 0;return void 0!==p?await e.updateRef(r,p,m,void 0!==u?{expected:u}:{}):await r.fs.writeUtf8(`${r.layout.gitDir}/HEAD`,`${m}\n`),void 0!==n&&await(async t=>{for(const e of[He(t),We(t)])await t.fs.exists(e)&&await t.fs.rm(e)})(r),{id:m,tree:f,branch:p,parents:h}},exports.diff=async(t,r={})=>{await Lt(t);const a=await Ge(t,r.from??"HEAD"),n=void 0!==r.to?await Ge(t,r.to):void 0;return e.diffTrees(t,a,n,!0===r.detectRenames?{detectRenames:!0}:{})},exports.fetch=async(r,a={})=>{await Lt(r);const n=a.remote??"origin",i=await(async(e,r)=>{const a=await nt(e),n=a.remote?.get(r);if(void 0===n?.url)throw t.remoteNotConfigured(r);return n.url})(r,n);r.progress.start(Xe);try{const o=we(r,void 0!==r.config?.auth?{auth:r.config.auth}:{}),s=await ke(r,o,i);if(0===s.refs.length)throw t.remoteAdvertisesNoRefs();const c=Ee(s.capabilities),d=xe(s.refs),f=await(async(t,r)=>{const a=await Ye(t,r);if(0===a.length)return[];const n=new Set,i=[];for(const t of a)if(!n.has(t)&&(n.add(t),i.push(t),i.length>=e.MAX_HAVES))return i;const o=a.slice(0,e.MAX_WALK_SEEDS);for await(const r of e.walkCommits(t,{from:o,ignoreMissing:!0,verifyHash:!1}))if(!n.has(r.id)&&(n.add(r.id),i.push(r.id),i.length>=e.MAX_HAVES))break;return i})(r,n),l=await e.fetchPack(r,o,{wants:d,haves:f,capabilities:c,url:i,progressOp:"fetch:write-objects",...void 0!==a.depth?{depth:a.depth}:{}});(l.shallow.length>0||l.unshallow.length>0)&&await e.updateShallow(r,{shallow:l.shallow,unshallow:l.unshallow});const u=await(async(t,r,a)=>{const n=[];for(const i of a.refs){const a=Ze(r,i);if(void 0===a)continue;const o=await Qe(t,a);o!==i.id?(await e.updateRef(t,a,i.id),n.push({name:a,oldId:o,newId:i.id})):n.push({name:a,oldId:o,newId:i.id})}return n})(r,n,s);return{remote:n,url:i,updatedRefs:u,prunedRefs:!0===a.prune?await tr(r,n,s):[],shallow:l.shallow,unshallow:l.unshallow}}finally{r.progress.end(Xe)}},exports.init=async(e,r={})=>{const a=r.initialBranch??"main",n=r.bare??!1;if(await e.fs.exists(`${e.layout.gitDir}/HEAD`))throw new t.TsgitError({code:"ALREADY_INITIALIZED",path:e.layout.gitDir});const i=await ue(e,{initialBranch:a,bare:n});return{path:i.gitDir,initialBranch:i.initialBranch,bare:i.bare}},exports.log=async(t,r={})=>{await Lt(t);const a=await(async(t,r)=>{if(/^[0-9a-f]{40}$/.test(r))return r;const a=[r,`refs/heads/${r}`,`refs/tags/${r}`];for(const r of a)try{return await e.resolveRef(t,e.validateRefName(r))}catch{}return e.resolveRef(t,e.validateRefName(r))})(t,r.from??"HEAD"),n=await(async(t,r)=>{const a=[];for(const n of r)if(/^[0-9a-f]{40}$/.test(n))a.push(n);else try{a.push(await e.resolveRef(t,e.validateRefName(n)))}catch{}return a})(t,r.excluding??[]),i=r.before,o=[];let s=0;for await(const c of e.walkCommits(t,{from:[a],until:n,order:"first-parent"}))if(!(void 0!==i&&c.data.committer.timestamp>=i.getTime()/1e3)&&(o.push({id:c.id,tree:c.data.tree,parents:c.data.parents,author:c.data.author,committer:c.data.committer,message:c.data.message}),s+=1,void 0!==r.limit&&s>=r.limit))break;return o},exports.merge=async(r,a)=>{await Lt(r),await Nt(r,"merge"),await Ft(r);const n=await _t(r);if("symbolic"!==n.kind)throw t.unsupportedOperation("merge","cannot merge with detached HEAD");const i=await e.resolveRef(r,n.target),o=await(async(t,r)=>/^[0-9a-f]{40}$/.test(r)?r:e.resolveRef(t,`refs/heads/${r}`))(r,a.target);if(i===o)return{kind:"up-to-date",id:i};const s=await e.mergeBase(r,i,o);if(s===o)return{kind:"up-to-date",id:i};if(s===i&&!0!==a.noFastForward)return await e.updateRef(r,n.target,o,{expected:i}),{kind:"fast-forward",id:o,branch:n.target};if(!0===a.fastForwardOnly)throw t.nonFastForward(n.target,i,o);return(async(t,e,r,a,n,i)=>{t.progress.start(nr);try{const o=await sr(t,a,n,i);return"conflict"===o.kind?lr(t,e,o,a,n):or(t,e,r,a,n,o.tree)}finally{t.progress.end(nr)}})(r,a,n.target,i,o,s)},exports.push=async(e,r={})=>{await Lt(e),e.progress.start(Sr);try{const a=r.remote??"origin",n=await(async(e,r)=>{if(!Nr.test(r))throw t.invalidOption("remote",`invalid remote name: ${r}`);const a=await nt(e),n=a.remote?.get(r);if(void 0===n?.url)throw t.remoteNotConfigured(r);return n.url})(e,a),i=await(async(e,r)=>{if(void 0!==r&&r.length>0)return r.map(Rr);const a=await _t(e);if("symbolic"!==a.kind)throw t.invalidOption("refspecs","no-default-refspec (HEAD is detached)");const n=a.target;return[Rr(`${n}:${n}`)]})(e,r.refspecs),o=we(e,void 0!==e.config?.auth?{auth:e.config.auth}:{}),s=await(async(t,e,r)=>be(t,e,r,"git-receive-pack"))(e,o,n),c=(await(async(t,e,r,a,n)=>{const i=_r(r.refs),o=[];for(const r of e)o.push(await Ur(t,r,i,a,n));return o})(e,i,s,a,r)).filter(t=>t.localOid!==t.remoteOid);return 0===c.length?{remote:a,url:n,pushedRefs:[]}:{remote:a,url:n,pushedRefs:await Hr(e,o,n,s,c,a)}}finally{e.progress.end(Sr)}},exports.reset=async(r,a)=>{await Lt(r),"hard"===a.mode&&await Nt(r,"reset --hard"),await Ft(r);const n=await(async(r,a)=>{if(/^[0-9a-f]{40}$/.test(a))return a;const n="HEAD"===a?["HEAD"]:[a,`refs/heads/${a}`,`refs/tags/${a}`];for(const t of n)try{return await e.resolveRef(r,t)}catch{}throw t.revparseUnresolved(a)})(r,a.target);"mixed"===a.mode?await(async(t,r)=>{const a=await e.readObject(t,r);if("commit"!==a.type)throw e.unexpectedObjectType("commit",a.type,r);const n=await Tt(t);try{const r=await e.readIndex(t),i=await e.buildIndexFromTree(t,{targetTree:a.data.tree,currentIndex:r});await n.commit(i)}finally{await n.release()}})(r,n):"hard"===a.mode&&await(async(t,r)=>{const a=await e.readObject(t,r);if("commit"!==a.type)throw e.unexpectedObjectType("commit",a.type,r);const n=await Tt(t);try{const r=await e.readIndex(t),i=await e.materializeTree(t,{targetTree:a.data.tree,currentIndex:r,force:!0,forceRewriteAll:!0});(i.written>0||i.deleted>0)&&await n.commit(i.newIndexEntries)}finally{await n.release()}})(r,n);const i=await _t(r),o="symbolic"===i.kind?i.target:void 0;return void 0!==o?await e.updateRef(r,o,n,{}):await r.fs.writeUtf8(`${r.layout.gitDir}/HEAD`,`${n}\n`),{mode:a.mode,id:n,branch:o}},exports.revParse=async(t,e)=>{await Lt(t);var r;return(async(t,e)=>{if("index-stage"===e.kind)return fa(t,e);let r=await oa(t,e.base);for(const a of e.operations)r=await sa(t,r,a);return r})(t,(""===(r=e)&&ta(r),r.startsWith(":")?(t=>{const e=Jr.exec(t);null===e&&ta(t);const r=e[2],a=Number(e[1]);return a>3&&ta(t),{kind:"index-stage",stage:a,path:r}})(r):(r.includes("@{")&&ta(r),(t=>{const e=ea(t),r=-1===e?t:t.slice(0,e);return""===r&&ta(t),Qr.test(r)&&-1===e&&ta(t),{kind:"ref-or-hex",base:r,operations:-1===e?[]:ra(t,e)}})(r))))},exports.rm=async(r,a,n={})=>{if(await Lt(r),await Nt(r,"rm"),await Ft(r),0===a.length)throw t.emptyPathspec();const{matcher:i,literalMustMatch:o}=jt(a),s=await Tt(r,void 0!==n.breakStaleLockMs?{breakStaleLockMs:n.breakStaleLockMs}:{});try{const a=await e.readIndex(r).catch(e=>{if(e instanceof t.TsgitError&&("FILE_NOT_FOUND"===(r=e.data.code)||"INVALID_INDEX_HEADER"===r||"INVALID_INDEX_ENTRY"===r))return{entries:[]};var r;throw e}),c=new Map;for(const t of a.entries)c.set(t.path,t);const d=[];for(const[t]of c)$(i,t)&&d.push(t);Xt(o,d);for(const t of d)c.delete(t);if(!n.cached)for(const e of d)await Ht(r,e).catch(e=>{if(!(e instanceof t.TsgitError&&"FILE_NOT_FOUND"===e.data.code))throw e});return await s.commit(Array.from(c.values())),{removed:d}}finally{await s.release()}},exports.status=async t=>{await Lt(t);const r=await _t(t),a="symbolic"===r.kind?r.target:void 0,n="direct"===r.kind,i=await e.readIndex(t).catch(()=>({entries:[]})),o=new Map;for(const t of i.entries)o.set(t.path,t);t.progress.start(la);try{const r=((t,e)=>{let r=0,a=0;return{tick:()=>{r+=1;const n=Math.floor(r/100);n>a&&(a=n,t.update(e,r))}}})(t.progress,la),i=(await Promise.all(Array.from(o).map(async([e,a])=>{const n=await(async(t,e,r)=>void 0===await t.fs.lstat(`${t.layout.workDir}/${e}`).catch(()=>{})?{kind:"deleted",path:e}:await wa(t,e,r)?{kind:"modified",path:e}:void 0)(t,e,a);return r.tick(),n}))).filter(t=>void 0!==t),s=await It(t),c=[];for await(const{path:r}of e.walkWorkingTree(t,{ignore:s}))o.has(r)||c.push({kind:"untracked",path:r});c.sort(ua);const d=[...i,...c];return{branch:a,detached:n,indexChanges:[],workingTreeChanges:d,clean:0===d.length}}finally{t.progress.end(la)}},exports.tag=async(r,a)=>(await Lt(r),"list"===a.kind?(async t=>{const r=`${t.layout.gitDir}/refs/tags`;if(!await t.fs.exists(r))return{kind:"list",tags:[]};const a=await t.fs.readdir(r),n=[];for(const r of a){if(!r.isFile)continue;const a=`${ma}${r.name}`,i=await e.resolveRef(t,a);n.push({name:a,id:i})}return n.sort((t,e)=>t.name<e.name?-1:1),{kind:"list",tags:n}})(r):"create"===a.kind?(async(r,a)=>{const n=e.validateRefName(`${ma}${a.name}`),i=void 0!==a.target?a.target:await pa(r),o=/^[0-9a-f]{40}$/.test(i)?i:await e.resolveRef(r,i);try{await e.updateRef(r,n,o,!0===a.force?{}:{expected:"absent"})}catch(e){if(e instanceof t.TsgitError&&"REF_UPDATE_CONFLICT"===e.data.code)throw t.tagExists(n);throw e}return{kind:"create",name:n,id:o}})(r,a):(async(r,a)=>{const n=e.validateRefName(`${ma}${a.name}`);if(!await r.fs.exists(`${r.layout.gitDir}/${n}`))throw t.tagNotFound(n);return await e.updateRef(r,n,"0".repeat(40),{delete:!0}),{kind:"delete",name:n}})(r,a)),exports.validateUrl=$e;
|
|
2
|
+
//# sourceMappingURL=index-BcxdLkNe.cjs.map
|