@scolladon/tsgit 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +32 -252
  2. package/dist/cjs/adapters/browser/index.cjs +1 -1
  3. package/dist/cjs/adapters/memory/index.cjs +1 -1
  4. package/dist/cjs/adapters/memory/index.cjs.map +1 -1
  5. package/dist/cjs/adapters/node/index.cjs +1 -1
  6. package/dist/cjs/adapters/node/index.cjs.map +1 -1
  7. package/dist/cjs/chunks/browser-http-transport-D4NH-8oJ.cjs +2 -0
  8. package/dist/cjs/chunks/browser-http-transport-D4NH-8oJ.cjs.map +1 -0
  9. package/dist/cjs/chunks/context-BcoAzPuU.cjs.map +1 -1
  10. package/dist/cjs/chunks/{error-CqLvhejR.cjs → error-CDLOBdNU.cjs} +2 -2
  11. package/dist/cjs/chunks/error-CDLOBdNU.cjs.map +1 -0
  12. package/dist/cjs/chunks/index-BVArBKuk.cjs +2 -0
  13. package/dist/cjs/chunks/index-BVArBKuk.cjs.map +1 -0
  14. package/dist/cjs/chunks/index-DE9HSiWf.cjs +2 -0
  15. package/dist/cjs/chunks/index-DE9HSiWf.cjs.map +1 -0
  16. package/dist/cjs/chunks/{logger-C8Z5BfFF.cjs → logger-CVG0zcPH.cjs} +2 -2
  17. package/dist/cjs/chunks/{logger-C8Z5BfFF.cjs.map → logger-CVG0zcPH.cjs.map} +1 -1
  18. package/dist/cjs/chunks/{memory-http-transport-Pjyme5KN.cjs → memory-http-transport-DXwDGKtR.cjs} +2 -2
  19. package/dist/cjs/chunks/memory-http-transport-DXwDGKtR.cjs.map +1 -0
  20. package/dist/cjs/chunks/node-http-transport-vrbnNEDb.cjs +2 -0
  21. package/dist/cjs/chunks/node-http-transport-vrbnNEDb.cjs.map +1 -0
  22. package/dist/cjs/chunks/{progress-CntEbiuo.cjs → progress-Bj2w-90A.cjs} +2 -2
  23. package/dist/cjs/chunks/{progress-CntEbiuo.cjs.map → progress-Bj2w-90A.cjs.map} +1 -1
  24. package/dist/cjs/chunks/repository-BJwTSiGf.cjs +2 -0
  25. package/dist/cjs/chunks/repository-BJwTSiGf.cjs.map +1 -0
  26. package/dist/cjs/commands/index.cjs +1 -1
  27. package/dist/cjs/index.browser.cjs +1 -1
  28. package/dist/cjs/index.cjs +1 -1
  29. package/dist/cjs/index.default.cjs +1 -1
  30. package/dist/cjs/index.node.cjs +1 -1
  31. package/dist/cjs/index.node.cjs.map +1 -1
  32. package/dist/cjs/primitives/index.cjs +1 -1
  33. package/dist/esm/adapters/browser/index.js +1 -1
  34. package/dist/esm/adapters/memory/index.js +1 -1
  35. package/dist/esm/adapters/memory/index.js.map +1 -1
  36. package/dist/esm/adapters/node/index.js +1 -1
  37. package/dist/esm/adapters/node/index.js.map +1 -1
  38. package/dist/esm/chunks/browser-http-transport-DL8bkNdg.js +2 -0
  39. package/dist/esm/chunks/browser-http-transport-DL8bkNdg.js.map +1 -0
  40. package/dist/esm/chunks/context-CumKOV7K.js.map +1 -1
  41. package/dist/esm/chunks/{error-BN9rdQ33.js → error-MOmSzp9Z.js} +2 -2
  42. package/dist/esm/chunks/error-MOmSzp9Z.js.map +1 -0
  43. package/dist/esm/chunks/index-BjmofbKE.js +2 -0
  44. package/dist/esm/chunks/index-BjmofbKE.js.map +1 -0
  45. package/dist/esm/chunks/index-Jh5R-UmU.js +2 -0
  46. package/dist/esm/chunks/index-Jh5R-UmU.js.map +1 -0
  47. package/dist/esm/chunks/{logger-BLZbLzva.js → logger-DP2cCpvL.js} +2 -2
  48. package/dist/esm/chunks/{logger-BLZbLzva.js.map → logger-DP2cCpvL.js.map} +1 -1
  49. package/dist/esm/chunks/memory-http-transport-COJU6VOL.js +2 -0
  50. package/dist/esm/chunks/memory-http-transport-COJU6VOL.js.map +1 -0
  51. package/dist/esm/chunks/node-http-transport-DYCFIJbc.js +2 -0
  52. package/dist/esm/chunks/node-http-transport-DYCFIJbc.js.map +1 -0
  53. package/dist/esm/chunks/{progress-DJU_f66N.js → progress-NePjO3Kd.js} +2 -2
  54. package/dist/esm/chunks/{progress-DJU_f66N.js.map → progress-NePjO3Kd.js.map} +1 -1
  55. package/dist/esm/chunks/repository-Cs-dbHqO.js +2 -0
  56. package/dist/esm/chunks/repository-Cs-dbHqO.js.map +1 -0
  57. package/dist/esm/commands/index.js +1 -1
  58. package/dist/esm/index.browser.js +1 -1
  59. package/dist/esm/index.default.js +1 -1
  60. package/dist/esm/index.js +1 -1
  61. package/dist/esm/index.node.js +1 -1
  62. package/dist/esm/index.node.js.map +1 -1
  63. package/dist/esm/primitives/index.js +1 -1
  64. package/dist/types/adapters/browser/index.d.cts +2 -1
  65. package/dist/types/adapters/browser/index.d.ts +2 -1
  66. package/dist/types/adapters/memory/index.d.cts +21 -2
  67. package/dist/types/adapters/memory/index.d.ts +21 -2
  68. package/dist/types/adapters/node/index.d.cts +64 -3
  69. package/dist/types/adapters/node/index.d.ts +64 -3
  70. package/dist/types/chunks/{context-o5TPfMB2.d.ts → context-BORy7yXb.d.ts} +97 -2
  71. package/dist/types/chunks/{context-D84z1i5F.d.cts → context-CMrHCVwK.d.cts} +97 -2
  72. package/dist/types/chunks/reflog-entry-C2Hsdobk.d.ts +354 -0
  73. package/dist/types/chunks/reflog-entry-DNvSz7S5.d.cts +354 -0
  74. package/dist/types/chunks/{repository-23evW2h-.d.cts → repository-DCR_3RVt.d.cts} +21 -3
  75. package/dist/types/chunks/{repository-BT7Xq1kJ.d.ts → repository-DFxFeYi3.d.ts} +21 -3
  76. package/dist/types/chunks/write-tree-CuhpWKFo.d.cts +164 -0
  77. package/dist/types/chunks/write-tree-Dn1LtIh7.d.ts +164 -0
  78. package/dist/types/commands/index.d.cts +152 -6
  79. package/dist/types/commands/index.d.ts +152 -6
  80. package/dist/types/index.browser.d.cts +4 -4
  81. package/dist/types/index.browser.d.ts +4 -4
  82. package/dist/types/index.d.cts +4 -4
  83. package/dist/types/index.d.ts +4 -4
  84. package/dist/types/index.default.d.cts +4 -4
  85. package/dist/types/index.default.d.ts +4 -4
  86. package/dist/types/index.node.d.cts +4 -4
  87. package/dist/types/index.node.d.ts +4 -4
  88. package/dist/types/primitives/index.d.cts +197 -7
  89. package/dist/types/primitives/index.d.ts +197 -7
  90. package/package.json +207 -17
  91. package/dist/cjs/chunks/browser-http-transport-DcG05jw3.cjs +0 -2
  92. package/dist/cjs/chunks/browser-http-transport-DcG05jw3.cjs.map +0 -1
  93. package/dist/cjs/chunks/error-CqLvhejR.cjs.map +0 -1
  94. package/dist/cjs/chunks/index-BcxdLkNe.cjs +0 -2
  95. package/dist/cjs/chunks/index-BcxdLkNe.cjs.map +0 -1
  96. package/dist/cjs/chunks/index-D5Nd-Mks.cjs +0 -2
  97. package/dist/cjs/chunks/index-D5Nd-Mks.cjs.map +0 -1
  98. package/dist/cjs/chunks/memory-http-transport-Pjyme5KN.cjs.map +0 -1
  99. package/dist/cjs/chunks/node-http-transport-UkW5eEm3.cjs +0 -2
  100. package/dist/cjs/chunks/node-http-transport-UkW5eEm3.cjs.map +0 -1
  101. package/dist/cjs/chunks/repository-B_jx2AKW.cjs +0 -2
  102. package/dist/cjs/chunks/repository-B_jx2AKW.cjs.map +0 -1
  103. package/dist/esm/chunks/browser-http-transport-COFgnEyq.js +0 -2
  104. package/dist/esm/chunks/browser-http-transport-COFgnEyq.js.map +0 -1
  105. package/dist/esm/chunks/error-BN9rdQ33.js.map +0 -1
  106. package/dist/esm/chunks/index-BdV37p4e.js +0 -2
  107. package/dist/esm/chunks/index-BdV37p4e.js.map +0 -1
  108. package/dist/esm/chunks/index-BkRJ9-Im.js +0 -2
  109. package/dist/esm/chunks/index-BkRJ9-Im.js.map +0 -1
  110. package/dist/esm/chunks/memory-http-transport-DRYdYgiE.js +0 -2
  111. package/dist/esm/chunks/memory-http-transport-DRYdYgiE.js.map +0 -1
  112. package/dist/esm/chunks/node-http-transport-Bp5cFZCt.js +0 -2
  113. package/dist/esm/chunks/node-http-transport-Bp5cFZCt.js.map +0 -1
  114. package/dist/esm/chunks/repository-DiagDiT_.js +0 -2
  115. package/dist/esm/chunks/repository-DiagDiT_.js.map +0 -1
  116. package/dist/types/chunks/diff-change-Bm1zvVsC.d.cts +0 -59
  117. package/dist/types/chunks/diff-change-alGRzD_j.d.ts +0 -59
  118. package/dist/types/chunks/write-tree-DNjhjS3t.d.ts +0 -282
  119. package/dist/types/chunks/write-tree-DVp0RJ_r.d.cts +0 -282
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scolladon/tsgit",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Lightning-fast git, pure TypeScript, everywhere.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -166,6 +166,7 @@
166
166
  "scripts": {
167
167
  "prepare": "husky",
168
168
  "build": "wireit",
169
+ "build:parity": "wireit",
169
170
  "check": "wireit",
170
171
  "check:fix": "wireit",
171
172
  "check:types": "wireit",
@@ -178,16 +179,29 @@
178
179
  "test:integration": "wireit",
179
180
  "test:posix-integration": "wireit",
180
181
  "test:win-integration": "wireit",
182
+ "test:parity": "wireit",
183
+ "test:parity:deno": "wireit",
184
+ "test:parity:bun": "wireit",
185
+ "test:parity:workers": "wireit",
181
186
  "test:e2e": "wireit",
182
187
  "test:coverage": "wireit",
183
188
  "test:mutation": "wireit",
184
- "test:mutation:incremental": "wireit",
189
+ "test:mutation:pr": "wireit",
185
190
  "test:bench": "wireit",
186
191
  "bench:summary": "wireit",
187
- "bench:fixture": "node --experimental-strip-types scripts/gen-bench-fixture.ts",
188
- "profile": "npm run build && node --experimental-strip-types scripts/profile.ts",
192
+ "bench:fixture": "node --experimental-strip-types tooling/gen-bench-fixture.ts",
193
+ "profile": "npm run build && node --experimental-strip-types tooling/profile.ts",
189
194
  "docs": "wireit",
190
195
  "docs:check": "wireit",
196
+ "docs:json": "wireit",
197
+ "check:doc-links": "wireit",
198
+ "check:doc-coverage": "wireit",
199
+ "check:doc-typedoc": "wireit",
200
+ "check:test-pyramid": "wireit",
201
+ "check:parity-fixtures": "wireit",
202
+ "check:browser-surface": "wireit",
203
+ "check:write-surfaces": "wireit",
204
+ "check:mutation-budgets": "wireit",
191
205
  "verify:tarball": "wireit",
192
206
  "check:size": "wireit",
193
207
  "check:exports": "wireit",
@@ -341,15 +355,81 @@
341
355
  ],
