@keystrokehq/platform 0.1.10 → 0.1.12

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 (301) hide show
  1. package/dist/{awk2-LA3USKJP-C8TQfH53.cjs → awk2-LA3USKJP-Bwf_wfSd.cjs} +2 -2
  2. package/dist/{awk2-LA3USKJP-C8TQfH53.cjs.map → awk2-LA3USKJP-Bwf_wfSd.cjs.map} +1 -1
  3. package/dist/{awk2-LA3USKJP-iKo516lo.mjs → awk2-LA3USKJP-DSL4aRb-.mjs} +2 -2
  4. package/dist/{awk2-LA3USKJP-iKo516lo.mjs.map → awk2-LA3USKJP-DSL4aRb-.mjs.map} +1 -1
  5. package/dist/{base64-C2AIWVNC-BvnbraSd.cjs → base64-C2AIWVNC-D4eKH6S0.cjs} +2 -2
  6. package/dist/{base64-C2AIWVNC-BvnbraSd.cjs.map → base64-C2AIWVNC-D4eKH6S0.cjs.map} +1 -1
  7. package/dist/{base64-C2AIWVNC-DFlEIYu8.mjs → base64-C2AIWVNC-DLwOh37T.mjs} +2 -2
  8. package/dist/{base64-C2AIWVNC-DFlEIYu8.mjs.map → base64-C2AIWVNC-DLwOh37T.mjs.map} +1 -1
  9. package/dist/{bash-YZ33HQZQ-C5bTiiJp.mjs → bash-YZ33HQZQ-Bo0qyTsR.mjs} +2 -2
  10. package/dist/{bash-YZ33HQZQ-C5bTiiJp.mjs.map → bash-YZ33HQZQ-Bo0qyTsR.mjs.map} +1 -1
  11. package/dist/{bash-YZ33HQZQ-CTEFZdqT.cjs → bash-YZ33HQZQ-k-6oCt2W.cjs} +2 -2
  12. package/dist/{bash-YZ33HQZQ-CTEFZdqT.cjs.map → bash-YZ33HQZQ-k-6oCt2W.cjs.map} +1 -1
  13. package/dist/{cat-TSFMZVYS-D32dnWp3.mjs → cat-TSFMZVYS-Ca16tKIG.mjs} +3 -3
  14. package/dist/{cat-TSFMZVYS-D32dnWp3.mjs.map → cat-TSFMZVYS-Ca16tKIG.mjs.map} +1 -1
  15. package/dist/{cat-TSFMZVYS-B2K0uDKN.cjs → cat-TSFMZVYS-CiED3qYW.cjs} +3 -3
  16. package/dist/{cat-TSFMZVYS-B2K0uDKN.cjs.map → cat-TSFMZVYS-CiED3qYW.cjs.map} +1 -1
  17. package/dist/{chunk-5H5SCKJM-BlgR0V3A.mjs → chunk-5H5SCKJM-DOv7NrOw.mjs} +2 -2
  18. package/dist/{chunk-5H5SCKJM-BlgR0V3A.mjs.map → chunk-5H5SCKJM-DOv7NrOw.mjs.map} +1 -1
  19. package/dist/{chunk-5H5SCKJM-CL3A9kMI.cjs → chunk-5H5SCKJM-hXZladNS.cjs} +2 -2
  20. package/dist/{chunk-5H5SCKJM-CL3A9kMI.cjs.map → chunk-5H5SCKJM-hXZladNS.cjs.map} +1 -1
  21. package/dist/{chunk-AQ6FYS2X-AzmRUg3D.mjs → chunk-AQ6FYS2X-BhFOmSFO.mjs} +2 -2
  22. package/dist/{chunk-AQ6FYS2X-AzmRUg3D.mjs.map → chunk-AQ6FYS2X-BhFOmSFO.mjs.map} +1 -1
  23. package/dist/{chunk-AQ6FYS2X-CPSSDKT0.cjs → chunk-AQ6FYS2X-CwYNH5Ds.cjs} +2 -2
  24. package/dist/{chunk-AQ6FYS2X-CPSSDKT0.cjs.map → chunk-AQ6FYS2X-CwYNH5Ds.cjs.map} +1 -1
  25. package/dist/{chunk-CHFEPBH4-B59ZOlVh.mjs → chunk-CHFEPBH4-CdmdnmrP.mjs} +2 -2
  26. package/dist/{chunk-CHFEPBH4-B59ZOlVh.mjs.map → chunk-CHFEPBH4-CdmdnmrP.mjs.map} +1 -1
  27. package/dist/{chunk-CHFEPBH4-DndUvPEz.cjs → chunk-CHFEPBH4-d-FkWVVj.cjs} +2 -2
  28. package/dist/{chunk-CHFEPBH4-DndUvPEz.cjs.map → chunk-CHFEPBH4-d-FkWVVj.cjs.map} +1 -1
  29. package/dist/{chunk-EBAPSGAO-Bq-JthJ5.mjs → chunk-EBAPSGAO-B_WLUCsI.mjs} +2 -2
  30. package/dist/{chunk-EBAPSGAO-Bq-JthJ5.mjs.map → chunk-EBAPSGAO-B_WLUCsI.mjs.map} +1 -1
  31. package/dist/{chunk-EBAPSGAO-BCq1VEUF.cjs → chunk-EBAPSGAO-DUW5CGbF.cjs} +2 -2
  32. package/dist/{chunk-EBAPSGAO-BCq1VEUF.cjs.map → chunk-EBAPSGAO-DUW5CGbF.cjs.map} +1 -1
  33. package/dist/{chunk-LEKBROJD-CYjJVRHn.cjs → chunk-LEKBROJD-Dh-YA2BB.cjs} +2 -2
  34. package/dist/{chunk-LEKBROJD-CYjJVRHn.cjs.map → chunk-LEKBROJD-Dh-YA2BB.cjs.map} +1 -1
  35. package/dist/{chunk-LEKBROJD-BljEVlAX.mjs → chunk-LEKBROJD-RXqbSNt2.mjs} +2 -2
  36. package/dist/{chunk-LEKBROJD-BljEVlAX.mjs.map → chunk-LEKBROJD-RXqbSNt2.mjs.map} +1 -1
  37. package/dist/{chunk-VPADYNBD-22xWuTBB.mjs → chunk-VPADYNBD-DCTzqxR2.mjs} +2 -2
  38. package/dist/{chunk-VPADYNBD-22xWuTBB.mjs.map → chunk-VPADYNBD-DCTzqxR2.mjs.map} +1 -1
  39. package/dist/{chunk-VPADYNBD-BB4ObtpU.cjs → chunk-VPADYNBD-Dm8ioeZY.cjs} +2 -2
  40. package/dist/{chunk-VPADYNBD-BB4ObtpU.cjs.map → chunk-VPADYNBD-Dm8ioeZY.cjs.map} +1 -1
  41. package/dist/{chunk-YCLFEX4T-BvTNX2Vz.cjs → chunk-YCLFEX4T-C-wbhhxC.cjs} +2 -2
  42. package/dist/{chunk-YCLFEX4T-BvTNX2Vz.cjs.map → chunk-YCLFEX4T-C-wbhhxC.cjs.map} +1 -1
  43. package/dist/{chunk-YCLFEX4T-BYCz1ce9.mjs → chunk-YCLFEX4T-Y9SVIPBV.mjs} +2 -2
  44. package/dist/{chunk-YCLFEX4T-BYCz1ce9.mjs.map → chunk-YCLFEX4T-Y9SVIPBV.mjs.map} +1 -1
  45. package/dist/{column-XT6UFXNQ-2JxGKnhQ.mjs → column-XT6UFXNQ-Cnd2sjZy.mjs} +2 -2
  46. package/dist/{column-XT6UFXNQ-2JxGKnhQ.mjs.map → column-XT6UFXNQ-Cnd2sjZy.mjs.map} +1 -1
  47. package/dist/{column-XT6UFXNQ-Dt66NYBA.cjs → column-XT6UFXNQ-DkTgQtxM.cjs} +2 -2
  48. package/dist/{column-XT6UFXNQ-Dt66NYBA.cjs.map → column-XT6UFXNQ-DkTgQtxM.cjs.map} +1 -1
  49. package/dist/{comm-VV2LDX2J-BQ4xi5L9.mjs → comm-VV2LDX2J-2EBUE5T4.mjs} +2 -2
  50. package/dist/{comm-VV2LDX2J-BQ4xi5L9.mjs.map → comm-VV2LDX2J-2EBUE5T4.mjs.map} +1 -1
  51. package/dist/{comm-VV2LDX2J-C8sq4a_X.cjs → comm-VV2LDX2J-Du3oXOnT.cjs} +2 -2
  52. package/dist/{comm-VV2LDX2J-C8sq4a_X.cjs.map → comm-VV2LDX2J-Du3oXOnT.cjs.map} +1 -1
  53. package/dist/config.cjs +1 -1
  54. package/dist/config.mjs +1 -1
  55. package/dist/{cp-BISAAS7A-DmZV5f27.cjs → cp-BISAAS7A-VbgyUIfL.cjs} +2 -2
  56. package/dist/{cp-BISAAS7A-DmZV5f27.cjs.map → cp-BISAAS7A-VbgyUIfL.cjs.map} +1 -1
  57. package/dist/{cp-BISAAS7A-CcMwaVYs.mjs → cp-BISAAS7A-aOp9If-T.mjs} +2 -2
  58. package/dist/{cp-BISAAS7A-CcMwaVYs.mjs.map → cp-BISAAS7A-aOp9If-T.mjs.map} +1 -1
  59. package/dist/{cut-OKARJCCV-Co4UXF7Y.mjs → cut-OKARJCCV-Cp0oZX3f.mjs} +3 -3
  60. package/dist/{cut-OKARJCCV-Co4UXF7Y.mjs.map → cut-OKARJCCV-Cp0oZX3f.mjs.map} +1 -1
  61. package/dist/{cut-OKARJCCV-DwtHdU58.cjs → cut-OKARJCCV-D80rigAF.cjs} +3 -3
  62. package/dist/{cut-OKARJCCV-DwtHdU58.cjs.map → cut-OKARJCCV-D80rigAF.cjs.map} +1 -1
  63. package/dist/{diff-MWJFIG7X-DX6SkQWo.cjs → diff-MWJFIG7X-Bqg-HcBD.cjs} +2 -2
  64. package/dist/{diff-MWJFIG7X-DX6SkQWo.cjs.map → diff-MWJFIG7X-Bqg-HcBD.cjs.map} +1 -1
  65. package/dist/{diff-MWJFIG7X-RORXFtQw.mjs → diff-MWJFIG7X-Jxkc5RNL.mjs} +2 -2
  66. package/dist/{diff-MWJFIG7X-RORXFtQw.mjs.map → diff-MWJFIG7X-Jxkc5RNL.mjs.map} +1 -1
  67. package/dist/{dist-DQZABv1_.mjs → dist-BqBBzZmZ.mjs} +101 -46
  68. package/dist/dist-BqBBzZmZ.mjs.map +1 -0
  69. package/dist/{dist-KeJkUQxy.cjs → dist-_wmb_cWx.cjs} +112 -45
  70. package/dist/dist-_wmb_cWx.cjs.map +1 -0
  71. package/dist/{du-572XNP42-DJxtt8pO.mjs → du-572XNP42-DNOYZYYh.mjs} +2 -2
  72. package/dist/{du-572XNP42-DJxtt8pO.mjs.map → du-572XNP42-DNOYZYYh.mjs.map} +1 -1
  73. package/dist/{du-572XNP42-ByLXb5YF.cjs → du-572XNP42-y7gj8M1H.cjs} +2 -2
  74. package/dist/{du-572XNP42-ByLXb5YF.cjs.map → du-572XNP42-y7gj8M1H.cjs.map} +1 -1
  75. package/dist/{env-36M5BO7M-7mpjgw1V.cjs → env-36M5BO7M-B4tAn_Dv.cjs} +2 -2
  76. package/dist/{env-36M5BO7M-7mpjgw1V.cjs.map → env-36M5BO7M-B4tAn_Dv.cjs.map} +1 -1
  77. package/dist/{env-36M5BO7M-ZlUW3Sl0.mjs → env-36M5BO7M-CbjNFmuw.mjs} +2 -2
  78. package/dist/{env-36M5BO7M-ZlUW3Sl0.mjs.map → env-36M5BO7M-CbjNFmuw.mjs.map} +1 -1
  79. package/dist/{expand-JSPG6VOP-B2YxeegL.mjs → expand-JSPG6VOP-Bavd6p5j.mjs} +2 -2
  80. package/dist/{expand-JSPG6VOP-B2YxeegL.mjs.map → expand-JSPG6VOP-Bavd6p5j.mjs.map} +1 -1
  81. package/dist/{expand-JSPG6VOP-MOAUsgSe.cjs → expand-JSPG6VOP-Df_Ij6EO.cjs} +2 -2
  82. package/dist/{expand-JSPG6VOP-MOAUsgSe.cjs.map → expand-JSPG6VOP-Df_Ij6EO.cjs.map} +1 -1
  83. package/dist/{expr-5JAACS4X-C-wWI5Y2.cjs → expr-5JAACS4X-C-JUxSwF.cjs} +2 -2
  84. package/dist/{expr-5JAACS4X-C-wWI5Y2.cjs.map → expr-5JAACS4X-C-JUxSwF.cjs.map} +1 -1
  85. package/dist/{expr-5JAACS4X-DGhrcLeU.mjs → expr-5JAACS4X-iOFE2fGG.mjs} +2 -2
  86. package/dist/{expr-5JAACS4X-DGhrcLeU.mjs.map → expr-5JAACS4X-iOFE2fGG.mjs.map} +1 -1
  87. package/dist/{find-INTH3OLC-ErDLi_Ak.cjs → find-INTH3OLC-CWadB4yb.cjs} +3 -3
  88. package/dist/{find-INTH3OLC-ErDLi_Ak.cjs.map → find-INTH3OLC-CWadB4yb.cjs.map} +1 -1
  89. package/dist/{find-INTH3OLC-Vzv3utqz.mjs → find-INTH3OLC-lUDmsPYt.mjs} +3 -3
  90. package/dist/{find-INTH3OLC-Vzv3utqz.mjs.map → find-INTH3OLC-lUDmsPYt.mjs.map} +1 -1
  91. package/dist/{fold-4TQNYMSW-BWKs2Ew0.mjs → fold-4TQNYMSW-D63riQ_0.mjs} +2 -2
  92. package/dist/{fold-4TQNYMSW-BWKs2Ew0.mjs.map → fold-4TQNYMSW-D63riQ_0.mjs.map} +1 -1
  93. package/dist/{fold-4TQNYMSW-DoBCXtmy.cjs → fold-4TQNYMSW-h9HFvqMM.cjs} +2 -2
  94. package/dist/{fold-4TQNYMSW-DoBCXtmy.cjs.map → fold-4TQNYMSW-h9HFvqMM.cjs.map} +1 -1
  95. package/dist/{grep-V3LQVMRQ-BU066j1r.cjs → grep-V3LQVMRQ-DtUn9WEI.cjs} +4 -4
  96. package/dist/{grep-V3LQVMRQ-BU066j1r.cjs.map → grep-V3LQVMRQ-DtUn9WEI.cjs.map} +1 -1
  97. package/dist/{grep-V3LQVMRQ-Okt1supZ.mjs → grep-V3LQVMRQ-hlJ6jYeA.mjs} +4 -4
  98. package/dist/{grep-V3LQVMRQ-Okt1supZ.mjs.map → grep-V3LQVMRQ-hlJ6jYeA.mjs.map} +1 -1
  99. package/dist/{gzip-O5ASJAFY-BUU_FNGK.mjs → gzip-O5ASJAFY-BOtRGsu8.mjs} +2 -2
  100. package/dist/{gzip-O5ASJAFY-BUU_FNGK.mjs.map → gzip-O5ASJAFY-BOtRGsu8.mjs.map} +1 -1
  101. package/dist/{gzip-O5ASJAFY-B1FTMMFq.cjs → gzip-O5ASJAFY-D7W5JJSV.cjs} +2 -2
  102. package/dist/{gzip-O5ASJAFY-B1FTMMFq.cjs.map → gzip-O5ASJAFY-D7W5JJSV.cjs.map} +1 -1
  103. package/dist/{head-442HYESI-CPQWywtB.mjs → head-442HYESI--O3N-tAM.mjs} +2 -2
  104. package/dist/{head-442HYESI-CPQWywtB.mjs.map → head-442HYESI--O3N-tAM.mjs.map} +1 -1
  105. package/dist/{head-442HYESI-DeLkuG8l.cjs → head-442HYESI-CKtNzZcH.cjs} +2 -2
  106. package/dist/{head-442HYESI-DeLkuG8l.cjs.map → head-442HYESI-CKtNzZcH.cjs.map} +1 -1
  107. package/dist/{help-HZ6M2CKN-Si2t7kXA.mjs → help-HZ6M2CKN-DXJqbHVO.mjs} +2 -2
  108. package/dist/{help-HZ6M2CKN-Si2t7kXA.mjs.map → help-HZ6M2CKN-DXJqbHVO.mjs.map} +1 -1
  109. package/dist/{help-HZ6M2CKN-CACYSgeV.cjs → help-HZ6M2CKN-wFEiefnr.cjs} +2 -2
  110. package/dist/{help-HZ6M2CKN-CACYSgeV.cjs.map → help-HZ6M2CKN-wFEiefnr.cjs.map} +1 -1
  111. package/dist/{html-to-markdown-JW4MSQZO-BnrGqsni.cjs → html-to-markdown-JW4MSQZO-BGWxJITa.cjs} +3 -3
  112. package/dist/{html-to-markdown-JW4MSQZO-BnrGqsni.cjs.map → html-to-markdown-JW4MSQZO-BGWxJITa.cjs.map} +1 -1
  113. package/dist/{html-to-markdown-JW4MSQZO-yPkAOM4T.mjs → html-to-markdown-JW4MSQZO-CwKDMtdW.mjs} +3 -3
  114. package/dist/{html-to-markdown-JW4MSQZO-yPkAOM4T.mjs.map → html-to-markdown-JW4MSQZO-CwKDMtdW.mjs.map} +1 -1
  115. package/dist/{join-TBRGI3LQ-C3eqxR8J.mjs → join-TBRGI3LQ-DwP2kq1V.mjs} +2 -2
  116. package/dist/{join-TBRGI3LQ-C3eqxR8J.mjs.map → join-TBRGI3LQ-DwP2kq1V.mjs.map} +1 -1
  117. package/dist/{join-TBRGI3LQ-BK0v7LDZ.cjs → join-TBRGI3LQ-KvBUdw2P.cjs} +2 -2
  118. package/dist/{join-TBRGI3LQ-BK0v7LDZ.cjs.map → join-TBRGI3LQ-KvBUdw2P.cjs.map} +1 -1
  119. package/dist/{jq-4XLYLOS5-BPgpTkTX.cjs → jq-4XLYLOS5-DQp6WKNT.cjs} +4 -4
  120. package/dist/{jq-4XLYLOS5-BPgpTkTX.cjs.map → jq-4XLYLOS5-DQp6WKNT.cjs.map} +1 -1
  121. package/dist/{jq-4XLYLOS5-DOiIyV4r.mjs → jq-4XLYLOS5-DaXnX9cw.mjs} +4 -4
  122. package/dist/{jq-4XLYLOS5-DOiIyV4r.mjs.map → jq-4XLYLOS5-DaXnX9cw.mjs.map} +1 -1
  123. package/dist/{js-exec-N5KEZBH7-6a2l4HY0.cjs → js-exec-N5KEZBH7-BdncKQvY.cjs} +3 -3
  124. package/dist/{js-exec-N5KEZBH7-6a2l4HY0.cjs.map → js-exec-N5KEZBH7-BdncKQvY.cjs.map} +1 -1
  125. package/dist/{js-exec-N5KEZBH7-BB3hczF6.mjs → js-exec-N5KEZBH7-CeCu6jX3.mjs} +3 -3
  126. package/dist/{js-exec-N5KEZBH7-BB3hczF6.mjs.map → js-exec-N5KEZBH7-CeCu6jX3.mjs.map} +1 -1
  127. package/dist/{lib-CYQ_gA3u.cjs → lib-Cp76lji1.cjs} +2 -2
  128. package/dist/{lib-CYQ_gA3u.cjs.map → lib-Cp76lji1.cjs.map} +1 -1
  129. package/dist/{lib-CcVWhxFS.mjs → lib-NRQEUPkD.mjs} +2 -2
  130. package/dist/{lib-CcVWhxFS.mjs.map → lib-NRQEUPkD.mjs.map} +1 -1
  131. package/dist/{ln-4LGSXXGD-BGCw3j2u.mjs → ln-4LGSXXGD-CmbWas1s.mjs} +2 -2
  132. package/dist/{ln-4LGSXXGD-BGCw3j2u.mjs.map → ln-4LGSXXGD-CmbWas1s.mjs.map} +1 -1
  133. package/dist/{ln-4LGSXXGD-Cq6RmKEo.cjs → ln-4LGSXXGD-ghkJ43c0.cjs} +2 -2
  134. package/dist/{ln-4LGSXXGD-Cq6RmKEo.cjs.map → ln-4LGSXXGD-ghkJ43c0.cjs.map} +1 -1
  135. package/dist/{ls-ZJGQER7M-CSzmMPVo.mjs → ls-ZJGQER7M-DTfxCKFA.mjs} +2 -2
  136. package/dist/{ls-ZJGQER7M-CSzmMPVo.mjs.map → ls-ZJGQER7M-DTfxCKFA.mjs.map} +1 -1
  137. package/dist/{ls-ZJGQER7M-CJuMmb9p.cjs → ls-ZJGQER7M-bMW78Ldw.cjs} +2 -2
  138. package/dist/{ls-ZJGQER7M-CJuMmb9p.cjs.map → ls-ZJGQER7M-bMW78Ldw.cjs.map} +1 -1
  139. package/dist/{lzma-BaLt2cZv.cjs → lzma-Dn1278j9.cjs} +2 -2
  140. package/dist/{lzma-BaLt2cZv.cjs.map → lzma-Dn1278j9.cjs.map} +1 -1
  141. package/dist/{md5sum-SPU24VSG-BL6W95eE.cjs → md5sum-SPU24VSG-Dp5l4vyc.cjs} +3 -3
  142. package/dist/{md5sum-SPU24VSG-BL6W95eE.cjs.map → md5sum-SPU24VSG-Dp5l4vyc.cjs.map} +1 -1
  143. package/dist/{md5sum-SPU24VSG-CIeUFHdK.mjs → md5sum-SPU24VSG-Q9Y7bdLI.mjs} +3 -3
  144. package/dist/{md5sum-SPU24VSG-CIeUFHdK.mjs.map → md5sum-SPU24VSG-Q9Y7bdLI.mjs.map} +1 -1
  145. package/dist/{mkdir-MEPGZOB6-MgHictKj.mjs → mkdir-MEPGZOB6-HamovkNG.mjs} +2 -2
  146. package/dist/{mkdir-MEPGZOB6-MgHictKj.mjs.map → mkdir-MEPGZOB6-HamovkNG.mjs.map} +1 -1
  147. package/dist/{mkdir-MEPGZOB6-BZyyoaAf.cjs → mkdir-MEPGZOB6-cL9IXR18.cjs} +2 -2
  148. package/dist/{mkdir-MEPGZOB6-BZyyoaAf.cjs.map → mkdir-MEPGZOB6-cL9IXR18.cjs.map} +1 -1
  149. package/dist/{mv-W5BIQ646-CP9-vF4_.mjs → mv-W5BIQ646-C3cQfiux.mjs} +2 -2
  150. package/dist/{mv-W5BIQ646-CP9-vF4_.mjs.map → mv-W5BIQ646-C3cQfiux.mjs.map} +1 -1
  151. package/dist/{mv-W5BIQ646-dwb25lDI.cjs → mv-W5BIQ646-CBb3DI1r.cjs} +2 -2
  152. package/dist/{mv-W5BIQ646-dwb25lDI.cjs.map → mv-W5BIQ646-CBb3DI1r.cjs.map} +1 -1
  153. package/dist/{nl-WSDW7I4O-C7rZxzPm.cjs → nl-WSDW7I4O-BkeUG9M4.cjs} +2 -2
  154. package/dist/{nl-WSDW7I4O-C7rZxzPm.cjs.map → nl-WSDW7I4O-BkeUG9M4.cjs.map} +1 -1
  155. package/dist/{nl-WSDW7I4O-SXX_wp28.mjs → nl-WSDW7I4O-C6_i5NEm.mjs} +2 -2
  156. package/dist/{nl-WSDW7I4O-SXX_wp28.mjs.map → nl-WSDW7I4O-C6_i5NEm.mjs.map} +1 -1
  157. package/dist/{od-WOKFDJTP-CDFKqUJg.cjs → od-WOKFDJTP-0ym8J42H.cjs} +2 -2
  158. package/dist/{od-WOKFDJTP-CDFKqUJg.cjs.map → od-WOKFDJTP-0ym8J42H.cjs.map} +1 -1
  159. package/dist/{od-WOKFDJTP-DyqUJY9V.mjs → od-WOKFDJTP-CZYb4Vox.mjs} +2 -2
  160. package/dist/{od-WOKFDJTP-DyqUJY9V.mjs.map → od-WOKFDJTP-CZYb4Vox.mjs.map} +1 -1
  161. package/dist/{paste-7JC6S4DX-yV2mN3Xi.mjs → paste-7JC6S4DX-BKjI-3KE.mjs} +2 -2
  162. package/dist/{paste-7JC6S4DX-yV2mN3Xi.mjs.map → paste-7JC6S4DX-BKjI-3KE.mjs.map} +1 -1
  163. package/dist/{paste-7JC6S4DX-4vBMkbXu.cjs → paste-7JC6S4DX-BWPeZdXB.cjs} +2 -2
  164. package/dist/{paste-7JC6S4DX-4vBMkbXu.cjs.map → paste-7JC6S4DX-BWPeZdXB.cjs.map} +1 -1
  165. package/dist/platform-database.cjs +24 -0
  166. package/dist/platform-database.d.cts +2 -2
  167. package/dist/platform-database.d.mts +2 -2
  168. package/dist/platform-database.mjs +2 -2
  169. package/dist/{printf-TWGXF445-BGeZYMde.cjs → printf-TWGXF445-DgrmpTj6.cjs} +3 -3
  170. package/dist/{printf-TWGXF445-BGeZYMde.cjs.map → printf-TWGXF445-DgrmpTj6.cjs.map} +1 -1
  171. package/dist/{printf-TWGXF445-AG6ZxuUM.mjs → printf-TWGXF445-K1z9ncXQ.mjs} +3 -3
  172. package/dist/{printf-TWGXF445-AG6ZxuUM.mjs.map → printf-TWGXF445-K1z9ncXQ.mjs.map} +1 -1
  173. package/dist/{python3-POMOR4OA-CXiSd1gN.cjs → python3-POMOR4OA-BtGQkhm_.cjs} +3 -3
  174. package/dist/{python3-POMOR4OA-CXiSd1gN.cjs.map → python3-POMOR4OA-BtGQkhm_.cjs.map} +1 -1
  175. package/dist/{python3-POMOR4OA-BClYVovb.mjs → python3-POMOR4OA-CWabLnm1.mjs} +3 -3
  176. package/dist/{python3-POMOR4OA-BClYVovb.mjs.map → python3-POMOR4OA-CWabLnm1.mjs.map} +1 -1
  177. package/dist/{rev-5EHFX4EJ-B82WG1Lv.mjs → rev-5EHFX4EJ-9I1uUVE2.mjs} +2 -2
  178. package/dist/{rev-5EHFX4EJ-B82WG1Lv.mjs.map → rev-5EHFX4EJ-9I1uUVE2.mjs.map} +1 -1
  179. package/dist/{rev-5EHFX4EJ-DIjd9v_Q.cjs → rev-5EHFX4EJ-PIu1r25x.cjs} +2 -2
  180. package/dist/{rev-5EHFX4EJ-DIjd9v_Q.cjs.map → rev-5EHFX4EJ-PIu1r25x.cjs.map} +1 -1
  181. package/dist/{rg-S4FXYXWB-CyeQeN6m.mjs → rg-S4FXYXWB-5aqmccK1.mjs} +3 -3
  182. package/dist/{rg-S4FXYXWB-CyeQeN6m.mjs.map → rg-S4FXYXWB-5aqmccK1.mjs.map} +1 -1
  183. package/dist/{rg-S4FXYXWB-ApQWE_EG.cjs → rg-S4FXYXWB-DQY5aU-Z.cjs} +3 -3
  184. package/dist/{rg-S4FXYXWB-ApQWE_EG.cjs.map → rg-S4FXYXWB-DQY5aU-Z.cjs.map} +1 -1
  185. package/dist/{rm-SSGETQVQ-C9JTViwB.cjs → rm-SSGETQVQ-Cf7wQE62.cjs} +2 -2
  186. package/dist/{rm-SSGETQVQ-C9JTViwB.cjs.map → rm-SSGETQVQ-Cf7wQE62.cjs.map} +1 -1
  187. package/dist/{rm-SSGETQVQ-LQ0RrYWT.mjs → rm-SSGETQVQ-De8UC1CP.mjs} +2 -2
  188. package/dist/{rm-SSGETQVQ-LQ0RrYWT.mjs.map → rm-SSGETQVQ-De8UC1CP.mjs.map} +1 -1
  189. package/dist/{rmdir-OC4ZLPYA-BjJEGyWy.cjs → rmdir-OC4ZLPYA-BKMt0xWb.cjs} +2 -2
  190. package/dist/{rmdir-OC4ZLPYA-BjJEGyWy.cjs.map → rmdir-OC4ZLPYA-BKMt0xWb.cjs.map} +1 -1
  191. package/dist/{rmdir-OC4ZLPYA-j7rpYv9w.mjs → rmdir-OC4ZLPYA-CIZ4MMzk.mjs} +2 -2
  192. package/dist/{rmdir-OC4ZLPYA-j7rpYv9w.mjs.map → rmdir-OC4ZLPYA-CIZ4MMzk.mjs.map} +1 -1
  193. package/dist/run.cjs +1 -1
  194. package/dist/run.mjs +1 -1
  195. package/dist/{sed-S5UIK574-BKjIhqZC.cjs → sed-S5UIK574-DeB1vHRg.cjs} +2 -2
  196. package/dist/{sed-S5UIK574-BKjIhqZC.cjs.map → sed-S5UIK574-DeB1vHRg.cjs.map} +1 -1
  197. package/dist/{sed-S5UIK574-J74NTjfC.mjs → sed-S5UIK574-iWEeVilc.mjs} +2 -2
  198. package/dist/{sed-S5UIK574-J74NTjfC.mjs.map → sed-S5UIK574-iWEeVilc.mjs.map} +1 -1
  199. package/dist/{sha1sum-2PTOAFR6-MSflYn0r.cjs → sha1sum-2PTOAFR6-CYlQSSO2.cjs} +3 -3
  200. package/dist/{sha1sum-2PTOAFR6-MSflYn0r.cjs.map → sha1sum-2PTOAFR6-CYlQSSO2.cjs.map} +1 -1
  201. package/dist/{sha1sum-2PTOAFR6-IP0cr9Nk.mjs → sha1sum-2PTOAFR6-DQnj5px1.mjs} +3 -3
  202. package/dist/{sha1sum-2PTOAFR6-IP0cr9Nk.mjs.map → sha1sum-2PTOAFR6-DQnj5px1.mjs.map} +1 -1
  203. package/dist/{sha256sum-NS7D3IXX-8-O3yDRg.cjs → sha256sum-NS7D3IXX--_RdjiXN.cjs} +3 -3
  204. package/dist/{sha256sum-NS7D3IXX-8-O3yDRg.cjs.map → sha256sum-NS7D3IXX--_RdjiXN.cjs.map} +1 -1
  205. package/dist/{sha256sum-NS7D3IXX-B83KYuY_.mjs → sha256sum-NS7D3IXX-BOLVfSkw.mjs} +3 -3
  206. package/dist/{sha256sum-NS7D3IXX-B83KYuY_.mjs.map → sha256sum-NS7D3IXX-BOLVfSkw.mjs.map} +1 -1
  207. package/dist/{sleep-X22JJINO-YTG2e9mJ.mjs → sleep-X22JJINO-DjlZDZA1.mjs} +2 -2
  208. package/dist/{sleep-X22JJINO-YTG2e9mJ.mjs.map → sleep-X22JJINO-DjlZDZA1.mjs.map} +1 -1
  209. package/dist/{sleep-X22JJINO-CdKETYgR.cjs → sleep-X22JJINO-hOWDbZOW.cjs} +2 -2
  210. package/dist/{sleep-X22JJINO-CdKETYgR.cjs.map → sleep-X22JJINO-hOWDbZOW.cjs.map} +1 -1
  211. package/dist/{sort-SW2YEO5B-Cum9z2a8.cjs → sort-SW2YEO5B-DhD6eKA5.cjs} +3 -3
  212. package/dist/{sort-SW2YEO5B-Cum9z2a8.cjs.map → sort-SW2YEO5B-DhD6eKA5.cjs.map} +1 -1
  213. package/dist/{sort-SW2YEO5B-CbPi6K24.mjs → sort-SW2YEO5B-dio_BYSC.mjs} +3 -3
  214. package/dist/{sort-SW2YEO5B-CbPi6K24.mjs.map → sort-SW2YEO5B-dio_BYSC.mjs.map} +1 -1
  215. package/dist/{split-4KKZZXXE-fz33ycN2.cjs → split-4KKZZXXE-BJCh0PXY.cjs} +2 -2
  216. package/dist/{split-4KKZZXXE-fz33ycN2.cjs.map → split-4KKZZXXE-BJCh0PXY.cjs.map} +1 -1
  217. package/dist/{split-4KKZZXXE-CKGhHIFM.mjs → split-4KKZZXXE-kdefANXi.mjs} +2 -2
  218. package/dist/{split-4KKZZXXE-CKGhHIFM.mjs.map → split-4KKZZXXE-kdefANXi.mjs.map} +1 -1
  219. package/dist/{sqlite3-CGOEFJAO-GnOOhzcu.cjs → sqlite3-CGOEFJAO-BrE4mLwk.cjs} +3 -3
  220. package/dist/{sqlite3-CGOEFJAO-GnOOhzcu.cjs.map → sqlite3-CGOEFJAO-BrE4mLwk.cjs.map} +1 -1
  221. package/dist/{sqlite3-CGOEFJAO-CZRp6vSh.mjs → sqlite3-CGOEFJAO-DIwvysy1.mjs} +3 -3
  222. package/dist/{sqlite3-CGOEFJAO-CZRp6vSh.mjs.map → sqlite3-CGOEFJAO-DIwvysy1.mjs.map} +1 -1
  223. package/dist/{start-CJs5Jmpv.mjs → start-Bie5Y115.mjs} +180 -156
  224. package/dist/start-Bie5Y115.mjs.map +1 -0
  225. package/dist/{start-BDCUU_Ry.cjs → start-CnYMcwe0.cjs} +180 -156
  226. package/dist/start-CnYMcwe0.cjs.map +1 -0
  227. package/dist/start.cjs +1 -1
  228. package/dist/start.mjs +1 -1
  229. package/dist/{strings-6WDHLGMX-_709peER.cjs → strings-6WDHLGMX-CjTf8z6-.cjs} +2 -2
  230. package/dist/{strings-6WDHLGMX-_709peER.cjs.map → strings-6WDHLGMX-CjTf8z6-.cjs.map} +1 -1
  231. package/dist/{strings-6WDHLGMX-CRYfEQoM.mjs → strings-6WDHLGMX-dNqQ_yAK.mjs} +2 -2
  232. package/dist/{strings-6WDHLGMX-CRYfEQoM.mjs.map → strings-6WDHLGMX-dNqQ_yAK.mjs.map} +1 -1
  233. package/dist/{tac-2STMMJYW-DaTzHJTH.cjs → tac-2STMMJYW-C_WvUMak.cjs} +2 -2
  234. package/dist/{tac-2STMMJYW-DaTzHJTH.cjs.map → tac-2STMMJYW-C_WvUMak.cjs.map} +1 -1
  235. package/dist/{tac-2STMMJYW-Dfi2Vjmr.mjs → tac-2STMMJYW-CfGDpsO_.mjs} +2 -2
  236. package/dist/{tac-2STMMJYW-Dfi2Vjmr.mjs.map → tac-2STMMJYW-CfGDpsO_.mjs.map} +1 -1
  237. package/dist/{tail-R4PCA2C4-C4F7cpls.cjs → tail-R4PCA2C4-Dc1OhaLe.cjs} +2 -2
  238. package/dist/{tail-R4PCA2C4-C4F7cpls.cjs.map → tail-R4PCA2C4-Dc1OhaLe.cjs.map} +1 -1
  239. package/dist/{tail-R4PCA2C4-kxwztnN6.mjs → tail-R4PCA2C4-J1lHppqs.mjs} +2 -2
  240. package/dist/{tail-R4PCA2C4-kxwztnN6.mjs.map → tail-R4PCA2C4-J1lHppqs.mjs.map} +1 -1
  241. package/dist/{tar-STHHZTZ6-ClyyrPcY.mjs → tar-STHHZTZ6-BDxgWdTV.mjs} +4 -4
  242. package/dist/{tar-STHHZTZ6-ClyyrPcY.mjs.map → tar-STHHZTZ6-BDxgWdTV.mjs.map} +1 -1
  243. package/dist/{tar-STHHZTZ6-D5iu_ftt.cjs → tar-STHHZTZ6-CGF0EAuw.cjs} +5 -5
  244. package/dist/{tar-STHHZTZ6-D5iu_ftt.cjs.map → tar-STHHZTZ6-CGF0EAuw.cjs.map} +1 -1
  245. package/dist/{tee-YUZ2FKCJ-Cwpyu4z6.cjs → tee-YUZ2FKCJ-CWbX9Oc7.cjs} +2 -2
  246. package/dist/{tee-YUZ2FKCJ-Cwpyu4z6.cjs.map → tee-YUZ2FKCJ-CWbX9Oc7.cjs.map} +1 -1
  247. package/dist/{tee-YUZ2FKCJ-DwiX9lOR.mjs → tee-YUZ2FKCJ-hLkuOZFt.mjs} +2 -2
  248. package/dist/{tee-YUZ2FKCJ-DwiX9lOR.mjs.map → tee-YUZ2FKCJ-hLkuOZFt.mjs.map} +1 -1
  249. package/dist/{time-D4LNBSWX-Crz6IS_Y.cjs → time-D4LNBSWX-57eSOWxd.cjs} +2 -2
  250. package/dist/{time-D4LNBSWX-Crz6IS_Y.cjs.map → time-D4LNBSWX-57eSOWxd.cjs.map} +1 -1
  251. package/dist/{time-D4LNBSWX-DCUHnjK8.mjs → time-D4LNBSWX-BjGy37hW.mjs} +2 -2
  252. package/dist/{time-D4LNBSWX-DCUHnjK8.mjs.map → time-D4LNBSWX-BjGy37hW.mjs.map} +1 -1
  253. package/dist/{timeout-YDCRSLPQ-DDd3NRW_.cjs → timeout-YDCRSLPQ-D0hBxsFQ.cjs} +2 -2
  254. package/dist/{timeout-YDCRSLPQ-DDd3NRW_.cjs.map → timeout-YDCRSLPQ-D0hBxsFQ.cjs.map} +1 -1
  255. package/dist/{timeout-YDCRSLPQ-DcWnNYBb.mjs → timeout-YDCRSLPQ-DQledpyA.mjs} +2 -2
  256. package/dist/{timeout-YDCRSLPQ-DcWnNYBb.mjs.map → timeout-YDCRSLPQ-DQledpyA.mjs.map} +1 -1
  257. package/dist/{touch-UA33VN3N-qa2uKr61.cjs → touch-UA33VN3N-BLNVciQg.cjs} +2 -2
  258. package/dist/{touch-UA33VN3N-qa2uKr61.cjs.map → touch-UA33VN3N-BLNVciQg.cjs.map} +1 -1
  259. package/dist/{touch-UA33VN3N-B2XLBEia.mjs → touch-UA33VN3N-Dlqmn-0E.mjs} +2 -2
  260. package/dist/{touch-UA33VN3N-B2XLBEia.mjs.map → touch-UA33VN3N-Dlqmn-0E.mjs.map} +1 -1
  261. package/dist/{tr-36LHWFRQ-CGKncf0e.cjs → tr-36LHWFRQ-DN0qaQFL.cjs} +2 -2
  262. package/dist/{tr-36LHWFRQ-CGKncf0e.cjs.map → tr-36LHWFRQ-DN0qaQFL.cjs.map} +1 -1
  263. package/dist/{tr-36LHWFRQ-qB7RaGkH.mjs → tr-36LHWFRQ-Db9KhOnY.mjs} +2 -2
  264. package/dist/{tr-36LHWFRQ-qB7RaGkH.mjs.map → tr-36LHWFRQ-Db9KhOnY.mjs.map} +1 -1
  265. package/dist/{tree-YLD52CNT-DCaIk200.cjs → tree-YLD52CNT-CJq87hhK.cjs} +2 -2
  266. package/dist/{tree-YLD52CNT-DCaIk200.cjs.map → tree-YLD52CNT-CJq87hhK.cjs.map} +1 -1
  267. package/dist/{tree-YLD52CNT-CSDgMp-S.mjs → tree-YLD52CNT-DADqrbfS.mjs} +2 -2
  268. package/dist/{tree-YLD52CNT-CSDgMp-S.mjs.map → tree-YLD52CNT-DADqrbfS.mjs.map} +1 -1
  269. package/dist/{unexpand-CADSA4VO-OXSW5LXB.mjs → unexpand-CADSA4VO-Buhf3zSV.mjs} +2 -2
  270. package/dist/{unexpand-CADSA4VO-OXSW5LXB.mjs.map → unexpand-CADSA4VO-Buhf3zSV.mjs.map} +1 -1
  271. package/dist/{unexpand-CADSA4VO-Y0YxuYnQ.cjs → unexpand-CADSA4VO-R-3mQ2br.cjs} +2 -2
  272. package/dist/{unexpand-CADSA4VO-Y0YxuYnQ.cjs.map → unexpand-CADSA4VO-R-3mQ2br.cjs.map} +1 -1
  273. package/dist/{uniq-XSIZR6PB-CddB2OBC.mjs → uniq-XSIZR6PB-BTYcreDI.mjs} +3 -3
  274. package/dist/{uniq-XSIZR6PB-CddB2OBC.mjs.map → uniq-XSIZR6PB-BTYcreDI.mjs.map} +1 -1
  275. package/dist/{uniq-XSIZR6PB-CUquOIDK.cjs → uniq-XSIZR6PB-CgupLs7R.cjs} +3 -3
  276. package/dist/{uniq-XSIZR6PB-CUquOIDK.cjs.map → uniq-XSIZR6PB-CgupLs7R.cjs.map} +1 -1
  277. package/dist/{wc-LF7NU4LA-CpWeSthu.cjs → wc-LF7NU4LA-CAqLe2Bq.cjs} +3 -3
  278. package/dist/{wc-LF7NU4LA-CpWeSthu.cjs.map → wc-LF7NU4LA-CAqLe2Bq.cjs.map} +1 -1
  279. package/dist/{wc-LF7NU4LA-wLql_W1c.mjs → wc-LF7NU4LA-CM-iHC-G.mjs} +3 -3
  280. package/dist/{wc-LF7NU4LA-wLql_W1c.mjs.map → wc-LF7NU4LA-CM-iHC-G.mjs.map} +1 -1
  281. package/dist/{xan-Y6WF3IRG-BTAFHcaS.cjs → xan-Y6WF3IRG-SyjvbXr9.cjs} +6 -6
  282. package/dist/{xan-Y6WF3IRG-BTAFHcaS.cjs.map → xan-Y6WF3IRG-SyjvbXr9.cjs.map} +1 -1
  283. package/dist/{xan-Y6WF3IRG-DN5T5LS5.mjs → xan-Y6WF3IRG-kyetxbnJ.mjs} +6 -6
  284. package/dist/{xan-Y6WF3IRG-DN5T5LS5.mjs.map → xan-Y6WF3IRG-kyetxbnJ.mjs.map} +1 -1
  285. package/dist/{xan-view-HDVKHFC2-BQQBGxmS.mjs → xan-view-HDVKHFC2-D1iAi4kR.mjs} +3 -3
  286. package/dist/{xan-view-HDVKHFC2-BQQBGxmS.mjs.map → xan-view-HDVKHFC2-D1iAi4kR.mjs.map} +1 -1
  287. package/dist/{xan-view-HDVKHFC2-CgL1WiSa.cjs → xan-view-HDVKHFC2-DMUjOm7z.cjs} +3 -3
  288. package/dist/{xan-view-HDVKHFC2-CgL1WiSa.cjs.map → xan-view-HDVKHFC2-DMUjOm7z.cjs.map} +1 -1
  289. package/dist/{xargs-MGZPH7AX-D7LS1Gf3.cjs → xargs-MGZPH7AX-Boz9EO3J.cjs} +2 -2
  290. package/dist/{xargs-MGZPH7AX-D7LS1Gf3.cjs.map → xargs-MGZPH7AX-Boz9EO3J.cjs.map} +1 -1
  291. package/dist/{xargs-MGZPH7AX-B1z5_213.mjs → xargs-MGZPH7AX-Cq-234C1.mjs} +2 -2
  292. package/dist/{xargs-MGZPH7AX-B1z5_213.mjs.map → xargs-MGZPH7AX-Cq-234C1.mjs.map} +1 -1
  293. package/dist/{yq-4QJW3EQG-CiIzl_ob.cjs → yq-4QJW3EQG-C33ow4DV.cjs} +3 -3
  294. package/dist/{yq-4QJW3EQG-CiIzl_ob.cjs.map → yq-4QJW3EQG-C33ow4DV.cjs.map} +1 -1
  295. package/dist/{yq-4QJW3EQG-D6NJ7PX1.mjs → yq-4QJW3EQG-DSU6EX2q.mjs} +3 -3
  296. package/dist/{yq-4QJW3EQG-D6NJ7PX1.mjs.map → yq-4QJW3EQG-DSU6EX2q.mjs.map} +1 -1
  297. package/package.json +1 -1
  298. package/dist/dist-DQZABv1_.mjs.map +0 -1
  299. package/dist/dist-KeJkUQxy.cjs.map +0 -1
  300. package/dist/start-BDCUU_Ry.cjs.map +0 -1
  301. package/dist/start-CJs5Jmpv.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"diff-MWJFIG7X-RORXFtQw.mjs","names":["p","u","c","s","o","a","g.createTwoFilesPatch"],"sources":["../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/base.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/character.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/util/string.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/word.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/line.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/sentence.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/css.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/json.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/array.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/patch/create.js","../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-CBJVD2XA.js","../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/diff-MWJFIG7X.js"],"sourcesContent":["export default class Diff {\n diff(oldStr, newStr, \n // Type below is not accurate/complete - see above for full possibilities - but it compiles\n options = {}) {\n let callback;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n else if ('callback' in options) {\n callback = options.callback;\n }\n // Allow subclasses to massage the input prior to running\n const oldString = this.castInput(oldStr, options);\n const newString = this.castInput(newStr, options);\n const oldTokens = this.removeEmpty(this.tokenize(oldString, options));\n const newTokens = this.removeEmpty(this.tokenize(newString, options));\n return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);\n }\n diffWithOptionsObj(oldTokens, newTokens, options, callback) {\n var _a;\n const done = (value) => {\n value = this.postProcess(value, options);\n if (callback) {\n setTimeout(function () { callback(value); }, 0);\n return undefined;\n }\n else {\n return value;\n }\n };\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let editLength = 1;\n let maxEditLength = newLen + oldLen;\n if (options.maxEditLength != null) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;\n const abortAfterTimestamp = Date.now() + maxExecutionTime;\n const bestPath = [{ oldPos: -1, lastComponent: undefined }];\n // Seed editLength = 0, i.e. the content starts with the same values\n let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));\n }\n // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;\n // Main worker method. checks all permutations of a given edit length for acceptance.\n const execEditLength = () => {\n for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n let basePath;\n const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath - 1] = undefined;\n }\n let canAdd = false;\n if (addPath) {\n // what newPos will be after we do an insertion:\n const addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n const canRemove = removePath && removePath.oldPos + 1 < oldLen;\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath] = undefined;\n continue;\n }\n // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n if (!canRemove || (canAdd && removePath.oldPos < addPath.oldPos)) {\n basePath = this.addToPath(addPath, true, false, 0, options);\n }\n else {\n basePath = this.addToPath(removePath, false, true, 1, options);\n }\n newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;\n }\n else {\n bestPath[diagonalPath] = basePath;\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n editLength++;\n };\n // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback(undefined);\n }\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n }());\n }\n else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n const ret = execEditLength();\n if (ret) {\n return ret;\n }\n }\n }\n }\n addToPath(path, added, removed, oldPosInc, options) {\n const last = path.lastComponent;\n if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: last.count + 1, added: added, removed: removed, previousComponent: last.previousComponent }\n };\n }\n else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: 1, added: added, removed: removed, previousComponent: last }\n };\n }\n }\n extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {\n newPos++;\n oldPos++;\n commonCount++;\n if (options.oneChangePerToken) {\n basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n }\n if (commonCount && !options.oneChangePerToken) {\n basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n basePath.oldPos = oldPos;\n return newPos;\n }\n equals(left, right, options) {\n if (options.comparator) {\n return options.comparator(left, right);\n }\n else {\n return left === right\n || (!!options.ignoreCase && left.toLowerCase() === right.toLowerCase());\n }\n }\n removeEmpty(array) {\n const ret = [];\n for (let i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n return ret;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n castInput(value, options) {\n return value;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tokenize(value, options) {\n return Array.from(value);\n }\n join(chars) {\n // Assumes ValueT is string, which is the case for most subclasses.\n // When it's false, e.g. in diffArrays, this method needs to be overridden (e.g. with a no-op)\n // Yes, the casts are verbose and ugly, because this pattern - of having the base class SORT OF\n // assume tokens and values are strings, but not completely - is weird and janky.\n return chars.join('');\n }\n postProcess(changeObjects, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n options) {\n return changeObjects;\n }\n get useLongestToken() {\n return false;\n }\n buildValues(lastComponent, newTokens, oldTokens) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n const components = [];\n let nextComponent;\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n components.reverse();\n const componentLen = components.length;\n let componentPos = 0, newPos = 0, oldPos = 0;\n for (; componentPos < componentLen; componentPos++) {\n const component = components[componentPos];\n if (!component.removed) {\n if (!component.added && this.useLongestToken) {\n let value = newTokens.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n const oldValue = oldTokens[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = this.join(value);\n }\n else {\n component.value = this.join(newTokens.slice(newPos, newPos + component.count));\n }\n newPos += component.count;\n // Common case\n if (!component.added) {\n oldPos += component.count;\n }\n }\n else {\n component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));\n oldPos += component.count;\n }\n }\n return components;\n }\n}\n","import Diff from './base.js';\nclass CharacterDiff extends Diff {\n}\nexport const characterDiff = new CharacterDiff();\nexport function diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n","export function longestCommonPrefix(str1, str2) {\n let i;\n for (i = 0; i < str1.length && i < str2.length; i++) {\n if (str1[i] != str2[i]) {\n return str1.slice(0, i);\n }\n }\n return str1.slice(0, i);\n}\nexport function longestCommonSuffix(str1, str2) {\n let i;\n // Unlike longestCommonPrefix, we need a special case to handle all scenarios\n // where we return the empty string since str1.slice(-0) will return the\n // entire string.\n if (!str1 || !str2 || str1[str1.length - 1] != str2[str2.length - 1]) {\n return '';\n }\n for (i = 0; i < str1.length && i < str2.length; i++) {\n if (str1[str1.length - (i + 1)] != str2[str2.length - (i + 1)]) {\n return str1.slice(-i);\n }\n }\n return str1.slice(-i);\n}\nexport function replacePrefix(string, oldPrefix, newPrefix) {\n if (string.slice(0, oldPrefix.length) != oldPrefix) {\n throw Error(`string ${JSON.stringify(string)} doesn't start with prefix ${JSON.stringify(oldPrefix)}; this is a bug`);\n }\n return newPrefix + string.slice(oldPrefix.length);\n}\nexport function replaceSuffix(string, oldSuffix, newSuffix) {\n if (!oldSuffix) {\n return string + newSuffix;\n }\n if (string.slice(-oldSuffix.length) != oldSuffix) {\n throw Error(`string ${JSON.stringify(string)} doesn't end with suffix ${JSON.stringify(oldSuffix)}; this is a bug`);\n }\n return string.slice(0, -oldSuffix.length) + newSuffix;\n}\nexport function removePrefix(string, oldPrefix) {\n return replacePrefix(string, oldPrefix, '');\n}\nexport function removeSuffix(string, oldSuffix) {\n return replaceSuffix(string, oldSuffix, '');\n}\nexport function maximumOverlap(string1, string2) {\n return string2.slice(0, overlapCount(string1, string2));\n}\n// Nicked from https://stackoverflow.com/a/60422853/1709587\nfunction overlapCount(a, b) {\n // Deal with cases where the strings differ in length\n let startA = 0;\n if (a.length > b.length) {\n startA = a.length - b.length;\n }\n let endB = b.length;\n if (a.length < b.length) {\n endB = a.length;\n }\n // Create a back-reference for each index\n // that should be followed in case of a mismatch.\n // We only need B to make these references:\n const map = Array(endB);\n let k = 0; // Index that lags behind j\n map[0] = 0;\n for (let j = 1; j < endB; j++) {\n if (b[j] == b[k]) {\n map[j] = map[k]; // skip over the same character (optional optimisation)\n }\n else {\n map[j] = k;\n }\n while (k > 0 && b[j] != b[k]) {\n k = map[k];\n }\n if (b[j] == b[k]) {\n k++;\n }\n }\n // Phase 2: use these references while iterating over A\n k = 0;\n for (let i = startA; i < a.length; i++) {\n while (k > 0 && a[i] != b[k]) {\n k = map[k];\n }\n if (a[i] == b[k]) {\n k++;\n }\n }\n return k;\n}\n/**\n * Returns true if the string consistently uses Windows line endings.\n */\nexport function hasOnlyWinLineEndings(string) {\n return string.includes('\\r\\n') && !string.startsWith('\\n') && !string.match(/[^\\r]\\n/);\n}\n/**\n * Returns true if the string consistently uses Unix line endings.\n */\nexport function hasOnlyUnixLineEndings(string) {\n return !string.includes('\\r\\n') && string.includes('\\n');\n}\n/**\n * Split a string into segments using a word segmenter, merging consecutive\n * segments if they are both whitespace segments. Whitespace segments can\n * appear adjacent to one another for two reasons:\n * - newlines always get their own segment\n * - where a diacritic is attached to a whitespace character in the text, the\n * segment ends after the diacritic, so e.g. \" \\u0300 \" becomes two segments.\n * This function therefore runs the segmenter's .segment() method and then\n * merges consecutive segments of whitespace into a single part.\n */\nexport function segment(string, segmenter) {\n const parts = [];\n for (const segmentObj of Array.from(segmenter.segment(string))) {\n const segment = segmentObj.segment;\n if (parts.length && (/\\s/).test(parts[parts.length - 1]) && (/\\s/).test(segment)) {\n parts[parts.length - 1] += segment;\n }\n else {\n parts.push(segment);\n }\n }\n return parts;\n}\n// The functions below take a `segmenter` argument so that, when called from\n// diffWords when it is using a segmenter, they can use a notion of what\n// constitutes \"whitespace\" that is consistent with the segmenter.\n//\n// USUALLY this will be identical to the result of the non-segmenter-based\n// logic, but it differs in at least one case: when whitespace characters are\n// modified by diacritics. A word segmenter considers these diacritics to be\n// part of the whitespace, whereas our non-segmenter-based logic does not.\n//\n// Because the segmenter-based approach necessarily requires segmenting the\n// entire string, we offer a leadingAndTrailingWs function to allow getting the\n// whitespace prefix AND whitespace suffix with a single call to the segmenter,\n// for efficiency's sake.\nexport function trailingWs(string, segmenter) {\n if (segmenter) {\n return leadingAndTrailingWs(string, segmenter)[1];\n }\n // Yes, this looks overcomplicated and dumb - why not replace the whole function with\n // return string.match(/\\s*$/)[0]\n // you ask? Because:\n // 1. the trap described at https://markamery.com/blog/quadratic-time-regexes/ would mean doing\n // this would cause this function to take O(n²) time in the worst case (specifically when\n // there is a massive run of NON-TRAILING whitespace in `string`), and\n // 2. the fix proposed in the same blog post, of using a negative lookbehind, is incompatible\n // with old Safari versions that we'd like to not break if possible (see\n // https://github.com/kpdecker/jsdiff/pull/550)\n // It feels absurd to do this with an explicit loop instead of a regex, but I really can't see a\n // better way that doesn't result in broken behaviour.\n let i;\n for (i = string.length - 1; i >= 0; i--) {\n if (!string[i].match(/\\s/)) {\n break;\n }\n }\n return string.substring(i + 1);\n}\nexport function leadingWs(string, segmenter) {\n if (segmenter) {\n return leadingAndTrailingWs(string, segmenter)[0];\n }\n // Thankfully the annoying considerations described in trailingWs don't apply here:\n const match = string.match(/^\\s*/);\n return match ? match[0] : '';\n}\nexport function leadingAndTrailingWs(string, segmenter) {\n if (!segmenter) {\n return [leadingWs(string), trailingWs(string)];\n }\n if (segmenter.resolvedOptions().granularity != 'word') {\n throw new Error('The segmenter passed must have a granularity of \"word\"');\n }\n const segments = segment(string, segmenter);\n const firstSeg = segments[0];\n const lastSeg = segments[segments.length - 1];\n const head = (/\\s/).test(firstSeg) ? firstSeg : '';\n const tail = (/\\s/).test(lastSeg) ? lastSeg : '';\n return [head, tail];\n}\n","import Diff from './base.js';\nimport { longestCommonPrefix, longestCommonSuffix, replacePrefix, replaceSuffix, removePrefix, removeSuffix, maximumOverlap, leadingWs, trailingWs, leadingAndTrailingWs, segment } from '../util/string.js';\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Chars/ranges counted as \"word\" characters by this regex are as follows:\n//\n// + U+00AD Soft hyphen\n// + 00C0–00FF (letters with diacritics from the Latin-1 Supplement), except:\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// + Latin Extended-A, 0100–017F\n// + Latin Extended-B, 0180–024F\n// + IPA Extensions, 0250–02AF\n// + Spacing Modifier Letters, 02B0–02FF, except:\n// - U+02C7 ˇ &#711; Caron\n// - U+02D8 ˘ &#728; Breve\n// - U+02D9 ˙ &#729; Dot Above\n// - U+02DA ˚ &#730; Ring Above\n// - U+02DB ˛ &#731; Ogonek\n// - U+02DC ˜ &#732; Small Tilde\n// - U+02DD ˝ &#733; Double Acute Accent\n// + Latin Extended Additional, 1E00–1EFF\nconst extendedWordChars = 'a-zA-Z0-9_\\\\u{AD}\\\\u{C0}-\\\\u{D6}\\\\u{D8}-\\\\u{F6}\\\\u{F8}-\\\\u{2C6}\\\\u{2C8}-\\\\u{2D7}\\\\u{2DE}-\\\\u{2FF}\\\\u{1E00}-\\\\u{1EFF}';\n// Each token is one of the following:\n// - A punctuation mark plus the surrounding whitespace\n// - A word plus the surrounding whitespace\n// - Pure whitespace (but only in the special case where the entire text\n// is just whitespace)\n//\n// We have to include surrounding whitespace in the tokens because the two\n// alternative approaches produce horribly broken results:\n// * If we just discard the whitespace, we can't fully reproduce the original\n// text from the sequence of tokens and any attempt to render the diff will\n// get the whitespace wrong.\n// * If we have separate tokens for whitespace, then in a typical text every\n// second token will be a single space character. But this often results in\n// the optimal diff between two texts being a perverse one that preserves\n// the spaces between words but deletes and reinserts actual common words.\n// See https://github.com/kpdecker/jsdiff/issues/160#issuecomment-1866099640\n// for an example.\n//\n// Keeping the surrounding whitespace of course has implications for .equals\n// and .join, not just .tokenize.\n// This regex does NOT fully implement the tokenization rules described above.\n// Instead, it gives runs of whitespace their own \"token\". The tokenize method\n// then handles stitching whitespace tokens onto adjacent word or punctuation\n// tokens.\nconst tokenizeIncludingWhitespace = new RegExp(`[${extendedWordChars}]+|\\\\s+|[^${extendedWordChars}]`, 'ug');\nclass WordDiff extends Diff {\n equals(left, right, options) {\n if (options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n return left.trim() === right.trim();\n }\n tokenize(value, options = {}) {\n let parts;\n if (options.intlSegmenter) {\n const segmenter = options.intlSegmenter;\n if (segmenter.resolvedOptions().granularity != 'word') {\n throw new Error('The segmenter passed must have a granularity of \"word\"');\n }\n // We want `parts` to be an array whose elements alternate between being\n // pure whitespace and being pure non-whitespace. This is ALMOST what the\n // segments returned by a word-based Intl.Segmenter already look like,\n // but not quite - see explanation in the docs of our custom segment()\n // function.\n parts = segment(value, segmenter);\n }\n else {\n parts = value.match(tokenizeIncludingWhitespace) || [];\n }\n const tokens = [];\n let prevPart = null;\n parts.forEach(part => {\n if ((/\\s/).test(part)) {\n if (prevPart == null) {\n tokens.push(part);\n }\n else {\n tokens.push(tokens.pop() + part);\n }\n }\n else if (prevPart != null && (/\\s/).test(prevPart)) {\n if (tokens[tokens.length - 1] == prevPart) {\n tokens.push(tokens.pop() + part);\n }\n else {\n tokens.push(prevPart + part);\n }\n }\n else {\n tokens.push(part);\n }\n prevPart = part;\n });\n return tokens;\n }\n join(tokens) {\n // Tokens being joined here will always have appeared consecutively in the\n // same text, so we can simply strip off the leading whitespace from all the\n // tokens except the first (and except any whitespace-only tokens - but such\n // a token will always be the first and only token anyway) and then join them\n // and the whitespace around words and punctuation will end up correct.\n return tokens.map((token, i) => {\n if (i == 0) {\n return token;\n }\n else {\n return token.replace((/^\\s+/), '');\n }\n }).join('');\n }\n postProcess(changes, options) {\n if (!changes || options.oneChangePerToken) {\n return changes;\n }\n let lastKeep = null;\n // Change objects representing any insertion or deletion since the last\n // \"keep\" change object. There can be at most one of each.\n let insertion = null;\n let deletion = null;\n changes.forEach(change => {\n if (change.added) {\n insertion = change;\n }\n else if (change.removed) {\n deletion = change;\n }\n else {\n if (insertion || deletion) { // May be false at start of text\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change, options.intlSegmenter);\n }\n lastKeep = change;\n insertion = null;\n deletion = null;\n }\n });\n if (insertion || deletion) {\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null, options.intlSegmenter);\n }\n return changes;\n }\n}\nexport const wordDiff = new WordDiff();\nexport function diffWords(oldStr, newStr, options) {\n // This option has never been documented and never will be (it's clearer to\n // just call `diffWordsWithSpace` directly if you need that behavior), but\n // has existed in jsdiff for a long time, so we retain support for it here\n // for the sake of backwards compatibility.\n if ((options === null || options === void 0 ? void 0 : options.ignoreWhitespace) != null && !options.ignoreWhitespace) {\n return diffWordsWithSpace(oldStr, newStr, options);\n }\n return wordDiff.diff(oldStr, newStr, options);\n}\nfunction dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep, segmenter) {\n // Before returning, we tidy up the leading and trailing whitespace of the\n // change objects to eliminate cases where trailing whitespace in one object\n // is repeated as leading whitespace in the next.\n // Below are examples of the outcomes we want here to explain the code.\n // I=insert, K=keep, D=delete\n // 1. diffing 'foo bar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz'\n // After cleanup, we want: K:'foo ' D:'bar ' K:'baz'\n //\n // 2. Diffing 'foo bar baz' vs 'foo qux baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' I:' qux ' K:' baz'\n // After cleanup, we want K:'foo ' D:'bar' I:'qux' K:' baz'\n //\n // 3. Diffing 'foo\\nbar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:'\\nbar ' K:' baz'\n // After cleanup, we want K'foo' D:'\\nbar' K:' baz'\n //\n // 4. Diffing 'foo baz' vs 'foo\\nbar baz'\n // Prior to cleanup, we have K:'foo\\n' I:'\\nbar ' K:' baz'\n // After cleanup, we ideally want K'foo' I:'\\nbar' K:' baz'\n // but don't actually manage this currently (the pre-cleanup change\n // objects don't contain enough information to make it possible).\n //\n // 5. Diffing 'foo bar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz'\n // After cleanup, we want K:'foo ' D:' bar ' K:'baz'\n //\n // Our handling is unavoidably imperfect in the case where there's a single\n // indel between keeps and the whitespace has changed. For instance, consider\n // diffing 'foo\\tbar\\nbaz' vs 'foo baz'. Unless we create an extra change\n // object to represent the insertion of the space character (which isn't even\n // a token), we have no way to avoid losing information about the texts'\n // original whitespace in the result we return. Still, we do our best to\n // output something that will look sensible if we e.g. print it with\n // insertions in green and deletions in red.\n // Between two \"keep\" change objects (or before the first or after the last\n // change object), we can have either:\n // * A \"delete\" followed by an \"insert\"\n // * Just an \"insert\"\n // * Just a \"delete\"\n // We handle the three cases separately.\n if (deletion && insertion) {\n const [oldWsPrefix, oldWsSuffix] = leadingAndTrailingWs(deletion.value, segmenter);\n const [newWsPrefix, newWsSuffix] = leadingAndTrailingWs(insertion.value, segmenter);\n if (startKeep) {\n const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix);\n startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix);\n deletion.value = removePrefix(deletion.value, commonWsPrefix);\n insertion.value = removePrefix(insertion.value, commonWsPrefix);\n }\n if (endKeep) {\n const commonWsSuffix = longestCommonSuffix(oldWsSuffix, newWsSuffix);\n endKeep.value = replacePrefix(endKeep.value, newWsSuffix, commonWsSuffix);\n deletion.value = removeSuffix(deletion.value, commonWsSuffix);\n insertion.value = removeSuffix(insertion.value, commonWsSuffix);\n }\n }\n else if (insertion) {\n // The whitespaces all reflect what was in the new text rather than\n // the old, so we essentially have no information about whitespace\n // insertion or deletion. We just want to dedupe the whitespace.\n // We do that by having each change object keep its trailing\n // whitespace and deleting duplicate leading whitespace where\n // present.\n if (startKeep) {\n const ws = leadingWs(insertion.value, segmenter);\n insertion.value = insertion.value.substring(ws.length);\n }\n if (endKeep) {\n const ws = leadingWs(endKeep.value, segmenter);\n endKeep.value = endKeep.value.substring(ws.length);\n }\n // otherwise we've got a deletion and no insertion\n }\n else if (startKeep && endKeep) {\n const newWsFull = leadingWs(endKeep.value, segmenter), [delWsStart, delWsEnd] = leadingAndTrailingWs(deletion.value, segmenter);\n // Any whitespace that comes straight after startKeep in both the old and\n // new texts, assign to startKeep and remove from the deletion.\n const newWsStart = longestCommonPrefix(newWsFull, delWsStart);\n deletion.value = removePrefix(deletion.value, newWsStart);\n // Any whitespace that comes straight before endKeep in both the old and\n // new texts, and hasn't already been assigned to startKeep, assign to\n // endKeep and remove from the deletion.\n const newWsEnd = longestCommonSuffix(removePrefix(newWsFull, newWsStart), delWsEnd);\n deletion.value = removeSuffix(deletion.value, newWsEnd);\n endKeep.value = replacePrefix(endKeep.value, newWsFull, newWsEnd);\n // If there's any whitespace from the new text that HASN'T already been\n // assigned, assign it to the start:\n startKeep.value = replaceSuffix(startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length));\n }\n else if (endKeep) {\n // We are at the start of the text. Preserve all the whitespace on\n // endKeep, and just remove whitespace from the end of deletion to the\n // extent that it overlaps with the start of endKeep.\n const endKeepWsPrefix = leadingWs(endKeep.value, segmenter);\n const deletionWsSuffix = trailingWs(deletion.value, segmenter);\n const overlap = maximumOverlap(deletionWsSuffix, endKeepWsPrefix);\n deletion.value = removeSuffix(deletion.value, overlap);\n }\n else if (startKeep) {\n // We are at the END of the text. Preserve all the whitespace on\n // startKeep, and just remove whitespace from the start of deletion to\n // the extent that it overlaps with the end of startKeep.\n const startKeepWsSuffix = trailingWs(startKeep.value, segmenter);\n const deletionWsPrefix = leadingWs(deletion.value, segmenter);\n const overlap = maximumOverlap(startKeepWsSuffix, deletionWsPrefix);\n deletion.value = removePrefix(deletion.value, overlap);\n }\n}\nclass WordsWithSpaceDiff extends Diff {\n tokenize(value) {\n // Slightly different to the tokenizeIncludingWhitespace regex used above in\n // that this one treats each individual newline as a distinct token, rather\n // than merging them into other surrounding whitespace. This was requested\n // in https://github.com/kpdecker/jsdiff/issues/180 &\n // https://github.com/kpdecker/jsdiff/issues/211\n const regex = new RegExp(`(\\\\r?\\\\n)|[${extendedWordChars}]+|[^\\\\S\\\\n\\\\r]+|[^${extendedWordChars}]`, 'ug');\n return value.match(regex) || [];\n }\n}\nexport const wordsWithSpaceDiff = new WordsWithSpaceDiff();\nexport function diffWordsWithSpace(oldStr, newStr, options) {\n return wordsWithSpaceDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nimport { generateOptions } from '../util/params.js';\nclass LineDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n equals(left, right, options) {\n // If we're ignoring whitespace, we need to normalise lines by stripping\n // whitespace before checking equality. (This has an annoying interaction\n // with newlineIsToken that requires special handling: if newlines get their\n // own token, then we DON'T want to trim the *newline* tokens down to empty\n // strings, since this would cause us to treat whitespace-only line content\n // as equal to a separator between lines, which would be weird and\n // inconsistent with the documented behavior of the options.)\n if (options.ignoreWhitespace) {\n if (!options.newlineIsToken || !left.includes('\\n')) {\n left = left.trim();\n }\n if (!options.newlineIsToken || !right.includes('\\n')) {\n right = right.trim();\n }\n }\n else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {\n if (left.endsWith('\\n')) {\n left = left.slice(0, -1);\n }\n if (right.endsWith('\\n')) {\n right = right.slice(0, -1);\n }\n }\n return super.equals(left, right, options);\n }\n}\nexport const lineDiff = new LineDiff();\nexport function diffLines(oldStr, newStr, options) {\n return lineDiff.diff(oldStr, newStr, options);\n}\nexport function diffTrimmedLines(oldStr, newStr, options) {\n options = generateOptions(options, { ignoreWhitespace: true });\n return lineDiff.diff(oldStr, newStr, options);\n}\n// Exported standalone so it can be used from jsonDiff too.\nexport function tokenize(value, options) {\n if (options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n const retLines = [], linesAndNewlines = value.split(/(\\n|\\r\\n)/);\n // Ignore the final empty token that occurs if the string ends with a new line\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n }\n // Merge the content and line separators into single tokens\n for (let i = 0; i < linesAndNewlines.length; i++) {\n const line = linesAndNewlines[i];\n if (i % 2 && !options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n }\n else {\n retLines.push(line);\n }\n }\n return retLines;\n}\n","import Diff from './base.js';\nfunction isSentenceEndPunct(char) {\n return char == '.' || char == '!' || char == '?';\n}\nclass SentenceDiff extends Diff {\n tokenize(value) {\n var _a;\n // If in future we drop support for environments that don't support lookbehinds, we can replace\n // this entire function with:\n // return value.split(/(?<=[.!?])(\\s+|$)/);\n // but until then, for similar reasons to the trailingWs function in string.ts, we are forced\n // to do this verbosely \"by hand\" instead of using a regex.\n const result = [];\n let tokenStartI = 0;\n for (let i = 0; i < value.length; i++) {\n if (i == value.length - 1) {\n result.push(value.slice(tokenStartI));\n break;\n }\n if (isSentenceEndPunct(value[i]) && value[i + 1].match(/\\s/)) {\n // We've hit a sentence break - i.e. a punctuation mark followed by whitespace.\n // We now want to push TWO tokens to the result:\n // 1. the sentence\n result.push(value.slice(tokenStartI, i + 1));\n // 2. the whitespace\n i = tokenStartI = i + 1;\n while ((_a = value[i + 1]) === null || _a === void 0 ? void 0 : _a.match(/\\s/)) {\n i++;\n }\n result.push(value.slice(tokenStartI, i + 1));\n // Then the next token (a sentence) starts on the character after the whitespace.\n // (It's okay if this is off the end of the string - then the outer loop will terminate\n // here anyway.)\n tokenStartI = i + 1;\n }\n }\n return result;\n }\n}\nexport const sentenceDiff = new SentenceDiff();\nexport function diffSentences(oldStr, newStr, options) {\n return sentenceDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nclass CssDiff extends Diff {\n tokenize(value) {\n return value.split(/([{}:;,]|\\s+)/);\n }\n}\nexport const cssDiff = new CssDiff();\nexport function diffCss(oldStr, newStr, options) {\n return cssDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nimport { tokenize } from './line.js';\nclass JsonDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n get useLongestToken() {\n // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n return true;\n }\n castInput(value, options) {\n const { undefinedReplacement, stringifyReplacer = (k, v) => typeof v === 'undefined' ? undefinedReplacement : v } = options;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), null, ' ');\n }\n equals(left, right, options) {\n return super.equals(left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'), options);\n }\n}\nexport const jsonDiff = new JsonDiff();\nexport function diffJson(oldStr, newStr, options) {\n return jsonDiff.diff(oldStr, newStr, options);\n}\n// This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\nexport function canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n if (replacer) {\n obj = replacer(key === undefined ? '' : key, obj);\n }\n let i;\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n let canonicalizedObj;\n if ('[object Array]' === Object.prototype.toString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, String(i));\n }\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n if (typeof obj === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n const sortedKeys = [];\n let key;\n for (key in obj) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n sortedKeys.push(key);\n }\n }\n sortedKeys.sort();\n for (i = 0; i < sortedKeys.length; i += 1) {\n key = sortedKeys[i];\n canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack, replacer, key);\n }\n stack.pop();\n replacementStack.pop();\n }\n else {\n canonicalizedObj = obj;\n }\n return canonicalizedObj;\n}\n","import Diff from './base.js';\nclass ArrayDiff extends Diff {\n tokenize(value) {\n return value.slice();\n }\n join(value) {\n return value;\n }\n removeEmpty(value) {\n return value;\n }\n}\nexport const arrayDiff = new ArrayDiff();\nexport function diffArrays(oldArr, newArr, options) {\n return arrayDiff.diff(oldArr, newArr, options);\n}\n","import { diffLines } from '../diff/line.js';\nexport const INCLUDE_HEADERS = {\n includeIndex: true,\n includeUnderline: true,\n includeFileHeaders: true\n};\nexport const FILE_HEADERS_ONLY = {\n includeIndex: false,\n includeUnderline: false,\n includeFileHeaders: true\n};\nexport const OMIT_HEADERS = {\n includeIndex: false,\n includeUnderline: false,\n includeFileHeaders: false\n};\nexport function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n let optionsObj;\n if (!options) {\n optionsObj = {};\n }\n else if (typeof options === 'function') {\n optionsObj = { callback: options };\n }\n else {\n optionsObj = options;\n }\n if (typeof optionsObj.context === 'undefined') {\n optionsObj.context = 4;\n }\n // We copy this into its own variable to placate TypeScript, which thinks\n // optionsObj.context might be undefined in the callbacks below.\n const context = optionsObj.context;\n // @ts-expect-error (runtime check for something that is correctly a static type error)\n if (optionsObj.newlineIsToken) {\n throw new Error('newlineIsToken may not be used with patch-generation functions, only with diffing functions');\n }\n if (!optionsObj.callback) {\n return diffLinesResultToPatch(diffLines(oldStr, newStr, optionsObj));\n }\n else {\n const { callback } = optionsObj;\n diffLines(oldStr, newStr, Object.assign(Object.assign({}, optionsObj), { callback: (diff) => {\n const patch = diffLinesResultToPatch(diff);\n // TypeScript is unhappy without the cast because it does not understand that `patch` may\n // be undefined here only if `callback` is StructuredPatchCallbackAbortable:\n callback(patch);\n } }));\n }\n function diffLinesResultToPatch(diff) {\n // STEP 1: Build up the patch with no \"\\" lines and with the arrays\n // of lines containing trailing newline characters. We'll tidy up later...\n if (!diff) {\n return;\n }\n diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier\n function contextLines(lines) {\n return lines.map(function (entry) { return ' ' + entry; });\n }\n const hunks = [];\n let oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;\n for (let i = 0; i < diff.length; i++) {\n const current = diff[i], lines = current.lines || splitLines(current.value);\n current.lines = lines;\n if (current.added || current.removed) {\n // If we have previous context, start with that\n if (!oldRangeStart) {\n const prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n if (prev) {\n curRange = context > 0 ? contextLines(prev.lines.slice(-context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n }\n // Output our changes\n for (const line of lines) {\n curRange.push((current.added ? '+' : '-') + line);\n }\n // Track the updated file position\n if (current.added) {\n newLine += lines.length;\n }\n else {\n oldLine += lines.length;\n }\n }\n else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= context * 2 && i < diff.length - 2) {\n // Overlapping\n for (const line of contextLines(lines)) {\n curRange.push(line);\n }\n }\n else {\n // end the range and output\n const contextSize = Math.min(lines.length, context);\n for (const line of contextLines(lines.slice(0, contextSize))) {\n curRange.push(line);\n }\n const hunk = {\n oldStart: oldRangeStart,\n oldLines: (oldLine - oldRangeStart + contextSize),\n newStart: newRangeStart,\n newLines: (newLine - newRangeStart + contextSize),\n lines: curRange\n };\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n oldLine += lines.length;\n newLine += lines.length;\n }\n }\n // Step 2: eliminate the trailing `\\n` from each line of each hunk, and, where needed, add\n // \"\\".\n for (const hunk of hunks) {\n for (let i = 0; i < hunk.lines.length; i++) {\n if (hunk.lines[i].endsWith('\\n')) {\n hunk.lines[i] = hunk.lines[i].slice(0, -1);\n }\n else {\n hunk.lines.splice(i + 1, 0, '\\\');\n i++; // Skip the line we just added, then continue iterating\n }\n }\n }\n return {\n oldFileName: oldFileName, newFileName: newFileName,\n oldHeader: oldHeader, newHeader: newHeader,\n hunks: hunks\n };\n }\n}\n/**\n * creates a unified diff patch.\n * @param patch either a single structured patch object (as returned by `structuredPatch`) or an array of them (as returned by `parsePatch`)\n */\nexport function formatPatch(patch, headerOptions) {\n if (!headerOptions) {\n headerOptions = INCLUDE_HEADERS;\n }\n if (Array.isArray(patch)) {\n if (patch.length > 1 && !headerOptions.includeFileHeaders) {\n throw new Error('Cannot omit file headers on a multi-file patch. '\n + '(The result would be unparseable; how would a tool trying to apply '\n + 'the patch know which changes are to which file?)');\n }\n return patch.map(p => formatPatch(p, headerOptions)).join('\\n');\n }\n const ret = [];\n if (headerOptions.includeIndex && patch.oldFileName == patch.newFileName) {\n ret.push('Index: ' + patch.oldFileName);\n }\n if (headerOptions.includeUnderline) {\n ret.push('===================================================================');\n }\n if (headerOptions.includeFileHeaders) {\n ret.push('--- ' + patch.oldFileName + (typeof patch.oldHeader === 'undefined' ? '' : '\\t' + patch.oldHeader));\n ret.push('+++ ' + patch.newFileName + (typeof patch.newHeader === 'undefined' ? '' : '\\t' + patch.newHeader));\n }\n for (let i = 0; i < patch.hunks.length; i++) {\n const hunk = patch.hunks[i];\n // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines\n + ' +' + hunk.newStart + ',' + hunk.newLines\n + ' @@');\n for (const line of hunk.lines) {\n ret.push(line);\n }\n }\n return ret.join('\\n') + '\\n';\n}\nexport function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (typeof options === 'function') {\n options = { callback: options };\n }\n if (!(options === null || options === void 0 ? void 0 : options.callback)) {\n const patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);\n if (!patchObj) {\n return;\n }\n return formatPatch(patchObj, options === null || options === void 0 ? void 0 : options.headerOptions);\n }\n else {\n const { callback } = options;\n structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, Object.assign(Object.assign({}, options), { callback: patchObj => {\n if (!patchObj) {\n callback(undefined);\n }\n else {\n callback(formatPatch(patchObj, options.headerOptions));\n }\n } }));\n }\n}\nexport function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n/**\n * Split `text` into an array of lines, including the trailing newline character (where present)\n */\nfunction splitLines(text) {\n const hasTrailingNl = text.endsWith('\\n');\n const result = text.split('\\n').map(line => line + '\\n');\n if (hasTrailingNl) {\n result.pop();\n }\n else {\n result.push(result.pop().slice(0, -1));\n }\n return result;\n}\n","import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{c as a}from\"./chunk-NRSASXYY.js\";import{a as c}from\"./chunk-QIQMJJZ4.js\";import{a as u,b as p}from\"./chunk-QAYAQNCG.js\";import*as g from\"diff\";var b={name:\"diff\",summary:\"compare files line by line\",usage:\"diff [OPTION]... FILE1 FILE2\",options:[\"-u, --unified output unified diff format (default)\",\"-q, --brief report only whether files differ\",\"-s, --report-identical-files report when files are the same\",\"-i, --ignore-case ignore case differences\",\" --help display this help and exit\"]},C={unified:{short:\"u\",long:\"unified\",type:\"boolean\"},brief:{short:\"q\",long:\"brief\",type:\"boolean\"},reportSame:{short:\"s\",long:\"report-identical-files\",type:\"boolean\"},ignoreCase:{short:\"i\",long:\"ignore-case\",type:\"boolean\"}},L={name:\"diff\",async execute(d,e){if(p(d))return u(b);let t=c(\"diff\",d,C);if(!t.ok)return t.error;let m=t.result.flags.brief,h=t.result.flags.reportSame,y=t.result.flags.ignoreCase,l=t.result.positional;if(t.result.flags.unified,l.length<2)return{stdout:\"\",stderr:`diff: missing operand\n`,exitCode:2};let i,s,[r,o]=l;try{i=r===\"-\"?a(e.stdin):await e.fs.readFile(e.fs.resolvePath(e.cwd,r))}catch{return{stdout:\"\",stderr:`diff: ${r}: No such file or directory\n`,exitCode:2}}try{s=o===\"-\"?a(e.stdin):await e.fs.readFile(e.fs.resolvePath(e.cwd,o))}catch{return{stdout:\"\",stderr:`diff: ${o}: No such file or directory\n`,exitCode:2}}let f=i,n=s;return y&&(f=f.toLowerCase(),n=n.toLowerCase()),f===n?h?{stdout:`Files ${r} and ${o} are identical\n`,stderr:\"\",exitCode:0}:{stdout:\"\",stderr:\"\",exitCode:0}:m?{stdout:`Files ${r} and ${o} differ\n`,stderr:\"\",exitCode:1}:{stdout:g.createTwoFilesPatch(r,o,i,s,\"\",\"\",{context:3}),stderr:\"\",exitCode:1}}},P={name:\"diff\",flags:[{flag:\"-u\",type:\"boolean\"},{flag:\"-q\",type:\"boolean\"},{flag:\"-s\",type:\"boolean\"},{flag:\"-i\",type:\"boolean\"}],needsArgs:!0,minArgs:2};export{L as a,P as b};\n","import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a,b}from\"./chunk-CBJVD2XA.js\";import\"./chunk-NRSASXYY.js\";import\"./chunk-QIQMJJZ4.js\";import\"./chunk-QAYAQNCG.js\";import\"./chunk-BZUGFHVS.js\";export{a as diffCommand,b as flagsForFuzzing};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11],"mappings":"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"}
1
+ {"version":3,"file":"diff-MWJFIG7X-Jxkc5RNL.mjs","names":["p","u","c","s","o","a","g.createTwoFilesPatch"],"sources":["../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/base.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/character.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/util/string.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/word.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/line.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/sentence.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/css.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/json.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/diff/array.js","../../../node_modules/.pnpm/diff@8.0.4/node_modules/diff/libesm/patch/create.js","../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-CBJVD2XA.js","../../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/diff-MWJFIG7X.js"],"sourcesContent":["export default class Diff {\n diff(oldStr, newStr, \n // Type below is not accurate/complete - see above for full possibilities - but it compiles\n options = {}) {\n let callback;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n else if ('callback' in options) {\n callback = options.callback;\n }\n // Allow subclasses to massage the input prior to running\n const oldString = this.castInput(oldStr, options);\n const newString = this.castInput(newStr, options);\n const oldTokens = this.removeEmpty(this.tokenize(oldString, options));\n const newTokens = this.removeEmpty(this.tokenize(newString, options));\n return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);\n }\n diffWithOptionsObj(oldTokens, newTokens, options, callback) {\n var _a;\n const done = (value) => {\n value = this.postProcess(value, options);\n if (callback) {\n setTimeout(function () { callback(value); }, 0);\n return undefined;\n }\n else {\n return value;\n }\n };\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let editLength = 1;\n let maxEditLength = newLen + oldLen;\n if (options.maxEditLength != null) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;\n const abortAfterTimestamp = Date.now() + maxExecutionTime;\n const bestPath = [{ oldPos: -1, lastComponent: undefined }];\n // Seed editLength = 0, i.e. the content starts with the same values\n let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));\n }\n // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;\n // Main worker method. checks all permutations of a given edit length for acceptance.\n const execEditLength = () => {\n for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n let basePath;\n const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath - 1] = undefined;\n }\n let canAdd = false;\n if (addPath) {\n // what newPos will be after we do an insertion:\n const addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n const canRemove = removePath && removePath.oldPos + 1 < oldLen;\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath] = undefined;\n continue;\n }\n // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n if (!canRemove || (canAdd && removePath.oldPos < addPath.oldPos)) {\n basePath = this.addToPath(addPath, true, false, 0, options);\n }\n else {\n basePath = this.addToPath(removePath, false, true, 1, options);\n }\n newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;\n }\n else {\n bestPath[diagonalPath] = basePath;\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n editLength++;\n };\n // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback(undefined);\n }\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n }());\n }\n else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n const ret = execEditLength();\n if (ret) {\n return ret;\n }\n }\n }\n }\n addToPath(path, added, removed, oldPosInc, options) {\n const last = path.lastComponent;\n if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: last.count + 1, added: added, removed: removed, previousComponent: last.previousComponent }\n };\n }\n else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: 1, added: added, removed: removed, previousComponent: last }\n };\n }\n }\n extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {\n newPos++;\n oldPos++;\n commonCount++;\n if (options.oneChangePerToken) {\n basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n }\n if (commonCount && !options.oneChangePerToken) {\n basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n basePath.oldPos = oldPos;\n return newPos;\n }\n equals(left, right, options) {\n if (options.comparator) {\n return options.comparator(left, right);\n }\n else {\n return left === right\n || (!!options.ignoreCase && left.toLowerCase() === right.toLowerCase());\n }\n }\n removeEmpty(array) {\n const ret = [];\n for (let i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n return ret;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n castInput(value, options) {\n return value;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tokenize(value, options) {\n return Array.from(value);\n }\n join(chars) {\n // Assumes ValueT is string, which is the case for most subclasses.\n // When it's false, e.g. in diffArrays, this method needs to be overridden (e.g. with a no-op)\n // Yes, the casts are verbose and ugly, because this pattern - of having the base class SORT OF\n // assume tokens and values are strings, but not completely - is weird and janky.\n return chars.join('');\n }\n postProcess(changeObjects, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n options) {\n return changeObjects;\n }\n get useLongestToken() {\n return false;\n }\n buildValues(lastComponent, newTokens, oldTokens) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n const components = [];\n let nextComponent;\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n components.reverse();\n const componentLen = components.length;\n let componentPos = 0, newPos = 0, oldPos = 0;\n for (; componentPos < componentLen; componentPos++) {\n const component = components[componentPos];\n if (!component.removed) {\n if (!component.added && this.useLongestToken) {\n let value = newTokens.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n const oldValue = oldTokens[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = this.join(value);\n }\n else {\n component.value = this.join(newTokens.slice(newPos, newPos + component.count));\n }\n newPos += component.count;\n // Common case\n if (!component.added) {\n oldPos += component.count;\n }\n }\n else {\n component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));\n oldPos += component.count;\n }\n }\n return components;\n }\n}\n","import Diff from './base.js';\nclass CharacterDiff extends Diff {\n}\nexport const characterDiff = new CharacterDiff();\nexport function diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n","export function longestCommonPrefix(str1, str2) {\n let i;\n for (i = 0; i < str1.length && i < str2.length; i++) {\n if (str1[i] != str2[i]) {\n return str1.slice(0, i);\n }\n }\n return str1.slice(0, i);\n}\nexport function longestCommonSuffix(str1, str2) {\n let i;\n // Unlike longestCommonPrefix, we need a special case to handle all scenarios\n // where we return the empty string since str1.slice(-0) will return the\n // entire string.\n if (!str1 || !str2 || str1[str1.length - 1] != str2[str2.length - 1]) {\n return '';\n }\n for (i = 0; i < str1.length && i < str2.length; i++) {\n if (str1[str1.length - (i + 1)] != str2[str2.length - (i + 1)]) {\n return str1.slice(-i);\n }\n }\n return str1.slice(-i);\n}\nexport function replacePrefix(string, oldPrefix, newPrefix) {\n if (string.slice(0, oldPrefix.length) != oldPrefix) {\n throw Error(`string ${JSON.stringify(string)} doesn't start with prefix ${JSON.stringify(oldPrefix)}; this is a bug`);\n }\n return newPrefix + string.slice(oldPrefix.length);\n}\nexport function replaceSuffix(string, oldSuffix, newSuffix) {\n if (!oldSuffix) {\n return string + newSuffix;\n }\n if (string.slice(-oldSuffix.length) != oldSuffix) {\n throw Error(`string ${JSON.stringify(string)} doesn't end with suffix ${JSON.stringify(oldSuffix)}; this is a bug`);\n }\n return string.slice(0, -oldSuffix.length) + newSuffix;\n}\nexport function removePrefix(string, oldPrefix) {\n return replacePrefix(string, oldPrefix, '');\n}\nexport function removeSuffix(string, oldSuffix) {\n return replaceSuffix(string, oldSuffix, '');\n}\nexport function maximumOverlap(string1, string2) {\n return string2.slice(0, overlapCount(string1, string2));\n}\n// Nicked from https://stackoverflow.com/a/60422853/1709587\nfunction overlapCount(a, b) {\n // Deal with cases where the strings differ in length\n let startA = 0;\n if (a.length > b.length) {\n startA = a.length - b.length;\n }\n let endB = b.length;\n if (a.length < b.length) {\n endB = a.length;\n }\n // Create a back-reference for each index\n // that should be followed in case of a mismatch.\n // We only need B to make these references:\n const map = Array(endB);\n let k = 0; // Index that lags behind j\n map[0] = 0;\n for (let j = 1; j < endB; j++) {\n if (b[j] == b[k]) {\n map[j] = map[k]; // skip over the same character (optional optimisation)\n }\n else {\n map[j] = k;\n }\n while (k > 0 && b[j] != b[k]) {\n k = map[k];\n }\n if (b[j] == b[k]) {\n k++;\n }\n }\n // Phase 2: use these references while iterating over A\n k = 0;\n for (let i = startA; i < a.length; i++) {\n while (k > 0 && a[i] != b[k]) {\n k = map[k];\n }\n if (a[i] == b[k]) {\n k++;\n }\n }\n return k;\n}\n/**\n * Returns true if the string consistently uses Windows line endings.\n */\nexport function hasOnlyWinLineEndings(string) {\n return string.includes('\\r\\n') && !string.startsWith('\\n') && !string.match(/[^\\r]\\n/);\n}\n/**\n * Returns true if the string consistently uses Unix line endings.\n */\nexport function hasOnlyUnixLineEndings(string) {\n return !string.includes('\\r\\n') && string.includes('\\n');\n}\n/**\n * Split a string into segments using a word segmenter, merging consecutive\n * segments if they are both whitespace segments. Whitespace segments can\n * appear adjacent to one another for two reasons:\n * - newlines always get their own segment\n * - where a diacritic is attached to a whitespace character in the text, the\n * segment ends after the diacritic, so e.g. \" \\u0300 \" becomes two segments.\n * This function therefore runs the segmenter's .segment() method and then\n * merges consecutive segments of whitespace into a single part.\n */\nexport function segment(string, segmenter) {\n const parts = [];\n for (const segmentObj of Array.from(segmenter.segment(string))) {\n const segment = segmentObj.segment;\n if (parts.length && (/\\s/).test(parts[parts.length - 1]) && (/\\s/).test(segment)) {\n parts[parts.length - 1] += segment;\n }\n else {\n parts.push(segment);\n }\n }\n return parts;\n}\n// The functions below take a `segmenter` argument so that, when called from\n// diffWords when it is using a segmenter, they can use a notion of what\n// constitutes \"whitespace\" that is consistent with the segmenter.\n//\n// USUALLY this will be identical to the result of the non-segmenter-based\n// logic, but it differs in at least one case: when whitespace characters are\n// modified by diacritics. A word segmenter considers these diacritics to be\n// part of the whitespace, whereas our non-segmenter-based logic does not.\n//\n// Because the segmenter-based approach necessarily requires segmenting the\n// entire string, we offer a leadingAndTrailingWs function to allow getting the\n// whitespace prefix AND whitespace suffix with a single call to the segmenter,\n// for efficiency's sake.\nexport function trailingWs(string, segmenter) {\n if (segmenter) {\n return leadingAndTrailingWs(string, segmenter)[1];\n }\n // Yes, this looks overcomplicated and dumb - why not replace the whole function with\n // return string.match(/\\s*$/)[0]\n // you ask? Because:\n // 1. the trap described at https://markamery.com/blog/quadratic-time-regexes/ would mean doing\n // this would cause this function to take O(n²) time in the worst case (specifically when\n // there is a massive run of NON-TRAILING whitespace in `string`), and\n // 2. the fix proposed in the same blog post, of using a negative lookbehind, is incompatible\n // with old Safari versions that we'd like to not break if possible (see\n // https://github.com/kpdecker/jsdiff/pull/550)\n // It feels absurd to do this with an explicit loop instead of a regex, but I really can't see a\n // better way that doesn't result in broken behaviour.\n let i;\n for (i = string.length - 1; i >= 0; i--) {\n if (!string[i].match(/\\s/)) {\n break;\n }\n }\n return string.substring(i + 1);\n}\nexport function leadingWs(string, segmenter) {\n if (segmenter) {\n return leadingAndTrailingWs(string, segmenter)[0];\n }\n // Thankfully the annoying considerations described in trailingWs don't apply here:\n const match = string.match(/^\\s*/);\n return match ? match[0] : '';\n}\nexport function leadingAndTrailingWs(string, segmenter) {\n if (!segmenter) {\n return [leadingWs(string), trailingWs(string)];\n }\n if (segmenter.resolvedOptions().granularity != 'word') {\n throw new Error('The segmenter passed must have a granularity of \"word\"');\n }\n const segments = segment(string, segmenter);\n const firstSeg = segments[0];\n const lastSeg = segments[segments.length - 1];\n const head = (/\\s/).test(firstSeg) ? firstSeg : '';\n const tail = (/\\s/).test(lastSeg) ? lastSeg : '';\n return [head, tail];\n}\n","import Diff from './base.js';\nimport { longestCommonPrefix, longestCommonSuffix, replacePrefix, replaceSuffix, removePrefix, removeSuffix, maximumOverlap, leadingWs, trailingWs, leadingAndTrailingWs, segment } from '../util/string.js';\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Chars/ranges counted as \"word\" characters by this regex are as follows:\n//\n// + U+00AD Soft hyphen\n// + 00C0–00FF (letters with diacritics from the Latin-1 Supplement), except:\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// + Latin Extended-A, 0100–017F\n// + Latin Extended-B, 0180–024F\n// + IPA Extensions, 0250–02AF\n// + Spacing Modifier Letters, 02B0–02FF, except:\n// - U+02C7 ˇ &#711; Caron\n// - U+02D8 ˘ &#728; Breve\n// - U+02D9 ˙ &#729; Dot Above\n// - U+02DA ˚ &#730; Ring Above\n// - U+02DB ˛ &#731; Ogonek\n// - U+02DC ˜ &#732; Small Tilde\n// - U+02DD ˝ &#733; Double Acute Accent\n// + Latin Extended Additional, 1E00–1EFF\nconst extendedWordChars = 'a-zA-Z0-9_\\\\u{AD}\\\\u{C0}-\\\\u{D6}\\\\u{D8}-\\\\u{F6}\\\\u{F8}-\\\\u{2C6}\\\\u{2C8}-\\\\u{2D7}\\\\u{2DE}-\\\\u{2FF}\\\\u{1E00}-\\\\u{1EFF}';\n// Each token is one of the following:\n// - A punctuation mark plus the surrounding whitespace\n// - A word plus the surrounding whitespace\n// - Pure whitespace (but only in the special case where the entire text\n// is just whitespace)\n//\n// We have to include surrounding whitespace in the tokens because the two\n// alternative approaches produce horribly broken results:\n// * If we just discard the whitespace, we can't fully reproduce the original\n// text from the sequence of tokens and any attempt to render the diff will\n// get the whitespace wrong.\n// * If we have separate tokens for whitespace, then in a typical text every\n// second token will be a single space character. But this often results in\n// the optimal diff between two texts being a perverse one that preserves\n// the spaces between words but deletes and reinserts actual common words.\n// See https://github.com/kpdecker/jsdiff/issues/160#issuecomment-1866099640\n// for an example.\n//\n// Keeping the surrounding whitespace of course has implications for .equals\n// and .join, not just .tokenize.\n// This regex does NOT fully implement the tokenization rules described above.\n// Instead, it gives runs of whitespace their own \"token\". The tokenize method\n// then handles stitching whitespace tokens onto adjacent word or punctuation\n// tokens.\nconst tokenizeIncludingWhitespace = new RegExp(`[${extendedWordChars}]+|\\\\s+|[^${extendedWordChars}]`, 'ug');\nclass WordDiff extends Diff {\n equals(left, right, options) {\n if (options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n return left.trim() === right.trim();\n }\n tokenize(value, options = {}) {\n let parts;\n if (options.intlSegmenter) {\n const segmenter = options.intlSegmenter;\n if (segmenter.resolvedOptions().granularity != 'word') {\n throw new Error('The segmenter passed must have a granularity of \"word\"');\n }\n // We want `parts` to be an array whose elements alternate between being\n // pure whitespace and being pure non-whitespace. This is ALMOST what the\n // segments returned by a word-based Intl.Segmenter already look like,\n // but not quite - see explanation in the docs of our custom segment()\n // function.\n parts = segment(value, segmenter);\n }\n else {\n parts = value.match(tokenizeIncludingWhitespace) || [];\n }\n const tokens = [];\n let prevPart = null;\n parts.forEach(part => {\n if ((/\\s/).test(part)) {\n if (prevPart == null) {\n tokens.push(part);\n }\n else {\n tokens.push(tokens.pop() + part);\n }\n }\n else if (prevPart != null && (/\\s/).test(prevPart)) {\n if (tokens[tokens.length - 1] == prevPart) {\n tokens.push(tokens.pop() + part);\n }\n else {\n tokens.push(prevPart + part);\n }\n }\n else {\n tokens.push(part);\n }\n prevPart = part;\n });\n return tokens;\n }\n join(tokens) {\n // Tokens being joined here will always have appeared consecutively in the\n // same text, so we can simply strip off the leading whitespace from all the\n // tokens except the first (and except any whitespace-only tokens - but such\n // a token will always be the first and only token anyway) and then join them\n // and the whitespace around words and punctuation will end up correct.\n return tokens.map((token, i) => {\n if (i == 0) {\n return token;\n }\n else {\n return token.replace((/^\\s+/), '');\n }\n }).join('');\n }\n postProcess(changes, options) {\n if (!changes || options.oneChangePerToken) {\n return changes;\n }\n let lastKeep = null;\n // Change objects representing any insertion or deletion since the last\n // \"keep\" change object. There can be at most one of each.\n let insertion = null;\n let deletion = null;\n changes.forEach(change => {\n if (change.added) {\n insertion = change;\n }\n else if (change.removed) {\n deletion = change;\n }\n else {\n if (insertion || deletion) { // May be false at start of text\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change, options.intlSegmenter);\n }\n lastKeep = change;\n insertion = null;\n deletion = null;\n }\n });\n if (insertion || deletion) {\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null, options.intlSegmenter);\n }\n return changes;\n }\n}\nexport const wordDiff = new WordDiff();\nexport function diffWords(oldStr, newStr, options) {\n // This option has never been documented and never will be (it's clearer to\n // just call `diffWordsWithSpace` directly if you need that behavior), but\n // has existed in jsdiff for a long time, so we retain support for it here\n // for the sake of backwards compatibility.\n if ((options === null || options === void 0 ? void 0 : options.ignoreWhitespace) != null && !options.ignoreWhitespace) {\n return diffWordsWithSpace(oldStr, newStr, options);\n }\n return wordDiff.diff(oldStr, newStr, options);\n}\nfunction dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep, segmenter) {\n // Before returning, we tidy up the leading and trailing whitespace of the\n // change objects to eliminate cases where trailing whitespace in one object\n // is repeated as leading whitespace in the next.\n // Below are examples of the outcomes we want here to explain the code.\n // I=insert, K=keep, D=delete\n // 1. diffing 'foo bar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz'\n // After cleanup, we want: K:'foo ' D:'bar ' K:'baz'\n //\n // 2. Diffing 'foo bar baz' vs 'foo qux baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' I:' qux ' K:' baz'\n // After cleanup, we want K:'foo ' D:'bar' I:'qux' K:' baz'\n //\n // 3. Diffing 'foo\\nbar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:'\\nbar ' K:' baz'\n // After cleanup, we want K'foo' D:'\\nbar' K:' baz'\n //\n // 4. Diffing 'foo baz' vs 'foo\\nbar baz'\n // Prior to cleanup, we have K:'foo\\n' I:'\\nbar ' K:' baz'\n // After cleanup, we ideally want K'foo' I:'\\nbar' K:' baz'\n // but don't actually manage this currently (the pre-cleanup change\n // objects don't contain enough information to make it possible).\n //\n // 5. Diffing 'foo bar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz'\n // After cleanup, we want K:'foo ' D:' bar ' K:'baz'\n //\n // Our handling is unavoidably imperfect in the case where there's a single\n // indel between keeps and the whitespace has changed. For instance, consider\n // diffing 'foo\\tbar\\nbaz' vs 'foo baz'. Unless we create an extra change\n // object to represent the insertion of the space character (which isn't even\n // a token), we have no way to avoid losing information about the texts'\n // original whitespace in the result we return. Still, we do our best to\n // output something that will look sensible if we e.g. print it with\n // insertions in green and deletions in red.\n // Between two \"keep\" change objects (or before the first or after the last\n // change object), we can have either:\n // * A \"delete\" followed by an \"insert\"\n // * Just an \"insert\"\n // * Just a \"delete\"\n // We handle the three cases separately.\n if (deletion && insertion) {\n const [oldWsPrefix, oldWsSuffix] = leadingAndTrailingWs(deletion.value, segmenter);\n const [newWsPrefix, newWsSuffix] = leadingAndTrailingWs(insertion.value, segmenter);\n if (startKeep) {\n const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix);\n startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix);\n deletion.value = removePrefix(deletion.value, commonWsPrefix);\n insertion.value = removePrefix(insertion.value, commonWsPrefix);\n }\n if (endKeep) {\n const commonWsSuffix = longestCommonSuffix(oldWsSuffix, newWsSuffix);\n endKeep.value = replacePrefix(endKeep.value, newWsSuffix, commonWsSuffix);\n deletion.value = removeSuffix(deletion.value, commonWsSuffix);\n insertion.value = removeSuffix(insertion.value, commonWsSuffix);\n }\n }\n else if (insertion) {\n // The whitespaces all reflect what was in the new text rather than\n // the old, so we essentially have no information about whitespace\n // insertion or deletion. We just want to dedupe the whitespace.\n // We do that by having each change object keep its trailing\n // whitespace and deleting duplicate leading whitespace where\n // present.\n if (startKeep) {\n const ws = leadingWs(insertion.value, segmenter);\n insertion.value = insertion.value.substring(ws.length);\n }\n if (endKeep) {\n const ws = leadingWs(endKeep.value, segmenter);\n endKeep.value = endKeep.value.substring(ws.length);\n }\n // otherwise we've got a deletion and no insertion\n }\n else if (startKeep && endKeep) {\n const newWsFull = leadingWs(endKeep.value, segmenter), [delWsStart, delWsEnd] = leadingAndTrailingWs(deletion.value, segmenter);\n // Any whitespace that comes straight after startKeep in both the old and\n // new texts, assign to startKeep and remove from the deletion.\n const newWsStart = longestCommonPrefix(newWsFull, delWsStart);\n deletion.value = removePrefix(deletion.value, newWsStart);\n // Any whitespace that comes straight before endKeep in both the old and\n // new texts, and hasn't already been assigned to startKeep, assign to\n // endKeep and remove from the deletion.\n const newWsEnd = longestCommonSuffix(removePrefix(newWsFull, newWsStart), delWsEnd);\n deletion.value = removeSuffix(deletion.value, newWsEnd);\n endKeep.value = replacePrefix(endKeep.value, newWsFull, newWsEnd);\n // If there's any whitespace from the new text that HASN'T already been\n // assigned, assign it to the start:\n startKeep.value = replaceSuffix(startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length));\n }\n else if (endKeep) {\n // We are at the start of the text. Preserve all the whitespace on\n // endKeep, and just remove whitespace from the end of deletion to the\n // extent that it overlaps with the start of endKeep.\n const endKeepWsPrefix = leadingWs(endKeep.value, segmenter);\n const deletionWsSuffix = trailingWs(deletion.value, segmenter);\n const overlap = maximumOverlap(deletionWsSuffix, endKeepWsPrefix);\n deletion.value = removeSuffix(deletion.value, overlap);\n }\n else if (startKeep) {\n // We are at the END of the text. Preserve all the whitespace on\n // startKeep, and just remove whitespace from the start of deletion to\n // the extent that it overlaps with the end of startKeep.\n const startKeepWsSuffix = trailingWs(startKeep.value, segmenter);\n const deletionWsPrefix = leadingWs(deletion.value, segmenter);\n const overlap = maximumOverlap(startKeepWsSuffix, deletionWsPrefix);\n deletion.value = removePrefix(deletion.value, overlap);\n }\n}\nclass WordsWithSpaceDiff extends Diff {\n tokenize(value) {\n // Slightly different to the tokenizeIncludingWhitespace regex used above in\n // that this one treats each individual newline as a distinct token, rather\n // than merging them into other surrounding whitespace. This was requested\n // in https://github.com/kpdecker/jsdiff/issues/180 &\n // https://github.com/kpdecker/jsdiff/issues/211\n const regex = new RegExp(`(\\\\r?\\\\n)|[${extendedWordChars}]+|[^\\\\S\\\\n\\\\r]+|[^${extendedWordChars}]`, 'ug');\n return value.match(regex) || [];\n }\n}\nexport const wordsWithSpaceDiff = new WordsWithSpaceDiff();\nexport function diffWordsWithSpace(oldStr, newStr, options) {\n return wordsWithSpaceDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nimport { generateOptions } from '../util/params.js';\nclass LineDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n equals(left, right, options) {\n // If we're ignoring whitespace, we need to normalise lines by stripping\n // whitespace before checking equality. (This has an annoying interaction\n // with newlineIsToken that requires special handling: if newlines get their\n // own token, then we DON'T want to trim the *newline* tokens down to empty\n // strings, since this would cause us to treat whitespace-only line content\n // as equal to a separator between lines, which would be weird and\n // inconsistent with the documented behavior of the options.)\n if (options.ignoreWhitespace) {\n if (!options.newlineIsToken || !left.includes('\\n')) {\n left = left.trim();\n }\n if (!options.newlineIsToken || !right.includes('\\n')) {\n right = right.trim();\n }\n }\n else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {\n if (left.endsWith('\\n')) {\n left = left.slice(0, -1);\n }\n if (right.endsWith('\\n')) {\n right = right.slice(0, -1);\n }\n }\n return super.equals(left, right, options);\n }\n}\nexport const lineDiff = new LineDiff();\nexport function diffLines(oldStr, newStr, options) {\n return lineDiff.diff(oldStr, newStr, options);\n}\nexport function diffTrimmedLines(oldStr, newStr, options) {\n options = generateOptions(options, { ignoreWhitespace: true });\n return lineDiff.diff(oldStr, newStr, options);\n}\n// Exported standalone so it can be used from jsonDiff too.\nexport function tokenize(value, options) {\n if (options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n const retLines = [], linesAndNewlines = value.split(/(\\n|\\r\\n)/);\n // Ignore the final empty token that occurs if the string ends with a new line\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n }\n // Merge the content and line separators into single tokens\n for (let i = 0; i < linesAndNewlines.length; i++) {\n const line = linesAndNewlines[i];\n if (i % 2 && !options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n }\n else {\n retLines.push(line);\n }\n }\n return retLines;\n}\n","import Diff from './base.js';\nfunction isSentenceEndPunct(char) {\n return char == '.' || char == '!' || char == '?';\n}\nclass SentenceDiff extends Diff {\n tokenize(value) {\n var _a;\n // If in future we drop support for environments that don't support lookbehinds, we can replace\n // this entire function with:\n // return value.split(/(?<=[.!?])(\\s+|$)/);\n // but until then, for similar reasons to the trailingWs function in string.ts, we are forced\n // to do this verbosely \"by hand\" instead of using a regex.\n const result = [];\n let tokenStartI = 0;\n for (let i = 0; i < value.length; i++) {\n if (i == value.length - 1) {\n result.push(value.slice(tokenStartI));\n break;\n }\n if (isSentenceEndPunct(value[i]) && value[i + 1].match(/\\s/)) {\n // We've hit a sentence break - i.e. a punctuation mark followed by whitespace.\n // We now want to push TWO tokens to the result:\n // 1. the sentence\n result.push(value.slice(tokenStartI, i + 1));\n // 2. the whitespace\n i = tokenStartI = i + 1;\n while ((_a = value[i + 1]) === null || _a === void 0 ? void 0 : _a.match(/\\s/)) {\n i++;\n }\n result.push(value.slice(tokenStartI, i + 1));\n // Then the next token (a sentence) starts on the character after the whitespace.\n // (It's okay if this is off the end of the string - then the outer loop will terminate\n // here anyway.)\n tokenStartI = i + 1;\n }\n }\n return result;\n }\n}\nexport const sentenceDiff = new SentenceDiff();\nexport function diffSentences(oldStr, newStr, options) {\n return sentenceDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nclass CssDiff extends Diff {\n tokenize(value) {\n return value.split(/([{}:;,]|\\s+)/);\n }\n}\nexport const cssDiff = new CssDiff();\nexport function diffCss(oldStr, newStr, options) {\n return cssDiff.diff(oldStr, newStr, options);\n}\n","import Diff from './base.js';\nimport { tokenize } from './line.js';\nclass JsonDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n get useLongestToken() {\n // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n return true;\n }\n castInput(value, options) {\n const { undefinedReplacement, stringifyReplacer = (k, v) => typeof v === 'undefined' ? undefinedReplacement : v } = options;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), null, ' ');\n }\n equals(left, right, options) {\n return super.equals(left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'), options);\n }\n}\nexport const jsonDiff = new JsonDiff();\nexport function diffJson(oldStr, newStr, options) {\n return jsonDiff.diff(oldStr, newStr, options);\n}\n// This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\nexport function canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n if (replacer) {\n obj = replacer(key === undefined ? '' : key, obj);\n }\n let i;\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n let canonicalizedObj;\n if ('[object Array]' === Object.prototype.toString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, String(i));\n }\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n if (typeof obj === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n const sortedKeys = [];\n let key;\n for (key in obj) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n sortedKeys.push(key);\n }\n }\n sortedKeys.sort();\n for (i = 0; i < sortedKeys.length; i += 1) {\n key = sortedKeys[i];\n canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack, replacer, key);\n }\n stack.pop();\n replacementStack.pop();\n }\n else {\n canonicalizedObj = obj;\n }\n return canonicalizedObj;\n}\n","import Diff from './base.js';\nclass ArrayDiff extends Diff {\n tokenize(value) {\n return value.slice();\n }\n join(value) {\n return value;\n }\n removeEmpty(value) {\n return value;\n }\n}\nexport const arrayDiff = new ArrayDiff();\nexport function diffArrays(oldArr, newArr, options) {\n return arrayDiff.diff(oldArr, newArr, options);\n}\n","import { diffLines } from '../diff/line.js';\nexport const INCLUDE_HEADERS = {\n includeIndex: true,\n includeUnderline: true,\n includeFileHeaders: true\n};\nexport const FILE_HEADERS_ONLY = {\n includeIndex: false,\n includeUnderline: false,\n includeFileHeaders: true\n};\nexport const OMIT_HEADERS = {\n includeIndex: false,\n includeUnderline: false,\n includeFileHeaders: false\n};\nexport function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n let optionsObj;\n if (!options) {\n optionsObj = {};\n }\n else if (typeof options === 'function') {\n optionsObj = { callback: options };\n }\n else {\n optionsObj = options;\n }\n if (typeof optionsObj.context === 'undefined') {\n optionsObj.context = 4;\n }\n // We copy this into its own variable to placate TypeScript, which thinks\n // optionsObj.context might be undefined in the callbacks below.\n const context = optionsObj.context;\n // @ts-expect-error (runtime check for something that is correctly a static type error)\n if (optionsObj.newlineIsToken) {\n throw new Error('newlineIsToken may not be used with patch-generation functions, only with diffing functions');\n }\n if (!optionsObj.callback) {\n return diffLinesResultToPatch(diffLines(oldStr, newStr, optionsObj));\n }\n else {\n const { callback } = optionsObj;\n diffLines(oldStr, newStr, Object.assign(Object.assign({}, optionsObj), { callback: (diff) => {\n const patch = diffLinesResultToPatch(diff);\n // TypeScript is unhappy without the cast because it does not understand that `patch` may\n // be undefined here only if `callback` is StructuredPatchCallbackAbortable:\n callback(patch);\n } }));\n }\n function diffLinesResultToPatch(diff) {\n // STEP 1: Build up the patch with no \"\\" lines and with the arrays\n // of lines containing trailing newline characters. We'll tidy up later...\n if (!diff) {\n return;\n }\n diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier\n function contextLines(lines) {\n return lines.map(function (entry) { return ' ' + entry; });\n }\n const hunks = [];\n let oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;\n for (let i = 0; i < diff.length; i++) {\n const current = diff[i], lines = current.lines || splitLines(current.value);\n current.lines = lines;\n if (current.added || current.removed) {\n // If we have previous context, start with that\n if (!oldRangeStart) {\n const prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n if (prev) {\n curRange = context > 0 ? contextLines(prev.lines.slice(-context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n }\n // Output our changes\n for (const line of lines) {\n curRange.push((current.added ? '+' : '-') + line);\n }\n // Track the updated file position\n if (current.added) {\n newLine += lines.length;\n }\n else {\n oldLine += lines.length;\n }\n }\n else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= context * 2 && i < diff.length - 2) {\n // Overlapping\n for (const line of contextLines(lines)) {\n curRange.push(line);\n }\n }\n else {\n // end the range and output\n const contextSize = Math.min(lines.length, context);\n for (const line of contextLines(lines.slice(0, contextSize))) {\n curRange.push(line);\n }\n const hunk = {\n oldStart: oldRangeStart,\n oldLines: (oldLine - oldRangeStart + contextSize),\n newStart: newRangeStart,\n newLines: (newLine - newRangeStart + contextSize),\n lines: curRange\n };\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n oldLine += lines.length;\n newLine += lines.length;\n }\n }\n // Step 2: eliminate the trailing `\\n` from each line of each hunk, and, where needed, add\n // \"\\".\n for (const hunk of hunks) {\n for (let i = 0; i < hunk.lines.length; i++) {\n if (hunk.lines[i].endsWith('\\n')) {\n hunk.lines[i] = hunk.lines[i].slice(0, -1);\n }\n else {\n hunk.lines.splice(i + 1, 0, '\\\');\n i++; // Skip the line we just added, then continue iterating\n }\n }\n }\n return {\n oldFileName: oldFileName, newFileName: newFileName,\n oldHeader: oldHeader, newHeader: newHeader,\n hunks: hunks\n };\n }\n}\n/**\n * creates a unified diff patch.\n * @param patch either a single structured patch object (as returned by `structuredPatch`) or an array of them (as returned by `parsePatch`)\n */\nexport function formatPatch(patch, headerOptions) {\n if (!headerOptions) {\n headerOptions = INCLUDE_HEADERS;\n }\n if (Array.isArray(patch)) {\n if (patch.length > 1 && !headerOptions.includeFileHeaders) {\n throw new Error('Cannot omit file headers on a multi-file patch. '\n + '(The result would be unparseable; how would a tool trying to apply '\n + 'the patch know which changes are to which file?)');\n }\n return patch.map(p => formatPatch(p, headerOptions)).join('\\n');\n }\n const ret = [];\n if (headerOptions.includeIndex && patch.oldFileName == patch.newFileName) {\n ret.push('Index: ' + patch.oldFileName);\n }\n if (headerOptions.includeUnderline) {\n ret.push('===================================================================');\n }\n if (headerOptions.includeFileHeaders) {\n ret.push('--- ' + patch.oldFileName + (typeof patch.oldHeader === 'undefined' ? '' : '\\t' + patch.oldHeader));\n ret.push('+++ ' + patch.newFileName + (typeof patch.newHeader === 'undefined' ? '' : '\\t' + patch.newHeader));\n }\n for (let i = 0; i < patch.hunks.length; i++) {\n const hunk = patch.hunks[i];\n // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines\n + ' +' + hunk.newStart + ',' + hunk.newLines\n + ' @@');\n for (const line of hunk.lines) {\n ret.push(line);\n }\n }\n return ret.join('\\n') + '\\n';\n}\nexport function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (typeof options === 'function') {\n options = { callback: options };\n }\n if (!(options === null || options === void 0 ? void 0 : options.callback)) {\n const patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);\n if (!patchObj) {\n return;\n }\n return formatPatch(patchObj, options === null || options === void 0 ? void 0 : options.headerOptions);\n }\n else {\n const { callback } = options;\n structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, Object.assign(Object.assign({}, options), { callback: patchObj => {\n if (!patchObj) {\n callback(undefined);\n }\n else {\n callback(formatPatch(patchObj, options.headerOptions));\n }\n } }));\n }\n}\nexport function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n/**\n * Split `text` into an array of lines, including the trailing newline character (where present)\n */\nfunction splitLines(text) {\n const hasTrailingNl = text.endsWith('\\n');\n const result = text.split('\\n').map(line => line + '\\n');\n if (hasTrailingNl) {\n result.pop();\n }\n else {\n result.push(result.pop().slice(0, -1));\n }\n return result;\n}\n","import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{c as a}from\"./chunk-NRSASXYY.js\";import{a as c}from\"./chunk-QIQMJJZ4.js\";import{a as u,b as p}from\"./chunk-QAYAQNCG.js\";import*as g from\"diff\";var b={name:\"diff\",summary:\"compare files line by line\",usage:\"diff [OPTION]... FILE1 FILE2\",options:[\"-u, --unified output unified diff format (default)\",\"-q, --brief report only whether files differ\",\"-s, --report-identical-files report when files are the same\",\"-i, --ignore-case ignore case differences\",\" --help display this help and exit\"]},C={unified:{short:\"u\",long:\"unified\",type:\"boolean\"},brief:{short:\"q\",long:\"brief\",type:\"boolean\"},reportSame:{short:\"s\",long:\"report-identical-files\",type:\"boolean\"},ignoreCase:{short:\"i\",long:\"ignore-case\",type:\"boolean\"}},L={name:\"diff\",async execute(d,e){if(p(d))return u(b);let t=c(\"diff\",d,C);if(!t.ok)return t.error;let m=t.result.flags.brief,h=t.result.flags.reportSame,y=t.result.flags.ignoreCase,l=t.result.positional;if(t.result.flags.unified,l.length<2)return{stdout:\"\",stderr:`diff: missing operand\n`,exitCode:2};let i,s,[r,o]=l;try{i=r===\"-\"?a(e.stdin):await e.fs.readFile(e.fs.resolvePath(e.cwd,r))}catch{return{stdout:\"\",stderr:`diff: ${r}: No such file or directory\n`,exitCode:2}}try{s=o===\"-\"?a(e.stdin):await e.fs.readFile(e.fs.resolvePath(e.cwd,o))}catch{return{stdout:\"\",stderr:`diff: ${o}: No such file or directory\n`,exitCode:2}}let f=i,n=s;return y&&(f=f.toLowerCase(),n=n.toLowerCase()),f===n?h?{stdout:`Files ${r} and ${o} are identical\n`,stderr:\"\",exitCode:0}:{stdout:\"\",stderr:\"\",exitCode:0}:m?{stdout:`Files ${r} and ${o} differ\n`,stderr:\"\",exitCode:1}:{stdout:g.createTwoFilesPatch(r,o,i,s,\"\",\"\",{context:3}),stderr:\"\",exitCode:1}}},P={name:\"diff\",flags:[{flag:\"-u\",type:\"boolean\"},{flag:\"-q\",type:\"boolean\"},{flag:\"-s\",type:\"boolean\"},{flag:\"-i\",type:\"boolean\"}],needsArgs:!0,minArgs:2};export{L as a,P as b};\n","import{createRequire} from\"node:module\";const require=createRequire(import.meta.url);\nimport{a,b}from\"./chunk-CBJVD2XA.js\";import\"./chunk-NRSASXYY.js\";import\"./chunk-QIQMJJZ4.js\";import\"./chunk-QAYAQNCG.js\";import\"./chunk-BZUGFHVS.js\";export{a as diffCommand,b as flagsForFuzzing};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11],"mappings":";;;;;;AAAA,IAAqB,OAArB,MAA0B;CACtB,KAAK,QAAQ,QAEb,UAAU,CAAC,GAAG;EACV,IAAI;EACJ,IAAI,OAAO,YAAY,YAAY;GAC/B,WAAW;GACX,UAAU,CAAC;EACf,OACK,IAAI,cAAc,SACnB,WAAW,QAAQ;EAGvB,MAAM,YAAY,KAAK,UAAU,QAAQ,OAAO;EAChD,MAAM,YAAY,KAAK,UAAU,QAAQ,OAAO;EAChD,MAAM,YAAY,KAAK,YAAY,KAAK,SAAS,WAAW,OAAO,CAAC;EACpE,MAAM,YAAY,KAAK,YAAY,KAAK,SAAS,WAAW,OAAO,CAAC;EACpE,OAAO,KAAK,mBAAmB,WAAW,WAAW,SAAS,QAAQ;CAC1E;CACA,mBAAmB,WAAW,WAAW,SAAS,UAAU;EACxD,IAAI;EACJ,MAAM,QAAQ,UAAU;GACpB,QAAQ,KAAK,YAAY,OAAO,OAAO;GACvC,IAAI,UAAU;IACV,WAAW,WAAY;KAAE,SAAS,KAAK;IAAG,GAAG,CAAC;IAC9C;GACJ,OAEI,OAAO;EAEf;EACA,MAAM,SAAS,UAAU,QAAQ,SAAS,UAAU;EACpD,IAAI,aAAa;EACjB,IAAI,gBAAgB,SAAS;EAC7B,IAAI,QAAQ,iBAAiB,MACzB,gBAAgB,KAAK,IAAI,eAAe,QAAQ,aAAa;EAEjE,MAAM,oBAAoB,KAAK,QAAQ,aAAa,QAAQ,OAAO,KAAK,IAAI,KAAK;EACjF,MAAM,sBAAsB,KAAK,IAAI,IAAI;EACzC,MAAM,WAAW,CAAC;GAAE,QAAQ;GAAI,eAAe,KAAA;EAAU,CAAC;EAE1D,IAAI,SAAS,KAAK,cAAc,SAAS,IAAI,WAAW,WAAW,GAAG,OAAO;EAC7E,IAAI,SAAS,GAAG,SAAS,KAAK,UAAU,SAAS,KAAK,QAElD,OAAO,KAAK,KAAK,YAAY,SAAS,GAAG,eAAe,WAAW,SAAS,CAAC;EAmBjF,IAAI,wBAAwB,WAAW,wBAAwB;EAE/D,MAAM,uBAAuB;GACzB,KAAK,IAAI,eAAe,KAAK,IAAI,uBAAuB,CAAC,UAAU,GAAG,gBAAgB,KAAK,IAAI,uBAAuB,UAAU,GAAG,gBAAgB,GAAG;IAClJ,IAAI;IACJ,MAAM,aAAa,SAAS,eAAe,IAAI,UAAU,SAAS,eAAe;IACjF,IAAI,YAGA,SAAS,eAAe,KAAK,KAAA;IAEjC,IAAI,SAAS;IACb,IAAI,SAAS;KAET,MAAM,gBAAgB,QAAQ,SAAS;KACvC,SAAS,WAAW,KAAK,iBAAiB,gBAAgB;IAC9D;IACA,MAAM,YAAY,cAAc,WAAW,SAAS,IAAI;IACxD,IAAI,CAAC,UAAU,CAAC,WAAW;KAGvB,SAAS,gBAAgB,KAAA;KACzB;IACJ;IAIA,IAAI,CAAC,aAAc,UAAU,WAAW,SAAS,QAAQ,QACrD,WAAW,KAAK,UAAU,SAAS,MAAM,OAAO,GAAG,OAAO;SAG1D,WAAW,KAAK,UAAU,YAAY,OAAO,MAAM,GAAG,OAAO;IAEjE,SAAS,KAAK,cAAc,UAAU,WAAW,WAAW,cAAc,OAAO;IACjF,IAAI,SAAS,SAAS,KAAK,UAAU,SAAS,KAAK,QAE/C,OAAO,KAAK,KAAK,YAAY,SAAS,eAAe,WAAW,SAAS,CAAC,KAAK;SAE9E;KACD,SAAS,gBAAgB;KACzB,IAAI,SAAS,SAAS,KAAK,QACvB,wBAAwB,KAAK,IAAI,uBAAuB,eAAe,CAAC;KAE5E,IAAI,SAAS,KAAK,QACd,wBAAwB,KAAK,IAAI,uBAAuB,eAAe,CAAC;IAEhF;GACJ;GACA;EACJ;EAKA,IAAI,UACA,CAAC,SAAS,OAAO;GACb,WAAW,WAAY;IACnB,IAAI,aAAa,iBAAiB,KAAK,IAAI,IAAI,qBAC3C,OAAO,SAAS,KAAA,CAAS;IAE7B,IAAI,CAAC,eAAe,GAChB,KAAK;GAEb,GAAG,CAAC;EACR,GAAE;OAGF,OAAO,cAAc,iBAAiB,KAAK,IAAI,KAAK,qBAAqB;GACrE,MAAM,MAAM,eAAe;GAC3B,IAAI,KACA,OAAO;EAEf;CAER;CACA,UAAU,MAAM,OAAO,SAAS,WAAW,SAAS;EAChD,MAAM,OAAO,KAAK;EAClB,IAAI,QAAQ,CAAC,QAAQ,qBAAqB,KAAK,UAAU,SAAS,KAAK,YAAY,SAC/E,OAAO;GACH,QAAQ,KAAK,SAAS;GACtB,eAAe;IAAE,OAAO,KAAK,QAAQ;IAAU;IAAgB;IAAS,mBAAmB,KAAK;GAAkB;EACtH;OAGA,OAAO;GACH,QAAQ,KAAK,SAAS;GACtB,eAAe;IAAE,OAAO;IAAU;IAAgB;IAAS,mBAAmB;GAAK;EACvF;CAER;CACA,cAAc,UAAU,WAAW,WAAW,cAAc,SAAS;EACjE,MAAM,SAAS,UAAU,QAAQ,SAAS,UAAU;EACpD,IAAI,SAAS,SAAS,QAAQ,SAAS,SAAS,cAAc,cAAc;EAC5E,OAAO,SAAS,IAAI,UAAU,SAAS,IAAI,UAAU,KAAK,OAAO,UAAU,SAAS,IAAI,UAAU,SAAS,IAAI,OAAO,GAAG;GACrH;GACA;GACA;GACA,IAAI,QAAQ,mBACR,SAAS,gBAAgB;IAAE,OAAO;IAAG,mBAAmB,SAAS;IAAe,OAAO;IAAO,SAAS;GAAM;EAErH;EACA,IAAI,eAAe,CAAC,QAAQ,mBACxB,SAAS,gBAAgB;GAAE,OAAO;GAAa,mBAAmB,SAAS;GAAe,OAAO;GAAO,SAAS;EAAM;EAE3H,SAAS,SAAS;EAClB,OAAO;CACX;CACA,OAAO,MAAM,OAAO,SAAS;EACzB,IAAI,QAAQ,YACR,OAAO,QAAQ,WAAW,MAAM,KAAK;OAGrC,OAAO,SAAS,SACR,CAAC,CAAC,QAAQ,cAAc,KAAK,YAAY,MAAM,MAAM,YAAY;CAEjF;CACA,YAAY,OAAO;EACf,MAAM,MAAM,CAAC;EACb,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAC9B,IAAI,MAAM,IACN,IAAI,KAAK,MAAM,EAAE;EAGzB,OAAO;CACX;CAEA,UAAU,OAAO,SAAS;EACtB,OAAO;CACX;CAEA,SAAS,OAAO,SAAS;EACrB,OAAO,MAAM,KAAK,KAAK;CAC3B;CACA,KAAK,OAAO;EAKR,OAAO,MAAM,KAAK,EAAE;CACxB;CACA,YAAY,eAEZ,SAAS;EACL,OAAO;CACX;CACA,IAAI,kBAAkB;EAClB,OAAO;CACX;CACA,YAAY,eAAe,WAAW,WAAW;EAG7C,MAAM,aAAa,CAAC;EACpB,IAAI;EACJ,OAAO,eAAe;GAClB,WAAW,KAAK,aAAa;GAC7B,gBAAgB,cAAc;GAC9B,OAAO,cAAc;GACrB,gBAAgB;EACpB;EACA,WAAW,QAAQ;EACnB,MAAM,eAAe,WAAW;EAChC,IAAI,eAAe,GAAG,SAAS,GAAG,SAAS;EAC3C,OAAO,eAAe,cAAc,gBAAgB;GAChD,MAAM,YAAY,WAAW;GAC7B,IAAI,CAAC,UAAU,SAAS;IACpB,IAAI,CAAC,UAAU,SAAS,KAAK,iBAAiB;KAC1C,IAAI,QAAQ,UAAU,MAAM,QAAQ,SAAS,UAAU,KAAK;KAC5D,QAAQ,MAAM,IAAI,SAAU,OAAO,GAAG;MAClC,MAAM,WAAW,UAAU,SAAS;MACpC,OAAO,SAAS,SAAS,MAAM,SAAS,WAAW;KACvD,CAAC;KACD,UAAU,QAAQ,KAAK,KAAK,KAAK;IACrC,OAEI,UAAU,QAAQ,KAAK,KAAK,UAAU,MAAM,QAAQ,SAAS,UAAU,KAAK,CAAC;IAEjF,UAAU,UAAU;IAEpB,IAAI,CAAC,UAAU,OACX,UAAU,UAAU;GAE5B,OACK;IACD,UAAU,QAAQ,KAAK,KAAK,UAAU,MAAM,QAAQ,SAAS,UAAU,KAAK,CAAC;IAC7E,UAAU,UAAU;GACxB;EACJ;EACA,OAAO;CACX;AACJ;;;AC3PA,IAAM,gBAAN,cAA4B,KAAK,CACjC;AAC6B,IAAI,cAAc;;;ACH/C,SAAgB,oBAAoB,MAAM,MAAM;CAC5C,IAAI;CACJ,KAAK,IAAI,GAAG,IAAI,KAAK,UAAU,IAAI,KAAK,QAAQ,KAC5C,IAAI,KAAK,MAAM,KAAK,IAChB,OAAO,KAAK,MAAM,GAAG,CAAC;CAG9B,OAAO,KAAK,MAAM,GAAG,CAAC;AAC1B;AACA,SAAgB,oBAAoB,MAAM,MAAM;CAC5C,IAAI;CAIJ,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,IAC9D,OAAO;CAEX,KAAK,IAAI,GAAG,IAAI,KAAK,UAAU,IAAI,KAAK,QAAQ,KAC5C,IAAI,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,KACvD,OAAO,KAAK,MAAM,CAAC,CAAC;CAG5B,OAAO,KAAK,MAAM,CAAC,CAAC;AACxB;AACA,SAAgB,cAAc,QAAQ,WAAW,WAAW;CACxD,IAAI,OAAO,MAAM,GAAG,UAAU,MAAM,KAAK,WACrC,MAAM,MAAM,UAAU,KAAK,UAAU,MAAM,EAAE,6BAA6B,KAAK,UAAU,SAAS,EAAE,gBAAgB;CAExH,OAAO,YAAY,OAAO,MAAM,UAAU,MAAM;AACpD;AACA,SAAgB,cAAc,QAAQ,WAAW,WAAW;CACxD,IAAI,CAAC,WACD,OAAO,SAAS;CAEpB,IAAI,OAAO,MAAM,CAAC,UAAU,MAAM,KAAK,WACnC,MAAM,MAAM,UAAU,KAAK,UAAU,MAAM,EAAE,2BAA2B,KAAK,UAAU,SAAS,EAAE,gBAAgB;CAEtH,OAAO,OAAO,MAAM,GAAG,CAAC,UAAU,MAAM,IAAI;AAChD;AACA,SAAgB,aAAa,QAAQ,WAAW;CAC5C,OAAO,cAAc,QAAQ,WAAW,EAAE;AAC9C;AACA,SAAgB,aAAa,QAAQ,WAAW;CAC5C,OAAO,cAAc,QAAQ,WAAW,EAAE;AAC9C;AACA,SAAgB,eAAe,SAAS,SAAS;CAC7C,OAAO,QAAQ,MAAM,GAAG,aAAa,SAAS,OAAO,CAAC;AAC1D;AAEA,SAAS,aAAa,GAAG,GAAG;CAExB,IAAI,SAAS;CACb,IAAI,EAAE,SAAS,EAAE,QACb,SAAS,EAAE,SAAS,EAAE;CAE1B,IAAI,OAAO,EAAE;CACb,IAAI,EAAE,SAAS,EAAE,QACb,OAAO,EAAE;CAKb,MAAM,MAAM,MAAM,IAAI;CACtB,IAAI,IAAI;CACR,IAAI,KAAK;CACT,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,KAAK;EAC3B,IAAI,EAAE,MAAM,EAAE,IACV,IAAI,KAAK,IAAI;OAGb,IAAI,KAAK;EAEb,OAAO,IAAI,KAAK,EAAE,MAAM,EAAE,IACtB,IAAI,IAAI;EAEZ,IAAI,EAAE,MAAM,EAAE,IACV;CAER;CAEA,IAAI;CACJ,KAAK,IAAI,IAAI,QAAQ,IAAI,EAAE,QAAQ,KAAK;EACpC,OAAO,IAAI,KAAK,EAAE,MAAM,EAAE,IACtB,IAAI,IAAI;EAEZ,IAAI,EAAE,MAAM,EAAE,IACV;CAER;CACA,OAAO;AACX;;;;;;;;;;;AAuBA,SAAgB,QAAQ,QAAQ,WAAW;CACvC,MAAM,QAAQ,CAAC;CACf,KAAK,MAAM,cAAc,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG;EAC5D,MAAM,UAAU,WAAW;EAC3B,IAAI,MAAM,UAAW,KAAM,KAAK,MAAM,MAAM,SAAS,EAAE,KAAM,KAAM,KAAK,OAAO,GAC3E,MAAM,MAAM,SAAS,MAAM;OAG3B,MAAM,KAAK,OAAO;CAE1B;CACA,OAAO;AACX;AAcA,SAAgB,WAAW,QAAQ,WAAW;CAC1C,IAAI,WACA,OAAO,qBAAqB,QAAQ,SAAS,EAAE;CAanD,IAAI;CACJ,KAAK,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAChC,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,GACrB;CAGR,OAAO,OAAO,UAAU,IAAI,CAAC;AACjC;AACA,SAAgB,UAAU,QAAQ,WAAW;CACzC,IAAI,WACA,OAAO,qBAAqB,QAAQ,SAAS,EAAE;CAGnD,MAAM,QAAQ,OAAO,MAAM,MAAM;CACjC,OAAO,QAAQ,MAAM,KAAK;AAC9B;AACA,SAAgB,qBAAqB,QAAQ,WAAW;CACpD,IAAI,CAAC,WACD,OAAO,CAAC,UAAU,MAAM,GAAG,WAAW,MAAM,CAAC;CAEjD,IAAI,UAAU,gBAAgB,EAAE,eAAe,QAC3C,MAAM,IAAI,MAAM,0DAAwD;CAE5E,MAAM,WAAW,QAAQ,QAAQ,SAAS;CAC1C,MAAM,WAAW,SAAS;CAC1B,MAAM,UAAU,SAAS,SAAS,SAAS;CAG3C,OAAO,CAFO,KAAM,KAAK,QAAQ,IAAI,WAAW,IAClC,KAAM,KAAK,OAAO,IAAI,UAAU,EAC5B;AACtB;;;ACjKA,MAAM,oBAAoB;AAyB1B,MAAM,8BAA8B,IAAI,OAAO,IAAI,kBAAkB,YAAY,kBAAkB,IAAI,IAAI;AAC3G,IAAM,WAAN,cAAuB,KAAK;CACxB,OAAO,MAAM,OAAO,SAAS;EACzB,IAAI,QAAQ,YAAY;GACpB,OAAO,KAAK,YAAY;GACxB,QAAQ,MAAM,YAAY;EAC9B;EACA,OAAO,KAAK,KAAK,MAAM,MAAM,KAAK;CACtC;CACA,SAAS,OAAO,UAAU,CAAC,GAAG;EAC1B,IAAI;EACJ,IAAI,QAAQ,eAAe;GACvB,MAAM,YAAY,QAAQ;GAC1B,IAAI,UAAU,gBAAgB,EAAE,eAAe,QAC3C,MAAM,IAAI,MAAM,0DAAwD;GAO5E,QAAQ,QAAQ,OAAO,SAAS;EACpC,OAEI,QAAQ,MAAM,MAAM,2BAA2B,KAAK,CAAC;EAEzD,MAAM,SAAS,CAAC;EAChB,IAAI,WAAW;EACf,MAAM,SAAQ,SAAQ;GAClB,IAAK,KAAM,KAAK,IAAI,GAChB,IAAI,YAAY,MACZ,OAAO,KAAK,IAAI;QAGhB,OAAO,KAAK,OAAO,IAAI,IAAI,IAAI;QAGlC,IAAI,YAAY,QAAS,KAAM,KAAK,QAAQ,GAC7C,IAAI,OAAO,OAAO,SAAS,MAAM,UAC7B,OAAO,KAAK,OAAO,IAAI,IAAI,IAAI;QAG/B,OAAO,KAAK,WAAW,IAAI;QAI/B,OAAO,KAAK,IAAI;GAEpB,WAAW;EACf,CAAC;EACD,OAAO;CACX;CACA,KAAK,QAAQ;EAMT,OAAO,OAAO,KAAK,OAAO,MAAM;GAC5B,IAAI,KAAK,GACL,OAAO;QAGP,OAAO,MAAM,QAAS,QAAS,EAAE;EAEzC,CAAC,EAAE,KAAK,EAAE;CACd;CACA,YAAY,SAAS,SAAS;EAC1B,IAAI,CAAC,WAAW,QAAQ,mBACpB,OAAO;EAEX,IAAI,WAAW;EAGf,IAAI,YAAY;EAChB,IAAI,WAAW;EACf,QAAQ,SAAQ,WAAU;GACtB,IAAI,OAAO,OACP,YAAY;QAEX,IAAI,OAAO,SACZ,WAAW;QAEV;IACD,IAAI,aAAa,UACb,gCAAgC,UAAU,UAAU,WAAW,QAAQ,QAAQ,aAAa;IAEhG,WAAW;IACX,YAAY;IACZ,WAAW;GACf;EACJ,CAAC;EACD,IAAI,aAAa,UACb,gCAAgC,UAAU,UAAU,WAAW,MAAM,QAAQ,aAAa;EAE9F,OAAO;CACX;AACJ;AACwB,IAAI,SAAS;AAWrC,SAAS,gCAAgC,WAAW,UAAU,WAAW,SAAS,WAAW;CA0CzF,IAAI,YAAY,WAAW;EACvB,MAAM,CAAC,aAAa,eAAe,qBAAqB,SAAS,OAAO,SAAS;EACjF,MAAM,CAAC,aAAa,eAAe,qBAAqB,UAAU,OAAO,SAAS;EAClF,IAAI,WAAW;GACX,MAAM,iBAAiB,oBAAoB,aAAa,WAAW;GACnE,UAAU,QAAQ,cAAc,UAAU,OAAO,aAAa,cAAc;GAC5E,SAAS,QAAQ,aAAa,SAAS,OAAO,cAAc;GAC5D,UAAU,QAAQ,aAAa,UAAU,OAAO,cAAc;EAClE;EACA,IAAI,SAAS;GACT,MAAM,iBAAiB,oBAAoB,aAAa,WAAW;GACnE,QAAQ,QAAQ,cAAc,QAAQ,OAAO,aAAa,cAAc;GACxE,SAAS,QAAQ,aAAa,SAAS,OAAO,cAAc;GAC5D,UAAU,QAAQ,aAAa,UAAU,OAAO,cAAc;EAClE;CACJ,OACK,IAAI,WAAW;EAOhB,IAAI,WAAW;GACX,MAAM,KAAK,UAAU,UAAU,OAAO,SAAS;GAC/C,UAAU,QAAQ,UAAU,MAAM,UAAU,GAAG,MAAM;EACzD;EACA,IAAI,SAAS;GACT,MAAM,KAAK,UAAU,QAAQ,OAAO,SAAS;GAC7C,QAAQ,QAAQ,QAAQ,MAAM,UAAU,GAAG,MAAM;EACrD;CAEJ,OACK,IAAI,aAAa,SAAS;EAC3B,MAAM,YAAY,UAAU,QAAQ,OAAO,SAAS,GAAG,CAAC,YAAY,YAAY,qBAAqB,SAAS,OAAO,SAAS;EAG9H,MAAM,aAAa,oBAAoB,WAAW,UAAU;EAC5D,SAAS,QAAQ,aAAa,SAAS,OAAO,UAAU;EAIxD,MAAM,WAAW,oBAAoB,aAAa,WAAW,UAAU,GAAG,QAAQ;EAClF,SAAS,QAAQ,aAAa,SAAS,OAAO,QAAQ;EACtD,QAAQ,QAAQ,cAAc,QAAQ,OAAO,WAAW,QAAQ;EAGhE,UAAU,QAAQ,cAAc,UAAU,OAAO,WAAW,UAAU,MAAM,GAAG,UAAU,SAAS,SAAS,MAAM,CAAC;CACtH,OACK,IAAI,SAAS;EAId,MAAM,kBAAkB,UAAU,QAAQ,OAAO,SAAS;EAE1D,MAAM,UAAU,eADS,WAAW,SAAS,OAAO,SACN,GAAG,eAAe;EAChE,SAAS,QAAQ,aAAa,SAAS,OAAO,OAAO;CACzD,OACK,IAAI,WAAW;EAMhB,MAAM,UAAU,eAFU,WAAW,UAAU,OAAO,SAEP,GADtB,UAAU,SAAS,OAAO,SACc,CAAC;EAClE,SAAS,QAAQ,aAAa,SAAS,OAAO,OAAO;CACzD;AACJ;AACA,IAAM,qBAAN,cAAiC,KAAK;CAClC,SAAS,OAAO;EAMZ,MAAM,QAAQ,IAAI,OAAO,cAAc,kBAAkB,qBAAqB,kBAAkB,IAAI,IAAI;EACxG,OAAO,MAAM,MAAM,KAAK,KAAK,CAAC;CAClC;AACJ;AACkC,IAAI,mBAAmB;;;ACnRzD,IAAM,WAAN,cAAuB,KAAK;CACxB,cAAc;EACV,MAAM,GAAG,SAAS;EAClB,KAAK,WAAW;CACpB;CACA,OAAO,MAAM,OAAO,SAAS;EAQzB,IAAI,QAAQ,kBAAkB;GAC1B,IAAI,CAAC,QAAQ,kBAAkB,CAAC,KAAK,SAAS,IAAI,GAC9C,OAAO,KAAK,KAAK;GAErB,IAAI,CAAC,QAAQ,kBAAkB,CAAC,MAAM,SAAS,IAAI,GAC/C,QAAQ,MAAM,KAAK;EAE3B,OACK,IAAI,QAAQ,sBAAsB,CAAC,QAAQ,gBAAgB;GAC5D,IAAI,KAAK,SAAS,IAAI,GAClB,OAAO,KAAK,MAAM,GAAG,EAAE;GAE3B,IAAI,MAAM,SAAS,IAAI,GACnB,QAAQ,MAAM,MAAM,GAAG,EAAE;EAEjC;EACA,OAAO,MAAM,OAAO,MAAM,OAAO,OAAO;CAC5C;AACJ;AACA,MAAa,WAAW,IAAI,SAAS;AACrC,SAAgB,UAAU,QAAQ,QAAQ,SAAS;CAC/C,OAAO,SAAS,KAAK,QAAQ,QAAQ,OAAO;AAChD;AAMA,SAAgB,SAAS,OAAO,SAAS;CACrC,IAAI,QAAQ,iBAER,QAAQ,MAAM,QAAQ,SAAS,IAAI;CAEvC,MAAM,WAAW,CAAC,GAAG,mBAAmB,MAAM,MAAM,WAAW;CAE/D,IAAI,CAAC,iBAAiB,iBAAiB,SAAS,IAC5C,iBAAiB,IAAI;CAGzB,KAAK,IAAI,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK;EAC9C,MAAM,OAAO,iBAAiB;EAC9B,IAAI,IAAI,KAAK,CAAC,QAAQ,gBAClB,SAAS,SAAS,SAAS,MAAM;OAGjC,SAAS,KAAK,IAAI;CAE1B;CACA,OAAO;AACX;;;AC/DA,SAAS,mBAAmB,MAAM;CAC9B,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ;AACjD;AACA,IAAM,eAAN,cAA2B,KAAK;CAC5B,SAAS,OAAO;EACZ,IAAI;EAMJ,MAAM,SAAS,CAAC;EAChB,IAAI,cAAc;EAClB,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;GACnC,IAAI,KAAK,MAAM,SAAS,GAAG;IACvB,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;IACpC;GACJ;GACA,IAAI,mBAAmB,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,MAAM,IAAI,GAAG;IAI1D,OAAO,KAAK,MAAM,MAAM,aAAa,IAAI,CAAC,CAAC;IAE3C,IAAI,cAAc,IAAI;IACtB,QAAQ,KAAK,MAAM,IAAI,QAAQ,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI,GACzE;IAEJ,OAAO,KAAK,MAAM,MAAM,aAAa,IAAI,CAAC,CAAC;IAI3C,cAAc,IAAI;GACtB;EACJ;EACA,OAAO;CACX;AACJ;AAC4B,IAAI,aAAa;;;ACtC7C,IAAM,UAAN,cAAsB,KAAK;CACvB,SAAS,OAAO;EACZ,OAAO,MAAM,MAAM,eAAe;CACtC;AACJ;AACuB,IAAI,QAAQ;;;ACJnC,IAAM,WAAN,cAAuB,KAAK;CACxB,cAAc;EACV,MAAM,GAAG,SAAS;EAClB,KAAK,WAAW;CACpB;CACA,IAAI,kBAAkB;EAGlB,OAAO;CACX;CACA,UAAU,OAAO,SAAS;EACtB,MAAM,EAAE,sBAAsB,qBAAqB,GAAG,MAAM,OAAO,MAAM,cAAc,uBAAuB,MAAM;EACpH,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,aAAa,OAAO,MAAM,MAAM,iBAAiB,GAAG,MAAM,IAAI;CAC5H;CACA,OAAO,MAAM,OAAO,SAAS;EACzB,OAAO,MAAM,OAAO,KAAK,QAAQ,cAAc,IAAI,GAAG,MAAM,QAAQ,cAAc,IAAI,GAAG,OAAO;CACpG;AACJ;AACwB,IAAI,SAAS;AAMrC,SAAgB,aAAa,KAAK,OAAO,kBAAkB,UAAU,KAAK;CACtE,QAAQ,SAAS,CAAC;CAClB,mBAAmB,oBAAoB,CAAC;CACxC,IAAI,UACA,MAAM,SAAS,QAAQ,KAAA,IAAY,KAAK,KAAK,GAAG;CAEpD,IAAI;CACJ,KAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAC/B,IAAI,MAAM,OAAO,KACb,OAAO,iBAAiB;CAGhC,IAAI;CACJ,IAAI,qBAAqB,OAAO,UAAU,SAAS,KAAK,GAAG,GAAG;EAC1D,MAAM,KAAK,GAAG;EACd,mBAAmB,IAAI,MAAM,IAAI,MAAM;EACvC,iBAAiB,KAAK,gBAAgB;EACtC,KAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAC7B,iBAAiB,KAAK,aAAa,IAAI,IAAI,OAAO,kBAAkB,UAAU,OAAO,CAAC,CAAC;EAE3F,MAAM,IAAI;EACV,iBAAiB,IAAI;EACrB,OAAO;CACX;CACA,IAAI,OAAO,IAAI,QACX,MAAM,IAAI,OAAO;CAErB,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;EACzC,MAAM,KAAK,GAAG;EACd,mBAAmB,CAAC;EACpB,iBAAiB,KAAK,gBAAgB;EACtC,MAAM,aAAa,CAAC;EACpB,IAAI;EACJ,KAAK,OAAO;;EAER,IAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAC7C,WAAW,KAAK,GAAG;EAG3B,WAAW,KAAK;EAChB,KAAK,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;GACvC,MAAM,WAAW;GACjB,iBAAiB,OAAO,aAAa,IAAI,MAAM,OAAO,kBAAkB,UAAU,GAAG;EACzF;EACA,MAAM,IAAI;EACV,iBAAiB,IAAI;CACzB,OAEI,mBAAmB;CAEvB,OAAO;AACX;;;AC5EA,IAAM,YAAN,cAAwB,KAAK;CACzB,SAAS,OAAO;EACZ,OAAO,MAAM,MAAM;CACvB;CACA,KAAK,OAAO;EACR,OAAO;CACX;CACA,YAAY,OAAO;EACf,OAAO;CACX;AACJ;AACyB,IAAI,UAAU;;;ACXvC,MAAa,kBAAkB;CAC3B,cAAc;CACd,kBAAkB;CAClB,oBAAoB;AACxB;AAWA,SAAgB,gBAAgB,aAAa,aAAa,QAAQ,QAAQ,WAAW,WAAW,SAAS;CACrG,IAAI;CACJ,IAAI,CAAC,SACD,aAAa,CAAC;MAEb,IAAI,OAAO,YAAY,YACxB,aAAa,EAAE,UAAU,QAAQ;MAGjC,aAAa;CAEjB,IAAI,OAAO,WAAW,YAAY,aAC9B,WAAW,UAAU;CAIzB,MAAM,UAAU,WAAW;CAE3B,IAAI,WAAW,gBACX,MAAM,IAAI,MAAM,6FAA6F;CAEjH,IAAI,CAAC,WAAW,UACZ,OAAO,uBAAuB,UAAU,QAAQ,QAAQ,UAAU,CAAC;MAElE;EACD,MAAM,EAAE,aAAa;EACrB,UAAU,QAAQ,QAAQ,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,UAAU,GAAG,EAAE,WAAW,SAAS;GAIrF,SAHc,uBAAuB,IAGxB,CAAC;EAClB,EAAE,CAAC,CAAC;CACZ;CACA,SAAS,uBAAuB,MAAM;EAGlC,IAAI,CAAC,MACD;EAEJ,KAAK,KAAK;GAAE,OAAO;GAAI,OAAO,CAAC;EAAE,CAAC;EAClC,SAAS,aAAa,OAAO;GACzB,OAAO,MAAM,IAAI,SAAU,OAAO;IAAE,OAAO,MAAM;GAAO,CAAC;EAC7D;EACA,MAAM,QAAQ,CAAC;EACf,IAAI,gBAAgB,GAAG,gBAAgB,GAAG,WAAW,CAAC,GAAG,UAAU,GAAG,UAAU;EAChF,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;GAClC,MAAM,UAAU,KAAK,IAAI,QAAQ,QAAQ,SAAS,WAAW,QAAQ,KAAK;GAC1E,QAAQ,QAAQ;GAChB,IAAI,QAAQ,SAAS,QAAQ,SAAS;IAElC,IAAI,CAAC,eAAe;KAChB,MAAM,OAAO,KAAK,IAAI;KACtB,gBAAgB;KAChB,gBAAgB;KAChB,IAAI,MAAM;MACN,WAAW,UAAU,IAAI,aAAa,KAAK,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;MACrE,iBAAiB,SAAS;MAC1B,iBAAiB,SAAS;KAC9B;IACJ;IAEA,KAAK,MAAM,QAAQ,OACf,SAAS,MAAM,QAAQ,QAAQ,MAAM,OAAO,IAAI;IAGpD,IAAI,QAAQ,OACR,WAAW,MAAM;SAGjB,WAAW,MAAM;GAEzB,OACK;IAED,IAAI,eAEA,IAAI,MAAM,UAAU,UAAU,KAAK,IAAI,KAAK,SAAS,GAEjD,KAAK,MAAM,QAAQ,aAAa,KAAK,GACjC,SAAS,KAAK,IAAI;SAGrB;KAED,MAAM,cAAc,KAAK,IAAI,MAAM,QAAQ,OAAO;KAClD,KAAK,MAAM,QAAQ,aAAa,MAAM,MAAM,GAAG,WAAW,CAAC,GACvD,SAAS,KAAK,IAAI;KAEtB,MAAM,OAAO;MACT,UAAU;MACV,UAAW,UAAU,gBAAgB;MACrC,UAAU;MACV,UAAW,UAAU,gBAAgB;MACrC,OAAO;KACX;KACA,MAAM,KAAK,IAAI;KACf,gBAAgB;KAChB,gBAAgB;KAChB,WAAW,CAAC;IAChB;IAEJ,WAAW,MAAM;IACjB,WAAW,MAAM;GACrB;EACJ;EAGA,KAAK,MAAM,QAAQ,OACf,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KACnC,IAAI,KAAK,MAAM,GAAG,SAAS,IAAI,GAC3B,KAAK,MAAM,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE;OAExC;GACD,KAAK,MAAM,OAAO,IAAI,GAAG,GAAG,8BAA8B;GAC1D;EACJ;EAGR,OAAO;GACU;GAA0B;GAC5B;GAAsB;GAC1B;EACX;CACJ;AACJ;;;;;AAKA,SAAgB,YAAY,OAAO,eAAe;CAC9C,IAAI,CAAC,eACD,gBAAgB;CAEpB,IAAI,MAAM,QAAQ,KAAK,GAAG;EACtB,IAAI,MAAM,SAAS,KAAK,CAAC,cAAc,oBACnC,MAAM,IAAI,MAAM,qKAEwC;EAE5D,OAAO,MAAM,KAAI,MAAK,YAAY,GAAG,aAAa,CAAC,EAAE,KAAK,IAAI;CAClE;CACA,MAAM,MAAM,CAAC;CACb,IAAI,cAAc,gBAAgB,MAAM,eAAe,MAAM,aACzD,IAAI,KAAK,YAAY,MAAM,WAAW;CAE1C,IAAI,cAAc,kBACd,IAAI,KAAK,qEAAqE;CAElF,IAAI,cAAc,oBAAoB;EAClC,IAAI,KAAK,SAAS,MAAM,eAAe,OAAO,MAAM,cAAc,cAAc,KAAK,MAAO,MAAM,UAAU;EAC5G,IAAI,KAAK,SAAS,MAAM,eAAe,OAAO,MAAM,cAAc,cAAc,KAAK,MAAO,MAAM,UAAU;CAChH;CACA,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,MAAM,QAAQ,KAAK;EACzC,MAAM,OAAO,MAAM,MAAM;EAIzB,IAAI,KAAK,aAAa,GAClB,KAAK,YAAY;EAErB,IAAI,KAAK,aAAa,GAClB,KAAK,YAAY;EAErB,IAAI,KAAK,SAAS,KAAK,WAAW,MAAM,KAAK,WACvC,OAAO,KAAK,WAAW,MAAM,KAAK,WAClC,KAAK;EACX,KAAK,MAAM,QAAQ,KAAK,OACpB,IAAI,KAAK,IAAI;CAErB;CACA,OAAO,IAAI,KAAK,IAAI,IAAI;AAC5B;AACA,SAAgB,oBAAoB,aAAa,aAAa,QAAQ,QAAQ,WAAW,WAAW,SAAS;CACzG,IAAI,OAAO,YAAY,YACnB,UAAU,EAAE,UAAU,QAAQ;CAElC,IAAI,EAAE,YAAY,QAAQ,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,WAAW;EACvE,MAAM,WAAW,gBAAgB,aAAa,aAAa,QAAQ,QAAQ,WAAW,WAAW,OAAO;EACxG,IAAI,CAAC,UACD;EAEJ,OAAO,YAAY,UAAU,YAAY,QAAQ,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,aAAa;CACxG,OACK;EACD,MAAM,EAAE,aAAa;EACrB,gBAAgB,aAAa,aAAa,QAAQ,QAAQ,WAAW,WAAW,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,OAAO,GAAG,EAAE,WAAU,aAAY;GAC1I,IAAI,CAAC,UACD,SAAS,KAAA,CAAS;QAGlB,SAAS,YAAY,UAAU,QAAQ,aAAa,CAAC;EAE7D,EAAE,CAAC,CAAC;CACZ;AACJ;;;;AAOA,SAAS,WAAW,MAAM;CACtB,MAAM,gBAAgB,KAAK,SAAS,IAAI;CACxC,MAAM,SAAS,KAAK,MAAM,IAAI,EAAE,KAAI,SAAQ,OAAO,IAAI;CACvD,IAAI,eACA,OAAO,IAAI;MAGX,OAAO,KAAK,OAAO,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC;CAEzC,OAAO;AACX;;;ACnOsD,cAAc,OAAO,KAAK,GAAG;AACmE,IAAI,IAAE;CAAC,MAAK;CAAO,SAAQ;CAA6B,OAAM;CAA+B,SAAQ;EAAC;EAAyD;EAAqD;EAA+D;EAA6C;CAA8C;AAAC,GAAE,IAAE;CAAC,SAAQ;EAAC,OAAM;EAAI,MAAK;EAAU,MAAK;CAAS;CAAE,OAAM;EAAC,OAAM;EAAI,MAAK;EAAQ,MAAK;CAAS;CAAE,YAAW;EAAC,OAAM;EAAI,MAAK;EAAyB,MAAK;CAAS;CAAE,YAAW;EAAC,OAAM;EAAI,MAAK;EAAc,MAAK;CAAS;AAAC,GAAE,IAAE;CAAC,MAAK;CAAO,MAAM,QAAQ,GAAE,GAAE;EAAC,IAAGA,EAAE,CAAC,GAAE,OAAOC,EAAE,CAAC;EAAE,IAAI,IAAEC,IAAE,QAAO,GAAE,CAAC;EAAE,IAAG,CAAC,EAAE,IAAG,OAAO,EAAE;EAAM,IAAI,IAAE,EAAE,OAAO,MAAM,OAAM,IAAE,EAAE,OAAO,MAAM,YAAW,IAAE,EAAE,OAAO,MAAM,YAAW,IAAE,EAAE,OAAO;EAAW,IAAG,EAAE,OAAO,MAAM,SAAQ,EAAE,SAAO,GAAE,OAAM;GAAC,QAAO;GAAG,QAAO;;GAC9+B,UAAS;EAAC;EAAE,IAAI,GAAEC,KAAE,CAAC,GAAEC,OAAG;EAAE,IAAG;GAAC,IAAE,MAAI,MAAIC,EAAE,EAAE,KAAK,IAAE,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,EAAE,KAAI,CAAC,CAAC;EAAC,QAAM;GAAC,OAAM;IAAC,QAAO;IAAG,QAAO,SAAS,EAAE;;IAC7I,UAAS;GAAC;EAAC;EAAC,IAAG;GAAC,MAAED,QAAI,MAAIC,EAAE,EAAE,KAAK,IAAE,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,EAAE,KAAID,GAAC,CAAC;EAAC,QAAM;GAAC,OAAM;IAAC,QAAO;IAAG,QAAO,SAASA,IAAE;;IAC7H,UAAS;GAAC;EAAC;EAAC,IAAI,IAAE,GAAE,IAAED;EAAE,OAAO,MAAI,IAAE,EAAE,YAAY,GAAE,IAAE,EAAE,YAAY,IAAG,MAAI,IAAE,IAAE;GAAC,QAAO,SAAS,EAAE,OAAOC,IAAE;;GAC5G,QAAO;GAAG,UAAS;EAAC,IAAE;GAAC,QAAO;GAAG,QAAO;GAAG,UAAS;EAAC,IAAE,IAAE;GAAC,QAAO,SAAS,EAAE,OAAOA,IAAE;;GACrF,QAAO;GAAG,UAAS;EAAC,IAAE;GAAC,QAAOE,oBAAsB,GAAEF,KAAE,GAAED,KAAE,IAAG,IAAG,EAAC,SAAQ,EAAC,CAAC;GAAE,QAAO;GAAG,UAAS;EAAC;CAAC;AAAC;;;ACNjD,cAAc,OAAO,KAAK,GAAG"}
@@ -6833,6 +6833,20 @@ object({
6833
6833
  })),
6834
6834
  generatedAt: isoDateTime$6
6835
6835
  });
