difit 4.0.0 → 4.0.1

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 (82) hide show
  1. package/README.ja.md +15 -14
  2. package/README.ko.md +15 -14
  3. package/README.md +15 -14
  4. package/README.zh.md +15 -14
  5. package/dist/cli/index.js +16 -0
  6. package/dist/cli/index.test.js +125 -1
  7. package/dist/client/assets/{_basePickBy-B9N-f0iT.js → _basePickBy-ChXFkTMC.js} +1 -1
  8. package/dist/client/assets/{_baseUniq-tbL7nVvN.js → _baseUniq-Mj_sFFQW.js} +1 -1
  9. package/dist/client/assets/{arc-BOY-7mep.js → arc-BMA6S9F1.js} +1 -1
  10. package/dist/client/assets/{architectureDiagram-2XIMDMQ5-59AvHaSB.js → architectureDiagram-2XIMDMQ5-0uiM_v5K.js} +1 -1
  11. package/dist/client/assets/{blockDiagram-WCTKOSBZ-DXIlumQk.js → blockDiagram-WCTKOSBZ-CM7ZLL6F.js} +1 -1
  12. package/dist/client/assets/{c4Diagram-IC4MRINW-BbfZ0uRn.js → c4Diagram-IC4MRINW-DKtCnVwn.js} +1 -1
  13. package/dist/client/assets/channel-D057yzDp.js +1 -0
  14. package/dist/client/assets/{chunk-4BX2VUAB-l7rcB2IW.js → chunk-4BX2VUAB-Wsl8DxEB.js} +1 -1
  15. package/dist/client/assets/{chunk-55IACEB6-CrZL3qv9.js → chunk-55IACEB6-CHm9X5i7.js} +1 -1
  16. package/dist/client/assets/{chunk-FMBD7UC4-CrKv7ndg.js → chunk-FMBD7UC4-BSa8SHgd.js} +1 -1
  17. package/dist/client/assets/{chunk-JSJVCQXG-DyBDhAEM.js → chunk-JSJVCQXG-Cpk76oJ3.js} +1 -1
  18. package/dist/client/assets/{chunk-KX2RTZJC-By5mkZmU.js → chunk-KX2RTZJC-D8YvfZVu.js} +1 -1
  19. package/dist/client/assets/{chunk-NQ4KR5QH-C30p9xRx.js → chunk-NQ4KR5QH-BogviJOv.js} +1 -1
  20. package/dist/client/assets/{chunk-QZHKN3VN-DVlhR2wU.js → chunk-QZHKN3VN-DwLJYu26.js} +1 -1
  21. package/dist/client/assets/{chunk-WL4C6EOR-Cn7a6CO3.js → chunk-WL4C6EOR-BFDpGxW2.js} +1 -1
  22. package/dist/client/assets/classDiagram-VBA2DB6C---D4iOts.js +1 -0
  23. package/dist/client/assets/classDiagram-v2-RAHNMMFH---D4iOts.js +1 -0
  24. package/dist/client/assets/clone-xSR3otEf.js +1 -0
  25. package/dist/client/assets/{cose-bilkent-S5V4N54A-LyauIk_9.js → cose-bilkent-S5V4N54A-oEosZ_5y.js} +1 -1
  26. package/dist/client/assets/{dagre-KLK3FWXG-DRWb2KE3.js → dagre-KLK3FWXG-gFld4u1H.js} +1 -1
  27. package/dist/client/assets/{diagram-E7M64L7V-ChT6mNWK.js → diagram-E7M64L7V-gJq3kSrf.js} +1 -1
  28. package/dist/client/assets/{diagram-IFDJBPK2-CqbTduoP.js → diagram-IFDJBPK2-BsUm_q22.js} +1 -1
  29. package/dist/client/assets/{diagram-P4PSJMXO-Bzv5Z3ri.js → diagram-P4PSJMXO-juB-sfcR.js} +1 -1
  30. package/dist/client/assets/{erDiagram-INFDFZHY-CvXfUZ4L.js → erDiagram-INFDFZHY-Dn77qXAt.js} +1 -1
  31. package/dist/client/assets/{flowDiagram-PKNHOUZH-CxmpNUKq.js → flowDiagram-PKNHOUZH-DtmvDYdN.js} +1 -1
  32. package/dist/client/assets/{ganttDiagram-A5KZAMGK-9LpZCsg6.js → ganttDiagram-A5KZAMGK-BlDaKLbQ.js} +1 -1
  33. package/dist/client/assets/{gitGraphDiagram-K3NZZRJ6-C6yZOrQJ.js → gitGraphDiagram-K3NZZRJ6-DeAAeuMS.js} +1 -1
  34. package/dist/client/assets/{graph-bUZ7uHLW.js → graph-NX9gBP47.js} +1 -1
  35. package/dist/client/assets/{index-BLNN1bfE.js → index-kJdw4DY-.js} +15 -15
  36. package/dist/client/assets/{infoDiagram-LFFYTUFH-Djdy3W21.js → infoDiagram-LFFYTUFH-CAaX023c.js} +1 -1
  37. package/dist/client/assets/{ishikawaDiagram-PHBUUO56-oOdwCpeS.js → ishikawaDiagram-PHBUUO56-CmiTQStv.js} +1 -1
  38. package/dist/client/assets/{journeyDiagram-4ABVD52K-DTb_nGAw.js → journeyDiagram-4ABVD52K-B0SHC7mz.js} +1 -1
  39. package/dist/client/assets/{kanban-definition-K7BYSVSG-CMtP7pHA.js → kanban-definition-K7BYSVSG-IfRdhzz7.js} +1 -1
  40. package/dist/client/assets/{layout-CXr5MatK.js → layout-l3OdNQhJ.js} +1 -1
  41. package/dist/client/assets/{linear-pOMS9pjV.js → linear-CQ0hx5Qs.js} +1 -1
  42. package/dist/client/assets/{mermaid.core-DV5JJ1Ie.js → mermaid.core-DqlPTabt.js} +4 -4
  43. package/dist/client/assets/{mindmap-definition-YRQLILUH-DN-sbonc.js → mindmap-definition-YRQLILUH-DIgSmG_f.js} +1 -1
  44. package/dist/client/assets/{pieDiagram-SKSYHLDU-tAHCkgh1.js → pieDiagram-SKSYHLDU-FzM5qoIB.js} +1 -1
  45. package/dist/client/assets/{prism-csharp-5CQ0RcEE.js → prism-csharp-DCfUUOUs.js} +1 -1
  46. package/dist/client/assets/{prism-elixir-BSOTyVg2.js → prism-elixir-riuOL1mm.js} +1 -1
  47. package/dist/client/assets/{prism-hcl-BYvi1mtM.js → prism-hcl-CizuX1s4.js} +1 -1
  48. package/dist/client/assets/{prism-java-DMU2FM4X.js → prism-java-DYCKrDUh.js} +1 -1
  49. package/dist/client/assets/{prism-perl-CpfvaEQk.js → prism-perl-BJwBYR3Y.js} +1 -1
  50. package/dist/client/assets/{prism-php-SC920LoD.js → prism-php-BMhFuA7y.js} +1 -1
  51. package/dist/client/assets/{prism-ruby-DZph-YiO.js → prism-ruby-Bcu0cDEh.js} +1 -1
  52. package/dist/client/assets/{prism-solidity-qTLbmiAT.js → prism-solidity-DDDs3w-w.js} +1 -1
  53. package/dist/client/assets/{quadrantDiagram-337W2JSQ-B0wODmgR.js → quadrantDiagram-337W2JSQ-BBrApyD7.js} +1 -1
  54. package/dist/client/assets/{requirementDiagram-Z7DCOOCP-A3aeHC06.js → requirementDiagram-Z7DCOOCP-CLXiwUaA.js} +1 -1
  55. package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-BWa6kZhG.js → sankeyDiagram-WA2Y5GQK-9Y3Ly5qe.js} +1 -1
  56. package/dist/client/assets/{sequenceDiagram-2WXFIKYE-Cx_COX9G.js → sequenceDiagram-2WXFIKYE-DEpX1BA5.js} +1 -1
  57. package/dist/client/assets/{stateDiagram-RAJIS63D-BXGnN6rZ.js → stateDiagram-RAJIS63D-Ck3ullwA.js} +1 -1
  58. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-X6UiDsar.js +1 -0
  59. package/dist/client/assets/{timeline-definition-YZTLITO2-DbqaUm9k.js → timeline-definition-YZTLITO2-CMezf3XV.js} +1 -1
  60. package/dist/client/assets/{treemap-KZPCXAKY-CfEujPCR.js → treemap-KZPCXAKY-DqrcV0gQ.js} +1 -1
  61. package/dist/client/assets/{vennDiagram-LZ73GAT5-CqJE8CAD.js → vennDiagram-LZ73GAT5-eQg945Fz.js} +1 -1
  62. package/dist/client/assets/{xychartDiagram-JWTSCODW-CfdDvzHC.js → xychartDiagram-JWTSCODW-_hqdXeX1.js} +1 -1
  63. package/dist/client/index.html +1 -1
  64. package/dist/server/git-diff-tui.d.ts +1 -1
  65. package/dist/server/git-diff-tui.js +7 -5
  66. package/dist/server/git-diff-tui.test.d.ts +1 -0
  67. package/dist/server/git-diff-tui.test.js +60 -0
  68. package/dist/server/git-diff.d.ts +3 -1
  69. package/dist/server/git-diff.js +40 -3
  70. package/dist/server/git-diff.test.js +20 -0
  71. package/dist/server/server.d.ts +1 -0
  72. package/dist/server/server.js +4 -3
  73. package/dist/server/server.test.js +32 -0
  74. package/dist/tui/App.d.ts +1 -0
  75. package/dist/tui/App.js +2 -2
  76. package/dist/types/diff.d.ts +1 -0
  77. package/package.json +1 -1
  78. package/dist/client/assets/channel-cZXsTJxA.js +0 -1
  79. package/dist/client/assets/classDiagram-VBA2DB6C-B_coIPEy.js +0 -1
  80. package/dist/client/assets/classDiagram-v2-RAHNMMFH-B_coIPEy.js +0 -1
  81. package/dist/client/assets/clone-BjaT2HOk.js +0 -1
  82. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-CMw3xNha.js +0 -1