342
356
  "output": []
343
357
  },
358
+ "test:parity": {
359
+ "command": "vitest run --project parity",
360
+ "dependencies": [
361
+ "check:types"
362
+ ],
363
+ "files": [
364
+ "src/**/*.ts",
365
+ "test/parity/**/*.ts",
366
+ "vitest.config.ts"
367
+ ],
368
+ "output": []
369
+ },
370
+ "test:parity:deno": {
371
+ "command": "deno test --no-check --allow-read --allow-write --allow-env --no-prompt --config test/runtime-parity/deno/deno.json test/runtime-parity/deno/",
372
+ "dependencies": [
373
+ "build"
374
+ ],
375
+ "files": [
376
+ "dist/esm/**/*.js",
377
+ "test/runtime-parity/deno/**",
378
+ "test/parity/scenarios/**/*.ts",
379
+ "test/parity/fixtures.ts"
380
+ ],
381
+ "output": []
382
+ },
383
+ "test:parity:bun": {
384
+ "command": "bun test test/runtime-parity/bun/",
385
+ "dependencies": [
386
+ "build"
387
+ ],
388
+ "files": [
389
+ "dist/esm/**/*.js",
390
+ "test/runtime-parity/bun/**",
391
+ "test/parity/scenarios/**/*.ts",
392
+ "test/parity/fixtures.ts"
393
+ ],
394
+ "output": []
395
+ },
396
+ "test:parity:workers": {
397
+ "command": "vitest run --config test/runtime-parity/workers/vitest.config.ts",
398
+ "dependencies": [
399
+ "build"
400
+ ],
401
+ "files": [
402
+ "dist/esm/**/*.js",
403
+ "test/runtime-parity/workers/**",
404
+ "test/parity/scenarios/**/*.ts",
405
+ "test/parity/fixtures.ts"
406
+ ],
407
+ "output": []
408
+ },
409
+ "build:parity": {
410
+ "command": "node --experimental-strip-types tooling/build-parity-bundle.ts",
411
+ "files": [
412
+ "test/parity/scenarios/**/*.ts",
413
+ "test/parity/fixtures.ts",
414
+ "test/browser/parity-scenarios.bundle.ts",
415
+ "tooling/build-parity-bundle.ts"
416
+ ],
417
+ "output": [
418
+ "test/browser/parity-scenarios.bundle.js",
419
+ "test/browser/parity-scenarios.bundle.js.map"
420
+ ]
421
+ },
344
422
  "test:e2e": {
345
423
  "command": "npx playwright test",
346
424
  "dependencies": [
347
- "build"
425
+ "build",
426
+ "build:parity"
348
427
  ],
349
428
  "files": [
350
429
  "test/browser/**/*.ts",
351
430
  "test/browser/**/*.mjs",
352
431
  "test/browser/index.html",
432
+ "test/browser/parity-scenarios.bundle.js",
353
433
  "playwright.config.ts"
354
434
  ],
355
435
  "output": [
@@ -385,14 +465,15 @@
385
465
  "reports/mutation/**"
386
466
  ]
387
467
  },
