@nimbus-sh/worker 0.9.0 → 0.11.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 (286) hide show
  1. package/NOTICE.md +5 -0
  2. package/README.md +10 -0
  3. package/dist/_shared/session-router.d.ts +7 -0
  4. package/dist/_shared/session-router.d.ts.map +1 -1
  5. package/dist/_shared/session-router.js +7 -0
  6. package/dist/bindings/body.d.ts +6 -0
  7. package/dist/bindings/body.d.ts.map +1 -0
  8. package/dist/bindings/body.js +37 -0
  9. package/dist/bindings/kv.d.ts +0 -2
  10. package/dist/bindings/kv.d.ts.map +1 -1
  11. package/dist/bindings/kv.js +3 -42
  12. package/dist/bindings/r2.d.ts +0 -2
  13. package/dist/bindings/r2.d.ts.map +1 -1
  14. package/dist/bindings/r2.js +4 -44
  15. package/dist/esbuild-cli-artifact.generated.d.ts +18 -0
  16. package/dist/esbuild-cli-artifact.generated.d.ts.map +1 -0
  17. package/dist/esbuild-cli-artifact.generated.js +17 -0
  18. package/dist/esbuild-wasm-bundle.generated.d.ts +24 -24
  19. package/dist/esbuild-wasm-bundle.generated.d.ts.map +1 -1
  20. package/dist/esbuild-wasm-bundle.generated.js +24 -24
  21. package/dist/facets/cirrus-real.d.ts.map +1 -1
  22. package/dist/facets/cirrus-real.js +11 -6
  23. package/dist/facets/compose.d.ts +11 -7
  24. package/dist/facets/compose.d.ts.map +1 -1
  25. package/dist/facets/compose.js +8 -31
  26. package/dist/facets/data-plan.d.ts +79 -0
  27. package/dist/facets/data-plan.d.ts.map +1 -0
  28. package/dist/facets/data-plan.js +477 -0
  29. package/dist/facets/esbuild-bundle-pool.d.ts +1 -1
  30. package/dist/facets/esbuild-bundle-pool.js +3 -3
  31. package/dist/facets/esbuild-transform.d.ts +38 -8
  32. package/dist/facets/esbuild-transform.d.ts.map +1 -1
  33. package/dist/facets/esbuild-transform.js +219 -19
  34. package/dist/facets/exec-telemetry.d.ts +7 -3
  35. package/dist/facets/exec-telemetry.d.ts.map +1 -1
  36. package/dist/facets/manager.d.ts +198 -69
  37. package/dist/facets/manager.d.ts.map +1 -1
  38. package/dist/facets/manager.js +1276 -652
  39. package/dist/facets/opencode-staging.d.ts +0 -2
  40. package/dist/facets/opencode-staging.d.ts.map +1 -1
  41. package/dist/facets/opencode-staging.js +5 -11
  42. package/dist/facets/process.d.ts +4 -0
  43. package/dist/facets/process.d.ts.map +1 -1
  44. package/dist/facets/process.js +3 -0
  45. package/dist/facets/read-profile.d.ts +149 -0
  46. package/dist/facets/read-profile.d.ts.map +1 -0
  47. package/dist/facets/read-profile.js +483 -0
  48. package/dist/facets/real-vite-hmr.d.ts +2 -0
  49. package/dist/facets/real-vite-hmr.d.ts.map +1 -1
  50. package/dist/facets/real-vite-hmr.js +3 -2
  51. package/dist/facets/resident-identity.d.ts +0 -1
  52. package/dist/facets/resident-identity.d.ts.map +1 -1
  53. package/dist/facets/resident-identity.js +0 -3
  54. package/dist/facets/wasm-swap-registry.d.ts +34 -25
  55. package/dist/facets/wasm-swap-registry.d.ts.map +1 -1
  56. package/dist/facets/wasm-swap-registry.js +62 -56
  57. package/dist/facets/ws-terminal.d.ts +4 -4
  58. package/dist/facets/ws-terminal.d.ts.map +1 -1
  59. package/dist/facets/ws-terminal.js +4 -5
  60. package/dist/git/commands.d.ts +33 -10
  61. package/dist/git/commands.d.ts.map +1 -1
  62. package/dist/git/commands.js +1891 -197
  63. package/dist/git/network-facet.d.ts +12 -2
  64. package/dist/git/network-facet.d.ts.map +1 -1
  65. package/dist/git/network-facet.js +69 -18
  66. package/dist/git/unified-diff.d.ts +74 -0
  67. package/dist/git/unified-diff.d.ts.map +1 -0
  68. package/dist/git/unified-diff.js +676 -0
  69. package/dist/git-bundle.generated.d.ts +7 -11
  70. package/dist/git-bundle.generated.d.ts.map +1 -1
  71. package/dist/git-bundle.generated.js +7 -11
  72. package/dist/hosted/commands.d.ts.map +1 -1
  73. package/dist/hosted/commands.js +64 -245
  74. package/dist/hosted/runtime.d.ts +22 -15
  75. package/dist/hosted/runtime.d.ts.map +1 -1
  76. package/dist/hosted/runtime.js +72 -14
  77. package/dist/hosted/services.d.ts +8 -1
  78. package/dist/hosted/services.d.ts.map +1 -1
  79. package/dist/hosted/services.js +12 -13
  80. package/dist/hosted/session.d.ts +165 -0
  81. package/dist/hosted/session.d.ts.map +1 -0
  82. package/dist/hosted/session.js +132 -0
  83. package/dist/loaders/generated-workers.d.ts +6 -3
  84. package/dist/loaders/generated-workers.d.ts.map +1 -1
  85. package/dist/loaders/generated-workers.js +8 -5
  86. package/dist/loaders/npm-resolve-preamble.d.ts.map +1 -1
  87. package/dist/loaders/npm-resolve-preamble.js +0 -27
  88. package/dist/loaders/pre-bundle-preamble.d.ts +6 -3
  89. package/dist/loaders/pre-bundle-preamble.d.ts.map +1 -1
  90. package/dist/loaders/pre-bundle-preamble.js +13 -8
  91. package/dist/node-shims-artifact.generated.d.ts +13 -4
  92. package/dist/node-shims-artifact.generated.d.ts.map +1 -1
  93. package/dist/node-shims-artifact.generated.js +16 -7
  94. package/dist/npm/bin-links.d.ts +3 -1
  95. package/dist/npm/bin-links.d.ts.map +1 -1
  96. package/dist/npm/bin-links.js +32 -8
  97. package/dist/npm/cache.d.ts +11 -1
  98. package/dist/npm/cache.d.ts.map +1 -1
  99. package/dist/npm/cache.js +21 -7
  100. package/dist/npm/install-batch-facet.d.ts +4 -2
  101. package/dist/npm/install-batch-facet.d.ts.map +1 -1
  102. package/dist/npm/install-batch-facet.js +32 -18
  103. package/dist/npm/installer.d.ts +23 -3
  104. package/dist/npm/installer.d.ts.map +1 -1
  105. package/dist/npm/installer.js +330 -131
  106. package/dist/npm/npx-install.d.ts +3 -1
  107. package/dist/npm/npx-install.d.ts.map +1 -1
  108. package/dist/npm/npx-install.js +4 -1
  109. package/dist/npm/package-lock.d.ts +32 -0
  110. package/dist/npm/package-lock.d.ts.map +1 -0
  111. package/dist/npm/package-lock.js +65 -0
  112. package/dist/npm/placement.d.ts +16 -0
  113. package/dist/npm/placement.d.ts.map +1 -0
  114. package/dist/npm/placement.js +33 -0
  115. package/dist/npm/pre-bundle-facet.d.ts +1 -30
  116. package/dist/npm/pre-bundle-facet.d.ts.map +1 -1
  117. package/dist/npm/pre-bundle-facet.js +3 -5
  118. package/dist/npm/r2-cache.d.ts +12 -6
  119. package/dist/npm/r2-cache.d.ts.map +1 -1
  120. package/dist/npm/r2-cache.js +34 -16
  121. package/dist/npm/resolve-one-facet.d.ts +3 -0
  122. package/dist/npm/resolve-one-facet.d.ts.map +1 -1
  123. package/dist/npm/resolve-one-facet.js +15 -3
  124. package/dist/npm/resolver.d.ts +11 -13
  125. package/dist/npm/resolver.d.ts.map +1 -1
  126. package/dist/npm/resolver.js +12 -25
  127. package/dist/opencode-artifact.generated.js +2 -2
  128. package/dist/replica/routing.d.ts +2 -38
  129. package/dist/replica/routing.d.ts.map +1 -1
  130. package/dist/replica/routing.js +3 -55
  131. package/dist/router/index.d.ts.map +1 -1
  132. package/dist/router/index.js +15 -2
  133. package/dist/router/public-directory.d.ts +18 -0
  134. package/dist/router/public-directory.d.ts.map +1 -1
  135. package/dist/router/public-directory.js +1 -1
  136. package/dist/router/remote-api.d.ts +3 -1
  137. package/dist/router/remote-api.d.ts.map +1 -1
  138. package/dist/router/remote-api.js +42 -79
  139. package/dist/runtime/bash-repl.js +2 -2
  140. package/dist/runtime/bun-repl.d.ts.map +1 -1
  141. package/dist/runtime/bun-repl.js +2 -13
  142. package/dist/runtime/cpython-resident.d.ts.map +1 -1
  143. package/dist/runtime/cpython-resident.js +2 -10
  144. package/dist/runtime/esbuild-wasm-bytes.d.ts +37 -18
  145. package/dist/runtime/esbuild-wasm-bytes.d.ts.map +1 -1
  146. package/dist/runtime/esbuild-wasm-bytes.js +66 -92
  147. package/dist/runtime/facet-loader-host.d.ts.map +1 -1
  148. package/dist/runtime/facet-loader-host.js +0 -7
  149. package/dist/runtime/git-bundle-artifact.d.ts +17 -0
  150. package/dist/runtime/git-bundle-artifact.d.ts.map +1 -0
  151. package/dist/runtime/git-bundle-artifact.js +25 -0
  152. package/dist/runtime/node-repl.d.ts.map +1 -1
  153. package/dist/runtime/node-repl.js +2 -13
  154. package/dist/runtime/node-shims-artifact.d.ts +22 -23
  155. package/dist/runtime/node-shims-artifact.d.ts.map +1 -1
  156. package/dist/runtime/node-shims-artifact.js +48 -78
  157. package/dist/runtime/node-shims.d.ts.map +1 -1
  158. package/dist/runtime/node-shims.js +2358 -996
  159. package/dist/runtime/opencode-artifact.d.ts.map +1 -1
  160. package/dist/runtime/opencode-artifact.js +17 -53
  161. package/dist/runtime/opencode-facet-runner.d.ts +3 -6
  162. package/dist/runtime/opencode-facet-runner.d.ts.map +1 -1
  163. package/dist/runtime/opencode-facet-runner.js +45 -10
  164. package/dist/runtime/opentui-wasm-bytes.d.ts.map +1 -1
  165. package/dist/runtime/opentui-wasm-bytes.js +16 -49
  166. package/dist/runtime/package-manager.d.ts +0 -2
  167. package/dist/runtime/package-manager.d.ts.map +1 -1
  168. package/dist/runtime/package-manager.js +0 -3
  169. package/dist/runtime/python-repl.d.ts.map +1 -1
  170. package/dist/runtime/python-repl.js +4 -35
  171. package/dist/runtime/repl-session.d.ts +10 -0
  172. package/dist/runtime/repl-session.d.ts.map +1 -1
  173. package/dist/runtime/repl-session.js +7 -0
  174. package/dist/runtime/ruby-repl.d.ts.map +1 -1
  175. package/dist/runtime/ruby-repl.js +2 -2
  176. package/dist/runtime/ruby-resident.d.ts.map +1 -1
  177. package/dist/runtime/ruby-resident.js +41 -51
  178. package/dist/runtime/runtime-catalog.d.ts +10 -3
  179. package/dist/runtime/runtime-catalog.d.ts.map +1 -1
  180. package/dist/runtime/runtime-catalog.js +125 -15
  181. package/dist/runtime/sqlite-wasm-bytes.d.ts +4 -4
  182. package/dist/runtime/sqlite-wasm-bytes.d.ts.map +1 -1
  183. package/dist/runtime/sqlite-wasm-bytes.js +21 -57
  184. package/dist/runtime/staged-source.d.ts +67 -0
  185. package/dist/runtime/staged-source.d.ts.map +1 -0
  186. package/dist/runtime/staged-source.js +113 -0
  187. package/dist/runtime/wasi/preamble.d.ts +0 -22
  188. package/dist/runtime/wasi/preamble.d.ts.map +1 -1
  189. package/dist/runtime/wasi/preamble.js +98 -1425
  190. package/dist/runtime-catalog.generated.js +1 -1
  191. package/dist/session/agent.d.ts +14 -2
  192. package/dist/session/agent.d.ts.map +1 -1
  193. package/dist/session/agent.js +57 -19
  194. package/dist/session/ai.d.ts +0 -11
  195. package/dist/session/ai.d.ts.map +1 -1
  196. package/dist/session/ai.js +0 -4
  197. package/dist/session/fs-watch.d.ts +0 -11
  198. package/dist/session/fs-watch.d.ts.map +1 -1
  199. package/dist/session/fs-watch.js +0 -21
  200. package/dist/session/hibernation.d.ts +68 -2
  201. package/dist/session/hibernation.d.ts.map +1 -1
  202. package/dist/session/hibernation.js +95 -1
  203. package/dist/session/init-phases.d.ts +1 -2
  204. package/dist/session/init-phases.d.ts.map +1 -1
  205. package/dist/session/init-phases.js +1 -2
  206. package/dist/session/init.d.ts.map +1 -1
  207. package/dist/session/init.js +7 -20
  208. package/dist/session/keys.d.ts +0 -3
  209. package/dist/session/keys.d.ts.map +1 -1
  210. package/dist/session/keys.js +0 -3
  211. package/dist/session/legacy-reset.d.ts +11 -0
  212. package/dist/session/legacy-reset.d.ts.map +1 -0
  213. package/dist/session/legacy-reset.js +16 -0
  214. package/dist/session/nimbus-session.d.ts +50 -16
  215. package/dist/session/nimbus-session.d.ts.map +1 -1
  216. package/dist/session/nimbus-session.js +77 -71
  217. package/dist/session/npm-install-port.d.ts.map +1 -1
  218. package/dist/session/npm-install-port.js +2 -0
  219. package/dist/session/programmatic.d.ts +13 -18
  220. package/dist/session/programmatic.d.ts.map +1 -1
  221. package/dist/session/programmatic.js +53 -39
  222. package/dist/session/replica-routes.d.ts +2 -3
  223. package/dist/session/replica-routes.d.ts.map +1 -1
  224. package/dist/session/replica-routes.js +3 -10
  225. package/dist/session/routes.d.ts.map +1 -1
  226. package/dist/session/routes.js +11 -12
  227. package/dist/session/rpc.d.ts +108 -21
  228. package/dist/session/rpc.d.ts.map +1 -1
  229. package/dist/session/rpc.js +194 -39
  230. package/dist/session/start-real-vite.js +2 -2
  231. package/dist/session/state-store.d.ts +1 -17
  232. package/dist/session/state-store.d.ts.map +1 -1
  233. package/dist/session/state-store.js +3 -53
  234. package/dist/session/supervisor-op.d.ts +7 -0
  235. package/dist/session/supervisor-op.d.ts.map +1 -1
  236. package/dist/session/supervisor-op.js +6 -1
  237. package/dist/session/supervisor-rpc.d.ts +116 -19
  238. package/dist/session/supervisor-rpc.d.ts.map +1 -1
  239. package/dist/session/supervisor-rpc.js +194 -84
  240. package/dist/session/vite-command.d.ts.map +1 -1
  241. package/dist/session/vite-command.js +17 -14
  242. package/dist/session/ws.d.ts.map +1 -1
  243. package/dist/session/ws.js +20 -8
  244. package/dist/shell/npm-bin-entrypoints.d.ts.map +1 -1
  245. package/dist/shell/npm-bin-entrypoints.js +30 -5
  246. package/dist/vfs/facet-resident-limits.d.ts +33 -0
  247. package/dist/vfs/facet-resident-limits.d.ts.map +1 -0
  248. package/dist/vfs/facet-resident-limits.js +33 -0
  249. package/dist/vfs/facet-resident-store.d.ts +2 -10
  250. package/dist/vfs/facet-resident-store.d.ts.map +1 -1
  251. package/dist/vfs/facet-resident-store.js +1594 -219
  252. package/dist/workspace-host.d.ts +3 -1
  253. package/dist/workspace-host.d.ts.map +1 -1
  254. package/dist/workspace-host.js +2 -0
  255. package/dist/wrangler/nimbus-wrangler.d.ts +0 -2
  256. package/dist/wrangler/nimbus-wrangler.d.ts.map +1 -1
  257. package/dist/wrangler/nimbus-wrangler.js +8 -22
  258. package/package.json +34 -7
  259. package/public/_assets/esbuild-0.24.2.js +2380 -0
  260. package/public/_assets/opencode/1.16.2/index-attach.js +2 -2
  261. package/public/_assets/runtime/esbuild-cli-c4fda380d52befc1.js +6892 -0
  262. package/public/_assets/runtime/git-de3e60c9f3ff006a.js +103 -0
  263. package/public/_assets/runtime/{node-shims-acaa037e6d26ec0d.js → node-shims-06565b121555c194.js} +2879 -992
  264. package/public/_assets/runtime/resident-store-6ffb1939c53d982f.js +2264 -0
  265. package/public/_assets/runtime/vfs-write-ledger-e501e8fc793bc2c1.js +889 -0
  266. package/scripts/build-opencode-attach-entry.mjs +51 -1
  267. package/scripts/bundle-esbuild-wasm.mjs +55 -39
  268. package/scripts/bundle-facet-workers.mjs +159 -10
  269. package/scripts/bundle-git.mjs +88 -27
  270. package/scripts/bundle-node-shims.mjs +72 -46
  271. package/scripts/bundle-runtime.mjs +18 -421
  272. package/scripts/cf-git-patch.mjs +137 -0
  273. package/scripts/patch-install-deps.mjs +49 -96
  274. package/scripts/runtime-specs.mjs +435 -0
  275. package/vendor/git-http.generated.d.ts +82 -0
  276. package/vendor/git-upstream.generated.d.ts +4378 -0
  277. package/vendor/git.LICENSE +7 -0
  278. package/vendor/git.generated.d.mts +21 -0
  279. package/vendor/git.generated.mjs +103 -0
  280. package/dist/replica/suspension.d.ts +0 -36
  281. package/dist/replica/suspension.d.ts.map +0 -1
  282. package/dist/replica/suspension.js +0 -49
  283. package/dist/runtime/static-server.d.ts +0 -3
  284. package/dist/runtime/static-server.d.ts.map +0 -1
  285. package/dist/runtime/static-server.js +0 -133
  286. package/scripts/clean-dist.mjs +0 -7
@@ -0,0 +1,103 @@
1
+ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));var require_crc32=__commonJS({"../../node_modules/.bun/crc-32@1.2.2/node_modules/crc-32/crc32.js"(exports){var CRC32;(function(factory){typeof DO_NOT_EXPORT_CRC>"u"?typeof exports=="object"?factory(exports):typeof define=="function"&&define.amd?define(function(){var module2={};return factory(module2),module2}):factory(CRC32={}):factory(CRC32={})})(function(CRC322){CRC322.version="1.2.2";function signed_crc_table(){for(var c=0,table=new Array(256),n=0;n!=256;++n)c=n,c=c&1?-306674912^c>>>1:c>>>1,c=c&1?-306674912^c>>>1:c>>>1,c=c&1?-306674912^c>>>1:c>>>1,c=c&1?-306674912^c>>>1:c>>>1,c=c&1?-306674912^c>>>1:c>>>1,c=c&1?-306674912^c>>>1:c>>>1,c=c&1?-306674912^c>>>1:c>>>1,c=c&1?-306674912^c>>>1:c>>>1,table[n]=c;return typeof Int32Array<"u"?new Int32Array(table):table}var T0=signed_crc_table();function slice_by_16_tables(T){var c=0,v=0,n=0,table=typeof Int32Array<"u"?new Int32Array(4096):new Array(4096);for(n=0;n!=256;++n)table[n]=T[n];for(n=0;n!=256;++n)for(v=T[n],c=256+n;c<4096;c+=256)v=table[c]=v>>>8^T[v&255];var out=[];for(n=1;n!=16;++n)out[n-1]=typeof Int32Array<"u"?table.subarray(n*256,n*256+256):table.slice(n*256,n*256+256);return out}var TT=slice_by_16_tables(T0),T1=TT[0],T2=TT[1],T3=TT[2],T4=TT[3],T5=TT[4],T6=TT[5],T7=TT[6],T8=TT[7],T9=TT[8],Ta=TT[9],Tb=TT[10],Tc=TT[11],Td=TT[12],Te=TT[13],Tf=TT[14];function crc32_bstr(bstr,seed){for(var C=seed^-1,i=0,L=bstr.length;i<L;)C=C>>>8^T0[(C^bstr.charCodeAt(i++))&255];return~C}function crc32_buf(B,seed){for(var C=seed^-1,L=B.length-15,i=0;i<L;)C=Tf[B[i++]^C&255]^Te[B[i++]^C>>8&255]^Td[B[i++]^C>>16&255]^Tc[B[i++]^C>>>24]^Tb[B[i++]]^Ta[B[i++]]^T9[B[i++]]^T8[B[i++]]^T7[B[i++]]^T6[B[i++]]^T5[B[i++]]^T4[B[i++]]^T3[B[i++]]^T2[B[i++]]^T1[B[i++]]^T0[B[i++]];for(L+=15;i<L;)C=C>>>8^T0[(C^B[i++])&255];return~C}function crc32_str(str,seed){for(var C=seed^-1,i=0,L=str.length,c=0,d=0;i<L;)c=str.charCodeAt(i++),c<128?C=C>>>8^T0[(C^c)&255]:c<2048?(C=C>>>8^T0[(C^(192|c>>6&31))&255],C=C>>>8^T0[(C^(128|c&63))&255]):c>=55296&&c<57344?(c=(c&1023)+64,d=str.charCodeAt(i++)&1023,C=C>>>8^T0[(C^(240|c>>8&7))&255],C=C>>>8^T0[(C^(128|c>>2&63))&255],C=C>>>8^T0[(C^(128|d>>6&15|(c&3)<<4))&255],C=C>>>8^T0[(C^(128|d&63))&255]):(C=C>>>8^T0[(C^(224|c>>12&15))&255],C=C>>>8^T0[(C^(128|c>>6&63))&255],C=C>>>8^T0[(C^(128|c&63))&255]);return~C}CRC322.table=T0,CRC322.bstr=crc32_bstr,CRC322.buf=crc32_buf,CRC322.str=crc32_str})}});var require_common=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/utils/common.js"(exports){"use strict";var TYPED_OK=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function _has(obj,key){return Object.prototype.hasOwnProperty.call(obj,key)}exports.assign=function(obj){for(var sources=Array.prototype.slice.call(arguments,1);sources.length;){var source=sources.shift();if(source){if(typeof source!="object")throw new TypeError(source+"must be non-object");for(var p in source)_has(source,p)&&(obj[p]=source[p])}}return obj};exports.shrinkBuf=function(buf,size){return buf.length===size?buf:buf.subarray?buf.subarray(0,size):(buf.length=size,buf)};var fnTyped={arraySet:function(dest,src,src_offs,len,dest_offs){if(src.subarray&&dest.subarray){dest.set(src.subarray(src_offs,src_offs+len),dest_offs);return}for(var i=0;i<len;i++)dest[dest_offs+i]=src[src_offs+i]},flattenChunks:function(chunks){var i,l,len,pos,chunk,result;for(len=0,i=0,l=chunks.length;i<l;i++)len+=chunks[i].length;for(result=new Uint8Array(len),pos=0,i=0,l=chunks.length;i<l;i++)chunk=chunks[i],result.set(chunk,pos),pos+=chunk.length;return result}},fnUntyped={arraySet:function(dest,src,src_offs,len,dest_offs){for(var i=0;i<len;i++)dest[dest_offs+i]=src[src_offs+i]},flattenChunks:function(chunks){return[].concat.apply([],chunks)}};exports.setTyped=function(on){on?(exports.Buf8=Uint8Array,exports.Buf16=Uint16Array,exports.Buf32=Int32Array,exports.assign(exports,fnTyped)):(exports.Buf8=Array,exports.Buf16=Array,exports.Buf32=Array,exports.assign(exports,fnUntyped))};exports.setTyped(TYPED_OK)}});var require_trees=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/trees.js"(exports){"use strict";var utils=require_common(),Z_FIXED=4,Z_BINARY=0,Z_TEXT=1,Z_UNKNOWN=2;function zero(buf){for(var len=buf.length;--len>=0;)buf[len]=0}var STORED_BLOCK=0,STATIC_TREES=1,DYN_TREES=2,MIN_MATCH=3,MAX_MATCH=258,LENGTH_CODES=29,LITERALS=256,L_CODES=LITERALS+1+LENGTH_CODES,D_CODES=30,BL_CODES=19,HEAP_SIZE=2*L_CODES+1,MAX_BITS=15,Buf_size=16,MAX_BL_BITS=7,END_BLOCK=256,REP_3_6=16,REPZ_3_10=17,REPZ_11_138=18,extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],DIST_CODE_LEN=512,static_ltree=new Array((L_CODES+2)*2);zero(static_ltree);var static_dtree=new Array(D_CODES*2);zero(static_dtree);var _dist_code=new Array(DIST_CODE_LEN);zero(_dist_code);var _length_code=new Array(MAX_MATCH-MIN_MATCH+1);zero(_length_code);var base_length=new Array(LENGTH_CODES);zero(base_length);var base_dist=new Array(D_CODES);zero(base_dist);function StaticTreeDesc(static_tree,extra_bits,extra_base,elems,max_length){this.static_tree=static_tree,this.extra_bits=extra_bits,this.extra_base=extra_base,this.elems=elems,this.max_length=max_length,this.has_stree=static_tree&&static_tree.length}var static_l_desc,static_d_desc,static_bl_desc;function TreeDesc(dyn_tree,stat_desc){this.dyn_tree=dyn_tree,this.max_code=0,this.stat_desc=stat_desc}function d_code(dist){return dist<256?_dist_code[dist]:_dist_code[256+(dist>>>7)]}function put_short(s,w){s.pending_buf[s.pending++]=w&255,s.pending_buf[s.pending++]=w>>>8&255}function send_bits(s,value,length){s.bi_valid>Buf_size-length?(s.bi_buf|=value<<s.bi_valid&65535,put_short(s,s.bi_buf),s.bi_buf=value>>Buf_size-s.bi_valid,s.bi_valid+=length-Buf_size):(s.bi_buf|=value<<s.bi_valid&65535,s.bi_valid+=length)}function send_code(s,c,tree){send_bits(s,tree[c*2],tree[c*2+1])}function bi_reverse(code,len){var res=0;do res|=code&1,code>>>=1,res<<=1;while(--len>0);return res>>>1}function bi_flush(s){s.bi_valid===16?(put_short(s,s.bi_buf),s.bi_buf=0,s.bi_valid=0):s.bi_valid>=8&&(s.pending_buf[s.pending++]=s.bi_buf&255,s.bi_buf>>=8,s.bi_valid-=8)}function gen_bitlen(s,desc){var tree=desc.dyn_tree,max_code=desc.max_code,stree=desc.stat_desc.static_tree,has_stree=desc.stat_desc.has_stree,extra=desc.stat_desc.extra_bits,base=desc.stat_desc.extra_base,max_length=desc.stat_desc.max_length,h,n,m,bits,xbits,f,overflow=0;for(bits=0;bits<=MAX_BITS;bits++)s.bl_count[bits]=0;for(tree[s.heap[s.heap_max]*2+1]=0,h=s.heap_max+1;h<HEAP_SIZE;h++)n=s.heap[h],bits=tree[tree[n*2+1]*2+1]+1,bits>max_length&&(bits=max_length,overflow++),tree[n*2+1]=bits,!(n>max_code)&&(s.bl_count[bits]++,xbits=0,n>=base&&(xbits=extra[n-base]),f=tree[n*2],s.opt_len+=f*(bits+xbits),has_stree&&(s.static_len+=f*(stree[n*2+1]+xbits)));if(overflow!==0){do{for(bits=max_length-1;s.bl_count[bits]===0;)bits--;s.bl_count[bits]--,s.bl_count[bits+1]+=2,s.bl_count[max_length]--,overflow-=2}while(overflow>0);for(bits=max_length;bits!==0;bits--)for(n=s.bl_count[bits];n!==0;)m=s.heap[--h],!(m>max_code)&&(tree[m*2+1]!==bits&&(s.opt_len+=(bits-tree[m*2+1])*tree[m*2],tree[m*2+1]=bits),n--)}}function gen_codes(tree,max_code,bl_count){var next_code=new Array(MAX_BITS+1),code=0,bits,n;for(bits=1;bits<=MAX_BITS;bits++)next_code[bits]=code=code+bl_count[bits-1]<<1;for(n=0;n<=max_code;n++){var len=tree[n*2+1];len!==0&&(tree[n*2]=bi_reverse(next_code[len]++,len))}}function tr_static_init(){var n,bits,length,code,dist,bl_count=new Array(MAX_BITS+1);for(length=0,code=0;code<LENGTH_CODES-1;code++)for(base_length[code]=length,n=0;n<1<<extra_lbits[code];n++)_length_code[length++]=code;for(_length_code[length-1]=code,dist=0,code=0;code<16;code++)for(base_dist[code]=dist,n=0;n<1<<extra_dbits[code];n++)_dist_code[dist++]=code;for(dist>>=7;code<D_CODES;code++)for(base_dist[code]=dist<<7,n=0;n<1<<extra_dbits[code]-7;n++)_dist_code[256+dist++]=code;for(bits=0;bits<=MAX_BITS;bits++)bl_count[bits]=0;for(n=0;n<=143;)static_ltree[n*2+1]=8,n++,bl_count[8]++;for(;n<=255;)static_ltree[n*2+1]=9,n++,bl_count[9]++;for(;n<=279;)static_ltree[n*2+1]=7,n++,bl_count[7]++;for(;n<=287;)static_ltree[n*2+1]=8,n++,bl_count[8]++;for(gen_codes(static_ltree,L_CODES+1,bl_count),n=0;n<D_CODES;n++)static_dtree[n*2+1]=5,static_dtree[n*2]=bi_reverse(n,5);static_l_desc=new StaticTreeDesc(static_ltree,extra_lbits,LITERALS+1,L_CODES,MAX_BITS),static_d_desc=new StaticTreeDesc(static_dtree,extra_dbits,0,D_CODES,MAX_BITS),static_bl_desc=new StaticTreeDesc(new Array(0),extra_blbits,0,BL_CODES,MAX_BL_BITS)}function init_block(s){var n;for(n=0;n<L_CODES;n++)s.dyn_ltree[n*2]=0;for(n=0;n<D_CODES;n++)s.dyn_dtree[n*2]=0;for(n=0;n<BL_CODES;n++)s.bl_tree[n*2]=0;s.dyn_ltree[END_BLOCK*2]=1,s.opt_len=s.static_len=0,s.last_lit=s.matches=0}function bi_windup(s){s.bi_valid>8?put_short(s,s.bi_buf):s.bi_valid>0&&(s.pending_buf[s.pending++]=s.bi_buf),s.bi_buf=0,s.bi_valid=0}function copy_block(s,buf,len,header){bi_windup(s),header&&(put_short(s,len),put_short(s,~len)),utils.arraySet(s.pending_buf,s.window,buf,len,s.pending),s.pending+=len}function smaller(tree,n,m,depth){var _n2=n*2,_m2=m*2;return tree[_n2]<tree[_m2]||tree[_n2]===tree[_m2]&&depth[n]<=depth[m]}function pqdownheap(s,tree,k){for(var v=s.heap[k],j=k<<1;j<=s.heap_len&&(j<s.heap_len&&smaller(tree,s.heap[j+1],s.heap[j],s.depth)&&j++,!smaller(tree,v,s.heap[j],s.depth));)s.heap[k]=s.heap[j],k=j,j<<=1;s.heap[k]=v}function compress_block(s,ltree,dtree){var dist,lc,lx=0,code,extra;if(s.last_lit!==0)do dist=s.pending_buf[s.d_buf+lx*2]<<8|s.pending_buf[s.d_buf+lx*2+1],lc=s.pending_buf[s.l_buf+lx],lx++,dist===0?send_code(s,lc,ltree):(code=_length_code[lc],send_code(s,code+LITERALS+1,ltree),extra=extra_lbits[code],extra!==0&&(lc-=base_length[code],send_bits(s,lc,extra)),dist--,code=d_code(dist),send_code(s,code,dtree),extra=extra_dbits[code],extra!==0&&(dist-=base_dist[code],send_bits(s,dist,extra)));while(lx<s.last_lit);send_code(s,END_BLOCK,ltree)}function build_tree(s,desc){var tree=desc.dyn_tree,stree=desc.stat_desc.static_tree,has_stree=desc.stat_desc.has_stree,elems=desc.stat_desc.elems,n,m,max_code=-1,node;for(s.heap_len=0,s.heap_max=HEAP_SIZE,n=0;n<elems;n++)tree[n*2]!==0?(s.heap[++s.heap_len]=max_code=n,s.depth[n]=0):tree[n*2+1]=0;for(;s.heap_len<2;)node=s.heap[++s.heap_len]=max_code<2?++max_code:0,tree[node*2]=1,s.depth[node]=0,s.opt_len--,has_stree&&(s.static_len-=stree[node*2+1]);for(desc.max_code=max_code,n=s.heap_len>>1;n>=1;n--)pqdownheap(s,tree,n);node=elems;do n=s.heap[1],s.heap[1]=s.heap[s.heap_len--],pqdownheap(s,tree,1),m=s.heap[1],s.heap[--s.heap_max]=n,s.heap[--s.heap_max]=m,tree[node*2]=tree[n*2]+tree[m*2],s.depth[node]=(s.depth[n]>=s.depth[m]?s.depth[n]:s.depth[m])+1,tree[n*2+1]=tree[m*2+1]=node,s.heap[1]=node++,pqdownheap(s,tree,1);while(s.heap_len>=2);s.heap[--s.heap_max]=s.heap[1],gen_bitlen(s,desc),gen_codes(tree,max_code,s.bl_count)}function scan_tree(s,tree,max_code){var n,prevlen=-1,curlen,nextlen=tree[1],count=0,max_count=7,min_count=4;for(nextlen===0&&(max_count=138,min_count=3),tree[(max_code+1)*2+1]=65535,n=0;n<=max_code;n++)curlen=nextlen,nextlen=tree[(n+1)*2+1],!(++count<max_count&&curlen===nextlen)&&(count<min_count?s.bl_tree[curlen*2]+=count:curlen!==0?(curlen!==prevlen&&s.bl_tree[curlen*2]++,s.bl_tree[REP_3_6*2]++):count<=10?s.bl_tree[REPZ_3_10*2]++:s.bl_tree[REPZ_11_138*2]++,count=0,prevlen=curlen,nextlen===0?(max_count=138,min_count=3):curlen===nextlen?(max_count=6,min_count=3):(max_count=7,min_count=4))}function send_tree(s,tree,max_code){var n,prevlen=-1,curlen,nextlen=tree[1],count=0,max_count=7,min_count=4;for(nextlen===0&&(max_count=138,min_count=3),n=0;n<=max_code;n++)if(curlen=nextlen,nextlen=tree[(n+1)*2+1],!(++count<max_count&&curlen===nextlen)){if(count<min_count)do send_code(s,curlen,s.bl_tree);while(--count!==0);else curlen!==0?(curlen!==prevlen&&(send_code(s,curlen,s.bl_tree),count--),send_code(s,REP_3_6,s.bl_tree),send_bits(s,count-3,2)):count<=10?(send_code(s,REPZ_3_10,s.bl_tree),send_bits(s,count-3,3)):(send_code(s,REPZ_11_138,s.bl_tree),send_bits(s,count-11,7));count=0,prevlen=curlen,nextlen===0?(max_count=138,min_count=3):curlen===nextlen?(max_count=6,min_count=3):(max_count=7,min_count=4)}}function build_bl_tree(s){var max_blindex;for(scan_tree(s,s.dyn_ltree,s.l_desc.max_code),scan_tree(s,s.dyn_dtree,s.d_desc.max_code),build_tree(s,s.bl_desc),max_blindex=BL_CODES-1;max_blindex>=3&&s.bl_tree[bl_order[max_blindex]*2+1]===0;max_blindex--);return s.opt_len+=3*(max_blindex+1)+5+5+4,max_blindex}function send_all_trees(s,lcodes,dcodes,blcodes){var rank;for(send_bits(s,lcodes-257,5),send_bits(s,dcodes-1,5),send_bits(s,blcodes-4,4),rank=0;rank<blcodes;rank++)send_bits(s,s.bl_tree[bl_order[rank]*2+1],3);send_tree(s,s.dyn_ltree,lcodes-1),send_tree(s,s.dyn_dtree,dcodes-1)}function detect_data_type(s){var black_mask=4093624447,n;for(n=0;n<=31;n++,black_mask>>>=1)if(black_mask&1&&s.dyn_ltree[n*2]!==0)return Z_BINARY;if(s.dyn_ltree[18]!==0||s.dyn_ltree[20]!==0||s.dyn_ltree[26]!==0)return Z_TEXT;for(n=32;n<LITERALS;n++)if(s.dyn_ltree[n*2]!==0)return Z_TEXT;return Z_BINARY}var static_init_done=!1;function _tr_init(s){static_init_done||(tr_static_init(),static_init_done=!0),s.l_desc=new TreeDesc(s.dyn_ltree,static_l_desc),s.d_desc=new TreeDesc(s.dyn_dtree,static_d_desc),s.bl_desc=new TreeDesc(s.bl_tree,static_bl_desc),s.bi_buf=0,s.bi_valid=0,init_block(s)}function _tr_stored_block(s,buf,stored_len,last){send_bits(s,(STORED_BLOCK<<1)+(last?1:0),3),copy_block(s,buf,stored_len,!0)}function _tr_align(s){send_bits(s,STATIC_TREES<<1,3),send_code(s,END_BLOCK,static_ltree),bi_flush(s)}function _tr_flush_block(s,buf,stored_len,last){var opt_lenb,static_lenb,max_blindex=0;s.level>0?(s.strm.data_type===Z_UNKNOWN&&(s.strm.data_type=detect_data_type(s)),build_tree(s,s.l_desc),build_tree(s,s.d_desc),max_blindex=build_bl_tree(s),opt_lenb=s.opt_len+3+7>>>3,static_lenb=s.static_len+3+7>>>3,static_lenb<=opt_lenb&&(opt_lenb=static_lenb)):opt_lenb=static_lenb=stored_len+5,stored_len+4<=opt_lenb&&buf!==-1?_tr_stored_block(s,buf,stored_len,last):s.strategy===Z_FIXED||static_lenb===opt_lenb?(send_bits(s,(STATIC_TREES<<1)+(last?1:0),3),compress_block(s,static_ltree,static_dtree)):(send_bits(s,(DYN_TREES<<1)+(last?1:0),3),send_all_trees(s,s.l_desc.max_code+1,s.d_desc.max_code+1,max_blindex+1),compress_block(s,s.dyn_ltree,s.dyn_dtree)),init_block(s),last&&bi_windup(s)}function _tr_tally(s,dist,lc){return s.pending_buf[s.d_buf+s.last_lit*2]=dist>>>8&255,s.pending_buf[s.d_buf+s.last_lit*2+1]=dist&255,s.pending_buf[s.l_buf+s.last_lit]=lc&255,s.last_lit++,dist===0?s.dyn_ltree[lc*2]++:(s.matches++,dist--,s.dyn_ltree[(_length_code[lc]+LITERALS+1)*2]++,s.dyn_dtree[d_code(dist)*2]++),s.last_lit===s.lit_bufsize-1}exports._tr_init=_tr_init;exports._tr_stored_block=_tr_stored_block;exports._tr_flush_block=_tr_flush_block;exports._tr_tally=_tr_tally;exports._tr_align=_tr_align}});var require_adler32=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/adler32.js"(exports,module){"use strict";function adler32(adler,buf,len,pos){for(var s1=adler&65535|0,s2=adler>>>16&65535|0,n=0;len!==0;){n=len>2e3?2e3:len,len-=n;do s1=s1+buf[pos++]|0,s2=s2+s1|0;while(--n);s1%=65521,s2%=65521}return s1|s2<<16|0}module.exports=adler32}});var require_crc322=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/crc32.js"(exports,module){"use strict";function makeTable(){for(var c,table=[],n=0;n<256;n++){c=n;for(var k=0;k<8;k++)c=c&1?3988292384^c>>>1:c>>>1;table[n]=c}return table}var crcTable=makeTable();function crc322(crc,buf,len,pos){var t=crcTable,end=pos+len;crc^=-1;for(var i=pos;i<end;i++)crc=crc>>>8^t[(crc^buf[i])&255];return crc^-1}module.exports=crc322}});var require_messages=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/messages.js"(exports,module){"use strict";module.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}}});var require_deflate=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/deflate.js"(exports){"use strict";var utils=require_common(),trees=require_trees(),adler32=require_adler32(),crc322=require_crc322(),msg=require_messages(),Z_NO_FLUSH=0,Z_PARTIAL_FLUSH=1,Z_FULL_FLUSH=3,Z_FINISH=4,Z_BLOCK=5,Z_OK=0,Z_STREAM_END=1,Z_STREAM_ERROR=-2,Z_DATA_ERROR=-3,Z_BUF_ERROR=-5,Z_DEFAULT_COMPRESSION=-1,Z_FILTERED=1,Z_HUFFMAN_ONLY=2,Z_RLE=3,Z_FIXED=4,Z_DEFAULT_STRATEGY=0,Z_UNKNOWN=2,Z_DEFLATED=8,MAX_MEM_LEVEL=9,MAX_WBITS=15,DEF_MEM_LEVEL=8,LENGTH_CODES=29,LITERALS=256,L_CODES=LITERALS+1+LENGTH_CODES,D_CODES=30,BL_CODES=19,HEAP_SIZE=2*L_CODES+1,MAX_BITS=15,MIN_MATCH=3,MAX_MATCH=258,MIN_LOOKAHEAD=MAX_MATCH+MIN_MATCH+1,PRESET_DICT=32,INIT_STATE=42,EXTRA_STATE=69,NAME_STATE=73,COMMENT_STATE=91,HCRC_STATE=103,BUSY_STATE=113,FINISH_STATE=666,BS_NEED_MORE=1,BS_BLOCK_DONE=2,BS_FINISH_STARTED=3,BS_FINISH_DONE=4,OS_CODE=3;function err(strm,errorCode){return strm.msg=msg[errorCode],errorCode}function rank(f){return(f<<1)-(f>4?9:0)}function zero(buf){for(var len=buf.length;--len>=0;)buf[len]=0}function flush_pending(strm){var s=strm.state,len=s.pending;len>strm.avail_out&&(len=strm.avail_out),len!==0&&(utils.arraySet(strm.output,s.pending_buf,s.pending_out,len,strm.next_out),strm.next_out+=len,s.pending_out+=len,strm.total_out+=len,strm.avail_out-=len,s.pending-=len,s.pending===0&&(s.pending_out=0))}function flush_block_only(s,last){trees._tr_flush_block(s,s.block_start>=0?s.block_start:-1,s.strstart-s.block_start,last),s.block_start=s.strstart,flush_pending(s.strm)}function put_byte(s,b){s.pending_buf[s.pending++]=b}function putShortMSB(s,b){s.pending_buf[s.pending++]=b>>>8&255,s.pending_buf[s.pending++]=b&255}function read_buf(strm,buf,start,size){var len=strm.avail_in;return len>size&&(len=size),len===0?0:(strm.avail_in-=len,utils.arraySet(buf,strm.input,strm.next_in,len,start),strm.state.wrap===1?strm.adler=adler32(strm.adler,buf,len,start):strm.state.wrap===2&&(strm.adler=crc322(strm.adler,buf,len,start)),strm.next_in+=len,strm.total_in+=len,len)}function longest_match(s,cur_match){var chain_length=s.max_chain_length,scan=s.strstart,match,len,best_len=s.prev_length,nice_match=s.nice_match,limit=s.strstart>s.w_size-MIN_LOOKAHEAD?s.strstart-(s.w_size-MIN_LOOKAHEAD):0,_win=s.window,wmask=s.w_mask,prev=s.prev,strend=s.strstart+MAX_MATCH,scan_end1=_win[scan+best_len-1],scan_end=_win[scan+best_len];s.prev_length>=s.good_match&&(chain_length>>=2),nice_match>s.lookahead&&(nice_match=s.lookahead);do if(match=cur_match,!(_win[match+best_len]!==scan_end||_win[match+best_len-1]!==scan_end1||_win[match]!==_win[scan]||_win[++match]!==_win[scan+1])){scan+=2,match++;do;while(_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&scan<strend);if(len=MAX_MATCH-(strend-scan),scan=strend-MAX_MATCH,len>best_len){if(s.match_start=cur_match,best_len=len,len>=nice_match)break;scan_end1=_win[scan+best_len-1],scan_end=_win[scan+best_len]}}while((cur_match=prev[cur_match&wmask])>limit&&--chain_length!==0);return best_len<=s.lookahead?best_len:s.lookahead}function fill_window(s){var _w_size=s.w_size,p,n,m,more,str;do{if(more=s.window_size-s.lookahead-s.strstart,s.strstart>=_w_size+(_w_size-MIN_LOOKAHEAD)){utils.arraySet(s.window,s.window,_w_size,_w_size,0),s.match_start-=_w_size,s.strstart-=_w_size,s.block_start-=_w_size,n=s.hash_size,p=n;do m=s.head[--p],s.head[p]=m>=_w_size?m-_w_size:0;while(--n);n=_w_size,p=n;do m=s.prev[--p],s.prev[p]=m>=_w_size?m-_w_size:0;while(--n);more+=_w_size}if(s.strm.avail_in===0)break;if(n=read_buf(s.strm,s.window,s.strstart+s.lookahead,more),s.lookahead+=n,s.lookahead+s.insert>=MIN_MATCH)for(str=s.strstart-s.insert,s.ins_h=s.window[str],s.ins_h=(s.ins_h<<s.hash_shift^s.window[str+1])&s.hash_mask;s.insert&&(s.ins_h=(s.ins_h<<s.hash_shift^s.window[str+MIN_MATCH-1])&s.hash_mask,s.prev[str&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=str,str++,s.insert--,!(s.lookahead+s.insert<MIN_MATCH)););}while(s.lookahead<MIN_LOOKAHEAD&&s.strm.avail_in!==0)}function deflate_stored(s,flush){var max_block_size=65535;for(max_block_size>s.pending_buf_size-5&&(max_block_size=s.pending_buf_size-5);;){if(s.lookahead<=1){if(fill_window(s),s.lookahead===0&&flush===Z_NO_FLUSH)return BS_NEED_MORE;if(s.lookahead===0)break}s.strstart+=s.lookahead,s.lookahead=0;var max_start=s.block_start+max_block_size;if((s.strstart===0||s.strstart>=max_start)&&(s.lookahead=s.strstart-max_start,s.strstart=max_start,flush_block_only(s,!1),s.strm.avail_out===0)||s.strstart-s.block_start>=s.w_size-MIN_LOOKAHEAD&&(flush_block_only(s,!1),s.strm.avail_out===0))return BS_NEED_MORE}return s.insert=0,flush===Z_FINISH?(flush_block_only(s,!0),s.strm.avail_out===0?BS_FINISH_STARTED:BS_FINISH_DONE):(s.strstart>s.block_start&&(flush_block_only(s,!1),s.strm.avail_out===0),BS_NEED_MORE)}function deflate_fast(s,flush){for(var hash_head,bflush;;){if(s.lookahead<MIN_LOOKAHEAD){if(fill_window(s),s.lookahead<MIN_LOOKAHEAD&&flush===Z_NO_FLUSH)return BS_NEED_MORE;if(s.lookahead===0)break}if(hash_head=0,s.lookahead>=MIN_MATCH&&(s.ins_h=(s.ins_h<<s.hash_shift^s.window[s.strstart+MIN_MATCH-1])&s.hash_mask,hash_head=s.prev[s.strstart&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=s.strstart),hash_head!==0&&s.strstart-hash_head<=s.w_size-MIN_LOOKAHEAD&&(s.match_length=longest_match(s,hash_head)),s.match_length>=MIN_MATCH)if(bflush=trees._tr_tally(s,s.strstart-s.match_start,s.match_length-MIN_MATCH),s.lookahead-=s.match_length,s.match_length<=s.max_lazy_match&&s.lookahead>=MIN_MATCH){s.match_length--;do s.strstart++,s.ins_h=(s.ins_h<<s.hash_shift^s.window[s.strstart+MIN_MATCH-1])&s.hash_mask,hash_head=s.prev[s.strstart&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=s.strstart;while(--s.match_length!==0);s.strstart++}else s.strstart+=s.match_length,s.match_length=0,s.ins_h=s.window[s.strstart],s.ins_h=(s.ins_h<<s.hash_shift^s.window[s.strstart+1])&s.hash_mask;else bflush=trees._tr_tally(s,0,s.window[s.strstart]),s.lookahead--,s.strstart++;if(bflush&&(flush_block_only(s,!1),s.strm.avail_out===0))return BS_NEED_MORE}return s.insert=s.strstart<MIN_MATCH-1?s.strstart:MIN_MATCH-1,flush===Z_FINISH?(flush_block_only(s,!0),s.strm.avail_out===0?BS_FINISH_STARTED:BS_FINISH_DONE):s.last_lit&&(flush_block_only(s,!1),s.strm.avail_out===0)?BS_NEED_MORE:BS_BLOCK_DONE}function deflate_slow(s,flush){for(var hash_head,bflush,max_insert;;){if(s.lookahead<MIN_LOOKAHEAD){if(fill_window(s),s.lookahead<MIN_LOOKAHEAD&&flush===Z_NO_FLUSH)return BS_NEED_MORE;if(s.lookahead===0)break}if(hash_head=0,s.lookahead>=MIN_MATCH&&(s.ins_h=(s.ins_h<<s.hash_shift^s.window[s.strstart+MIN_MATCH-1])&s.hash_mask,hash_head=s.prev[s.strstart&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=s.strstart),s.prev_length=s.match_length,s.prev_match=s.match_start,s.match_length=MIN_MATCH-1,hash_head!==0&&s.prev_length<s.max_lazy_match&&s.strstart-hash_head<=s.w_size-MIN_LOOKAHEAD&&(s.match_length=longest_match(s,hash_head),s.match_length<=5&&(s.strategy===Z_FILTERED||s.match_length===MIN_MATCH&&s.strstart-s.match_start>4096)&&(s.match_length=MIN_MATCH-1)),s.prev_length>=MIN_MATCH&&s.match_length<=s.prev_length){max_insert=s.strstart+s.lookahead-MIN_MATCH,bflush=trees._tr_tally(s,s.strstart-1-s.prev_match,s.prev_length-MIN_MATCH),s.lookahead-=s.prev_length-1,s.prev_length-=2;do++s.strstart<=max_insert&&(s.ins_h=(s.ins_h<<s.hash_shift^s.window[s.strstart+MIN_MATCH-1])&s.hash_mask,hash_head=s.prev[s.strstart&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=s.strstart);while(--s.prev_length!==0);if(s.match_available=0,s.match_length=MIN_MATCH-1,s.strstart++,bflush&&(flush_block_only(s,!1),s.strm.avail_out===0))return BS_NEED_MORE}else if(s.match_available){if(bflush=trees._tr_tally(s,0,s.window[s.strstart-1]),bflush&&flush_block_only(s,!1),s.strstart++,s.lookahead--,s.strm.avail_out===0)return BS_NEED_MORE}else s.match_available=1,s.strstart++,s.lookahead--}return s.match_available&&(bflush=trees._tr_tally(s,0,s.window[s.strstart-1]),s.match_available=0),s.insert=s.strstart<MIN_MATCH-1?s.strstart:MIN_MATCH-1,flush===Z_FINISH?(flush_block_only(s,!0),s.strm.avail_out===0?BS_FINISH_STARTED:BS_FINISH_DONE):s.last_lit&&(flush_block_only(s,!1),s.strm.avail_out===0)?BS_NEED_MORE:BS_BLOCK_DONE}function deflate_rle(s,flush){for(var bflush,prev,scan,strend,_win=s.window;;){if(s.lookahead<=MAX_MATCH){if(fill_window(s),s.lookahead<=MAX_MATCH&&flush===Z_NO_FLUSH)return BS_NEED_MORE;if(s.lookahead===0)break}if(s.match_length=0,s.lookahead>=MIN_MATCH&&s.strstart>0&&(scan=s.strstart-1,prev=_win[scan],prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan])){strend=s.strstart+MAX_MATCH;do;while(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&scan<strend);s.match_length=MAX_MATCH-(strend-scan),s.match_length>s.lookahead&&(s.match_length=s.lookahead)}if(s.match_length>=MIN_MATCH?(bflush=trees._tr_tally(s,1,s.match_length-MIN_MATCH),s.lookahead-=s.match_length,s.strstart+=s.match_length,s.match_length=0):(bflush=trees._tr_tally(s,0,s.window[s.strstart]),s.lookahead--,s.strstart++),bflush&&(flush_block_only(s,!1),s.strm.avail_out===0))return BS_NEED_MORE}return s.insert=0,flush===Z_FINISH?(flush_block_only(s,!0),s.strm.avail_out===0?BS_FINISH_STARTED:BS_FINISH_DONE):s.last_lit&&(flush_block_only(s,!1),s.strm.avail_out===0)?BS_NEED_MORE:BS_BLOCK_DONE}function deflate_huff(s,flush){for(var bflush;;){if(s.lookahead===0&&(fill_window(s),s.lookahead===0)){if(flush===Z_NO_FLUSH)return BS_NEED_MORE;break}if(s.match_length=0,bflush=trees._tr_tally(s,0,s.window[s.strstart]),s.lookahead--,s.strstart++,bflush&&(flush_block_only(s,!1),s.strm.avail_out===0))return BS_NEED_MORE}return s.insert=0,flush===Z_FINISH?(flush_block_only(s,!0),s.strm.avail_out===0?BS_FINISH_STARTED:BS_FINISH_DONE):s.last_lit&&(flush_block_only(s,!1),s.strm.avail_out===0)?BS_NEED_MORE:BS_BLOCK_DONE}function Config(good_length,max_lazy,nice_length,max_chain,func){this.good_length=good_length,this.max_lazy=max_lazy,this.nice_length=nice_length,this.max_chain=max_chain,this.func=func}var configuration_table;configuration_table=[new Config(0,0,0,0,deflate_stored),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)];function lm_init(s){s.window_size=2*s.w_size,zero(s.head),s.max_lazy_match=configuration_table[s.level].max_lazy,s.good_match=configuration_table[s.level].good_length,s.nice_match=configuration_table[s.level].nice_length,s.max_chain_length=configuration_table[s.level].max_chain,s.strstart=0,s.block_start=0,s.lookahead=0,s.insert=0,s.match_length=s.prev_length=MIN_MATCH-1,s.match_available=0,s.ins_h=0}function DeflateState(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Z_DEFLATED,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new utils.Buf16(HEAP_SIZE*2),this.dyn_dtree=new utils.Buf16((2*D_CODES+1)*2),this.bl_tree=new utils.Buf16((2*BL_CODES+1)*2),zero(this.dyn_ltree),zero(this.dyn_dtree),zero(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new utils.Buf16(MAX_BITS+1),this.heap=new utils.Buf16(2*L_CODES+1),zero(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new utils.Buf16(2*L_CODES+1),zero(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function deflateResetKeep(strm){var s;return!strm||!strm.state?err(strm,Z_STREAM_ERROR):(strm.total_in=strm.total_out=0,strm.data_type=Z_UNKNOWN,s=strm.state,s.pending=0,s.pending_out=0,s.wrap<0&&(s.wrap=-s.wrap),s.status=s.wrap?INIT_STATE:BUSY_STATE,strm.adler=s.wrap===2?0:1,s.last_flush=Z_NO_FLUSH,trees._tr_init(s),Z_OK)}function deflateReset(strm){var ret=deflateResetKeep(strm);return ret===Z_OK&&lm_init(strm.state),ret}function deflateSetHeader(strm,head){return!strm||!strm.state||strm.state.wrap!==2?Z_STREAM_ERROR:(strm.state.gzhead=head,Z_OK)}function deflateInit2(strm,level,method,windowBits,memLevel,strategy){if(!strm)return Z_STREAM_ERROR;var wrap=1;if(level===Z_DEFAULT_COMPRESSION&&(level=6),windowBits<0?(wrap=0,windowBits=-windowBits):windowBits>15&&(wrap=2,windowBits-=16),memLevel<1||memLevel>MAX_MEM_LEVEL||method!==Z_DEFLATED||windowBits<8||windowBits>15||level<0||level>9||strategy<0||strategy>Z_FIXED)return err(strm,Z_STREAM_ERROR);windowBits===8&&(windowBits=9);var s=new DeflateState;return strm.state=s,s.strm=strm,s.wrap=wrap,s.gzhead=null,s.w_bits=windowBits,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=memLevel+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+MIN_MATCH-1)/MIN_MATCH),s.window=new utils.Buf8(s.w_size*2),s.head=new utils.Buf16(s.hash_size),s.prev=new utils.Buf16(s.w_size),s.lit_bufsize=1<<memLevel+6,s.pending_buf_size=s.lit_bufsize*4,s.pending_buf=new utils.Buf8(s.pending_buf_size),s.d_buf=1*s.lit_bufsize,s.l_buf=3*s.lit_bufsize,s.level=level,s.strategy=strategy,s.method=method,deflateReset(strm)}function deflateInit(strm,level){return deflateInit2(strm,level,Z_DEFLATED,MAX_WBITS,DEF_MEM_LEVEL,Z_DEFAULT_STRATEGY)}function deflate2(strm,flush){var old_flush,s,beg,val;if(!strm||!strm.state||flush>Z_BLOCK||flush<0)return strm?err(strm,Z_STREAM_ERROR):Z_STREAM_ERROR;if(s=strm.state,!strm.output||!strm.input&&strm.avail_in!==0||s.status===FINISH_STATE&&flush!==Z_FINISH)return err(strm,strm.avail_out===0?Z_BUF_ERROR:Z_STREAM_ERROR);if(s.strm=strm,old_flush=s.last_flush,s.last_flush=flush,s.status===INIT_STATE)if(s.wrap===2)strm.adler=0,put_byte(s,31),put_byte(s,139),put_byte(s,8),s.gzhead?(put_byte(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),put_byte(s,s.gzhead.time&255),put_byte(s,s.gzhead.time>>8&255),put_byte(s,s.gzhead.time>>16&255),put_byte(s,s.gzhead.time>>24&255),put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0),put_byte(s,s.gzhead.os&255),s.gzhead.extra&&s.gzhead.extra.length&&(put_byte(s,s.gzhead.extra.length&255),put_byte(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(strm.adler=crc322(strm.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=EXTRA_STATE):(put_byte(s,0),put_byte(s,0),put_byte(s,0),put_byte(s,0),put_byte(s,0),put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0),put_byte(s,OS_CODE),s.status=BUSY_STATE);else{var header=Z_DEFLATED+(s.w_bits-8<<4)<<8,level_flags=-1;s.strategy>=Z_HUFFMAN_ONLY||s.level<2?level_flags=0:s.level<6?level_flags=1:s.level===6?level_flags=2:level_flags=3,header|=level_flags<<6,s.strstart!==0&&(header|=PRESET_DICT),header+=31-header%31,s.status=BUSY_STATE,putShortMSB(s,header),s.strstart!==0&&(putShortMSB(s,strm.adler>>>16),putShortMSB(s,strm.adler&65535)),strm.adler=1}if(s.status===EXTRA_STATE)if(s.gzhead.extra){for(beg=s.pending;s.gzindex<(s.gzhead.extra.length&65535)&&!(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>beg&&(strm.adler=crc322(strm.adler,s.pending_buf,s.pending-beg,beg)),flush_pending(strm),beg=s.pending,s.pending===s.pending_buf_size));)put_byte(s,s.gzhead.extra[s.gzindex]&255),s.gzindex++;s.gzhead.hcrc&&s.pending>beg&&(strm.adler=crc322(strm.adler,s.pending_buf,s.pending-beg,beg)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=NAME_STATE)}else s.status=NAME_STATE;if(s.status===NAME_STATE)if(s.gzhead.name){beg=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>beg&&(strm.adler=crc322(strm.adler,s.pending_buf,s.pending-beg,beg)),flush_pending(strm),beg=s.pending,s.pending===s.pending_buf_size)){val=1;break}s.gzindex<s.gzhead.name.length?val=s.gzhead.name.charCodeAt(s.gzindex++)&255:val=0,put_byte(s,val)}while(val!==0);s.gzhead.hcrc&&s.pending>beg&&(strm.adler=crc322(strm.adler,s.pending_buf,s.pending-beg,beg)),val===0&&(s.gzindex=0,s.status=COMMENT_STATE)}else s.status=COMMENT_STATE;if(s.status===COMMENT_STATE)if(s.gzhead.comment){beg=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>beg&&(strm.adler=crc322(strm.adler,s.pending_buf,s.pending-beg,beg)),flush_pending(strm),beg=s.pending,s.pending===s.pending_buf_size)){val=1;break}s.gzindex<s.gzhead.comment.length?val=s.gzhead.comment.charCodeAt(s.gzindex++)&255:val=0,put_byte(s,val)}while(val!==0);s.gzhead.hcrc&&s.pending>beg&&(strm.adler=crc322(strm.adler,s.pending_buf,s.pending-beg,beg)),val===0&&(s.status=HCRC_STATE)}else s.status=HCRC_STATE;if(s.status===HCRC_STATE&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&flush_pending(strm),s.pending+2<=s.pending_buf_size&&(put_byte(s,strm.adler&255),put_byte(s,strm.adler>>8&255),strm.adler=0,s.status=BUSY_STATE)):s.status=BUSY_STATE),s.pending!==0){if(flush_pending(strm),strm.avail_out===0)return s.last_flush=-1,Z_OK}else if(strm.avail_in===0&&rank(flush)<=rank(old_flush)&&flush!==Z_FINISH)return err(strm,Z_BUF_ERROR);if(s.status===FINISH_STATE&&strm.avail_in!==0)return err(strm,Z_BUF_ERROR);if(strm.avail_in!==0||s.lookahead!==0||flush!==Z_NO_FLUSH&&s.status!==FINISH_STATE){var bstate=s.strategy===Z_HUFFMAN_ONLY?deflate_huff(s,flush):s.strategy===Z_RLE?deflate_rle(s,flush):configuration_table[s.level].func(s,flush);if((bstate===BS_FINISH_STARTED||bstate===BS_FINISH_DONE)&&(s.status=FINISH_STATE),bstate===BS_NEED_MORE||bstate===BS_FINISH_STARTED)return strm.avail_out===0&&(s.last_flush=-1),Z_OK;if(bstate===BS_BLOCK_DONE&&(flush===Z_PARTIAL_FLUSH?trees._tr_align(s):flush!==Z_BLOCK&&(trees._tr_stored_block(s,0,0,!1),flush===Z_FULL_FLUSH&&(zero(s.head),s.lookahead===0&&(s.strstart=0,s.block_start=0,s.insert=0))),flush_pending(strm),strm.avail_out===0))return s.last_flush=-1,Z_OK}return flush!==Z_FINISH?Z_OK:s.wrap<=0?Z_STREAM_END:(s.wrap===2?(put_byte(s,strm.adler&255),put_byte(s,strm.adler>>8&255),put_byte(s,strm.adler>>16&255),put_byte(s,strm.adler>>24&255),put_byte(s,strm.total_in&255),put_byte(s,strm.total_in>>8&255),put_byte(s,strm.total_in>>16&255),put_byte(s,strm.total_in>>24&255)):(putShortMSB(s,strm.adler>>>16),putShortMSB(s,strm.adler&65535)),flush_pending(strm),s.wrap>0&&(s.wrap=-s.wrap),s.pending!==0?Z_OK:Z_STREAM_END)}function deflateEnd(strm){var status2;return!strm||!strm.state?Z_STREAM_ERROR:(status2=strm.state.status,status2!==INIT_STATE&&status2!==EXTRA_STATE&&status2!==NAME_STATE&&status2!==COMMENT_STATE&&status2!==HCRC_STATE&&status2!==BUSY_STATE&&status2!==FINISH_STATE?err(strm,Z_STREAM_ERROR):(strm.state=null,status2===BUSY_STATE?err(strm,Z_DATA_ERROR):Z_OK))}function deflateSetDictionary(strm,dictionary){var dictLength=dictionary.length,s,str,n,wrap,avail,next,input,tmpDict;if(!strm||!strm.state||(s=strm.state,wrap=s.wrap,wrap===2||wrap===1&&s.status!==INIT_STATE||s.lookahead))return Z_STREAM_ERROR;for(wrap===1&&(strm.adler=adler32(strm.adler,dictionary,dictLength,0)),s.wrap=0,dictLength>=s.w_size&&(wrap===0&&(zero(s.head),s.strstart=0,s.block_start=0,s.insert=0),tmpDict=new utils.Buf8(s.w_size),utils.arraySet(tmpDict,dictionary,dictLength-s.w_size,s.w_size,0),dictionary=tmpDict,dictLength=s.w_size),avail=strm.avail_in,next=strm.next_in,input=strm.input,strm.avail_in=dictLength,strm.next_in=0,strm.input=dictionary,fill_window(s);s.lookahead>=MIN_MATCH;){str=s.strstart,n=s.lookahead-(MIN_MATCH-1);do s.ins_h=(s.ins_h<<s.hash_shift^s.window[str+MIN_MATCH-1])&s.hash_mask,s.prev[str&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=str,str++;while(--n);s.strstart=str,s.lookahead=MIN_MATCH-1,fill_window(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=MIN_MATCH-1,s.match_available=0,strm.next_in=next,strm.input=input,strm.avail_in=avail,s.wrap=wrap,Z_OK}exports.deflateInit=deflateInit;exports.deflateInit2=deflateInit2;exports.deflateReset=deflateReset;exports.deflateResetKeep=deflateResetKeep;exports.deflateSetHeader=deflateSetHeader;exports.deflate=deflate2;exports.deflateEnd=deflateEnd;exports.deflateSetDictionary=deflateSetDictionary;exports.deflateInfo="pako deflate (from Nodeca project)"}});var require_strings=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/utils/strings.js"(exports){"use strict";var utils=require_common(),STR_APPLY_OK=!0,STR_APPLY_UIA_OK=!0;try{String.fromCharCode.apply(null,[0])}catch{STR_APPLY_OK=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{STR_APPLY_UIA_OK=!1}var _utf8len=new utils.Buf8(256);for(q=0;q<256;q++)_utf8len[q]=q>=252?6:q>=248?5:q>=240?4:q>=224?3:q>=192?2:1;var q;_utf8len[254]=_utf8len[254]=1;exports.string2buf=function(str){var buf,c,c2,m_pos,i,str_len=str.length,buf_len=0;for(m_pos=0;m_pos<str_len;m_pos++)c=str.charCodeAt(m_pos),(c&64512)===55296&&m_pos+1<str_len&&(c2=str.charCodeAt(m_pos+1),(c2&64512)===56320&&(c=65536+(c-55296<<10)+(c2-56320),m_pos++)),buf_len+=c<128?1:c<2048?2:c<65536?3:4;for(buf=new utils.Buf8(buf_len),i=0,m_pos=0;i<buf_len;m_pos++)c=str.charCodeAt(m_pos),(c&64512)===55296&&m_pos+1<str_len&&(c2=str.charCodeAt(m_pos+1),(c2&64512)===56320&&(c=65536+(c-55296<<10)+(c2-56320),m_pos++)),c<128?buf[i++]=c:c<2048?(buf[i++]=192|c>>>6,buf[i++]=128|c&63):c<65536?(buf[i++]=224|c>>>12,buf[i++]=128|c>>>6&63,buf[i++]=128|c&63):(buf[i++]=240|c>>>18,buf[i++]=128|c>>>12&63,buf[i++]=128|c>>>6&63,buf[i++]=128|c&63);return buf};function buf2binstring(buf,len){if(len<65534&&(buf.subarray&&STR_APPLY_UIA_OK||!buf.subarray&&STR_APPLY_OK))return String.fromCharCode.apply(null,utils.shrinkBuf(buf,len));for(var result="",i=0;i<len;i++)result+=String.fromCharCode(buf[i]);return result}exports.buf2binstring=function(buf){return buf2binstring(buf,buf.length)};exports.binstring2buf=function(str){for(var buf=new utils.Buf8(str.length),i=0,len=buf.length;i<len;i++)buf[i]=str.charCodeAt(i);return buf};exports.buf2string=function(buf,max){var i,out,c,c_len,len=max||buf.length,utf16buf=new Array(len*2);for(out=0,i=0;i<len;){if(c=buf[i++],c<128){utf16buf[out++]=c;continue}if(c_len=_utf8len[c],c_len>4){utf16buf[out++]=65533,i+=c_len-1;continue}for(c&=c_len===2?31:c_len===3?15:7;c_len>1&&i<len;)c=c<<6|buf[i++]&63,c_len--;if(c_len>1){utf16buf[out++]=65533;continue}c<65536?utf16buf[out++]=c:(c-=65536,utf16buf[out++]=55296|c>>10&1023,utf16buf[out++]=56320|c&1023)}return buf2binstring(utf16buf,out)};exports.utf8border=function(buf,max){var pos;for(max=max||buf.length,max>buf.length&&(max=buf.length),pos=max-1;pos>=0&&(buf[pos]&192)===128;)pos--;return pos<0||pos===0?max:pos+_utf8len[buf[pos]]>max?pos:max}}});var require_zstream=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/zstream.js"(exports,module){"use strict";function ZStream(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}module.exports=ZStream}});var require_deflate2=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/deflate.js"(exports){"use strict";var zlib_deflate=require_deflate(),utils=require_common(),strings=require_strings(),msg=require_messages(),ZStream=require_zstream(),toString=Object.prototype.toString,Z_NO_FLUSH=0,Z_FINISH=4,Z_OK=0,Z_STREAM_END=1,Z_SYNC_FLUSH=2,Z_DEFAULT_COMPRESSION=-1,Z_DEFAULT_STRATEGY=0,Z_DEFLATED=8;function Deflate(options){if(!(this instanceof Deflate))return new Deflate(options);this.options=utils.assign({level:Z_DEFAULT_COMPRESSION,method:Z_DEFLATED,chunkSize:16384,windowBits:15,memLevel:8,strategy:Z_DEFAULT_STRATEGY,to:""},options||{});var opt=this.options;opt.raw&&opt.windowBits>0?opt.windowBits=-opt.windowBits:opt.gzip&&opt.windowBits>0&&opt.windowBits<16&&(opt.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ZStream,this.strm.avail_out=0;var status2=zlib_deflate.deflateInit2(this.strm,opt.level,opt.method,opt.windowBits,opt.memLevel,opt.strategy);if(status2!==Z_OK)throw new Error(msg[status2]);if(opt.header&&zlib_deflate.deflateSetHeader(this.strm,opt.header),opt.dictionary){var dict;if(typeof opt.dictionary=="string"?dict=strings.string2buf(opt.dictionary):toString.call(opt.dictionary)==="[object ArrayBuffer]"?dict=new Uint8Array(opt.dictionary):dict=opt.dictionary,status2=zlib_deflate.deflateSetDictionary(this.strm,dict),status2!==Z_OK)throw new Error(msg[status2]);this._dict_set=!0}}Deflate.prototype.push=function(data,mode){var strm=this.strm,chunkSize=this.options.chunkSize,status2,_mode;if(this.ended)return!1;_mode=mode===~~mode?mode:mode===!0?Z_FINISH:Z_NO_FLUSH,typeof data=="string"?strm.input=strings.string2buf(data):toString.call(data)==="[object ArrayBuffer]"?strm.input=new Uint8Array(data):strm.input=data,strm.next_in=0,strm.avail_in=strm.input.length;do{if(strm.avail_out===0&&(strm.output=new utils.Buf8(chunkSize),strm.next_out=0,strm.avail_out=chunkSize),status2=zlib_deflate.deflate(strm,_mode),status2!==Z_STREAM_END&&status2!==Z_OK)return this.onEnd(status2),this.ended=!0,!1;(strm.avail_out===0||strm.avail_in===0&&(_mode===Z_FINISH||_mode===Z_SYNC_FLUSH))&&(this.options.to==="string"?this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output,strm.next_out))):this.onData(utils.shrinkBuf(strm.output,strm.next_out)))}while((strm.avail_in>0||strm.avail_out===0)&&status2!==Z_STREAM_END);return _mode===Z_FINISH?(status2=zlib_deflate.deflateEnd(this.strm),this.onEnd(status2),this.ended=!0,status2===Z_OK):(_mode===Z_SYNC_FLUSH&&(this.onEnd(Z_OK),strm.avail_out=0),!0)};Deflate.prototype.onData=function(chunk){this.chunks.push(chunk)};Deflate.prototype.onEnd=function(status2){status2===Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=utils.flattenChunks(this.chunks)),this.chunks=[],this.err=status2,this.msg=this.strm.msg};function deflate2(input,options){var deflator=new Deflate(options);if(deflator.push(input,!0),deflator.err)throw deflator.msg||msg[deflator.err];return deflator.result}function deflateRaw(input,options){return options=options||{},options.raw=!0,deflate2(input,options)}function gzip(input,options){return options=options||{},options.gzip=!0,deflate2(input,options)}exports.Deflate=Deflate;exports.deflate=deflate2;exports.deflateRaw=deflateRaw;exports.gzip=gzip}});var require_inffast=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/inffast.js"(exports,module){"use strict";var BAD=30,TYPE=12;module.exports=function(strm,start){var state,_in,last,_out,beg,end,dmax,wsize,whave,wnext,s_window,hold,bits,lcode,dcode,lmask,dmask,here,op,len,dist,from,from_source,input,output;state=strm.state,_in=strm.next_in,input=strm.input,last=_in+(strm.avail_in-5),_out=strm.next_out,output=strm.output,beg=_out-(start-strm.avail_out),end=_out+(strm.avail_out-257),dmax=state.dmax,wsize=state.wsize,whave=state.whave,wnext=state.wnext,s_window=state.window,hold=state.hold,bits=state.bits,lcode=state.lencode,dcode=state.distcode,lmask=(1<<state.lenbits)-1,dmask=(1<<state.distbits)-1;top:do{bits<15&&(hold+=input[_in++]<<bits,bits+=8,hold+=input[_in++]<<bits,bits+=8),here=lcode[hold&lmask];dolen:for(;;){if(op=here>>>24,hold>>>=op,bits-=op,op=here>>>16&255,op===0)output[_out++]=here&65535;else if(op&16){len=here&65535,op&=15,op&&(bits<op&&(hold+=input[_in++]<<bits,bits+=8),len+=hold&(1<<op)-1,hold>>>=op,bits-=op),bits<15&&(hold+=input[_in++]<<bits,bits+=8,hold+=input[_in++]<<bits,bits+=8),here=dcode[hold&dmask];dodist:for(;;){if(op=here>>>24,hold>>>=op,bits-=op,op=here>>>16&255,op&16){if(dist=here&65535,op&=15,bits<op&&(hold+=input[_in++]<<bits,bits+=8,bits<op&&(hold+=input[_in++]<<bits,bits+=8)),dist+=hold&(1<<op)-1,dist>dmax){strm.msg="invalid distance too far back",state.mode=BAD;break top}if(hold>>>=op,bits-=op,op=_out-beg,dist>op){if(op=dist-op,op>whave&&state.sane){strm.msg="invalid distance too far back",state.mode=BAD;break top}if(from=0,from_source=s_window,wnext===0){if(from+=wsize-op,op<len){len-=op;do output[_out++]=s_window[from++];while(--op);from=_out-dist,from_source=output}}else if(wnext<op){if(from+=wsize+wnext-op,op-=wnext,op<len){len-=op;do output[_out++]=s_window[from++];while(--op);if(from=0,wnext<len){op=wnext,len-=op;do output[_out++]=s_window[from++];while(--op);from=_out-dist,from_source=output}}}else if(from+=wnext-op,op<len){len-=op;do output[_out++]=s_window[from++];while(--op);from=_out-dist,from_source=output}for(;len>2;)output[_out++]=from_source[from++],output[_out++]=from_source[from++],output[_out++]=from_source[from++],len-=3;len&&(output[_out++]=from_source[from++],len>1&&(output[_out++]=from_source[from++]))}else{from=_out-dist;do output[_out++]=output[from++],output[_out++]=output[from++],output[_out++]=output[from++],len-=3;while(len>2);len&&(output[_out++]=output[from++],len>1&&(output[_out++]=output[from++]))}}else if((op&64)===0){here=dcode[(here&65535)+(hold&(1<<op)-1)];continue dodist}else{strm.msg="invalid distance code",state.mode=BAD;break top}break}}else if((op&64)===0){here=lcode[(here&65535)+(hold&(1<<op)-1)];continue dolen}else if(op&32){state.mode=TYPE;break top}else{strm.msg="invalid literal/length code",state.mode=BAD;break top}break}}while(_in<last&&_out<end);len=bits>>3,_in-=len,bits-=len<<3,hold&=(1<<bits)-1,strm.next_in=_in,strm.next_out=_out,strm.avail_in=_in<last?5+(last-_in):5-(_in-last),strm.avail_out=_out<end?257+(end-_out):257-(_out-end),state.hold=hold,state.bits=bits}}});var require_inftrees=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/inftrees.js"(exports,module){"use strict";var utils=require_common(),MAXBITS=15,ENOUGH_LENS=852,ENOUGH_DISTS=592,CODES=0,LENS=1,DISTS=2,lbase=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],lext=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],dbase=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],dext=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];module.exports=function(type,lens,lens_index,codes,table,table_index,work,opts){var bits=opts.bits,len=0,sym=0,min=0,max=0,root=0,curr=0,drop=0,left=0,used=0,huff=0,incr,fill,low,mask,next,base=null,base_index=0,end,count=new utils.Buf16(MAXBITS+1),offs=new utils.Buf16(MAXBITS+1),extra=null,extra_index=0,here_bits,here_op,here_val;for(len=0;len<=MAXBITS;len++)count[len]=0;for(sym=0;sym<codes;sym++)count[lens[lens_index+sym]]++;for(root=bits,max=MAXBITS;max>=1&&count[max]===0;max--);if(root>max&&(root=max),max===0)return table[table_index++]=1<<24|64<<16|0,table[table_index++]=1<<24|64<<16|0,opts.bits=1,0;for(min=1;min<max&&count[min]===0;min++);for(root<min&&(root=min),left=1,len=1;len<=MAXBITS;len++)if(left<<=1,left-=count[len],left<0)return-1;if(left>0&&(type===CODES||max!==1))return-1;for(offs[1]=0,len=1;len<MAXBITS;len++)offs[len+1]=offs[len]+count[len];for(sym=0;sym<codes;sym++)lens[lens_index+sym]!==0&&(work[offs[lens[lens_index+sym]]++]=sym);if(type===CODES?(base=extra=work,end=19):type===LENS?(base=lbase,base_index-=257,extra=lext,extra_index-=257,end=256):(base=dbase,extra=dext,end=-1),huff=0,sym=0,len=min,next=table_index,curr=root,drop=0,low=-1,used=1<<root,mask=used-1,type===LENS&&used>ENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS)return 1;for(;;){here_bits=len-drop,work[sym]<end?(here_op=0,here_val=work[sym]):work[sym]>end?(here_op=extra[extra_index+work[sym]],here_val=base[base_index+work[sym]]):(here_op=96,here_val=0),incr=1<<len-drop,fill=1<<curr,min=fill;do fill-=incr,table[next+(huff>>drop)+fill]=here_bits<<24|here_op<<16|here_val|0;while(fill!==0);for(incr=1<<len-1;huff&incr;)incr>>=1;if(incr!==0?(huff&=incr-1,huff+=incr):huff=0,sym++,--count[len]===0){if(len===max)break;len=lens[lens_index+work[sym]]}if(len>root&&(huff&mask)!==low){for(drop===0&&(drop=root),next+=min,curr=len-drop,left=1<<curr;curr+drop<max&&(left-=count[curr+drop],!(left<=0));)curr++,left<<=1;if(used+=1<<curr,type===LENS&&used>ENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS)return 1;low=huff&mask,table[low]=root<<24|curr<<16|next-table_index|0}}return huff!==0&&(table[next+huff]=len-drop<<24|64<<16|0),opts.bits=root,0}}});var require_inflate=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/inflate.js"(exports){"use strict";var utils=require_common(),adler32=require_adler32(),crc322=require_crc322(),inflate_fast=require_inffast(),inflate_table=require_inftrees(),CODES=0,LENS=1,DISTS=2,Z_FINISH=4,Z_BLOCK=5,Z_TREES=6,Z_OK=0,Z_STREAM_END=1,Z_NEED_DICT=2,Z_STREAM_ERROR=-2,Z_DATA_ERROR=-3,Z_MEM_ERROR=-4,Z_BUF_ERROR=-5,Z_DEFLATED=8,HEAD=1,FLAGS=2,TIME=3,OS=4,EXLEN=5,EXTRA=6,NAME=7,COMMENT=8,HCRC=9,DICTID=10,DICT=11,TYPE=12,TYPEDO=13,STORED=14,COPY_=15,COPY=16,TABLE=17,LENLENS=18,CODELENS=19,LEN_=20,LEN=21,LENEXT=22,DIST=23,DISTEXT=24,MATCH=25,LIT=26,CHECK=27,LENGTH=28,DONE=29,BAD=30,MEM=31,SYNC=32,ENOUGH_LENS=852,ENOUGH_DISTS=592,MAX_WBITS=15,DEF_WBITS=MAX_WBITS;function zswap32(q){return(q>>>24&255)+(q>>>8&65280)+((q&65280)<<8)+((q&255)<<24)}function InflateState(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new utils.Buf16(320),this.work=new utils.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function inflateResetKeep(strm){var state;return!strm||!strm.state?Z_STREAM_ERROR:(state=strm.state,strm.total_in=strm.total_out=state.total=0,strm.msg="",state.wrap&&(strm.adler=state.wrap&1),state.mode=HEAD,state.last=0,state.havedict=0,state.dmax=32768,state.head=null,state.hold=0,state.bits=0,state.lencode=state.lendyn=new utils.Buf32(ENOUGH_LENS),state.distcode=state.distdyn=new utils.Buf32(ENOUGH_DISTS),state.sane=1,state.back=-1,Z_OK)}function inflateReset(strm){var state;return!strm||!strm.state?Z_STREAM_ERROR:(state=strm.state,state.wsize=0,state.whave=0,state.wnext=0,inflateResetKeep(strm))}function inflateReset2(strm,windowBits){var wrap,state;return!strm||!strm.state||(state=strm.state,windowBits<0?(wrap=0,windowBits=-windowBits):(wrap=(windowBits>>4)+1,windowBits<48&&(windowBits&=15)),windowBits&&(windowBits<8||windowBits>15))?Z_STREAM_ERROR:(state.window!==null&&state.wbits!==windowBits&&(state.window=null),state.wrap=wrap,state.wbits=windowBits,inflateReset(strm))}function inflateInit2(strm,windowBits){var ret,state;return strm?(state=new InflateState,strm.state=state,state.window=null,ret=inflateReset2(strm,windowBits),ret!==Z_OK&&(strm.state=null),ret):Z_STREAM_ERROR}function inflateInit(strm){return inflateInit2(strm,DEF_WBITS)}var virgin=!0,lenfix,distfix;function fixedtables(state){if(virgin){var sym;for(lenfix=new utils.Buf32(512),distfix=new utils.Buf32(32),sym=0;sym<144;)state.lens[sym++]=8;for(;sym<256;)state.lens[sym++]=9;for(;sym<280;)state.lens[sym++]=7;for(;sym<288;)state.lens[sym++]=8;for(inflate_table(LENS,state.lens,0,288,lenfix,0,state.work,{bits:9}),sym=0;sym<32;)state.lens[sym++]=5;inflate_table(DISTS,state.lens,0,32,distfix,0,state.work,{bits:5}),virgin=!1}state.lencode=lenfix,state.lenbits=9,state.distcode=distfix,state.distbits=5}function updatewindow(strm,src,end,copy){var dist,state=strm.state;return state.window===null&&(state.wsize=1<<state.wbits,state.wnext=0,state.whave=0,state.window=new utils.Buf8(state.wsize)),copy>=state.wsize?(utils.arraySet(state.window,src,end-state.wsize,state.wsize,0),state.wnext=0,state.whave=state.wsize):(dist=state.wsize-state.wnext,dist>copy&&(dist=copy),utils.arraySet(state.window,src,end-copy,dist,state.wnext),copy-=dist,copy?(utils.arraySet(state.window,src,end-copy,copy,0),state.wnext=copy,state.whave=state.wsize):(state.wnext+=dist,state.wnext===state.wsize&&(state.wnext=0),state.whave<state.wsize&&(state.whave+=dist))),0}function inflate2(strm,flush){var state,input,output,next,put,have,left,hold,bits,_in,_out,copy,from,from_source,here=0,here_bits,here_op,here_val,last_bits,last_op,last_val,len,ret,hbuf=new utils.Buf8(4),opts,n,order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!strm||!strm.state||!strm.output||!strm.input&&strm.avail_in!==0)return Z_STREAM_ERROR;state=strm.state,state.mode===TYPE&&(state.mode=TYPEDO),put=strm.next_out,output=strm.output,left=strm.avail_out,next=strm.next_in,input=strm.input,have=strm.avail_in,hold=state.hold,bits=state.bits,_in=have,_out=left,ret=Z_OK;inf_leave:for(;;)switch(state.mode){case HEAD:if(state.wrap===0){state.mode=TYPEDO;break}for(;bits<16;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}if(state.wrap&2&&hold===35615){state.check=0,hbuf[0]=hold&255,hbuf[1]=hold>>>8&255,state.check=crc322(state.check,hbuf,2,0),hold=0,bits=0,state.mode=FLAGS;break}if(state.flags=0,state.head&&(state.head.done=!1),!(state.wrap&1)||(((hold&255)<<8)+(hold>>8))%31){strm.msg="incorrect header check",state.mode=BAD;break}if((hold&15)!==Z_DEFLATED){strm.msg="unknown compression method",state.mode=BAD;break}if(hold>>>=4,bits-=4,len=(hold&15)+8,state.wbits===0)state.wbits=len;else if(len>state.wbits){strm.msg="invalid window size",state.mode=BAD;break}state.dmax=1<<len,strm.adler=state.check=1,state.mode=hold&512?DICTID:TYPE,hold=0,bits=0;break;case FLAGS:for(;bits<16;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}if(state.flags=hold,(state.flags&255)!==Z_DEFLATED){strm.msg="unknown compression method",state.mode=BAD;break}if(state.flags&57344){strm.msg="unknown header flags set",state.mode=BAD;break}state.head&&(state.head.text=hold>>8&1),state.flags&512&&(hbuf[0]=hold&255,hbuf[1]=hold>>>8&255,state.check=crc322(state.check,hbuf,2,0)),hold=0,bits=0,state.mode=TIME;case TIME:for(;bits<32;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}state.head&&(state.head.time=hold),state.flags&512&&(hbuf[0]=hold&255,hbuf[1]=hold>>>8&255,hbuf[2]=hold>>>16&255,hbuf[3]=hold>>>24&255,state.check=crc322(state.check,hbuf,4,0)),hold=0,bits=0,state.mode=OS;case OS:for(;bits<16;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}state.head&&(state.head.xflags=hold&255,state.head.os=hold>>8),state.flags&512&&(hbuf[0]=hold&255,hbuf[1]=hold>>>8&255,state.check=crc322(state.check,hbuf,2,0)),hold=0,bits=0,state.mode=EXLEN;case EXLEN:if(state.flags&1024){for(;bits<16;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}state.length=hold,state.head&&(state.head.extra_len=hold),state.flags&512&&(hbuf[0]=hold&255,hbuf[1]=hold>>>8&255,state.check=crc322(state.check,hbuf,2,0)),hold=0,bits=0}else state.head&&(state.head.extra=null);state.mode=EXTRA;case EXTRA:if(state.flags&1024&&(copy=state.length,copy>have&&(copy=have),copy&&(state.head&&(len=state.head.extra_len-state.length,state.head.extra||(state.head.extra=new Array(state.head.extra_len)),utils.arraySet(state.head.extra,input,next,copy,len)),state.flags&512&&(state.check=crc322(state.check,input,copy,next)),have-=copy,next+=copy,state.length-=copy),state.length))break inf_leave;state.length=0,state.mode=NAME;case NAME:if(state.flags&2048){if(have===0)break inf_leave;copy=0;do len=input[next+copy++],state.head&&len&&state.length<65536&&(state.head.name+=String.fromCharCode(len));while(len&&copy<have);if(state.flags&512&&(state.check=crc322(state.check,input,copy,next)),have-=copy,next+=copy,len)break inf_leave}else state.head&&(state.head.name=null);state.length=0,state.mode=COMMENT;case COMMENT:if(state.flags&4096){if(have===0)break inf_leave;copy=0;do len=input[next+copy++],state.head&&len&&state.length<65536&&(state.head.comment+=String.fromCharCode(len));while(len&&copy<have);if(state.flags&512&&(state.check=crc322(state.check,input,copy,next)),have-=copy,next+=copy,len)break inf_leave}else state.head&&(state.head.comment=null);state.mode=HCRC;case HCRC:if(state.flags&512){for(;bits<16;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}if(hold!==(state.check&65535)){strm.msg="header crc mismatch",state.mode=BAD;break}hold=0,bits=0}state.head&&(state.head.hcrc=state.flags>>9&1,state.head.done=!0),strm.adler=state.check=0,state.mode=TYPE;break;case DICTID:for(;bits<32;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}strm.adler=state.check=zswap32(hold),hold=0,bits=0,state.mode=DICT;case DICT:if(state.havedict===0)return strm.next_out=put,strm.avail_out=left,strm.next_in=next,strm.avail_in=have,state.hold=hold,state.bits=bits,Z_NEED_DICT;strm.adler=state.check=1,state.mode=TYPE;case TYPE:if(flush===Z_BLOCK||flush===Z_TREES)break inf_leave;case TYPEDO:if(state.last){hold>>>=bits&7,bits-=bits&7,state.mode=CHECK;break}for(;bits<3;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}switch(state.last=hold&1,hold>>>=1,bits-=1,hold&3){case 0:state.mode=STORED;break;case 1:if(fixedtables(state),state.mode=LEN_,flush===Z_TREES){hold>>>=2,bits-=2;break inf_leave}break;case 2:state.mode=TABLE;break;case 3:strm.msg="invalid block type",state.mode=BAD}hold>>>=2,bits-=2;break;case STORED:for(hold>>>=bits&7,bits-=bits&7;bits<32;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}if((hold&65535)!==(hold>>>16^65535)){strm.msg="invalid stored block lengths",state.mode=BAD;break}if(state.length=hold&65535,hold=0,bits=0,state.mode=COPY_,flush===Z_TREES)break inf_leave;case COPY_:state.mode=COPY;case COPY:if(copy=state.length,copy){if(copy>have&&(copy=have),copy>left&&(copy=left),copy===0)break inf_leave;utils.arraySet(output,input,next,copy,put),have-=copy,next+=copy,left-=copy,put+=copy,state.length-=copy;break}state.mode=TYPE;break;case TABLE:for(;bits<14;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}if(state.nlen=(hold&31)+257,hold>>>=5,bits-=5,state.ndist=(hold&31)+1,hold>>>=5,bits-=5,state.ncode=(hold&15)+4,hold>>>=4,bits-=4,state.nlen>286||state.ndist>30){strm.msg="too many length or distance symbols",state.mode=BAD;break}state.have=0,state.mode=LENLENS;case LENLENS:for(;state.have<state.ncode;){for(;bits<3;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}state.lens[order[state.have++]]=hold&7,hold>>>=3,bits-=3}for(;state.have<19;)state.lens[order[state.have++]]=0;if(state.lencode=state.lendyn,state.lenbits=7,opts={bits:state.lenbits},ret=inflate_table(CODES,state.lens,0,19,state.lencode,0,state.work,opts),state.lenbits=opts.bits,ret){strm.msg="invalid code lengths set",state.mode=BAD;break}state.have=0,state.mode=CODELENS;case CODELENS:for(;state.have<state.nlen+state.ndist;){for(;here=state.lencode[hold&(1<<state.lenbits)-1],here_bits=here>>>24,here_op=here>>>16&255,here_val=here&65535,!(here_bits<=bits);){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}if(here_val<16)hold>>>=here_bits,bits-=here_bits,state.lens[state.have++]=here_val;else{if(here_val===16){for(n=here_bits+2;bits<n;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}if(hold>>>=here_bits,bits-=here_bits,state.have===0){strm.msg="invalid bit length repeat",state.mode=BAD;break}len=state.lens[state.have-1],copy=3+(hold&3),hold>>>=2,bits-=2}else if(here_val===17){for(n=here_bits+3;bits<n;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}hold>>>=here_bits,bits-=here_bits,len=0,copy=3+(hold&7),hold>>>=3,bits-=3}else{for(n=here_bits+7;bits<n;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}hold>>>=here_bits,bits-=here_bits,len=0,copy=11+(hold&127),hold>>>=7,bits-=7}if(state.have+copy>state.nlen+state.ndist){strm.msg="invalid bit length repeat",state.mode=BAD;break}for(;copy--;)state.lens[state.have++]=len}}if(state.mode===BAD)break;if(state.lens[256]===0){strm.msg="invalid code -- missing end-of-block",state.mode=BAD;break}if(state.lenbits=9,opts={bits:state.lenbits},ret=inflate_table(LENS,state.lens,0,state.nlen,state.lencode,0,state.work,opts),state.lenbits=opts.bits,ret){strm.msg="invalid literal/lengths set",state.mode=BAD;break}if(state.distbits=6,state.distcode=state.distdyn,opts={bits:state.distbits},ret=inflate_table(DISTS,state.lens,state.nlen,state.ndist,state.distcode,0,state.work,opts),state.distbits=opts.bits,ret){strm.msg="invalid distances set",state.mode=BAD;break}if(state.mode=LEN_,flush===Z_TREES)break inf_leave;case LEN_:state.mode=LEN;case LEN:if(have>=6&&left>=258){strm.next_out=put,strm.avail_out=left,strm.next_in=next,strm.avail_in=have,state.hold=hold,state.bits=bits,inflate_fast(strm,_out),put=strm.next_out,output=strm.output,left=strm.avail_out,next=strm.next_in,input=strm.input,have=strm.avail_in,hold=state.hold,bits=state.bits,state.mode===TYPE&&(state.back=-1);break}for(state.back=0;here=state.lencode[hold&(1<<state.lenbits)-1],here_bits=here>>>24,here_op=here>>>16&255,here_val=here&65535,!(here_bits<=bits);){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}if(here_op&&(here_op&240)===0){for(last_bits=here_bits,last_op=here_op,last_val=here_val;here=state.lencode[last_val+((hold&(1<<last_bits+last_op)-1)>>last_bits)],here_bits=here>>>24,here_op=here>>>16&255,here_val=here&65535,!(last_bits+here_bits<=bits);){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}hold>>>=last_bits,bits-=last_bits,state.back+=last_bits}if(hold>>>=here_bits,bits-=here_bits,state.back+=here_bits,state.length=here_val,here_op===0){state.mode=LIT;break}if(here_op&32){state.back=-1,state.mode=TYPE;break}if(here_op&64){strm.msg="invalid literal/length code",state.mode=BAD;break}state.extra=here_op&15,state.mode=LENEXT;case LENEXT:if(state.extra){for(n=state.extra;bits<n;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}state.length+=hold&(1<<state.extra)-1,hold>>>=state.extra,bits-=state.extra,state.back+=state.extra}state.was=state.length,state.mode=DIST;case DIST:for(;here=state.distcode[hold&(1<<state.distbits)-1],here_bits=here>>>24,here_op=here>>>16&255,here_val=here&65535,!(here_bits<=bits);){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}if((here_op&240)===0){for(last_bits=here_bits,last_op=here_op,last_val=here_val;here=state.distcode[last_val+((hold&(1<<last_bits+last_op)-1)>>last_bits)],here_bits=here>>>24,here_op=here>>>16&255,here_val=here&65535,!(last_bits+here_bits<=bits);){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}hold>>>=last_bits,bits-=last_bits,state.back+=last_bits}if(hold>>>=here_bits,bits-=here_bits,state.back+=here_bits,here_op&64){strm.msg="invalid distance code",state.mode=BAD;break}state.offset=here_val,state.extra=here_op&15,state.mode=DISTEXT;case DISTEXT:if(state.extra){for(n=state.extra;bits<n;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}state.offset+=hold&(1<<state.extra)-1,hold>>>=state.extra,bits-=state.extra,state.back+=state.extra}if(state.offset>state.dmax){strm.msg="invalid distance too far back",state.mode=BAD;break}state.mode=MATCH;case MATCH:if(left===0)break inf_leave;if(copy=_out-left,state.offset>copy){if(copy=state.offset-copy,copy>state.whave&&state.sane){strm.msg="invalid distance too far back",state.mode=BAD;break}copy>state.wnext?(copy-=state.wnext,from=state.wsize-copy):from=state.wnext-copy,copy>state.length&&(copy=state.length),from_source=state.window}else from_source=output,from=put-state.offset,copy=state.length;copy>left&&(copy=left),left-=copy,state.length-=copy;do output[put++]=from_source[from++];while(--copy);state.length===0&&(state.mode=LEN);break;case LIT:if(left===0)break inf_leave;output[put++]=state.length,left--,state.mode=LEN;break;case CHECK:if(state.wrap){for(;bits<32;){if(have===0)break inf_leave;have--,hold|=input[next++]<<bits,bits+=8}if(_out-=left,strm.total_out+=_out,state.total+=_out,_out&&(strm.adler=state.check=state.flags?crc322(state.check,output,_out,put-_out):adler32(state.check,output,_out,put-_out)),_out=left,(state.flags?hold:zswap32(hold))!==state.check){strm.msg="incorrect data check",state.mode=BAD;break}hold=0,bits=0}state.mode=LENGTH;case LENGTH:if(state.wrap&&state.flags){for(;bits<32;){if(have===0)break inf_leave;have--,hold+=input[next++]<<bits,bits+=8}if(hold!==(state.total&4294967295)){strm.msg="incorrect length check",state.mode=BAD;break}hold=0,bits=0}state.mode=DONE;case DONE:ret=Z_STREAM_END;break inf_leave;case BAD:ret=Z_DATA_ERROR;break inf_leave;case MEM:return Z_MEM_ERROR;case SYNC:default:return Z_STREAM_ERROR}return strm.next_out=put,strm.avail_out=left,strm.next_in=next,strm.avail_in=have,state.hold=hold,state.bits=bits,(state.wsize||_out!==strm.avail_out&&state.mode<BAD&&(state.mode<CHECK||flush!==Z_FINISH))&&updatewindow(strm,strm.output,strm.next_out,_out-strm.avail_out)?(state.mode=MEM,Z_MEM_ERROR):(_in-=strm.avail_in,_out-=strm.avail_out,strm.total_in+=_in,strm.total_out+=_out,state.total+=_out,state.wrap&&_out&&(strm.adler=state.check=state.flags?crc322(state.check,output,_out,strm.next_out-_out):adler32(state.check,output,_out,strm.next_out-_out)),strm.data_type=state.bits+(state.last?64:0)+(state.mode===TYPE?128:0)+(state.mode===LEN_||state.mode===COPY_?256:0),(_in===0&&_out===0||flush===Z_FINISH)&&ret===Z_OK&&(ret=Z_BUF_ERROR),ret)}function inflateEnd(strm){if(!strm||!strm.state)return Z_STREAM_ERROR;var state=strm.state;return state.window&&(state.window=null),strm.state=null,Z_OK}function inflateGetHeader(strm,head){var state;return!strm||!strm.state||(state=strm.state,(state.wrap&2)===0)?Z_STREAM_ERROR:(state.head=head,head.done=!1,Z_OK)}function inflateSetDictionary(strm,dictionary){var dictLength=dictionary.length,state,dictid,ret;return!strm||!strm.state||(state=strm.state,state.wrap!==0&&state.mode!==DICT)?Z_STREAM_ERROR:state.mode===DICT&&(dictid=1,dictid=adler32(dictid,dictionary,dictLength,0),dictid!==state.check)?Z_DATA_ERROR:(ret=updatewindow(strm,dictionary,dictLength,dictLength),ret?(state.mode=MEM,Z_MEM_ERROR):(state.havedict=1,Z_OK))}exports.inflateReset=inflateReset;exports.inflateReset2=inflateReset2;exports.inflateResetKeep=inflateResetKeep;exports.inflateInit=inflateInit;exports.inflateInit2=inflateInit2;exports.inflate=inflate2;exports.inflateEnd=inflateEnd;exports.inflateGetHeader=inflateGetHeader;exports.inflateSetDictionary=inflateSetDictionary;exports.inflateInfo="pako inflate (from Nodeca project)"}});var require_constants=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/constants.js"(exports,module){"use strict";module.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}}});var require_gzheader=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/zlib/gzheader.js"(exports,module){"use strict";function GZheader(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}module.exports=GZheader}});var require_inflate2=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/lib/inflate.js"(exports){"use strict";var zlib_inflate=require_inflate(),utils=require_common(),strings=require_strings(),c=require_constants(),msg=require_messages(),ZStream=require_zstream(),GZheader=require_gzheader(),toString=Object.prototype.toString;function Inflate(options){if(!(this instanceof Inflate))return new Inflate(options);this.options=utils.assign({chunkSize:16384,windowBits:0,to:""},options||{});var opt=this.options;opt.raw&&opt.windowBits>=0&&opt.windowBits<16&&(opt.windowBits=-opt.windowBits,opt.windowBits===0&&(opt.windowBits=-15)),opt.windowBits>=0&&opt.windowBits<16&&!(options&&options.windowBits)&&(opt.windowBits+=32),opt.windowBits>15&&opt.windowBits<48&&(opt.windowBits&15)===0&&(opt.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ZStream,this.strm.avail_out=0;var status2=zlib_inflate.inflateInit2(this.strm,opt.windowBits);if(status2!==c.Z_OK)throw new Error(msg[status2]);if(this.header=new GZheader,zlib_inflate.inflateGetHeader(this.strm,this.header),opt.dictionary&&(typeof opt.dictionary=="string"?opt.dictionary=strings.string2buf(opt.dictionary):toString.call(opt.dictionary)==="[object ArrayBuffer]"&&(opt.dictionary=new Uint8Array(opt.dictionary)),opt.raw&&(status2=zlib_inflate.inflateSetDictionary(this.strm,opt.dictionary),status2!==c.Z_OK)))throw new Error(msg[status2])}Inflate.prototype.push=function(data,mode){var strm=this.strm,chunkSize=this.options.chunkSize,dictionary=this.options.dictionary,status2,_mode,next_out_utf8,tail,utf8str,allowBufError=!1;if(this.ended)return!1;_mode=mode===~~mode?mode:mode===!0?c.Z_FINISH:c.Z_NO_FLUSH,typeof data=="string"?strm.input=strings.binstring2buf(data):toString.call(data)==="[object ArrayBuffer]"?strm.input=new Uint8Array(data):strm.input=data,strm.next_in=0,strm.avail_in=strm.input.length;do{if(strm.avail_out===0&&(strm.output=new utils.Buf8(chunkSize),strm.next_out=0,strm.avail_out=chunkSize),status2=zlib_inflate.inflate(strm,c.Z_NO_FLUSH),status2===c.Z_NEED_DICT&&dictionary&&(status2=zlib_inflate.inflateSetDictionary(this.strm,dictionary)),status2===c.Z_BUF_ERROR&&allowBufError===!0&&(status2=c.Z_OK,allowBufError=!1),status2!==c.Z_STREAM_END&&status2!==c.Z_OK)return this.onEnd(status2),this.ended=!0,!1;strm.next_out&&(strm.avail_out===0||status2===c.Z_STREAM_END||strm.avail_in===0&&(_mode===c.Z_FINISH||_mode===c.Z_SYNC_FLUSH))&&(this.options.to==="string"?(next_out_utf8=strings.utf8border(strm.output,strm.next_out),tail=strm.next_out-next_out_utf8,utf8str=strings.buf2string(strm.output,next_out_utf8),strm.next_out=tail,strm.avail_out=chunkSize-tail,tail&&utils.arraySet(strm.output,strm.output,next_out_utf8,tail,0),this.onData(utf8str)):this.onData(utils.shrinkBuf(strm.output,strm.next_out))),strm.avail_in===0&&strm.avail_out===0&&(allowBufError=!0)}while((strm.avail_in>0||strm.avail_out===0)&&status2!==c.Z_STREAM_END);return status2===c.Z_STREAM_END&&(_mode=c.Z_FINISH),_mode===c.Z_FINISH?(status2=zlib_inflate.inflateEnd(this.strm),this.onEnd(status2),this.ended=!0,status2===c.Z_OK):(_mode===c.Z_SYNC_FLUSH&&(this.onEnd(c.Z_OK),strm.avail_out=0),!0)};Inflate.prototype.onData=function(chunk){this.chunks.push(chunk)};Inflate.prototype.onEnd=function(status2){status2===c.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=utils.flattenChunks(this.chunks)),this.chunks=[],this.err=status2,this.msg=this.strm.msg};function inflate2(input,options){var inflator=new Inflate(options);if(inflator.push(input,!0),inflator.err)throw inflator.msg||msg[inflator.err];return inflator.result}function inflateRaw(input,options){return options=options||{},options.raw=!0,inflate2(input,options)}exports.Inflate=Inflate;exports.inflate=inflate2;exports.inflateRaw=inflateRaw;exports.ungzip=inflate2}});var require_pako=__commonJS({"../../node_modules/.bun/pako@1.0.11/node_modules/pako/index.js"(exports,module){"use strict";var assign=require_common().assign,deflate2=require_deflate2(),inflate2=require_inflate2(),constants=require_constants(),pako2={};assign(pako2,deflate2,inflate2,constants);module.exports=pako2}});var require_pify=__commonJS({"../../node_modules/.bun/pify@4.0.1/node_modules/pify/index.js"(exports,module){"use strict";var processFn=(fn,options)=>function(...args){let P=options.promiseModule;return new P((resolve,reject)=>{options.multiArgs?args.push((...result)=>{options.errorFirst?result[0]?reject(result):(result.shift(),resolve(result)):resolve(result)}):options.errorFirst?args.push((error,result)=>{error?reject(error):resolve(result)}):args.push(resolve),fn.apply(this,args)})};module.exports=(input,options)=>{options=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},options);let objType=typeof input;if(!(input!==null&&(objType==="object"||objType==="function")))throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${input===null?"null":objType}\``);let filter=key=>{let match=pattern=>typeof pattern=="string"?key===pattern:pattern.test(key);return options.include?options.include.some(match):!options.exclude.some(match)},ret;objType==="function"?ret=function(...args){return options.excludeMain?input(...args):processFn(input,options).apply(this,args)}:ret=Object.create(Object.getPrototypeOf(input));for(let key in input){let property=input[key];ret[key]=typeof property=="function"&&filter(key)?processFn(property,options):property}return ret}}});var require_ignore=__commonJS({"../../node_modules/.bun/ignore@5.3.2/node_modules/ignore/index.js"(exports,module){function makeArray(subject){return Array.isArray(subject)?subject:[subject]}var EMPTY="",SPACE=" ",ESCAPE="\\",REGEX_TEST_BLANK_LINE=/^\s+$/,REGEX_INVALID_TRAILING_BACKSLASH=/(?:[^\\]|^)\\$/,REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION=/^\\!/,REGEX_REPLACE_LEADING_EXCAPED_HASH=/^\\#/,REGEX_SPLITALL_CRLF=/\r?\n/g,REGEX_TEST_INVALID_PATH=/^\.*\/|^\.+$/,SLASH="/",TMP_KEY_IGNORE="node-ignore";typeof Symbol<"u"&&(TMP_KEY_IGNORE=Symbol.for("node-ignore"));var KEY_IGNORE=TMP_KEY_IGNORE,define2=(object,key,value)=>Object.defineProperty(object,key,{value}),REGEX_REGEXP_RANGE=/([0-z])-([0-z])/g,RETURN_FALSE=()=>!1,sanitizeRange=range=>range.replace(REGEX_REGEXP_RANGE,(match,from,to)=>from.charCodeAt(0)<=to.charCodeAt(0)?match:EMPTY),cleanRangeBackSlash=slashes=>{let{length}=slashes;return slashes.slice(0,length-length%2)},REPLACERS=[[/^\uFEFF/,()=>EMPTY],[/((?:\\\\)*?)(\\?\s+)$/,(_,m1,m2)=>m1+(m2.indexOf("\\")===0?SPACE:EMPTY)],[/(\\+?)\s/g,(_,m1)=>{let{length}=m1;return m1.slice(0,length-length%2)+SPACE}],[/[\\$.|*+(){^]/g,match=>`\\${match}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(_,index3,str)=>index3+6<str.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(_,p1,p2)=>{let unescaped=p2.replace(/\\\*/g,"[^\\/]*");return p1+unescaped}],[/\\\\\\(?=[$.|*+(){^])/g,()=>ESCAPE],[/\\\\/g,()=>ESCAPE],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(match,leadEscape,range,endEscape,close)=>leadEscape===ESCAPE?`\\[${range}${cleanRangeBackSlash(endEscape)}${close}`:close==="]"&&endEscape.length%2===0?`[${sanitizeRange(range)}${endEscape}]`:"[]"],[/(?:[^*])$/,match=>/\/$/.test(match)?`${match}$`:`${match}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(_,p1)=>`${p1?`${p1}[^/]+`:"[^/]*"}(?=$|\\/$)`]],regexCache=Object.create(null),makeRegex=(pattern,ignoreCase)=>{let source=regexCache[pattern];return source||(source=REPLACERS.reduce((prev,[matcher,replacer])=>prev.replace(matcher,replacer.bind(pattern)),pattern),regexCache[pattern]=source),ignoreCase?new RegExp(source,"i"):new RegExp(source)},isString=subject=>typeof subject=="string",checkPattern=pattern=>pattern&&isString(pattern)&&!REGEX_TEST_BLANK_LINE.test(pattern)&&!REGEX_INVALID_TRAILING_BACKSLASH.test(pattern)&&pattern.indexOf("#")!==0,splitPattern=pattern=>pattern.split(REGEX_SPLITALL_CRLF),IgnoreRule=class{constructor(origin,pattern,negative,regex){this.origin=origin,this.pattern=pattern,this.negative=negative,this.regex=regex}},createRule=(pattern,ignoreCase)=>{let origin=pattern,negative=!1;pattern.indexOf("!")===0&&(negative=!0,pattern=pattern.substr(1)),pattern=pattern.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION,"!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH,"#");let regex=makeRegex(pattern,ignoreCase);return new IgnoreRule(origin,pattern,negative,regex)},throwError=(message,Ctor)=>{throw new Ctor(message)},checkPath=(path,originalPath,doThrow)=>isString(path)?path?checkPath.isNotRelative(path)?doThrow(`path should be a \`path.relative()\`d string, but got "${originalPath}"`,RangeError):!0:doThrow("path must not be empty",TypeError):doThrow(`path must be a string, but got \`${originalPath}\``,TypeError),isNotRelative=path=>REGEX_TEST_INVALID_PATH.test(path);checkPath.isNotRelative=isNotRelative;checkPath.convert=p=>p;var Ignore=class{constructor({ignorecase=!0,ignoreCase=ignorecase,allowRelativePaths=!1}={}){define2(this,KEY_IGNORE,!0),this._rules=[],this._ignoreCase=ignoreCase,this._allowRelativePaths=allowRelativePaths,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(pattern){if(pattern&&pattern[KEY_IGNORE]){this._rules=this._rules.concat(pattern._rules),this._added=!0;return}if(checkPattern(pattern)){let rule=createRule(pattern,this._ignoreCase);this._added=!0,this._rules.push(rule)}}add(pattern){return this._added=!1,makeArray(isString(pattern)?splitPattern(pattern):pattern).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(pattern){return this.add(pattern)}_testOne(path,checkUnignored){let ignored=!1,unignored=!1;return this._rules.forEach(rule=>{let{negative}=rule;if(unignored===negative&&ignored!==unignored||negative&&!ignored&&!unignored&&!checkUnignored)return;rule.regex.test(path)&&(ignored=!negative,unignored=negative)}),{ignored,unignored}}_test(originalPath,cache,checkUnignored,slices){let path=originalPath&&checkPath.convert(originalPath);return checkPath(path,originalPath,this._allowRelativePaths?RETURN_FALSE:throwError),this._t(path,cache,checkUnignored,slices)}_t(path,cache,checkUnignored,slices){if(path in cache)return cache[path];if(slices||(slices=path.split(SLASH)),slices.pop(),!slices.length)return cache[path]=this._testOne(path,checkUnignored);let parent=this._t(slices.join(SLASH)+SLASH,cache,checkUnignored,slices);return cache[path]=parent.ignored?parent:this._testOne(path,checkUnignored)}ignores(path){return this._test(path,this._ignoreCache,!1).ignored}createFilter(){return path=>!this.ignores(path)}filter(paths){return makeArray(paths).filter(this.createFilter())}test(path){return this._test(path,this._testCache,!0)}},factory=options=>new Ignore(options),isPathValid=path=>checkPath(path&&checkPath.convert(path),path,RETURN_FALSE);factory.isPathValid=isPathValid;factory.default=factory;module.exports=factory;if(typeof process<"u"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let makePosix=str=>/^\\\\\?\\/.test(str)||/["<>|\u0000-\u001F]+/u.test(str)?str:str.replace(/\\/g,"/");checkPath.convert=makePosix;let REGIX_IS_WINDOWS_PATH_ABSOLUTE=/^[a-z]:\//i;checkPath.isNotRelative=path=>REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path)||isNotRelative(path)}}});var require_lib=__commonJS({"../../node_modules/.bun/clean-git-ref@2.0.1/node_modules/clean-git-ref/lib/index.js"(exports,module){"use strict";function escapeRegExp(string){return string.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function replaceAll(str,search,replacement){return search=search instanceof RegExp?search:new RegExp(escapeRegExp(search),"g"),str.replace(search,replacement)}var CleanGitRef={clean:function(value){if(typeof value!="string")throw new Error("Expected a string, received: "+value);return value=replaceAll(value,"./","/"),value=replaceAll(value,"..","."),value=replaceAll(value," ","-"),value=replaceAll(value,/^[~^:?*\\\-]/g,""),value=replaceAll(value,/[~^:?*\\]/g,"-"),value=replaceAll(value,/[~^:?*\\\-]$/g,""),value=replaceAll(value,"@{","-"),value=replaceAll(value,/\.$/g,""),value=replaceAll(value,/\/$/g,""),value=replaceAll(value,/\.lock$/g,""),value}};module.exports=CleanGitRef}});var require_is_git_ref_name_valid=__commonJS({"../../node_modules/.bun/is-git-ref-name-valid@1.0.0/node_modules/is-git-ref-name-valid/index.js"(exports,module){"use strict";var bad=/(^|[/.])([/.]|$)|^@$|@{|[\x00-\x20\x7f~^:?*[\\]|\.lock(\/|$)/;module.exports=function(name,onelevel){if(typeof name!="string")throw new TypeError("Reference name must be a string");return!bad.test(name)&&(!!onelevel||name.includes("/"))}}});var require_onp=__commonJS({"../../node_modules/.bun/diff3@0.0.3/node_modules/diff3/onp.js"(exports,module){module.exports=function(a_,b_){var a=a_,b=b_,m=a.length,n=b.length,reverse=!1,ed=null,offset=m+1,path=[],pathposi=[],ses=[],lcs="",SES_DELETE=-1,SES_COMMON=0,SES_ADD=1,tmp1,tmp2,init2=function(){m>=n&&(tmp1=a,tmp2=m,a=b,b=tmp1,m=n,n=tmp2,reverse=!0,offset=m+1)},P=function(x,y,k){return{x,y,k}},seselem=function(elem,t){return{elem,t}},snake=function(k,p,pp){var r,x,y;for(p>pp?r=path[k-1+offset]:r=path[k+1+offset],y=Math.max(p,pp),x=y-k;x<m&&y<n&&a[x]===b[y];)++x,++y;return path[k+offset]=pathposi.length,pathposi[pathposi.length]=new P(x,y,r),y},recordseq=function(epc){var x_idx,y_idx,px_idx,py_idx,i;for(x_idx=y_idx=1,px_idx=py_idx=0,i=epc.length-1;i>=0;--i)for(;px_idx<epc[i].x||py_idx<epc[i].y;)epc[i].y-epc[i].x>py_idx-px_idx?(reverse?ses[ses.length]=new seselem(b[py_idx],SES_DELETE):ses[ses.length]=new seselem(b[py_idx],SES_ADD),++y_idx,++py_idx):epc[i].y-epc[i].x<py_idx-px_idx?(reverse?ses[ses.length]=new seselem(a[px_idx],SES_ADD):ses[ses.length]=new seselem(a[px_idx],SES_DELETE),++x_idx,++px_idx):(ses[ses.length]=new seselem(a[px_idx],SES_COMMON),lcs+=a[px_idx],++x_idx,++y_idx,++px_idx,++py_idx)};return init2(),{SES_DELETE:-1,SES_COMMON:0,SES_ADD:1,editdistance:function(){return ed},getlcs:function(){return lcs},getses:function(){return ses},compose:function(){var delta,size,fp,p,r,epc,i,k;for(delta=n-m,size=m+n+3,fp={},i=0;i<size;++i)fp[i]=-1,path[i]=-1;p=-1;do{for(++p,k=-p;k<=delta-1;++k)fp[k+offset]=snake(k,fp[k-1+offset]+1,fp[k+1+offset]);for(k=delta+p;k>=delta+1;--k)fp[k+offset]=snake(k,fp[k-1+offset]+1,fp[k+1+offset]);fp[delta+offset]=snake(delta,fp[delta-1+offset]+1,fp[delta+1+offset])}while(fp[delta+offset]!==n);for(ed=delta+2*p,r=path[delta+offset],epc=[];r!==-1;)epc[epc.length]=new P(pathposi[r].x,pathposi[r].y,null),r=pathposi[r].k;recordseq(epc)}}}}});var require_diff3=__commonJS({"../../node_modules/.bun/diff3@0.0.3/node_modules/diff3/diff3.js"(exports,module){var onp=require_onp();function longestCommonSubsequence(file1,file2){var diff2=new onp(file1,file2);diff2.compose();for(var ses=diff2.getses(),root,prev,file1RevIdx=file1.length-1,file2RevIdx=file2.length-1,i=ses.length-1;i>=0;--i)ses[i].t===diff2.SES_COMMON?(prev?(prev.chain={file1index:file1RevIdx,file2index:file2RevIdx,chain:null},prev=prev.chain):(root={file1index:file1RevIdx,file2index:file2RevIdx,chain:null},prev=root),file1RevIdx--,file2RevIdx--):ses[i].t===diff2.SES_DELETE?file1RevIdx--:ses[i].t===diff2.SES_ADD&&file2RevIdx--;var tail={file1index:-1,file2index:-1,chain:null};return prev?(prev.chain=tail,root):tail}function diffIndices(file1,file2){for(var result=[],tail1=file1.length,tail2=file2.length,candidate=longestCommonSubsequence(file1,file2);candidate!==null;candidate=candidate.chain){var mismatchLength1=tail1-candidate.file1index-1,mismatchLength2=tail2-candidate.file2index-1;tail1=candidate.file1index,tail2=candidate.file2index,(mismatchLength1||mismatchLength2)&&result.push({file1:[tail1+1,mismatchLength1],file2:[tail2+1,mismatchLength2]})}return result.reverse(),result}function diff3MergeIndices(a,o,b){var i,m1=diffIndices(o,a),m2=diffIndices(o,b),hunks=[];function addHunk(h,side2){hunks.push([h.file1[0],side2,h.file1[1],h.file2[0],h.file2[1]])}for(i=0;i<m1.length;i++)addHunk(m1[i],0);for(i=0;i<m2.length;i++)addHunk(m2[i],2);hunks.sort(function(x,y){return x[0]-y[0]});var result=[],commonOffset=0;function copyCommon(targetOffset){targetOffset>commonOffset&&(result.push([1,commonOffset,targetOffset-commonOffset]),commonOffset=targetOffset)}for(var hunkIndex=0;hunkIndex<hunks.length;hunkIndex++){for(var firstHunkIndex=hunkIndex,hunk=hunks[hunkIndex],regionLhs=hunk[0],regionRhs=regionLhs+hunk[2];hunkIndex<hunks.length-1;){var maybeOverlapping=hunks[hunkIndex+1],maybeLhs=maybeOverlapping[0];if(maybeLhs>regionRhs)break;regionRhs=Math.max(regionRhs,maybeLhs+maybeOverlapping[2]),hunkIndex++}if(copyCommon(regionLhs),firstHunkIndex==hunkIndex)hunk[4]>0&&result.push([hunk[1],hunk[3],hunk[4]]);else{var regions={0:[a.length,-1,o.length,-1],2:[b.length,-1,o.length,-1]};for(i=firstHunkIndex;i<=hunkIndex;i++){hunk=hunks[i];var side=hunk[1],r=regions[side],oLhs=hunk[0],oRhs=oLhs+hunk[2],abLhs=hunk[3],abRhs=abLhs+hunk[4];r[0]=Math.min(abLhs,r[0]),r[1]=Math.max(abRhs,r[1]),r[2]=Math.min(oLhs,r[2]),r[3]=Math.max(oRhs,r[3])}var aLhs=regions[0][0]+(regionLhs-regions[0][2]),aRhs=regions[0][1]+(regionRhs-regions[0][3]),bLhs=regions[2][0]+(regionLhs-regions[2][2]),bRhs=regions[2][1]+(regionRhs-regions[2][3]);result.push([-1,aLhs,aRhs-aLhs,regionLhs,regionRhs-regionLhs,bLhs,bRhs-bLhs])}commonOffset=regionRhs}return copyCommon(o.length),result}function diff3Merge2(a,o,b){var result=[],files=[a,o,b],indices=diff3MergeIndices(a,o,b),okLines=[];function flushOk(){okLines.length&&result.push({ok:okLines}),okLines=[]}function pushOk(xs){for(var j=0;j<xs.length;j++)okLines.push(xs[j])}function isTrueConflict(rec){if(rec[2]!=rec[6])return!0;for(var aoff=rec[1],boff=rec[5],j=0;j<rec[2];j++)if(a[j+aoff]!=b[j+boff])return!0;return!1}for(var i=0;i<indices.length;i++){var x=indices[i],side=x[0];side==-1?isTrueConflict(x)?(flushOk(),result.push({conflict:{a:a.slice(x[1],x[1]+x[2]),aIndex:x[1],o:o.slice(x[3],x[3]+x[4]),oIndex:x[3],b:b.slice(x[5],x[5]+x[6]),bIndex:x[5]}})):pushOk(files[0].slice(x[1],x[1]+x[2])):pushOk(files[side].slice(x[1],x[1]+x[2]))}return flushOk(),result}module.exports=diff3Merge2}});var cf_git_exports={};__export(cf_git_exports,{Errors:()=>Errors,STAGE:()=>STAGE,TREE:()=>TREE,WORKDIR:()=>WORKDIR,abortMerge:()=>abortMerge,add:()=>add,addNote:()=>addNote,addRemote:()=>addRemote,annotatedTag:()=>annotatedTag,branch:()=>branch,checkout:()=>checkout,checkoutFreshChunk:()=>checkoutFreshChunk,clone:()=>clone,commit:()=>commit,currentBranch:()=>currentBranch,default:()=>cf_git_default,deleteBranch:()=>deleteBranch,deleteRef:()=>deleteRef,deleteRemote:()=>deleteRemote,deleteTag:()=>deleteTag,expandOid:()=>expandOid,expandRef:()=>expandRef,fastForward:()=>fastForward,fetch:()=>fetch2,findMergeBase:()=>findMergeBase,findRoot:()=>findRoot,getConfig:()=>getConfig,getConfigAll:()=>getConfigAll,getRemoteInfo:()=>getRemoteInfo,getRemoteInfo2:()=>getRemoteInfo2,hashBlob:()=>hashBlob,indexPack:()=>indexPack,init:()=>init,isDescendent:()=>isDescendent,isIgnored:()=>isIgnored,listBranches:()=>listBranches,listFiles:()=>listFiles,listNotes:()=>listNotes,listRefs:()=>listRefs,listRemotes:()=>listRemotes,listServerRefs:()=>listServerRefs,listTags:()=>listTags,log:()=>log,merge:()=>merge,packObjects:()=>packObjects,pull:()=>pull,push:()=>push,readBlob:()=>readBlob,readCommit:()=>readCommit,readNote:()=>readNote,readObject:()=>readObject,readTag:()=>readTag,readTree:()=>readTree,remove:()=>remove,removeNote:()=>removeNote,renameBranch:()=>renameBranch,resetIndex:()=>resetIndex,resolveRef:()=>resolveRef,setConfig:()=>setConfig,stage:()=>stage,stash:()=>stash,status:()=>status,statusMatrix:()=>statusMatrix,tag:()=>tag,updateIndex:()=>updateIndex$1,version:()=>version,walk:()=>walk,writeBlob:()=>writeBlob,writeCommit:()=>writeCommit,writeObject:()=>writeObject,writeRef:()=>writeRef,writeTag:()=>writeTag,writeTree:()=>writeTree});var import_crc_32=__toESM(require_crc32(),1),import_pako=__toESM(require_pako(),1),import_pify=__toESM(require_pify(),1),import_ignore=__toESM(require_ignore(),1),import_clean_git_ref=__toESM(require_lib(),1),import_is_git_ref_name_valid=__toESM(require_is_git_ref_name_valid(),1),import_diff3=__toESM(require_diff3(),1);import{createHash}from"node:crypto";function Diff(){}Diff.prototype={diff:function(oldString,newString){var _options$timeout,options=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},callback=options.callback;typeof options=="function"&&(callback=options,options={}),this.options=options;var self=this;function done(value){return callback?(setTimeout(function(){callback(void 0,value)},0),!0):value}oldString=this.castInput(oldString),newString=this.castInput(newString),oldString=this.removeEmpty(this.tokenize(oldString)),newString=this.removeEmpty(this.tokenize(newString));var newLen=newString.length,oldLen=oldString.length,editLength=1,maxEditLength=newLen+oldLen;options.maxEditLength&&(maxEditLength=Math.min(maxEditLength,options.maxEditLength));var maxExecutionTime=(_options$timeout=options.timeout)!==null&&_options$timeout!==void 0?_options$timeout:1/0,abortAfterTimestamp=Date.now()+maxExecutionTime,bestPath=[{oldPos:-1,lastComponent:void 0}],newPos=this.extractCommon(bestPath[0],newString,oldString,0);if(bestPath[0].oldPos+1>=oldLen&&newPos+1>=newLen)return done([{value:this.join(newString),count:newString.length}]);var minDiagonalToConsider=-1/0,maxDiagonalToConsider=1/0;function execEditLength(){for(var diagonalPath=Math.max(minDiagonalToConsider,-editLength);diagonalPath<=Math.min(maxDiagonalToConsider,editLength);diagonalPath+=2){var basePath=void 0,removePath=bestPath[diagonalPath-1],addPath=bestPath[diagonalPath+1];removePath&&(bestPath[diagonalPath-1]=void 0);var canAdd=!1;if(addPath){var addPathNewPos=addPath.oldPos-diagonalPath;canAdd=addPath&&0<=addPathNewPos&&addPathNewPos<newLen}var canRemove=removePath&&removePath.oldPos+1<oldLen;if(!canAdd&&!canRemove){bestPath[diagonalPath]=void 0;continue}if(!canRemove||canAdd&&removePath.oldPos+1<addPath.oldPos?basePath=self.addToPath(addPath,!0,void 0,0):basePath=self.addToPath(removePath,void 0,!0,1),newPos=self.extractCommon(basePath,newString,oldString,diagonalPath),basePath.oldPos+1>=oldLen&&newPos+1>=newLen)return done(buildValues(self,basePath.lastComponent,newString,oldString,self.useLongestToken));bestPath[diagonalPath]=basePath,basePath.oldPos+1>=oldLen&&(maxDiagonalToConsider=Math.min(maxDiagonalToConsider,diagonalPath-1)),newPos+1>=newLen&&(minDiagonalToConsider=Math.max(minDiagonalToConsider,diagonalPath+1))}editLength++}if(callback)(function exec(){setTimeout(function(){if(editLength>maxEditLength||Date.now()>abortAfterTimestamp)return callback();execEditLength()||exec()},0)})();else for(;editLength<=maxEditLength&&Date.now()<=abortAfterTimestamp;){var ret=execEditLength();if(ret)return ret}},addToPath:function(path,added,removed,oldPosInc){var last=path.lastComponent;return last&&last.added===added&&last.removed===removed?{oldPos:path.oldPos+oldPosInc,lastComponent:{count:last.count+1,added,removed,previousComponent:last.previousComponent}}:{oldPos:path.oldPos+oldPosInc,lastComponent:{count:1,added,removed,previousComponent:last}}},extractCommon:function(basePath,newString,oldString,diagonalPath){for(var newLen=newString.length,oldLen=oldString.length,oldPos=basePath.oldPos,newPos=oldPos-diagonalPath,commonCount=0;newPos+1<newLen&&oldPos+1<oldLen&&this.equals(newString[newPos+1],oldString[oldPos+1]);)newPos++,oldPos++,commonCount++;return commonCount&&(basePath.lastComponent={count:commonCount,previousComponent:basePath.lastComponent}),basePath.oldPos=oldPos,newPos},equals:function(left,right){return this.options.comparator?this.options.comparator(left,right):left===right||this.options.ignoreCase&&left.toLowerCase()===right.toLowerCase()},removeEmpty:function(array){for(var ret=[],i=0;i<array.length;i++)array[i]&&ret.push(array[i]);return ret},castInput:function(value){return value},tokenize:function(value){return value.split("")},join:function(chars){return chars.join("")}};function buildValues(diff2,lastComponent,newString,oldString,useLongestToken){for(var components=[],nextComponent;lastComponent;)components.push(lastComponent),nextComponent=lastComponent.previousComponent,delete lastComponent.previousComponent,lastComponent=nextComponent;components.reverse();for(var componentPos=0,componentLen=components.length,newPos=0,oldPos=0;componentPos<componentLen;componentPos++){var component=components[componentPos];if(component.removed){if(component.value=diff2.join(oldString.slice(oldPos,oldPos+component.count)),oldPos+=component.count,componentPos&&components[componentPos-1].added){var tmp=components[componentPos-1];components[componentPos-1]=components[componentPos],components[componentPos]=tmp}}else{if(!component.added&&useLongestToken){var value=newString.slice(newPos,newPos+component.count);value=value.map(function(value2,i){var oldValue=oldString[oldPos+i];return oldValue.length>value2.length?oldValue:value2}),component.value=diff2.join(value)}else component.value=diff2.join(newString.slice(newPos,newPos+component.count));newPos+=component.count,component.added||(oldPos+=component.count)}}var finalComponent=components[componentLen-1];return componentLen>1&&typeof finalComponent.value=="string"&&(finalComponent.added||finalComponent.removed)&&diff2.equals("",finalComponent.value)&&(components[componentLen-2].value+=finalComponent.value,components.pop()),components}var characterDiff=new Diff;var extendedWordChars=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,reWhitespace=/\S/,wordDiff=new Diff;wordDiff.equals=function(left,right){return this.options.ignoreCase&&(left=left.toLowerCase(),right=right.toLowerCase()),left===right||this.options.ignoreWhitespace&&!reWhitespace.test(left)&&!reWhitespace.test(right)};wordDiff.tokenize=function(value){for(var tokens=value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),i=0;i<tokens.length-1;i++)!tokens[i+1]&&tokens[i+2]&&extendedWordChars.test(tokens[i])&&extendedWordChars.test(tokens[i+2])&&(tokens[i]+=tokens[i+2],tokens.splice(i+1,2),i--);return tokens};var lineDiff=new Diff;lineDiff.tokenize=function(value){this.options.stripTrailingCr&&(value=value.replace(/\r\n/g,`
2
+ `));var retLines=[],linesAndNewlines=value.split(/(\n|\r\n)/);linesAndNewlines[linesAndNewlines.length-1]||linesAndNewlines.pop();for(var i=0;i<linesAndNewlines.length;i++){var line=linesAndNewlines[i];i%2&&!this.options.newlineIsToken?retLines[retLines.length-1]+=line:(this.options.ignoreWhitespace&&(line=line.trim()),retLines.push(line))}return retLines};var sentenceDiff=new Diff;sentenceDiff.tokenize=function(value){return value.split(/(\S.+?[.!?])(?=\s+|$)/)};var cssDiff=new Diff;cssDiff.tokenize=function(value){return value.split(/([{}:;,]|\s+)/)};function _typeof(obj){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_typeof=function(obj2){return typeof obj2}:_typeof=function(obj2){return obj2&&typeof Symbol=="function"&&obj2.constructor===Symbol&&obj2!==Symbol.prototype?"symbol":typeof obj2},_typeof(obj)}var objectPrototypeToString=Object.prototype.toString,jsonDiff=new Diff;jsonDiff.useLongestToken=!0;jsonDiff.tokenize=lineDiff.tokenize;jsonDiff.castInput=function(value){var _this$options=this.options,undefinedReplacement=_this$options.undefinedReplacement,_this$options$stringi=_this$options.stringifyReplacer,stringifyReplacer=_this$options$stringi===void 0?function(k,v){return typeof v>"u"?undefinedReplacement:v}:_this$options$stringi;return typeof value=="string"?value:JSON.stringify(canonicalize(value,null,null,stringifyReplacer),stringifyReplacer," ")};jsonDiff.equals=function(left,right){return Diff.prototype.equals.call(jsonDiff,left.replace(/,([\r\n])/g,"$1"),right.replace(/,([\r\n])/g,"$1"))};function canonicalize(obj,stack,replacementStack,replacer,key){stack=stack||[],replacementStack=replacementStack||[],replacer&&(obj=replacer(key,obj));var i;for(i=0;i<stack.length;i+=1)if(stack[i]===obj)return replacementStack[i];var canonicalizedObj;if(objectPrototypeToString.call(obj)==="[object Array]"){for(stack.push(obj),canonicalizedObj=new Array(obj.length),replacementStack.push(canonicalizedObj),i=0;i<obj.length;i+=1)canonicalizedObj[i]=canonicalize(obj[i],stack,replacementStack,replacer,key);return stack.pop(),replacementStack.pop(),canonicalizedObj}if(obj&&obj.toJSON&&(obj=obj.toJSON()),_typeof(obj)==="object"&&obj!==null){stack.push(obj),canonicalizedObj={},replacementStack.push(canonicalizedObj);var sortedKeys=[],_key;for(_key in obj)obj.hasOwnProperty(_key)&&sortedKeys.push(_key);for(sortedKeys.sort(),i=0;i<sortedKeys.length;i+=1)_key=sortedKeys[i],canonicalizedObj[_key]=canonicalize(obj[_key],stack,replacementStack,replacer,_key);stack.pop(),replacementStack.pop()}else canonicalizedObj=obj;return canonicalizedObj}var arrayDiff=new Diff;arrayDiff.tokenize=function(value){return value.slice()};arrayDiff.join=arrayDiff.removeEmpty=function(value){return value};var AsyncLock=class{constructor(options={}){this.queues=new Map}async acquire(key,fn){let lockKey=Array.isArray(key)?key.join(":"):key;this.queues.has(lockKey)||this.queues.set(lockKey,[]);let queue=this.queues.get(lockKey),resolveAcquire,acquirePromise=new Promise(resolve=>{resolveAcquire=resolve});queue.push(resolveAcquire),queue.length>1&&await acquirePromise;let release=()=>{queue.shift(),queue.length>0?queue[0]():this.queues.delete(lockKey)};if(typeof fn=="function")try{return await fn()}finally{release()}return release}async run(key,fn){return this.acquire(key,fn)}},BaseError=class _BaseError extends Error{constructor(message){super(message),this.caller=""}toJSON(){return{code:this.code,data:this.data,caller:this.caller,message:this.message,stack:this.stack}}fromJSON(json){let e=new _BaseError(json.message);return e.code=json.code,e.data=json.data,e.caller=json.caller,e.stack=json.stack,e}get isIsomorphicGitError(){return!0}},UnmergedPathsError=class _UnmergedPathsError extends BaseError{constructor(filepaths){super(`Modifying the index is not possible because you have unmerged files: ${filepaths.toString}. Fix them up in the work tree, and then use 'git add/rm as appropriate to mark resolution and make a commit.`),this.code=this.name=_UnmergedPathsError.code,this.data={filepaths}}};UnmergedPathsError.code="UnmergedPathsError";var InternalError=class _InternalError extends BaseError{constructor(message){super(`An internal error caused this command to fail. Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${message}`),this.code=this.name=_InternalError.code,this.data={message}}};InternalError.code="InternalError";var UnsafeFilepathError=class _UnsafeFilepathError extends BaseError{constructor(filepath){super(`The filepath "${filepath}" contains unsafe character sequences`),this.code=this.name=_UnsafeFilepathError.code,this.data={filepath}}};UnsafeFilepathError.code="UnsafeFilepathError";var BufferCursor=class{constructor(buffer){this.buffer=buffer,this._start=0}eof(){return this._start>=this.buffer.length}tell(){return this._start}seek(n){this._start=n}slice(n){let r=this.buffer.slice(this._start,this._start+n);return this._start+=n,r}toString(enc,length){let r=this.buffer.toString(enc,this._start,this._start+length);return this._start+=length,r}write(value,length,enc){let r=this.buffer.write(value,this._start,length,enc);return this._start+=length,r}copy(source,start,end){let r=source.copy(this.buffer,this._start,start,end);return this._start+=r,r}readUInt8(){let r=this.buffer.readUInt8(this._start);return this._start+=1,r}writeUInt8(value){let r=this.buffer.writeUInt8(value,this._start);return this._start+=1,r}readUInt16BE(){let r=this.buffer.readUInt16BE(this._start);return this._start+=2,r}writeUInt16BE(value){let r=this.buffer.writeUInt16BE(value,this._start);return this._start+=2,r}readUInt32BE(){let r=this.buffer.readUInt32BE(this._start);return this._start+=4,r}writeUInt32BE(value){let r=this.buffer.writeUInt32BE(value,this._start);return this._start+=4,r}};function compareStrings(a,b){return-(a<b)||+(a>b)}function comparePath(a,b){return compareStrings(a.path,b.path)}function normalizeMode(mode){let type=mode>0?mode>>12:0;type!==4&&type!==8&&type!==10&&type!==14&&(type=8);let permissions=mode&511;return permissions&73?permissions=493:permissions=420,type!==8&&(permissions=0),(type<<12)+permissions}var MAX_UINT32=2**32;function SecondsNanoseconds(givenSeconds,givenNanoseconds,milliseconds,date){if(givenSeconds!==void 0&&givenNanoseconds!==void 0)return[givenSeconds,givenNanoseconds];milliseconds===void 0&&(milliseconds=date.valueOf());let seconds=Math.floor(milliseconds/1e3),nanoseconds=(milliseconds-seconds*1e3)*1e6;return[seconds,nanoseconds]}function normalizeStats(e){let[ctimeSeconds,ctimeNanoseconds]=SecondsNanoseconds(e.ctimeSeconds,e.ctimeNanoseconds,e.ctimeMs,e.ctime),[mtimeSeconds,mtimeNanoseconds]=SecondsNanoseconds(e.mtimeSeconds,e.mtimeNanoseconds,e.mtimeMs,e.mtime);return{ctimeSeconds:ctimeSeconds%MAX_UINT32,ctimeNanoseconds:ctimeNanoseconds%MAX_UINT32,mtimeSeconds:mtimeSeconds%MAX_UINT32,mtimeNanoseconds:mtimeNanoseconds%MAX_UINT32,dev:e.dev%MAX_UINT32,ino:e.ino%MAX_UINT32,mode:normalizeMode(e.mode%MAX_UINT32),uid:e.uid%MAX_UINT32,gid:e.gid%MAX_UINT32,size:e.size>-1?e.size%MAX_UINT32:0}}function toHex(buffer){let hex="";for(let byte of new Uint8Array(buffer))byte<16&&(hex+="0"),hex+=byte.toString(16);return hex}async function shasum(buffer){if(crypto.subtle.digestSync){let hash2=crypto.subtle.digestSync("SHA-1",buffer);return toHex(hash2)}let hash=await crypto.subtle.digest("SHA-1",buffer);return toHex(hash)}function parseCacheEntryFlags(bits){return{assumeValid:!!(bits&32768),extended:!!(bits&16384),stage:(bits&12288)>>12,nameLength:bits&4095}}function renderCacheEntryFlags(entry){let flags=entry.flags;return flags.extended=!1,flags.nameLength=Math.min(Buffer.from(entry.path).length,4095),(flags.assumeValid?32768:0)+(flags.extended?16384:0)+((flags.stage&3)<<12)+(flags.nameLength&4095)}var GitIndex=class _GitIndex{constructor(entries,unmergedPaths){this._dirty=!1,this._unmergedPaths=unmergedPaths||new Set,this._entries=entries||new Map}_addEntry(entry){if(entry.flags.stage===0)entry.stages=[entry],this._entries.set(entry.path,entry),this._unmergedPaths.delete(entry.path);else{let existingEntry=this._entries.get(entry.path);existingEntry||(this._entries.set(entry.path,entry),existingEntry=entry),existingEntry.stages[entry.flags.stage]=entry,this._unmergedPaths.add(entry.path)}}static async from(buffer){if(Buffer.isBuffer(buffer))return _GitIndex.fromBuffer(buffer);if(buffer===null)return new _GitIndex(null);throw new InternalError("invalid type passed to GitIndex.from")}static async fromBuffer(buffer){if(buffer.length===0)throw new InternalError("Index file is empty (.git/index)");let index3=new _GitIndex,reader=new BufferCursor(buffer),magic=reader.toString("utf8",4);if(magic!=="DIRC")throw new InternalError(`Invalid dircache magic file number: ${magic}`);let shaComputed=await shasum(buffer.slice(0,-20)),shaClaimed=buffer.slice(-20).toString("hex");if(shaClaimed!==shaComputed)throw new InternalError(`Invalid checksum in GitIndex buffer: expected ${shaClaimed} but saw ${shaComputed}`);let version2=reader.readUInt32BE();if(version2!==2)throw new InternalError(`Unsupported dircache version: ${version2}`);let numEntries=reader.readUInt32BE(),i=0;for(;!reader.eof()&&i<numEntries;){let entry={};entry.ctimeSeconds=reader.readUInt32BE(),entry.ctimeNanoseconds=reader.readUInt32BE(),entry.mtimeSeconds=reader.readUInt32BE(),entry.mtimeNanoseconds=reader.readUInt32BE(),entry.dev=reader.readUInt32BE(),entry.ino=reader.readUInt32BE(),entry.mode=reader.readUInt32BE(),entry.uid=reader.readUInt32BE(),entry.gid=reader.readUInt32BE(),entry.size=reader.readUInt32BE(),entry.oid=reader.slice(20).toString("hex");let flags=reader.readUInt16BE();entry.flags=parseCacheEntryFlags(flags);let pathlength=buffer.indexOf(0,reader.tell()+1)-reader.tell();if(pathlength<1)throw new InternalError(`Got a path length of: ${pathlength}`);if(entry.path=reader.toString("utf8",pathlength),entry.path.includes("..\\")||entry.path.includes("../"))throw new UnsafeFilepathError(entry.path);let padding=8-(reader.tell()-12)%8;for(padding===0&&(padding=8);padding--;){let tmp=reader.readUInt8();if(tmp!==0)throw new InternalError(`Expected 1-8 null characters but got '${tmp}' after ${entry.path}`);if(reader.eof())throw new InternalError("Unexpected end of file")}entry.stages=[],index3._addEntry(entry),i++}return index3}get unmergedPaths(){return[...this._unmergedPaths]}get entries(){return[...this._entries.values()].sort(comparePath)}get entriesMap(){return this._entries}get entriesFlat(){return[...this.entries].flatMap(entry=>entry.stages.length>1?entry.stages.filter(x=>x):entry)}*[Symbol.iterator](){for(let entry of this.entries)yield entry}insert({filepath,stats,oid,stage:stage2=0}){stats||(stats={ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,mode:0,uid:0,gid:0,size:0}),stats=normalizeStats(stats);let bfilepath=Buffer.from(filepath),entry={ctimeSeconds:stats.ctimeSeconds,ctimeNanoseconds:stats.ctimeNanoseconds,mtimeSeconds:stats.mtimeSeconds,mtimeNanoseconds:stats.mtimeNanoseconds,dev:stats.dev,ino:stats.ino,mode:stats.mode||33188,uid:stats.uid,gid:stats.gid,size:stats.size,path:filepath,oid,flags:{assumeValid:!1,extended:!1,stage:stage2,nameLength:bfilepath.length<4095?bfilepath.length:4095},stages:[],uptodate:!0};this._addEntry(entry),this._dirty=!0}delete({filepath}){if(this._entries.has(filepath))this._entries.delete(filepath);else for(let key of this._entries.keys())key.startsWith(filepath+"/")&&this._entries.delete(key);this._unmergedPaths.has(filepath)&&this._unmergedPaths.delete(filepath),this._dirty=!0}clear(){this._entries.clear(),this._dirty=!0}has({filepath}){return this._entries.has(filepath)}render(){return this.entries.map(entry=>`${entry.mode.toString(8)} ${entry.oid} ${entry.path}`).join(`
3
+ `)}static async _entryToBuffer(entry){let bpath=Buffer.from(entry.path),length=Math.ceil((62+bpath.length+1)/8)*8,written=Buffer.alloc(length),writer=new BufferCursor(written),stat=normalizeStats(entry);return writer.writeUInt32BE(stat.ctimeSeconds),writer.writeUInt32BE(stat.ctimeNanoseconds),writer.writeUInt32BE(stat.mtimeSeconds),writer.writeUInt32BE(stat.mtimeNanoseconds),writer.writeUInt32BE(stat.dev),writer.writeUInt32BE(stat.ino),writer.writeUInt32BE(stat.mode),writer.writeUInt32BE(stat.uid),writer.writeUInt32BE(stat.gid),writer.writeUInt32BE(stat.size),writer.write(entry.oid,20,"hex"),writer.writeUInt16BE(renderCacheEntryFlags(entry)),writer.write(entry.path,bpath.length,"utf8"),written}async toObject({entries=this.entries}={}){let header=Buffer.alloc(12),writer=new BufferCursor(header);writer.write("DIRC",4,"utf8"),writer.writeUInt32BE(2),writer.writeUInt32BE(entries.reduce((count,entry)=>count+(entry.stages.length>1?entry.stages.filter(Boolean).length:1),0));let entryBuffers=[];for(let entry of entries)if(entryBuffers.push(_GitIndex._entryToBuffer(entry)),entry.stages.length>1)for(let stage2 of entry.stages)stage2&&stage2!==entry&&entryBuffers.push(_GitIndex._entryToBuffer(stage2));entryBuffers=await Promise.all(entryBuffers);let body=Buffer.concat(entryBuffers),main=Buffer.concat([header,body]),sum=await shasum(main);return Buffer.concat([main,Buffer.from(sum,"hex")])}};function compareStats(entry,stats,filemode=!0,trustino=!0){let e=normalizeStats(entry),s=normalizeStats(stats);return filemode&&e.mode!==s.mode||e.mtimeSeconds!==s.mtimeSeconds||e.ctimeSeconds!==s.ctimeSeconds||e.uid!==s.uid||e.gid!==s.gid||trustino&&e.ino!==s.ino||e.size!==s.size}var lock=null,IndexCache=Symbol("IndexCache"),PendingRefresh=new WeakMap;function createCache(){return{map:new Map,stats:new Map}}async function updateCachedIndexFile(fs,filepath,cache){let[stat,rawIndexFile]=await Promise.all([fs.lstat(filepath),fs.read(filepath)]),index3=await GitIndex.from(rawIndexFile);cache.map.set(filepath,index3),cache.stats.set(filepath,stat)}async function isIndexStale(fs,filepath,cache){let savedStats=cache.stats.get(filepath);if(savedStats===void 0)return!0;if(savedStats===null)return!1;let currStats=await fs.lstat(filepath);return currStats===null?!1:compareStats(savedStats,currStats)}function isRacilyClean(cache,gitdir,entry){let indexStats=cache[IndexCache]&&cache[IndexCache].stats.get(`${gitdir}/index`);if(!indexStats||entry.uptodate||entry.mode===57344)return!1;let indexSeconds=normalizeStats(indexStats).mtimeSeconds;return indexSeconds!==0&&entry.mtimeSeconds>=indexSeconds}async function smudgeRacilyClean({fs,gitdir,cache,index:index3}){let dir=gitdir===".git"?".":gitdir.endsWith("/.git")?gitdir.slice(0,-5):null;if(dir!==null)for(let entry of index3.entriesMap.values()){if(entry.stages.length>1||!isRacilyClean(cache,gitdir,entry))continue;let filepath=join2(dir,entry.path),stats=await fs.lstat(filepath);if(!stats||compareStats(entry,stats))continue;let object=stats.isSymbolicLink()?await fs.readlink(filepath):await fs.read(filepath);if(object===null)continue;await shasum(GitObject.wrap({type:"blob",object}))!==entry.oid&&(entry.size=0)}}var GitIndexManager=class{static async acquire({fs,gitdir,cache,allowUnmerged=!0,trustIndexCache=!1},closure){cache[IndexCache]||(cache[IndexCache]=createCache());let filepath=`${gitdir}/index`;lock===null&&(lock=new AsyncLock({maxPending:1/0}));let result,unmergedPaths=[];return await lock.acquire(filepath,async()=>{let theIndexCache=cache[IndexCache];(!theIndexCache.map.has(filepath)||!trustIndexCache&&await isIndexStale(fs,filepath,theIndexCache))&&await updateCachedIndexFile(fs,filepath,theIndexCache);let index3=theIndexCache.map.get(filepath);if(unmergedPaths=index3.unmergedPaths,unmergedPaths.length&&!allowUnmerged)throw new UnmergedPathsError(unmergedPaths);if(result=await closure(index3),index3._dirty){await smudgeRacilyClean({fs,gitdir,cache,index:index3});let buffer=await index3.toObject();await fs.write(filepath,buffer),theIndexCache.stats.set(filepath,await fs.lstat(filepath)),index3._dirty=!1}}),result}static async acquireFreshCheckout({fs,gitdir,priorChunks,priorEntries,deferFragmentCleanup},closure){let chunkIndex=new GitIndex,result=await closure(chunkIndex),chunkEntries=chunkIndex.entries,indexEntries=priorEntries+chunkEntries.length,fragmentDir=`${gitdir}/nimbus-checkout-index`;if(!result.complete)return await fs.mkdir(fragmentDir),await fs.write(`${fragmentDir}/${String(priorChunks).padStart(8,"0")}`,await chunkIndex.toObject({entries:chunkEntries})),{result,indexEntries};let index3=new GitIndex,durableEntries=0,collected=[];for(let chunk=0;chunk<priorChunks;chunk++){let fragmentPath=`${fragmentDir}/${String(chunk).padStart(8,"0")}`,fragmentBuffer=await fs.read(fragmentPath);if(fragmentBuffer===null)throw new InternalError(`Fresh checkout: missing index fragment ${chunk}`);let fragmentEntries=(await GitIndex.from(fragmentBuffer)).entries;durableEntries+=fragmentEntries.length,collected.push(...fragmentEntries)}if(durableEntries!==priorEntries)throw new InternalError(`Fresh checkout: index fragments contain ${durableEntries} entries, expected ${priorEntries}`);collected.push(...chunkEntries),collected.sort(comparePath);let previousEntry=null;for(let entry of collected){if(previousEntry!==null&&comparePath(previousEntry,entry)>=0)throw new InternalError(`Fresh checkout: duplicate index entry ${entry.path}`);index3._addEntry(entry),previousEntry=entry}return await fs.write(`${gitdir}/index`,await index3.toObject({entries:[...index3._entries.values()]})),priorChunks>0&&!deferFragmentCleanup&&await fs.rmdir(fragmentDir,{recursive:!0}),{result,indexEntries}}};function basename(path){let last=Math.max(path.lastIndexOf("/"),path.lastIndexOf("\\"));return last>-1&&(path=path.slice(last+1)),path}function dirname(path){let last=Math.max(path.lastIndexOf("/"),path.lastIndexOf("\\"));return last===-1?".":last===0?"/":path.slice(0,last)}function flatFileListToDirectoryStructure(files){let inodes=new Map,mkdir=function(name){if(!inodes.has(name)){let dir={type:"tree",fullpath:name,basename:basename(name),metadata:{},children:[]};inodes.set(name,dir),dir.parent=mkdir(dirname(name)),dir.parent&&dir.parent!==dir&&dir.parent.children.push(dir)}return inodes.get(name)},mkfile=function(name,metadata){if(!inodes.has(name)){let file={type:"blob",fullpath:name,basename:basename(name),metadata,parent:mkdir(dirname(name)),children:[]};file.parent&&file.parent.children.push(file),inodes.set(name,file)}return inodes.get(name)};mkdir(".");for(let file of files)mkfile(file.path,file);return inodes}function mode2type(mode){switch(mode){case 16384:return"tree";case 33188:return"blob";case 33261:return"blob";case 40960:return"blob";case 57344:return"commit"}throw new InternalError(`Unexpected GitTree entry mode: ${mode.toString(8)}`)}var GitWalkerIndex=class{constructor({fs,gitdir,cache}){this.treePromise=GitIndexManager.acquire({fs,gitdir,cache},async function(index3){return flatFileListToDirectoryStructure(index3.entries)});let walker=this;this.ConstructEntry=class{constructor(fullpath){this._fullpath=fullpath,this._type=!1,this._mode=!1,this._stat=!1,this._oid=!1}async type(){return walker.type(this)}async mode(){return walker.mode(this)}async stat(){return walker.stat(this)}async content(){return walker.content(this)}async oid(){return walker.oid(this)}}}async readdir(entry){let filepath=entry._fullpath,inode=(await this.treePromise).get(filepath);if(!inode||inode.type==="blob")return null;if(inode.type!=="tree")throw new Error(`ENOTDIR: not a directory, scandir '${filepath}'`);let names=inode.children.map(inode2=>inode2.fullpath);return names.sort(compareStrings),names}async type(entry){return entry._type===!1&&await entry.stat(),entry._type}async mode(entry){return entry._mode===!1&&await entry.stat(),entry._mode}async stat(entry){if(entry._stat===!1){let inode=(await this.treePromise).get(entry._fullpath);if(!inode)throw new Error(`ENOENT: no such file or directory, lstat '${entry._fullpath}'`);let stats=inode.type==="tree"?{}:normalizeStats(inode.metadata);entry._type=inode.type==="tree"?"tree":mode2type(stats.mode),entry._mode=stats.mode,inode.type==="tree"?entry._stat=void 0:entry._stat=stats}return entry._stat}async content(_entry){}async oid(entry){if(entry._oid===!1){let inode=(await this.treePromise).get(entry._fullpath);entry._oid=inode.metadata.oid}return entry._oid}},GitWalkSymbol=Symbol("GitWalkSymbol");function STAGE(){let o=Object.create(null);return Object.defineProperty(o,GitWalkSymbol,{value:function({fs,gitdir,cache}){return new GitWalkerIndex({fs,gitdir,cache})}}),Object.freeze(o),o}var NotFoundError=class _NotFoundError extends BaseError{constructor(what){super(`Could not find ${what}.`),this.code=this.name=_NotFoundError.code,this.data={what}}};NotFoundError.code="NotFoundError";var ObjectTypeError=class _ObjectTypeError extends BaseError{constructor(oid,actual,expected,filepath){super(`Object ${oid} ${filepath?`at ${filepath}`:""}was anticipated to be a ${expected} but it is a ${actual}.`),this.code=this.name=_ObjectTypeError.code,this.data={oid,actual,expected,filepath}}};ObjectTypeError.code="ObjectTypeError";var InvalidOidError=class _InvalidOidError extends BaseError{constructor(value){super(`Expected a 40-char hex object id but saw "${value}".`),this.code=this.name=_InvalidOidError.code,this.data={value}}};InvalidOidError.code="InvalidOidError";var NoRefspecError=class _NoRefspecError extends BaseError{constructor(remote){super(`Could not find a fetch refspec for remote "${remote}". Make sure the config file has an entry like the following:
4
+ [remote "${remote}"]
5
+ fetch = +refs/heads/*:refs/remotes/origin/*
6
+ `),this.code=this.name=_NoRefspecError.code,this.data={remote}}};NoRefspecError.code="NoRefspecError";var GitPackedRefs=class _GitPackedRefs{constructor(text){if(this.refs=new Map,this.parsedConfig=[],text){let key=null;this.parsedConfig=text.trim().split(`
7
+ `).map(line=>{if(/^\s*#/.test(line))return{line,comment:!0};let i=line.indexOf(" ");if(line.startsWith("^")){let value=line.slice(1);return this.refs.set(key+"^{}",value),{line,ref:key,peeled:value}}else{let value=line.slice(0,i);return key=line.slice(i+1),this.refs.set(key,value),{line,ref:key,oid:value}}})}return this}static from(text){return new _GitPackedRefs(text)}delete(ref){this.parsedConfig=this.parsedConfig.filter(entry=>entry.ref!==ref),this.refs.delete(ref)}toString(){return this.parsedConfig.map(({line})=>line).join(`
8
+ `)+`
9
+ `}},GitRefSpec=class _GitRefSpec{constructor({remotePath,localPath,force,matchPrefix}){Object.assign(this,{remotePath,localPath,force,matchPrefix})}static from(refspec){let[forceMatch,remotePath,remoteGlobMatch,localPath,localGlobMatch]=refspec.match(/^(\+?)(.*?)(\*?):(.*?)(\*?)$/).slice(1),force=forceMatch==="+",remoteIsGlob=remoteGlobMatch==="*";if(remoteIsGlob!==(localGlobMatch==="*"))throw new InternalError("Invalid refspec");return new _GitRefSpec({remotePath,localPath,force,matchPrefix:remoteIsGlob})}translate(remoteBranch){if(this.matchPrefix){if(remoteBranch.startsWith(this.remotePath))return this.localPath+remoteBranch.replace(this.remotePath,"")}else if(remoteBranch===this.remotePath)return this.localPath;return null}reverseTranslate(localBranch){if(this.matchPrefix){if(localBranch.startsWith(this.localPath))return this.remotePath+localBranch.replace(this.localPath,"")}else if(localBranch===this.localPath)return this.remotePath;return null}},GitRefSpecSet=class _GitRefSpecSet{constructor(rules=[]){this.rules=rules}static from(refspecs){let rules=[];for(let refspec of refspecs)rules.push(GitRefSpec.from(refspec));return new _GitRefSpecSet(rules)}add(refspec){let rule=GitRefSpec.from(refspec);this.rules.push(rule)}translate(remoteRefs){let result=[];for(let rule of this.rules)for(let remoteRef of remoteRefs){let localRef=rule.translate(remoteRef);localRef&&result.push([remoteRef,localRef])}return result}translateOne(remoteRef){let result=null;for(let rule of this.rules){let localRef=rule.translate(remoteRef);localRef&&(result=localRef)}return result}localNamespaces(){return this.rules.filter(rule=>rule.matchPrefix).map(rule=>rule.localPath.replace(/\/$/,""))}};function compareRefNames(a,b){let _a=a.replace(/\^\{\}$/,""),_b=b.replace(/\^\{\}$/,""),tmp=-(_a<_b)||+(_a>_b);return tmp===0?a.endsWith("^{}")?1:-1:tmp}function join2(...paths){if(paths.length===0)return".";let joined;for(let i=0;i<paths.length;i++){let arg=paths[i];if(arg&&typeof arg=="string"&&arg.length>0)if(joined===void 0)joined=arg;else{let cleanArg=arg.charCodeAt(0)===47?arg.slice(1):arg;cleanArg.length>0&&(joined+="/"+cleanArg)}}return joined===void 0?".":normalize(joined)}function normalize(path){if(path.length===0)return".";let isAbsolute=path.charCodeAt(0)===47,trailingSlash=path.charCodeAt(path.length-1)===47,segments=[],current="";for(let i=0;i<=path.length;i++)if((i<path.length?path.charCodeAt(i):47)===47){if(current.length===0)continue;if(current==="."){current="";continue}else if(current===".."){segments.length>0&&segments[segments.length-1]!==".."?segments.pop():isAbsolute||segments.push(".."),current="";continue}segments.push(current),current=""}else current+=path[i];let result=segments.join("/");return isAbsolute&&(result="/"+result),trailingSlash&&result.length>1&&(result+="/"),result.length===0?".":result}var num=val=>{if(typeof val=="number")return val;val=val.toLowerCase();let n=parseInt(val);return val.endsWith("k")&&(n*=1024),val.endsWith("m")&&(n*=1024*1024),val.endsWith("g")&&(n*=1024*1024*1024),n},bool=val=>{if(typeof val=="boolean")return val;if(val=val.trim().toLowerCase(),val==="true"||val==="yes"||val==="on")return!0;if(val==="false"||val==="no"||val==="off")return!1;throw Error(`Expected 'true', 'false', 'yes', 'no', 'on', or 'off', but got ${val}`)},schema={core:{filemode:bool,bare:bool,logallrefupdates:bool,symlinks:bool,ignorecase:bool,bigFileThreshold:num}},SECTION_LINE_REGEX=/^\[([A-Za-z0-9-.]+)(?: "(.*)")?\]$/,SECTION_REGEX=/^[A-Za-z0-9-.]+$/,VARIABLE_LINE_REGEX=/^([A-Za-z][A-Za-z-]*)(?: *= *(.*))?$/,VARIABLE_NAME_REGEX=/^[A-Za-z][A-Za-z-]*$/,VARIABLE_VALUE_COMMENT_REGEX=/^(.*?)( *[#;].*)$/,extractSectionLine=line=>{let matches=SECTION_LINE_REGEX.exec(line);if(matches!=null){let[section,subsection]=matches.slice(1);return[section,subsection]}return null},extractVariableLine=line=>{let matches=VARIABLE_LINE_REGEX.exec(line);if(matches!=null){let[name,rawValue="true"]=matches.slice(1),valueWithoutComments=removeComments(rawValue),valueWithoutQuotes=removeQuotes(valueWithoutComments);return[name,valueWithoutQuotes]}return null},removeComments=rawValue=>{let commentMatches=VARIABLE_VALUE_COMMENT_REGEX.exec(rawValue);if(commentMatches==null)return rawValue;let[valueWithoutComment,comment]=commentMatches.slice(1);return hasOddNumberOfQuotes(valueWithoutComment)&&hasOddNumberOfQuotes(comment)?`${valueWithoutComment}${comment}`:valueWithoutComment},hasOddNumberOfQuotes=text=>(text.match(/(?:^|[^\\])"/g)||[]).length%2!==0,removeQuotes=text=>text.split("").reduce((newText,c,idx,text2)=>{let isQuote=c==='"'&&text2[idx-1]!=="\\",isEscapeForQuote=c==="\\"&&text2[idx+1]==='"';return isQuote||isEscapeForQuote?newText:newText+c},""),lower=text=>text!=null?text.toLowerCase():null,getPath=(section,subsection,name)=>[lower(section),subsection,lower(name)].filter(a=>a!=null).join("."),normalizePath=path=>{let pathSegments=path.split("."),section=pathSegments.shift(),name=pathSegments.pop(),subsection=pathSegments.length?pathSegments.join("."):void 0;return{section,subsection,name,path:getPath(section,subsection,name),sectionPath:getPath(section,subsection,null),isSection:!!section}},findLastIndex=(array,callback)=>array.reduce((lastIndex,item,index3)=>callback(item)?index3:lastIndex,-1),GitConfig=class _GitConfig{constructor(text){let section=null,subsection=null;this.parsedConfig=text?text.replace(/\n$/,"").split(`
10
+ `).map(line=>{let name=null,value=null,trimmedLine=line.trim(),extractedSection=extractSectionLine(trimmedLine),isSection=extractedSection!=null;if(isSection)[section,subsection]=extractedSection;else{let extractedVariable=extractVariableLine(trimmedLine);extractedVariable!=null&&([name,value]=extractedVariable)}let path=getPath(section,subsection,name);return{line,isSection,section,subsection,name,value,path}}):[]}static from(text){return new _GitConfig(text)}async get(path,getall=!1){let normalizedPath=normalizePath(path).path,allValues=this.parsedConfig.filter(config=>config.path===normalizedPath).map(({section,name,value})=>{let fn=schema[section]&&schema[section][name];return fn?fn(value):value});return getall?allValues:allValues.pop()}async getall(path){return this.get(path,!0)}async getSubsections(section){return this.parsedConfig.filter(config=>config.isSection&&config.section===section).map(config=>config.subsection)}async deleteSection(section,subsection){this.parsedConfig=this.parsedConfig.filter(config=>!(config.section===section&&config.subsection===subsection))}async append(path,value){return this.set(path,value,!0)}async set(path,value,append=!1){let{section,subsection,name,path:normalizedPath,sectionPath,isSection}=normalizePath(path),configIndex=findLastIndex(this.parsedConfig,config=>config.path===normalizedPath);if(value==null)configIndex!==-1&&this.parsedConfig.splice(configIndex,1);else if(configIndex!==-1){let config=this.parsedConfig[configIndex],modifiedConfig=Object.assign({},config,{name,value,modified:!0});append?this.parsedConfig.splice(configIndex+1,0,modifiedConfig):this.parsedConfig[configIndex]=modifiedConfig}else{let sectionIndex=this.parsedConfig.findIndex(config=>config.path===sectionPath),newConfig={section,subsection,name,value,modified:!0,path:normalizedPath};if(SECTION_REGEX.test(section)&&VARIABLE_NAME_REGEX.test(name))if(sectionIndex>=0){let insertAt=findLastIndex(this.parsedConfig,config=>config.isSection&&config.path===sectionPath)+1;for(let i=insertAt;i<this.parsedConfig.length&&!this.parsedConfig[i].isSection;i++)this.parsedConfig[i].name!=null&&(insertAt=i+1);this.parsedConfig.splice(insertAt,0,newConfig)}else{let newSection={isSection,section,subsection,modified:!0,path:sectionPath};this.parsedConfig.push(newSection,newConfig)}}}toString(){return this.parsedConfig.map(({line,section,subsection,name,value,modified:modified2=!1})=>modified2?name!=null&&value!=null?typeof value=="string"&&/[#;]/.test(value)?` ${name} = "${value}"`:` ${name} = ${value}`:subsection!=null?`[${section} "${subsection}"]`:`[${section}]`:line).map(line=>`${line}
11
+ `).join("")}},GitConfigManager=class{static async get({fs,gitdir}){let text=await fs.read(`${gitdir}/config`,{encoding:"utf8"});return GitConfig.from(text)}static async save({fs,gitdir,config}){await fs.write(`${gitdir}/config`,config.toString(),{encoding:"utf8"})}},refpaths=ref=>[`${ref}`,`refs/${ref}`,`refs/tags/${ref}`,`refs/heads/${ref}`,`refs/remotes/${ref}`,`refs/remotes/${ref}/HEAD`],GIT_FILES=["config","description","index","shallow","commondir"],lock$1;async function acquireLock(ref,callback){return lock$1===void 0&&(lock$1=new AsyncLock),lock$1.run(ref,callback)}var GitRefManager=class _GitRefManager{static async updateRemoteRefs({fs,gitdir,remote,refs,symrefs,tags,refspecs=void 0,prune=!1,pruneTags=!1}){for(let value of refs.values())if(!value.match(/[0-9a-f]{40}/))throw new InvalidOidError(value);let config=await GitConfigManager.get({fs,gitdir});if(!refspecs){if(refspecs=await config.getall(`remote.${remote}.fetch`),refspecs.length===0)throw new NoRefspecError(remote);refspecs.unshift(`+HEAD:refs/remotes/${remote}/HEAD`)}let refspec=GitRefSpecSet.from(refspecs),actualRefsToWrite=new Map;if(pruneTags){let tags2=await _GitRefManager.listRefs({fs,gitdir,filepath:"refs/tags"});await _GitRefManager.deleteRefs({fs,gitdir,refs:tags2.map(tag2=>`refs/tags/${tag2}`)})}if(tags){for(let serverRef of refs.keys())if(serverRef.startsWith("refs/tags")&&!serverRef.endsWith("^{}")&&!await _GitRefManager.exists({fs,gitdir,ref:serverRef})){let oid=refs.get(serverRef);actualRefsToWrite.set(serverRef,oid)}}let refTranslations=refspec.translate([...refs.keys()]);for(let[serverRef,translatedRef]of refTranslations){let value=refs.get(serverRef);actualRefsToWrite.set(translatedRef,value)}let symrefTranslations=refspec.translate([...symrefs.keys()]);for(let[serverRef,translatedRef]of symrefTranslations){let value=symrefs.get(serverRef),symtarget=refspec.translateOne(value);symtarget&&actualRefsToWrite.set(translatedRef,`ref: ${symtarget}`)}let pruned=[];if(prune){for(let filepath of refspec.localNamespaces()){let refs2=(await _GitRefManager.listRefs({fs,gitdir,filepath})).map(file=>`${filepath}/${file}`);for(let ref of refs2)actualRefsToWrite.has(ref)||pruned.push(ref)}pruned.length>0&&await _GitRefManager.deleteRefs({fs,gitdir,refs:pruned})}for(let[key,value]of actualRefsToWrite)await acquireLock(key,async()=>fs.write(join2(gitdir,key),`${value.trim()}
12
+ `,"utf8"));return{pruned}}static async writeRef({fs,gitdir,ref,value}){if(!value.match(/[0-9a-f]{40}/))throw new InvalidOidError(value);await acquireLock(ref,async()=>fs.write(join2(gitdir,ref),`${value.trim()}
13
+ `,"utf8"))}static async writeSymbolicRef({fs,gitdir,ref,value}){await acquireLock(ref,async()=>fs.write(join2(gitdir,ref),`ref: ${value.trim()}
14
+ `,"utf8"))}static async deleteRef({fs,gitdir,ref}){return _GitRefManager.deleteRefs({fs,gitdir,refs:[ref]})}static async deleteRefs({fs,gitdir,refs}){await Promise.all(refs.map(ref=>fs.rm(join2(gitdir,ref))));let text=await acquireLock("packed-refs",async()=>fs.read(`${gitdir}/packed-refs`,{encoding:"utf8"})),packed=GitPackedRefs.from(text),beforeSize=packed.refs.size;for(let ref of refs)packed.refs.has(ref)&&packed.delete(ref);packed.refs.size<beforeSize&&(text=packed.toString(),await acquireLock("packed-refs",async()=>fs.write(`${gitdir}/packed-refs`,text,{encoding:"utf8"})))}static async resolve({fs,gitdir,ref,depth=void 0}){if(depth!==void 0&&(depth--,depth===-1))return ref;if(ref.startsWith("ref: "))return ref=ref.slice(5),_GitRefManager.resolve({fs,gitdir,ref,depth});if(ref.length===40&&/[0-9a-f]{40}/.test(ref))return ref;let packedMap=await _GitRefManager.packedRefs({fs,gitdir}),allpaths=refpaths(ref).filter(p=>!GIT_FILES.includes(p));for(let ref2 of allpaths){let sha=await acquireLock(ref2,async()=>await fs.read(`${gitdir}/${ref2}`,{encoding:"utf8"})||packedMap.get(ref2));if(sha)return _GitRefManager.resolve({fs,gitdir,ref:sha.trim(),depth})}throw new NotFoundError(ref)}static async exists({fs,gitdir,ref}){try{return await _GitRefManager.expand({fs,gitdir,ref}),!0}catch{return!1}}static async expand({fs,gitdir,ref}){if(ref.length===40&&/[0-9a-f]{40}/.test(ref))return ref;let packedMap=await _GitRefManager.packedRefs({fs,gitdir}),allpaths=refpaths(ref);for(let ref2 of allpaths)if(await acquireLock(ref2,async()=>fs.exists(`${gitdir}/${ref2}`))||packedMap.has(ref2))return ref2;throw new NotFoundError(ref)}static async expandAgainstMap({ref,map}){let allpaths=refpaths(ref);for(let ref2 of allpaths)if(await map.has(ref2))return ref2;throw new NotFoundError(ref)}static resolveAgainstMap({ref,fullref=ref,depth=void 0,map}){if(depth!==void 0&&(depth--,depth===-1))return{fullref,oid:ref};if(ref.startsWith("ref: "))return ref=ref.slice(5),_GitRefManager.resolveAgainstMap({ref,fullref,depth,map});if(ref.length===40&&/[0-9a-f]{40}/.test(ref))return{fullref,oid:ref};let allpaths=refpaths(ref);for(let ref2 of allpaths){let sha=map.get(ref2);if(sha)return _GitRefManager.resolveAgainstMap({ref:sha.trim(),fullref:ref2,depth,map})}throw new NotFoundError(ref)}static async packedRefs({fs,gitdir}){let text=await acquireLock("packed-refs",async()=>fs.read(`${gitdir}/packed-refs`,{encoding:"utf8"}));return GitPackedRefs.from(text).refs}static async listRefs({fs,gitdir,filepath}){let packedMap=_GitRefManager.packedRefs({fs,gitdir}),files=null;try{files=await fs.readdirDeep(`${gitdir}/${filepath}`),files=files.map(x=>x.replace(`${gitdir}/${filepath}/`,""))}catch{files=[]}for(let key of(await packedMap).keys())key.startsWith(filepath)&&(key=key.replace(filepath+"/",""),files.includes(key)||files.push(key));return files.sort(compareRefNames),files}static async listBranches({fs,gitdir,remote}){return remote?_GitRefManager.listRefs({fs,gitdir,filepath:`refs/remotes/${remote}`}):_GitRefManager.listRefs({fs,gitdir,filepath:"refs/heads"})}static async listTags({fs,gitdir}){return(await _GitRefManager.listRefs({fs,gitdir,filepath:"refs/tags"})).filter(x=>!x.endsWith("^{}"))}};function compareTreeEntryPath(a,b){return compareStrings(appendSlashIfDir(a),appendSlashIfDir(b))}function appendSlashIfDir(entry){return entry.mode==="040000"?entry.path+"/":entry.path}function mode2type$1(mode){switch(mode){case"040000":return"tree";case"100644":return"blob";case"100755":return"blob";case"120000":return"blob";case"160000":return"commit"}throw new InternalError(`Unexpected GitTree entry mode: ${mode}`)}function parseBuffer(buffer){let _entries=[],cursor=0;for(;cursor<buffer.length;){let space=buffer.indexOf(32,cursor);if(space===-1)throw new InternalError(`GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next space character.`);let nullchar=buffer.indexOf(0,cursor);if(nullchar===-1)throw new InternalError(`GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next null character.`);let mode=buffer.slice(cursor,space).toString("utf8");mode==="40000"&&(mode="040000");let type=mode2type$1(mode),path=buffer.slice(space+1,nullchar).toString("utf8");if(path.includes("\\")||path.includes("/"))throw new UnsafeFilepathError(path);let oid=buffer.slice(nullchar+1,nullchar+21).toString("hex");cursor=nullchar+21,_entries.push({mode,path,oid,type})}return _entries}function limitModeToAllowed(mode){if(typeof mode=="number"&&(mode=mode.toString(8)),mode.match(/^0?4.*/))return"040000";if(mode.match(/^1006.*/))return"100644";if(mode.match(/^1007.*/))return"100755";if(mode.match(/^120.*/))return"120000";if(mode.match(/^160.*/))return"160000";throw new InternalError(`Could not understand file mode: ${mode}`)}function nudgeIntoShape(entry){return!entry.oid&&entry.sha&&(entry.oid=entry.sha),entry.mode=limitModeToAllowed(entry.mode),entry.type||(entry.type=mode2type$1(entry.mode)),entry}var GitTree=class _GitTree{constructor(entries){if(Buffer.isBuffer(entries))this._entries=parseBuffer(entries);else if(Array.isArray(entries))this._entries=entries.map(nudgeIntoShape);else throw new InternalError("invalid type passed to GitTree constructor");this._entries.sort(comparePath)}static from(tree){return new _GitTree(tree)}render(){return this._entries.map(entry=>`${entry.mode} ${entry.type} ${entry.oid} ${entry.path}`).join(`
15
+ `)}toObject(){let entries=[...this._entries];return entries.sort(compareTreeEntryPath),Buffer.concat(entries.map(entry=>{let mode=Buffer.from(entry.mode.replace(/^0/,"")),space=Buffer.from(" "),path=Buffer.from(entry.path,"utf8"),nullchar=Buffer.from([0]),oid=Buffer.from(entry.oid,"hex");return Buffer.concat([mode,space,path,nullchar,oid])}))}entries(){return this._entries}*[Symbol.iterator](){for(let entry of this._entries)yield entry}},GitObject=class{static wrap({type,object}){let header=`${type} ${object.length}\0`,headerLen=header.length,totalLength=headerLen+object.length,wrappedObject=new Uint8Array(totalLength);for(let i=0;i<headerLen;i++)wrappedObject[i]=header.charCodeAt(i);return wrappedObject.set(object,headerLen),wrappedObject}static unwrap(buffer){let s=buffer.indexOf(32),i=buffer.indexOf(0),type=buffer.slice(0,s).toString("utf8"),length=buffer.slice(s+1,i).toString("utf8"),actualLength=buffer.length-(i+1);if(parseInt(length)!==actualLength)throw new InternalError(`Length mismatch: expected ${length} bytes but got ${actualLength} instead.`);return{type,object:Buffer.from(buffer.slice(i+1))}}};async function readObjectLoose({fs,gitdir,oid}){let source=`objects/${oid.slice(0,2)}/${oid.slice(2)}`,file=await fs.read(`${gitdir}/${source}`);return file?{object:file,format:"deflated",source}:null}function applyDelta(delta,source){let reader=new BufferCursor(delta),sourceSize=readVarIntLE(reader);if(sourceSize!==source.byteLength)throw new InternalError(`applyDelta expected source buffer to be ${sourceSize} bytes but the provided buffer was ${source.length} bytes`);let targetSize=readVarIntLE(reader),target;if(targetSize===0)return Buffer.alloc(0);let firstOp=readOp(reader,source);if(firstOp.byteLength===targetSize)target=firstOp;else{target=Buffer.alloc(targetSize);let writer=new BufferCursor(target);for(writer.copy(firstOp);!reader.eof();)writer.copy(readOp(reader,source));let tell=writer.tell();if(targetSize!==tell)throw new InternalError(`applyDelta expected target buffer to be ${targetSize} bytes but the resulting buffer was ${tell} bytes`)}return target}function readVarIntLE(reader){let result=0,shift=0,byte=null;do byte=reader.readUInt8(),result|=(byte&127)<<shift,shift+=7;while(byte&128);return result}function readCompactLE(reader,flags,size){let result=0,shift=0;for(;size--;)flags&1&&(result|=reader.readUInt8()<<shift),flags>>=1,shift+=8;return result}function readOp(reader,source){let byte=reader.readUInt8(),COPY=128,OFFS=15,SIZE=112;if(byte&COPY){let offset=readCompactLE(reader,byte&OFFS,4),size=readCompactLE(reader,(byte&SIZE)>>4,3);return size===0&&(size=65536),source.slice(offset,offset+size)}else return reader.slice(byte)}function fromValue(value){let queue=[value];return{next(){return Promise.resolve({done:queue.length===0,value:queue.pop()})},return(){return queue=[],{}},[Symbol.asyncIterator](){return this}}}function getIterator(iterable){return iterable[Symbol.asyncIterator]?iterable[Symbol.asyncIterator]():iterable[Symbol.iterator]?iterable[Symbol.iterator]():iterable.next?iterable:fromValue(iterable)}var StreamReader=class{constructor(stream){if(typeof Buffer>"u")throw new Error("Missing Buffer dependency");this.stream=getIterator(stream),this.buffer=null,this.cursor=0,this.undoCursor=0,this.started=!1,this._ended=!1,this._discardedBytes=0}eof(){return this._ended&&this.cursor===this.buffer.length}tell(){return this._discardedBytes+this.cursor}async byte(){if(!this.eof()&&(this.started||await this._init(),!(this.cursor===this.buffer.length&&(await this._loadnext(),this._ended))))return this._moveCursor(1),this.buffer[this.undoCursor]}async chunk(){if(!this.eof()&&(this.started||await this._init(),!(this.cursor===this.buffer.length&&(await this._loadnext(),this._ended))))return this._moveCursor(this.buffer.length),this.buffer.slice(this.undoCursor,this.cursor)}async read(n){if(!this.eof())return this.started||await this._init(),this.cursor+n>this.buffer.length&&(this._trim(),await this._accumulate(n)),this._moveCursor(n),this.buffer.slice(this.undoCursor,this.cursor)}async skip(n){this.eof()||(this.started||await this._init(),this.cursor+n>this.buffer.length&&(this._trim(),await this._accumulate(n)),this._moveCursor(n))}async undo(){this.cursor=this.undoCursor}async _next(){this.started=!0;let{done,value}=await this.stream.next();return done&&(this._ended=!0,!value)?Buffer.alloc(0):(value&&(value=Buffer.from(value)),value)}_trim(){this.buffer=this.buffer.slice(this.undoCursor),this.cursor-=this.undoCursor,this._discardedBytes+=this.undoCursor,this.undoCursor=0}_moveCursor(n){this.undoCursor=this.cursor,this.cursor+=n,this.cursor>this.buffer.length&&(this.cursor=this.buffer.length)}async _accumulate(n){if(this._ended)return;let buffers=[this.buffer];for(;this.cursor+n>lengthBuffers(buffers);){let nextbuffer=await this._next();if(this._ended)break;buffers.push(nextbuffer)}this.buffer=Buffer.concat(buffers)}async _loadnext(){this._discardedBytes+=this.buffer.length,this.undoCursor=0,this.cursor=0,this.buffer=await this._next()}async _init(){this.buffer=await this._next()}};function lengthBuffers(buffers){return buffers.reduce((acc,buffer)=>acc+buffer.length,0)}async function listpack(stream,onData){let reader=new StreamReader(stream),PACK=await reader.read(4);if(PACK=PACK.toString("utf8"),PACK!=="PACK")throw new InternalError(`Invalid PACK header '${PACK}'`);let version2=await reader.read(4);if(version2=version2.readUInt32BE(0),version2!==2)throw new InternalError(`Invalid packfile version: ${version2}`);let numObjects=await reader.read(4);if(numObjects=numObjects.readUInt32BE(0),!(numObjects<1))for(;!reader.eof()&&numObjects--;){let offset=reader.tell(),{type,length,ofs,reference}=await parseHeader(reader),inflator=new import_pako.default.Inflate;for(;!inflator.result;){let chunk=await reader.chunk();if(!chunk)break;if(inflator.push(chunk,!1),inflator.err)throw new InternalError(`Pako error: ${inflator.msg}`);if(inflator.result){if(inflator.result.length!==length)throw new InternalError("Inflated object size is different from that stated in packfile.");await reader.undo(),await reader.read(chunk.length-inflator.strm.avail_in);let end=reader.tell();await onData({data:inflator.result,type,num:numObjects,offset,end,reference,ofs})}}}}async function parseHeader(reader){let byte=await reader.byte(),type=byte>>4&7,length=byte&15;if(byte&128){let shift=4;do byte=await reader.byte(),length|=(byte&127)<<shift,shift+=7;while(byte&128)}let ofs,reference;if(type===6){let shift=0;ofs=0;let bytes=[];do byte=await reader.byte(),ofs|=(byte&127)<<shift,shift+=7,bytes.push(byte);while(byte&128);reference=Buffer.from(bytes)}return type===7&&(reference=await reader.read(20)),{type,length,ofs,reference}}var supportsDecompressionStream=!1;async function inflate(buffer){return supportsDecompressionStream===null&&(supportsDecompressionStream=testDecompressionStream()),supportsDecompressionStream?browserInflate(buffer):import_pako.default.inflate(buffer)}async function browserInflate(buffer){let ds=new DecompressionStream("deflate"),d=new Blob([buffer]).stream().pipeThrough(ds);return new Uint8Array(await new Response(d).arrayBuffer())}function testDecompressionStream(){try{if(new DecompressionStream("deflate"))return!0}catch{}return!1}function decodeVarInt(reader){let bytes=[],byte=0,multibyte=0;do{byte=reader.readUInt8();let lastSeven=byte&127;bytes.push(lastSeven),multibyte=byte&128}while(multibyte);return bytes.reduce((a,b)=>a+1<<7|b,-1)}function otherVarIntDecode(reader,startWith){let result=startWith,shift=4,byte=null;do byte=reader.readUInt8(),result|=(byte&127)<<shift,shift+=7;while(byte&128);return result}var GitPackIndex=class _GitPackIndex{constructor(stuff){Object.assign(this,stuff),this.offsetCache={}}static async fromIdx({idx,getExternalRefDelta}){let reader=new BufferCursor(idx);if(reader.slice(4).toString("hex")!=="ff744f63")return;let version2=reader.readUInt32BE();if(version2!==2)throw new InternalError(`Unable to read version ${version2} packfile IDX. (Only version 2 supported)`);if(idx.byteLength>2048*1024*1024)throw new InternalError("To keep implementation simple, I haven't implemented the layer 5 feature needed to support packfiles > 2GB in size.");reader.seek(reader.tell()+1020);let size=reader.readUInt32BE(),hashes=[];for(let i=0;i<size;i++){let hash=reader.slice(20).toString("hex");hashes[i]=hash}reader.seek(reader.tell()+4*size);let offsets=new Map;for(let i=0;i<size;i++)offsets.set(hashes[i],reader.readUInt32BE());let packfileSha=reader.slice(20).toString("hex");return new _GitPackIndex({hashes,crcs:{},offsets,packfileSha,getExternalRefDelta})}static async fromPack({pack,getExternalRefDelta,onProgress}){let listpackTypes={1:"commit",2:"tree",3:"blob",4:"tag",6:"ofs-delta",7:"ref-delta"},offsetToObject={},packfileSha=pack.slice(-20).toString("hex"),hashes=[],crcs={},offsets=new Map,totalObjectCount=null,lastPercent=null;await listpack([pack],async({data,type,reference,offset,num:num2})=>{totalObjectCount===null&&(totalObjectCount=num2);let percent=Math.floor((totalObjectCount-num2)*100/totalObjectCount);if(percent!==lastPercent&&onProgress&&await onProgress({phase:"Receiving objects",loaded:totalObjectCount-num2,total:totalObjectCount}),lastPercent=percent,type=listpackTypes[type],["commit","tree","blob","tag"].includes(type)){let oid=await shasum(GitObject.wrap({type,object:data}));offsetToObject[offset]={type,offset,oid}}else type==="ofs-delta"?offsetToObject[offset]={type,offset}:type==="ref-delta"&&(offsetToObject[offset]={type,offset})});let offsetArray=Object.keys(offsetToObject).map(Number);for(let[i,start]of offsetArray.entries()){let end=i+1===offsetArray.length?pack.byteLength-20:offsetArray[i+1],o=offsetToObject[start],crc=import_crc_32.default.buf(pack.slice(start,end))>>>0;o.end=end,o.crc=crc}let p=new _GitPackIndex({pack:Promise.resolve(pack),packfileSha,crcs,hashes,offsets,getExternalRefDelta});lastPercent=null;let count=0;for(let offset in offsetToObject){offset=Number(offset);let percent=Math.floor(count*100/totalObjectCount);percent!==lastPercent&&onProgress&&await onProgress({phase:"Resolving deltas",loaded:count,total:totalObjectCount}),count++,lastPercent=percent;let o=offsetToObject[offset];if(o.oid){hashes.push(o.oid),offsets.set(o.oid,offset),crcs[o.oid]=o.crc;continue}try{let{type,object}=await p.readSlice({start:offset}),oid=await shasum(GitObject.wrap({type,object}));o.oid=oid,hashes.push(oid),offsets.set(oid,offset),crcs[oid]=o.crc}catch{continue}}return hashes.sort(),p}async toBuffer(){let buffers=[],write=(str,encoding)=>{buffers.push(Buffer.from(str,encoding))};write("ff744f63","hex"),write("00000002","hex");let fanoutBuffer=new BufferCursor(Buffer.alloc(256*4)),fanout=new Uint32Array(256);for(let hash of this.hashes)fanout[parseInt(hash.slice(0,2),16)]++;let count=0;for(let i=0;i<256;i++)count+=fanout[i],fanoutBuffer.writeUInt32BE(count);buffers.push(fanoutBuffer.buffer);for(let hash of this.hashes)write(hash,"hex");let crcsBuffer=new BufferCursor(Buffer.alloc(this.hashes.length*4));for(let hash of this.hashes)crcsBuffer.writeUInt32BE(this.crcs[hash]);buffers.push(crcsBuffer.buffer);let offsetsBuffer=new BufferCursor(Buffer.alloc(this.hashes.length*4));for(let hash of this.hashes)offsetsBuffer.writeUInt32BE(this.offsets.get(hash));buffers.push(offsetsBuffer.buffer),write(this.packfileSha,"hex");let totalBuffer=Buffer.concat(buffers),sha=await shasum(totalBuffer),shaBuffer=Buffer.alloc(20);return shaBuffer.write(sha,"hex"),Buffer.concat([totalBuffer,shaBuffer])}async load({pack}){this.pack=pack}async unload(){this.pack=null}async read({oid,readContext={depth:0}}){if(!this.offsets.get(oid)){if(this.getExternalRefDelta)return this.getExternalRefDelta(oid);throw new InternalError(`Could not read object ${oid} from packfile`)}let start=this.offsets.get(oid);return this.readSlice({start,readContext})}async readSlice({start,readContext={depth:0}}){if(this.offsetCache[start])return Object.assign({},this.offsetCache[start]);readContext.depth++;try{let types2={16:"commit",32:"tree",48:"blob",64:"tag",96:"ofs_delta",112:"ref_delta"};if(!this.pack)throw new InternalError("Tried to read from a GitPackIndex with no packfile loaded into memory");let raw=(await this.pack).slice(start),reader=new BufferCursor(raw),byte=reader.readUInt8(),btype=byte&112,type=types2[btype];if(type===void 0)throw new InternalError("Unrecognized type: 0b"+btype.toString(2));let lastFour=byte&15,length=lastFour;byte&128&&(length=otherVarIntDecode(reader,lastFour));let base=null,object=null;if(type==="ofs_delta"){let offset=decodeVarInt(reader),baseOffset=start-offset;({object:base,type}=await this.readSlice({start:baseOffset,readContext}))}if(type==="ref_delta"){let oid=reader.slice(20).toString("hex");({object:base,type}=await this.read({oid,readContext}))}let buffer=raw.slice(reader.tell());if(object=Buffer.from(await inflate(buffer)),object.byteLength!==length)throw new InternalError(`Packfile told us object would have length ${length} but it had length ${object.byteLength}`);return base&&(object=Buffer.from(applyDelta(object,base))),readContext.depth>3&&(this.offsetCache[start]={type,object}),{type,format:"content",object}}finally{readContext.depth--}}},PackfileCache=Symbol("PackfileCache"),packIndexCacheKey=(gitdir,filename)=>`${gitdir}/objects/pack/${filename}`;function seedPackfileCache({cache,gitdir,packfileSha,index:index3}){cache[PackfileCache]||(cache[PackfileCache]=new Map);let filename=packIndexCacheKey(gitdir,`pack-${packfileSha}.idx`);cache[PackfileCache].set(filename,Promise.resolve(index3))}async function loadPackIndex({fs,filename,getExternalRefDelta,emitter,emitterPrefix}){let idx=await fs.read(filename);return GitPackIndex.fromIdx({idx,getExternalRefDelta})}function readPackIndex({fs,cache,filename,getExternalRefDelta,emitter,emitterPrefix}){cache[PackfileCache]||(cache[PackfileCache]=new Map);let p=cache[PackfileCache].get(filename);return p||(p=loadPackIndex({fs,filename,getExternalRefDelta,emitter,emitterPrefix}),cache[PackfileCache].set(filename,p)),p}async function readObjectPacked({fs,cache,gitdir,oid,format="content",getExternalRefDelta}){let list=await fs.readdir(join2(gitdir,"objects/pack"));list=list.filter(x=>x.endsWith(".idx"));for(let filename of list){let indexFile=packIndexCacheKey(gitdir,filename),p=await readPackIndex({fs,cache,filename:indexFile,getExternalRefDelta});if(p.error)throw new InternalError(p.error);if(p.offsets.has(oid)){if(!p.pack){let packFile=indexFile.replace(/idx$/,"pack");p.pack=fs.read(packFile)}let result=await p.read({oid,getExternalRefDelta});return result.format="content",result.source=`objects/pack/${filename.replace(/idx$/,"pack")}`,result}}return null}async function _readObject({fs,cache,gitdir,oid,format="content"}){let getExternalRefDelta=oid2=>_readObject({fs,cache,gitdir,oid:oid2}),result;if(oid==="4b825dc642cb6eb9a060e54bf8d69288fbee4904"&&(result={format:"wrapped",object:Buffer.from("tree 0\0")}),result||(result=await readObjectLoose({fs,gitdir,oid})),!result){if(result=await readObjectPacked({fs,cache,gitdir,oid,getExternalRefDelta}),!result)throw new NotFoundError(oid);return result}if(format==="deflated"||(result.format==="deflated"&&(result.object=Buffer.from(await inflate(result.object)),result.format="wrapped"),format==="wrapped"))return result;let sha=await shasum(result.object);if(sha!==oid)throw new InternalError(`SHA check failed! Expected ${oid}, computed ${sha}`);let{object,type}=GitObject.unwrap(result.object);if(result.type=type,result.object=object,result.format="content",format==="content")return result;throw new InternalError(`invalid requested format "${format}"`)}var AlreadyExistsError=class _AlreadyExistsError extends BaseError{constructor(noun,where,canForce=!0){super(`Failed to create ${noun} at ${where} because it already exists.${canForce?` (Hint: use 'force: true' parameter to overwrite existing ${noun}.)`:""}`),this.code=this.name=_AlreadyExistsError.code,this.data={noun,where,canForce}}};AlreadyExistsError.code="AlreadyExistsError";var AmbiguousError=class _AmbiguousError extends BaseError{constructor(nouns,short,matches){super(`Found multiple ${nouns} matching "${short}" (${matches.join(", ")}). Use a longer abbreviation length to disambiguate them.`),this.code=this.name=_AmbiguousError.code,this.data={nouns,short,matches}}};AmbiguousError.code="AmbiguousError";var CheckoutConflictError=class _CheckoutConflictError extends BaseError{constructor(filepaths,refusal){super(refusal?checkoutRefusalMessage(refusal):`Your local changes to the following files would be overwritten by checkout: ${filepaths.join(", ")}`),this.code=this.name=_CheckoutConflictError.code,this.data={filepaths,...refusal}}};function checkoutRefusalMessage({local,directories,untracked,operation}){let list=paths=>paths.map(path=>` ${path}
16
+ `).join(""),action=operation==="merge"?"merge":"switch branches",text="";return local.length>0&&(text+=`error: Your local changes to the following files would be overwritten by ${operation}:
17
+ ${list(local)}Please commit your changes or stash them before you ${action}.
18
+ `),directories.length>0&&(text+=`error: Updating the following directories would lose untracked files in them:
19
+ ${list(directories)}
20
+ `),untracked.length>0&&(text+=`error: The following untracked working tree files would be overwritten by ${operation}:
21
+ ${list(untracked)}Please move or remove them before you ${action}.
22
+ `),`${text}Aborting`}CheckoutConflictError.code="CheckoutConflictError";var CommitNotFetchedError=class _CommitNotFetchedError extends BaseError{constructor(ref,oid){super(`Failed to checkout "${ref}" because commit ${oid} is not available locally. Do a git fetch to make the branch available locally.`),this.code=this.name=_CommitNotFetchedError.code,this.data={ref,oid}}};CommitNotFetchedError.code="CommitNotFetchedError";var EmptyServerResponseError=class _EmptyServerResponseError extends BaseError{constructor(){super("Empty response from git server."),this.code=this.name=_EmptyServerResponseError.code,this.data={}}};EmptyServerResponseError.code="EmptyServerResponseError";var FastForwardError=class _FastForwardError extends BaseError{constructor(){super("A simple fast-forward merge was not possible."),this.code=this.name=_FastForwardError.code,this.data={}}};FastForwardError.code="FastForwardError";var GitPushError=class _GitPushError extends BaseError{constructor(prettyDetails,result){super(`One or more branches were not updated: ${prettyDetails}`),this.code=this.name=_GitPushError.code,this.data={prettyDetails,result}}};GitPushError.code="GitPushError";var HttpError=class _HttpError extends BaseError{constructor(statusCode,statusMessage,response){super(`HTTP Error: ${statusCode} ${statusMessage}`),this.code=this.name=_HttpError.code,this.data={statusCode,statusMessage,response}}};HttpError.code="HttpError";var InvalidFilepathError=class _InvalidFilepathError extends BaseError{constructor(reason){let message="invalid filepath";reason==="leading-slash"||reason==="trailing-slash"?message='"filepath" parameter should not include leading or trailing directory separators because these can cause problems on some platforms.':reason==="directory"&&(message='"filepath" should not be a directory.'),super(message),this.code=this.name=_InvalidFilepathError.code,this.data={reason}}};InvalidFilepathError.code="InvalidFilepathError";var InvalidRefNameError=class _InvalidRefNameError extends BaseError{constructor(ref,suggestion){super(`"${ref}" would be an invalid git reference. (Hint: a valid alternative would be "${suggestion}".)`),this.code=this.name=_InvalidRefNameError.code,this.data={ref,suggestion}}};InvalidRefNameError.code="InvalidRefNameError";var MaxDepthError=class _MaxDepthError extends BaseError{constructor(depth){super(`Maximum search depth of ${depth} exceeded.`),this.code=this.name=_MaxDepthError.code,this.data={depth}}};MaxDepthError.code="MaxDepthError";var MergeNotSupportedError=class _MergeNotSupportedError extends BaseError{constructor(){super("Merges with conflicts are not supported yet."),this.code=this.name=_MergeNotSupportedError.code,this.data={}}};MergeNotSupportedError.code="MergeNotSupportedError";var MergeConflictError=class _MergeConflictError extends BaseError{constructor(filepaths,bothModified,deleteByUs,deleteByTheirs){super(`Automatic merge failed with one or more merge conflicts in the following files: ${filepaths.toString()}. Fix conflicts then commit the result.`),this.code=this.name=_MergeConflictError.code,this.data={filepaths,bothModified,deleteByUs,deleteByTheirs}}};MergeConflictError.code="MergeConflictError";var MissingNameError=class _MissingNameError extends BaseError{constructor(role){super(`No name was provided for ${role} in the argument or in the .git/config file.`),this.code=this.name=_MissingNameError.code,this.data={role}}};MissingNameError.code="MissingNameError";var MissingParameterError=class _MissingParameterError extends BaseError{constructor(parameter){super(`The function requires a "${parameter}" parameter but none was provided.`),this.code=this.name=_MissingParameterError.code,this.data={parameter}}};MissingParameterError.code="MissingParameterError";var MultipleGitError=class _MultipleGitError extends BaseError{constructor(errors){super('There are multiple errors that were thrown by the method. Please refer to the "errors" property to see more'),this.code=this.name=_MultipleGitError.code,this.data={errors},this.errors=errors}};MultipleGitError.code="MultipleGitError";var ParseError=class _ParseError extends BaseError{constructor(expected,actual){super(`Expected "${expected}" but received "${actual}".`),this.code=this.name=_ParseError.code,this.data={expected,actual}}};ParseError.code="ParseError";var PushRejectedError=class _PushRejectedError extends BaseError{constructor(reason){let message="";reason==="not-fast-forward"?message=" because it was not a simple fast-forward":reason==="tag-exists"&&(message=" because tag already exists"),super(`Push rejected${message}. Use "force: true" to override.`),this.code=this.name=_PushRejectedError.code,this.data={reason}}};PushRejectedError.code="PushRejectedError";var RemoteCapabilityError=class _RemoteCapabilityError extends BaseError{constructor(capability,parameter){super(`Remote does not support the "${capability}" so the "${parameter}" parameter cannot be used.`),this.code=this.name=_RemoteCapabilityError.code,this.data={capability,parameter}}};RemoteCapabilityError.code="RemoteCapabilityError";var SmartHttpError=class _SmartHttpError extends BaseError{constructor(preview,response){super(`Remote did not reply using the "smart" HTTP protocol. Expected "001e# service=git-upload-pack" but received: ${preview}`),this.code=this.name=_SmartHttpError.code,this.data={preview,response}}};SmartHttpError.code="SmartHttpError";var UnknownTransportError=class _UnknownTransportError extends BaseError{constructor(url,transport,suggestion){super(`Git remote "${url}" uses an unrecognized transport protocol: "${transport}"`),this.code=this.name=_UnknownTransportError.code,this.data={url,transport,suggestion}}};UnknownTransportError.code="UnknownTransportError";var UrlParseError=class _UrlParseError extends BaseError{constructor(url){super(`Cannot parse remote URL: "${url}"`),this.code=this.name=_UrlParseError.code,this.data={url}}};UrlParseError.code="UrlParseError";var UserCanceledError=class _UserCanceledError extends BaseError{constructor(){super("The operation was canceled."),this.code=this.name=_UserCanceledError.code,this.data={}}};UserCanceledError.code="UserCanceledError";var IndexResetError=class _IndexResetError extends BaseError{constructor(filepath){super(`Could not merge index: Entry for '${filepath}' is not up to date. Either reset the index entry to HEAD, or stage your unstaged changes.`),this.code=this.name=_IndexResetError.code,this.data={filepath}}};IndexResetError.code="IndexResetError";var NoCommitError=class _NoCommitError extends BaseError{constructor(ref){super(`"${ref}" does not point to any commit. You're maybe working on a repository with no commits yet. `),this.code=this.name=_NoCommitError.code,this.data={ref}}};NoCommitError.code="NoCommitError";var Errors=Object.freeze({__proto__:null,AlreadyExistsError,AmbiguousError,CheckoutConflictError,CommitNotFetchedError,EmptyServerResponseError,FastForwardError,GitPushError,HttpError,InternalError,InvalidFilepathError,InvalidOidError,InvalidRefNameError,MaxDepthError,MergeNotSupportedError,MergeConflictError,MissingNameError,MissingParameterError,MultipleGitError,NoRefspecError,NotFoundError,ObjectTypeError,ParseError,PushRejectedError,RemoteCapabilityError,SmartHttpError,UnknownTransportError,UnsafeFilepathError,UrlParseError,UserCanceledError,UnmergedPathsError,IndexResetError,NoCommitError});function formatAuthor({name,email,timestamp,timezoneOffset}){return timezoneOffset=formatTimezoneOffset(timezoneOffset),`${name} <${email}> ${timestamp} ${timezoneOffset}`}function formatTimezoneOffset(minutes){let sign=simpleSign(negateExceptForZero(minutes));minutes=Math.abs(minutes);let hours=Math.floor(minutes/60);minutes-=hours*60;let strHours=String(hours),strMinutes=String(minutes);return strHours.length<2&&(strHours="0"+strHours),strMinutes.length<2&&(strMinutes="0"+strMinutes),(sign===-1?"-":"+")+strHours+strMinutes}function simpleSign(n){return Math.sign(n)||(Object.is(n,-0)?-1:1)}function negateExceptForZero(n){return n===0?n:-n}function normalizeNewlines(str){return str=str.replace(/\r/g,""),str=str.replace(/^\n+/,""),str=str.replace(/\n+$/,"")+`
23
+ `,str}function parseAuthor(author){let[,name,email,timestamp,offset]=author.match(/^(.*) <(.*)> (.*) (.*)$/);return{name,email,timestamp:Number(timestamp),timezoneOffset:parseTimezoneOffset(offset)}}function parseTimezoneOffset(offset){let[,sign,hours,minutes]=offset.match(/(\+|-)(\d\d)(\d\d)/);return minutes=(sign==="+"?1:-1)*(Number(hours)*60+Number(minutes)),negateExceptForZero$1(minutes)}function negateExceptForZero$1(n){return n===0?n:-n}var GitAnnotatedTag=class _GitAnnotatedTag{constructor(tag2){if(typeof tag2=="string")this._tag=tag2;else if(Buffer.isBuffer(tag2))this._tag=tag2.toString("utf8");else if(typeof tag2=="object")this._tag=_GitAnnotatedTag.render(tag2);else throw new InternalError("invalid type passed to GitAnnotatedTag constructor")}static from(tag2){return new _GitAnnotatedTag(tag2)}static render(obj){return`object ${obj.object}
24
+ type ${obj.type}
25
+ tag ${obj.tag}
26
+ tagger ${formatAuthor(obj.tagger)}
27
+
28
+ ${obj.message}
29
+ ${obj.gpgsig?obj.gpgsig:""}`}justHeaders(){return this._tag.slice(0,this._tag.indexOf(`
30
+
31
+ `))}message(){let tag2=this.withoutSignature();return tag2.slice(tag2.indexOf(`
32
+
33
+ `)+2)}parse(){return Object.assign(this.headers(),{message:this.message(),gpgsig:this.gpgsig()})}render(){return this._tag}headers(){let headers=this.justHeaders().split(`
34
+ `),hs=[];for(let h of headers)h[0]===" "?hs[hs.length-1]+=`
35
+ `+h.slice(1):hs.push(h);let obj={};for(let h of hs){let key=h.slice(0,h.indexOf(" ")),value=h.slice(h.indexOf(" ")+1);Array.isArray(obj[key])?obj[key].push(value):obj[key]=value}return obj.tagger&&(obj.tagger=parseAuthor(obj.tagger)),obj.committer&&(obj.committer=parseAuthor(obj.committer)),obj}withoutSignature(){let tag2=normalizeNewlines(this._tag);return tag2.indexOf(`
36
+ -----BEGIN PGP SIGNATURE-----`)===-1?tag2:tag2.slice(0,tag2.lastIndexOf(`
37
+ -----BEGIN PGP SIGNATURE-----`))}gpgsig(){if(this._tag.indexOf(`
38
+ -----BEGIN PGP SIGNATURE-----`)===-1)return;let signature=this._tag.slice(this._tag.indexOf("-----BEGIN PGP SIGNATURE-----"),this._tag.indexOf("-----END PGP SIGNATURE-----")+27);return normalizeNewlines(signature)}payload(){return this.withoutSignature()+`
39
+ `}toObject(){return Buffer.from(this._tag,"utf8")}static async sign(tag2,sign,secretKey){let payload=tag2.payload(),{signature}=await sign({payload,secretKey});signature=normalizeNewlines(signature);let signedTag=payload+signature;return _GitAnnotatedTag.from(signedTag)}};function indent(str){return str.trim().split(`
40
+ `).map(x=>" "+x).join(`
41
+ `)+`
42
+ `}function outdent(str){return str.split(`
43
+ `).map(x=>x.replace(/^ /,"")).join(`
44
+ `)}var GitCommit=class _GitCommit{constructor(commit2){if(typeof commit2=="string")this._commit=commit2;else if(Buffer.isBuffer(commit2))this._commit=commit2.toString("utf8");else if(typeof commit2=="object")this._commit=_GitCommit.render(commit2);else throw new InternalError("invalid type passed to GitCommit constructor")}static fromPayloadSignature({payload,signature}){let headers=_GitCommit.justHeaders(payload),message=_GitCommit.justMessage(payload),commit2=normalizeNewlines(headers+`
45
+ gpgsig`+indent(signature)+`
46
+ `+message);return new _GitCommit(commit2)}static from(commit2){return new _GitCommit(commit2)}toObject(){return Buffer.from(this._commit,"utf8")}headers(){return this.parseHeaders()}message(){return _GitCommit.justMessage(this._commit)}parse(){return Object.assign({message:this.message()},this.headers())}static justMessage(commit2){return normalizeNewlines(commit2.slice(commit2.indexOf(`
47
+
48
+ `)+2))}static justHeaders(commit2){return commit2.slice(0,commit2.indexOf(`
49
+
50
+ `))}parseHeaders(){let headers=_GitCommit.justHeaders(this._commit).split(`
51
+ `),hs=[];for(let h of headers)h[0]===" "?hs[hs.length-1]+=`
52
+ `+h.slice(1):hs.push(h);let obj={parent:[]};for(let h of hs){let key=h.slice(0,h.indexOf(" ")),value=h.slice(h.indexOf(" ")+1);Array.isArray(obj[key])?obj[key].push(value):obj[key]=value}return obj.author&&(obj.author=parseAuthor(obj.author)),obj.committer&&(obj.committer=parseAuthor(obj.committer)),obj}static renderHeaders(obj){let headers="";if(obj.tree?headers+=`tree ${obj.tree}
53
+ `:headers+=`tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
54
+ `,obj.parent){if(obj.parent.length===void 0)throw new InternalError("commit 'parent' property should be an array");for(let p of obj.parent)headers+=`parent ${p}
55
+ `}let author=obj.author;headers+=`author ${formatAuthor(author)}
56
+ `;let committer=obj.committer||obj.author;return headers+=`committer ${formatAuthor(committer)}
57
+ `,obj.gpgsig&&(headers+="gpgsig"+indent(obj.gpgsig)),headers}static render(obj){return _GitCommit.renderHeaders(obj)+`
58
+ `+normalizeNewlines(obj.message)}render(){return this._commit}withoutSignature(){let commit2=normalizeNewlines(this._commit);if(commit2.indexOf(`
59
+ gpgsig`)===-1)return commit2;let headers=commit2.slice(0,commit2.indexOf(`
60
+ gpgsig`)),message=commit2.slice(commit2.indexOf(`-----END PGP SIGNATURE-----
61
+ `)+28);return normalizeNewlines(headers+`
62
+ `+message)}isolateSignature(){let signature=this._commit.slice(this._commit.indexOf("-----BEGIN PGP SIGNATURE-----"),this._commit.indexOf("-----END PGP SIGNATURE-----")+27);return outdent(signature)}static async sign(commit2,sign,secretKey){let payload=commit2.withoutSignature(),message=_GitCommit.justMessage(commit2._commit),{signature}=await sign({payload,secretKey});signature=normalizeNewlines(signature);let signedCommit=_GitCommit.justHeaders(commit2._commit)+`
63
+ gpgsig`+indent(signature)+`
64
+ `+message;return _GitCommit.from(signedCommit)}};async function resolveTree({fs,cache,gitdir,oid}){if(oid==="4b825dc642cb6eb9a060e54bf8d69288fbee4904")return{tree:GitTree.from([]),oid};let{type,object}=await _readObject({fs,cache,gitdir,oid});if(type==="tag")return oid=GitAnnotatedTag.from(object).parse().object,resolveTree({fs,cache,gitdir,oid});if(type==="commit")return oid=GitCommit.from(object).parse().tree,resolveTree({fs,cache,gitdir,oid});if(type!=="tree")throw new ObjectTypeError(oid,type,"tree");return{tree:GitTree.from(object),oid}}var GitWalkerRepo=class{constructor({fs,gitdir,ref,cache}){this.fs=fs,this.cache=cache,this.gitdir=gitdir,this.mapPromise=(async()=>{let map=new Map,oid;try{oid=await GitRefManager.resolve({fs,gitdir,ref})}catch(e){e instanceof NotFoundError&&(oid="4b825dc642cb6eb9a060e54bf8d69288fbee4904")}let tree=await resolveTree({fs,cache:this.cache,gitdir,oid});return tree.type="tree",tree.mode="40000",map.set(".",tree),map})();let walker=this;this.ConstructEntry=class{constructor(fullpath){this._fullpath=fullpath,this._type=!1,this._mode=!1,this._stat=!1,this._content=!1,this._oid=!1}async type(){return walker.type(this)}async mode(){return walker.mode(this)}async stat(){return walker.stat(this)}async content(){return walker.content(this)}async oid(){return walker.oid(this)}}}async readdir(entry){let filepath=entry._fullpath,{fs,cache,gitdir}=this,map=await this.mapPromise,obj=map.get(filepath);if(!obj)throw new Error(`No obj for ${filepath}`);let oid=obj.oid;if(!oid)throw new Error(`No oid for obj ${JSON.stringify(obj)}`);if(obj.type!=="tree")return null;let{type,object}=await _readObject({fs,cache,gitdir,oid});if(type!==obj.type)throw new ObjectTypeError(oid,type,obj.type);let tree=GitTree.from(object);for(let entry2 of tree)map.set(join2(filepath,entry2.path),entry2);return tree.entries().map(entry2=>join2(filepath,entry2.path))}async type(entry){if(entry._type===!1){let map=await this.mapPromise,{type}=map.get(entry._fullpath);entry._type=type}return entry._type}async mode(entry){if(entry._mode===!1){let map=await this.mapPromise,{mode}=map.get(entry._fullpath);entry._mode=normalizeMode(parseInt(mode,8))}return entry._mode}async stat(_entry){}async content(entry){if(entry._content===!1){let map=await this.mapPromise,{fs,cache,gitdir}=this,oid=map.get(entry._fullpath).oid,{type,object}=await _readObject({fs,cache,gitdir,oid});type!=="blob"?entry._content=void 0:entry._content=new Uint8Array(object)}return entry._content}async oid(entry){if(entry._oid===!1){let obj=(await this.mapPromise).get(entry._fullpath);entry._oid=obj.oid}return entry._oid}};function TREE({ref="HEAD"}={}){let o=Object.create(null);return Object.defineProperty(o,GitWalkSymbol,{value:function({fs,gitdir,cache}){return new GitWalkerRepo({fs,gitdir,ref,cache})}}),Object.freeze(o),o}function applyRefresh(index3,refreshed){for(let{filepath,stats,oid}of refreshed){let stage2=index3.entriesMap.get(filepath);stage2&&stage2.oid===oid&&index3.insert({filepath,stats:{...stats,mode:stage2.mode},oid})}}var GitWalkerFs=class{constructor({fs,dir,gitdir,cache}){this.fs=fs,this.cache=cache,this.dir=dir,this.gitdir=gitdir,this.config=null,this._refreshed=[];let walker=this;this.ConstructEntry=class{constructor(fullpath){this._fullpath=fullpath,this._type=!1,this._mode=!1,this._stat=!1,this._content=!1,this._oid=!1}async type(){return walker.type(this)}async mode(){return walker.mode(this)}async stat(){return walker.stat(this)}async content(){return walker.content(this)}async oid(){return walker.oid(this)}}}async readdir(entry){if(await entry.type()!=="tree")return null;let filepath=entry._fullpath,{fs,dir}=this,names=await fs.readdir(join2(dir,filepath));return names===null?null:names.filter(name=>name!==".git").map(name=>join2(filepath,name))}async type(entry){return entry._type===!1&&await entry.stat(),entry._type}async mode(entry){return entry._mode===!1&&await entry.stat(),entry._mode}async stat(entry){if(entry._stat===!1){let{fs,dir}=this,stat=await fs.lstat(`${dir}/${entry._fullpath}`);if(!stat)throw new Error(`ENOENT: no such file or directory, lstat '${entry._fullpath}'`);let type=stat.isDirectory()?"tree":"blob";type==="blob"&&!stat.isFile()&&!stat.isSymbolicLink()&&(type="special"),entry._type=type,stat=normalizeStats(stat),entry._mode=stat.mode,stat.size===-1&&entry._actualSize&&(stat.size=entry._actualSize),entry._stat=stat}return entry._stat}async content(entry){if(entry._content===!1){let{fs,dir,gitdir}=this;if(await entry.type()==="tree")entry._content=void 0;else if(await entry.mode()===40960)entry._content=new Uint8Array(await fs.readlink(`${dir}/${entry._fullpath}`));else{let autocrlf=await(await this._getGitConfig(fs,gitdir)).get("core.autocrlf"),content=await fs.read(`${dir}/${entry._fullpath}`,{autocrlf});entry._actualSize=content.length,entry._stat&&entry._stat.size===-1&&(entry._stat.size=entry._actualSize),entry._content=new Uint8Array(content)}}return entry._content}async oid(entry){if(entry._oid===!1){let self=this,{fs,gitdir,cache}=this,oid;await GitIndexManager.acquire({fs,gitdir,cache},async function(index3){let stage2=index3.entriesMap.get(entry._fullpath),stats=await entry.stat(),filemode=await(await self._getGitConfig(fs,gitdir)).get("core.filemode"),trustino=typeof process<"u"?process.platform!=="win32":!0,statDirty=!!stage2&&compareStats(stats,stage2,filemode,trustino),racy=!!stage2&&!statDirty&&isRacilyClean(cache,gitdir,stage2);if(!stage2||statDirty||racy){let content=await entry.content();content===void 0?oid=void 0:(oid=await shasum(GitObject.wrap({type:"blob",object:content})),stage2&&oid===stage2.oid&&(!filemode||stats.mode===stage2.mode)&&(statDirty||racy)&&self._refreshed.push({filepath:entry._fullpath,stats,oid}))}else oid=stage2.oid}),entry._oid=oid}return entry._oid}async flush(){let refreshed=this._refreshed;if(refreshed.length===0)return;this._refreshed=[];let{fs,gitdir,cache}=this,pending=PendingRefresh.get(cache);if(pending){pending.push(...refreshed);return}await GitIndexManager.acquire({fs,gitdir,cache},async function(index3){applyRefresh(index3,refreshed)})}async _getGitConfig(fs,gitdir){return this.config?this.config:(this.config=await GitConfigManager.get({fs,gitdir}),this.config)}};function WORKDIR(){let o=Object.create(null);return Object.defineProperty(o,GitWalkSymbol,{value:function({fs,dir,gitdir,cache}){return new GitWalkerFs({fs,dir,gitdir,cache})}}),Object.freeze(o),o}function arrayRange(start,end){let length=end-start;return Array.from({length},(_,i)=>start+i)}var flat=typeof Array.prototype.flat>"u"?entries=>entries.reduce((acc,x)=>acc.concat(x),[]):entries=>entries.flat(),RunningMinimum=class{constructor(){this.value=null}consider(value){value!=null&&(this.value===null?this.value=value:value<this.value&&(this.value=value))}reset(){this.value=null}};function*unionOfIterators(sets){let min=new RunningMinimum,minimum,heads=[],numsets=sets.length;for(let i=0;i<numsets;i++)heads[i]=sets[i].next().value,heads[i]!==void 0&&min.consider(heads[i]);if(min.value!==null)for(;;){let result=[];minimum=min.value,min.reset();for(let i=0;i<numsets;i++)heads[i]!==void 0&&heads[i]===minimum?(result[i]=heads[i],heads[i]=sets[i].next().value):result[i]=null,heads[i]!==void 0&&min.consider(heads[i]);if(yield result,min.value===null)return}}async function _walk({fs,cache,dir,gitdir,trees,map=async(_,entry)=>entry,reduce=async(parent,children)=>{let flatten=flat(children);return parent!==void 0&&flatten.unshift(parent),flatten},iterate=(walk2,children)=>Promise.all([...children].map(walk2))}){let walkers=trees.map(proxy=>proxy[GitWalkSymbol]({fs,dir,gitdir,cache})),root=new Array(walkers.length).fill("."),range=arrayRange(0,walkers.length),unionWalkerFromReaddir=async entries=>{range.map(i=>{let entry=entries[i];entries[i]=entry&&new walkers[i].ConstructEntry(entry)});let iterators=(await Promise.all(range.map(i=>{let entry=entries[i];return entry?walkers[i].readdir(entry):[]}))).map(array=>(array===null?[]:array)[Symbol.iterator]());return{entries,children:unionOfIterators(iterators)}},walk2=async root2=>{let{entries,children}=await unionWalkerFromReaddir(root2),fullpath=entries.find(entry=>entry&&entry._fullpath)._fullpath,parent=await map(fullpath,entries);if(parent!==null){let walkedChildren=await iterate(walk2,children);return walkedChildren=walkedChildren.filter(x=>x!==void 0),reduce(parent,walkedChildren)}},result=await walk2(root);for(let walker of walkers)walker.flush&&await walker.flush();return result}async function rmRecursive(fs,filepath){let entries=await fs.readdir(filepath);entries==null?await fs.rm(filepath):entries.length?await Promise.all(entries.map(entry=>{let subpath=join2(filepath,entry);return fs.lstat(subpath).then(stat=>{if(stat)return stat.isDirectory()?rmRecursive(fs,subpath):fs.rm(subpath)})})).then(()=>fs.rmdir(filepath)):await fs.rmdir(filepath)}function isPromiseLike(obj){return isObject(obj)&&isFunction(obj.then)&&isFunction(obj.catch)}function isObject(obj){return obj&&typeof obj=="object"}function isFunction(obj){return typeof obj=="function"}function isPromiseFs(fs){return isPromiseLike((targetFs=>{try{return targetFs.readFile().catch(e=>e)}catch(e){return e}})(fs))}var commands=["readFile","writeFile","mkdir","rmdir","unlink","stat","lstat","readdir","readlink","symlink"];function bindFs(target,fs){if(isPromiseFs(fs))for(let command of commands)target[`_${command}`]=fs[command].bind(fs);else for(let command of commands)target[`_${command}`]=(0,import_pify.default)(fs[command].bind(fs));isPromiseFs(fs)?fs.rm?target._rm=fs.rm.bind(fs):fs.rmdir.length>1?target._rm=fs.rmdir.bind(fs):target._rm=rmRecursive.bind(null,target):fs.rm?target._rm=(0,import_pify.default)(fs.rm.bind(fs)):fs.rmdir.length>2?target._rm=(0,import_pify.default)(fs.rmdir.bind(fs)):target._rm=rmRecursive.bind(null,target)}var FileSystem=class{constructor(fs){if(typeof fs._original_unwrapped_fs<"u")return fs;let promises=Object.getOwnPropertyDescriptor(fs,"promises");promises&&promises.enumerable?bindFs(this,fs.promises):bindFs(this,fs),this._original_unwrapped_fs=fs}async exists(filepath,options={}){try{return await this._stat(filepath),!0}catch(err){if(err.code==="ENOENT"||err.code==="ENOTDIR"||(err.code||"").includes("ENS"))return!1;throw console.log('Unhandled error in "FileSystem.exists()" function',err),err}}async read(filepath,options={}){try{let buffer=await this._readFile(filepath,options);if(options.autocrlf==="true")try{buffer=new TextDecoder("utf8",{fatal:!0}).decode(buffer),buffer=buffer.replace(/\r\n/g,`
65
+ `),buffer=new TextEncoder().encode(buffer)}catch{}return typeof buffer!="string"&&(buffer=Buffer.from(buffer)),buffer}catch{return null}}async write(filepath,contents,options={}){try{await this._writeFile(filepath,contents,options);return}catch{await this.mkdir(dirname(filepath)),await this._writeFile(filepath,contents,options)}}async mkdir(filepath,_selfCall=!1){try{await this._mkdir(filepath);return}catch(err){if(err===null||err.code==="EEXIST")return;if(_selfCall)throw err;if(err.code==="ENOENT"){let parent=dirname(filepath);if(parent==="."||parent==="/"||parent===filepath)throw err;await this.mkdir(parent),await this.mkdir(filepath,!0)}}}async rm(filepath){try{await this._unlink(filepath)}catch(err){if(err.code!=="ENOENT")throw err}}async rmdir(filepath,opts){try{opts&&opts.recursive?await this._rm(filepath,opts):await this._rmdir(filepath)}catch(err){if(err.code!=="ENOENT")throw err}}async readdir(filepath){try{let names=await this._readdir(filepath);return names.sort(compareStrings),names}catch(err){return err.code==="ENOTDIR"?null:[]}}async readdirDeep(dir){let subdirs=await this._readdir(dir);return(await Promise.all(subdirs.map(async subdir=>{let res=dir+"/"+subdir;return(await this._stat(res)).isDirectory()?this.readdirDeep(res):res}))).reduce((a,f)=>a.concat(f),[])}async lstat(filename){try{return await this._lstat(filename)}catch(err){if(err.code==="ENOENT"||(err.code||"").includes("ENS"))return null;throw err}}async readlink(filename,opts={encoding:"buffer"}){try{let link=await this._readlink(filename,opts);return Buffer.isBuffer(link)?link:Buffer.from(link)}catch(err){if(err.code==="ENOENT"||(err.code||"").includes("ENS"))return null;throw err}}async writelink(filename,buffer){return this._symlink(buffer.toString("utf8"),filename)}};function assertParameter(name,value){if(value===void 0)throw new MissingParameterError(name)}async function modified(entry,base){return!entry&&!base?!1:entry&&!base||!entry&&base?!0:!(await entry.type()==="tree"&&await base.type()==="tree"||await entry.type()===await base.type()&&await entry.mode()===await base.mode()&&await entry.oid()===await base.oid())}async function abortMerge({fs:_fs,dir,gitdir=join2(dir,".git"),commit:commit2="HEAD",cache={}}){try{assertParameter("fs",_fs),assertParameter("dir",dir),assertParameter("gitdir",gitdir);let fs=new FileSystem(_fs),trees=[TREE({ref:commit2}),WORKDIR(),STAGE()],unmergedPaths=[];await GitIndexManager.acquire({fs,gitdir,cache},async function(index3){unmergedPaths=index3.unmergedPaths});let results=await _walk({fs,cache,dir,gitdir,trees,map:async function(path,[head,workdir,index3]){let staged=!await modified(workdir,index3),unmerged=unmergedPaths.includes(path),unmodified=!await modified(index3,head);if(staged||unmerged)return head?{path,mode:await head.mode(),oid:await head.oid(),type:await head.type(),content:await head.content()}:void 0;if(unmodified)return!1;throw new IndexResetError(path)}});await GitIndexManager.acquire({fs,gitdir,cache},async function(index3){for(let entry of results)if(entry!==!1){if(!entry){await fs.rmdir(`${dir}/${entry.path}`,{recursive:!0}),index3.delete({filepath:entry.path});continue}if(entry.type==="blob"){let content=new TextDecoder().decode(entry.content);await fs.write(`${dir}/${entry.path}`,content,{mode:entry.mode}),index3.insert({filepath:entry.path,oid:entry.oid,stage:0})}}})}catch(err){throw err.caller="git.abortMerge",err}}var GitIgnoreManager=class{static async isIgnored({fs,dir,gitdir=join2(dir,".git"),filepath}){if(basename(filepath)===".git")return!0;if(filepath===".")return!1;let excludes="",excludesFile=join2(gitdir,"info","exclude");await fs.exists(excludesFile)&&(excludes=await fs.read(excludesFile,"utf8"));let pairs=[{gitignore:join2(dir,".gitignore"),filepath}],pieces=filepath.split("/").filter(Boolean);for(let i=1;i<pieces.length;i++){let folder=pieces.slice(0,i).join("/"),file=pieces.slice(i).join("/");pairs.push({gitignore:join2(dir,folder,".gitignore"),filepath:file})}let ignoredStatus=!1;for(let p of pairs){let file;try{file=await fs.read(p.gitignore,"utf8")}catch(err){if(err.code==="NOENT")continue}let ign=(0,import_ignore.default)().add(excludes);ign.add(file);let parentdir=dirname(p.filepath);if(parentdir!=="."&&ign.ignores(parentdir))return!0;ignoredStatus?ignoredStatus=!ign.test(p.filepath).unignored:ignoredStatus=ign.test(p.filepath).ignored}return ignoredStatus}};async function writeObjectLoose({fs,gitdir,object,format,oid}){if(format!=="deflated")throw new InternalError("GitObjectStoreLoose expects objects to write to be in deflated format");let source=`objects/${oid.slice(0,2)}/${oid.slice(2)}`,filepath=`${gitdir}/${source}`;await fs.exists(filepath)||await fs.write(filepath,object)}var supportsCompressionStream=!1;async function deflate(buffer){return supportsCompressionStream===null&&(supportsCompressionStream=testCompressionStream()),supportsCompressionStream?browserDeflate(buffer):import_pako.default.deflate(buffer)}async function browserDeflate(buffer){let cs=new CompressionStream("deflate"),c=new Blob([buffer]).stream().pipeThrough(cs);return new Uint8Array(await new Response(c).arrayBuffer())}function testCompressionStream(){try{return new CompressionStream("deflate").writable.close(),new Blob([]).stream().cancel(),!0}catch{return!1}}async function _writeObject({fs,gitdir,type,object,format="content",oid=void 0,dryRun=!1}){return format!=="deflated"&&(format!=="wrapped"&&(object=GitObject.wrap({type,object})),oid=await shasum(object),object=Buffer.from(await deflate(object))),dryRun||await writeObjectLoose({fs,gitdir,object,format:"deflated",oid}),oid}function posixifyPathBuffer(buffer){let idx;for(;~(idx=buffer.indexOf(92));)buffer[idx]=47;return buffer}async function add({fs:_fs,dir,gitdir=join2(dir,".git"),filepath,cache={},force=!1,parallel=!0}){try{assertParameter("fs",_fs),assertParameter("dir",dir),assertParameter("gitdir",gitdir),assertParameter("filepath",filepath);let fs=new FileSystem(_fs);await GitIndexManager.acquire({fs,gitdir,cache},async index3=>{let autocrlf=await(await GitConfigManager.get({fs,gitdir})).get("core.autocrlf");return addToIndex({dir,gitdir,fs,filepath,index:index3,force,parallel,autocrlf})})}catch(err){throw err.caller="git.add",err}}async function addToIndex({dir,gitdir,fs,filepath,index:index3,force,parallel,autocrlf}){filepath=Array.isArray(filepath)?filepath:[filepath];let addPath=async currentFilepath=>{if(!force&&await GitIgnoreManager.isIgnored({fs,dir,gitdir,filepath:currentFilepath}))return;let stats=await fs.lstat(join2(dir,currentFilepath));if(!stats)throw new NotFoundError(currentFilepath);if(stats.isDirectory()){let children=await fs.readdir(join2(dir,currentFilepath));if(parallel){let promises2=children.map(child=>addToIndex({dir,gitdir,fs,filepath:[join2(currentFilepath,child)],index:index3,force,parallel,autocrlf}));await Promise.all(promises2)}else for(let child of children)await addToIndex({dir,gitdir,fs,filepath:[join2(currentFilepath,child)],index:index3,force,parallel,autocrlf})}else{let object=stats.isSymbolicLink()?await fs.readlink(join2(dir,currentFilepath)):await fs.read(join2(dir,currentFilepath),{autocrlf});if(object===null)throw new NotFoundError(currentFilepath);let oid=await _writeObject({fs,gitdir,type:"blob",object});index3.insert({filepath:currentFilepath,stats,oid})}},promises=[];for(let currentFilepath of filepath)promises.push(addPath(currentFilepath)),parallel||await promises[promises.length-1].catch(()=>{});let settledPromises=await Promise.allSettled(promises),rejectedPromises=settledPromises.filter(settle=>settle.status==="rejected").map(settle=>settle.reason);if(rejectedPromises.length>1)throw new MultipleGitError(rejectedPromises);if(rejectedPromises.length===1)throw rejectedPromises[0];return settledPromises.filter(settle=>settle.status==="fulfilled"&&settle.value).map(settle=>settle.value)}async function _getConfig({fs,gitdir,path}){return(await GitConfigManager.get({fs,gitdir})).get(path)}function assignDefined(target,...sources){for(let source of sources)if(source)for(let key of Object.keys(source)){let val=source[key];val!==void 0&&(target[key]=val)}return target}async function normalizeAuthorObject({fs,gitdir,author,commit:commit2}){let timestamp=Math.floor(Date.now()/1e3),defaultAuthor={name:await _getConfig({fs,gitdir,path:"user.name"}),email:await _getConfig({fs,gitdir,path:"user.email"})||"",timestamp,timezoneOffset:new Date(timestamp*1e3).getTimezoneOffset()},normalizedAuthor=assignDefined({},defaultAuthor,commit2?commit2.author:void 0,author);if(normalizedAuthor.name!==void 0)return normalizedAuthor}async function normalizeCommitterObject({fs,gitdir,author,committer,commit:commit2}){let timestamp=Math.floor(Date.now()/1e3),defaultCommitter={name:await _getConfig({fs,gitdir,path:"user.name"}),email:await _getConfig({fs,gitdir,path:"user.email"})||"",timestamp,timezoneOffset:new Date(timestamp*1e3).getTimezoneOffset()},normalizedCommitter=assignDefined({},defaultCommitter,commit2?commit2.committer:void 0,author,committer);if(normalizedCommitter.name!==void 0)return normalizedCommitter}async function resolveCommit({fs,cache,gitdir,oid}){let{type,object}=await _readObject({fs,cache,gitdir,oid});if(type==="tag")return oid=GitAnnotatedTag.from(object).parse().object,resolveCommit({fs,cache,gitdir,oid});if(type!=="commit")throw new ObjectTypeError(oid,type,"commit");return{commit:GitCommit.from(object),oid}}async function _readCommit({fs,cache,gitdir,oid}){let{commit:commit2,oid:commitOid}=await resolveCommit({fs,cache,gitdir,oid});return{oid:commitOid,commit:commit2.parse(),payload:commit2.withoutSignature()}}async function _commit({fs,cache,onSign,gitdir,message,author:_author,committer:_committer,signingKey,amend=!1,dryRun=!1,noUpdateBranch=!1,ref,parent,tree,rawMessage=!1}){let initialCommit=!1;ref||(ref=await GitRefManager.resolve({fs,gitdir,ref:"HEAD",depth:2}),/^[0-9a-f]{40}$/.test(ref)&&(ref="HEAD"));let refOid,refCommit;try{refOid=await GitRefManager.resolve({fs,gitdir,ref}),refCommit=await _readCommit({fs,gitdir,oid:refOid,cache:{}})}catch{initialCommit=!0}if(amend&&initialCommit)throw new NoCommitError(ref);let author=amend?await normalizeAuthorObject({fs,gitdir,author:_author,commit:refCommit.commit}):await normalizeAuthorObject({fs,gitdir,author:_author});if(!author)throw new MissingNameError("author");let committer=amend?await normalizeCommitterObject({fs,gitdir,author,committer:_committer,commit:refCommit.commit}):await normalizeCommitterObject({fs,gitdir,author,committer:_committer});if(!committer)throw new MissingNameError("committer");return GitIndexManager.acquire({fs,gitdir,cache,allowUnmerged:!1},async function(index3){let inode=flatFileListToDirectoryStructure(index3.entries).get(".");if(tree||(tree=await constructTree({fs,gitdir,inode,dryRun})),parent?parent=await Promise.all(parent.map(p=>GitRefManager.resolve({fs,gitdir,ref:p}))):amend?parent=refCommit.commit.parent:parent=refOid?[refOid]:[],!message&&!(rawMessage&&message===""))if(amend)message=refCommit.commit.message;else throw new MissingParameterError("message");let comm=rawMessage?GitCommit.from(GitCommit.renderHeaders({tree,parent,author,committer})+`
66
+ `+message):GitCommit.from({tree,parent,author,committer,message});signingKey&&(comm=await GitCommit.sign(comm,onSign,signingKey));let oid=await _writeObject({fs,gitdir,type:"commit",object:comm.toObject(),dryRun});return!noUpdateBranch&&!dryRun&&await GitRefManager.writeRef({fs,gitdir,ref,value:oid}),oid})}async function constructTree({fs,gitdir,inode,dryRun}){let children=inode.children;for(let inode2 of children)inode2.type==="tree"&&(inode2.metadata.mode="040000",inode2.metadata.oid=await constructTree({fs,gitdir,inode:inode2,dryRun}));let entries=children.map(inode2=>({mode:inode2.metadata.mode,path:inode2.basename,oid:inode2.metadata.oid,type:inode2.type})),tree=GitTree.from(entries);return await _writeObject({fs,gitdir,type:"tree",object:tree.toObject(),dryRun})}async function resolveFilepath({fs,cache,gitdir,oid,filepath}){if(filepath.startsWith("/"))throw new InvalidFilepathError("leading-slash");if(filepath.endsWith("/"))throw new InvalidFilepathError("trailing-slash");let _oid=oid,result=await resolveTree({fs,cache,gitdir,oid}),tree=result.tree;if(filepath==="")oid=result.oid;else{let pathArray=filepath.split("/");oid=await _resolveFilepath({fs,cache,gitdir,tree,pathArray,oid:_oid,filepath})}return oid}async function _resolveFilepath({fs,cache,gitdir,tree,pathArray,oid,filepath}){let name=pathArray.shift();for(let entry of tree)if(entry.path===name){if(pathArray.length===0)return entry.oid;{let{type,object}=await _readObject({fs,cache,gitdir,oid:entry.oid});if(type!=="tree")throw new ObjectTypeError(oid,type,"tree",filepath);return tree=GitTree.from(object),_resolveFilepath({fs,cache,gitdir,tree,pathArray,oid,filepath})}}throw new NotFoundError(`file or directory found at "${oid}:${filepath}"`)}async function _readTree({fs,cache,gitdir,oid,filepath=void 0}){filepath!==void 0&&(oid=await resolveFilepath({fs,cache,gitdir,oid,filepath}));let{tree,oid:treeOid}=await resolveTree({fs,cache,gitdir,oid});return{oid:treeOid,tree:tree.entries()}}async function _writeTree({fs,gitdir,tree}){let object=GitTree.from(tree).toObject();return await _writeObject({fs,gitdir,type:"tree",object,format:"content"})}async function _addNote({fs,cache,onSign,gitdir,ref,oid,note,force,author,committer,signingKey}){let parent;try{parent=await GitRefManager.resolve({gitdir,fs,ref})}catch(err){if(!(err instanceof NotFoundError))throw err}let tree=(await _readTree({fs,cache,gitdir,oid:parent||"4b825dc642cb6eb9a060e54bf8d69288fbee4904"})).tree;if(force)tree=tree.filter(entry=>entry.path!==oid);else for(let entry of tree)if(entry.path===oid)throw new AlreadyExistsError("note",oid);typeof note=="string"&&(note=Buffer.from(note,"utf8"));let noteOid=await _writeObject({fs,gitdir,type:"blob",object:note,format:"content"});tree.push({mode:"100644",path:oid,oid:noteOid,type:"blob"});let treeOid=await _writeTree({fs,gitdir,tree});return await _commit({fs,cache,onSign,gitdir,ref,tree:treeOid,parent:parent&&[parent],message:`Note added by 'isomorphic-git addNote'
67
+ `,author,committer,signingKey})}async function addNote({fs:_fs,onSign,dir,gitdir=join2(dir,".git"),ref="refs/notes/commits",oid,note,force,author:_author,committer:_committer,signingKey,cache={}}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("oid",oid),assertParameter("note",note),signingKey&&assertParameter("onSign",onSign);let fs=new FileSystem(_fs),author=await normalizeAuthorObject({fs,gitdir,author:_author});if(!author)throw new MissingNameError("author");let committer=await normalizeCommitterObject({fs,gitdir,author,committer:_committer});if(!committer)throw new MissingNameError("committer");return await _addNote({fs:new FileSystem(fs),cache,onSign,gitdir,ref,oid,note,force,author,committer,signingKey})}catch(err){throw err.caller="git.addNote",err}}async function _addRemote({fs,gitdir,remote,url,force}){if(!(0,import_is_git_ref_name_valid.default)(remote,!0))throw new InvalidRefNameError(remote,import_clean_git_ref.default.clean(remote));let config=await GitConfigManager.get({fs,gitdir});if(!force&&(await config.getSubsections("remote")).includes(remote)&&url!==await config.get(`remote.${remote}.url`))throw new AlreadyExistsError("remote",remote);await config.set(`remote.${remote}.url`,url),await config.set(`remote.${remote}.fetch`,`+refs/heads/*:refs/remotes/${remote}/*`),await GitConfigManager.save({fs,gitdir,config})}async function addRemote({fs,dir,gitdir=join2(dir,".git"),remote,url,force=!1}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("remote",remote),assertParameter("url",url),await _addRemote({fs:new FileSystem(fs),gitdir,remote,url,force})}catch(err){throw err.caller="git.addRemote",err}}async function _annotatedTag({fs,cache,onSign,gitdir,ref,tagger,message=ref,gpgsig,object,signingKey,force=!1}){if(ref=ref.startsWith("refs/tags/")?ref:`refs/tags/${ref}`,!force&&await GitRefManager.exists({fs,gitdir,ref}))throw new AlreadyExistsError("tag",ref);let oid=await GitRefManager.resolve({fs,gitdir,ref:object||"HEAD"}),{type}=await _readObject({fs,cache,gitdir,oid}),tagObject=GitAnnotatedTag.from({object:oid,type,tag:ref.replace("refs/tags/",""),tagger,message,gpgsig});signingKey&&(tagObject=await GitAnnotatedTag.sign(tagObject,onSign,signingKey));let value=await _writeObject({fs,gitdir,type:"tag",object:tagObject.toObject()});await GitRefManager.writeRef({fs,gitdir,ref,value})}async function annotatedTag({fs:_fs,onSign,dir,gitdir=join2(dir,".git"),ref,tagger:_tagger,message=ref,gpgsig,object,signingKey,force=!1,cache={}}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref),signingKey&&assertParameter("onSign",onSign);let fs=new FileSystem(_fs),tagger=await normalizeAuthorObject({fs,gitdir,author:_tagger});if(!tagger)throw new MissingNameError("tagger");return await _annotatedTag({fs,cache,onSign,gitdir,ref,tagger,message,gpgsig,object,signingKey,force})}catch(err){throw err.caller="git.annotatedTag",err}}async function _branch({fs,gitdir,ref,object,checkout:checkout2=!1,force=!1}){if(!(0,import_is_git_ref_name_valid.default)(ref,!0))throw new InvalidRefNameError(ref,import_clean_git_ref.default.clean(ref));let fullref=`refs/heads/${ref}`;if(!force&&await GitRefManager.exists({fs,gitdir,ref:fullref}))throw new AlreadyExistsError("branch",ref,!1);let oid;try{oid=await GitRefManager.resolve({fs,gitdir,ref:object||"HEAD"})}catch{}oid&&await GitRefManager.writeRef({fs,gitdir,ref:fullref,value:oid}),checkout2&&await GitRefManager.writeSymbolicRef({fs,gitdir,ref:"HEAD",value:fullref})}async function branch({fs,dir,gitdir=join2(dir,".git"),ref,object,checkout:checkout2=!1,force=!1}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref),await _branch({fs:new FileSystem(fs),gitdir,ref,object,checkout:checkout2,force})}catch(err){throw err.caller="git.branch",err}}var worthWalking=(filepath,root)=>{if(filepath==="."||root==null||root.length===0||root===".")return!0;let filepathPrefix=filepath.endsWith("/")?filepath:`${filepath}/`,rootPrefix=root.endsWith("/")?root:`${root}/`;return filepath===root||filepath.startsWith(rootPrefix)||root.startsWith(filepathPrefix)};async function _checkout({fs,cache,onProgress,onPostCheckout,dir,gitdir,remote,ref,filepaths,noCheckout,noUpdateHead,dryRun,force,track=!0,nonBlocking=!1,batchSize=100,conflictOperation="checkout"}){let oldOid;if(onPostCheckout)try{oldOid=await GitRefManager.resolve({fs,gitdir,ref:"HEAD"})}catch{oldOid="0000000000000000000000000000000000000000"}let oid;try{oid=await GitRefManager.resolve({fs,gitdir,ref})}catch(err){if(ref==="HEAD")throw err;let remoteRef=`${remote}/${ref}`;if(oid=await GitRefManager.resolve({fs,gitdir,ref:remoteRef}),track){let config=await GitConfigManager.get({fs,gitdir});await config.set(`branch.${ref}.remote`,remote),await config.set(`branch.${ref}.merge`,`refs/heads/${ref}`),await GitConfigManager.save({fs,gitdir,config})}await GitRefManager.writeRef({fs,gitdir,ref:`refs/heads/${ref}`,value:oid})}if(!noCheckout){let ops;try{ops=await analyze({fs,cache,onProgress,dir,gitdir,ref,force,filepaths})}catch(err){throw err instanceof NotFoundError&&err.data.what===oid?new CommitNotFetchedError(ref,oid):err}let refused=kind=>[...new Set(ops.filter(([method])=>method===kind).map(([,fullpath])=>fullpath))],local=refused("conflict"),directories=refused("conflict-dir"),untracked=refused("conflict-untracked");if(local.length+directories.length+untracked.length>0)throw new CheckoutConflictError([...local,...directories,...untracked],{local,directories,untracked,operation:conflictOperation});let errors=ops.filter(([method])=>method==="error").map(([method,fullpath])=>fullpath);if(errors.length>0)throw new InternalError(errors.join(", "));if(dryRun){onPostCheckout&&await onPostCheckout({previousHead:oldOid,newHead:oid,type:filepaths!=null&&filepaths.length>0?"file":"branch"});return}let count=0,total=ops.length;if(await GitIndexManager.acquire({fs,gitdir,cache},async function(index3){await Promise.all(ops.filter(([method])=>method==="delete"||method==="delete-index"||method==="update-blob-to-tree").map(async function([method,fullpath,present]){let filepath=`${dir}/${fullpath}`;(method==="delete"||method==="update-blob-to-tree"&&present)&&await fs.rm(filepath),index3.delete({filepath:fullpath}),onProgress&&await onProgress({phase:"Updating workdir",loaded:++count,total})}))}),await GitIndexManager.acquire({fs,gitdir,cache},async function(index3){for(let[method,fullpath]of ops)if(method==="rmdir"||method==="rmdir-index"||method==="update-dir-to-blob"){let filepath=`${dir}/${fullpath}`;try{method!=="rmdir-index"&&await fs.rmdir(filepath),index3.delete({filepath:fullpath}),onProgress&&await onProgress({phase:"Updating workdir",loaded:++count,total})}catch(e){if(e.code==="ENOTEMPTY"&&method!=="update-dir-to-blob")console.log(`Did not delete ${fullpath} because directory is not empty`);else throw e}}}),await Promise.all(ops.filter(([method])=>method==="mkdir"||method==="mkdir-index"||method==="update-blob-to-tree").map(async function([_,fullpath]){let filepath=`${dir}/${fullpath}`;await fs.mkdir(filepath),onProgress&&await onProgress({phase:"Updating workdir",loaded:++count,total})})),nonBlocking){let eligibleOps=ops.filter(([method])=>method==="create"||method==="create-index"||method==="update"||method==="update-dir-to-blob"||method==="mkdir-index"),updateWorkingDirResults=await batchAllSettled("Update Working Dir",eligibleOps.map(([method,fullpath,oid2,mode,chmod])=>()=>updateWorkingDir({fs,cache,gitdir,dir},[method,fullpath,oid2,mode,chmod])),onProgress,batchSize);await GitIndexManager.acquire({fs,gitdir,cache,allowUnmerged:!0},async function(index3){await batchAllSettled("Update Index",updateWorkingDirResults.map(([fullpath,oid2,stats])=>()=>updateIndex({index:index3,fullpath,oid:oid2,stats})),onProgress,batchSize)})}else{let writeErrors=[];if(await GitIndexManager.acquire({fs,gitdir,cache,allowUnmerged:!0},async function(index3){await Promise.all(ops.filter(([method])=>method==="create"||method==="create-index"||method==="update"||method==="update-dir-to-blob"||method==="mkdir-index").map(async function([method,fullpath,oid2,mode,chmod]){let filepath=`${dir}/${fullpath}`;try{if(method!=="create-index"&&method!=="mkdir-index"){let{object}=await _readObject({fs,cache,gitdir,oid:oid2});if(chmod&&await fs.rm(filepath),mode===33188)await fs.write(filepath,object);else if(mode===33261)await fs.write(filepath,object,{mode:511});else if(mode===40960)await fs.writelink(filepath,object);else throw new InternalError(`Invalid mode 0o${mode.toString(8)} detected in blob ${oid2}`)}let stats=await fs.lstat(filepath);mode===33261&&(stats.mode=493),method==="mkdir-index"&&(stats.mode=57344),index3.insert({filepath:fullpath,stats,oid:oid2}),onProgress&&await onProgress({phase:"Updating workdir",loaded:++count,total})}catch(e){writeErrors.push(e)}}))}),writeErrors.length>0)throw writeErrors[0]}onPostCheckout&&await onPostCheckout({previousHead:oldOid,newHead:oid,type:filepaths!=null&&filepaths.length>0?"file":"branch"})}if(!noUpdateHead){let fullRef=await GitRefManager.expand({fs,gitdir,ref});if(fullRef.startsWith("refs/heads"))await GitRefManager.writeSymbolicRef({fs,gitdir,ref:"HEAD",value:fullRef});else{let{oid:commitOid}=await resolveCommit({fs,cache,gitdir,oid});await GitRefManager.writeRef({fs,gitdir,ref:"HEAD",value:commitOid})}}}async function analyze({fs,cache,onProgress,dir,gitdir,ref,force,filepaths}){let count=0,filemode=await(await GitConfigManager.get({fs,gitdir})).get("core.filemode")!==!1,headOid=null;if(!force&&!filepaths)try{headOid=await GitRefManager.resolve({fs,gitdir,ref:"HEAD"})}catch{}let trees=[TREE({ref}),WORKDIR(),STAGE()];headOid&&trees.push(TREE({ref:headOid}));let replaced=new Set,replacedAncestor=fullpath=>{for(let at=fullpath.lastIndexOf("/");at>0;at=fullpath.lastIndexOf("/",at-1))if(replaced.has(fullpath.slice(0,at)))return fullpath.slice(0,at);return null},ignored=filepath=>GitIgnoreManager.isIgnored({fs,dir,gitdir,filepath}),same=async(a,b)=>await a.oid()===await b.oid()&&await a.mode()===await b.mode(),upToDate=async(workdir,stage2)=>{if(!workdir)return!0;if(await workdir.type()!=="blob"||await workdir.oid()!==await stage2.oid())return!1;let workMode=await workdir.mode(),stageMode=await stage2.mode();return workMode===stageMode||!filemode&&workMode!==40960&&stageMode!==40960},write=async(method,fullpath,commit2,workdir)=>{let mode=await commit2.mode(),chmod=!!workdir&&await workdir.type()==="blob"&&await workdir.mode()!==mode;return[method,fullpath,await commit2.oid(),mode,chmod]};return _walk({fs,cache,dir,gitdir,trees,map:async function(fullpath,[commit2,workdir,stage2,head]){if(fullpath===".")return;if(filepaths&&!filepaths.some(base=>worthWalking(fullpath,base)))return null;onProgress&&await onProgress({phase:"Analyzing workdir",loaded:++count});let commitType=commit2?await commit2.type():null,stageType=stage2?await stage2.type():null,workType=workdir?await workdir.type():null,oldBlob=(head?await head.type():null)==="blob"?head:null;if(commitType==="commit")return workType&&workType!=="tree"?["conflict-untracked",fullpath]:["mkdir-index",fullpath,await commit2.oid(),await commit2.mode()];if(stageType==="commit")return["rmdir-index",fullpath];if(stageType==="tree")return commitType==="tree"?void 0:commitType===null?[workType==="tree"?"rmdir":"rmdir-index",fullpath]:!force&&oldBlob?await same(oldBlob,commit2)?void 0:["conflict",fullpath]:workType&&workType!=="tree"?force?write("update",fullpath,commit2,workdir):["conflict",fullpath]:(replaced.add(fullpath),write("update-dir-to-blob",fullpath,commit2,null));if(stageType==="blob")return commitType==="blob"?force?workType==="tree"?(replaced.add(fullpath),write("update-dir-to-blob",fullpath,commit2,null)):workdir&&await same(stage2,commit2)&&await upToDate(workdir,stage2)?void 0:write("update",fullpath,commit2,workdir):await same(stage2,commit2)||oldBlob&&await same(oldBlob,commit2)?void 0:oldBlob&&await same(stage2,oldBlob)&&await upToDate(workdir,stage2)?write("update",fullpath,commit2,workdir):["conflict",fullpath]:commitType==="tree"?force?["update-blob-to-tree",fullpath,!!workType&&workType!=="tree"]:oldBlob&&await same(stage2,oldBlob)&&await upToDate(workdir,stage2)?["update-blob-to-tree",fullpath,!!workdir]:["conflict",fullpath]:force?[workType&&workType!=="tree"?"delete":"delete-index",fullpath]:oldBlob?await same(stage2,oldBlob)&&await upToDate(workdir,stage2)?[workdir?"delete":"delete-index",fullpath]:["conflict",fullpath]:replacedAncestor(fullpath)?["conflict",fullpath]:void 0;if(commitType===null){if(force&&filepaths&&filepaths.includes(fullpath))return["delete",fullpath];let owner=workType&&replacedAncestor(fullpath);return owner?workType==="tree"?["rmdir",fullpath]:force||await ignored(fullpath)?["delete",fullpath]:["conflict-dir",owner]:void 0}return commitType==="tree"?workType?workType==="tree"?void 0:force||await ignored(fullpath)?["update-blob-to-tree",fullpath,!0]:["conflict-untracked",fullpath]:["mkdir",fullpath]:oldBlob?await same(oldBlob,commit2)?void 0:["conflict",fullpath]:workType?workType==="tree"?(replaced.add(fullpath),write("update-dir-to-blob",fullpath,commit2,null)):force||await ignored(fullpath)?write("update",fullpath,commit2,workdir):["conflict-untracked",fullpath]:write("create",fullpath,commit2,null)},reduce:async function(parent,children){return children=flat(children),parent?parent&&(parent[0]==="rmdir"||parent[0]==="update-dir-to-blob")?(children.push(parent),children):(children.unshift(parent),children):children}})}async function updateIndex({index:index3,fullpath,stats,oid}){index3.insert({filepath:fullpath,stats,oid})}async function updateWorkingDir({fs,cache,gitdir,dir},[method,fullpath,oid,mode,chmod]){let filepath=`${dir}/${fullpath}`;if(method!=="create-index"&&method!=="mkdir-index"){let{object}=await _readObject({fs,cache,gitdir,oid});if(chmod&&await fs.rm(filepath),mode===33188)await fs.write(filepath,object);else if(mode===33261)await fs.write(filepath,object,{mode:511});else if(mode===40960)await fs.writelink(filepath,object);else throw new InternalError(`Invalid mode 0o${mode.toString(8)} detected in blob ${oid}`)}let stats=await fs.lstat(filepath);return mode===33261&&(stats.mode=493),method==="mkdir-index"&&(stats.mode=57344),[fullpath,oid,stats]}async function batchAllSettled(operationName,tasks,onProgress,batchSize){let results=[],errors=[];for(let i=0;i<tasks.length;i+=batchSize){let batch=tasks.slice(i,i+batchSize).map(task=>task());(await Promise.allSettled(batch)).forEach(result=>{result.status==="fulfilled"?results.push(result.value):errors.push(result.reason)}),onProgress&&await onProgress({phase:"Updating workdir",loaded:i+batch.length,total:tasks.length})}if(errors.length>0){let detail=errors.slice(0,5).map(e=>e&&e.message||String(e)).join("; "),more=errors.length>5?` (+${errors.length-5} more)`:"";throw new InternalError(`${operationName} failed for ${errors.length} of ${tasks.length} task(s): ${detail}${more}`)}return results}async function checkout({fs,onProgress,onPostCheckout,dir,gitdir=join2(dir,".git"),remote="origin",ref:_ref,filepaths,noCheckout=!1,noUpdateHead=_ref===void 0,dryRun=!1,force=!1,track=!0,cache={},nonBlocking=!1,batchSize=100,conflictOperation="checkout"}){try{assertParameter("fs",fs),assertParameter("dir",dir),assertParameter("gitdir",gitdir);let ref=_ref||"HEAD";return await _checkout({fs:new FileSystem(fs),cache,onProgress,onPostCheckout,dir,gitdir,remote,ref,filepaths,noCheckout,noUpdateHead,dryRun,force,track,nonBlocking,batchSize,conflictOperation})}catch(err){throw err.caller="git.checkout",err}}var freshCheckoutOidPattern=/^[0-9a-f]{40}(?:[0-9a-f]{24})?$/,freshCheckoutMaxDirectories=2e4,freshCheckoutMaxDirectoryBytes=4*1024*1024,freshCheckoutMaxIndexChunks=2e4;function freshCheckoutError(message){return new InternalError(`Fresh checkout: ${message}`)}var FreshCheckoutResourceLimitError=class extends BaseError{constructor(filepath,decodedBytes,maxDecodedBytes){super(`Fresh checkout: ${filepath} decodes to ${decodedBytes} bytes, exceeding maxDecodedBytes ${maxDecodedBytes}`),this.code=this.name="FreshCheckoutResourceLimitError",this.data={filepath,decodedBytes,maxDecodedBytes}}},FreshCheckoutDirectoryLimitError=class extends BaseError{constructor(directories,directoryBytes){super(`Fresh checkout: directory cursor exceeds its bound (${directories} directories, ${directoryBytes} bytes; max ${freshCheckoutMaxDirectories} directories, ${freshCheckoutMaxDirectoryBytes} bytes)`),this.code=this.name="FreshCheckoutDirectoryLimitError",this.data={directories,directoryBytes,maxDirectories:freshCheckoutMaxDirectories,maxDirectoryBytes:freshCheckoutMaxDirectoryBytes}}};function validateFreshCheckoutBound(value,name){if(!Number.isSafeInteger(value)||value<=0)throw freshCheckoutError(`${name} must be a positive safe integer`);return value}function validateFreshCheckoutFrame(value,index3){if(!value||typeof value!="object"||!freshCheckoutOidPattern.test(value.treeOid)||typeof value.path!="string"||value.path.length>4096||(index3===0?value.path!=="":value.path.length===0)||!Number.isSafeInteger(value.nextChildIndex)||value.nextChildIndex<0)throw freshCheckoutError(`cursor frame ${index3} is invalid`);return{treeOid:value.treeOid,path:value.path,nextChildIndex:value.nextChildIndex}}function validateFreshCheckoutDirectories(value){if(value===void 0)return{directories:new Set,directoryBytes:0};if(!Array.isArray(value))throw freshCheckoutError("cursor directories are invalid");if(value.length>freshCheckoutMaxDirectories)throw new FreshCheckoutDirectoryLimitError(value.length,0);let directories=new Set,directoryBytes=0;for(let path of value){if(typeof path!="string"||path.length===0||path.length>4096||path.startsWith("/")||path.split("/").some(part=>!part||part==="."||part==="..")||directories.has(path))throw freshCheckoutError("cursor directory is invalid");if(directoryBytes+=Buffer.byteLength(path),directoryBytes>freshCheckoutMaxDirectoryBytes)throw new FreshCheckoutDirectoryLimitError(value.length,directoryBytes);directories.add(path)}return{directories,directoryBytes}}function addFreshCheckoutDirectory(directories,directoryBytes,path){if(directories.has(path))return directoryBytes;let nextBytes=directoryBytes+Buffer.byteLength(path);if(directories.size+1>freshCheckoutMaxDirectories||nextBytes>freshCheckoutMaxDirectoryBytes)throw new FreshCheckoutDirectoryLimitError(directories.size+1,nextBytes);return directories.add(path),nextBytes}async function readFreshCheckoutTree({fs,cache,gitdir,oid}){let{type,object}=await _readObject({fs,cache,gitdir,oid});if(type!=="tree")throw new ObjectTypeError(oid,type,"tree");return GitTree.from(object).entries()}function strictFreshCheckoutFs(input){let base=new FileSystem(input),fs=Object.create(base),assertParentDirectory=async function(filepath){let parent=dirname(filepath),stats=await this._lstat(parent);if(!stats||!stats.isDirectory())throw freshCheckoutError(`parent directory is missing for ${filepath}`)};return fs.read=async function(filepath,options={}){try{let value=await this._readFile(filepath,options);return typeof value=="string"?value:Buffer.from(value)}catch(error){if(error&&(error.code==="ENOENT"||error.code==="ENOTDIR"))return null;throw error}},fs.readdir=async function(filepath){try{let names=await this._readdir(filepath);return names.sort(compareStrings),names}catch(error){if(error&&error.code==="ENOENT")return[];if(error&&error.code==="ENOTDIR")return null;throw error}},fs.write=async function(filepath,contents,options={}){await assertParentDirectory.call(this,filepath),await this._writeFile(filepath,contents,options)},fs.mkdir=async function(filepath){try{await assertParentDirectory.call(this,filepath),await this._mkdir(filepath)}catch(error){if(!error||error.code!=="EEXIST")throw error}},fs.writelink=async function(filepath,buffer){await assertParentDirectory.call(this,filepath);try{await this._unlink(filepath)}catch(error){if(!error||error.code!=="ENOENT")throw error}await this._symlink(buffer.toString("utf8"),filepath)},fs}async function validateFreshCheckoutCursor({fs,cache,gitdir,treeOid,cursor}){if(cursor==null)return{stack:[{treeOid,path:"",nextChildIndex:0}],directories:new Set,directoryBytes:0,indexChunks:0,indexEntries:0};if(!cursor||typeof cursor!="object"||cursor.version!==2||cursor.tree!==treeOid||!Array.isArray(cursor.stack)||cursor.stack.length===0||cursor.stack.length>4096||!Number.isSafeInteger(cursor.indexChunks)||cursor.indexChunks<=0||cursor.indexChunks>freshCheckoutMaxIndexChunks||!Number.isSafeInteger(cursor.indexEntries)||cursor.indexEntries<0)throw freshCheckoutError("cursor does not match the resolved tree");let stack=cursor.stack.map(validateFreshCheckoutFrame),{directories,directoryBytes}=validateFreshCheckoutDirectories(cursor.directories);if(stack[0].treeOid!==treeOid||stack[0].path!=="")throw freshCheckoutError("cursor root frame does not match the resolved tree");let trees=new Map;for(let index3=0;index3<stack.length;index3++){let frame=stack[index3],entries=trees.get(frame.treeOid);if(entries||(entries=await readFreshCheckoutTree({fs,cache,gitdir,oid:frame.treeOid}),trees.set(frame.treeOid,entries)),frame.nextChildIndex>entries.length)throw freshCheckoutError(`cursor frame ${index3} is past the end of its tree`);if(index3===0)continue;let parent=stack[index3-1];if(parent.nextChildIndex===0)throw freshCheckoutError(`cursor frame ${index3} has no parent entry`);let entry=trees.get(parent.treeOid)[parent.nextChildIndex-1],path=parent.path?`${parent.path}/${entry&&entry.path}`:entry&&entry.path;if(!entry||entry.mode!=="040000"||entry.oid!==frame.treeOid||path!==frame.path)throw freshCheckoutError(`cursor frame ${index3} does not match its parent tree`)}return{stack,directories,directoryBytes,indexChunks:cursor.indexChunks,indexEntries:cursor.indexEntries}}async function checkoutFreshChunk({fs:inputFs,cache={},onProgress,dir,gitdir=join2(dir,".git"),ref="HEAD",cursor=null,maxEntries,maxDecodedBytes,maxWallMs,deferIndexFragmentCleanup=!1}){try{assertParameter("fs",inputFs),assertParameter("dir",dir),assertParameter("gitdir",gitdir),validateFreshCheckoutBound(maxEntries,"maxEntries"),validateFreshCheckoutBound(maxDecodedBytes,"maxDecodedBytes"),validateFreshCheckoutBound(maxWallMs,"maxWallMs");let fs=strictFreshCheckoutFs(inputFs),commitOid=await GitRefManager.resolve({fs,gitdir,ref}),{oid:treeOid}=await resolveTree({fs,cache,gitdir,oid:commitOid}),checkoutCursor=await validateFreshCheckoutCursor({fs,cache,gitdir,treeOid,cursor}),{stack,directories,indexChunks,indexEntries:priorIndexEntries}=checkoutCursor,directoryBytes=checkoutCursor.directoryBytes,startedAt=Date.now(),trees=new Map,files=0,decodedBytes=0,treeEntriesVisited=0,indexEntries=priorIndexEntries;return indexEntries=(await GitIndexManager.acquireFreshCheckout({fs,gitdir,priorChunks:indexChunks,priorEntries:priorIndexEntries,deferFragmentCleanup:deferIndexFragmentCleanup},async function(index3){for(;stack.length>0;){let frame=stack[stack.length-1],entries=trees.get(frame.treeOid);if(entries||(entries=await readFreshCheckoutTree({fs,cache,gitdir,oid:frame.treeOid}),trees.clear(),trees.set(frame.treeOid,entries)),frame.nextChildIndex===entries.length){stack.pop();continue}if(treeEntriesVisited>=maxEntries||treeEntriesVisited>0&&Date.now()-startedAt>=maxWallMs)break;let entry=entries[frame.nextChildIndex],fullpath=frame.path?`${frame.path}/${entry.path}`:entry.path,filepath=join2(dir,fullpath),mode=parseInt(entry.mode,8),object=null;if(mode===33188||mode===33261||mode===40960){let result=await _readObject({fs,cache,gitdir,oid:entry.oid});if(result.type!=="blob")throw new ObjectTypeError(entry.oid,result.type,"blob");if(object=result.object,object.byteLength>maxDecodedBytes)throw new FreshCheckoutResourceLimitError(fullpath,object.byteLength,maxDecodedBytes);if(treeEntriesVisited>0&&Date.now()-startedAt>=maxWallMs||decodedBytes+object.byteLength>maxDecodedBytes)break}if(mode===16384)directoryBytes=addFreshCheckoutDirectory(directories,directoryBytes,fullpath),await fs.mkdir(filepath);else if(mode===33188||mode===33261)await fs.write(filepath,object,mode===33261?{mode:511}:{});else if(mode===40960)await fs.writelink(filepath,object);else if(mode===57344)directoryBytes=addFreshCheckoutDirectory(directories,directoryBytes,fullpath),await fs.mkdir(filepath);else throw freshCheckoutError(`invalid mode 0o${mode.toString(8)} detected at ${fullpath}`);if(mode!==16384){let stats=await fs.lstat(filepath);if(!stats)throw freshCheckoutError(`lstat returned no result for ${fullpath}`);mode===33188&&(stats.mode=420),mode===33261&&(stats.mode=493),mode===57344&&(stats.mode=57344),index3.insert({filepath:fullpath,stats,oid:entry.oid}),mode!==57344&&files++}object&&(decodedBytes+=object.byteLength),frame.nextChildIndex++,treeEntriesVisited++,mode===16384&&stack.push({treeOid:entry.oid,path:fullpath,nextChildIndex:0}),onProgress&&await onProgress({phase:"Updating workdir",loaded:treeEntriesVisited})}return{complete:stack.length===0}})).indexEntries,{nextCursor:stack.length===0?null:{version:2,tree:treeOid,stack,directories:[...directories],indexChunks:indexChunks+1,indexEntries},files,decodedBytes,treeEntriesVisited,indexEntries}}catch(err){throw err.caller="git.checkoutFreshChunk",err}}var abbreviateRx=new RegExp("^refs/(heads/|tags/|remotes/)?(.*)");function abbreviateRef(ref){let match=abbreviateRx.exec(ref);return match?match[1]==="remotes/"&&ref.endsWith("/HEAD")?match[2].slice(0,-5):match[2]:ref}async function _currentBranch({fs,gitdir,fullname=!1,test=!1}){let ref=await GitRefManager.resolve({fs,gitdir,ref:"HEAD",depth:2});if(test)try{await GitRefManager.resolve({fs,gitdir,ref})}catch{return}if(ref.startsWith("refs/"))return fullname?ref:abbreviateRef(ref)}function translateSSHtoHTTP(url){return url=url.replace(/^git@([^:]+):/,"https://$1/"),url=url.replace(/^ssh:\/\//,"https://"),url}function calculateBasicAuthHeader({username="",password=""}){return`Basic ${Buffer.from(`${username}:${password}`).toString("base64")}`}async function forAwait(iterable,cb){let iter=getIterator(iterable);for(;;){let{value,done}=await iter.next();if(value&&await cb(value),done)break}iter.return&&iter.return()}async function collect(iterable){let size=0,buffers=[];await forAwait(iterable,value=>{buffers.push(value),size+=value.byteLength});let result=new Uint8Array(size),nextIndex=0;for(let buffer of buffers)result.set(buffer,nextIndex),nextIndex+=buffer.byteLength;return result}function extractAuthFromUrl(url){let userpass=url.match(/^https?:\/\/([^/]+)@/);if(userpass==null)return{url,auth:{}};userpass=userpass[1];let[username,password]=userpass.split(":");return url=url.replace(`${userpass}@`,""),{url,auth:{username,password}}}function padHex(b,n){let s=n.toString(16);return"0".repeat(b-s.length)+s}var GitPktLine=class{static flush(){return Buffer.from("0000","utf8")}static delim(){return Buffer.from("0001","utf8")}static encode(line){typeof line=="string"&&(line=Buffer.from(line));let length=line.length+4,hexlength=padHex(4,length);return Buffer.concat([Buffer.from(hexlength,"utf8"),line])}static streamReader(stream){let reader=new StreamReader(stream);return async function(){try{let length=await reader.read(4);if(length==null)return!0;if(length=parseInt(length.toString("utf8"),16),length===0||length===1)return null;let buffer=await reader.read(length-4);return buffer??!0}catch(err){return stream.error=err,!0}}}};async function parseCapabilitiesV2(read){let capabilities2={},line;for(;line=await read(),line!==!0;){if(line===null)continue;line=line.toString("utf8").replace(/\n$/,"");let i=line.indexOf("=");if(i>-1){let key=line.slice(0,i),value=line.slice(i+1);capabilities2[key]=value}else capabilities2[line]=!0}return{protocolVersion:2,capabilities2}}async function parseRefsAdResponse(stream,{service}){let capabilities=new Set,refs=new Map,symrefs=new Map,read=GitPktLine.streamReader(stream),lineOne=await read();for(;lineOne===null;)lineOne=await read();if(lineOne===!0)throw new EmptyServerResponseError;if(lineOne.includes("version 2"))return parseCapabilitiesV2(read);if(lineOne.toString("utf8").replace(/\n$/,"")!==`# service=${service}`)throw new ParseError(`# service=${service}\\n`,lineOne.toString("utf8"));let lineTwo=await read();for(;lineTwo===null;)lineTwo=await read();if(lineTwo===!0)return{capabilities,refs,symrefs};if(lineTwo=lineTwo.toString("utf8"),lineTwo.includes("version 2"))return parseCapabilitiesV2(read);let[firstRef,capabilitiesLine]=splitAndAssert(lineTwo,"\0","\\x00");if(capabilitiesLine.split(" ").map(x=>capabilities.add(x)),firstRef!=="0000000000000000000000000000000000000000 capabilities^{}"){let[ref,name]=splitAndAssert(firstRef," "," ");for(refs.set(name,ref);;){let line=await read();if(line===!0)break;if(line!==null){let[ref2,name2]=splitAndAssert(line.toString("utf8")," "," ");refs.set(name2,ref2)}}}for(let cap of capabilities)if(cap.startsWith("symref=")){let m=cap.match(/symref=([^:]+):(.*)/);m.length===3&&symrefs.set(m[1],m[2])}return{protocolVersion:1,capabilities,refs,symrefs}}function splitAndAssert(line,sep,expected){let split=line.trim().split(sep);if(split.length!==2)throw new ParseError(`Two strings separated by '${expected}'`,line.toString("utf8"));return split}var corsProxify=(corsProxy,url)=>corsProxy.endsWith("?")?`${corsProxy}${url}`:`${corsProxy}/${url.replace(/^https?:\/\//,"")}`,updateHeaders=(headers,auth)=>{(auth.username||auth.password)&&(headers.Authorization=calculateBasicAuthHeader(auth)),auth.headers&&Object.assign(headers,auth.headers)},stringifyBody=async res=>{try{let data=Buffer.from(await collect(res.body)),response=data.toString("utf8");return{preview:response.length<256?response:response.slice(0,256)+"...",response,data}}catch{return{}}},GitRemoteHTTP=class{static async capabilities(){return["discover","connect"]}static async discover({http,onProgress,onAuth,onAuthSuccess,onAuthFailure,corsProxy,service,url:_origUrl,headers,protocolVersion}){let{url,auth}=extractAuthFromUrl(_origUrl),proxifiedURL=corsProxy?corsProxify(corsProxy,url):url;(auth.username||auth.password)&&(headers.Authorization=calculateBasicAuthHeader(auth)),protocolVersion===2&&(headers["Git-Protocol"]="version=2");let res,tryAgain,providedAuthBefore=!1;do if(res=await http.request({onProgress,method:"GET",url:`${proxifiedURL}/info/refs?service=${service}`,headers}),tryAgain=!1,res.statusCode===401||res.statusCode===203){let getAuth=providedAuthBefore?onAuthFailure:onAuth;if(getAuth){if(auth=await getAuth(url,{...auth,headers:{...headers}}),auth&&auth.cancel)throw new UserCanceledError;auth&&(updateHeaders(headers,auth),providedAuthBefore=!0,tryAgain=!0)}}else res.statusCode===200&&providedAuthBefore&&onAuthSuccess&&await onAuthSuccess(url,auth);while(tryAgain);if(res.statusCode!==200){let{response}=await stringifyBody(res);throw new HttpError(res.statusCode,res.statusMessage,response)}if(res.headers["content-type"]===`application/x-${service}-advertisement`){let remoteHTTP=await parseRefsAdResponse(res.body,{service});return remoteHTTP.auth=auth,remoteHTTP}else{let{preview,response,data}=await stringifyBody(res);try{let remoteHTTP=await parseRefsAdResponse([data],{service});return remoteHTTP.auth=auth,remoteHTTP}catch{throw new SmartHttpError(preview,response)}}}static async connect({http,onProgress,corsProxy,service,url,auth,body,headers}){let urlAuth=extractAuthFromUrl(url);urlAuth&&(url=urlAuth.url),corsProxy&&(url=corsProxify(corsProxy,url)),headers["content-type"]=`application/x-${service}-request`,headers.accept=`application/x-${service}-result`,updateHeaders(headers,auth);let res=await http.request({onProgress,method:"POST",url:`${url}/${service}`,body,headers});if(res.statusCode!==200){let{response}=stringifyBody(res);throw new HttpError(res.statusCode,res.statusMessage,response)}return res}},GitRemoteManager=class{static getRemoteHelperFor({url}){let remoteHelpers=new Map;remoteHelpers.set("http",GitRemoteHTTP),remoteHelpers.set("https",GitRemoteHTTP);let parts=parseRemoteUrl({url});if(!parts)throw new UrlParseError(url);if(remoteHelpers.has(parts.transport))return remoteHelpers.get(parts.transport);throw new UnknownTransportError(url,parts.transport,parts.transport==="ssh"?translateSSHtoHTTP(url):void 0)}};function parseRemoteUrl({url}){if(url.startsWith("git@"))return{transport:"ssh",address:url};let matches=url.match(/(\w+)(:\/\/|::)(.*)/);if(matches!==null){if(matches[2]==="://")return{transport:matches[1],address:matches[0]};if(matches[2]==="::")return{transport:matches[1],address:matches[3]}}}var lock$2=null,GitShallowManager=class{static async read({fs,gitdir}){lock$2===null&&(lock$2=new AsyncLock);let filepath=join2(gitdir,"shallow"),oids=new Set;return await lock$2.acquire(filepath,async function(){let text=await fs.read(filepath,{encoding:"utf8"});if(text===null||text.trim()==="")return oids;text.trim().split(`
68
+ `).map(oid=>oids.add(oid))}),oids}static async write({fs,gitdir,oids}){lock$2===null&&(lock$2=new AsyncLock);let filepath=join2(gitdir,"shallow");if(oids.size>0){let text=[...oids].join(`
69
+ `)+`
70
+ `;await lock$2.acquire(filepath,async function(){await fs.write(filepath,text,{encoding:"utf8"})})}else await lock$2.acquire(filepath,async function(){await fs.rm(filepath)})}};async function hasObjectLoose({fs,gitdir,oid}){let source=`objects/${oid.slice(0,2)}/${oid.slice(2)}`;return fs.exists(`${gitdir}/${source}`)}async function hasObjectPacked({fs,cache,gitdir,oid,getExternalRefDelta}){let list=await fs.readdir(join2(gitdir,"objects/pack"));list=list.filter(x=>x.endsWith(".idx"));for(let filename of list){let indexFile=packIndexCacheKey(gitdir,filename),p=await readPackIndex({fs,cache,filename:indexFile,getExternalRefDelta});if(p.error)throw new InternalError(p.error);if(p.offsets.has(oid))return!0}return!1}async function hasObject({fs,cache,gitdir,oid,format="content"}){let getExternalRefDelta=oid2=>_readObject({fs,cache,gitdir,oid:oid2}),result=await hasObjectLoose({fs,gitdir,oid});return result||(result=await hasObjectPacked({fs,cache,gitdir,oid,getExternalRefDelta})),result}function emptyPackfile(pack){let header="5041434b"+"00000002"+"00000000";return pack.slice(0,12).toString("hex")===header}function filterCapabilities(server,client){let serverNames=server.map(cap=>cap.split("=",1)[0]);return client.filter(cap=>{let name=cap.split("=",1)[0];return serverNames.includes(name)})}var pkg={name:"@ashishkumar472/cf-git",version:"1.0.4",agent:"git/cf-git@1.0.4"},FIFO=class{constructor(){this._queue=[]}write(chunk){if(this._ended)throw Error("You cannot write to a FIFO that has already been ended!");if(this._waiting){let resolve=this._waiting;this._waiting=null,resolve({value:chunk})}else this._queue.push(chunk)}end(){if(this._ended=!0,this._waiting){let resolve=this._waiting;this._waiting=null,resolve({done:!0})}}destroy(err){this.error=err,this.end()}async next(){if(this._queue.length>0)return{value:this._queue.shift()};if(this._ended)return{done:!0};if(this._waiting)throw Error("You cannot call read until the previous call to read has returned!");return new Promise(resolve=>{this._waiting=resolve})}};function findSplit(str){let r=str.indexOf("\r"),n=str.indexOf(`
71
+ `);return r===-1&&n===-1?-1:r===-1?n+1:n===-1?r+1:n===r+1?n+1:Math.min(r,n)+1}function splitLines(input){let output=new FIFO,tmp="";return(async()=>(await forAwait(input,chunk=>{for(chunk=chunk.toString("utf8"),tmp+=chunk;;){let i=findSplit(tmp);if(i===-1)break;output.write(tmp.slice(0,i)),tmp=tmp.slice(i)}}),tmp.length>0&&output.write(tmp),output.end()))(),output}var GitSideBand=class{static demux(input){let read=GitPktLine.streamReader(input),packetlines=new FIFO,packfile=new FIFO,progress=new FIFO,nextBit=async function(){let line=await read();if(line===null)return nextBit();if(line===!0){packetlines.end(),progress.end(),input.error?packfile.destroy(input.error):packfile.end();return}switch(line[0]){case 1:{packfile.write(line.slice(1));break}case 2:{progress.write(line.slice(1));break}case 3:{let error=line.slice(1);progress.write(error),packetlines.end(),progress.end(),packfile.destroy(new Error(error.toString("utf8")));return}default:packetlines.write(line)}nextBit()};return nextBit(),{packetlines,packfile,progress}}};async function parseUploadPackResponse(stream){let{packetlines,packfile,progress}=GitSideBand.demux(stream),shallows=[],unshallows=[],acks=[],nak=!1,done=!1;return new Promise((resolve,reject)=>{forAwait(packetlines,data=>{let line=data.toString("utf8").trim();if(line.startsWith("shallow")){let oid=line.slice(-41).trim();oid.length!==40&&reject(new InvalidOidError(oid)),shallows.push(oid)}else if(line.startsWith("unshallow")){let oid=line.slice(-41).trim();oid.length!==40&&reject(new InvalidOidError(oid)),unshallows.push(oid)}else if(line.startsWith("ACK")){let[,oid,status2]=line.split(" ");acks.push({oid,status:status2}),status2||(done=!0)}else line.startsWith("NAK")?(nak=!0,done=!0):(done=!0,nak=!0);done&&(stream.error?reject(stream.error):resolve({shallows,unshallows,acks,nak,packfile,progress}))}).finally(()=>{done||(stream.error?reject(stream.error):resolve({shallows,unshallows,acks,nak,packfile,progress}))})})}function writeUploadPackRequest({capabilities=[],wants=[],haves=[],shallows=[],depth=null,since=null,exclude=[]}){let packstream=[];wants=[...new Set(wants)];let firstLineCapabilities=` ${capabilities.join(" ")}`;for(let oid of wants)packstream.push(GitPktLine.encode(`want ${oid}${firstLineCapabilities}
72
+ `)),firstLineCapabilities="";for(let oid of shallows)packstream.push(GitPktLine.encode(`shallow ${oid}
73
+ `));depth!==null&&packstream.push(GitPktLine.encode(`deepen ${depth}
74
+ `)),since!==null&&packstream.push(GitPktLine.encode(`deepen-since ${Math.floor(since.valueOf()/1e3)}
75
+ `));for(let oid of exclude)packstream.push(GitPktLine.encode(`deepen-not ${oid}
76
+ `));packstream.push(GitPktLine.flush());for(let oid of haves)packstream.push(GitPktLine.encode(`have ${oid}
77
+ `));return packstream.push(GitPktLine.encode(`done
78
+ `)),packstream}async function _fetch({fs,cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,gitdir,ref:_ref,remoteRef:_remoteRef,remote:_remote,url:_url,corsProxy,depth=null,since=null,exclude=[],relative=!1,tags=!1,singleBranch=!1,headers={},prune=!1,pruneTags=!1}){let ref=_ref||await _currentBranch({fs,gitdir,test:!0}),config=await GitConfigManager.get({fs,gitdir}),remote=_remote||ref&&await config.get(`branch.${ref}.remote`)||"origin",url=_url||await config.get(`remote.${remote}.url`);if(typeof url>"u")throw new MissingParameterError("remote OR url");let remoteRef=_remoteRef||ref&&await config.get(`branch.${ref}.merge`)||_ref||"HEAD";corsProxy===void 0&&(corsProxy=await config.get("http.corsProxy"));let GitRemoteHTTP2=GitRemoteManager.getRemoteHelperFor({url}),remoteHTTP=await GitRemoteHTTP2.discover({http,onAuth,onAuthSuccess,onAuthFailure,corsProxy,service:"git-upload-pack",url,headers,protocolVersion:1}),auth=remoteHTTP.auth,remoteRefs=remoteHTTP.refs;if(remoteRefs.size===0)return{defaultBranch:null,fetchHead:null,fetchHeadDescription:null};if(depth!==null&&!remoteHTTP.capabilities.has("shallow"))throw new RemoteCapabilityError("shallow","depth");if(since!==null&&!remoteHTTP.capabilities.has("deepen-since"))throw new RemoteCapabilityError("deepen-since","since");if(exclude.length>0&&!remoteHTTP.capabilities.has("deepen-not"))throw new RemoteCapabilityError("deepen-not","exclude");if(relative===!0&&!remoteHTTP.capabilities.has("deepen-relative"))throw new RemoteCapabilityError("deepen-relative","relative");let{oid,fullref}=GitRefManager.resolveAgainstMap({ref:remoteRef,map:remoteRefs});for(let remoteRef2 of remoteRefs.keys())remoteRef2===fullref||remoteRef2==="HEAD"||remoteRef2.startsWith("refs/heads/")||tags&&remoteRef2.startsWith("refs/tags/")||remoteRefs.delete(remoteRef2);let capabilities=filterCapabilities([...remoteHTTP.capabilities],["multi_ack_detailed","no-done","side-band-64k","ofs-delta",`agent=${pkg.agent}`]);relative&&capabilities.push("deepen-relative");let wants=singleBranch?[oid]:remoteRefs.values(),haveRefs=singleBranch?[ref]:await GitRefManager.listRefs({fs,gitdir,filepath:"refs"}),haves=[];for(let ref2 of haveRefs)try{ref2=await GitRefManager.expand({fs,gitdir,ref:ref2});let oid2=await GitRefManager.resolve({fs,gitdir,ref:ref2});await hasObject({fs,cache,gitdir,oid:oid2})&&haves.push(oid2)}catch{}haves=[...new Set(haves)];let oids=await GitShallowManager.read({fs,gitdir}),shallows=remoteHTTP.capabilities.has("shallow")?[...oids]:[],packstream=writeUploadPackRequest({capabilities,wants,haves,shallows,depth,since,exclude}),packbuffer=Buffer.from(await collect(packstream)),raw=await GitRemoteHTTP2.connect({http,onProgress,corsProxy,service:"git-upload-pack",url,auth,body:[packbuffer],headers}),response=await parseUploadPackResponse(raw.body);raw.headers&&(response.headers=raw.headers);for(let oid2 of response.shallows)if(!oids.has(oid2))try{let{object}=await _readObject({fs,cache,gitdir,oid:oid2}),commit2=new GitCommit(object),hasParents=await Promise.all(commit2.headers().parent.map(oid3=>hasObject({fs,cache,gitdir,oid:oid3})));hasParents.length===0||hasParents.every(has=>has)||oids.add(oid2)}catch{oids.add(oid2)}for(let oid2 of response.unshallows)oids.delete(oid2);if(await GitShallowManager.write({fs,gitdir,oids}),singleBranch){let refs=new Map([[fullref,oid]]),symrefs=new Map,bail=10,key=fullref;for(;bail--;){let value=remoteHTTP.symrefs.get(key);if(value===void 0)break;symrefs.set(key,value),key=value}let realRef=remoteRefs.get(key);realRef&&refs.set(key,realRef);let{pruned}=await GitRefManager.updateRemoteRefs({fs,gitdir,remote,refs,symrefs,tags,prune});prune&&(response.pruned=pruned)}else{let{pruned}=await GitRefManager.updateRemoteRefs({fs,gitdir,remote,refs:remoteRefs,symrefs:remoteHTTP.symrefs,tags,prune,pruneTags});prune&&(response.pruned=pruned)}if(response.HEAD=remoteHTTP.symrefs.get("HEAD"),response.HEAD===void 0){let{oid:oid2}=GitRefManager.resolveAgainstMap({ref:"HEAD",map:remoteRefs});for(let[key,value]of remoteRefs.entries())if(key!=="HEAD"&&value===oid2){response.HEAD=key;break}}let noun=fullref.startsWith("refs/tags")?"tag":"branch";if(response.FETCH_HEAD={oid,description:`${noun} '${abbreviateRef(fullref)}' of ${url}`},onProgress||onMessage){let lines=splitLines(response.progress);forAwait(lines,async line=>{if(onMessage&&await onMessage(line),onProgress){let matches=line.match(/([^:]*).*\((\d+?)\/(\d+?)\)/);matches&&await onProgress({phase:matches[1].trim(),loaded:parseInt(matches[2],10),total:parseInt(matches[3],10)})}})}let packfile=Buffer.from(await collect(response.packfile));if(raw.body.error)throw raw.body.error;let packfileSha=packfile.slice(-20).toString("hex"),res={defaultBranch:response.HEAD,fetchHead:response.FETCH_HEAD.oid,fetchHeadDescription:response.FETCH_HEAD.description};if(response.headers&&(res.headers=response.headers),prune&&(res.pruned=response.pruned),packfileSha!==""&&!emptyPackfile(packfile)){res.packfile=`objects/pack/pack-${packfileSha}.pack`;let fullpath=join2(gitdir,res.packfile);await fs.write(fullpath,packfile);let getExternalRefDelta=oid2=>_readObject({fs,cache,gitdir,oid:oid2}),idx=await GitPackIndex.fromPack({pack:packfile,getExternalRefDelta,onProgress}),idxPath=fullpath.replace(/\.pack$/,".idx");await fs.write(idxPath,await idx.toBuffer()),seedPackfileCache({cache,gitdir,packfileSha,index:idx})}return res}async function _init({fs,bare=!1,dir,gitdir=bare?dir:join2(dir,".git"),defaultBranch="master"}){if(await fs.exists(gitdir+"/config"))return;let folders=["hooks","info","objects/info","objects/pack","refs/heads","refs/tags"];folders=folders.map(dir2=>gitdir+"/"+dir2);for(let folder of folders)await fs.mkdir(folder);await fs.write(gitdir+"/config",`[core]
79
+ repositoryformatversion = 0
80
+ filemode = true
81
+ bare = ${bare}
82
+ `+(bare?"":` logallrefupdates = true
83
+ `)),await fs.write(gitdir+"/HEAD",`ref: refs/heads/${defaultBranch}
84
+ `)}async function _clone({fs,cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,onPostCheckout,dir,gitdir,url,corsProxy,ref,remote,depth,since,exclude,relative,singleBranch,noCheckout,noTags,headers,nonBlocking,batchSize=100}){try{if(await _init({fs,gitdir}),await _addRemote({fs,gitdir,remote,url,force:!1}),corsProxy){let config=await GitConfigManager.get({fs,gitdir});await config.set("http.corsProxy",corsProxy),await GitConfigManager.save({fs,gitdir,config})}let{defaultBranch,fetchHead}=await _fetch({fs,cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,gitdir,ref,remote,corsProxy,depth,since,exclude,relative,singleBranch,headers,tags:!noTags});if(fetchHead===null){let head=await _currentBranch({fs,gitdir,fullname:!0}),config=await GitConfigManager.get({fs,gitdir});singleBranch&&await config.set(`remote.${remote}.fetch`,void 0),await config.set(`branch.${abbreviateRef(head)}.remote`,remote),await config.set(`branch.${abbreviateRef(head)}.merge`,head),await GitConfigManager.save({fs,gitdir,config});return}if(ref=ref||defaultBranch,ref=ref.replace("refs/heads/",""),await _checkout({fs,cache,onProgress,onPostCheckout,dir,gitdir,ref,remote,noCheckout,nonBlocking,batchSize}),singleBranch){let fullref=await GitRefManager.expand({fs,gitdir,ref}),refspec=fullref.startsWith("refs/heads/")?`+${fullref}:refs/remotes/${remote}/${abbreviateRef(fullref)}`:fullref.startsWith("refs/tags/")?`+${fullref}:${fullref}`:null;if(refspec){let config=await GitConfigManager.get({fs,gitdir});await config.set(`remote.${remote}.fetch`,refspec),await GitConfigManager.save({fs,gitdir,config})}}}catch(err){throw await fs.rmdir(gitdir,{recursive:!0,maxRetries:10}).catch(()=>{}),err}}async function clone({fs,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,onPostCheckout,dir,gitdir=join2(dir,".git"),url,corsProxy=void 0,ref=void 0,remote="origin",depth=void 0,since=void 0,exclude=[],relative=!1,singleBranch=!1,noCheckout=!1,noTags=!1,headers={},cache={},nonBlocking=!1,batchSize=100}){try{return assertParameter("fs",fs),assertParameter("http",http),assertParameter("gitdir",gitdir),noCheckout||assertParameter("dir",dir),assertParameter("url",url),await _clone({fs:new FileSystem(fs),cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,onPostCheckout,dir,gitdir,url,corsProxy,ref,remote,depth,since,exclude,relative,singleBranch,noCheckout,noTags,headers,nonBlocking,batchSize})}catch(err){throw err.caller="git.clone",err}}async function commit({fs:_fs,onSign,dir,gitdir=join2(dir,".git"),message,author,committer,signingKey,amend=!1,dryRun=!1,noUpdateBranch=!1,ref,parent,tree,cache={},rawMessage=!1}){try{assertParameter("fs",_fs),amend||assertParameter("message",message),signingKey&&assertParameter("onSign",onSign);let fs=new FileSystem(_fs);return await _commit({fs,cache,onSign,gitdir,message,author,committer,signingKey,amend,dryRun,noUpdateBranch,ref,parent,tree,rawMessage})}catch(err){throw err.caller="git.commit",err}}async function currentBranch({fs,dir,gitdir=join2(dir,".git"),fullname=!1,test=!1}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),await _currentBranch({fs:new FileSystem(fs),gitdir,fullname,test})}catch(err){throw err.caller="git.currentBranch",err}}async function _deleteBranch({fs,gitdir,ref}){if(ref=ref.startsWith("refs/heads/")?ref:`refs/heads/${ref}`,!await GitRefManager.exists({fs,gitdir,ref}))throw new NotFoundError(ref);let fullRef=await GitRefManager.expand({fs,gitdir,ref}),currentRef=await _currentBranch({fs,gitdir,fullname:!0});if(fullRef===currentRef){let value=await GitRefManager.resolve({fs,gitdir,ref:fullRef});await GitRefManager.writeRef({fs,gitdir,ref:"HEAD",value})}await GitRefManager.deleteRef({fs,gitdir,ref:fullRef});let abbrevRef=abbreviateRef(ref),config=await GitConfigManager.get({fs,gitdir});await config.deleteSection("branch",abbrevRef),await GitConfigManager.save({fs,gitdir,config})}async function deleteBranch({fs,dir,gitdir=join2(dir,".git"),ref}){try{return assertParameter("fs",fs),assertParameter("ref",ref),await _deleteBranch({fs:new FileSystem(fs),gitdir,ref})}catch(err){throw err.caller="git.deleteBranch",err}}async function deleteRef({fs,dir,gitdir=join2(dir,".git"),ref}){try{assertParameter("fs",fs),assertParameter("ref",ref),await GitRefManager.deleteRef({fs:new FileSystem(fs),gitdir,ref})}catch(err){throw err.caller="git.deleteRef",err}}async function _deleteRemote({fs,gitdir,remote}){let config=await GitConfigManager.get({fs,gitdir});await config.deleteSection("remote",remote),await GitConfigManager.save({fs,gitdir,config})}async function deleteRemote({fs,dir,gitdir=join2(dir,".git"),remote}){try{return assertParameter("fs",fs),assertParameter("remote",remote),await _deleteRemote({fs:new FileSystem(fs),gitdir,remote})}catch(err){throw err.caller="git.deleteRemote",err}}async function _deleteTag({fs,gitdir,ref}){ref=ref.startsWith("refs/tags/")?ref:`refs/tags/${ref}`,await GitRefManager.deleteRef({fs,gitdir,ref})}async function deleteTag({fs,dir,gitdir=join2(dir,".git"),ref}){try{return assertParameter("fs",fs),assertParameter("ref",ref),await _deleteTag({fs:new FileSystem(fs),gitdir,ref})}catch(err){throw err.caller="git.deleteTag",err}}async function expandOidLoose({fs,gitdir,oid:short}){let prefix=short.slice(0,2);return(await fs.readdir(`${gitdir}/objects/${prefix}`)).map(suffix=>`${prefix}${suffix}`).filter(_oid=>_oid.startsWith(short))}async function expandOidPacked({fs,cache,gitdir,oid:short,getExternalRefDelta}){let results=[],list=await fs.readdir(join2(gitdir,"objects/pack"));list=list.filter(x=>x.endsWith(".idx"));for(let filename of list){let indexFile=packIndexCacheKey(gitdir,filename),p=await readPackIndex({fs,cache,filename:indexFile,getExternalRefDelta});if(p.error)throw new InternalError(p.error);for(let oid of p.offsets.keys())oid.startsWith(short)&&results.push(oid)}return results}async function _expandOid({fs,cache,gitdir,oid:short}){let getExternalRefDelta=oid=>_readObject({fs,cache,gitdir,oid}),results=await expandOidLoose({fs,gitdir,oid:short}),packedOids=await expandOidPacked({fs,cache,gitdir,oid:short,getExternalRefDelta});for(let packedOid of packedOids)results.indexOf(packedOid)===-1&&results.push(packedOid);if(results.length===1)return results[0];throw results.length>1?new AmbiguousError("oids",short,results):new NotFoundError(`an object matching "${short}"`)}async function expandOid({fs,dir,gitdir=join2(dir,".git"),oid,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("oid",oid),await _expandOid({fs:new FileSystem(fs),cache,gitdir,oid})}catch(err){throw err.caller="git.expandOid",err}}async function expandRef({fs,dir,gitdir=join2(dir,".git"),ref}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref),await GitRefManager.expand({fs:new FileSystem(fs),gitdir,ref})}catch(err){throw err.caller="git.expandRef",err}}async function _findMergeBase({fs,cache,gitdir,oids}){let visits={},passes=oids.length,heads=oids.map((oid,index3)=>({index:index3,oid}));for(;heads.length;){let result=new Set;for(let{oid,index:index3}of heads)visits[oid]||(visits[oid]=new Set),visits[oid].add(index3),visits[oid].size===passes&&result.add(oid);if(result.size>0)return[...result];let newheads=new Map;for(let{oid,index:index3}of heads)try{let{object}=await _readObject({fs,cache,gitdir,oid}),commit2=GitCommit.from(object),{parent}=commit2.parseHeaders();for(let oid2 of parent)(!visits[oid2]||!visits[oid2].has(index3))&&newheads.set(oid2+":"+index3,{oid:oid2,index:index3})}catch{}heads=Array.from(newheads.values())}return[]}var LINEBREAKS=/^.*(\r?\n|$)/gm;function mergeFile({branches,contents}){let ourName=branches[1],theirName=branches[2],baseContent=contents[0],ourContent=contents[1],theirContent=contents[2],ours=ourContent.match(LINEBREAKS),base=baseContent.match(LINEBREAKS),theirs=theirContent.match(LINEBREAKS),result=(0,import_diff3.default)(ours,base,theirs),markerSize=7,mergedText="",cleanMerge=!0;for(let item of result)item.ok&&(mergedText+=item.ok.join("")),item.conflict&&(cleanMerge=!1,mergedText+=`${"<".repeat(markerSize)} ${ourName}
85
+ `,mergedText+=item.conflict.a.join(""),mergedText+=`${"=".repeat(markerSize)}
86
+ `,mergedText+=item.conflict.b.join(""),mergedText+=`${">".repeat(markerSize)} ${theirName}
87
+ `);return{cleanMerge,mergedText}}async function mergeTree({fs,cache,dir,gitdir=join2(dir,".git"),index:index3,ourOid,baseOid,theirOid,ourName="ours",baseName="base",theirName="theirs",dryRun=!1,abortOnConflict=!0,mergeDriver}){let ourTree=TREE({ref:ourOid}),baseTree=TREE({ref:baseOid}),theirTree=TREE({ref:theirOid}),unmergedFiles=[],bothModified=[],deleteByUs=[],deleteByTheirs=[],results=await _walk({fs,cache,dir,gitdir,trees:[ourTree,baseTree,theirTree],map:async function(filepath,[ours,base,theirs]){let path=basename(filepath),ourChange=await modified(ours,base),theirChange=await modified(theirs,base);switch(`${ourChange}-${theirChange}`){case"false-false":return{mode:await base.mode(),path,oid:await base.oid(),type:await base.type()};case"false-true":return!theirs&&await ours.type()==="tree"?{mode:await ours.mode(),path,oid:await ours.oid(),type:await ours.type()}:theirs?{mode:await theirs.mode(),path,oid:await theirs.oid(),type:await theirs.type()}:void 0;case"true-false":return!ours&&await theirs.type()==="tree"?{mode:await theirs.mode(),path,oid:await theirs.oid(),type:await theirs.type()}:ours?{mode:await ours.mode(),path,oid:await ours.oid(),type:await ours.type()}:void 0;case"true-true":{if(ours&&theirs&&await ours.type()==="tree"&&await theirs.type()==="tree")return{mode:await ours.mode(),path,oid:await ours.oid(),type:"tree"};if(ours&&theirs&&await ours.type()==="blob"&&await theirs.type()==="blob")return mergeBlobs({fs,gitdir,path,ours,base,theirs,ourName,baseName,theirName,mergeDriver}).then(async r=>{if(r.cleanMerge)abortOnConflict||index3.insert({filepath,oid:r.mergeResult.oid,stage:0});else if(unmergedFiles.push(filepath),bothModified.push(filepath),!abortOnConflict){let baseOid2="";base&&await base.type()==="blob"&&(baseOid2=await base.oid());let ourOid2=await ours.oid(),theirOid2=await theirs.oid();index3.delete({filepath}),baseOid2&&index3.insert({filepath,oid:baseOid2,stage:1}),index3.insert({filepath,oid:ourOid2,stage:2}),index3.insert({filepath,oid:theirOid2,stage:3})}return r.mergeResult});if(base&&!ours&&theirs&&await base.type()==="blob"&&await theirs.type()==="blob"){if(unmergedFiles.push(filepath),deleteByUs.push(filepath),!abortOnConflict){let baseOid2=await base.oid(),theirOid2=await theirs.oid();index3.delete({filepath}),index3.insert({filepath,oid:baseOid2,stage:1}),index3.insert({filepath,oid:theirOid2,stage:3})}return{mode:await theirs.mode(),oid:await theirs.oid(),type:"blob",path}}if(base&&ours&&!theirs&&await base.type()==="blob"&&await ours.type()==="blob"){if(unmergedFiles.push(filepath),deleteByTheirs.push(filepath),!abortOnConflict){let baseOid2=await base.oid(),ourOid2=await ours.oid();index3.delete({filepath}),index3.insert({filepath,oid:baseOid2,stage:1}),index3.insert({filepath,oid:ourOid2,stage:2})}return{mode:await ours.mode(),oid:await ours.oid(),type:"blob",path}}if(base&&!ours&&!theirs&&(await base.type()==="blob"||await base.type()==="tree"))return;throw new MergeNotSupportedError}}},reduce:unmergedFiles.length!==0&&(!dir||abortOnConflict)?void 0:async(parent,children)=>{let entries=children.filter(Boolean);if(parent&&!(parent&&parent.type==="tree"&&entries.length===0&&parent.path!==".")){if(entries.length>0||parent.path==="."&&entries.length===0){let object=new GitTree(entries).toObject(),oid=await _writeObject({fs,gitdir,type:"tree",object,dryRun});parent.oid=oid}return parent}}});return unmergedFiles.length!==0?(dir&&!abortOnConflict&&await _walk({fs,cache,dir,gitdir,trees:[TREE({ref:results.oid})],map:async function(filepath,[entry]){let path=`${dir}/${filepath}`;if(await entry.type()==="blob"){let mode=await entry.mode(),content=new TextDecoder().decode(await entry.content());await fs.write(path,content,{mode})}return!0}}),new MergeConflictError(unmergedFiles,bothModified,deleteByUs,deleteByTheirs)):results.oid}async function mergeBlobs({fs,gitdir,path,ours,base,theirs,ourName,theirName,baseName,dryRun,mergeDriver=mergeFile}){let type="blob",baseMode="100755",baseOid="",baseContent="";base&&await base.type()==="blob"&&(baseMode=await base.mode(),baseOid=await base.oid(),baseContent=Buffer.from(await base.content()).toString("utf8"));let mode=baseMode===await ours.mode()?await theirs.mode():await ours.mode();if(await ours.oid()===await theirs.oid())return{cleanMerge:!0,mergeResult:{mode,path,oid:await ours.oid(),type}};if(await ours.oid()===baseOid)return{cleanMerge:!0,mergeResult:{mode,path,oid:await theirs.oid(),type}};if(await theirs.oid()===baseOid)return{cleanMerge:!0,mergeResult:{mode,path,oid:await ours.oid(),type}};let ourContent=Buffer.from(await ours.content()).toString("utf8"),theirContent=Buffer.from(await theirs.content()).toString("utf8"),{mergedText,cleanMerge}=await mergeDriver({branches:[baseName,ourName,theirName],contents:[baseContent,ourContent,theirContent],path}),oid=await _writeObject({fs,gitdir,type:"blob",object:Buffer.from(mergedText,"utf8"),dryRun});return{cleanMerge,mergeResult:{mode,path,oid,type}}}async function _merge({fs,cache,dir,gitdir,ours,theirs,fastForward:fastForward2=!0,fastForwardOnly=!1,dryRun=!1,noUpdateBranch=!1,abortOnConflict=!0,message,author,committer,signingKey,onSign,mergeDriver,allowUnrelatedHistories=!1}){ours===void 0&&(ours=await _currentBranch({fs,gitdir,fullname:!0})),ours=await GitRefManager.expand({fs,gitdir,ref:ours}),theirs=await GitRefManager.expand({fs,gitdir,ref:theirs});let ourOid=await GitRefManager.resolve({fs,gitdir,ref:ours}),theirOid=await GitRefManager.resolve({fs,gitdir,ref:theirs}),baseOids=await _findMergeBase({fs,cache,gitdir,oids:[ourOid,theirOid]});if(baseOids.length!==1)if(baseOids.length===0&&allowUnrelatedHistories)baseOids.push("4b825dc642cb6eb9a060e54bf8d69288fbee4904");else throw new MergeNotSupportedError;let baseOid=baseOids[0];if(baseOid===theirOid)return{oid:ourOid,alreadyMerged:!0};if(fastForward2&&baseOid===ourOid)return!dryRun&&!noUpdateBranch&&await GitRefManager.writeRef({fs,gitdir,ref:ours,value:theirOid}),{oid:theirOid,fastForward:!0};{if(fastForwardOnly)throw new FastForwardError;let tree=await GitIndexManager.acquire({fs,gitdir,cache,allowUnmerged:!1},async index3=>mergeTree({fs,cache,dir,gitdir,index:index3,ourOid,theirOid,baseOid,ourName:abbreviateRef(ours),baseName:"base",theirName:abbreviateRef(theirs),dryRun,abortOnConflict,mergeDriver}));if(tree instanceof MergeConflictError)throw tree;return message||(message=`Merge branch '${abbreviateRef(theirs)}' into ${abbreviateRef(ours)}`),{oid:await _commit({fs,cache,gitdir,message,ref:ours,tree,parent:[ourOid,theirOid],author,committer,signingKey,onSign,dryRun,noUpdateBranch}),tree,mergeCommit:!0}}}async function _pull({fs,cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,dir,gitdir,ref,url,remote,remoteRef,prune,pruneTags,fastForward:fastForward2,fastForwardOnly,corsProxy,singleBranch,headers,author,committer,signingKey}){try{if(!ref){let head=await _currentBranch({fs,gitdir});if(!head)throw new MissingParameterError("ref");ref=head}let{fetchHead,fetchHeadDescription}=await _fetch({fs,cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,gitdir,corsProxy,ref,url,remote,remoteRef,singleBranch,headers,prune,pruneTags}),ours=await _currentBranch({fs,gitdir,fullname:!0})||"HEAD",merged=await _merge({fs,cache,gitdir,ours,theirs:fetchHead,fastForward:fastForward2,fastForwardOnly,message:`Merge ${fetchHeadDescription}`,author,committer,signingKey,dryRun:!1,noUpdateBranch:!0});merged.alreadyMerged||(await _checkout({fs,cache,onProgress,dir,gitdir,ref:merged.oid,remote,noCheckout:!1,noUpdateHead:!0,conflictOperation:"merge"}),await GitRefManager.writeRef({fs,gitdir,ref:ours,value:merged.oid}))}catch(err){throw err.caller="git.pull",err}}async function fastForward({fs,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,dir,gitdir=join2(dir,".git"),ref,url,remote,remoteRef,corsProxy,singleBranch,headers={},cache={}}){try{assertParameter("fs",fs),assertParameter("http",http),assertParameter("gitdir",gitdir);let thisWillNotBeUsed={name:"",email:"",timestamp:Date.now(),timezoneOffset:0};return await _pull({fs:new FileSystem(fs),cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,dir,gitdir,ref,url,remote,remoteRef,fastForwardOnly:!0,corsProxy,singleBranch,headers,author:thisWillNotBeUsed,committer:thisWillNotBeUsed})}catch(err){throw err.caller="git.fastForward",err}}async function fetch2({fs,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,dir,gitdir=join2(dir,".git"),ref,remote,remoteRef,url,corsProxy,depth=null,since=null,exclude=[],relative=!1,tags=!1,singleBranch=!1,headers={},prune=!1,pruneTags=!1,cache={}}){try{return assertParameter("fs",fs),assertParameter("http",http),assertParameter("gitdir",gitdir),await _fetch({fs:new FileSystem(fs),cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,gitdir,ref,remote,remoteRef,url,corsProxy,depth,since,exclude,relative,tags,singleBranch,headers,prune,pruneTags})}catch(err){throw err.caller="git.fetch",err}}async function findMergeBase({fs,dir,gitdir=join2(dir,".git"),oids,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("oids",oids),await _findMergeBase({fs:new FileSystem(fs),cache,gitdir,oids})}catch(err){throw err.caller="git.findMergeBase",err}}async function _findRoot({fs,filepath}){if(await fs.exists(join2(filepath,".git")))return filepath;{let parent=dirname(filepath);if(parent===filepath)throw new NotFoundError(`git root for ${filepath}`);return _findRoot({fs,filepath:parent})}}async function findRoot({fs,filepath}){try{return assertParameter("fs",fs),assertParameter("filepath",filepath),await _findRoot({fs:new FileSystem(fs),filepath})}catch(err){throw err.caller="git.findRoot",err}}async function getConfig({fs,dir,gitdir=join2(dir,".git"),path}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("path",path),await _getConfig({fs:new FileSystem(fs),gitdir,path})}catch(err){throw err.caller="git.getConfig",err}}async function _getConfigAll({fs,gitdir,path}){return(await GitConfigManager.get({fs,gitdir})).getall(path)}async function getConfigAll({fs,dir,gitdir=join2(dir,".git"),path}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("path",path),await _getConfigAll({fs:new FileSystem(fs),gitdir,path})}catch(err){throw err.caller="git.getConfigAll",err}}async function getRemoteInfo({http,onAuth,onAuthSuccess,onAuthFailure,corsProxy,url,headers={},forPush=!1}){try{assertParameter("http",http),assertParameter("url",url);let remote=await GitRemoteManager.getRemoteHelperFor({url}).discover({http,onAuth,onAuthSuccess,onAuthFailure,corsProxy,service:forPush?"git-receive-pack":"git-upload-pack",url,headers,protocolVersion:1}),result={capabilities:[...remote.capabilities]};for(let[ref,oid]of remote.refs){let parts=ref.split("/"),last=parts.pop(),o=result;for(let part of parts)o[part]=o[part]||{},o=o[part];o[last]=oid}for(let[symref,ref]of remote.symrefs){let parts=symref.split("/"),last=parts.pop(),o=result;for(let part of parts)o[part]=o[part]||{},o=o[part];o[last]=ref}return result}catch(err){throw err.caller="git.getRemoteInfo",err}}function formatInfoRefs(remote,prefix,symrefs,peelTags){let refs=[];for(let[key,value]of remote.refs){if(prefix&&!key.startsWith(prefix))continue;if(key.endsWith("^{}")){if(peelTags){let _key=key.replace("^{}",""),last=refs[refs.length-1],r=last.ref===_key?last:refs.find(x=>x.ref===_key);if(r===void 0)throw new Error("I did not expect this to happen");r.peeled=value}continue}let ref={ref:key,oid:value};symrefs&&remote.symrefs.has(key)&&(ref.target=remote.symrefs.get(key)),refs.push(ref)}return refs}async function getRemoteInfo2({http,onAuth,onAuthSuccess,onAuthFailure,corsProxy,url,headers={},forPush=!1,protocolVersion=2}){try{assertParameter("http",http),assertParameter("url",url);let remote=await GitRemoteManager.getRemoteHelperFor({url}).discover({http,onAuth,onAuthSuccess,onAuthFailure,corsProxy,service:forPush?"git-receive-pack":"git-upload-pack",url,headers,protocolVersion});if(remote.protocolVersion===2)return{protocolVersion:remote.protocolVersion,capabilities:remote.capabilities2};let capabilities={};for(let cap of remote.capabilities){let[key,value]=cap.split("=");value?capabilities[key]=value:capabilities[key]=!0}return{protocolVersion:1,capabilities,refs:formatInfoRefs(remote,void 0,!0,!0)}}catch(err){throw err.caller="git.getRemoteInfo2",err}}async function hashObject({type,object,format="content",oid=void 0}){return format!=="deflated"&&(format!=="wrapped"&&(object=GitObject.wrap({type,object})),oid=await shasum(object)),{oid,object}}async function hashBlob({object}){try{assertParameter("object",object),typeof object=="string"?object=Buffer.from(object,"utf8"):object instanceof Uint8Array||(object=new Uint8Array(object));let type="blob",{oid,object:_object}=await hashObject({type,format:"content",object});return{oid,type,object:_object,format:"wrapped"}}catch(err){throw err.caller="git.hashBlob",err}}async function _indexPack({fs,cache,onProgress,dir,gitdir,filepath}){try{filepath=join2(dir,filepath);let pack=await fs.read(filepath),getExternalRefDelta=oid=>_readObject({fs,cache,gitdir,oid}),idx=await GitPackIndex.fromPack({pack,getExternalRefDelta,onProgress});return await fs.write(filepath.replace(/\.pack$/,".idx"),await idx.toBuffer()),{oids:[...idx.hashes]}}catch(err){throw err.caller="git.indexPack",err}}async function indexPack({fs,onProgress,dir,gitdir=join2(dir,".git"),filepath,cache={}}){try{return assertParameter("fs",fs),assertParameter("dir",dir),assertParameter("gitdir",dir),assertParameter("filepath",filepath),await _indexPack({fs:new FileSystem(fs),cache,onProgress,dir,gitdir,filepath})}catch(err){throw err.caller="git.indexPack",err}}async function init({fs,bare=!1,dir,gitdir=bare?dir:join2(dir,".git"),defaultBranch="master"}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),bare||assertParameter("dir",dir),await _init({fs:new FileSystem(fs),bare,dir,gitdir,defaultBranch})}catch(err){throw err.caller="git.init",err}}async function _isDescendent({fs,cache,gitdir,oid,ancestor,depth}){let shallows=await GitShallowManager.read({fs,gitdir});if(!oid)throw new MissingParameterError("oid");if(!ancestor)throw new MissingParameterError("ancestor");if(oid===ancestor)return!1;let queue=[oid],visited=new Set,searchdepth=0;for(;queue.length;){if(searchdepth++===depth)throw new MaxDepthError(depth);let oid2=queue.shift(),{type,object}=await _readObject({fs,cache,gitdir,oid:oid2});if(type!=="commit")throw new ObjectTypeError(oid2,type,"commit");let commit2=GitCommit.from(object).parse();for(let parent of commit2.parent)if(parent===ancestor)return!0;if(!shallows.has(oid2))for(let parent of commit2.parent)visited.has(parent)||(queue.push(parent),visited.add(parent))}return!1}async function isDescendent({fs,dir,gitdir=join2(dir,".git"),oid,ancestor,depth=-1,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("oid",oid),assertParameter("ancestor",ancestor),await _isDescendent({fs:new FileSystem(fs),cache,gitdir,oid,ancestor,depth})}catch(err){throw err.caller="git.isDescendent",err}}async function isIgnored({fs,dir,gitdir=join2(dir,".git"),filepath}){try{return assertParameter("fs",fs),assertParameter("dir",dir),assertParameter("gitdir",gitdir),assertParameter("filepath",filepath),GitIgnoreManager.isIgnored({fs:new FileSystem(fs),dir,gitdir,filepath})}catch(err){throw err.caller="git.isIgnored",err}}async function listBranches({fs,dir,gitdir=join2(dir,".git"),remote}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),GitRefManager.listBranches({fs:new FileSystem(fs),gitdir,remote})}catch(err){throw err.caller="git.listBranches",err}}async function _listFiles({fs,gitdir,ref,cache}){if(ref){let oid=await GitRefManager.resolve({gitdir,fs,ref}),filenames=[];return await accumulateFilesFromOid({fs,cache,gitdir,oid,filenames,prefix:""}),filenames}else return GitIndexManager.acquire({fs,gitdir,cache},async function(index3){return index3.entries.map(x=>x.path)})}async function accumulateFilesFromOid({fs,cache,gitdir,oid,filenames,prefix}){let{tree}=await _readTree({fs,cache,gitdir,oid});for(let entry of tree)entry.type==="tree"?await accumulateFilesFromOid({fs,cache,gitdir,oid:entry.oid,filenames,prefix:join2(prefix,entry.path)}):filenames.push(join2(prefix,entry.path))}async function listFiles({fs,dir,gitdir=join2(dir,".git"),ref,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),await _listFiles({fs:new FileSystem(fs),cache,gitdir,ref})}catch(err){throw err.caller="git.listFiles",err}}async function _listNotes({fs,cache,gitdir,ref}){let parent;try{parent=await GitRefManager.resolve({gitdir,fs,ref})}catch(err){if(err instanceof NotFoundError)return[]}return(await _readTree({fs,cache,gitdir,oid:parent})).tree.map(entry=>({target:entry.path,note:entry.oid}))}async function listNotes({fs,dir,gitdir=join2(dir,".git"),ref="refs/notes/commits",cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref),await _listNotes({fs:new FileSystem(fs),cache,gitdir,ref})}catch(err){throw err.caller="git.listNotes",err}}async function listRefs({fs,dir,gitdir=join2(dir,".git"),filepath}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),GitRefManager.listRefs({fs:new FileSystem(fs),gitdir,filepath})}catch(err){throw err.caller="git.listRefs",err}}async function _listRemotes({fs,gitdir}){let config=await GitConfigManager.get({fs,gitdir}),remoteNames=await config.getSubsections("remote");return Promise.all(remoteNames.map(async remote=>{let url=await config.get(`remote.${remote}.url`);return{remote,url}}))}async function listRemotes({fs,dir,gitdir=join2(dir,".git")}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),await _listRemotes({fs:new FileSystem(fs),gitdir})}catch(err){throw err.caller="git.listRemotes",err}}async function parseListRefsResponse(stream){let read=GitPktLine.streamReader(stream),refs=[],line;for(;line=await read(),line!==!0;){if(line===null)continue;line=line.toString("utf8").replace(/\n$/,"");let[oid,ref,...attrs]=line.split(" "),r={ref,oid};for(let attr of attrs){let[name,value]=attr.split(":");name==="symref-target"?r.target=value:name==="peeled"&&(r.peeled=value)}refs.push(r)}return refs}async function writeListRefsRequest({prefix,symrefs,peelTags}){let packstream=[];return packstream.push(GitPktLine.encode(`command=ls-refs
88
+ `)),packstream.push(GitPktLine.encode(`agent=${pkg.agent}
89
+ `)),(peelTags||symrefs||prefix)&&packstream.push(GitPktLine.delim()),peelTags&&packstream.push(GitPktLine.encode("peel")),symrefs&&packstream.push(GitPktLine.encode("symrefs")),prefix&&packstream.push(GitPktLine.encode(`ref-prefix ${prefix}`)),packstream.push(GitPktLine.flush()),packstream}async function listServerRefs({http,onAuth,onAuthSuccess,onAuthFailure,corsProxy,url,headers={},forPush=!1,protocolVersion=2,prefix,symrefs,peelTags}){try{assertParameter("http",http),assertParameter("url",url);let remote=await GitRemoteHTTP.discover({http,onAuth,onAuthSuccess,onAuthFailure,corsProxy,service:forPush?"git-receive-pack":"git-upload-pack",url,headers,protocolVersion});if(remote.protocolVersion===1)return formatInfoRefs(remote,prefix,symrefs,peelTags);let body=await writeListRefsRequest({prefix,symrefs,peelTags}),res=await GitRemoteHTTP.connect({http,auth:remote.auth,headers,corsProxy,service:forPush?"git-receive-pack":"git-upload-pack",url,body});return parseListRefsResponse(res.body)}catch(err){throw err.caller="git.listServerRefs",err}}async function listTags({fs,dir,gitdir=join2(dir,".git")}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),GitRefManager.listTags({fs:new FileSystem(fs),gitdir})}catch(err){throw err.caller="git.listTags",err}}function compareAge(a,b){return a.committer.timestamp-b.committer.timestamp}var EMPTY_OID="e69de29bb2d1d6434b8b29ae775ad8c2e48c5391";async function resolveFileIdInTree({fs,cache,gitdir,oid,fileId}){if(fileId===EMPTY_OID)return;let _oid=oid,filepath,result=await resolveTree({fs,cache,gitdir,oid}),tree=result.tree;return fileId===result.oid?filepath=result.path:(filepath=await _resolveFileId({fs,cache,gitdir,tree,fileId,oid:_oid}),Array.isArray(filepath)&&(filepath.length===0?filepath=void 0:filepath.length===1&&(filepath=filepath[0]))),filepath}async function _resolveFileId({fs,cache,gitdir,tree,fileId,oid,filepaths=[],parentPath=""}){let walks=tree.entries().map(function(entry){let result;return entry.oid===fileId?(result=join2(parentPath,entry.path),filepaths.push(result)):entry.type==="tree"&&(result=_readObject({fs,cache,gitdir,oid:entry.oid}).then(function({object}){return _resolveFileId({fs,cache,gitdir,tree:GitTree.from(object),fileId,oid,filepaths,parentPath:join2(parentPath,entry.path)})})),result});return await Promise.all(walks),filepaths}async function _log({fs,cache,gitdir,filepath,ref,depth,since,force,follow}){let sinceTimestamp=typeof since>"u"?void 0:Math.floor(since.valueOf()/1e3),commits=[],shallowCommits=await GitShallowManager.read({fs,gitdir}),oid=await GitRefManager.resolve({fs,gitdir,ref}),tips=[await _readCommit({fs,cache,gitdir,oid})],lastFileOid,lastCommit,isOk;function endCommit(commit2){isOk&&filepath&&commits.push(commit2)}for(;tips.length>0;){let commit2=tips.pop();if(sinceTimestamp!==void 0&&commit2.commit.committer.timestamp<=sinceTimestamp)break;if(filepath){let vFileOid;try{vFileOid=await resolveFilepath({fs,cache,gitdir,oid:commit2.commit.tree,filepath}),lastCommit&&lastFileOid!==vFileOid&&commits.push(lastCommit),lastFileOid=vFileOid,lastCommit=commit2,isOk=!0}catch(e){if(e instanceof NotFoundError){let found=follow&&lastFileOid;if(found&&(found=await resolveFileIdInTree({fs,cache,gitdir,oid:commit2.commit.tree,fileId:lastFileOid}),found))if(Array.isArray(found)){if(lastCommit){let lastFound=await resolveFileIdInTree({fs,cache,gitdir,oid:lastCommit.commit.tree,fileId:lastFileOid});if(Array.isArray(lastFound))if(found=found.filter(p=>lastFound.indexOf(p)===-1),found.length===1)found=found[0],filepath=found,lastCommit&&commits.push(lastCommit);else{found=!1,lastCommit&&commits.push(lastCommit);break}}}else filepath=found,lastCommit&&commits.push(lastCommit);if(!found){if(isOk&&lastFileOid&&(commits.push(lastCommit),!force))break;if(!force&&!follow)throw e}lastCommit=commit2,isOk=!1}else throw e}}else commits.push(commit2);if(depth!==void 0&&commits.length===depth){endCommit(commit2);break}if(!shallowCommits.has(commit2.oid))for(let oid2 of commit2.commit.parent){let commit3=await _readCommit({fs,cache,gitdir,oid:oid2});tips.map(commit4=>commit4.oid).includes(commit3.oid)||tips.push(commit3)}tips.length===0&&endCommit(commit2),tips.sort((a,b)=>compareAge(a.commit,b.commit))}return commits}async function log({fs,dir,gitdir=join2(dir,".git"),filepath,ref="HEAD",depth,since,force,follow,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref),await _log({fs:new FileSystem(fs),cache,gitdir,filepath,ref,depth,since,force,follow})}catch(err){throw err.caller="git.log",err}}async function merge({fs:_fs,onSign,dir,gitdir=join2(dir,".git"),ours,theirs,fastForward:fastForward2=!0,fastForwardOnly=!1,dryRun=!1,noUpdateBranch=!1,abortOnConflict=!0,message,author:_author,committer:_committer,signingKey,cache={},mergeDriver,allowUnrelatedHistories=!1}){try{assertParameter("fs",_fs),signingKey&&assertParameter("onSign",onSign);let fs=new FileSystem(_fs),author=await normalizeAuthorObject({fs,gitdir,author:_author});if(!author&&(!fastForwardOnly||!fastForward2))throw new MissingNameError("author");let committer=await normalizeCommitterObject({fs,gitdir,author,committer:_committer});if(!committer&&(!fastForwardOnly||!fastForward2))throw new MissingNameError("committer");return await _merge({fs,cache,dir,gitdir,ours,theirs,fastForward:fastForward2,fastForwardOnly,dryRun,noUpdateBranch,abortOnConflict,message,author,committer,signingKey,onSign,mergeDriver,allowUnrelatedHistories})}catch(err){throw err.caller="git.merge",err}}var types={commit:16,tree:32,blob:48,tag:64,ofs_delta:96,ref_delta:112};var Hash=class{constructor(){this.data=[]}update(chunk){return this.data.push(chunk),this}digest(){let totalLength=this.data.reduce((sum,arr)=>sum+arr.length,0),combined=new Uint8Array(totalLength),offset=0;for(let chunk of this.data)combined.set(chunk,offset),offset+=chunk.length;if(typeof crypto<"u"&&crypto.subtle&&crypto.subtle.digestSync){let hashBuffer=crypto.subtle.digestSync("SHA-1",combined);return Buffer.from(hashBuffer)}let hash=createHash("sha1");return hash.update(combined),hash.digest()}};async function _pack({fs,cache,dir,gitdir=join2(dir,".git"),oids}){let hash=new Hash,outputStream=[];function write(chunk,enc){let buff=Buffer.from(chunk,enc);outputStream.push(buff),hash.update(buff)}async function writeObject2({stype,object}){let type=types[stype],length=object.length,multibyte=length>15?128:0,lastFour=length&15;length=length>>>4;let byte=(multibyte|type|lastFour).toString(16);for(write(byte,"hex");multibyte;)multibyte=length>127?128:0,byte=multibyte|length&127,write(padHex(2,byte),"hex"),length=length>>>7;write(Buffer.from(await deflate(object)))}write("PACK"),write("00000002","hex"),write(padHex(8,oids.length),"hex");for(let oid of oids){let{type,object}=await _readObject({fs,cache,gitdir,oid});await writeObject2({write,object,stype:type})}let digest=hash.digest();return outputStream.push(digest),outputStream}async function _packObjects({fs,cache,gitdir,oids,write}){let buffers=await _pack({fs,cache,gitdir,oids}),packfile=Buffer.from(await collect(buffers)),filename=`pack-${packfile.slice(-20).toString("hex")}.pack`;return write?(await fs.write(join2(gitdir,`objects/pack/${filename}`),packfile),{filename}):{filename,packfile:new Uint8Array(packfile)}}async function packObjects({fs,dir,gitdir=join2(dir,".git"),oids,write=!1,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("oids",oids),await _packObjects({fs:new FileSystem(fs),cache,gitdir,oids,write})}catch(err){throw err.caller="git.packObjects",err}}async function pull({fs:_fs,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,dir,gitdir=join2(dir,".git"),ref,url,remote,remoteRef,prune=!1,pruneTags=!1,fastForward:fastForward2=!0,fastForwardOnly=!1,corsProxy,singleBranch,headers={},author:_author,committer:_committer,signingKey,cache={}}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir);let fs=new FileSystem(_fs),author=await normalizeAuthorObject({fs,gitdir,author:_author});if(!author)throw new MissingNameError("author");let committer=await normalizeCommitterObject({fs,gitdir,author,committer:_committer});if(!committer)throw new MissingNameError("committer");return await _pull({fs,cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,dir,gitdir,ref,url,remote,remoteRef,fastForward:fastForward2,fastForwardOnly,corsProxy,singleBranch,headers,author,committer,signingKey,prune,pruneTags})}catch(err){throw err.caller="git.pull",err}}async function listCommitsAndTags({fs,cache,dir,gitdir=join2(dir,".git"),start,finish}){let shallows=await GitShallowManager.read({fs,gitdir}),startingSet=new Set,finishingSet=new Set;for(let ref of start)startingSet.add(await GitRefManager.resolve({fs,gitdir,ref}));for(let ref of finish)try{let oid=await GitRefManager.resolve({fs,gitdir,ref});finishingSet.add(oid)}catch{}let visited=new Set;async function walk2(oid){visited.add(oid);let{type,object}=await _readObject({fs,cache,gitdir,oid});if(type==="tag"){let commit2=GitAnnotatedTag.from(object).headers().object;return walk2(commit2)}if(type!=="commit")throw new ObjectTypeError(oid,type,"commit");if(!shallows.has(oid)){let parents=GitCommit.from(object).headers().parent;for(oid of parents)!finishingSet.has(oid)&&!visited.has(oid)&&await walk2(oid)}}for(let oid of startingSet)await walk2(oid);return visited}async function listObjects({fs,cache,dir,gitdir=join2(dir,".git"),oids}){let visited=new Set;async function walk2(oid){if(visited.has(oid))return;visited.add(oid);let{type,object}=await _readObject({fs,cache,gitdir,oid});if(type==="tag"){let obj=GitAnnotatedTag.from(object).headers().object;await walk2(obj)}else if(type==="commit"){let tree=GitCommit.from(object).headers().tree;await walk2(tree)}else if(type==="tree"){let tree=GitTree.from(object);for(let entry of tree)entry.type==="blob"&&visited.add(entry.oid),entry.type==="tree"&&await walk2(entry.oid)}}for(let oid of oids)await walk2(oid);return visited}async function parseReceivePackResponse(packfile){let result={},response="",read=GitPktLine.streamReader(packfile),line=await read();for(;line!==!0;)line!==null&&(response+=line.toString("utf8")+`
90
+ `),line=await read();let lines=response.toString("utf8").split(`
91
+ `);if(line=lines.shift(),!line.startsWith("unpack "))throw new ParseError('unpack ok" or "unpack [error message]',line);result.ok=line==="unpack ok",result.ok||(result.error=line.slice(7)),result.refs={};for(let line2 of lines){if(line2.trim()==="")continue;let status2=line2.slice(0,2),refAndMessage=line2.slice(3),space=refAndMessage.indexOf(" ");space===-1&&(space=refAndMessage.length);let ref=refAndMessage.slice(0,space),error=refAndMessage.slice(space+1);result.refs[ref]={ok:status2==="ok",error}}return result}async function writeReceivePackRequest({capabilities=[],triplets=[]}){let packstream=[],capsFirstLine=`\0 ${capabilities.join(" ")}`;for(let trip of triplets)packstream.push(GitPktLine.encode(`${trip.oldoid} ${trip.oid} ${trip.fullRef}${capsFirstLine}
92
+ `)),capsFirstLine="";return packstream.push(GitPktLine.flush()),packstream}async function _push({fs,cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,onPrePush,gitdir,ref:_ref,remoteRef:_remoteRef,remote,url:_url,force=!1,delete:_delete=!1,corsProxy,headers={}}){let ref=_ref||await _currentBranch({fs,gitdir});if(typeof ref>"u")throw new MissingParameterError("ref");let config=await GitConfigManager.get({fs,gitdir});remote=remote||await config.get(`branch.${ref}.pushRemote`)||await config.get("remote.pushDefault")||await config.get(`branch.${ref}.remote`)||"origin";let url=_url||await config.get(`remote.${remote}.pushurl`)||await config.get(`remote.${remote}.url`);if(typeof url>"u")throw new MissingParameterError("remote OR url");let remoteRef=_remoteRef||await config.get(`branch.${ref}.merge`);if(typeof url>"u")throw new MissingParameterError("remoteRef");corsProxy===void 0&&(corsProxy=await config.get("http.corsProxy"));let fullRef=await GitRefManager.expand({fs,gitdir,ref}),oid=_delete?"0000000000000000000000000000000000000000":await GitRefManager.resolve({fs,gitdir,ref:fullRef}),GitRemoteHTTP2=GitRemoteManager.getRemoteHelperFor({url}),httpRemote=await GitRemoteHTTP2.discover({http,onAuth,onAuthSuccess,onAuthFailure,corsProxy,service:"git-receive-pack",url,headers,protocolVersion:1}),auth=httpRemote.auth,fullRemoteRef;if(!remoteRef)fullRemoteRef=fullRef;else try{fullRemoteRef=await GitRefManager.expandAgainstMap({ref:remoteRef,map:httpRemote.refs})}catch(err){if(err instanceof NotFoundError)fullRemoteRef=remoteRef.startsWith("refs/")?remoteRef:`refs/heads/${remoteRef}`;else throw err}let oldoid=httpRemote.refs.get(fullRemoteRef)||"0000000000000000000000000000000000000000";if(onPrePush&&!await onPrePush({remote,url,localRef:{ref:_delete?"(delete)":fullRef,oid},remoteRef:{ref:fullRemoteRef,oid:oldoid}}))throw new UserCanceledError;let thinPack=!httpRemote.capabilities.has("no-thin"),objects=new Set;if(!_delete){let finish=[...httpRemote.refs.values()],skipObjects=new Set;if(oldoid!=="0000000000000000000000000000000000000000"){let mergebase=await _findMergeBase({fs,cache,gitdir,oids:[oid,oldoid]});for(let oid2 of mergebase)finish.push(oid2);thinPack&&(skipObjects=await listObjects({fs,cache,gitdir,oids:mergebase}))}if(!finish.includes(oid)){let commits=await listCommitsAndTags({fs,cache,gitdir,start:[oid],finish});objects=await listObjects({fs,cache,gitdir,oids:commits})}if(thinPack){try{let ref2=await GitRefManager.resolve({fs,gitdir,ref:`refs/remotes/${remote}/HEAD`,depth:2}),{oid:oid2}=await GitRefManager.resolveAgainstMap({ref:ref2.replace(`refs/remotes/${remote}/`,""),fullref:ref2,map:httpRemote.refs}),oids=[oid2];for(let oid3 of await listObjects({fs,cache,gitdir,oids}))skipObjects.add(oid3)}catch{}for(let oid2 of skipObjects)objects.delete(oid2)}if(oid===oldoid&&(force=!0),!force){if(fullRef.startsWith("refs/tags")&&oldoid!=="0000000000000000000000000000000000000000")throw new PushRejectedError("tag-exists");if(oid!=="0000000000000000000000000000000000000000"&&oldoid!=="0000000000000000000000000000000000000000"&&!await _isDescendent({fs,cache,gitdir,oid,ancestor:oldoid,depth:-1}))throw new PushRejectedError("not-fast-forward")}}let capabilities=filterCapabilities([...httpRemote.capabilities],["report-status","side-band-64k",`agent=${pkg.agent}`]),packstream1=await writeReceivePackRequest({capabilities,triplets:[{oldoid,oid,fullRef:fullRemoteRef}]}),packstream2=_delete?[]:await _pack({fs,cache,gitdir,oids:[...objects]}),res=await GitRemoteHTTP2.connect({http,onProgress,corsProxy,service:"git-receive-pack",url,auth,headers,body:[...packstream1,...packstream2]}),{packfile,progress}=await GitSideBand.demux(res.body);if(onMessage){let lines=splitLines(progress);forAwait(lines,async line=>{await onMessage(line)})}let result=await parseReceivePackResponse(packfile);if(res.headers&&(result.headers=res.headers),remote&&result.ok&&result.refs[fullRemoteRef].ok&&!fullRef.startsWith("refs/tags")){let ref2=`refs/remotes/${remote}/${fullRemoteRef.replace("refs/heads","")}`;_delete?await GitRefManager.deleteRef({fs,gitdir,ref:ref2}):await GitRefManager.writeRef({fs,gitdir,ref:ref2,value:oid})}if(result.ok&&Object.values(result.refs).every(result2=>result2.ok))return result;{let prettyDetails=Object.entries(result.refs).filter(([k,v])=>!v.ok).map(([k,v])=>`
93
+ - ${k}: ${v.error}`).join("");throw new GitPushError(prettyDetails,result)}}async function push({fs,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,onPrePush,dir,gitdir=join2(dir,".git"),ref,remoteRef,remote="origin",url,force=!1,delete:_delete=!1,corsProxy,headers={},cache={}}){try{return assertParameter("fs",fs),assertParameter("http",http),assertParameter("gitdir",gitdir),await _push({fs:new FileSystem(fs),cache,http,onProgress,onMessage,onAuth,onAuthSuccess,onAuthFailure,onPrePush,gitdir,ref,remoteRef,remote,url,force,delete:_delete,corsProxy,headers})}catch(err){throw err.caller="git.push",err}}async function resolveBlob({fs,cache,gitdir,oid}){let{type,object}=await _readObject({fs,cache,gitdir,oid});if(type==="tag")return oid=GitAnnotatedTag.from(object).parse().object,resolveBlob({fs,cache,gitdir,oid});if(type!=="blob")throw new ObjectTypeError(oid,type,"blob");return{oid,blob:new Uint8Array(object)}}async function _readBlob({fs,cache,gitdir,oid,filepath=void 0}){return filepath!==void 0&&(oid=await resolveFilepath({fs,cache,gitdir,oid,filepath})),await resolveBlob({fs,cache,gitdir,oid})}async function readBlob({fs,dir,gitdir=join2(dir,".git"),oid,filepath,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("oid",oid),await _readBlob({fs:new FileSystem(fs),cache,gitdir,oid,filepath})}catch(err){throw err.caller="git.readBlob",err}}async function readCommit({fs,dir,gitdir=join2(dir,".git"),oid,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("oid",oid),await _readCommit({fs:new FileSystem(fs),cache,gitdir,oid})}catch(err){throw err.caller="git.readCommit",err}}async function _readNote({fs,cache,gitdir,ref="refs/notes/commits",oid}){let parent=await GitRefManager.resolve({gitdir,fs,ref}),{blob}=await _readBlob({fs,cache,gitdir,oid:parent,filepath:oid});return blob}async function readNote({fs,dir,gitdir=join2(dir,".git"),ref="refs/notes/commits",oid,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref),assertParameter("oid",oid),await _readNote({fs:new FileSystem(fs),cache,gitdir,ref,oid})}catch(err){throw err.caller="git.readNote",err}}async function readObject({fs:_fs,dir,gitdir=join2(dir,".git"),oid,format="parsed",filepath=void 0,encoding=void 0,cache={}}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("oid",oid);let fs=new FileSystem(_fs);filepath!==void 0&&(oid=await resolveFilepath({fs,cache,gitdir,oid,filepath}));let result=await _readObject({fs,cache,gitdir,oid,format:format==="parsed"?"content":format});if(result.oid=oid,format==="parsed")switch(result.format="parsed",result.type){case"commit":result.object=GitCommit.from(result.object).parse();break;case"tree":result.object=GitTree.from(result.object).entries();break;case"blob":encoding?result.object=result.object.toString(encoding):(result.object=new Uint8Array(result.object),result.format="content");break;case"tag":result.object=GitAnnotatedTag.from(result.object).parse();break;default:throw new ObjectTypeError(result.oid,result.type,"blob|commit|tag|tree")}else(result.format==="deflated"||result.format==="wrapped")&&(result.type=result.format);return result}catch(err){throw err.caller="git.readObject",err}}async function _readTag({fs,cache,gitdir,oid}){let{type,object}=await _readObject({fs,cache,gitdir,oid,format:"content"});if(type!=="tag")throw new ObjectTypeError(oid,type,"tag");let tag2=GitAnnotatedTag.from(object);return{oid,tag:tag2.parse(),payload:tag2.payload()}}async function readTag({fs,dir,gitdir=join2(dir,".git"),oid,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("oid",oid),await _readTag({fs:new FileSystem(fs),cache,gitdir,oid})}catch(err){throw err.caller="git.readTag",err}}async function readTree({fs,dir,gitdir=join2(dir,".git"),oid,filepath=void 0,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("oid",oid),await _readTree({fs:new FileSystem(fs),cache,gitdir,oid,filepath})}catch(err){throw err.caller="git.readTree",err}}async function remove({fs:_fs,dir,gitdir=join2(dir,".git"),filepath,cache={}}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("filepath",filepath),await GitIndexManager.acquire({fs:new FileSystem(_fs),gitdir,cache},async function(index3){for(let path of Array.isArray(filepath)?filepath:[filepath])index3.delete({filepath:path})})}catch(err){throw err.caller="git.remove",err}}async function stage({fs:_fs,dir,gitdir=join2(dir,".git"),add:addPaths=[],remove:removePaths=[],cache={},force=!1,parallel=!0}){try{assertParameter("fs",_fs),assertParameter("dir",dir),assertParameter("gitdir",gitdir);let fs=new FileSystem(_fs),pending=PendingRefresh.get(cache)||[];if(PendingRefresh.delete(cache),addPaths.length===0&&removePaths.length===0&&pending.length===0)return;await GitIndexManager.acquire({fs,gitdir,cache},async index3=>{applyRefresh(index3,pending);for(let path of removePaths)index3.delete({filepath:path});if(addPaths.length===0)return;let autocrlf=await(await GitConfigManager.get({fs,gitdir})).get("core.autocrlf");return addToIndex({dir,gitdir,fs,filepath:addPaths,index:index3,force,parallel,autocrlf})})}catch(err){throw err.caller="git.stage",err}}async function _removeNote({fs,cache,onSign,gitdir,ref="refs/notes/commits",oid,author,committer,signingKey}){let parent;try{parent=await GitRefManager.resolve({gitdir,fs,ref})}catch(err){if(!(err instanceof NotFoundError))throw err}let tree=(await _readTree({fs,gitdir,oid:parent||"4b825dc642cb6eb9a060e54bf8d69288fbee4904"})).tree;tree=tree.filter(entry=>entry.path!==oid);let treeOid=await _writeTree({fs,gitdir,tree});return await _commit({fs,cache,onSign,gitdir,ref,tree:treeOid,parent:parent&&[parent],message:`Note removed by 'isomorphic-git removeNote'
94
+ `,author,committer,signingKey})}async function removeNote({fs:_fs,onSign,dir,gitdir=join2(dir,".git"),ref="refs/notes/commits",oid,author:_author,committer:_committer,signingKey,cache={}}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("oid",oid);let fs=new FileSystem(_fs),author=await normalizeAuthorObject({fs,gitdir,author:_author});if(!author)throw new MissingNameError("author");let committer=await normalizeCommitterObject({fs,gitdir,author,committer:_committer});if(!committer)throw new MissingNameError("committer");return await _removeNote({fs,cache,onSign,gitdir,ref,oid,author,committer,signingKey})}catch(err){throw err.caller="git.removeNote",err}}async function _renameBranch({fs,gitdir,oldref,ref,checkout:checkout2=!1}){if(!(0,import_is_git_ref_name_valid.default)(ref,!0))throw new InvalidRefNameError(ref,import_clean_git_ref.default.clean(ref));if(!(0,import_is_git_ref_name_valid.default)(oldref,!0))throw new InvalidRefNameError(oldref,import_clean_git_ref.default.clean(oldref));let fulloldref=`refs/heads/${oldref}`,fullnewref=`refs/heads/${ref}`;if(await GitRefManager.exists({fs,gitdir,ref:fullnewref}))throw new AlreadyExistsError("branch",ref,!1);let value=await GitRefManager.resolve({fs,gitdir,ref:fulloldref,depth:1});await GitRefManager.writeRef({fs,gitdir,ref:fullnewref,value}),await GitRefManager.deleteRef({fs,gitdir,ref:fulloldref});let isCurrentBranch=await _currentBranch({fs,gitdir,fullname:!0})===fulloldref;(checkout2||isCurrentBranch)&&await GitRefManager.writeSymbolicRef({fs,gitdir,ref:"HEAD",value:fullnewref})}async function renameBranch({fs,dir,gitdir=join2(dir,".git"),ref,oldref,checkout:checkout2=!1}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref),assertParameter("oldref",oldref),await _renameBranch({fs:new FileSystem(fs),gitdir,ref,oldref,checkout:checkout2})}catch(err){throw err.caller="git.renameBranch",err}}async function hashObject$1({gitdir,type,object}){return shasum(GitObject.wrap({type,object}))}async function resetIndex({fs:_fs,dir,gitdir=join2(dir,".git"),filepath,ref,cache={}}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("filepath",filepath);let fs=new FileSystem(_fs),oid,workdirOid;try{oid=await GitRefManager.resolve({fs,gitdir,ref:ref||"HEAD"})}catch(e){if(ref)throw e}if(oid)try{oid=await resolveFilepath({fs,cache,gitdir,oid,filepath})}catch{oid=null}let stats={ctime:new Date(0),mtime:new Date(0),dev:0,ino:0,mode:0,uid:0,gid:0,size:0},object=dir&&await fs.read(join2(dir,filepath));object&&(workdirOid=await hashObject$1({gitdir,type:"blob",object}),oid===workdirOid&&(stats=await fs.lstat(join2(dir,filepath)))),await GitIndexManager.acquire({fs,gitdir,cache},async function(index3){index3.delete({filepath}),oid&&index3.insert({filepath,stats,oid})})}catch(err){throw err.caller="git.reset",err}}async function resolveRef({fs,dir,gitdir=join2(dir,".git"),ref,depth}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref),await GitRefManager.resolve({fs:new FileSystem(fs),gitdir,ref,depth})}catch(err){throw err.caller="git.resolveRef",err}}async function setConfig({fs:_fs,dir,gitdir=join2(dir,".git"),path,value,append=!1}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("path",path);let fs=new FileSystem(_fs),config=await GitConfigManager.get({fs,gitdir});append?await config.append(path,value):await config.set(path,value),await GitConfigManager.save({fs,gitdir,config})}catch(err){throw err.caller="git.setConfig",err}}async function _writeCommit({fs,gitdir,commit:commit2}){let object=GitCommit.from(commit2).toObject();return await _writeObject({fs,gitdir,type:"commit",object,format:"content"})}var GitRefStash=class _GitRefStash{static get timezoneOffsetForRefLogEntry(){let offsetMinutes=new Date().getTimezoneOffset(),offsetHours=Math.abs(Math.floor(offsetMinutes/60)),offsetMinutesFormatted=Math.abs(offsetMinutes%60).toString().padStart(2,"0");return`${offsetMinutes>0?"-":"+"}${offsetHours.toString().padStart(2,"0")}${offsetMinutesFormatted}`}static createStashReflogEntry(author,stashCommit,message){let nameNoSpace=author.name.replace(/\s/g,""),z40="0000000000000000000000000000000000000000",timestamp=Math.floor(Date.now()/1e3),timezoneOffset=_GitRefStash.timezoneOffsetForRefLogEntry;return`${z40} ${stashCommit} ${nameNoSpace} ${author.email} ${timestamp} ${timezoneOffset} ${message}
95
+ `}static getStashReflogEntry(reflogString,parsed=!1){return reflogString.split(`
96
+ `).filter(l=>l).reverse().map((line,idx)=>parsed?`stash@{${idx}}: ${line.split(" ")[1]}`:line)}},_TreeMap={stage:STAGE,workdir:WORKDIR},lock$3;async function acquireLock$1(ref,callback){return lock$3===void 0&&(lock$3=new AsyncLock),lock$3.run(ref,callback)}async function checkAndWriteBlob(fs,gitdir,dir,filepath,oid=null){let currentFilepath=join2(dir,filepath),stats=await fs.lstat(currentFilepath);if(!stats)throw new NotFoundError(currentFilepath);if(stats.isDirectory())throw new InternalError(`${currentFilepath}: file expected, but found directory`);let objContent=oid?await readObjectLoose({fs,gitdir,oid}):void 0,retOid=objContent?oid:void 0;return objContent||await acquireLock$1({fs,gitdir,currentFilepath},async()=>{let object=stats.isSymbolicLink()?await fs.readlink(currentFilepath).then(posixifyPathBuffer):await fs.read(currentFilepath);if(object===null)throw new NotFoundError(currentFilepath);retOid=await _writeObject({fs,gitdir,type:"blob",object})}),retOid}async function processTreeEntries({fs,dir,gitdir,entries}){async function processTreeEntry(entry){if(entry.type==="tree"){if(!entry.oid){let children=await Promise.all(entry.children.map(processTreeEntry));entry.oid=await _writeTree({fs,gitdir,tree:children}),entry.mode=16384}}else entry.type==="blob"&&(entry.oid=await checkAndWriteBlob(fs,gitdir,dir,entry.path,entry.oid),entry.mode=33188);return entry.path=entry.path.split("/").pop(),entry}return Promise.all(entries.map(processTreeEntry))}async function writeTreeChanges({fs,dir,gitdir,treePair}){let isStage=treePair[1]==="stage",trees=treePair.map(t=>typeof t=="string"?_TreeMap[t]():t),changedEntries=[],entries=await _walk({fs,cache:{},dir,gitdir,trees,map:async(filepath,[head,stage2])=>{if(!(filepath==="."||await GitIgnoreManager.isIgnored({fs,dir,gitdir,filepath}))&&stage2)return(!head||await head.oid()!==await stage2.oid()&&await stage2.oid()!==void 0)&&changedEntries.push([head,stage2]),{mode:await stage2.mode(),path:filepath,oid:await stage2.oid(),type:await stage2.type()}},reduce:async(parent,children)=>(children=children.filter(Boolean),parent?(parent.children=children,parent):children.length>0?children:void 0),iterate:async(walk2,children)=>{let filtered=[];for(let child of children){let[head,stage2]=child;isStage?stage2&&(await fs.exists(`${dir}/${stage2.toString()}`)?filtered.push(child):changedEntries.push([null,stage2])):head&&(stage2?filtered.push(child):changedEntries.push([head,null]))}return filtered.length?Promise.all(filtered.map(walk2)):[]}});if(changedEntries.length===0||entries.length===0)return null;let treeEntries=(await processTreeEntries({fs,dir,gitdir,entries})).filter(Boolean).map(entry=>({mode:entry.mode,path:entry.path,oid:entry.oid,type:entry.type}));return _writeTree({fs,gitdir,tree:treeEntries})}async function applyTreeChanges({fs,dir,gitdir,stashCommit,parentCommit,wasStaged}){let dirRemoved=[],stageUpdated=[],ops=await _walk({fs,cache:{},dir,gitdir,trees:[TREE({ref:parentCommit}),TREE({ref:stashCommit})],map:async(filepath,[parent,stash2])=>{if(filepath==="."||await GitIgnoreManager.isIgnored({fs,dir,gitdir,filepath}))return;let type=stash2?await stash2.type():await parent.type();if(type!=="tree"&&type!=="blob")return;if(!stash2&&parent){let method=type==="tree"?"rmdir":"rm";return type==="tree"&&dirRemoved.push(filepath),type==="blob"&&wasStaged&&stageUpdated.push({filepath,oid:await parent.oid()}),{method,filepath}}let oid=await stash2.oid();if(!parent||await parent.oid()!==oid)return type==="tree"?{method:"mkdir",filepath}:(wasStaged&&stageUpdated.push({filepath,oid,stats:await fs.lstat(join2(dir,filepath))}),{method:"write",filepath,oid})}});await acquireLock$1({fs,gitdir,dirRemoved,ops},async()=>{for(let op of ops){let currentFilepath=join2(dir,op.filepath);switch(op.method){case"rmdir":await fs.rmdir(currentFilepath);break;case"mkdir":await fs.mkdir(currentFilepath);break;case"rm":await fs.rm(currentFilepath);break;case"write":if(!dirRemoved.some(removedDir=>currentFilepath.startsWith(removedDir))){let{object}=await _readObject({fs,cache:{},gitdir,oid:op.oid});await fs.exists(currentFilepath)&&await fs.rm(currentFilepath),await fs.write(currentFilepath,object)}break}}}),await GitIndexManager.acquire({fs,gitdir,cache:{}},async index3=>{stageUpdated.forEach(({filepath,stats,oid})=>{index3.insert({filepath,stats,oid})})})}var GitStashManager=class _GitStashManager{constructor({fs,dir,gitdir=join2(dir,".git")}){Object.assign(this,{fs,dir,gitdir,_author:null})}static get refStash(){return"refs/stash"}static get refLogsStash(){return"logs/refs/stash"}get refStashPath(){return join2(this.gitdir,_GitStashManager.refStash)}get refLogsStashPath(){return join2(this.gitdir,_GitStashManager.refLogsStash)}async getAuthor(){if(!this._author&&(this._author=await normalizeAuthorObject({fs:this.fs,gitdir:this.gitdir,author:{}}),!this._author))throw new MissingNameError("author");return this._author}async getStashSHA(refIdx,stashEntries){return await this.fs.exists(this.refStashPath)?(stashEntries||await this.readStashReflogs({parsed:!1}))[refIdx].split(" ")[1]:null}async writeStashCommit({message,tree,parent}){return _writeCommit({fs:this.fs,gitdir:this.gitdir,commit:{message,tree,parent,author:await this.getAuthor(),committer:await this.getAuthor()}})}async readStashCommit(refIdx){let stashEntries=await this.readStashReflogs({parsed:!1});if(refIdx!==0&&(refIdx<0||refIdx>stashEntries.length-1))throw new InvalidRefNameError(`stash@${refIdx}`,"number that is in range of [0, num of stash pushed]");let stashSHA=await this.getStashSHA(refIdx,stashEntries);return stashSHA?_readCommit({fs:this.fs,cache:{},gitdir:this.gitdir,oid:stashSHA}):{}}async writeStashRef(stashCommit){return GitRefManager.writeRef({fs:this.fs,gitdir:this.gitdir,ref:_GitStashManager.refStash,value:stashCommit})}async writeStashReflogEntry({stashCommit,message}){let author=await this.getAuthor(),entry=GitRefStash.createStashReflogEntry(author,stashCommit,message),filepath=this.refLogsStashPath;await acquireLock$1({filepath,entry},async()=>{let appendTo=await this.fs.exists(filepath)?await this.fs.read(filepath,"utf8"):"";await this.fs.write(filepath,appendTo+entry,"utf8")})}async readStashReflogs({parsed=!1}){if(!await this.fs.exists(this.refLogsStashPath))return[];let reflogString=await this.fs.read(this.refLogsStashPath,"utf8");return GitRefStash.getStashReflogEntry(reflogString,parsed)}};async function _createStashCommit({fs,dir,gitdir,message=""}){let stashMgr=new GitStashManager({fs,dir,gitdir});await stashMgr.getAuthor();let branch2=await _currentBranch({fs,gitdir,fullname:!1}),headCommit=await GitRefManager.resolve({fs,gitdir,ref:"HEAD"}),headMsg=(await readCommit({fs,dir,gitdir,oid:headCommit})).commit.message,stashCommitParents=[headCommit],stashCommitTree=null,workDirCompareBase=TREE({ref:"HEAD"}),indexTree=await writeTreeChanges({fs,dir,gitdir,treePair:[TREE({ref:"HEAD"}),"stage"]});if(indexTree){let stashCommitOne=await stashMgr.writeStashCommit({message:`stash-Index: WIP on ${branch2} - ${new Date().toISOString()}`,tree:indexTree,parent:stashCommitParents});stashCommitParents.push(stashCommitOne),stashCommitTree=indexTree,workDirCompareBase=STAGE()}let workingTree=await writeTreeChanges({fs,dir,gitdir,treePair:[workDirCompareBase,"workdir"]});if(workingTree){let workingHeadCommit=await stashMgr.writeStashCommit({message:`stash-WorkDir: WIP on ${branch2} - ${new Date().toISOString()}`,tree:workingTree,parent:[stashCommitParents[stashCommitParents.length-1]]});stashCommitParents.push(workingHeadCommit),stashCommitTree=workingTree}if(!stashCommitTree||!indexTree&&!workingTree)throw new NotFoundError("changes, nothing to stash");let stashMsg=(message.trim()||`WIP on ${branch2}`)+`: ${headCommit.substring(0,7)} ${headMsg}`;return{stashCommit:await stashMgr.writeStashCommit({message:stashMsg,tree:stashCommitTree,parent:stashCommitParents}),stashMsg,branch:branch2,stashMgr}}async function _stashPush({fs,dir,gitdir,message=""}){let{stashCommit,stashMsg,branch:branch2,stashMgr}=await _createStashCommit({fs,dir,gitdir,message});return await stashMgr.writeStashRef(stashCommit),await stashMgr.writeStashReflogEntry({stashCommit,message:stashMsg}),await checkout({fs,dir,gitdir,ref:branch2,track:!1,force:!0}),stashCommit}async function _stashCreate({fs,dir,gitdir,message=""}){let{stashCommit}=await _createStashCommit({fs,dir,gitdir,message});return stashCommit}async function _stashApply({fs,dir,gitdir,refIdx=0}){let stashCommit=await new GitStashManager({fs,dir,gitdir}).readStashCommit(refIdx),{parent:stashParents=null}=stashCommit.commit?stashCommit.commit:{};if(!(!stashParents||!Array.isArray(stashParents)))for(let i=0;i<stashParents.length-1;i++){let wasStaged=(await _readCommit({fs,cache:{},gitdir,oid:stashParents[i+1]})).commit.message.startsWith("stash-Index");await applyTreeChanges({fs,dir,gitdir,stashCommit:stashParents[i+1],parentCommit:stashParents[i],wasStaged})}}async function _stashDrop({fs,dir,gitdir,refIdx=0}){let stashMgr=new GitStashManager({fs,dir,gitdir});if(!(await stashMgr.readStashCommit(refIdx)).commit)return;let stashRefPath=stashMgr.refStashPath;await acquireLock$1(stashRefPath,async()=>{await fs.exists(stashRefPath)&&await fs.rm(stashRefPath)});let reflogEntries=await stashMgr.readStashReflogs({parsed:!1});if(!reflogEntries.length)return;reflogEntries.splice(refIdx,1);let stashReflogPath=stashMgr.refLogsStashPath;await acquireLock$1({reflogEntries,stashReflogPath,stashMgr},async()=>{if(reflogEntries.length){await fs.write(stashReflogPath,reflogEntries.reverse().join(`
97
+ `)+`
98
+ `,"utf8");let lastStashCommit=reflogEntries[reflogEntries.length-1].split(" ")[1];await stashMgr.writeStashRef(lastStashCommit)}else await fs.rm(stashReflogPath)})}async function _stashList({fs,dir,gitdir}){return new GitStashManager({fs,dir,gitdir}).readStashReflogs({parsed:!0})}async function _stashClear({fs,dir,gitdir}){let stashMgr=new GitStashManager({fs,dir,gitdir}),stashRefPath=[stashMgr.refStashPath,stashMgr.refLogsStashPath];await acquireLock$1(stashRefPath,async()=>{await Promise.all(stashRefPath.map(async path=>{if(await fs.exists(path))return fs.rm(path)}))})}async function _stashPop({fs,dir,gitdir,refIdx=0}){await _stashApply({fs,dir,gitdir,refIdx}),await _stashDrop({fs,dir,gitdir,refIdx})}async function stash({fs,dir,gitdir=join2(dir,".git"),op="push",message="",refIdx=0}){assertParameter("fs",fs),assertParameter("dir",dir),assertParameter("gitdir",gitdir),assertParameter("op",op);let stashMap={push:_stashPush,apply:_stashApply,drop:_stashDrop,list:_stashList,clear:_stashClear,pop:_stashPop,create:_stashCreate},opsNeedRefIdx=["apply","drop","pop"];try{let _fs=new FileSystem(fs);["refs","logs","logs/refs"].map(f=>join2(gitdir,f)).forEach(async folder=>{await _fs.exists(folder)||await _fs.mkdir(folder)});let opFunc=stashMap[op];if(opFunc){if(opsNeedRefIdx.includes(op)&&refIdx<0)throw new InvalidRefNameError(`stash@${refIdx}`,"number that is in range of [0, num of stash pushed]");return await opFunc({fs:_fs,dir,gitdir,message,refIdx})}throw new Error(`To be implemented: ${op}`)}catch(err){throw err.caller="git.stash",err}}async function status({fs:_fs,dir,gitdir=join2(dir,".git"),filepath,cache={}}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("filepath",filepath);let fs=new FileSystem(_fs);if(await GitIgnoreManager.isIgnored({fs,gitdir,dir,filepath}))return"ignored";let headTree=await getHeadTree({fs,cache,gitdir}),treeOid=await getOidAtPath({fs,cache,gitdir,tree:headTree,path:filepath}),indexEntry=await GitIndexManager.acquire({fs,gitdir,cache},async function(index3){for(let entry of index3)if(entry.path===filepath)return entry;return null}),stats=await fs.lstat(join2(dir,filepath)),H=treeOid!==null,I=indexEntry!==null,W=stats!==null,getWorkdirOid=async()=>{if(I&&!compareStats(indexEntry,stats))return indexEntry.oid;{let object=await fs.read(join2(dir,filepath)),workdirOid=await hashObject$1({gitdir,type:"blob",object});return I&&indexEntry.oid===workdirOid&&stats.size!==-1&&GitIndexManager.acquire({fs,gitdir,cache},async function(index3){index3.insert({filepath,stats,oid:workdirOid})}),workdirOid}};if(!H&&!W&&!I)return"absent";if(!H&&!W&&I)return"*absent";if(!H&&W&&!I)return"*added";if(!H&&W&&I)return await getWorkdirOid()===indexEntry.oid?"added":"*added";if(H&&!W&&!I)return"deleted";if(H&&!W&&I)return treeOid===indexEntry.oid,"*deleted";if(H&&W&&!I)return await getWorkdirOid()===treeOid?"*undeleted":"*undeletemodified";if(H&&W&&I){let workdirOid=await getWorkdirOid();return workdirOid===treeOid?workdirOid===indexEntry.oid?"unmodified":"*unmodified":workdirOid===indexEntry.oid?"modified":"*modified"}}catch(err){throw err.caller="git.status",err}}async function getOidAtPath({fs,cache,gitdir,tree,path}){typeof path=="string"&&(path=path.split("/"));let dirname2=path.shift();for(let entry of tree)if(entry.path===dirname2){if(path.length===0)return entry.oid;let{type,object}=await _readObject({fs,cache,gitdir,oid:entry.oid});if(type==="tree"){let tree2=GitTree.from(object);return getOidAtPath({fs,cache,gitdir,tree:tree2,path})}if(type==="blob")throw new ObjectTypeError(entry.oid,type,"blob",path.join("/"))}return null}async function getHeadTree({fs,cache,gitdir}){let oid;try{oid=await GitRefManager.resolve({fs,gitdir,ref:"HEAD"})}catch(e){if(e instanceof NotFoundError)return[]}let{tree}=await _readTree({fs,cache,gitdir,oid});return tree}async function statusMatrix({fs:_fs,dir,gitdir=join2(dir,".git"),ref="HEAD",filepaths=["."],filter,cache={},ignored:shouldIgnore=!1,deferRefresh=!1}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref),deferRefresh&&!PendingRefresh.has(cache)&&PendingRefresh.set(cache,[]);let fs=new FileSystem(_fs),filemode=await(await GitConfigManager.get({fs,gitdir})).get("core.filemode")!==!1;return await _walk({fs,cache,dir,gitdir,trees:[TREE({ref}),WORKDIR(),STAGE()],map:async function(filepath,[head,workdir,stage2]){if(!head&&!stage2&&workdir&&!shouldIgnore&&await GitIgnoreManager.isIgnored({fs,dir,filepath})||!filepaths.some(base=>worthWalking(filepath,base)))return null;if(filter&&!filter(filepath))return;let[headType,workdirType,stageType]=await Promise.all([head&&head.type(),workdir&&workdir.type(),stage2&&stage2.type()]),isBlob=[headType,workdirType,stageType].includes("blob");if((headType==="tree"||headType==="special")&&!isBlob)return;if(headType==="commit")return null;if((workdirType==="tree"||workdirType==="special")&&!isBlob)return;if(stageType==="commit")return null;if((stageType==="tree"||stageType==="special")&&!isBlob)return;let headOid=headType==="blob"?await head.oid():void 0,stageOid=stageType==="blob"?await stage2.oid():void 0,workdirOid;headType!=="blob"&&workdirType==="blob"&&stageType!=="blob"?workdirOid="42":workdirType==="blob"&&(workdirOid=await workdir.oid());let headMode=headOid!==void 0?await head.mode():void 0,stageMode=stageOid!==void 0?await stage2.mode():void 0,workdirMode=workdirOid!==void 0?await workdir.mode():void 0;!filemode&&workdirMode!==void 0&&workdirMode!==40960&&(workdirMode=stageMode!==void 0&&stageMode!==40960?stageMode:33188);let key=(oid,mode)=>oid===void 0?void 0:`${oid} ${mode}`,entry=[void 0,key(headOid,headMode),workdirOid==="42"?workdirOid:key(workdirOid,workdirMode),key(stageOid,stageMode)],result=entry.map(value=>entry.indexOf(value));return result.shift(),[filepath,...result]}})}catch(err){throw err.caller="git.statusMatrix",err}}async function tag({fs:_fs,dir,gitdir=join2(dir,".git"),ref,object,force=!1}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref);let fs=new FileSystem(_fs);if(ref===void 0)throw new MissingParameterError("ref");ref=ref.startsWith("refs/tags/")?ref:`refs/tags/${ref}`;let value=await GitRefManager.resolve({fs,gitdir,ref:object||"HEAD"});if(!force&&await GitRefManager.exists({fs,gitdir,ref}))throw new AlreadyExistsError("tag",ref);await GitRefManager.writeRef({fs,gitdir,ref,value})}catch(err){throw err.caller="git.tag",err}}async function updateIndex$1({fs:_fs,dir,gitdir=join2(dir,".git"),cache={},filepath,oid,mode,add:add2,remove:remove2,force}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("filepath",filepath);let fs=new FileSystem(_fs);if(remove2)return await GitIndexManager.acquire({fs,gitdir,cache},async function(index3){if(!force){let fileStats2=await fs.lstat(join2(dir,filepath));if(fileStats2){if(fileStats2.isDirectory())throw new InvalidFilepathError("directory");return}}index3.has({filepath})&&index3.delete({filepath})});let fileStats;if(!oid){if(fileStats=await fs.lstat(join2(dir,filepath)),!fileStats)throw new NotFoundError(`file at "${filepath}" on disk and "remove" not set`);if(fileStats.isDirectory())throw new InvalidFilepathError("directory")}return await GitIndexManager.acquire({fs,gitdir,cache},async function(index3){if(!add2&&!index3.has({filepath}))throw new NotFoundError(`file at "${filepath}" in index and "add" not set`);let stats;if(oid)stats={ctime:new Date(0),mtime:new Date(0),dev:0,ino:0,mode,uid:0,gid:0,size:0};else{stats=fileStats;let object=stats.isSymbolicLink()?await fs.readlink(join2(dir,filepath)):await fs.read(join2(dir,filepath));oid=await _writeObject({fs,gitdir,type:"blob",format:"content",object})}return index3.insert({filepath,oid,stats}),oid})}catch(err){throw err.caller="git.updateIndex",err}}function version(){try{return pkg.version}catch(err){throw err.caller="git.version",err}}async function walk({fs,dir,gitdir=join2(dir,".git"),trees,map,reduce,iterate,cache={}}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("trees",trees),await _walk({fs:new FileSystem(fs),cache,dir,gitdir,trees,map,reduce,iterate})}catch(err){throw err.caller="git.walk",err}}async function writeBlob({fs,dir,gitdir=join2(dir,".git"),blob}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("blob",blob),await _writeObject({fs:new FileSystem(fs),gitdir,type:"blob",object:blob,format:"content"})}catch(err){throw err.caller="git.writeBlob",err}}async function writeCommit({fs,dir,gitdir=join2(dir,".git"),commit:commit2}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("commit",commit2),await _writeCommit({fs:new FileSystem(fs),gitdir,commit:commit2})}catch(err){throw err.caller="git.writeCommit",err}}async function writeObject({fs:_fs,dir,gitdir=join2(dir,".git"),type,object,format="parsed",oid,encoding=void 0}){try{let fs=new FileSystem(_fs);if(format==="parsed"){switch(type){case"commit":object=GitCommit.from(object).toObject();break;case"tree":object=GitTree.from(object).toObject();break;case"blob":object=Buffer.from(object,encoding);break;case"tag":object=GitAnnotatedTag.from(object).toObject();break;default:throw new ObjectTypeError(oid||"",type,"blob|commit|tag|tree")}format="content"}return oid=await _writeObject({fs,gitdir,type,object,oid,format}),oid}catch(err){throw err.caller="git.writeObject",err}}async function writeRef({fs:_fs,dir,gitdir=join2(dir,".git"),ref,value,force=!1,symbolic=!1}){try{assertParameter("fs",_fs),assertParameter("gitdir",gitdir),assertParameter("ref",ref),assertParameter("value",value);let fs=new FileSystem(_fs);if(!(0,import_is_git_ref_name_valid.default)(ref,!0))throw new InvalidRefNameError(ref,import_clean_git_ref.default.clean(ref));if(!force&&await GitRefManager.exists({fs,gitdir,ref}))throw new AlreadyExistsError("ref",ref);symbolic?await GitRefManager.writeSymbolicRef({fs,gitdir,ref,value}):(value=await GitRefManager.resolve({fs,gitdir,ref:value}),await GitRefManager.writeRef({fs,gitdir,ref,value}))}catch(err){throw err.caller="git.writeRef",err}}async function _writeTag({fs,gitdir,tag:tag2}){let object=GitAnnotatedTag.from(tag2).toObject();return await _writeObject({fs,gitdir,type:"tag",object,format:"content"})}async function writeTag({fs,dir,gitdir=join2(dir,".git"),tag:tag2}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("tag",tag2),await _writeTag({fs:new FileSystem(fs),gitdir,tag:tag2})}catch(err){throw err.caller="git.writeTag",err}}async function writeTree({fs,dir,gitdir=join2(dir,".git"),tree}){try{return assertParameter("fs",fs),assertParameter("gitdir",gitdir),assertParameter("tree",tree),await _writeTree({fs:new FileSystem(fs),gitdir,tree})}catch(err){throw err.caller="git.writeTree",err}}var index={Errors,STAGE,TREE,WORKDIR,add,abortMerge,addNote,addRemote,annotatedTag,branch,checkout,clone,commit,getConfig,getConfigAll,setConfig,currentBranch,deleteBranch,deleteRef,deleteRemote,deleteTag,expandOid,expandRef,fastForward,fetch:fetch2,findMergeBase,findRoot,getRemoteInfo,getRemoteInfo2,hashBlob,indexPack,init,isDescendent,isIgnored,listBranches,listFiles,listNotes,listRefs,listRemotes,listServerRefs,listTags,log,merge,packObjects,pull,push,readBlob,readCommit,readNote,readObject,readTag,readTree,remove,removeNote,renameBranch,resetIndex,updateIndex:updateIndex$1,resolveRef,status,statusMatrix,tag,version,walk,writeBlob,writeCommit,writeObject,writeRef,writeTag,writeTree,stash},cf_git_default=index;var web_exports={};__export(web_exports,{default:()=>web_default,request:()=>request});function fromValue2(value){let queue=[value];return{next(){return Promise.resolve({done:queue.length===0,value:queue.pop()})},return(){return queue=[],{}},[Symbol.asyncIterator](){return this}}}function getIterator2(iterable){return iterable[Symbol.asyncIterator]?iterable[Symbol.asyncIterator]():iterable[Symbol.iterator]?iterable[Symbol.iterator]():iterable.next?iterable:fromValue2(iterable)}async function forAwait2(iterable,cb){let iter=getIterator2(iterable);for(;;){let{value,done}=await iter.next();if(value&&await cb(value),done)break}iter.return&&iter.return()}async function collect2(iterable){let size=0,buffers=[];await forAwait2(iterable,value=>{buffers.push(value),size+=value.byteLength});let result=new Uint8Array(size),nextIndex=0;for(let buffer of buffers)result.set(buffer,nextIndex),nextIndex+=buffer.byteLength;return result}function fromStream(stream){if(stream[Symbol.asyncIterator])return stream;let reader=stream.getReader();return{next(){return reader.read()},return(){return reader.releaseLock(),{}},[Symbol.asyncIterator](){return this}}}async function request({onProgress,url,method="GET",headers={},body}){body&&(body=await collect2(body));let res=await fetch(url,{method,headers,body}),iter=res.body&&res.body.getReader?fromStream(res.body):[new Uint8Array(await res.arrayBuffer())];headers={};for(let[key,value]of res.headers.entries())headers[key]=value;return{url:res.url,method:res.method,statusCode:res.status,statusMessage:res.statusText,body:iter,headers}}var index2={request},web_default=index2;export{cf_git_exports as git,web_exports as gitHttp};
99
+ /*! Bundled license information:
100
+
101
+ crc-32/crc32.js:
102
+ (*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com *)
103
+ */