package/README.ja.md CHANGED
@@ -136,20 +136,21 @@ git diff --cached | difit -
136
136
 
137
137
  ## ⚙️ CLIオプション
138
138
 
139
- | フラグ | デフォルト | 説明 |
140
- | --------------------- | ---------- | --------------------------------------------------------------------------------- |
141
- | `<target>` | HEAD | コミットハッシュ、タグ、HEAD~n、ブランチ、または特別な引数 |
142
- | `[compare-with]` | - | 比較対象の2番目のコミット(2つの間のdiffを表示) |
143
- | `--pr <url>` | - | レビューするGitHub PRのURL(例:https://github.com/owner/repo/pull/123) |
144
- | `--comment <json>` | - | 起動時に初期コメントを注入(複数指定可。JSON object または array を受け付ける) |
145
- | `--port` | 4966 | 優先ポート。使用中の場合は+1にフォールバック |
146
- | `--host` | 127.0.0.1 | サーバーをバインドするホストアドレス(外部からアクセスしたい場合は0.0.0.0を指定) |
147
- | `--no-open` | false | ブラウザを自動的に開かない |
148
- | `--mode` | split | 表示モード。`unified`または`split` |
149
- | `--tui` | false | WebUIの代わりにターミナルUIを使用 |
150
- | `--clean` | false | 起動時に既存コメントと閲覧済みファイルをすべてクリア |
151
- | `--include-untracked` | false | diffにuntrackedファイルを自動的に含める(`.`または`working`のみ有効) |
152
- | `--keep-alive` | false | ブラウザ切断後もサーバーを終了せず起動したままにする(Ctrl+Cで手動停止) |
139
+ | フラグ | デフォルト | 説明 |
140
+ | --------------------- | --------------- | ------------------------------------------------------------------------------------------ |
141
+ | `<target>` | HEAD | コミットハッシュ、タグ、HEAD~n、ブランチ、または特別な引数 |
142
+ | `[compare-with]` | - | 比較対象の2番目のコミット(2つの間のdiffを表示) |
143
+ | `--pr <url>` | - | レビューするGitHub PRのURL(例:https://github.com/owner/repo/pull/123) |
144
+ | `--comment <json>` | - | 起動時に初期コメントを注入(複数指定可。JSON object または array を受け付ける) |
145
+ | `--port` | 4966 | 優先ポート。使用中の場合は+1にフォールバック |
146
+ | `--host` | 127.0.0.1 | サーバーをバインドするホストアドレス(外部からアクセスしたい場合は0.0.0.0を指定) |
147
+ | `--no-open` | false | ブラウザを自動的に開かない |
148
+ | `--mode` | split | 表示モード。`unified`または`split` |
149
+ | `--tui` | false | WebUIの代わりにターミナルUIを使用 |
150
+ | `--clean` | false | 起動時に既存コメントと閲覧済みファイルをすべてクリア |
151
+ | `--include-untracked` | false | diffにuntrackedファイルを自動的に含める(`.`または`working`のみ有効) |
152
+ | `--keep-alive` | false | ブラウザ切断後もサーバーを終了せず起動したままにする(Ctrl+Cで手動停止) |
153
+ | `--context <lines>` | Gitの既定値 (3) | 変更ごとの前後コンテキスト行数を制限(`0` は変更行のみ表示。`--pr` と stdin では使用不可) |
153
154
 
154
155
  ## 💬 コメントシステム
155
156
 
package/README.ko.md CHANGED
@@ -136,20 +136,21 @@ git diff --cached | difit -
136
136
 
137
137
  ## ⚙️ CLI 옵션
138
138
 
139
- | 플래그 | 기본값 | 설명 |
140
- | --------------------- | --------- | ----------------------------------------------------------------- |
141
- | `<target>` | HEAD | 커밋 해시, 태그, HEAD~n, 브랜치 또는 특수 인수 |
142
- | `[compare-with]` | - | 비교할 선택적 두 번째 커밋 (둘 사이의 diff 표시) |
143
- | `--pr <url>` | - | 검토할 GitHub PR URL (예: https://github.com/owner/repo/pull/123) |
144
- | `--comment <json>` | - | 초기 코멘트 주입 (반복 가능; JSON object 또는 array 허용) |
145
- | `--port` | 4966 | 선호 포트; 사용 중인 경우 +1로 대체 |
146
- | `--host` | 127.0.0.1 | 서버를 바인딩할 호스트 주소 (외부 액세스는 0.0.0.0 사용) |
147
- | `--no-open` | false | 브라우저를 자동으로 열지 않음 |
148
- | `--mode` | split | 표시 모드: `unified` 또는 `split` |
149
- | `--tui` | false | WebUI 대신 터미널 UI 모드 사용 |
150
- | `--clean` | false | 시작 시 모든 기존 코멘트와 열람된 파일 표시 초기화 |
151
- | `--include-untracked` | false | diff에 untracked 파일 자동 포함 (`.` 또는 `working`에서만 유효) |
152
- | `--keep-alive` | false | 브라우저 연결이 끊겨도 서버 유지 (Ctrl+C로 수동 종료) |
139
+ | 플래그 | 기본값 | 설명 |
140
+ | --------------------- | -------------- | --------------------------------------------------------------------------------------------- |
141
+ | `<target>` | HEAD | 커밋 해시, 태그, HEAD~n, 브랜치 또는 특수 인수 |
142
+ | `[compare-with]` | - | 비교할 선택적 두 번째 커밋 (둘 사이의 diff 표시) |
143
+ | `--pr <url>` | - | 검토할 GitHub PR URL (예: https://github.com/owner/repo/pull/123) |
144
+ | `--comment <json>` | - | 초기 코멘트 주입 (반복 가능; JSON object 또는 array 허용) |
145
+ | `--port` | 4966 | 선호 포트; 사용 중인 경우 +1로 대체 |
146
+ | `--host` | 127.0.0.1 | 서버를 바인딩할 호스트 주소 (외부 액세스는 0.0.0.0 사용) |
147
+ | `--no-open` | false | 브라우저를 자동으로 열지 않음 |
148
+ | `--mode` | split | 표시 모드: `unified` 또는 `split` |
149
+ | `--tui` | false | WebUI 대신 터미널 UI 모드 사용 |
150
+ | `--clean` | false | 시작 시 모든 기존 코멘트와 열람된 파일 표시 초기화 |
151
+ | `--include-untracked` | false | diff에 untracked 파일 자동 포함 (`.` 또는 `working`에서만 유효) |
152
+ | `--keep-alive` | false | 브라우저 연결이 끊겨도 서버 유지 (Ctrl+C로 수동 종료) |
153
+ | `--context <lines>` | Git 기본값 (3) | 변경 주변의 컨텍스트 줄 수를 제한 (`0`이면 변경된 줄만 표시, `--pr` 및 stdin에서는 사용 불가) |
153
154
 
154
155
  ## 💬 코멘트 시스템
155
156
 
package/README.md CHANGED
@@ -136,20 +136,21 @@ Stdin mode is selected with intent-first rules:
136
136
 
137
137
  ## ⚙️ CLI Options
138
138
 
139
- | Flag | Default | Description |
140
- | --------------------- | --------- | -------------------------------------------------------------------------- |
141
- | `<target>` | HEAD | Commit hash, tag, HEAD~n, branch, or special arguments |
142
- | `[compare-with]` | - | Optional second commit to compare with (shows diff between the two) |
143
- | `--pr <url>` | - | GitHub PR URL to review (e.g., https://github.com/owner/repo/pull/123) |
144
- | `--comment <json>` | - | Inject initial comments (repeatable; accepts a JSON object or array) |
145
- | `--port` | 4966 | Preferred port; falls back to +1 if occupied |
146
- | `--host` | 127.0.0.1 | Host address to bind server to (use 0.0.0.0 for external access) |
147
- | `--no-open` | false | Don't automatically open browser |
148
- | `--mode` | split | Display mode: `unified` or `split` |
149
- | `--tui` | false | Use terminal UI mode instead of WebUI |
150
- | `--clean` | false | Clear all existing comments and viewed files on startup |
151
- | `--include-untracked` | false | Automatically include untracked files in diff (only with `.` or `working`) |
152
- | `--keep-alive` | false | Keep server running after browser disconnects (stop manually with Ctrl+C) |
139
+ | Flag | Default | Description |
140
+ | --------------------- | --------------- | ------------------------------------------------------------------------------------------------------- |
141
+ | `<target>` | HEAD | Commit hash, tag, HEAD~n, branch, or special arguments |
142
+ | `[compare-with]` | - | Optional second commit to compare with (shows diff between the two) |
143
+ | `--pr <url>` | - | GitHub PR URL to review (e.g., https://github.com/owner/repo/pull/123) |
144
+ | `--comment <json>` | - | Inject initial comments (repeatable; accepts a JSON object or array) |
145
+ | `--port` | 4966 | Preferred port; falls back to +1 if occupied |
146
+ | `--host` | 127.0.0.1 | Host address to bind server to (use 0.0.0.0 for external access) |
147
+ | `--no-open` | false | Don't automatically open browser |
148
+ | `--mode` | split | Display mode: `unified` or `split` |
149
+ | `--tui` | false | Use terminal UI mode instead of WebUI |
150
+ | `--clean` | false | Clear all existing comments and viewed files on startup |
151
+ | `--include-untracked` | false | Automatically include untracked files in diff (only with `.` or `working`) |
152
+ | `--keep-alive` | false | Keep server running after browser disconnects (stop manually with Ctrl+C) |
153
+ | `--context <lines>` | git default (3) | Limit surrounding context lines per change (`0` shows changes only; not available with `--pr` or stdin) |
153
154
 
154
155
  ## 💬 Comment System
155
156
 
package/README.zh.md CHANGED
@@ -136,20 +136,21 @@ git diff --cached | difit -
136
136
 
137
137
  ## ⚙️ CLI 选项
138
138
 
139
- | 标志 | 默认值 | 描述 |
140
- | --------------------- | --------- | ---------------------------------------------------------------------- |
141
- | `<target>` | HEAD | 提交哈希、标签、HEAD~n、分支或特殊参数 |
142
- | `[compare-with]` | - | 要比较的可选第二个提交(显示两者之间的差异) |
143
- | `--pr <url>` | - | 要审查的 GitHub PR URL(例如:https://github.com/owner/repo/pull/123) |
144
- | `--comment <json>` | - | 注入初始评论(可重复指定;接受 JSON object 或 array) |
145
- | `--port` | 4966 | 首选端口;如果被占用则回退到 +1 |
146
- | `--host` | 127.0.0.1 | 绑定服务器的主机地址(使用 0.0.0.0 进行外部访问) |
147
- | `--no-open` | false | 不自动打开浏览器 |
148
- | `--mode` | split | 显示模式:`unified` 或 `split` |
149
- | `--tui` | false | 使用终端 UI 模式而不是 WebUI |
150
- | `--clean` | false | 启动时清除所有现有评论和已查看的文件 |
151
- | `--include-untracked` | false | 自动将 untracked 文件包含在 diff 中(仅在 `.` 或 `working` 时有效) |
152
- | `--keep-alive` | false | 浏览器断开后保持服务器运行(使用 Ctrl+C 手动停止) |
139
+ | 标志 | 默认值 | 描述 |
140
+ | --------------------- | -------------- | --------------------------------------------------------------------------------- |
141
+ | `<target>` | HEAD | 提交哈希、标签、HEAD~n、分支或特殊参数 |
142
+ | `[compare-with]` | - | 要比较的可选第二个提交(显示两者之间的差异) |
143
+ | `--pr <url>` | - | 要审查的 GitHub PR URL(例如:https://github.com/owner/repo/pull/123) |
144
+ | `--comment <json>` | - | 注入初始评论(可重复指定;接受 JSON object 或 array) |
145
+ | `--port` | 4966 | 首选端口;如果被占用则回退到 +1 |
146
+ | `--host` | 127.0.0.1 | 绑定服务器的主机地址(使用 0.0.0.0 进行外部访问) |
147
+ | `--no-open` | false | 不自动打开浏览器 |
148
+ | `--mode` | split | 显示模式:`unified` 或 `split` |
149
+ | `--tui` | false | 使用终端 UI 模式而不是 WebUI |
150
+ | `--clean` | false | 启动时清除所有现有评论和已查看的文件 |
151
+ | `--include-untracked` | false | 自动将 untracked 文件包含在 diff 中(仅在 `.` 或 `working` 时有效) |
152
+ | `--keep-alive` | false | 浏览器断开后保持服务器运行(使用 Ctrl+C 手动停止) |
153
+ | `--context <lines>` | Git 默认值 (3) | 限制每处变更周围的上下文行数(`0` 仅显示变更行;不可与 `--pr` 或 stdin 一起使用) |
153
154
 
154
155
  ## 💬 评论系统
155
156
 
package/dist/cli/index.js CHANGED
@@ -46,12 +46,18 @@ program
46
46
  .option('--clean', 'start with a clean slate by clearing all existing comments')
47
47
  .option('--include-untracked', 'automatically include untracked files in diff')
48
48
  .option('--keep-alive', 'keep server running even after browser disconnects')
49
+ .option('--context <lines>', 'number of context lines shown around each change', parseInt)
49
50
  .action(async (commitish, compareWith, options) => {
50
51
  try {
51
52
  let stdinDiff;
52
53
  let stdinReviewLabel = 'diff from stdin';
53
54
  let manualCommentImports = [];
54
55
  let commentImports = [];
56
+ if (options.context !== undefined &&
57
+ (!Number.isInteger(options.context) || options.context < 0)) {
58
+ console.error('Error: --context must be a non-negative integer');
59
+ process.exit(1);
60
+ }
55
61
  try {
56
62
  manualCommentImports = parseCommentOptions(options.comment);
57
63
  commentImports = manualCommentImports;
@@ -69,6 +75,10 @@ program
69
75
  console.error('Error: --pr option cannot be used with --tui');
70
76
  process.exit(1);
71
77
  }
78
+ if (options.context !== undefined) {
79
+ console.error('Error: --context option cannot be used with --pr');
80
+ process.exit(1);
81
+ }
72
82
  try {
73
83
  stdinDiff = getPrPatch(options.pr);
74
84
  stdinReviewLabel = options.pr;
@@ -94,6 +104,10 @@ program
94
104
  hasTuiOption: Boolean(options.tui),
95
105
  });
96
106
  if (readFromStdin) {
107
+ if (options.context !== undefined) {
108
+ console.error('Error: --context option cannot be used with stdin diff');
109
+ process.exit(1);
110
+ }
97
111
  // Read unified diff from stdin
98
112
  stdinDiff = await readStdin();
99
113
  if (!stdinDiff.trim()) {
@@ -174,6 +188,7 @@ program
174
188
  baseCommitish,
175
189
  mode: options.mode,
176
190
  repoPath,
191
+ contextLines: options.context,
177
192
  }));
178
193
  return;
179
194
  }
@@ -191,6 +206,7 @@ program
191
206
  mode: options.mode,
192
207
  clearComments: options.clean,
193
208
  keepAlive: options.keepAlive,
209
+ contextLines: options.context,
194
210
  diffMode: determineDiffMode(targetCommitish, compareWith),
195
211
  repoPath,
196
212
  ...(commentImports.length > 0 ? { commentImports } : {}),
@@ -22,7 +22,7 @@ vi.mock('./github.js', () => ({
22
22
  }));
23
23
  const { simpleGit } = await import('simple-git');
24
24
  const { startServer } = await import('../server/server.js');
25
- const { promptUser, findUntrackedFiles, markFilesIntentToAdd, parseCommentOptions } = await import('./utils.js');
25
+ const { promptUser, findUntrackedFiles, markFilesIntentToAdd, parseCommentOptions, shouldReadStdin, } = await import('./utils.js');
26
26
  const { getPrPatch, getPrCommentImports } = await import('./github.js');
27
27
  describe('CLI index.ts', () => {
28
28
  let mockGit;
@@ -213,6 +213,11 @@ describe('CLI index.ts', () => {
213
213
  args: ['--keep-alive'],
214
214
  expectedOptions: { keepAlive: true },
215
215
  },
216
+ {
217
+ name: '--context option',
218
+ args: ['--context', '5'],
219
+ expectedOptions: { context: 5 },
220
+ },
216
221
  ])('$name', async ({ args, expectedOptions }) => {
217
222
  mockFindUntrackedFiles.mockResolvedValue([]);
218
223
  const program = new Command();
@@ -227,6 +232,7 @@ describe('CLI index.ts', () => {
227
232
  .option('--pr <url>', 'pr')
228
233
  .option('--clean', 'start with a clean slate by clearing all existing comments')
229
234
  .option('--keep-alive', 'keep server running even after browser disconnects')
235
+ .option('--context <lines>', 'context', parseInt)
230
236
  .action(async (commitish, _compareWith, options) => {
231
237
  let targetCommitish = commitish;
232
238
  let baseCommitish = commitish + '^';
@@ -239,6 +245,7 @@ describe('CLI index.ts', () => {
239
245
  mode: options.mode,
240
246
  clearComments: options.clean,
241
247
  keepAlive: options.keepAlive,
248
+ contextLines: options.context,
242
249
  });
243
250
  });
244
251
  await program.parseAsync([...args], { from: 'user' });
@@ -251,10 +258,91 @@ describe('CLI index.ts', () => {
251
258
  mode: expectedOptions.mode || 'split',
252
259
  clearComments: expectedOptions.clean,
253
260
  keepAlive: expectedOptions.keepAlive,
261
+ contextLines: expectedOptions.context,
254
262
  };
255
263
  expect(mockStartServer).toHaveBeenCalledWith(expectedCall);
256
264
  });
257
265
  });
266
+ describe('--context option', () => {
267
+ it('rejects negative values', async () => {
268
+ const program = new Command();
269
+ program
270
+ .argument('[commit-ish]', 'commit-ish', 'HEAD')
271
+ .argument('[compare-with]', 'compare-with')
272
+ .option('--context <lines>', 'context', parseInt)
273
+ .action(async (commitish, _compareWith, options) => {
274
+ if (options.context !== undefined &&
275
+ (!Number.isInteger(options.context) || options.context < 0)) {
276
+ console.error('Error: --context must be a non-negative integer');
277
+ process.exit(1);
278
+ return;
279
+ }
280
+ await startServer({
281
+ targetCommitish: commitish,
282
+ baseCommitish: `${commitish}^`,
283
+ contextLines: options.context,
284
+ });
285
+ });
286
+ await program.parseAsync(['--context', '-1'], { from: 'user' });
287
+ expect(console.error).toHaveBeenCalledWith('Error: --context must be a non-negative integer');
288
+ expect(process.exit).toHaveBeenCalledWith(1);
289
+ expect(mockStartServer).not.toHaveBeenCalled();
290
+ });
291
+ it('rejects --context with --pr', async () => {
292
+ const prUrl = 'https://github.com/owner/repo/pull/123';
293
+ const program = new Command();
294
+ program
295
+ .argument('[commit-ish]', 'commit-ish', 'HEAD')
296
+ .argument('[compare-with]', 'compare-with')
297
+ .option('--context <lines>', 'context', parseInt)
298
+ .option('--pr <url>', 'pr')
299
+ .action(async (_commitish, _compareWith, options) => {
300
+ if (options.pr && options.context !== undefined) {
301
+ console.error('Error: --context option cannot be used with --pr');
302
+ process.exit(1);
303
+ return;
304
+ }
305
+ await startServer({
306
+ stdinDiff: getPrPatch(options.pr),
307
+ contextLines: options.context,
308
+ });
309
+ });
310
+ await program.parseAsync(['--pr', prUrl, '--context', '3'], { from: 'user' });
311
+ expect(console.error).toHaveBeenCalledWith('Error: --context option cannot be used with --pr');
312
+ expect(process.exit).toHaveBeenCalledWith(1);
313
+ expect(mockGetPrPatch).not.toHaveBeenCalled();
314
+ expect(mockStartServer).not.toHaveBeenCalled();
315
+ });
316
+ it('rejects --context with stdin diff', async () => {
317
+ const program = new Command();
318
+ program
319
+ .argument('[commit-ish]', 'commit-ish', 'HEAD')
320
+ .argument('[compare-with]', 'compare-with')
321
+ .option('--context <lines>', 'context', parseInt)
322
+ .option('--tui', 'tui')
323
+ .action(async (commitish, _compareWith, options) => {
324
+ const readFromStdin = shouldReadStdin({
325
+ commitish,
326
+ hasPositionalArgs: program.args.length > 0,
327
+ hasPrOption: false,
328
+ hasTuiOption: Boolean(options.tui),
329
+ });
330
+ if (readFromStdin && options.context !== undefined) {
331
+ console.error('Error: --context option cannot be used with stdin diff');
332
+ process.exit(1);
333
+ return;
334
+ }
335
+ await startServer({
336
+ stdinDiff: 'diff --git a/file.ts b/file.ts',
337
+ contextLines: options.context,
338
+ });
339
+ });
340
+ await program.parseAsync(['-', '--context', '3'], { from: 'user' });
341
+ expect(console.error).toHaveBeenCalledWith('Error: --context option cannot be used with stdin diff');
342
+ expect(process.exit).toHaveBeenCalledWith(1);
343
+ expect(mockStartServer).not.toHaveBeenCalled();
344
+ });
345
+ });
258
346
  describe('Version option', () => {
259
347
  it('supports --version flag', async () => {
260
348
  const program = new Command();
@@ -1074,6 +1162,42 @@ describe('CLI index.ts', () => {
1074
1162
  },
1075
1163
  });
1076
1164
  });
1165
+ it('passes context option to TUI app', async () => {
1166
+ mockFindUntrackedFiles.mockResolvedValue([]);
1167
+ const program = new Command();
1168
+ program
1169
+ .argument('[commit-ish]', 'commit-ish', 'HEAD')
1170
+ .argument('[compare-with]', 'compare-with')
1171
+ .option('--port <port>', 'port', parseInt)
1172
+ .option('--host <host>', 'host', '')
1173
+ .option('--no-open', 'no-open')
1174
+ .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1175
+ .option('--context <lines>', 'context', parseInt)
1176
+ .option('--tui', 'tui')
1177
+ .option('--pr <url>', 'pr')
1178
+ .action(async (commitish, _compareWith, options) => {
1179
+ if (options.tui) {
1180
+ const { render } = await import('ink');
1181
+ const { default: TuiApp } = await import('../tui/App.js');
1182
+ render(React.createElement(TuiApp, {
1183
+ targetCommitish: commitish,
1184
+ baseCommitish: commitish + '^',
1185
+ mode: options.mode,
1186
+ contextLines: options.context,
1187
+ }));
1188
+ }
1189
+ });
1190
+ await program.parseAsync(['--tui', '--context', '2'], { from: 'user' });
1191
+ expect(mockRender).toHaveBeenCalledWith({
1192
+ component: mockTuiApp,
1193
+ props: {
1194
+ targetCommitish: 'HEAD',
1195
+ baseCommitish: 'HEAD^',
1196
+ mode: 'split',
1197
+ contextLines: 2,
1198
+ },
1199
+ });
1200
+ });
1077
1201
  it('passes mode option to TUI app', async () => {
1078
1202
  mockFindUntrackedFiles.mockResolvedValue([]);
1079
1203
  const program = new Command();
@@ -1 +1 @@
1
- import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-tbL7nVvN.js";import{aT as g,at as $,aU as E,aV as F,aW as M,aX as l,aY as T,aZ as B,a_ as y,a$ as S}from"./mermaid.core-DV5JJ1Ie.js";var G=/\s/;function H(n){for(var r=n.length;r--&&G.test(n.charAt(r)););return r}var L=/^\s+/;function R(n){return n&&n.slice(0,H(n)+1).replace(L,"")}var o=NaN,W=/^[-+]0x[0-9a-f]+$/i,X=/^0b[01]+$/i,Y=/^0o[0-7]+$/i,q=parseInt;function z(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=R(n);var t=X.test(n);return t||Y.test(n)?q(n.slice(2),t?2:8):W.test(n)?o:+n}var v=1/0,C=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=z(n),n===v||n===-v){var r=n<0?-1:1;return r*C}return n===n?n:0}function U(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var b=Object.prototype,Z=b.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,b[u])&&!Z.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function D(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var J=Math.max;function Q(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:U(t);return a<0&&(a=J(i+a,0)),p(n,m(r),a)}var hn=D(Q);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=T(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,B,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,U as j,un as l,gn as m,K as t};
1
+ import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-Mj_sFFQW.js";import{aT as g,at as $,aU as E,aV as F,aW as M,aX as l,aY as T,aZ as B,a_ as y,a$ as S}from"./mermaid.core-DqlPTabt.js";var G=/\s/;function H(n){for(var r=n.length;r--&&G.test(n.charAt(r)););return r}var L=/^\s+/;function R(n){return n&&n.slice(0,H(n)+1).replace(L,"")}var o=NaN,W=/^[-+]0x[0-9a-f]+$/i,X=/^0b[01]+$/i,Y=/^0o[0-7]+$/i,q=parseInt;function z(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=R(n);var t=X.test(n);return t||Y.test(n)?q(n.slice(2),t?2:8):W.test(n)?o:+n}var v=1/0,C=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=z(n),n===v||n===-v){var r=n<0?-1:1;return r*C}return n===n?n:0}function U(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var b=Object.prototype,Z=b.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,b[u])&&!Z.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function D(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var J=Math.max;function Q(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:U(t);return a<0&&(a=J(i+a,0)),p(n,m(r),a)}var hn=D(Q);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=T(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,B,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,U as j,un as l,gn as m,K as t};
@@ -1 +1 @@
1
- import{bg as S,bh as Rn,aY as T,bi as w,bj as xn,bk as mn,aX as sn,bl as Cn,bm as un,bn as x,aV as B,bo as Mn,bp as on,bq as Fn,br as E,be as gn,bs as R,aT as ln,bt as Dn,bu as D,bv as Gn,bw as Bn,bx as _,a$ as Un,by as Nn,aW as Kn,bz as X,bA as jn,bB as Hn,a_ as qn,aZ as cn,bc as Yn,bC as C}from"./mermaid.core-DV5JJ1Ie.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,B(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,B,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Br="[object Int16Array]",Ur="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Er:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Br:case Ur:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Sr(n)}}var Yr="[object Map]";function Zr(n){return S(n)&&E(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Bn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?B:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Be="[object Set]",Ue="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Be:var u=t&Re;if(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,U as e,_t as f,Ln as g,Jn as h,Et as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
1
+ import{bg as S,bh as Rn,aY as T,bi as w,bj as xn,bk as mn,aX as sn,bl as Cn,bm as un,bn as x,aV as B,bo as Mn,bp as on,bq as Fn,br as E,be as gn,bs as R,aT as ln,bt as Dn,bu as D,bv as Gn,bw as Bn,bx as _,a$ as Un,by as Nn,aW as Kn,bz as X,bA as jn,bB as Hn,a_ as qn,aZ as cn,bc as Yn,bC as C}from"./mermaid.core-DqlPTabt.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,B(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,B,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Br="[object Int16Array]",Ur="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Er:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Br:case Ur:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Sr(n)}}var Yr="[object Map]";function Zr(n){return S(n)&&E(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Bn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?B:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Be="[object Set]",Ue="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Be:var u=t&Re;if(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,U as e,_t as f,Ln as g,Jn as h,Et as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
@@ -1 +1 @@
1
- import{X as ln,Y as an,$ as C,a0 as q,a1 as $,a2 as un,a3 as y,a4 as tn,a5 as H,a6 as _,a7 as rn,a8 as o,a9 as sn,aa as on,ab as fn}from"./mermaid.core-DV5JJ1Ie.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,j,a){var O=I-l,i=D-h,n=j-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function Q(l,h,I,D,v,A,j){var a=l-I,O=h-D,i=(j?A:-A)/H(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,z=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*H(on(0,T*T*R-P*P)),X=(P*g-m*S)/R,Y=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=X-z,e=Y-t,r=w-z,B=p-t;return x*x+e*e>r*r+B*B&&(X=w,Y=p),{cx:X,cy:Y,x01:-n,y01:-d,x11:X*(v/T-1),y11:Y*(v/T-1)}}function hn(){var l=cn,h=yn,I=$(0),D=null,v=gn,A=dn,j=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,z=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(z>tn-y)a.moveTo(s*C(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*C(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=z,S=z,X=j.apply(this,arguments)/2,Y=X>y&&(D?+D.apply(this,arguments):H(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(Y>y){var B=sn(Y/u*q(X)),J=sn(Y/s*q(X));(P-=B*2)>y?(B*=t?1:-1,R+=B,T-=B):(P=0,R=T=(f+c)/2),(S-=J*2)>y?(J*=t?1:-1,m+=J,g-=J):(S=0,m=g=(f+c)/2)}var F=s*C(m),G=s*q(m),K=u*C(T),L=u*q(T);if(w>y){var M=s*C(g),N=s*q(g),U=u*C(R),V=u*q(R),E;if(z<an)if(E=pn(F,G,U,V,M,N,K,L)){var W=F-E[0],Z=G-E[1],b=M-E[0],k=N-E[1],nn=1/q(fn((W*b+Z*k)/(H(W*W+Z*Z)*H(b*b+k*k)))/2),en=H(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=Q(U,V,F,G,s,x,t),r=Q(M,N,K,L,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(F,G),a.arc(0,0,s,m,g,!t)):a.moveTo(F,G),!(u>y)||!(P>y)?a.lineTo(K,L):p>y?(e=Q(K,L,M,N,u,-p,t),r=Q(F,G,U,V,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[C(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:$(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:$(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:$(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:$(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:$(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:$(+n),i):A},i.padAngle=function(n){return arguments.length?(j=typeof n=="function"?n:$(+n),i):j},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{X as ln,Y as an,$ as C,a0 as q,a1 as $,a2 as un,a3 as y,a4 as tn,a5 as H,a6 as _,a7 as rn,a8 as o,a9 as sn,aa as on,ab as fn}from"./mermaid.core-DqlPTabt.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,j,a){var O=I-l,i=D-h,n=j-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function Q(l,h,I,D,v,A,j){var a=l-I,O=h-D,i=(j?A:-A)/H(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,z=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*H(on(0,T*T*R-P*P)),X=(P*g-m*S)/R,Y=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=X-z,e=Y-t,r=w-z,B=p-t;return x*x+e*e>r*r+B*B&&(X=w,Y=p),{cx:X,cy:Y,x01:-n,y01:-d,x11:X*(v/T-1),y11:Y*(v/T-1)}}function hn(){var l=cn,h=yn,I=$(0),D=null,v=gn,A=dn,j=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,z=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(z>tn-y)a.moveTo(s*C(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*C(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=z,S=z,X=j.apply(this,arguments)/2,Y=X>y&&(D?+D.apply(this,arguments):H(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(Y>y){var B=sn(Y/u*q(X)),J=sn(Y/s*q(X));(P-=B*2)>y?(B*=t?1:-1,R+=B,T-=B):(P=0,R=T=(f+c)/2),(S-=J*2)>y?(J*=t?1:-1,m+=J,g-=J):(S=0,m=g=(f+c)/2)}var F=s*C(m),G=s*q(m),K=u*C(T),L=u*q(T);if(w>y){var M=s*C(g),N=s*q(g),U=u*C(R),V=u*q(R),E;if(z<an)if(E=pn(F,G,U,V,M,N,K,L)){var W=F-E[0],Z=G-E[1],b=M-E[0],k=N-E[1],nn=1/q(fn((W*b+Z*k)/(H(W*W+Z*Z)*H(b*b+k*k)))/2),en=H(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=Q(U,V,F,G,s,x,t),r=Q(M,N,K,L,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(F,G),a.arc(0,0,s,m,g,!t)):a.moveTo(F,G),!(u>y)||!(P>y)?a.lineTo(K,L):p>y?(e=Q(K,L,M,N,u,-p,t),r=Q(F,G,U,V,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[C(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:$(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:$(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:$(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:$(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:$(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:$(+n),i):A},i.padAngle=function(n){return arguments.length?(j=typeof n=="function"?n:$(+n),i):j},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};