388
- "test:mutation:incremental": {
389
- "command": "stryker run --incremental",
468
+ "test:mutation:pr": {
469
+ "command": "node --experimental-strip-types tooling/run-stryker-pr.ts",
390
470
  "dependencies": [
391
471
  "test:unit"
392
472
  ],
393
473
  "files": [
394
474
  "src/**/*.ts",
395
475
  "test/unit/**/*.ts",
476
+ "tooling/run-stryker-pr.ts",
396
477
  "stryker.config.json",
397
478
  "vitest.config.ts"
398
479
  ],
@@ -415,12 +496,12 @@
415
496
  ]
416
497
  },
417
498
  "bench:summary": {
418
- "command": "node --experimental-strip-types scripts/bench-summarize.ts",
499
+ "command": "node --experimental-strip-types tooling/bench-summarize.ts",
419
500
  "dependencies": [
420
501
  "test:bench"
421
502
  ],
422
503
  "files": [
423
- "scripts/bench-summarize.ts",
504
+ "tooling/bench-summarize.ts",
424
505
  "reports/benchmarks/raw.json"
425
506
  ],
426
507
  "output": [
@@ -449,13 +530,111 @@
449
530
  ],
450
531
  "output": []
451
532
  },
533
+ "docs:json": {
534
+ "command": "typedoc --json reports/api.json --disableSources --out reports/api-tmp && rm -rf reports/api-tmp",
535
+ "files": [
536
+ "src/**/*.ts",
537
+ "typedoc.json",
538
+ "tsconfig.build.json",
539
+ "README.md"
540
+ ],
541
+ "output": [
542
+ "reports/api.json"
543
+ ]
544
+ },
545
+ "check:doc-links": {
546
+ "command": "lychee --config .lychee.toml README.md CONTRIBUTING.md RUNBOOK.md SECURITY.md 'docs/**/*.md'"
547
+ },
548
+ "check:doc-coverage": {
549
+ "command": "node --experimental-strip-types tooling/check-doc-coverage.ts",
550
+ "files": [
551
+ "src/repository.ts",
552
+ "tooling/check-doc-coverage.ts",
553
+ "tooling/check-doc-coverage.allowlist.json",
554
+ "docs/use/commands/**/*.md",
555
+ "docs/use/primitives/**/*.md"
556
+ ],
557
+ "output": []
558
+ },
559
+ "check:doc-typedoc": {
560
+ "command": "git diff --exit-code -- reports/api.json",
561
+ "dependencies": [
562
+ "docs:json"
563
+ ]
564
+ },
565
+ "check:test-pyramid": {
566
+ "command": "node --experimental-strip-types tooling/audit-test-pyramid.ts",
567
+ "files": [
568
+ "tooling/audit-test-pyramid.ts",
569
+ "tooling/test-pyramid/**/*.ts",
570
+ "test-pyramid-budgets.json",
571
+ "test/unit/**/*.test.ts",
572
+ "test/integration/**/*.test.ts",
573
+ "test/browser/**/*.spec.ts"
574
+ ],
575
+ "output": [
576
+ "reports/test-pyramid.json",
577
+ "reports/test-pyramid.md"
578
+ ]
579
+ },
580
+ "check:parity-fixtures": {
581
+ "command": "node --experimental-strip-types tooling/audit-parity-fixtures.ts",
582
+ "files": [
583
+ "tooling/audit-parity-fixtures.ts",
584
+ "tooling/parity-fixtures/**/*.ts",
585
+ "test/parity/scenarios/**/*.ts",
586
+ "test/parity/fixtures.ts"
587
+ ],
588
+ "output": [
589
+ "reports/parity-fixtures.json"
590
+ ]
591
+ },
592
+ "check:browser-surface": {
593
+ "command": "node --experimental-strip-types tooling/audit-browser-surface.ts",
594
+ "files": [
595
+ "src/repository.ts",
596
+ "test/browser/**/*.spec.ts",
597
+ "test/parity/scenarios/**/*.ts",
598
+ "tooling/audit-browser-surface.ts",
599
+ "tooling/audit-browser-surface/**/*.ts",
600
+ "tooling/audit-browser-surface.allowlist.json"
601
+ ],
602
+ "output": [
603
+ "reports/browser-surface-coverage.json"
604
+ ]
605
+ },
606
+ "check:write-surfaces": {
607
+ "command": "node --experimental-strip-types tooling/audit-write-surfaces.ts",
608
+ "files": [
609
+ "src/**/*.ts",
610
+ "test/integration/**/*.test.ts",
611
+ "tooling/audit-write-surfaces.ts",
612
+ "tooling/audit-write-surfaces/**/*.ts",
613
+ "tooling/audit-write-surfaces.allowlist.json",
614
+ "tooling/test-pyramid/parse-proves-header.ts",
615
+ "tooling/test-pyramid/parse-manifest.ts"
616
+ ],
617
+ "output": [
618
+ "reports/write-surface-coverage.json"
619
+ ]
620
+ },
621
+ "check:mutation-budgets": {
622
+ "command": "node --experimental-strip-types tooling/check-mutation-budgets.ts",
623
+ "files": [
624
+ "tooling/check-mutation-budgets.ts",
625
+ "tooling/mutation-budgets.ts",
626
+ "mutation-budgets.json",
627
+ "reports/mutation/mutation-report.json"
628
+ ],
629
+ "output": []
630
+ },
452
631
  "verify:tarball": {
453
- "command": "bash scripts/verify-tarball.sh",
632
+ "command": "bash tooling/verify-tarball.sh",
454
633
  "dependencies": [
455
634
  "build"
456
635
  ],
457
636
  "files": [
458
- "scripts/verify-tarball.sh",
637
+ "tooling/verify-tarball.sh",
459
638
  "dist/**",
460
639
  "package.json",
461
640
  "LICENSE",
@@ -524,8 +703,15 @@
524
703
  "check:size",
525
704
  "check:exports",
526
705
  "check:security",
706
+ "check:doc-coverage",
707
+ "check:doc-typedoc",
708
+ "check:test-pyramid",
709
+ "check:parity-fixtures",
710
+ "check:browser-surface",
711
+ "check:write-surfaces",
527
712
  "test:coverage",
528
- "test:integration"
713
+ "test:integration",
714
+ "test:parity"
529
715
  ]
530
716
  }
