difit 4.0.4 → 4.0.6

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 (172) hide show
  1. package/README.ja.md +3 -2
  2. package/README.ko.md +3 -2
  3. package/README.md +3 -2
  4. package/README.zh.md +3 -2
  5. package/dist/cli/comment.d.ts +2 -0
  6. package/dist/cli/comment.js +91 -0
  7. package/dist/cli/comment.test.d.ts +1 -0
  8. package/dist/cli/comment.test.js +164 -0
  9. package/dist/cli/index.js +104 -13
  10. package/dist/cli/index.test.js +5 -5
  11. package/dist/cli/utils.d.ts +1 -0
  12. package/dist/cli/utils.js +7 -0
  13. package/dist/client/assets/{_baseFor-DKyA49xd.js → _baseFor-Dq1lbcoh.js} +1 -1
  14. package/dist/client/assets/{arc-COOp7iVe.js → arc-1g1LrDb3.js} +1 -1
  15. package/dist/client/assets/architecture-YZFGNWBL-MZfdAdY6.js +1 -0
  16. package/dist/client/assets/architectureDiagram-Q4EWVU46-D87-Rmwy.js +36 -0
  17. package/dist/client/assets/{blockDiagram-DXYQGD6D-CtNJnEWN.js → blockDiagram-DXYQGD6D-Cep-MIFv.js} +1 -1
  18. package/dist/client/assets/{c4Diagram-AHTNJAMY-BqG-1m6C.js → c4Diagram-AHTNJAMY-BQuH9Txx.js} +1 -1
  19. package/dist/client/assets/channel-CJqLEVLU.js +1 -0
  20. package/dist/client/assets/{chunk-2KRD3SAO-DqP2NJNd.js → chunk-2KRD3SAO-CpQQpmvx.js} +1 -1
  21. package/dist/client/assets/chunk-336JU56O-Ddk9EzgO.js +2 -0
  22. package/dist/client/assets/chunk-426QAEUC-2xhUznDE.js +1 -0
  23. package/dist/client/assets/{chunk-4BX2VUAB-BT78EnQ6.js → chunk-4BX2VUAB-Ca-N0Wd9.js} +1 -1
  24. package/dist/client/assets/{chunk-4TB4RGXK-C4w_Bwzw.js → chunk-4TB4RGXK-ZTWP_Onw.js} +2 -2
  25. package/dist/client/assets/{chunk-55IACEB6-z3MQSTaj.js → chunk-55IACEB6-Dub40zHG.js} +1 -1
  26. package/dist/client/assets/{chunk-5FUZZQ4R-Chei69aj.js → chunk-5FUZZQ4R-Cgda0gtZ.js} +1 -1
  27. package/dist/client/assets/{chunk-5PVQY5BW-HgRiIs0X.js → chunk-5PVQY5BW-D8JPH_tm.js} +1 -1
  28. package/dist/client/assets/{chunk-67CJDMHE-B2q10-fp.js → chunk-67CJDMHE-U1KyLHzG.js} +1 -1
  29. package/dist/client/assets/{chunk-7N4EOEYR-DPgxysWq.js → chunk-7N4EOEYR-WzOy51nD.js} +1 -1
  30. package/dist/client/assets/{chunk-AA7GKIK3-BqmVmKLq.js → chunk-AA7GKIK3-DlWOj4lr.js} +1 -1
  31. package/dist/client/assets/{chunk-BSJP7CBP-CaIgleFn.js → chunk-BSJP7CBP-CcZ0op08.js} +1 -1
  32. package/dist/client/assets/{chunk-CIAEETIT-ByD-tlNF.js → chunk-CIAEETIT-qVSphnw5.js} +1 -1
  33. package/dist/client/assets/{chunk-EDXVE4YY-d3RUKKAj.js → chunk-EDXVE4YY-76SPH4sf.js} +1 -1
  34. package/dist/client/assets/{chunk-ENJZ2VHE-CNq5Qmg9.js → chunk-ENJZ2VHE-CKULNIzL.js} +1 -1
  35. package/dist/client/assets/{chunk-FMBD7UC4-DYfHJ6MV.js → chunk-FMBD7UC4-CvDPP3mb.js} +1 -1
  36. package/dist/client/assets/{chunk-FOC6F5B3-BRpSWlZj.js → chunk-FOC6F5B3-DceW0hWA.js} +1 -1
  37. package/dist/client/assets/{chunk-ICPOFSXX-B_MThwG6.js → chunk-ICPOFSXX-ChGBNZMk.js} +2 -2
  38. package/dist/client/assets/{chunk-K5T4RW27-DmamW1Ds.js → chunk-K5T4RW27-DBHdC4ln.js} +10 -10
  39. package/dist/client/assets/{chunk-KGLVRYIC-CRbg4c4z.js → chunk-KGLVRYIC-DRS7yiGQ.js} +1 -1
  40. package/dist/client/assets/{chunk-LIHQZDEY-CHQPSdB3.js → chunk-LIHQZDEY-KsE8dyJP.js} +1 -1
  41. package/dist/client/assets/{chunk-ORNJ4GCN-CIsQ4Zi4.js → chunk-ORNJ4GCN-Dnp4oHRD.js} +1 -1
  42. package/dist/client/assets/{chunk-OYMX7WX6-Cxi0kdGg.js → chunk-OYMX7WX6-CciaotDu.js} +1 -1
  43. package/dist/client/assets/chunk-QZHKN3VN-BiVE5u_E.js +1 -0
  44. package/dist/client/assets/{chunk-U2HBQHQK-V_hneCfR.js → chunk-U2HBQHQK-nbp7CjBP.js} +1 -1
  45. package/dist/client/assets/{chunk-X2U36JSP-De4pvO-I.js → chunk-X2U36JSP-Chs85loT.js} +1 -1
  46. package/dist/client/assets/{chunk-XPW4576I-B_osXKp6.js → chunk-XPW4576I-VtI9b561.js} +1 -1
  47. package/dist/client/assets/{chunk-YZCP3GAM-C_kqXssD.js → chunk-YZCP3GAM-sBsewSoO.js} +1 -1
  48. package/dist/client/assets/{chunk-ZZ45TVLE-B_xtlma5.js → chunk-ZZ45TVLE-TMgeW_px.js} +1 -1
  49. package/dist/client/assets/classDiagram-6PBFFD2Q-CfyHazmg.js +1 -0
  50. package/dist/client/assets/classDiagram-v2-HSJHXN6E-D7Rb-bnu.js +1 -0
  51. package/dist/client/assets/clone-8xC1huEg.js +1 -0
  52. package/dist/client/assets/cose-bilkent-S5V4N54A-5TzM3w9g.js +1 -0
  53. package/dist/client/assets/{cytoscape.esm-DRReFUEO.js → cytoscape.esm-DdcHPZAZ.js} +2 -2
  54. package/dist/client/assets/{dagre-KV5264BT-BWYGReXF.js → dagre-KV5264BT-xvyFOxd3.js} +1 -1
  55. package/dist/client/assets/{dagre-DU-XBdcU.js → dagre-sb6WtN4K.js} +1 -1
  56. package/dist/client/assets/{diagram-5BDNPKRD-DpUUhvWz.js → diagram-5BDNPKRD-ChRpAe5p.js} +1 -1
  57. package/dist/client/assets/{diagram-G4DWMVQ6-BJoTrUAx.js → diagram-G4DWMVQ6-C_8BED4A.js} +1 -1
  58. package/dist/client/assets/{diagram-MMDJMWI5-CAk1GW5g.js → diagram-MMDJMWI5-BMwXEou2.js} +1 -1
  59. package/dist/client/assets/{diagram-TYMM5635-Cct6g7FA.js → diagram-TYMM5635-CeAkx82D.js} +1 -1
  60. package/dist/client/assets/{dist-61sCfOmN.js → dist-CwC9dd2Z.js} +1 -1
  61. package/dist/client/assets/{erDiagram-SMLLAGMA-DHs2bXUj.js → erDiagram-SMLLAGMA-yGCTeXGt.js} +1 -1
  62. package/dist/client/assets/{flatten-mnWyE-RB.js → flatten-SRIRKgqP.js} +1 -1
  63. package/dist/client/assets/{flowDiagram-DWJPFMVM-DLu-6dfC.js → flowDiagram-DWJPFMVM-CugkvbmM.js} +1 -1
  64. package/dist/client/assets/ganttDiagram-T4ZO3ILL-BXnlBFgK.js +292 -0
  65. package/dist/client/assets/gitGraph-7Q5UKJZL-BeTWkPrd.js +1 -0
  66. package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-Bc_rL3_k.js → gitGraphDiagram-UUTBAWPF-B61aCwwu.js} +1 -1
  67. package/dist/client/assets/{graphlib-BVMK0xYE.js → graphlib-BMWKz3zT.js} +1 -1
  68. package/dist/client/assets/index-D2Y8-unG.css +2 -0
  69. package/dist/client/assets/index-D9v_eYzS.js +79 -0
  70. package/dist/client/assets/info-OMHHGYJF-MUNR2tTt.js +1 -0
  71. package/dist/client/assets/{infoDiagram-42DDH7IO-Cf8u4jgP.js → infoDiagram-42DDH7IO-Bkh6nTL2.js} +1 -1
  72. package/dist/client/assets/{isEmpty-CiiIHfXR.js → isEmpty-CStpjy4G.js} +1 -1
  73. package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-7n7DvfEb.js → ishikawaDiagram-UXIWVN3A-D_fdVT6_.js} +1 -1
  74. package/dist/client/assets/{journeyDiagram-VCZTEJTY-BMkeQqJb.js → journeyDiagram-VCZTEJTY-DkXVokNF.js} +1 -1
  75. package/dist/client/assets/{kanban-definition-6JOO6SKY-B8KkeZLS.js → kanban-definition-6JOO6SKY-y8qq7qvL.js} +1 -1
  76. package/dist/client/assets/{line-CVpcI6kj.js → line-B0LcTqNY.js} +1 -1
  77. package/dist/client/assets/{linear-DmhiOOKU.js → linear-CqIjr2qp.js} +1 -1
  78. package/dist/client/assets/mermaid-parser.core-Du6QzpZO.js +4 -0
  79. package/dist/client/assets/{mermaid.core-R7nXpPx-.js → mermaid.core-CZBu-oKJ.js} +3 -3
  80. package/dist/client/assets/{mindmap-definition-QFDTVHPH-CwcHocMZ.js → mindmap-definition-QFDTVHPH-BJrRxSkM.js} +1 -1
  81. package/dist/client/assets/{ordinal-k--hYEme.js → ordinal-DIg8h6NI.js} +1 -1
  82. package/dist/client/assets/packet-4T2RLAQJ-Ci-Uu57s.js +1 -0
  83. package/dist/client/assets/pie-ZZUOXDRM-pm57XGIg.js +1 -0
  84. package/dist/client/assets/{pieDiagram-DEJITSTG-BVAn8Lmr.js → pieDiagram-DEJITSTG-Debmhc0u.js} +1 -1
  85. package/dist/client/assets/prism-clojure-BpoF2XhX.js +1 -0
  86. package/dist/client/assets/{quadrantDiagram-34T5L4WZ-C2XZ_zxa.js → quadrantDiagram-34T5L4WZ-SE3g2BC9.js} +1 -1
  87. package/dist/client/assets/radar-PYXPWWZC-CH-AuSDw.js +1 -0
  88. package/dist/client/assets/{reduce-BTlHjXna.js → reduce-CG4cgj93.js} +1 -1
  89. package/dist/client/assets/{requirementDiagram-MS252O5E-CfO16pkI.js → requirementDiagram-MS252O5E-1mv41puC.js} +1 -1
  90. package/dist/client/assets/{sankeyDiagram-XADWPNL6-D_4_234M.js → sankeyDiagram-XADWPNL6-CLjPRtOP.js} +1 -1
  91. package/dist/client/assets/{sequenceDiagram-FGHM5R23-B-yHKMuK.js → sequenceDiagram-FGHM5R23-Cs-P3AtR.js} +1 -1
  92. package/dist/client/assets/src-5XpQHeIJ.js +1 -0
  93. package/dist/client/assets/{stateDiagram-FHFEXIEX-BeG2di4I.js → stateDiagram-FHFEXIEX-CmB1fohY.js} +1 -1
  94. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-D6jsrR-f.js +1 -0
  95. package/dist/client/assets/{timeline-definition-GMOUNBTQ-DhtnMGcE.js → timeline-definition-GMOUNBTQ-BMUafJOI.js} +1 -1
  96. package/dist/client/assets/treeView-SZITEDCU-BGsVMAdJ.js +1 -0
  97. package/dist/client/assets/treemap-W4RFUUIX-DXnhegXy.js +1 -0
  98. package/dist/client/assets/{vennDiagram-DHZGUBPP-CBn69TcQ.js → vennDiagram-DHZGUBPP-CpZ1Qhjz.js} +1 -1
  99. package/dist/client/assets/wardley-RL74JXVD-COd5nWj-.js +1 -0
  100. package/dist/client/assets/{wardleyDiagram-NUSXRM2D-CEoSJmN1.js → wardleyDiagram-NUSXRM2D-C-zH0lsd.js} +1 -1
  101. package/dist/client/assets/{xychartDiagram-5P7HB3ND-BZ_X9tkn.js → xychartDiagram-5P7HB3ND-SkLFuEHZ.js} +1 -1
  102. package/dist/client/index.html +2 -4
  103. package/dist/client/site-data/blobs/080c0e6/cHVibGljL3NpdGUtZGF0YS9vZy1pbWFnZS5wbmc.png +0 -0
  104. package/dist/client/site-data/blobs/55f23a1/bGFuZGluZy9wdWJsaWMvZGlmaXQvbG9nby5wbmc.png +0 -0
  105. package/dist/client/site-data/blobs/66ff7c6/cHVibGljL2xvZ28ucG5n.png +0 -0
  106. package/dist/client/site-data/blobs/e6977fe/cHVibGljL2xvZ28ucG5n.png +0 -0
  107. package/dist/client/site-data/og-image.png +0 -0
  108. package/dist/server/file-watcher.d.ts +2 -1
  109. package/dist/server/file-watcher.js +9 -3
  110. package/dist/server/git-diff.d.ts +5 -0
  111. package/dist/server/git-diff.js +65 -1
  112. package/dist/server/git-diff.test.js +50 -0
  113. package/dist/server/server.js +265 -68
  114. package/dist/server/server.test.js +228 -0
  115. package/dist/tui/App.js +0 -1
  116. package/dist/types/diff.d.ts +4 -4
  117. package/dist/types/watch.d.ts +30 -1
  118. package/dist/utils/commentImports.d.ts +2 -0
  119. package/dist/utils/commentImports.js +119 -1
  120. package/dist/utils/editorOptions.d.ts +58 -35
  121. package/dist/utils/editorOptions.js +150 -24
  122. package/dist/utils/editorOptions.test.js +201 -9
  123. package/package.json +9 -6
  124. package/dist/client/assets/architecture-YZFGNWBL-Cs2Q6RQP.js +0 -1
  125. package/dist/client/assets/architectureDiagram-Q4EWVU46-BO4dVPUA.js +0 -36
  126. package/dist/client/assets/channel-_xDT1u3-.js +0 -1
  127. package/dist/client/assets/chunk-336JU56O-D1qa7Qzb.js +0 -2
  128. package/dist/client/assets/chunk-426QAEUC-6J_A_wvD.js +0 -1
  129. package/dist/client/assets/chunk-CFjPhJqf.js +0 -1
  130. package/dist/client/assets/chunk-QZHKN3VN-C0QzfgZ8.js +0 -1
  131. package/dist/client/assets/classDiagram-6PBFFD2Q-5XrS-DAQ.js +0 -1
  132. package/dist/client/assets/classDiagram-v2-HSJHXN6E-Covl2vKy.js +0 -1
  133. package/dist/client/assets/clone-rhRH8pyW.js +0 -1
  134. package/dist/client/assets/cose-bilkent-S5V4N54A-BvXFc7Rr.js +0 -1
  135. package/dist/client/assets/ganttDiagram-T4ZO3ILL-CMIzlKAR.js +0 -292
  136. package/dist/client/assets/gitGraph-7Q5UKJZL-A_wWsXju.js +0 -1
  137. package/dist/client/assets/index-Cq_APK7Y.css +0 -2
  138. package/dist/client/assets/index-RcU838Ah.js +0 -79
  139. package/dist/client/assets/info-OMHHGYJF-Bv3kK2Bb.js +0 -1
  140. package/dist/client/assets/mermaid-parser.core-CnJ9Tv8l.js +0 -4
  141. package/dist/client/assets/packet-4T2RLAQJ-D2q3-9ae.js +0 -1
  142. package/dist/client/assets/pie-ZZUOXDRM-GivlQcUF.js +0 -1
  143. package/dist/client/assets/preload-helper-DSXbuxSR.js +0 -1
  144. package/dist/client/assets/radar-PYXPWWZC-C9pD6VNR.js +0 -1
  145. package/dist/client/assets/src-CjDs0_Ij.js +0 -1
  146. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-DvcSq7KE.js +0 -1
  147. package/dist/client/assets/treeView-SZITEDCU-BSNk8_yV.js +0 -1
  148. package/dist/client/assets/treemap-W4RFUUIX-ym4zQztE.js +0 -1
  149. package/dist/client/assets/wardley-RL74JXVD-B02H6ReJ.js +0 -1
  150. /package/dist/client/assets/{array-BNor45A1.js → array-DOVTz2Mq.js} +0 -0
  151. /package/dist/client/assets/{defaultLocale-DPzUsThw.js → defaultLocale-Ck2Xxk-C.js} +0 -0
  152. /package/dist/client/assets/{init-C0L3woqb.js → init-Bft5Ffpj.js} +0 -0
  153. /package/dist/client/assets/{katex-FOM3xZj7.js → katex-CeIlAR55.js} +0 -0
  154. /package/dist/client/assets/{path-sMK4d_s9.js → path-DfRbCp9y.js} +0 -0
  155. /package/dist/client/assets/{prism-bash-iQBez6et.js → prism-bash-CPkZUJMA.js} +0 -0
  156. /package/dist/client/assets/{prism-csharp-C1RDHXRk.js → prism-csharp-BEk8D1-3.js} +0 -0
  157. /package/dist/client/assets/{prism-dart-nIH9vDUM.js → prism-dart-ByLYrdQB.js} +0 -0
  158. /package/dist/client/assets/{prism-elixir-DUMUOd7H.js → prism-elixir-BZtyIEab.js} +0 -0
  159. /package/dist/client/assets/{prism-haskell-BP3SRvzt.js → prism-haskell-NAsbeo3V.js} +0 -0
  160. /package/dist/client/assets/{prism-hcl-C-ZHJGEE.js → prism-hcl-crnGqmVp.js} +0 -0
  161. /package/dist/client/assets/{prism-java-scuShSv5.js → prism-java-BovStacA.js} +0 -0
  162. /package/dist/client/assets/{prism-markup-templating-BFXREXfb.js → prism-markup-templating-Cl8NiLjy.js} +0 -0
  163. /package/dist/client/assets/{prism-nix-CO4UPu3E.js → prism-nix-BS_cm_1n.js} +0 -0
  164. /package/dist/client/assets/{prism-perl-BBDKnHRR.js → prism-perl-DGLVMq5H.js} +0 -0
  165. /package/dist/client/assets/{prism-php-DjIafOi_.js → prism-php-BskSwJN8.js} +0 -0
  166. /package/dist/client/assets/{prism-protobuf-BE1MoFmZ.js → prism-protobuf-DfbIYpO7.js} +0 -0
  167. /package/dist/client/assets/{prism-ruby-CZ-lrXfL.js → prism-ruby-FBVh1PRE.js} +0 -0
  168. /package/dist/client/assets/{prism-scala-DgnxHuDn.js → prism-scala--9AfMHPY.js} +0 -0
  169. /package/dist/client/assets/{prism-solidity-5fSUcW9Y.js → prism-solidity-BgJNkj1z.js} +0 -0
  170. /package/dist/client/assets/{prism-sql-CKkohPI_.js → prism-sql-C9Czmpov.js} +0 -0
  171. /package/dist/client/assets/{prism-vim-CkRmxTmK.js → prism-vim-CzUNf0WQ.js} +0 -0
  172. /package/dist/client/assets/{rough.esm-DeLgKbOI.js → rough.esm-Bbn_-PMU.js} +0 -0
