jj-plus 0.10.10

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 (404) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +102 -0
  3. package/assets/jj-plus-icon.png +0 -0
  4. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  5. package/dist/bin.cjs +112 -0
  6. package/dist/bin.cjs.map +1 -0
  7. package/dist/cli/options.cjs +376 -0
  8. package/dist/cli/options.cjs.map +1 -0
  9. package/dist/cli/timeline-json.cjs +29 -0
  10. package/dist/cli/timeline-json.cjs.map +1 -0
  11. package/dist/extension/blame-codelens.cjs +228 -0
  12. package/dist/extension/blame-codelens.cjs.map +1 -0
  13. package/dist/extension/command-runner.cjs +99 -0
  14. package/dist/extension/command-runner.cjs.map +1 -0
  15. package/dist/extension/constants.cjs +56 -0
  16. package/dist/extension/constants.cjs.map +1 -0
  17. package/dist/extension/editor-extra-features.cjs +464 -0
  18. package/dist/extension/editor-extra-features.cjs.map +1 -0
  19. package/dist/extension/history-adapters.cjs +702 -0
  20. package/dist/extension/history-adapters.cjs.map +1 -0
  21. package/dist/extension/index.cjs +657 -0
  22. package/dist/extension/index.cjs.map +1 -0
  23. package/dist/extension/repo-timeline-panel.cjs +402 -0
  24. package/dist/extension/repo-timeline-panel.cjs.map +1 -0
  25. package/dist/extension/resolve-file-path.cjs +16 -0
  26. package/dist/extension/resolve-file-path.cjs.map +1 -0
  27. package/dist/extension/revision-diff-nav.cjs +169 -0
  28. package/dist/extension/revision-diff-nav.cjs.map +1 -0
  29. package/dist/extension/settings.cjs +41 -0
  30. package/dist/extension/settings.cjs.map +1 -0
  31. package/dist/extension/timeline-at-line.cjs +72 -0
  32. package/dist/extension/timeline-at-line.cjs.map +1 -0
  33. package/dist/extension/timeline-panel.cjs +1113 -0
  34. package/dist/extension/timeline-panel.cjs.map +1 -0
  35. package/dist/extension/timeline-service.cjs +1154 -0
  36. package/dist/extension/timeline-service.cjs.map +1 -0
  37. package/dist/extension/uri-utils.cjs +75 -0
  38. package/dist/extension/uri-utils.cjs.map +1 -0
  39. package/dist/package.cjs +11 -0
  40. package/dist/package.cjs.map +1 -0
  41. package/dist/shared/blame.cjs +211 -0
  42. package/dist/shared/blame.cjs.map +1 -0
  43. package/dist/shared/diff-content-search.cjs +23 -0
  44. package/dist/shared/diff-content-search.cjs.map +1 -0
  45. package/dist/shared/diff-helpers.cjs +12 -0
  46. package/dist/shared/diff-helpers.cjs.map +1 -0
  47. package/dist/shared/diff-stats.cjs +129 -0
  48. package/dist/shared/diff-stats.cjs.map +1 -0
  49. package/dist/shared/file-oplog.cjs +82 -0
  50. package/dist/shared/file-oplog.cjs.map +1 -0
  51. package/dist/shared/history-helpers.cjs +257 -0
  52. package/dist/shared/history-helpers.cjs.map +1 -0
  53. package/dist/shared/history-search.cjs +85 -0
  54. package/dist/shared/history-search.cjs.map +1 -0
  55. package/dist/shared/jj-revset-suggestions.cjs +41 -0
  56. package/dist/shared/jj-revset-suggestions.cjs.map +1 -0
  57. package/dist/shared/line-history.cjs +181 -0
  58. package/dist/shared/line-history.cjs.map +1 -0
  59. package/dist/shared/list-file-revisions.cjs +36 -0
  60. package/dist/shared/list-file-revisions.cjs.map +1 -0
  61. package/dist/shared/non-textual-details.cjs +43 -0
  62. package/dist/shared/non-textual-details.cjs.map +1 -0
  63. package/dist/shared/resolve-file-path.cjs +14 -0
  64. package/dist/shared/resolve-file-path.cjs.map +1 -0
  65. package/dist/shared/revision-diff-availability.cjs +18 -0
  66. package/dist/shared/revision-diff-availability.cjs.map +1 -0
  67. package/dist/shared/revision-diff-pair.cjs +42 -0
  68. package/dist/shared/revision-diff-pair.cjs.map +1 -0
  69. package/dist/shared/revset.cjs +16 -0
  70. package/dist/shared/revset.cjs.map +1 -0
  71. package/dist/shared/timeline-model.cjs +29 -0
  72. package/dist/shared/timeline-model.cjs.map +1 -0
  73. package/dist/standalone/server.cjs +1733 -0
  74. package/dist/standalone/server.cjs.map +1 -0
  75. package/dist/webview/timeline-template.cjs +214 -0
  76. package/dist/webview/timeline-template.cjs.map +1 -0
  77. package/package.json +320 -0
  78. package/webview-dist/assets/worker-DuV13XDT.js +161 -0
  79. package/webview-dist/chunks/abap-CLvhMVsD.js +1 -0
  80. package/webview-dist/chunks/actionscript-3-Cs6JJXT5.js +1 -0
  81. package/webview-dist/chunks/ada-C5qYipkI.js +1 -0
  82. package/webview-dist/chunks/ahk-CA9gdOdF.js +1 -0
  83. package/webview-dist/chunks/ahk2-_6rzW9BS.js +1 -0
  84. package/webview-dist/chunks/andromeeda-vGVdxbeo.js +1 -0
  85. package/webview-dist/chunks/angular-html-DTpR04n4.js +1 -0
  86. package/webview-dist/chunks/angular-ts-BCtbMvbl.js +1 -0
  87. package/webview-dist/chunks/apache-U0d_L8uA.js +1 -0
  88. package/webview-dist/chunks/apex-KFGFyKwG.js +1 -0
  89. package/webview-dist/chunks/apl-BMZuN1Ql.js +1 -0
  90. package/webview-dist/chunks/applescript-CCn79oCD.js +1 -0
  91. package/webview-dist/chunks/ara-4CJ0cIlV.js +1 -0
  92. package/webview-dist/chunks/asciidoc-SCjQUq34.js +1 -0
  93. package/webview-dist/chunks/asm-Cmm7eHzH.js +1 -0
  94. package/webview-dist/chunks/astro-DrbV4Z7r.js +1 -0
  95. package/webview-dist/chunks/aurora-x-CDeNXAV0.js +1 -0
  96. package/webview-dist/chunks/awk-BWXHIvNe.js +1 -0
  97. package/webview-dist/chunks/ayu-dark-DluEY0Gj.js +1 -0
  98. package/webview-dist/chunks/ayu-light-C3h-C4tm.js +1 -0
  99. package/webview-dist/chunks/ayu-mirage-Bqwy1Gya.js +1 -0
  100. package/webview-dist/chunks/ballerina-B7ZEbQpA.js +1 -0
  101. package/webview-dist/chunks/bat-qdxAdBWQ.js +1 -0
  102. package/webview-dist/chunks/beancount-D-usSTwE.js +1 -0
  103. package/webview-dist/chunks/berry-DKpUyyne.js +1 -0
  104. package/webview-dist/chunks/bibtex-Ci_nEsc7.js +1 -0
  105. package/webview-dist/chunks/bicep-CUHmPFLl.js +1 -0
  106. package/webview-dist/chunks/bird2-CYIUgYqB.js +1 -0
  107. package/webview-dist/chunks/blade-oPV8S6rR.js +1 -0
  108. package/webview-dist/chunks/bsl-_VjlB9mv.js +1 -0
  109. package/webview-dist/chunks/c-DYf-3tob.js +1 -0
  110. package/webview-dist/chunks/c3-D0apG41V.js +1 -0
  111. package/webview-dist/chunks/cadence-CQ2zXKGN.js +1 -0
  112. package/webview-dist/chunks/cairo-DLTphjLi.js +1 -0
  113. package/webview-dist/chunks/catppuccin-frappe-C9Q5zVZY.js +1 -0
  114. package/webview-dist/chunks/catppuccin-latte-CtsyrtPq.js +1 -0
  115. package/webview-dist/chunks/catppuccin-macchiato-R8nAf1vR.js +1 -0
  116. package/webview-dist/chunks/catppuccin-mocha-DjuaAJKi.js +1 -0
  117. package/webview-dist/chunks/chapel-DY-WYB1D.js +1 -0
  118. package/webview-dist/chunks/clarity-CtfBBspg.js +1 -0
  119. package/webview-dist/chunks/clojure-DqKBuwfJ.js +1 -0
  120. package/webview-dist/chunks/cmake-Bj61d0ZC.js +1 -0
  121. package/webview-dist/chunks/cobol-DvdX_6CO.js +1 -0
  122. package/webview-dist/chunks/codeowners-C8r90Shi.js +1 -0
  123. package/webview-dist/chunks/codeql-oeQT6MSM.js +1 -0
  124. package/webview-dist/chunks/coffee-C1kO7jr_.js +1 -0
  125. package/webview-dist/chunks/common-lisp-Cv5bFMCO.js +1 -0
  126. package/webview-dist/chunks/coq-DuBRPxYg.js +1 -0
  127. package/webview-dist/chunks/cpp-CoSarUrI.js +1 -0
  128. package/webview-dist/chunks/crystal-SLJeZ5EP.js +1 -0
  129. package/webview-dist/chunks/csharp-oqKa8noW.js +1 -0
  130. package/webview-dist/chunks/css-cfScyrSP.js +1 -0
  131. package/webview-dist/chunks/csv-Dx-8-gkx.js +1 -0
  132. package/webview-dist/chunks/cue-CE9AQfxI.js +1 -0
  133. package/webview-dist/chunks/cypher-ClKdZ_lG.js +1 -0
  134. package/webview-dist/chunks/d-qD-0Kul2.js +1 -0
  135. package/webview-dist/chunks/dark-plus-Cs2F2srj.js +1 -0
  136. package/webview-dist/chunks/dart-CnvKMtbv.js +1 -0
  137. package/webview-dist/chunks/dax-BkyTk9wS.js +1 -0
  138. package/webview-dist/chunks/desktop-Dlh5hvp9.js +1 -0
  139. package/webview-dist/chunks/diff-woXpYk--.js +1 -0
  140. package/webview-dist/chunks/docker-IyjqRm3v.js +1 -0
  141. package/webview-dist/chunks/dotenv-_5a1GRtc.js +1 -0
  142. package/webview-dist/chunks/dracula-BHWKrbxM.js +1 -0
  143. package/webview-dist/chunks/dracula-soft-5eyTD99u.js +1 -0
  144. package/webview-dist/chunks/dream-maker-DW3nJb8Q.js +1 -0
  145. package/webview-dist/chunks/edge-lvBr3t3s.js +1 -0
  146. package/webview-dist/chunks/elixir-BLoPe0KG.js +1 -0
  147. package/webview-dist/chunks/elm-BveBINBn.js +1 -0
  148. package/webview-dist/chunks/emacs-lisp-c_oH4hRZ.js +1 -0
  149. package/webview-dist/chunks/erb-Bmf8z4ph.js +1 -0
  150. package/webview-dist/chunks/erlang-Cphh6RMH.js +1 -0
  151. package/webview-dist/chunks/everforest-dark-sB-x3p7T.js +1 -0
  152. package/webview-dist/chunks/everforest-light-Df2xbC6M.js +1 -0
  153. package/webview-dist/chunks/fennel-DQxkIbk2.js +1 -0
  154. package/webview-dist/chunks/fish-BJitypiv.js +1 -0
  155. package/webview-dist/chunks/fluent-C03EYrpw.js +1 -0
  156. package/webview-dist/chunks/fortran-fixed-form-DEKoE2YW.js +1 -0
  157. package/webview-dist/chunks/fortran-free-form-CYNrtFtB.js +1 -0
  158. package/webview-dist/chunks/fsharp-D13ZGOAj.js +1 -0
  159. package/webview-dist/chunks/gdresource-xMC7jr7x.js +1 -0
  160. package/webview-dist/chunks/gdscript-DYvRD3hg.js +1 -0
  161. package/webview-dist/chunks/gdshader-CBce3t8t.js +1 -0
  162. package/webview-dist/chunks/genie-CV2tkWYe.js +1 -0
  163. package/webview-dist/chunks/gherkin-DExj1W_8.js +1 -0
  164. package/webview-dist/chunks/git-commit-BSykSTBG.js +1 -0
  165. package/webview-dist/chunks/git-rebase-BBii7GBM.js +1 -0
  166. package/webview-dist/chunks/github-dark-C-LZuMrd.js +1 -0
  167. package/webview-dist/chunks/github-dark-default-DXG-b-1a.js +1 -0
  168. package/webview-dist/chunks/github-dark-dimmed-Bx1FflLF.js +1 -0
  169. package/webview-dist/chunks/github-dark-high-contrast-B_tTalzw.js +1 -0
  170. package/webview-dist/chunks/github-light-EUqPIrTm.js +1 -0
  171. package/webview-dist/chunks/github-light-default-BXViO-2h.js +1 -0
  172. package/webview-dist/chunks/github-light-high-contrast-B68TUdTA.js +1 -0
  173. package/webview-dist/chunks/gleam-CSRkHgEL.js +1 -0
  174. package/webview-dist/chunks/glimmer-js-CuCPna-X.js +1 -0
  175. package/webview-dist/chunks/glimmer-ts-DNAjZNDK.js +1 -0
  176. package/webview-dist/chunks/glsl-COQvRxdz.js +1 -0
  177. package/webview-dist/chunks/gn-ilITqXS6.js +1 -0
  178. package/webview-dist/chunks/gnuplot-7GGW24-e.js +1 -0
  179. package/webview-dist/chunks/go-rLFTqkRN.js +1 -0
  180. package/webview-dist/chunks/graphql-1cKCVreZ.js +1 -0
  181. package/webview-dist/chunks/groovy-CacY0gHj.js +1 -0
  182. package/webview-dist/chunks/gruvbox-dark-hard-C820rvS2.js +1 -0
  183. package/webview-dist/chunks/gruvbox-dark-medium-BPjhmG05.js +1 -0
  184. package/webview-dist/chunks/gruvbox-dark-soft-MrdJrrXF.js +1 -0
  185. package/webview-dist/chunks/gruvbox-light-hard-BC_s9l72.js +1 -0
  186. package/webview-dist/chunks/gruvbox-light-medium-BAWPOn9u.js +1 -0
  187. package/webview-dist/chunks/gruvbox-light-soft-BSMLrYjP.js +1 -0
  188. package/webview-dist/chunks/hack-7CXYxWGO.js +1 -0
  189. package/webview-dist/chunks/haml-CeE16iG9.js +1 -0
  190. package/webview-dist/chunks/handlebars-CLm7Miue.js +1 -0
  191. package/webview-dist/chunks/haskell-D8IpX4py.js +1 -0
  192. package/webview-dist/chunks/haxe-C8oCnwJJ.js +1 -0
  193. package/webview-dist/chunks/hcl-Dh228itO.js +1 -0
  194. package/webview-dist/chunks/hjson-CxZEssPk.js +1 -0
  195. package/webview-dist/chunks/hlsl-Cvrh5tZx.js +1 -0
  196. package/webview-dist/chunks/horizon-CE9ld1lL.js +1 -0
  197. package/webview-dist/chunks/horizon-bright-DSNQnXHK.js +1 -0
  198. package/webview-dist/chunks/houston-CsvMBhTu.js +1 -0
  199. package/webview-dist/chunks/html-EbCri-_j.js +1 -0
  200. package/webview-dist/chunks/html-derivative-DGcE2kQi.js +1 -0
  201. package/webview-dist/chunks/http-DpnqgCg2.js +1 -0
  202. package/webview-dist/chunks/hurl-B6NGpamo.js +1 -0
  203. package/webview-dist/chunks/hxml-Dcm88srW.js +1 -0
  204. package/webview-dist/chunks/hy-CZbG8q4J.js +1 -0
  205. package/webview-dist/chunks/imba-DsUTQ-LC.js +1 -0
  206. package/webview-dist/chunks/ini-B5eOa1yu.js +1 -0
  207. package/webview-dist/chunks/java-ZkUoUSJy.js +1 -0
  208. package/webview-dist/chunks/javascript-DLd0EIw7.js +1 -0
  209. package/webview-dist/chunks/jinja-WhIqNp3q.js +1 -0
  210. package/webview-dist/chunks/jison-CIn1t7S8.js +1 -0
  211. package/webview-dist/chunks/json-AHG_JuKN.js +1 -0
  212. package/webview-dist/chunks/json5-BR5RXkoi.js +1 -0
  213. package/webview-dist/chunks/jsonc-CYpm1nAK.js +1 -0
  214. package/webview-dist/chunks/jsonl-CmCQp5Yx.js +1 -0
  215. package/webview-dist/chunks/jsonnet-CJTPZ8u_.js +1 -0
  216. package/webview-dist/chunks/jssm-DXw9l8Rf.js +1 -0
  217. package/webview-dist/chunks/jsx-BLy2KGb2.js +1 -0
  218. package/webview-dist/chunks/julia-XrhdGMY0.js +1 -0
  219. package/webview-dist/chunks/just-CiO9rOBq.js +1 -0
  220. package/webview-dist/chunks/kanagawa-dragon-Bozd7klA.js +1 -0
  221. package/webview-dist/chunks/kanagawa-lotus-BmuOG9ZW.js +1 -0
  222. package/webview-dist/chunks/kanagawa-wave-BML5mF2J.js +1 -0
  223. package/webview-dist/chunks/kdl-CsD5j6eV.js +1 -0
  224. package/webview-dist/chunks/kotlin-DhhofPvG.js +1 -0
  225. package/webview-dist/chunks/kusto-C7mF5XQf.js +1 -0
  226. package/webview-dist/chunks/laserwave-C_8bwKvT.js +1 -0
  227. package/webview-dist/chunks/latex-4tqdYtbu.js +1 -0
  228. package/webview-dist/chunks/lean-CewbzKMR.js +1 -0
  229. package/webview-dist/chunks/less-DVTAwKKz.js +1 -0
  230. package/webview-dist/chunks/light-plus-DVQuIRkW.js +1 -0
  231. package/webview-dist/chunks/liquid-BiiWRCLG.js +1 -0
  232. package/webview-dist/chunks/llvm-DqHOMS-s.js +1 -0
  233. package/webview-dist/chunks/log-BNLmms1o.js +1 -0
  234. package/webview-dist/chunks/logo-Cluzi2Zq.js +1 -0
  235. package/webview-dist/chunks/lua-BPFdS2Mc.js +1 -0
  236. package/webview-dist/chunks/luau-C2pBCSgt.js +1 -0
  237. package/webview-dist/chunks/make-Dixweg8N.js +1 -0
  238. package/webview-dist/chunks/markdown-BYOwaDjH.js +1 -0
  239. package/webview-dist/chunks/marko-BLi1Yy1V.js +1 -0
  240. package/webview-dist/chunks/material-theme-Bm3Qr25_.js +1 -0
  241. package/webview-dist/chunks/material-theme-darker-2IIEA8gg.js +1 -0
  242. package/webview-dist/chunks/material-theme-lighter-uhdI0v04.js +1 -0
  243. package/webview-dist/chunks/material-theme-ocean-CHQ94UKr.js +1 -0
  244. package/webview-dist/chunks/material-theme-palenight-B5W6OYN7.js +1 -0
  245. package/webview-dist/chunks/matlab-D7qyCx1q.js +1 -0
  246. package/webview-dist/chunks/mdc-Dx-qyM1x.js +1 -0
  247. package/webview-dist/chunks/mdx-DQZ5AkYe.js +1 -0
  248. package/webview-dist/chunks/mermaid-BxpfTIzt.js +1 -0
  249. package/webview-dist/chunks/min-dark-BSWPekZh.js +1 -0
  250. package/webview-dist/chunks/min-light-DDpmG2fV.js +1 -0
  251. package/webview-dist/chunks/mipsasm-BMqwQI7S.js +1 -0
  252. package/webview-dist/chunks/mojo-fg40_ntQ.js +1 -0
  253. package/webview-dist/chunks/monokai-B_bV9PQ9.js +1 -0
  254. package/webview-dist/chunks/moonbit-DgjMoLWr.js +1 -0
  255. package/webview-dist/chunks/move-BYnGhZoM.js +1 -0
  256. package/webview-dist/chunks/narrat-_X_XdTYD.js +1 -0
  257. package/webview-dist/chunks/nextflow-BJtWHP5T.js +1 -0
  258. package/webview-dist/chunks/nextflow-groovy-DJMQeKeT.js +1 -0
  259. package/webview-dist/chunks/nginx-rnpjAIVq.js +1 -0
  260. package/webview-dist/chunks/night-owl-DhmEMT88.js +1 -0
  261. package/webview-dist/chunks/night-owl-light-eJ-hLW7d.js +1 -0
  262. package/webview-dist/chunks/nim-kKTJ2fIs.js +1 -0
  263. package/webview-dist/chunks/nix-IvuFDN5E.js +1 -0
  264. package/webview-dist/chunks/nord-Cb4Vim4T.js +1 -0
  265. package/webview-dist/chunks/nsis-CjNLYCLg.js +1 -0
  266. package/webview-dist/chunks/nushell-DHYfO66s.js +1 -0
  267. package/webview-dist/chunks/objective-c-D1A_Heim.js +1 -0
  268. package/webview-dist/chunks/objective-cpp-BsSzOQcm.js +1 -0
  269. package/webview-dist/chunks/ocaml-O90oeIOV.js +1 -0
  270. package/webview-dist/chunks/odin-B1RWQWA5.js +1 -0
  271. package/webview-dist/chunks/one-dark-pro-CLwyXe_n.js +1 -0
  272. package/webview-dist/chunks/one-light-D7Lr4KcI.js +1 -0
  273. package/webview-dist/chunks/openscad-BUDT5pXO.js +1 -0
  274. package/webview-dist/chunks/org-BGWCjkJX.js +1 -0
  275. package/webview-dist/chunks/pascal-4ZHwLPI5.js +1 -0
  276. package/webview-dist/chunks/perl-DEimDILQ.js +1 -0
  277. package/webview-dist/chunks/php-QnaNN--1.js +1 -0
  278. package/webview-dist/chunks/pierre-dark-CpLgRqie.js +1 -0
  279. package/webview-dist/chunks/pierre-dark-protanopia-deuteranopia-B35FxJx-.js +1 -0
  280. package/webview-dist/chunks/pierre-dark-soft-kZQmAZld.js +1 -0
  281. package/webview-dist/chunks/pierre-dark-tritanopia-CpjhbsIL.js +1 -0
  282. package/webview-dist/chunks/pierre-dark-vibrant-CpQYzh95.js +1 -0
  283. package/webview-dist/chunks/pierre-light-CoaEpmwp.js +1 -0
  284. package/webview-dist/chunks/pierre-light-protanopia-deuteranopia-0fSaH845.js +1 -0
  285. package/webview-dist/chunks/pierre-light-soft-lWLdNTOI.js +1 -0
  286. package/webview-dist/chunks/pierre-light-tritanopia-CEbqgOJL.js +1 -0
  287. package/webview-dist/chunks/pierre-light-vibrant-D80Fkn33.js +1 -0
  288. package/webview-dist/chunks/pkl-ot-7Btpt.js +1 -0
  289. package/webview-dist/chunks/plastic-DQwYfKfQ.js +1 -0
  290. package/webview-dist/chunks/plsql-DGHpHOYJ.js +1 -0
  291. package/webview-dist/chunks/po-BiJDBrnU.js +1 -0
  292. package/webview-dist/chunks/poimandres-DRFjx7u4.js +1 -0
  293. package/webview-dist/chunks/polar-C7UOKdEL.js +1 -0
  294. package/webview-dist/chunks/postcss-BXeXVLqQ.js +1 -0
  295. package/webview-dist/chunks/powerquery-DNMTfnFr.js +1 -0
  296. package/webview-dist/chunks/powershell-CCSX75yM.js +1 -0
  297. package/webview-dist/chunks/prisma-DMgNhnYS.js +1 -0
  298. package/webview-dist/chunks/prolog-iXnhIJG7.js +1 -0
  299. package/webview-dist/chunks/proto-DB4EqR-F.js +1 -0
  300. package/webview-dist/chunks/pug-D5rsKmMX.js +1 -0
  301. package/webview-dist/chunks/puppet-CDv2pdJW.js +1 -0
  302. package/webview-dist/chunks/purescript-9MfHhQsQ.js +1 -0
  303. package/webview-dist/chunks/python-gzcpVVnB.js +1 -0
  304. package/webview-dist/chunks/qml-wvbZb8UE.js +1 -0
  305. package/webview-dist/chunks/qmldir-DCQb3MpD.js +1 -0
  306. package/webview-dist/chunks/qss-Fe1Jh2GI.js +1 -0
  307. package/webview-dist/chunks/r-BNyBFaU1.js +1 -0
  308. package/webview-dist/chunks/racket-DcIDlBhZ.js +1 -0
  309. package/webview-dist/chunks/raku-B3gFvitq.js +1 -0
  310. package/webview-dist/chunks/razor-bKaHS6Kz.js +1 -0
  311. package/webview-dist/chunks/rbs-C0MpOrj4.js +1 -0
  312. package/webview-dist/chunks/red-DX1BQOs8.js +1 -0
  313. package/webview-dist/chunks/reg-CRGYupPL.js +1 -0
  314. package/webview-dist/chunks/regexp-B-mZuWUh.js +1 -0
  315. package/webview-dist/chunks/rel-BtDbiS_P.js +1 -0
  316. package/webview-dist/chunks/riscv-Ckw8ddFX.js +1 -0
  317. package/webview-dist/chunks/ron-VUp2lXgN.js +1 -0
  318. package/webview-dist/chunks/rose-pine-aMsaMD1D.js +1 -0
  319. package/webview-dist/chunks/rose-pine-dawn-8PwUyIlP.js +1 -0
  320. package/webview-dist/chunks/rose-pine-moon-DO-qXg-I.js +1 -0
  321. package/webview-dist/chunks/rosmsg-CAekHB0j.js +1 -0
  322. package/webview-dist/chunks/rst-Qq8ybXHe.js +1 -0
  323. package/webview-dist/chunks/ruby-U659LEwU.js +1 -0
  324. package/webview-dist/chunks/rust-Cfkwpbl8.js +1 -0
  325. package/webview-dist/chunks/sas-C4NtLApe.js +1 -0
  326. package/webview-dist/chunks/sass-DXrisJhu.js +1 -0
  327. package/webview-dist/chunks/scala-BiFt_7mu.js +1 -0
  328. package/webview-dist/chunks/scheme-DQCgrYNe.js +1 -0
  329. package/webview-dist/chunks/scss-KAaA4sHk.js +1 -0
  330. package/webview-dist/chunks/sdbl-bTVj8UrX.js +1 -0
  331. package/webview-dist/chunks/shaderlab-TOUzSsQk.js +1 -0
  332. package/webview-dist/chunks/shellscript-_7bOVsRC.js +1 -0
  333. package/webview-dist/chunks/shellsession-Bs_5k0qk.js +1 -0
  334. package/webview-dist/chunks/slack-dark-DnToyrRv.js +1 -0
  335. package/webview-dist/chunks/slack-ochin-B2OO5cIa.js +1 -0
  336. package/webview-dist/chunks/smalltalk-BHpQb5nM.js +1 -0
  337. package/webview-dist/chunks/smithy-Dgaz7aur.js +1 -0
  338. package/webview-dist/chunks/snazzy-light-4G7pJPwS.js +1 -0
  339. package/webview-dist/chunks/solarized-dark-UdsmMDCL.js +1 -0
  340. package/webview-dist/chunks/solarized-light-C1IUL_tW.js +1 -0
  341. package/webview-dist/chunks/solidity-Bj7E1mRn.js +1 -0
  342. package/webview-dist/chunks/soy-C5iuoFCh.js +1 -0
  343. package/webview-dist/chunks/sparql-D_iOobhT.js +1 -0
  344. package/webview-dist/chunks/splunk-BC2Px7Mm.js +1 -0
  345. package/webview-dist/chunks/sql-JX305rZh.js +1 -0
  346. package/webview-dist/chunks/ssh-config-BgfXC-Er.js +1 -0
  347. package/webview-dist/chunks/stata-2Rtik3TV.js +1 -0
  348. package/webview-dist/chunks/stylus-B6D30XZt.js +1 -0
  349. package/webview-dist/chunks/surrealql-IvpiLAIH.js +1 -0
  350. package/webview-dist/chunks/svelte-DeZcV_1u.js +1 -0
  351. package/webview-dist/chunks/swift-CyEgAFGc.js +1 -0
  352. package/webview-dist/chunks/synthwave-84-nFMaYfgc.js +1 -0
  353. package/webview-dist/chunks/system-verilog-Dh5ihWbf.js +1 -0
  354. package/webview-dist/chunks/systemd-BxMlprV5.js +1 -0
  355. package/webview-dist/chunks/talonscript-CohzipZa.js +1 -0
  356. package/webview-dist/chunks/tasl-DMoTqEGO.js +1 -0
  357. package/webview-dist/chunks/tcl-CZd0xW_V.js +1 -0
  358. package/webview-dist/chunks/templ-CcwjPXJr.js +1 -0
  359. package/webview-dist/chunks/terraform-DswuEJGm.js +1 -0
  360. package/webview-dist/chunks/tex-CZYHgHl8.js +1 -0
  361. package/webview-dist/chunks/tokyo-night-oM2G3aXe.js +1 -0
  362. package/webview-dist/chunks/toml-CcmNWLt0.js +1 -0
  363. package/webview-dist/chunks/ts-tags-DPINfEO_.js +1 -0
  364. package/webview-dist/chunks/tsv-sltzmVWM.js +1 -0
  365. package/webview-dist/chunks/tsx-Dq7pSIyE.js +1 -0
  366. package/webview-dist/chunks/turtle-ByJddavk.js +1 -0
  367. package/webview-dist/chunks/twig-DFpC8yDL.js +1 -0
  368. package/webview-dist/chunks/typescript-CN-guYmK.js +1 -0
  369. package/webview-dist/chunks/typespec-BRdr0IET.js +1 -0
  370. package/webview-dist/chunks/typst-hgW4q6mN.js +1 -0
  371. package/webview-dist/chunks/v-DBj4K9d_.js +1 -0
  372. package/webview-dist/chunks/vala-zf12oZj6.js +1 -0
  373. package/webview-dist/chunks/vb-DOwzaHZ0.js +1 -0
  374. package/webview-dist/chunks/verilog-B2gwz-sJ.js +1 -0
  375. package/webview-dist/chunks/vesper-DdrHHSXu.js +1 -0
  376. package/webview-dist/chunks/vhdl-BroJfC0k.js +1 -0
  377. package/webview-dist/chunks/viml-DvXPmvsu.js +1 -0
  378. package/webview-dist/chunks/vitesse-black-fwtXNY1n.js +1 -0
  379. package/webview-dist/chunks/vitesse-dark-BZCL-v6S.js +1 -0
  380. package/webview-dist/chunks/vitesse-light-VbXTXTou.js +1 -0
  381. package/webview-dist/chunks/vue-Dkz9ntel.js +1 -0
  382. package/webview-dist/chunks/vue-html-Dg8LQ5v3.js +1 -0
  383. package/webview-dist/chunks/vue-vine-CIEXICEN.js +1 -0
  384. package/webview-dist/chunks/vyper-CgoNMtux.js +1 -0
  385. package/webview-dist/chunks/wasm-BnjxR4X6.js +1 -0
  386. package/webview-dist/chunks/wasm-ByWQv1Qj.js +1 -0
  387. package/webview-dist/chunks/wenyan-C8pVoKbM.js +1 -0
  388. package/webview-dist/chunks/wgsl-BsKzXJz4.js +1 -0
  389. package/webview-dist/chunks/wikitext-ClFFjSW2.js +1 -0
  390. package/webview-dist/chunks/wit-DdvCle-K.js +1 -0
  391. package/webview-dist/chunks/wolfram-DLL8P-h_.js +1 -0
  392. package/webview-dist/chunks/worker-D52zl71O.js +1 -0
  393. package/webview-dist/chunks/worker-pool-lOjh8Q2A.js +1543 -0
  394. package/webview-dist/chunks/xml-X7YOen_c.js +1 -0
  395. package/webview-dist/chunks/xsl-h4d_Px-X.js +1 -0
  396. package/webview-dist/chunks/yaml-BRDpsfaj.js +1 -0
  397. package/webview-dist/chunks/zenscript-BnlCZFoB.js +1 -0
  398. package/webview-dist/chunks/zig-CMLA9XwU.js +1 -0
  399. package/webview-dist/index.html +18 -0
  400. package/webview-dist/pierre-worker-portable.js +13633 -0
  401. package/webview-dist/repo-timeline-app.js +7 -0
  402. package/webview-dist/repo-timeline.html +14 -0
  403. package/webview-dist/timeline-app.css +2 -0
  404. package/webview-dist/timeline-app.js +85 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-adapters.cjs","names":["resolvePreferredHistoryBackend","getGitHubRemoteBaseUrl","buildJjHistoryLogTemplate","dedupeAdjacentEntriesByChangeId","parseJjHistoryLine","toJjRootFileFileset","parseJjSummaryRenameLines","parseJjEvolutionSummaryEntries","parseJjSummaryChangedPaths","normalizeSnapshotOperationKey","parseGitBranchNames","composeJjHistoryRevset","path"],"sources":["../../src/extension/history-adapters.ts"],"sourcesContent":["import path from 'node:path';\n\nimport {\n\tbuildJjHistoryLogTemplate,\n\tdedupeAdjacentEntriesByChangeId,\n\tgetGitHubRemoteBaseUrl,\n\tnormalizeSnapshotOperationKey,\n\tparseGitBranchNames,\n\tparseJjEvolutionSummaryEntries,\n\tparseJjHistoryLine,\n\tparseJjSummaryChangedPaths,\n\tparseJjSummaryRenameLines,\n\tresolvePreferredHistoryBackend,\n\ttoJjRootFileFileset,\n} from '../shared/history-helpers.ts';\nimport type { FileRevisionEntry } from '../shared/timeline-types.ts';\nimport { composeJjHistoryRevset } from '../shared/revset.ts';\nimport { MAX_TIMELINE_ENTRIES } from './constants.ts';\nimport type { CommandRunner, HistoryAdapter } from './types.ts';\n\nexport async function resolveHistoryAdapter(args: {\n\tworkspacePath: string;\n\trunner: CommandRunner;\n}): Promise<HistoryAdapter> {\n\tconst { gitRoot, jjRoot } = await resolveRepositoryRoots(args);\n\tif (resolvePreferredHistoryBackend({ workspacePath: args.workspacePath, gitRoot, jjRoot }) === 'jj') {\n\t\treturn createJjHistoryAdapter({ runner: args.runner });\n\t}\n\n\treturn createGitHistoryAdapter({ runner: args.runner });\n}\n\nexport async function resolveHistoryWorkspacePath(args: {\n\tworkspacePath: string;\n\trunner: CommandRunner;\n}): Promise<string> {\n\tconst { gitRoot, jjRoot } = await resolveRepositoryRoots(args);\n\tconst preferredBackend = resolvePreferredHistoryBackend({\n\t\tworkspacePath: args.workspacePath,\n\t\tgitRoot,\n\t\tjjRoot,\n\t});\n\n\tif (preferredBackend === 'jj') {\n\t\treturn jjRoot || args.workspacePath;\n\t}\n\n\tif (preferredBackend === 'git') {\n\t\treturn gitRoot || args.workspacePath;\n\t}\n\n\treturn args.workspacePath;\n}\n\nasync function resolveRepositoryRoots(args: {\n\tworkspacePath: string;\n\trunner: CommandRunner;\n}): Promise<{ gitRoot?: string; jjRoot?: string }> {\n\tconst [gitResult, jjResult] = await Promise.allSettled([\n\t\targs.runner.runGit({\n\t\t\tworkspacePath: args.workspacePath,\n\t\t\targs: ['rev-parse', '--show-toplevel'],\n\t\t}),\n\t\targs.runner.runJj({\n\t\t\tworkspacePath: args.workspacePath,\n\t\t\targs: ['root'],\n\t\t}),\n\t]);\n\n\treturn {\n\t\tgitRoot: gitResult.status === 'fulfilled' ? gitResult.value.stdout.trim() : undefined,\n\t\tjjRoot: jjResult.status === 'fulfilled' ? jjResult.value.stdout.trim() : undefined,\n\t};\n}\n\nfunction createGitHistoryAdapter(args: { runner: CommandRunner }): HistoryAdapter {\n\tconst { runner } = args;\n\n\treturn {\n\t\tbackend: 'git',\n\t\tasync getFileRevisionHistory({ workspacePath, relativePath, limit, customRevset: _customRevset }) {\n\t\t\tconst { stdout } = await runner.runGit({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: [\n\t\t\t\t\t'log',\n\t\t\t\t\t'--follow',\n\t\t\t\t\t'--decorate=short',\n\t\t\t\t\t'--date=iso-strict',\n\t\t\t\t\t'--format=%H%x09%ad%x09%an%x09%D%x09%s',\n\t\t\t\t\t`--max-count=${limit ?? MAX_TIMELINE_ENTRIES}`,\n\t\t\t\t\t'--',\n\t\t\t\t\trelativePath,\n\t\t\t\t],\n\t\t\t});\n\n\t\t\treturn stdout\n\t\t\t\t.split(/\\r?\\n/u)\n\t\t\t\t.map((line) => line.trim())\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.map(parseGitHistoryLine)\n\t\t\t\t.toReversed();\n\t\t},\n\t\tasync getRepositoryRevisionHistory({ workspacePath, limit }) {\n\t\t\tconst { stdout } = await runner.runGit({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: [\n\t\t\t\t\t'log',\n\t\t\t\t\t'--decorate=short',\n\t\t\t\t\t'--date=iso-strict',\n\t\t\t\t\t'--format=%H%x09%ad%x09%an%x09%D%x09%s',\n\t\t\t\t\t`--max-count=${limit ?? MAX_TIMELINE_ENTRIES}`,\n\t\t\t\t],\n\t\t\t});\n\n\t\t\treturn stdout\n\t\t\t\t.split(/\\r?\\n/u)\n\t\t\t\t.map((line) => line.trim())\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.map(parseGitHistoryLine)\n\t\t\t\t.map((entry) => ({\n\t\t\t\t\t...entry,\n\t\t\t\t\ttouchesFile: false,\n\t\t\t\t}))\n\t\t\t\t.toReversed();\n\t\t},\n\t\tasync getRevisionDiff({ workspacePath, revision }) {\n\t\t\tconst { stdout } = await runner.runGit({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: ['show', '--format=', '--find-renames', revision],\n\t\t\t});\n\t\t\treturn stdout;\n\t\t},\n\t\tasync showFileAtRevision({ workspacePath, revset, filePath }) {\n\t\t\tif (revset === 'EMPTY') {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst { stdout } = await runner.runGit({\n\t\t\t\t\tworkspacePath,\n\t\t\t\t\targs: ['show', `${revset}:${filePath}`],\n\t\t\t\t});\n\t\t\t\treturn stdout;\n\t\t\t} catch (error) {\n\t\t\t\tif (isMissingFileAtRevisionError(error)) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tasync resolvePreviousPath({ workspacePath, revision, currentPath }) {\n\t\t\tconst previousTransition = await resolvePreviousGitPath({\n\t\t\t\trunner,\n\t\t\t\tworkspacePath,\n\t\t\t\trevision,\n\t\t\t\tcurrentPath,\n\t\t\t});\n\n\t\t\treturn previousTransition?.fromPath || currentPath;\n\t\t},\n\t\tasync listRevisionFiles({ workspacePath, revision, signal }) {\n\t\t\tconst { stdout } = await runner.runGit({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: ['diff-tree', '--root', '--no-commit-id', '--name-only', '-r', revision],\n\t\t\t\toptions: { signal },\n\t\t\t});\n\n\t\t\treturn parseOutputLines(stdout);\n\t\t},\n\t\tasync listRevisionTreeFiles({ workspacePath, revision, signal }) {\n\t\t\tconst { stdout } = await runner.runGit({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: ['ls-tree', '-r', '--name-only', revision],\n\t\t\t\toptions: { signal },\n\t\t\t});\n\t\t\treturn parseOutputLines(stdout).toSorted((left, right) => left.localeCompare(right));\n\t\t},\n\t\tasync listWorkingTreeFiles({ workspacePath, signal }) {\n\t\t\tconst files = new Set<string>();\n\n\t\t\ttry {\n\t\t\t\tconst { stdout } = await runner.runGit({\n\t\t\t\t\tworkspacePath,\n\t\t\t\t\targs: ['diff', '--name-only', 'HEAD', '--'],\n\t\t\t\t\toptions: { signal },\n\t\t\t\t});\n\t\t\t\tfor (const relativePath of parseOutputLines(stdout)) {\n\t\t\t\t\tfiles.add(relativePath);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Ignore missing HEAD or empty repos.\n\t\t\t}\n\n\t\t\treturn [...files].toSorted((left, right) => left.localeCompare(right));\n\t\t},\n\t\tasync getRemoteBaseUrl({ workspacePath }) {\n\t\t\ttry {\n\t\t\t\tconst { stdout } = await runner.runGit({\n\t\t\t\t\tworkspacePath,\n\t\t\t\t\targs: ['remote', 'get-url', 'origin'],\n\t\t\t\t});\n\t\t\t\treturn getGitHubRemoteBaseUrl(stdout);\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t\tasync getSnapshotEntriesForFile() {\n\t\t\treturn [];\n\t\t},\n\t\tasync buildRangeMultiDiffPlan({ workspacePath, fromEntry, toEntry, signal }) {\n\t\t\tconst changedFiles = toEntry.isWorkingTree\n\t\t\t\t? await listGitChangedFiles({ runner, workspacePath, fromRevision: fromEntry.revision, signal })\n\t\t\t\t: await listGitChangedFiles({\n\t\t\t\t\t\trunner,\n\t\t\t\t\t\tworkspacePath,\n\t\t\t\t\t\tfromRevision: fromEntry.revision,\n\t\t\t\t\t\ttoRevision: toEntry.revision,\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t});\n\n\t\t\treturn {\n\t\t\t\ttitle: `${fromEntry.shortRevision}..${toEntry.shortRevision}`,\n\t\t\t\tfiles: changedFiles.map((relativePath) => ({\n\t\t\t\t\trelativePath,\n\t\t\t\t\toriginalRevset: fromEntry.revision,\n\t\t\t\t\tmodifiedRevset: toEntry.isWorkingTree ? '@' : toEntry.revision,\n\t\t\t\t\tbackend: 'git',\n\t\t\t\t})),\n\t\t\t};\n\t\t},\n\t\tasync buildRevisionMultiDiffPlan({ workspacePath, entry, signal }) {\n\t\t\tconst changedFiles = await runner.runGit({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: ['diff-tree', '--root', '--no-commit-id', '--name-only', '-r', entry.revision],\n\t\t\t\toptions: { signal },\n\t\t\t});\n\t\t\tconst files = parseOutputLines(changedFiles.stdout);\n\t\t\tconst parentRevision = await resolveGitParentRevision({\n\t\t\t\trunner,\n\t\t\t\tworkspacePath,\n\t\t\t\trevision: entry.revision,\n\t\t\t\tsignal,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\ttitle: entry.shortRevision,\n\t\t\t\tfiles: files.map((relativePath) => ({\n\t\t\t\t\trelativePath,\n\t\t\t\t\toriginalRevset: parentRevision || 'EMPTY',\n\t\t\t\t\tmodifiedRevset: entry.revision,\n\t\t\t\t\tbackend: 'git',\n\t\t\t\t})),\n\t\t\t};\n\t\t},\n\t};\n}\n\nfunction createJjHistoryAdapter(args: { runner: CommandRunner }): HistoryAdapter {\n\tconst { runner } = args;\n\n\treturn {\n\t\tbackend: 'jj',\n\t\tasync getFileRevisionHistory({ workspacePath, relativePath, limit, customRevset }) {\n\t\t\treturn collectJjFileRevisionHistory({\n\t\t\t\trunner,\n\t\t\t\tworkspacePath,\n\t\t\t\trelativePath,\n\t\t\t\tlimit: limit ?? MAX_TIMELINE_ENTRIES,\n\t\t\t\tcustomRevset,\n\t\t\t});\n\t\t},\n\t\tasync getRepositoryRevisionHistory({ workspacePath, limit, customRevset }) {\n\t\t\tconst template = buildJjHistoryLogTemplate();\n\t\t\tconst { stdout } = await runner.runJj({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: [\n\t\t\t\t\t'log',\n\t\t\t\t\t'--no-graph',\n\t\t\t\t\t'--limit',\n\t\t\t\t\tString(limit ?? MAX_TIMELINE_ENTRIES),\n\t\t\t\t\t'-r',\n\t\t\t\t\tcustomRevset?.trim() || 'ancestors(@)',\n\t\t\t\t\t'-T',\n\t\t\t\t\ttemplate,\n\t\t\t\t],\n\t\t\t});\n\n\t\t\treturn dedupeAdjacentEntriesByChangeId(\n\t\t\t\tstdout\n\t\t\t\t\t.split(/\\r?\\n/u)\n\t\t\t\t\t.map((line) => line.trim())\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.map(parseJjHistoryLine)\n\t\t\t\t\t.map((entry) => ({\n\t\t\t\t\t\t...entry,\n\t\t\t\t\t\ttouchesFile: false,\n\t\t\t\t\t}))\n\t\t\t\t\t.toReversed(),\n\t\t\t);\n\t\t},\n\t\tasync getRevisionDiff({ workspacePath, revision }) {\n\t\t\tconst { stdout } = await runner.runJj({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: ['diff', '--git', '-r', revision],\n\t\t\t});\n\t\t\treturn stdout;\n\t\t},\n\t\tasync showFileAtRevision({ workspacePath, revset, filePath }) {\n\t\t\tif (revset === 'EMPTY') {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst { stdout } = await runner.runJj({\n\t\t\t\t\tworkspacePath,\n\t\t\t\t\targs: ['file', 'show', '-r', revset, toJjRootFileFileset(filePath)],\n\t\t\t\t});\n\t\t\t\treturn stdout;\n\t\t\t} catch (error) {\n\t\t\t\tif (isMissingFileAtRevisionError(error)) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tasync resolvePreviousPath({ workspacePath, revision, currentPath }) {\n\t\t\ttry {\n\t\t\t\tconst { stdout } = await runner.runJj({\n\t\t\t\t\tworkspacePath,\n\t\t\t\t\targs: ['diff', '--summary', '-r', revision],\n\t\t\t\t});\n\t\t\t\tconst rename = parseJjSummaryRenameLines(stdout).find((entry) => entry.toPath === currentPath);\n\t\t\t\tif (rename) {\n\t\t\t\t\treturn rename.fromPath;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Fall through to git-based predecessor detection when jj summary is insufficient.\n\t\t\t}\n\n\t\t\tconst previousTransition = await resolvePreviousGitPath({\n\t\t\t\trunner,\n\t\t\t\tworkspacePath,\n\t\t\t\trevision,\n\t\t\t\tcurrentPath,\n\t\t\t});\n\t\t\treturn shouldFollowPredecessorTransition(previousTransition) ? previousTransition.fromPath : currentPath;\n\t\t},\n\t\tasync listRevisionFiles({ workspacePath, revision, signal }) {\n\t\t\tconst { stdout } = await runner.runJj({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: ['diff', '--name-only', '-r', revision],\n\t\t\t\toptions: { signal },\n\t\t\t});\n\n\t\t\treturn parseOutputLines(stdout);\n\t\t},\n\t\tasync listRevisionTreeFiles({ workspacePath, revision, signal }) {\n\t\t\tconst { stdout } = await runner.runJj({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: ['file', 'list', '-r', revision],\n\t\t\t\toptions: { signal },\n\t\t\t});\n\t\t\treturn parseOutputLines(stdout).toSorted((left, right) => left.localeCompare(right));\n\t\t},\n\t\tasync listWorkingTreeFiles({ workspacePath, signal }) {\n\t\t\tconst { stdout } = await runner.runJj({\n\t\t\t\tworkspacePath,\n\t\t\t\targs: ['diff', '--name-only', '-r', '@'],\n\t\t\t\toptions: { signal },\n\t\t\t});\n\n\t\t\treturn parseOutputLines(stdout);\n\t\t},\n\t\tasync getRemoteBaseUrl({ workspacePath }) {\n\t\t\ttry {\n\t\t\t\tconst { stdout } = await runner.runGit({\n\t\t\t\t\tworkspacePath,\n\t\t\t\t\targs: ['remote', 'get-url', 'origin'],\n\t\t\t\t});\n\t\t\t\treturn getGitHubRemoteBaseUrl(stdout);\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t\tasync getSnapshotEntriesForFile({ workspacePath, relativePath, entry }) {\n\t\t\tif (!entry.changeId || entry.isWorkingTree || !entry.touchesFile) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst { stdout } = await runner.runJj({\n\t\t\t\t\tworkspacePath,\n\t\t\t\t\targs: ['evolog', '--no-graph', '--summary', '--limit', String(MAX_TIMELINE_ENTRIES), '-r', entry.revision],\n\t\t\t\t});\n\t\t\t\treturn parseJjEvolutionSummaryEntries(stdout)\n\t\t\t\t\t.filter((evolutionEntry) => parseJjSummaryChangedPaths(evolutionEntry.summaryLines).includes(relativePath))\n\t\t\t\t\t.map((evolutionEntry, evolutionIndex) => ({\n\t\t\t\t\t\tid: `snapshot:${entry.changeId}:${evolutionEntry.operationId || evolutionEntry.changeKey || evolutionEntry.revision}:${evolutionIndex}`,\n\t\t\t\t\t\trevision: evolutionEntry.revision,\n\t\t\t\t\t\tshortRevision:\n\t\t\t\t\t\t\tnormalizeSnapshotOperationKey(evolutionEntry.changeKey) || evolutionEntry.revision.slice(0, 8),\n\t\t\t\t\t\tchangeId: entry.changeId,\n\t\t\t\t\t\tbookmarkNames: evolutionEntry.bookmarkNames,\n\t\t\t\t\t\tauthorDate: normalizeSnapshotAuthorDate(evolutionEntry.authorDate, entry.authorDate),\n\t\t\t\t\t\tauthorName: evolutionEntry.authorName || entry.authorName,\n\t\t\t\t\t\tdescription: normalizeSnapshotDescription(evolutionEntry.description, evolutionEntry.operationDescription),\n\t\t\t\t\t\tisWorkingTree: false,\n\t\t\t\t\t\ttouchesFile: true,\n\t\t\t\t\t\ttimestamp: parseSnapshotTimestamp(evolutionEntry.authorDate, entry.timestamp),\n\t\t\t\t\t\tfilePath: relativePath,\n\t\t\t\t\t\toperationId: evolutionEntry.operationId,\n\t\t\t\t\t\toperationIndex: evolutionEntry.operationIndex,\n\t\t\t\t\t\toperationKey: evolutionEntry.changeKey,\n\t\t\t\t\t}))\n\t\t\t\t\t.toReversed();\n\t\t\t} catch {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\tasync buildRangeMultiDiffPlan({ workspacePath, fromEntry, toEntry, signal }) {\n\t\t\tlet changedFiles = await listChangedJjFiles({\n\t\t\t\trunner,\n\t\t\t\tworkspacePath,\n\t\t\t\tbase: fromEntry.revision,\n\t\t\t\ttarget: toEntry.isWorkingTree ? '@' : toEntry.revision,\n\t\t\t\tsignal,\n\t\t\t});\n\t\t\tlet originalRevset = fromEntry.revision;\n\t\t\tlet modifiedRevset = toEntry.isWorkingTree ? '@' : toEntry.revision;\n\t\t\tlet title = `${fromEntry.shortRevision}..${toEntry.shortRevision}`;\n\n\t\t\tif (!changedFiles.length && toEntry.isWorkingTree && fromEntry.revision !== modifiedRevset) {\n\t\t\t\tconst revisionFiles = await parseRevisionFilesForJj({\n\t\t\t\t\trunner,\n\t\t\t\t\tworkspacePath,\n\t\t\t\t\trevision: fromEntry.revision,\n\t\t\t\t\tsignal,\n\t\t\t\t});\n\t\t\t\tif (revisionFiles.length) {\n\t\t\t\t\tchangedFiles = revisionFiles;\n\t\t\t\t\toriginalRevset = `${fromEntry.revision}-`;\n\t\t\t\t\tmodifiedRevset = fromEntry.revision;\n\t\t\t\t\ttitle = fromEntry.shortRevision;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttitle,\n\t\t\t\tfiles: changedFiles.map((relativePath) => ({\n\t\t\t\t\trelativePath,\n\t\t\t\t\toriginalRevset,\n\t\t\t\t\tmodifiedRevset,\n\t\t\t\t\tbackend: 'jj',\n\t\t\t\t})),\n\t\t\t};\n\t\t},\n\t\tasync buildRevisionMultiDiffPlan({ workspacePath, entry, entryIndex, comparisonSource, sourceEntries, signal }) {\n\t\t\tconst baseRevision =\n\t\t\t\tcomparisonSource === 'snapshot'\n\t\t\t\t\t? sourceEntries[Math.max(0, entryIndex - 1)]?.revision || `${entry.revision}-`\n\t\t\t\t\t: `${entry.revision}-`;\n\t\t\tconst revisionFiles =\n\t\t\t\tcomparisonSource === 'snapshot'\n\t\t\t\t\t? await listChangedJjFiles({\n\t\t\t\t\t\t\trunner,\n\t\t\t\t\t\t\tworkspacePath,\n\t\t\t\t\t\t\tbase: baseRevision,\n\t\t\t\t\t\t\ttarget: entry.revision,\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t})\n\t\t\t\t\t: await parseRevisionFilesForJj({\n\t\t\t\t\t\t\trunner,\n\t\t\t\t\t\t\tworkspacePath,\n\t\t\t\t\t\t\trevision: entry.revision,\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t});\n\n\t\t\treturn {\n\t\t\t\ttitle: entry.shortRevision,\n\t\t\t\tfiles: revisionFiles.map((relativePath) => ({\n\t\t\t\t\trelativePath,\n\t\t\t\t\toriginalRevset: baseRevision,\n\t\t\t\t\tmodifiedRevset: entry.revision,\n\t\t\t\t\tbackend: 'jj',\n\t\t\t\t})),\n\t\t\t};\n\t\t},\n\t};\n}\n\nfunction parseGitHistoryLine(line: string): FileRevisionEntry {\n\tconst [revision = '', authorDate = '', authorName = '', decorations = '', ...descriptionParts] = line.split('\\t');\n\treturn {\n\t\tid: revision,\n\t\trevision,\n\t\tshortRevision: revision.slice(0, 8),\n\t\tbranchNames: parseGitBranchNames(decorations),\n\t\tchangeId: undefined,\n\t\tauthorDate,\n\t\tauthorName: authorName || 'Unknown author',\n\t\tdescription: descriptionParts.join('\\t') || 'No description',\n\t\tisWorkingTree: false,\n\t\ttouchesFile: true,\n\t\ttimestamp: Date.parse(authorDate) || 0,\n\t};\n}\n\ntype ParsedJjHistoryEntry = {\n\tentry: FileRevisionEntry;\n\tsummaryLines: string[];\n};\n\nasync function collectJjFileRevisionHistory(args: {\n\trunner: CommandRunner;\n\tworkspacePath: string;\n\trelativePath: string;\n\tlimit: number;\n\tancestorLimitRevset?: string;\n\tcustomRevset?: string;\n\tseenSegments?: Set<string>;\n}): Promise<FileRevisionEntry[]> {\n\tconst ancestorLimitRevset = args.ancestorLimitRevset || '@';\n\tconst seenSegments = args.seenSegments || new Set<string>();\n\tconst segmentKey = `${args.relativePath}\\u0000${ancestorLimitRevset}\\u0000${args.customRevset || ''}`;\n\tif (seenSegments.has(segmentKey)) {\n\t\treturn [];\n\t}\n\n\tseenSegments.add(segmentKey);\n\tconst segment = await loadJjFileHistorySegment(\n\t\targs.runner,\n\t\targs.workspacePath,\n\t\targs.relativePath,\n\t\tancestorLimitRevset,\n\t\targs.limit,\n\t\targs.customRevset,\n\t);\n\tconst previousSource = await resolvePreviousJjPath({\n\t\trunner: args.runner,\n\t\tworkspacePath: args.workspacePath,\n\t\trelativePath: args.relativePath,\n\t\tsegment,\n\t});\n\tconst previousEntries = previousSource\n\t\t? await collectJjFileRevisionHistory({\n\t\t\t\trunner: args.runner,\n\t\t\t\tworkspacePath: args.workspacePath,\n\t\t\t\trelativePath: previousSource.relativePath,\n\t\t\t\tancestorLimitRevset: previousSource.ancestorLimitRevset,\n\t\t\t\tcustomRevset: args.customRevset,\n\t\t\t\tseenSegments,\n\t\t\t\tlimit: args.limit,\n\t\t\t})\n\t\t: [];\n\n\treturn mergeJjHistoryEntries(\n\t\tpreviousEntries,\n\t\tsegment.map(({ entry }) => entry),\n\t);\n}\n\nasync function loadJjFileHistorySegment(\n\trunner: CommandRunner,\n\tworkspacePath: string,\n\trelativePath: string,\n\tancestorLimitRevset: string,\n\tlimit: number,\n\tcustomRevset?: string,\n): Promise<ParsedJjHistoryEntry[]> {\n\tconst template = buildJjHistoryLogTemplate();\n\tconst { stdout } = await runner.runJj({\n\t\tworkspacePath,\n\t\targs: [\n\t\t\t'log',\n\t\t\t'--no-graph',\n\t\t\t'--reversed',\n\t\t\t'--summary',\n\t\t\t'--limit',\n\t\t\tString(limit),\n\t\t\t'-r',\n\t\t\tcomposeJjHistoryRevset({\n\t\t\t\tdefaultRevset: buildJjAncestorHistoryRevset(ancestorLimitRevset),\n\t\t\t\tcustomRevset,\n\t\t\t}),\n\t\t\t'-T',\n\t\t\ttemplate,\n\t\t\ttoJjRootFileFileset(relativePath),\n\t\t],\n\t});\n\n\treturn parseJjHistoryEntriesWithSummary(stdout);\n}\n\nfunction parseJjHistoryEntriesWithSummary(output: string): ParsedJjHistoryEntry[] {\n\tconst entries: ParsedJjHistoryEntry[] = [];\n\tlet currentEntry: ParsedJjHistoryEntry | null = null;\n\n\tfor (const rawLine of output.split(/\\r?\\n/u)) {\n\t\tconst line = rawLine.trim();\n\t\tif (!line) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (line.includes('\\t')) {\n\t\t\tif (currentEntry) {\n\t\t\t\tentries.push(currentEntry);\n\t\t\t}\n\n\t\t\tcurrentEntry = {\n\t\t\t\tentry: parseJjHistoryLine(line),\n\t\t\t\tsummaryLines: [],\n\t\t\t};\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (currentEntry) {\n\t\t\tcurrentEntry.summaryLines.push(line);\n\t\t}\n\t}\n\n\tif (currentEntry) {\n\t\tentries.push(currentEntry);\n\t}\n\n\treturn entries;\n}\n\nfunction buildJjAncestorHistoryRevset(ancestorLimitRevset: string): string {\n\treturn `ancestors(${ancestorLimitRevset})`;\n}\n\nasync function resolvePreviousJjPath(args: {\n\trunner: CommandRunner;\n\tworkspacePath: string;\n\trelativePath: string;\n\tsegment: ParsedJjHistoryEntry[];\n}): Promise<{ relativePath: string; ancestorLimitRevset: string } | undefined> {\n\tconst boundaryEntry = args.segment[0];\n\tif (!boundaryEntry) {\n\t\treturn undefined;\n\t}\n\n\tconst boundarySummary = boundaryEntry.summaryLines.join('\\n');\n\tconst rename = parseJjSummaryRenameLines(boundarySummary).find((entry) => entry.toPath === args.relativePath);\n\tif (rename) {\n\t\treturn {\n\t\t\trelativePath: rename.fromPath,\n\t\t\tancestorLimitRevset: `${boundaryEntry.entry.revision}-`,\n\t\t};\n\t}\n\n\tconst previousTransition = await resolvePreviousGitPath({\n\t\trunner: args.runner,\n\t\tworkspacePath: args.workspacePath,\n\t\trevision: boundaryEntry.entry.revision,\n\t\tcurrentPath: args.relativePath,\n\t});\n\tif (!shouldFollowPredecessorTransition(previousTransition)) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\trelativePath: previousTransition.fromPath,\n\t\tancestorLimitRevset: `${boundaryEntry.entry.revision}-`,\n\t};\n}\n\nfunction mergeJjHistoryEntries(...segments: FileRevisionEntry[][]): FileRevisionEntry[] {\n\tconst seenRevisions = new Set<string>();\n\tconst merged: FileRevisionEntry[] = [];\n\n\tfor (const segment of segments) {\n\t\tfor (const entry of segment) {\n\t\t\tif (seenRevisions.has(entry.revision)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tseenRevisions.add(entry.revision);\n\t\t\tmerged.push(entry);\n\t\t}\n\t}\n\n\treturn merged;\n}\n\nfunction parseOutputLines(output: string): string[] {\n\treturn output\n\t\t.split(/\\r?\\n/u)\n\t\t.map((line) => line.trim())\n\t\t.filter(Boolean);\n}\n\nfunction parseGitPathTransitionLines(output: string): Array<{\n\tfromPath: string;\n\ttoPath: string;\n\tkind: 'rename' | 'copy';\n}> {\n\treturn parseOutputLines(output)\n\t\t.map((line) => {\n\t\t\tconst [status = '', fromPath = '', toPath = ''] = line.split('\\t');\n\t\t\tif (!status.startsWith('R') && !status.startsWith('C')) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn fromPath && toPath\n\t\t\t\t? {\n\t\t\t\t\t\tfromPath,\n\t\t\t\t\t\ttoPath,\n\t\t\t\t\t\tkind: status.startsWith('C') ? 'copy' : 'rename',\n\t\t\t\t\t}\n\t\t\t\t: null;\n\t\t})\n\t\t.filter((entry): entry is { fromPath: string; toPath: string; kind: 'rename' | 'copy' } => entry !== null);\n}\n\nfunction shouldFollowPredecessorTransition(\n\ttransition: { fromPath: string; toPath: string; kind: 'rename' | 'copy' } | undefined,\n): transition is { fromPath: string; toPath: string; kind: 'rename' | 'copy' } {\n\tif (!transition) {\n\t\treturn false;\n\t}\n\n\tif (transition.kind === 'rename') {\n\t\treturn true;\n\t}\n\n\treturn path.basename(transition.fromPath) === path.basename(transition.toPath);\n}\n\nasync function resolvePreviousGitPath(args: {\n\trunner: CommandRunner;\n\tworkspacePath: string;\n\trevision: string;\n\tcurrentPath: string;\n\tsignal?: AbortSignal;\n}): Promise<{ fromPath: string; toPath: string; kind: 'rename' | 'copy' } | undefined> {\n\ttry {\n\t\tconst { stdout } = await args.runner.runGit({\n\t\t\tworkspacePath: args.workspacePath,\n\t\t\targs: [\n\t\t\t\t'diff-tree',\n\t\t\t\t'--root',\n\t\t\t\t'--no-commit-id',\n\t\t\t\t'--name-status',\n\t\t\t\t'--find-renames=1%',\n\t\t\t\t'--find-copies=1%',\n\t\t\t\t'--find-copies-harder',\n\t\t\t\t'-r',\n\t\t\t\targs.revision,\n\t\t\t],\n\t\t\toptions: { signal: args.signal },\n\t\t});\n\n\t\treturn parseGitPathTransitionLines(stdout).find((entry) => entry.toPath === args.currentPath);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction isMissingFileAtRevisionError(error: unknown): boolean {\n\tconst message = error instanceof Error ? error.message : String(error);\n\treturn (\n\t\t/exists on disk, but not in/i.test(message) ||\n\t\t/path .* does not exist in/i.test(message) ||\n\t\t/no such path/i.test(message) ||\n\t\t/no matching entries/i.test(message) ||\n\t\t/No such file or directory/i.test(message)\n\t);\n}\n\nfunction normalizeSnapshotAuthorDate(authorDate: string, fallbackAuthorDate: string): string {\n\tconst value = authorDate.trim();\n\tif (value && !Number.isNaN(Date.parse(value))) {\n\t\treturn value;\n\t}\n\n\treturn fallbackAuthorDate;\n}\n\nfunction parseSnapshotTimestamp(authorDate: string, fallbackTimestamp: number): number {\n\tconst timestamp = Date.parse(authorDate);\n\treturn Number.isNaN(timestamp) ? fallbackTimestamp : timestamp;\n}\n\nfunction normalizeSnapshotDescription(description: string, operationDescription: string): string {\n\tconst trimmed = String(description || '').trim();\n\tif (!trimmed || trimmed === '(no description set)' || trimmed === '(empty) (no description set)') {\n\t\treturn operationDescription || 'Snapshot';\n\t}\n\n\treturn trimmed;\n}\n\nasync function listGitChangedFiles(args: {\n\trunner: CommandRunner;\n\tworkspacePath: string;\n\tfromRevision: string;\n\ttoRevision?: string;\n\tsignal?: AbortSignal;\n}): Promise<string[]> {\n\tconst commandArgs = args.toRevision\n\t\t? ['diff', '--name-only', args.fromRevision, args.toRevision, '--']\n\t\t: ['diff', '--name-only', args.fromRevision, '--'];\n\tconst { stdout } = await args.runner.runGit({\n\t\tworkspacePath: args.workspacePath,\n\t\targs: commandArgs,\n\t\toptions: { signal: args.signal },\n\t});\n\treturn parseOutputLines(stdout);\n}\n\nasync function resolveGitParentRevision(args: {\n\trunner: CommandRunner;\n\tworkspacePath: string;\n\trevision: string;\n\tsignal?: AbortSignal;\n}): Promise<string | undefined> {\n\ttry {\n\t\tconst { stdout } = await args.runner.runGit({\n\t\t\tworkspacePath: args.workspacePath,\n\t\t\targs: ['rev-parse', `${args.revision}^`],\n\t\t\toptions: { signal: args.signal },\n\t\t});\n\t\tconst parentRevision = stdout.trim();\n\t\treturn parentRevision || undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nasync function listChangedJjFiles(args: {\n\trunner: CommandRunner;\n\tworkspacePath: string;\n\tbase: string;\n\ttarget: string;\n\tsignal?: AbortSignal;\n}): Promise<string[]> {\n\tconst { stdout } = await args.runner.runJj({\n\t\tworkspacePath: args.workspacePath,\n\t\targs: ['diff', '--name-only', '--from', args.base, '--to', args.target],\n\t\toptions: { signal: args.signal },\n\t});\n\n\treturn parseOutputLines(stdout);\n}\n\nasync function parseRevisionFilesForJj(args: {\n\trunner: CommandRunner;\n\tworkspacePath: string;\n\trevision: string;\n\tsignal?: AbortSignal;\n}): Promise<string[]> {\n\tconst { stdout } = await args.runner.runJj({\n\t\tworkspacePath: args.workspacePath,\n\t\targs: ['diff', '--name-only', '-r', args.revision],\n\t\toptions: { signal: args.signal },\n\t});\n\n\treturn parseOutputLines(stdout);\n}\n"],"mappings":"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"}