531
717
  },
@@ -538,6 +724,8 @@
538
724
  "devDependencies": {
539
725
  "@arethetypeswrong/cli": "0.18.2",
540
726
  "@biomejs/biome": "2.4.15",
727
+ "@cloudflare/vitest-pool-workers": "0.16.9",
728
+ "@cloudflare/workers-types": "4.20260525.1",
541
729
  "@commitlint/cli": "21.0.1",
542
730
  "@commitlint/config-conventional": "21.0.1",
543
731
  "@ls-lint/ls-lint": "2.3.1",
@@ -552,13 +740,14 @@
552
740
  "@types/node": "25.9.1",
553
741
  "@vitest/coverage-v8": "4.1.7",
554
742
  "cspell": "10.0.0",
555
- "dependency-cruiser": "17.4.0",
743
+ "dependency-cruiser": "17.4.2",
556
744
  "fast-check": "4.8.0",
557
745
  "husky": "9.1.7",
558
- "isomorphic-git": "1.38.1",
559
- "jscpd": "4.2.3",
560
- "knip": "6.14.1",
746
+ "isomorphic-git": "1.38.2",
747
+ "jscpd": "4.2.4",
748
+ "knip": "6.14.2",
561
749
  "lint-staged": "17.0.5",
750
+ "minimatch": "10.2.5",
562
751
  "rollup": "4.60.4",
563
752
  "rollup-plugin-dts": "6.4.1",
564
753
  "rollup-plugin-visualizer": "7.0.1",
@@ -566,6 +755,7 @@
566
755
  "typedoc": "0.28.19",
567
756
  "typescript": "6.0.3",
568
757
  "vitest": "4.1.7",
569
- "wireit": "0.14.12"
758
+ "wireit": "0.14.12",
759
+ "wrangler": "4.94.0"
570
760
  }
571
761
  }
@@ -1,2 +0,0 @@
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 +0,0 @@
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 +0,0 @@
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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"}
@@ -1,2 +0,0 @@
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