@@ -1,4 +1,4 @@
1
- import{g as e,h as t}from"./src-CjDs0_Ij.js";import{B as n,C as r,E as i,L as a,V as o,W as s,_ as c,a as l,c as u,d,v as f,y as p}from"./chunk-ICPOFSXX-B_MThwG6.js";import{t as m}from"./linear-DmhiOOKU.js";import{t as h}from"./ordinal-k--hYEme.js";import{t as g}from"./init-C0L3woqb.js";import{r as _}from"./chunk-5PVQY5BW-HgRiIs0X.js";import{t as v}from"./line-CVpcI6kj.js";import{t as y}from"./chunk-426QAEUC-6J_A_wvD.js";import{t as b}from"./chunk-U2HBQHQK-V_hneCfR.js";function x(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function S(){var e=h().unknown(void 0),t=e.domain,n=e.range,r=0,i=1,a,o,s=!1,c=0,l=0,u=.5;delete e.unknown;function d(){var e=t().length,d=i<r,f=d?i:r,p=d?r:i;a=(p-f)/Math.max(1,e-c+l*2),s&&(a=Math.floor(a)),f+=(p-f-a*(e-c))*u,o=a*(1-c),s&&(f=Math.round(f),o=Math.round(o));var m=x(e).map(function(e){return f+a*e});return n(d?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),d()):t()},e.range=function(e){return arguments.length?([r,i]=e,r=+r,i=+i,d()):[r,i]},e.rangeRound=function(e){return[r,i]=e,r=+r,i=+i,s=!0,d()},e.bandwidth=function(){return o},e.step=function(){return a},e.round=function(e){return arguments.length?(s=!!e,d()):s},e.padding=function(e){return arguments.length?(c=Math.min(1,l=+e),d()):c},e.paddingInner=function(e){return arguments.length?(c=Math.min(1,e),d()):c},e.paddingOuter=function(e){return arguments.length?(l=+e,d()):l},e.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),d()):u},e.copy=function(){return S(t(),[r,i]).round(s).paddingInner(c).paddingOuter(l).align(u)},g.apply(d(),arguments)}var C=(function(){var e=t(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),n=[1,10,12,14,16,18,19,21,23],r=[2,6],i=[1,3],a=[1,5],o=[1,6],s=[1,7],c=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],u=[1,26],d=[1,28],f=[1,29],p=[1,30],m=[1,31],h=[1,32],g=[1,33],_=[1,34],v=[1,35],y=[1,36],b=[1,37],x=[1,43],S=[1,42],C=[1,47],w=[1,50],T=[1,10,12,14,16,18,19,21,23,34,35,36],E=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],D=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],O=[1,64],k={trace:t(function(){},`trace`),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:`error`,5:`XYCHART`,8:`CHART_ORIENTATION`,10:`title`,12:`X_AXIS`,14:`Y_AXIS`,16:`LINE`,18:`BAR`,19:`acc_title`,20:`acc_title_value`,21:`acc_descr`,22:`acc_descr_value`,23:`acc_descr_multiline_value`,24:`SQUARE_BRACES_START`,26:`SQUARE_BRACES_END`,27:`NUMBER_WITH_DECIMAL`,28:`COMMA`,31:`ARROW_DELIMITER`,34:`NEWLINE`,35:`SEMI`,36:`EOF`,38:`STR`,39:`MD_STR`,41:`AMP`,42:`NUM`,43:`ALPHA`,44:`PLUS`,45:`EQUALS`,46:`MULT`,47:`DOT`,48:`BRKT`,49:`MINUS`,50:`UNDERSCORE`},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:t(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.setOrientation(a[s]);break;case 9:r.setDiagramTitle(a[s].text.trim());break;case 12:r.setLineData({text:``,type:`text`},a[s]);break;case 13:r.setLineData(a[s-1],a[s]);break;case 14:r.setBarData({text:``,type:`text`},a[s]);break;case 15:r.setBarData(a[s-1],a[s]);break;case 16:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 17:case 18:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 19:this.$=a[s-1];break;case 20:this.$=[Number(a[s-2]),...a[s]];break;case 21:this.$=[Number(a[s])];break;case 22:r.setXAxisTitle(a[s]);break;case 23:r.setXAxisTitle(a[s-1]);break;case 24:r.setXAxisTitle({type:`text`,text:``});break;case 25:r.setXAxisBand(a[s]);break;case 26:r.setXAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 27:this.$=a[s-1];break;case 28:this.$=[a[s-2],...a[s]];break;case 29:this.$=[a[s]];break;case 30:r.setYAxisTitle(a[s]);break;case 31:r.setYAxisTitle(a[s-1]);break;case 32:r.setYAxisTitle({type:`text`,text:``});break;case 33:r.setYAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 37:this.$={text:a[s],type:`text`};break;case 38:this.$={text:a[s],type:`text`};break;case 39:this.$={text:a[s],type:`markdown`};break;case 40:this.$=a[s];break;case 41:this.$=a[s-1]+``+a[s];break}},`anonymous`),table:[e(n,r,{3:1,4:2,7:4,5:i,34:a,35:o,36:s}),{1:[3]},e(n,r,{4:2,7:4,3:8,5:i,34:a,35:o,36:s}),e(n,r,{4:2,7:4,6:9,3:10,5:i,8:[1,11],34:a,35:o,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(c,[2,34]),e(c,[2,35]),e(c,[2,36]),{1:[2,1]},e(n,r,{4:2,7:4,3:21,5:i,34:a,35:o,36:s}),{1:[2,3]},e(c,[2,5]),e(n,[2,7],{4:22,34:a,35:o,36:s}),{11:23,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:39,13:38,24:x,27:S,29:40,30:41,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:45,15:44,27:C,33:46,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:49,17:48,24:w,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:52,17:51,24:w,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{20:[1,53]},{22:[1,54]},e(T,[2,18]),{1:[2,2]},e(T,[2,8]),e(T,[2,9]),e(E,[2,37],{40:55,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b}),e(E,[2,38]),e(E,[2,39]),e(D,[2,40]),e(D,[2,42]),e(D,[2,43]),e(D,[2,44]),e(D,[2,45]),e(D,[2,46]),e(D,[2,47]),e(D,[2,48]),e(D,[2,49]),e(D,[2,50]),e(D,[2,51]),e(T,[2,10]),e(T,[2,22],{30:41,29:56,24:x,27:S}),e(T,[2,24]),e(T,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,11]),e(T,[2,30],{33:60,27:C}),e(T,[2,32]),{31:[1,61]},e(T,[2,12]),{17:62,24:w},{25:63,27:O},e(T,[2,14]),{17:65,24:w},e(T,[2,16]),e(T,[2,17]),e(D,[2,41]),e(T,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(T,[2,31]),{27:[1,69]},e(T,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(T,[2,15]),e(T,[2,26]),e(T,[2,27]),{11:59,32:72,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,33]),e(T,[2,19]),{25:73,27:O},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:t(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:t(function(e){var n=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}t(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=n.symbols_[e]||e),e}t(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
1
+ import{g as e,h as t}from"./src-5XpQHeIJ.js";import{B as n,C as r,E as i,L as a,V as o,W as s,_ as c,a as l,c as u,d,v as f,y as p}from"./chunk-ICPOFSXX-ChGBNZMk.js";import{t as m}from"./linear-CqIjr2qp.js";import{t as h}from"./ordinal-DIg8h6NI.js";import{t as g}from"./init-Bft5Ffpj.js";import{r as _}from"./chunk-5PVQY5BW-D8JPH_tm.js";import{t as v}from"./line-B0LcTqNY.js";import{t as y}from"./chunk-426QAEUC-2xhUznDE.js";import{t as b}from"./chunk-U2HBQHQK-nbp7CjBP.js";function x(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function S(){var e=h().unknown(void 0),t=e.domain,n=e.range,r=0,i=1,a,o,s=!1,c=0,l=0,u=.5;delete e.unknown;function d(){var e=t().length,d=i<r,f=d?i:r,p=d?r:i;a=(p-f)/Math.max(1,e-c+l*2),s&&(a=Math.floor(a)),f+=(p-f-a*(e-c))*u,o=a*(1-c),s&&(f=Math.round(f),o=Math.round(o));var m=x(e).map(function(e){return f+a*e});return n(d?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),d()):t()},e.range=function(e){return arguments.length?([r,i]=e,r=+r,i=+i,d()):[r,i]},e.rangeRound=function(e){return[r,i]=e,r=+r,i=+i,s=!0,d()},e.bandwidth=function(){return o},e.step=function(){return a},e.round=function(e){return arguments.length?(s=!!e,d()):s},e.padding=function(e){return arguments.length?(c=Math.min(1,l=+e),d()):c},e.paddingInner=function(e){return arguments.length?(c=Math.min(1,e),d()):c},e.paddingOuter=function(e){return arguments.length?(l=+e,d()):l},e.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),d()):u},e.copy=function(){return S(t(),[r,i]).round(s).paddingInner(c).paddingOuter(l).align(u)},g.apply(d(),arguments)}var C=(function(){var e=t(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),n=[1,10,12,14,16,18,19,21,23],r=[2,6],i=[1,3],a=[1,5],o=[1,6],s=[1,7],c=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],u=[1,26],d=[1,28],f=[1,29],p=[1,30],m=[1,31],h=[1,32],g=[1,33],_=[1,34],v=[1,35],y=[1,36],b=[1,37],x=[1,43],S=[1,42],C=[1,47],w=[1,50],T=[1,10,12,14,16,18,19,21,23,34,35,36],E=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],D=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],O=[1,64],k={trace:t(function(){},`trace`),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:`error`,5:`XYCHART`,8:`CHART_ORIENTATION`,10:`title`,12:`X_AXIS`,14:`Y_AXIS`,16:`LINE`,18:`BAR`,19:`acc_title`,20:`acc_title_value`,21:`acc_descr`,22:`acc_descr_value`,23:`acc_descr_multiline_value`,24:`SQUARE_BRACES_START`,26:`SQUARE_BRACES_END`,27:`NUMBER_WITH_DECIMAL`,28:`COMMA`,31:`ARROW_DELIMITER`,34:`NEWLINE`,35:`SEMI`,36:`EOF`,38:`STR`,39:`MD_STR`,41:`AMP`,42:`NUM`,43:`ALPHA`,44:`PLUS`,45:`EQUALS`,46:`MULT`,47:`DOT`,48:`BRKT`,49:`MINUS`,50:`UNDERSCORE`},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:t(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.setOrientation(a[s]);break;case 9:r.setDiagramTitle(a[s].text.trim());break;case 12:r.setLineData({text:``,type:`text`},a[s]);break;case 13:r.setLineData(a[s-1],a[s]);break;case 14:r.setBarData({text:``,type:`text`},a[s]);break;case 15:r.setBarData(a[s-1],a[s]);break;case 16:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 17:case 18:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 19:this.$=a[s-1];break;case 20:this.$=[Number(a[s-2]),...a[s]];break;case 21:this.$=[Number(a[s])];break;case 22:r.setXAxisTitle(a[s]);break;case 23:r.setXAxisTitle(a[s-1]);break;case 24:r.setXAxisTitle({type:`text`,text:``});break;case 25:r.setXAxisBand(a[s]);break;case 26:r.setXAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 27:this.$=a[s-1];break;case 28:this.$=[a[s-2],...a[s]];break;case 29:this.$=[a[s]];break;case 30:r.setYAxisTitle(a[s]);break;case 31:r.setYAxisTitle(a[s-1]);break;case 32:r.setYAxisTitle({type:`text`,text:``});break;case 33:r.setYAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 37:this.$={text:a[s],type:`text`};break;case 38:this.$={text:a[s],type:`text`};break;case 39:this.$={text:a[s],type:`markdown`};break;case 40:this.$=a[s];break;case 41:this.$=a[s-1]+``+a[s];break}},`anonymous`),table:[e(n,r,{3:1,4:2,7:4,5:i,34:a,35:o,36:s}),{1:[3]},e(n,r,{4:2,7:4,3:8,5:i,34:a,35:o,36:s}),e(n,r,{4:2,7:4,6:9,3:10,5:i,8:[1,11],34:a,35:o,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(c,[2,34]),e(c,[2,35]),e(c,[2,36]),{1:[2,1]},e(n,r,{4:2,7:4,3:21,5:i,34:a,35:o,36:s}),{1:[2,3]},e(c,[2,5]),e(n,[2,7],{4:22,34:a,35:o,36:s}),{11:23,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:39,13:38,24:x,27:S,29:40,30:41,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:45,15:44,27:C,33:46,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:49,17:48,24:w,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:52,17:51,24:w,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{20:[1,53]},{22:[1,54]},e(T,[2,18]),{1:[2,2]},e(T,[2,8]),e(T,[2,9]),e(E,[2,37],{40:55,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b}),e(E,[2,38]),e(E,[2,39]),e(D,[2,40]),e(D,[2,42]),e(D,[2,43]),e(D,[2,44]),e(D,[2,45]),e(D,[2,46]),e(D,[2,47]),e(D,[2,48]),e(D,[2,49]),e(D,[2,50]),e(D,[2,51]),e(T,[2,10]),e(T,[2,22],{30:41,29:56,24:x,27:S}),e(T,[2,24]),e(T,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,11]),e(T,[2,30],{33:60,27:C}),e(T,[2,32]),{31:[1,61]},e(T,[2,12]),{17:62,24:w},{25:63,27:O},e(T,[2,14]),{17:65,24:w},e(T,[2,16]),e(T,[2,17]),e(D,[2,41]),e(T,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(T,[2,31]),{27:[1,69]},e(T,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(T,[2,15]),e(T,[2,26]),e(T,[2,27]),{11:59,32:72,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,33]),e(T,[2,19]),{25:73,27:O},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:t(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:t(function(e){var n=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}t(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=n.symbols_[e]||e),e}t(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
2
2
  `+h.showPosition()+`
3
3
  Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:r.push(S),a.push(h.yytext),o.push(h.yylloc),r.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(r=r.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),r.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[r[r.length-2]][r[r.length-1]],r.push(A);break;case 3:return!0}}return!0},`parse`)};k.lexer=(function(){return{EOF:1,parseError:t(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:t(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:t(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:t(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:t(function(){return this._more=!0,this},`more`),reject:t(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:t(function(e){this.unput(this.match.slice(e))},`less`),pastInput:t(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:t(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:t(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`
@@ -7,10 +7,8 @@
7
7
  <link rel="icon" href="/favicon-white.svg" media="(prefers-color-scheme: dark)" />
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
9
  <title>difit - Git Diff Viewer</title>
10
- <script type="module" crossorigin src="/assets/index-RcU838Ah.js"></script>
11
- <link rel="modulepreload" crossorigin href="/assets/chunk-CFjPhJqf.js">
12
- <link rel="modulepreload" crossorigin href="/assets/preload-helper-DSXbuxSR.js">
13
- <link rel="stylesheet" crossorigin href="/assets/index-Cq_APK7Y.css">
10
+ <script type="module" crossorigin src="/assets/index-D9v_eYzS.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/index-D2Y8-unG.css">
14
12
  </head>
15
13
  <body>
16
14
  <div id="root"></div>
@@ -1,5 +1,5 @@
1
1
  import { type Response } from 'express';
2
- import { DiffMode } from '../types/watch.js';
2
+ import { DiffMode, type WatchEvent } from '../types/watch.js';
3
3
  export declare class FileWatcherService {
4
4
  private subscriptions;
5
5
  private clients;
@@ -21,6 +21,7 @@ export declare class FileWatcherService {
21
21
  stop(): Promise<void>;
22
22
  addClient(res: Response): void;
23
23
  removeClient(res: Response): void;
24
+ broadcast(event: WatchEvent): void;
24
25
  private broadcastChange;
25
26
  private sendToClient;
26
27
  private determineChangeType;
@@ -198,6 +198,14 @@ export class FileWatcherService {
198
198
  this.clients.splice(index, 1);
199
199
  }
200
200
  }
201
+ broadcast(event) {
202
+ if (this.clients.length === 0) {
203
+ return;
204
+ }
205
+ this.clients.forEach((client) => {
206
+ this.sendToClient(client, event);
207
+ });
208
+ }
201
209
  broadcastChange() {
202
210
  if (this.clients.length === 0 || !this.config) {
203
211
  return;
@@ -210,9 +218,7 @@ export class FileWatcherService {
210
218
  timestamp: new Date().toISOString(),
211
219
  message: `Changes detected in ${this.config.diffMode} mode`,
212
220
  };
213
- this.clients.forEach((client) => {
214
- this.sendToClient(client, event);
215
- });
221
+ this.broadcast(event);
216
222
  }
217
223
  sendToClient(client, event) {
218
224
  try {
@@ -5,11 +5,16 @@ export declare class GitDiffParser {
5
5
  private readonly resolvedCommitCache;
6
6
  private static readonly RESOLVED_COMMIT_CACHE_TTL_MS;
7
7
  private static readonly GENERATED_HEADER_SCAN_BYTES;
8
+ private static readonly GITATTRIBUTES_CHECK_CHUNK_SIZE;
8
9
  constructor(repoPath?: string);
9
10
  private normalizeRepositoryRelativePath;
10
11
  private resolveBaseCommitish;
11
12
  parseDiff(selection: DiffSelection, ignoreWhitespace?: boolean, contextLines?: number): Promise<DiffResponse>;
12
13
  private parseUnifiedDiff;
14
+ private getGitattributesSourceArgs;
15
+ private parseGitattributesGeneratedOutput;
16
+ private getGitattributesGeneratedPaths;
17
+ private markGitattributesGeneratedFiles;
13
18
  private decodeGitPath;
14
19
  private extractPathFromLine;
15
20
  private parseDiffHeaderPaths;
@@ -9,6 +9,7 @@ export class GitDiffParser {
9
9
  resolvedCommitCache = new Map();
10
10
  static RESOLVED_COMMIT_CACHE_TTL_MS = 5_000;
11
11
  static GENERATED_HEADER_SCAN_BYTES = 4 * 1024;
12
+ static GITATTRIBUTES_CHECK_CHUNK_SIZE = 200;
12
13
  constructor(repoPath = process.cwd()) {
13
14
  this.repoPath = repoPath;
14
15
  this.git = simpleGit(repoPath);
@@ -51,6 +52,7 @@ export class GitDiffParser {
51
52
  let diffArgs;
52
53
  let resolvedBaseCommitish = effectiveBaseCommitish;
53
54
  let resolvedTargetCommitish = targetCommitish;
55
+ let attributesRef = targetCommitish;
54
56
  // Handle target special chars (base is always a regular commit)
55
57
  if (targetCommitish === 'working') {
56
58
  // Show unstaged changes (working vs staged)
@@ -78,6 +80,7 @@ export class GitDiffParser {
78
80
  resolvedCommit = createCommitRangeString(shortHash(baseHash), shortHash(targetHash));
79
81
  resolvedBaseCommitish = shortHash(baseHash);
80
82
  resolvedTargetCommitish = shortHash(targetHash);
83
+ attributesRef = targetHash;
81
84
  diffArgs = [baseHash, targetHash];
82
85
  }
83
86
  if (ignoreWhitespace) {
@@ -91,7 +94,7 @@ export class GitDiffParser {
91
94
  diffArgs.push('--no-ext-diff', '--color=never');
92
95
  // Single git invocation for better startup latency on large repositories.
93
96
  const diffRaw = await this.git.diff(diffArgs);
94
- const files = this.parseUnifiedDiff(diffRaw);
97
+ const files = await this.markGitattributesGeneratedFiles(this.parseUnifiedDiff(diffRaw), attributesRef);
95
98
  return {
96
99
  commit: resolvedCommit,
97
100
  files,
@@ -119,6 +122,63 @@ export class GitDiffParser {
119
122
  }
120
123
  return files;
121
124
  }
125
+ getGitattributesSourceArgs(ref) {
126
+ if (ref === 'working' || ref === '.') {
127
+ return [];
128
+ }
129
+ if (ref === 'staged') {
130
+ return ['--cached'];
131
+ }
132
+ return ['--source', ref];
133
+ }
134
+ parseGitattributesGeneratedOutput(output) {
135
+ const generatedPaths = new Set();
136
+ const fields = output.split('\0');
137
+ for (let i = 0; i + 2 < fields.length; i += 3) {
138
+ const [path, attribute, value] = fields.slice(i, i + 3);
139
+ if (attribute === 'linguist-generated' && value === 'true') {
140
+ generatedPaths.add(path);
141
+ }
142
+ }
143
+ return generatedPaths;
144
+ }
145
+ async getGitattributesGeneratedPaths(filepaths, ref) {
146
+ if (filepaths.length === 0) {
147
+ return new Set();
148
+ }
149
+ const generatedPaths = new Set();
150
+ try {
151
+ for (let i = 0; i < filepaths.length; i += GitDiffParser.GITATTRIBUTES_CHECK_CHUNK_SIZE) {
152
+ const chunk = filepaths.slice(i, i + GitDiffParser.GITATTRIBUTES_CHECK_CHUNK_SIZE);
153
+ const output = await this.git.raw([
154
+ 'check-attr',
155
+ '-z',
156
+ ...this.getGitattributesSourceArgs(ref),
157
+ 'linguist-generated',
158
+ '--',
159
+ ...chunk,
160
+ ]);
161
+ if (typeof output !== 'string') {
162
+ continue;
163
+ }
164
+ for (const path of this.parseGitattributesGeneratedOutput(output)) {
165
+ generatedPaths.add(path);
166
+ }
167
+ }
168
+ return generatedPaths;
169
+ }
170
+ catch {
171
+ return new Set();
172
+ }
173
+ }
174
+ async markGitattributesGeneratedFiles(files, ref) {
175
+ const candidates = files.filter((file) => !file.isGenerated).map((file) => file.path);
176
+ const generatedPaths = await this.getGitattributesGeneratedPaths(candidates, ref);
177
+ if (generatedPaths.size === 0) {
178
+ return files;
179
+ }
180
+ return files.map((file) => generatedPaths.has(file.path) ? { ...file, isGenerated: true } : file);
181
+ }
122
182
  decodeGitPath(rawPath) {
123
183
  if (typeof rawPath !== 'string') {
124
184
  return undefined;
@@ -454,6 +514,10 @@ export class GitDiffParser {
454
514
  if (pathResult.isGenerated) {
455
515
  return { isGenerated: true, source: 'path' };
456
516
  }
517
+ const gitattributesResult = await this.getGitattributesGeneratedPaths([filepath], ref);
518
+ if (gitattributesResult.has(filepath)) {
519
+ return { isGenerated: true, source: 'path' };
520
+ }
457
521
  try {
458
522
  const buffer = await this.getBlobContent(filepath, ref);
459
523
  const lines = this.extractHeaderLines(buffer);
@@ -985,6 +985,23 @@ index abc123..def456 100644
985
985
  expect(generatedStatus).toEqual({ isGenerated: true, source: 'path' });
986
986
  expect(getBlobContentSpy).not.toHaveBeenCalled();
987
987
  });
988
+ it('returns source=path for .gitattributes linguist-generated files without reading content', async () => {
989
+ const gitRaw = parser.git.raw;
990
+ gitRaw.mockResolvedValue('apps/app/web/src/api/index.tsx\0linguist-generated\0true\0');
991
+ const getBlobContentSpy = vi.spyOn(parser, 'getBlobContent');
992
+ const generatedStatus = await parser.getGeneratedStatus('apps/app/web/src/api/index.tsx', 'HEAD');
993
+ expect(gitRaw).toHaveBeenCalledWith([
994
+ 'check-attr',
995
+ '-z',
996
+ '--source',
997
+ 'HEAD',
998
+ 'linguist-generated',
999
+ '--',
1000
+ 'apps/app/web/src/api/index.tsx',
1001
+ ]);
1002
+ expect(generatedStatus).toEqual({ isGenerated: true, source: 'path' });
1003
+ expect(getBlobContentSpy).not.toHaveBeenCalled();
1004
+ });
988
1005
  it('returns false when content cannot be read for content-based generated detection', async () => {
989
1006
  const getBlobContentSpy = vi.spyOn(parser, 'getBlobContent');
990
1007
  getBlobContentSpy.mockRejectedValue(new Error('missing blob'));
@@ -1075,6 +1092,39 @@ index abc123..def456 100644
1075
1092
  });
1076
1093
  });
1077
1094
  describe('parseDiff', () => {
1095
+ it('marks files with .gitattributes linguist-generated=true as generated', async () => {
1096
+ const file = 'apps/app/web/src/api/index.tsx';
1097
+ const gitDiff = parser.git.diff;
1098
+ const gitRevparse = parser.git.revparse;
1099
+ const gitRaw = parser.git.raw;
1100
+ gitRevparse
1101
+ .mockResolvedValueOnce('1234567890abcdef1234567890abcdef12345678')
1102
+ .mockResolvedValueOnce('abcdef1234567890abcdef1234567890abcdef12');
1103
+ gitDiff.mockResolvedValue([
1104
+ `diff --git a/${file} b/${file}`,
1105
+ `index abc123..def456 100644`,
1106
+ `--- a/${file}`,
1107
+ `+++ b/${file}`,
1108
+ `@@ -1 +1 @@`,
1109
+ `-old`,
1110
+ `+new`,
1111
+ ].join('\n'));
1112
+ gitRaw.mockResolvedValue(`${file}\0linguist-generated\0true\0`);
1113
+ const response = await parser.parseDiff({
1114
+ targetCommitish: 'HEAD',
1115
+ baseCommitish: 'HEAD~1',
1116
+ });
1117
+ expect(gitRaw).toHaveBeenCalledWith([
1118
+ 'check-attr',
1119
+ '-z',
1120
+ '--source',
1121
+ '1234567890abcdef1234567890abcdef12345678',
1122
+ 'linguist-generated',
1123
+ '--',
1124
+ file,
1125
+ ]);
1126
+ expect(response.files[0].isGenerated).toBe(true);
1127
+ });
1078
1128
  it('passes context lines through to git diff', async () => {
1079
1129
  const gitDiff = parser.git.diff;
1080
1130
  const gitRevparse = parser.git.revparse;