6836
+ /** A single source file returned by the bulk active-source download endpoint. */
6837
+ const DownloadActiveProjectSourceFileSchema$1 = object({
6838
+ path: string().min(1),
6839
+ contents: string()
6840
+ });
6841
+ object({
6842
+ artifactId: string(),
6843
+ files: array(DownloadActiveProjectSourceFileSchema$1)
6844
+ });
6845
+ object({
6846
+ projectId: string(),
6847
+ artifactId: string(),
6848
+ pulledAt: string().datetime()
6849
+ });
6836
6850
  object({ files: array(object({
6837
6851
  id: string(),
6838
6852
  path: string().min(1)
@@ -10840,10 +10854,25 @@ const StoredProjectSourceManifestSchema = z.object({
10840
10854
  files: z.array(StoredManifestFileSchema),
10841
10855
  generatedAt: isoDateTime
10842
10856
  });
10857
+ /** A single source file returned by the bulk active-source download endpoint. */
10858
+ const DownloadActiveProjectSourceFileSchema = z.object({
10859
+ path: z.string().min(1),
10860
+ contents: z.string()
10861
+ });
10862
+ /** Response for downloading all source files from a project's active deploy. */
10863
+ const DownloadActiveProjectSourceResponseSchema = z.object({
10864
+ artifactId: z.string(),
10865
+ files: z.array(DownloadActiveProjectSourceFileSchema)
10866
+ });
10843
10867
  /** Stable, path-derived file id (used by the web for selection + deep links). */
10844
10868
  function projectFileId(path) {
10845
10869
  return `file-${path.trim().replace(/^\.?\/+/, "").replace(/[^a-zA-Z0-9]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase()}`;
10846
10870
  }
10871
+ z.object({
10872
+ projectId: z.string(),
10873
+ artifactId: z.string(),
10874
+ pulledAt: z.string().datetime()
10875
+ });
10847
10876
  /** A single memory file exposed to the dashboard (no contents in list responses). */
10848
10877
  const AgentMemoryFileSummarySchema = z.object({
10849
10878
  id: z.string(),
@@ -43475,6 +43504,76 @@ function storageAdminConfigFromEnv(env = process.env) {
43475
43504
  forcePathStyle: env.STORAGE_FORCE_PATH_STYLE === void 0 ? true : env.STORAGE_FORCE_PATH_STYLE === "true"
43476
43505
  };
43477
43506
  }
43507
+ /** Object key for a built project artifact tarball. */
43508
+ function projectArtifactKey(projectId, version) {
43509
+ return `projects/${projectId}/artifacts/${version}.tgz`;
43510
+ }
43511
+ const SHA256_HEX = /^[a-f0-9]{64}$/;
43512
+ /** True when `hash` is a lowercase hex sha256 digest (64 chars). */
43513
+ function isSourceBlobHash(hash) {
43514
+ return SHA256_HEX.test(hash);
43515
+ }
43516
+ /**
43517
+ * Content-addressed key for a single source file's contents, deduped across all
43518
+ * of a project's deploys. `hash` is a lowercase hex sha256 of the file bytes.
43519
+ */
43520
+ function projectSourceBlobKey(projectId, hash) {
43521
+ if (!isSourceBlobHash(hash)) throw new Error("Invalid source blob hash");
43522
+ return `projects/${projectId}/sources/blobs/${hash}`;
43523
+ }
43524
+ const AVATAR_EXTENSION = /^[a-z0-9]+$/;
43525
+ /** Object key for a user's custom profile avatar in the shared keystroke-users bucket. */
43526
+ function userAvatarStorageKey(userId, extension) {
43527
+ const ext = extension.replace(/^\./, "").toLowerCase();
43528
+ if (!AVATAR_EXTENSION.test(ext)) throw new Error("Invalid avatar extension");
43529
+ return `avatars/${userId}/avatar.${ext}`;
43530
+ }
43531
+ /** True when `key` is the canonical avatar object for `userId`. */
43532
+ function isUserAvatarStorageKey(key, userId) {
43533
+ const prefix = `avatars/${userId}/avatar.`;
43534
+ if (!key.startsWith(prefix)) return false;
43535
+ const ext = key.slice(prefix.length);
43536
+ return AVATAR_EXTENSION.test(ext);
43537
+ }
43538
+ /** Object key for an org logo in the shared keystroke-assets bucket. */
43539
+ function orgLogoStorageKey(organizationId, variant, extension) {
43540
+ const ext = extension.replace(/^\./, "").toLowerCase();
43541
+ if (!AVATAR_EXTENSION.test(ext)) throw new Error("Invalid org logo extension");
43542
+ return `org-logos/${organizationId}/logo-${variant}.${ext}`;
43543
+ }
43544
+ /** True when `key` is the canonical logo object for `organizationId` and `variant`. */
43545
+ function isOrgLogoStorageKey(key, organizationId, variant) {
43546
+ const prefix = `org-logos/${organizationId}/logo-${variant}.`;
43547
+ if (!key.startsWith(prefix)) return false;
43548
+ const ext = key.slice(prefix.length);
43549
+ return AVATAR_EXTENSION.test(ext);
43550
+ }
43551
+ async function loadProjectSourceFiles(storage, projectId, manifest, options = {}) {
43552
+ const maxTotalBytes = options.maxTotalBytes ?? 8388608;
43553
+ const files = [];
43554
+ let totalBytes = 0;
43555
+ for (let index = 0; index < manifest.files.length; index += 8) {
43556
+ const batch = manifest.files.slice(index, index + 8);
43557
+ const batchResults = await Promise.all(batch.map(async (file) => {
43558
+ const bytes = await storage.getObject(projectSourceBlobKey(projectId, file.hash));
43559
+ const contents = new TextDecoder().decode(bytes);
43560
+ return {
43561
+ path: file.path,
43562
+ contents,
43563
+ byteLength: Buffer.byteLength(contents, "utf8")
43564
+ };
43565
+ }));
43566
+ for (const result of batchResults) {
43567
+ totalBytes += result.byteLength;
43568
+ if (totalBytes > maxTotalBytes) throw new Error("Active source snapshot exceeds download size limit");
43569
+ files.push({
43570
+ path: result.path,
43571
+ contents: result.contents
43572
+ });
43573
+ }
43574
+ }
43575
+ return files;
43576
+ }
43478
43577
  const DEFAULT_PRESIGN_TTL_SECONDS = 900;
43479
43578
  function createStorage(config) {
43480
43579
  const client = new S3Client(toClientConfig(config));
@@ -43589,50 +43688,6 @@ function extractRouteManifestFromArtifact(archive) {
43589
43688
  });
43590
43689
  }
43591
43690
  }
43592
- /** Object key for a built project artifact tarball. */
43593
- function projectArtifactKey(projectId, version) {
43594
- return `projects/${projectId}/artifacts/${version}.tgz`;
43595
- }
43596
- const SHA256_HEX = /^[a-f0-9]{64}$/;
43597
- /** True when `hash` is a lowercase hex sha256 digest (64 chars). */
43598
- function isSourceBlobHash(hash) {
43599
- return SHA256_HEX.test(hash);
43600
- }
43601
- /**
43602
- * Content-addressed key for a single source file's contents, deduped across all
43603
- * of a project's deploys. `hash` is a lowercase hex sha256 of the file bytes.
43604
- */
43605
- function projectSourceBlobKey(projectId, hash) {
43606
- if (!isSourceBlobHash(hash)) throw new Error("Invalid source blob hash");
43607
- return `projects/${projectId}/sources/blobs/${hash}`;
43608
- }
43609
- const AVATAR_EXTENSION = /^[a-z0-9]+$/;
43610
- /** Object key for a user's custom profile avatar in the shared keystroke-users bucket. */
43611
- function userAvatarStorageKey(userId, extension) {
43612
- const ext = extension.replace(/^\./, "").toLowerCase();
43613
- if (!AVATAR_EXTENSION.test(ext)) throw new Error("Invalid avatar extension");
43614
- return `avatars/${userId}/avatar.${ext}`;
43615
- }
43616
- /** True when `key` is the canonical avatar object for `userId`. */
43617
- function isUserAvatarStorageKey(key, userId) {
43618
- const prefix = `avatars/${userId}/avatar.`;
43619
- if (!key.startsWith(prefix)) return false;
43620
- const ext = key.slice(prefix.length);
43621
- return AVATAR_EXTENSION.test(ext);
43622
- }
43623
- /** Object key for an org logo in the shared keystroke-assets bucket. */
43624
- function orgLogoStorageKey(organizationId, variant, extension) {
43625
- const ext = extension.replace(/^\./, "").toLowerCase();
43626
- if (!AVATAR_EXTENSION.test(ext)) throw new Error("Invalid org logo extension");
43627
- return `org-logos/${organizationId}/logo-${variant}.${ext}`;
43628
- }
43629
- /** True when `key` is the canonical logo object for `organizationId` and `variant`. */
43630
- function isOrgLogoStorageKey(key, organizationId, variant) {
43631
- const prefix = `org-logos/${organizationId}/logo-${variant}.`;
43632
- if (!key.startsWith(prefix)) return false;
43633
- const ext = key.slice(prefix.length);
43634
- return AVATAR_EXTENSION.test(ext);
43635
- }
43636
43691
  function isBucketAlreadyExistsError(error) {
43637
43692
  if (!error || typeof error !== "object") return false;
43638
43693
  const name = "name" in error ? String(error.name) : "";
@@ -43832,6 +43887,6 @@ function minioStoragePlugin(options = {}) {
43832
43887
  };
43833
43888
  }
43834
43889
  //#endregion
43835
- export { DEFAULT_TRIGGER_OVERVIEW_MODEL as $, resolveExternalPlatformOrigin as $n, SlugAvailabilityQuerySchema as $t, setCredentialInstanceSecret as A, WorkspaceTriggerOverviewSchema as An, OpenApiDiscoverRequestSchema as At, AppSlugAvailabilityResponseSchema as B, mapProject as Bn, PresignUserAvatarRequestSchema as Bt, decodeOAuthState as C, UserPreferencesSchema as Cn, ListProjectDeploymentsResponseSchema as Ct, PublicHttpUrlError as D, WorkspaceTriggerDetailSchema as Dn, ListProjectsResponseSchema as Dt, discoverOpenApiApp as E, WorkflowSummarySchema as En, ListProjectMetricsResponseSchema as Et, AgentSummaryDetailResponseSchema as F, deriveCredentialInstanceSlug as Fn, PROJECT_SLUG_TAKEN_MESSAGE as Ft, CreateCredentialsResponseSchema as G, mapUserOrganization as Gn, ProjectSlugAvailabilityQuerySchema as Gt, CreateApiKeyRequestSchema as H, mapProjectDeployment as Hn, ProjectReachabilityResponseSchema as Ht, AgentSummaryListResponseSchema as I, displayCredentialAppName as In, PresignOrgLogoRequestSchema as It, CreateOrganizationRequestSchema as J, organizationInvitationAcceptPath as Jn, RecentResourceListResponseSchema as Jt, CreateCustomAppRequestSchema as K, mergeUserPreferences as Kn, ProjectSlugAvailabilityResponseSchema as Kt, AgentSummarySchema as L, listenPortFromPublicUrl as Ln, PresignOrgLogoResponseSchema as Lt, AcceptOrganizationInvitationResponseSchema as M, agentMemoryFileId as Mn, OrganizationSidebarBrandingPatchSchema as Mt, ActiveOrganizationResponseSchema as N, agentWorkspaceFileId as Nn, OrganizationSidebarBrandingSchema as Nt, deleteCredentialInstanceSecret as O, WorkspaceTriggerFileSchema as On, McpDiscoverRequestSchema as Ot, AgentMemoryFileSummarySchema as P, buildCredentialInstanceLabel as Pn, PLATFORM_RESOURCE_UNSUPPORTED_TEXT as Pt, CreateProjectResponseSchema as Q, projectFileId as Qn, SkillSummarySchema as Qt, AgentWorkspaceFileSummarySchema as R, mapOrganizationInvitation as Rn, PresignProjectSourceRequestSchema as Rt, completeMcpOAuthConnect as S, UserPreferencesPatchSchema as Sn, ListOrganizationsResponseSchema as St, discoverMcpApp as T, WorkflowSummaryListResponseSchema as Tn, ListProjectMembersResponseSchema as Tt, CreateApiKeyResponseSchema as U, mapProjectMember as Un, ProjectResponseSchema as Ut, CompleteProjectArtifactResponseSchema as V, mapProjectArtifact as Vn, PresignUserAvatarResponseSchema as Vt, CreateCredentialsRequestSchema as W, mapProjectSettings as Wn, ProjectSettingsResponseSchema as Wt, CreateProjectArtifactResponseSchema as X, parseAppSlug as Xn, SkillSummaryDetailResponseSchema as Xt, CreateOrganizationResponseSchema as Y, organizationSlugErrorCodeFromMessage as Yn, RecentResourceSchema as Yt, CreateProjectRequestSchema as Z, parseStoredRouteManifest as Zn, SkillSummaryListResponseSchema as Zt, publicKeystrokeAssetsObjectUrl as _, UpdateProjectSettingsRequestSchema as _n, ListApiKeysResponseSchema as _t, isKeystrokeAssetsAvatarPublicUrl as a, SubmitMarketingContactResponseSchema as an, __commonJSMin as ar, GraphqlDiscoverRequestSchema as at, defaultSchedulerPlugin as b, UserAvatarPatchSchema as bn, ListOrganizationInvitationsResponseSchema as bt, isStorageBucketNotFoundError as c, TriggerAttachmentUpdateRequestSchema as cn, HistoryRunDetailResponseSchema as ct, keystrokeAssetsAvatarKeyFromPublicUrl as d, UpdateOrganizationMemberRequestSchema as dn, InviteOrganizationMembersRequestSchema as dt, SlugAvailabilityResponseSchema as en, resolveUniqueCredentialInstanceLabel as er, DeclineOrganizationInvitationResponseSchema as et, keystrokeAssetsOrgLogoKeyFromPublicUrl as f, UpdateOrganizationMemberResponseSchema as fn, InviteOrganizationMembersResponseSchema as ft, projectSourceBlobKey as g, UpdateProjectRequestSchema as gn, ListAgentWorkspaceFilesResponseSchema as gt, projectArtifactKey as h, UpdateProjectMemberResponseSchema as hn, ListAgentMemoryFilesResponseSchema as ht, extractRouteManifestFromArtifact as i, SubmitMarketingContactRequestSchema as in, pingProjectTarget as ir, GetCustomAppResponseSchema as it, ACTIVE_ORG_HEADER as j, WorkspaceTriggerRunListResponseSchema as jn, OpenApiDiscoverResponseSchema as jt, readCredentialInstanceSecret as k, WorkspaceTriggerListResponseSchema as kn, McpDiscoverResponseSchema as kt, isStorageNotFoundError as l, TriggerRunListQuerySchema as ln, HistoryRunListQuerySchema as lt, orgLogoStorageKey as m, UpdateProjectMemberRequestSchema as mn, InviteProjectMembersResponseSchema as mt, createAssetsStorageClient as n, StartMcpOAuthConnectionResultSchema as nn, validationErrorResponse as nr, ErrorResponseSchema as nt, isKeystrokeAssetsOrgLogoPublicUrl as o, SubmitTeamRequestRequestSchema as on, __require as or, GraphqlDiscoverResponseSchema as ot, minioStoragePlugin as p, UpdateOrganizationRequestSchema as pn, InviteProjectMembersRequestSchema as pt, CreateCustomAppResponseSchema as q, normalizeUserPreferences as qn, ProjectSourceResourcesSchema as qt, ensureKeystrokeAssetsBucket as r, StoredProjectSourceManifestSchema as rn, defaultHostingPlugin as rr, GetCredentialResponseSchema as rt, isOrgLogoStorageKey as s, SubmitTeamRequestResponseSchema as sn, __toESM as sr, HistoryRunCancelResponseSchema as st, RouteManifestNotFoundError as t, StartMcpOAuthConnectionInputSchema as tn, validateCredentialValueAgainstFields as tr, DownloadActiveProjectArtifactResponseSchema as tt, isUserAvatarStorageKey as u, UpdateCredentialRequestSchema as un, HistoryRunListResponseSchema as ut, userAvatarStorageKey as v, UploadProjectSourceManifestRequestSchema as vn, ListAppsResponseSchema as vt, discoverGraphqlApp as w, WorkflowSummaryDetailResponseSchema as wn, ListProjectFilesResponseSchema as wt, beginMcpOAuthConnect as x, UserAvatarSchema as xn, ListOrganizationMembersResponseSchema as xt, createJobQueue as y, UploadProjectSourceResponseSchema as yn, ListCredentialsResponseSchema as yt, AppSlugAvailabilityQuerySchema as z, mapOrganizationMember as zn, PresignProjectSourceResponseSchema as zt };
43890
+ export { CreateProjectResponseSchema as $, parseStoredRouteManifest as $n, SkillSummaryListResponseSchema as $t, readCredentialInstanceSecret as A, WorkspaceTriggerFileSchema as An, McpDiscoverRequestSchema as At, AppSlugAvailabilityQuerySchema as B, mapOrganizationInvitation as Bn, PresignProjectSourceRequestSchema as Bt, completeMcpOAuthConnect as C, UserAvatarSchema as Cn, ListOrganizationMembersResponseSchema as Ct, discoverOpenApiApp as D, WorkflowSummaryListResponseSchema as Dn, ListProjectMembersResponseSchema as Dt, discoverMcpApp as E, WorkflowSummaryDetailResponseSchema as En, ListProjectFilesResponseSchema as Et, AgentMemoryFileSummarySchema as F, agentWorkspaceFileId as Fn, OrganizationSidebarBrandingSchema as Ft, CreateCredentialsRequestSchema as G, mapProjectMember as Gn, ProjectResponseSchema as Gt, CompleteProjectArtifactResponseSchema as H, mapProject as Hn, PresignUserAvatarRequestSchema as Ht, AgentSummaryDetailResponseSchema as I, buildCredentialInstanceLabel as In, PLATFORM_RESOURCE_UNSUPPORTED_TEXT as It, CreateCustomAppResponseSchema as J, mergeUserPreferences as Jn, ProjectSlugAvailabilityResponseSchema as Jt, CreateCredentialsResponseSchema as K, mapProjectSettings as Kn, ProjectSettingsResponseSchema as Kt, AgentSummaryListResponseSchema as L, deriveCredentialInstanceSlug as Ln, PROJECT_SLUG_TAKEN_MESSAGE as Lt, ACTIVE_ORG_HEADER as M, WorkspaceTriggerOverviewSchema as Mn, OpenApiDiscoverRequestSchema as Mt, AcceptOrganizationInvitationResponseSchema as N, WorkspaceTriggerRunListResponseSchema as Nn, OpenApiDiscoverResponseSchema as Nt, PublicHttpUrlError as O, WorkflowSummarySchema as On, ListProjectMetricsResponseSchema as Ot, ActiveOrganizationResponseSchema as P, agentMemoryFileId as Pn, OrganizationSidebarBrandingPatchSchema as Pt, CreateProjectRequestSchema as Q, parseAppSlug as Qn, SkillSummaryDetailResponseSchema as Qt, AgentSummarySchema as R, displayCredentialAppName as Rn, PresignOrgLogoRequestSchema as Rt, beginMcpOAuthConnect as S, UserAvatarPatchSchema as Sn, ListOrganizationInvitationsResponseSchema as St, discoverGraphqlApp as T, UserPreferencesSchema as Tn, ListProjectDeploymentsResponseSchema as Tt, CreateApiKeyRequestSchema as U, mapProjectArtifact as Un, PresignUserAvatarResponseSchema as Ut, AppSlugAvailabilityResponseSchema as V, mapOrganizationMember as Vn, PresignProjectSourceResponseSchema as Vt, CreateApiKeyResponseSchema as W, mapProjectDeployment as Wn, ProjectReachabilityResponseSchema as Wt, CreateOrganizationResponseSchema as X, organizationInvitationAcceptPath as Xn, RecentResourceListResponseSchema as Xt, CreateOrganizationRequestSchema as Y, normalizeUserPreferences as Yn, ProjectSourceResourcesSchema as Yt, CreateProjectArtifactResponseSchema as Z, organizationSlugErrorCodeFromMessage as Zn, RecentResourceSchema as Zt, projectSourceBlobKey as _, UpdateProjectMemberResponseSchema as _n, ListAgentMemoryFilesResponseSchema as _t, isKeystrokeAssetsAvatarPublicUrl as a, StoredProjectSourceManifestSchema as an, defaultHostingPlugin as ar, GetCredentialResponseSchema as at, createJobQueue as b, UploadProjectSourceManifestRequestSchema as bn, ListAppsResponseSchema as bt, isStorageBucketNotFoundError as c, SubmitTeamRequestRequestSchema as cn, __require as cr, GraphqlDiscoverResponseSchema as ct, keystrokeAssetsAvatarKeyFromPublicUrl as d, TriggerRunListQuerySchema as dn, HistoryRunListQuerySchema as dt, SkillSummarySchema as en, projectFileId as er, DEFAULT_TRIGGER_OVERVIEW_MODEL as et, keystrokeAssetsOrgLogoKeyFromPublicUrl as f, UpdateCredentialRequestSchema as fn, HistoryRunListResponseSchema as ft, projectArtifactKey as g, UpdateProjectMemberRequestSchema as gn, InviteProjectMembersResponseSchema as gt, orgLogoStorageKey as h, UpdateOrganizationRequestSchema as hn, InviteProjectMembersRequestSchema as ht, extractRouteManifestFromArtifact as i, StartMcpOAuthConnectionResultSchema as in, validationErrorResponse as ir, ErrorResponseSchema as it, setCredentialInstanceSecret as j, WorkspaceTriggerListResponseSchema as jn, McpDiscoverResponseSchema as jt, deleteCredentialInstanceSecret as k, WorkspaceTriggerDetailSchema as kn, ListProjectsResponseSchema as kt, isStorageNotFoundError as l, SubmitTeamRequestResponseSchema as ln, __toESM as lr, HistoryRunCancelResponseSchema as lt, minioStoragePlugin as m, UpdateOrganizationMemberResponseSchema as mn, InviteOrganizationMembersResponseSchema as mt, createAssetsStorageClient as n, SlugAvailabilityResponseSchema as nn, resolveUniqueCredentialInstanceLabel as nr, DownloadActiveProjectArtifactResponseSchema as nt, isKeystrokeAssetsOrgLogoPublicUrl as o, SubmitMarketingContactRequestSchema as on, pingProjectTarget as or, GetCustomAppResponseSchema as ot, loadProjectSourceFiles as p, UpdateOrganizationMemberRequestSchema as pn, InviteOrganizationMembersRequestSchema as pt, CreateCustomAppRequestSchema as q, mapUserOrganization as qn, ProjectSlugAvailabilityQuerySchema as qt, ensureKeystrokeAssetsBucket as r, StartMcpOAuthConnectionInputSchema as rn, validateCredentialValueAgainstFields as rr, DownloadActiveProjectSourceResponseSchema as rt, isOrgLogoStorageKey as s, SubmitMarketingContactResponseSchema as sn, __commonJSMin as sr, GraphqlDiscoverRequestSchema as st, RouteManifestNotFoundError as t, SlugAvailabilityQuerySchema as tn, resolveExternalPlatformOrigin as tr, DeclineOrganizationInvitationResponseSchema as tt, isUserAvatarStorageKey as u, TriggerAttachmentUpdateRequestSchema as un, HistoryRunDetailResponseSchema as ut, publicKeystrokeAssetsObjectUrl as v, UpdateProjectRequestSchema as vn, ListAgentWorkspaceFilesResponseSchema as vt, decodeOAuthState as w, UserPreferencesPatchSchema as wn, ListOrganizationsResponseSchema as wt, defaultSchedulerPlugin as x, UploadProjectSourceResponseSchema as xn, ListCredentialsResponseSchema as xt, userAvatarStorageKey as y, UpdateProjectSettingsRequestSchema as yn, ListApiKeysResponseSchema as yt, AgentWorkspaceFileSummarySchema as z, listenPortFromPublicUrl as zn, PresignOrgLogoResponseSchema as zt };
43836
43891
 
43837
- //# sourceMappingURL=dist-DQZABv1_.mjs.map
43892
+ //# sourceMappingURL=dist-BqBBzZmZ.mjs.map