@hienlh/ppm 0.23.13 → 0.23.15

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 (1218) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/CLAUDE.md +19 -4
  3. package/THIRD-PARTY-NOTICES.md +1 -1
  4. package/assets/skills/ppm/SKILL.md +3 -2
  5. package/assets/skills/ppm/references/cli-reference.md +4 -4
  6. package/assets/skills/ppm/references/common-tasks.md +6 -0
  7. package/assets/skills/ppm/references/http-api.md +13 -1
  8. package/bun.lock +15 -0
  9. package/dist/web/assets/accounts-settings-section-B5YXy0vd.js +1 -0
  10. package/dist/web/assets/accounts-settings-section-B5YXy0vd.js.br +0 -0
  11. package/dist/web/assets/accounts-settings-section-B5YXy0vd.js.gz +0 -0
  12. package/dist/web/assets/adaptive-context-menu-C4jNSORA.js +1 -0
  13. package/dist/web/assets/adaptive-context-menu-C4jNSORA.js.br +0 -0
  14. package/dist/web/assets/adaptive-context-menu-C4jNSORA.js.gz +0 -0
  15. package/dist/web/assets/agent-session-sheet-Bj42PwCK.js +2 -0
  16. package/dist/web/assets/agent-session-sheet-Bj42PwCK.js.br +0 -0
  17. package/dist/web/assets/agent-session-sheet-Bj42PwCK.js.gz +0 -0
  18. package/dist/web/assets/agent-session-sheet-store-BAfLnsLX.js +1 -0
  19. package/dist/web/assets/agent-session-window-content-LqL6fVPU.js +1 -0
  20. package/dist/web/assets/agent-session-window-content-LqL6fVPU.js.br +0 -0
  21. package/dist/web/assets/agent-session-window-content-LqL6fVPU.js.gz +0 -0
  22. package/dist/web/assets/ai-resource-editor-jVv2nvAG.js +1 -0
  23. package/dist/web/assets/ai-resource-editor-jVv2nvAG.js.br +0 -0
  24. package/dist/web/assets/ai-resource-editor-jVv2nvAG.js.gz +0 -0
  25. package/dist/web/assets/ai-settings-section-C9Q-v8fY.js +1 -0
  26. package/dist/web/assets/ai-settings-section-C9Q-v8fY.js.br +0 -0
  27. package/dist/web/assets/ai-settings-section-C9Q-v8fY.js.gz +0 -0
  28. package/dist/web/assets/ai-settings-section-CN5BR1ZZ.js +1 -0
  29. package/dist/web/assets/android-tab-CwqiuEZP.js +2 -0
  30. package/dist/web/assets/android-tab-CwqiuEZP.js.br +0 -0
  31. package/dist/web/assets/android-tab-CwqiuEZP.js.gz +0 -0
  32. package/dist/web/assets/api-client-xQDlhUTu.js +1 -0
  33. package/dist/web/assets/api-client-xQDlhUTu.js.br +0 -0
  34. package/dist/web/assets/api-client-xQDlhUTu.js.gz +0 -0
  35. package/dist/web/assets/api-client-xR05zj6r.js +1 -0
  36. package/dist/web/assets/api-settings-VAi0LpIJ.js +1 -0
  37. package/dist/web/assets/api-settings-vmIRFNwZ.js +1 -0
  38. package/dist/web/assets/api-settings-vmIRFNwZ.js.br +0 -0
  39. package/dist/web/assets/api-settings-vmIRFNwZ.js.gz +0 -0
  40. package/dist/web/assets/api-themes-CaXofG7d.js +1 -0
  41. package/dist/web/assets/appearance-settings-section-D0JIfiRx.js +1 -0
  42. package/dist/web/assets/appearance-settings-section-D0JIfiRx.js.br +0 -0
  43. package/dist/web/assets/appearance-settings-section-D0JIfiRx.js.gz +0 -0
  44. package/dist/web/assets/apps-panel-Cz_KJ37M.js +1 -0
  45. package/dist/web/assets/apps-panel-Cz_KJ37M.js.br +0 -0
  46. package/dist/web/assets/apps-panel-Cz_KJ37M.js.gz +0 -0
  47. package/dist/web/assets/audio-preview-Dq7qZ_6i.js +1 -0
  48. package/dist/web/assets/audio-preview-Dq7qZ_6i.js.br +0 -0
  49. package/dist/web/assets/audio-preview-Dq7qZ_6i.js.gz +0 -0
  50. package/dist/web/assets/branch-review-tab-C3QNpsm7.js +1 -0
  51. package/dist/web/assets/branch-review-tab-C3QNpsm7.js.br +0 -0
  52. package/dist/web/assets/branch-review-tab-C3QNpsm7.js.gz +0 -0
  53. package/dist/web/assets/button-C9ZXWb3b.js +1 -0
  54. package/dist/web/assets/button-C9ZXWb3b.js.br +0 -0
  55. package/dist/web/assets/button-C9ZXWb3b.js.gz +0 -0
  56. package/dist/web/assets/chat-preparation-cache-190LLyy7.js +1 -0
  57. package/dist/web/assets/chat-preparation-cache-190LLyy7.js.br +0 -0
  58. package/dist/web/assets/chat-preparation-cache-190LLyy7.js.gz +0 -0
  59. package/dist/web/assets/chat-tab-D14CUl0J.js +1 -0
  60. package/dist/web/assets/chat-tab-D14CUl0J.js.br +0 -0
  61. package/dist/web/assets/chat-tab-D14CUl0J.js.gz +0 -0
  62. package/dist/web/assets/chat-tab-D8iAVZKV.js +16 -0
  63. package/dist/web/assets/chat-tab-D8iAVZKV.js.br +0 -0
  64. package/dist/web/assets/chat-tab-D8iAVZKV.js.gz +0 -0
  65. package/dist/web/assets/code-editor-B7gbH4-x.js +10 -0
  66. package/dist/web/assets/code-editor-B7gbH4-x.js.br +0 -0
  67. package/dist/web/assets/code-editor-B7gbH4-x.js.gz +0 -0
  68. package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js +1 -0
  69. package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js.br +0 -0
  70. package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js.gz +0 -0
  71. package/dist/web/assets/conflict-editor-ktOkrODA.js +19 -0
  72. package/dist/web/assets/conflict-editor-ktOkrODA.js.br +0 -0
  73. package/dist/web/assets/conflict-editor-ktOkrODA.js.gz +0 -0
  74. package/dist/web/assets/connection-form-tab-CxvExR7T.js +4 -0
  75. package/dist/web/assets/connection-form-tab-CxvExR7T.js.br +0 -0
  76. package/dist/web/assets/connection-form-tab-CxvExR7T.js.gz +0 -0
  77. package/dist/web/assets/context-menu-BCuZYfWC.js +1 -0
  78. package/dist/web/assets/context-menu-BCuZYfWC.js.br +0 -0
  79. package/dist/web/assets/context-menu-BCuZYfWC.js.gz +0 -0
  80. package/dist/web/assets/createLucideIcon-D9_fdOKS.js +1 -0
  81. package/dist/web/assets/createLucideIcon-D9_fdOKS.js.br +0 -0
  82. package/dist/web/assets/createLucideIcon-D9_fdOKS.js.gz +0 -0
  83. package/dist/web/assets/csv-preview-CBDMTEsF.js +10 -0
  84. package/dist/web/assets/csv-preview-CBDMTEsF.js.br +0 -0
  85. package/dist/web/assets/csv-preview-CBDMTEsF.js.gz +0 -0
  86. package/dist/web/assets/database-drivers-section-DJvU6bf5.js +1 -0
  87. package/dist/web/assets/database-drivers-section-DJvU6bf5.js.br +0 -0
  88. package/dist/web/assets/database-drivers-section-DJvU6bf5.js.gz +0 -0
  89. package/dist/web/assets/db-ai-tools-CVbbW_MZ.js +1 -0
  90. package/dist/web/assets/db-ai-tools-CVbbW_MZ.js.br +0 -0
  91. package/dist/web/assets/db-ai-tools-CVbbW_MZ.js.gz +0 -0
  92. package/dist/web/assets/db-explorer-store-BmpvDHz6.js +1 -0
  93. package/dist/web/assets/db-explorer-store-BmpvDHz6.js.br +0 -0
  94. package/dist/web/assets/db-explorer-store-BmpvDHz6.js.gz +0 -0
  95. package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js +1 -0
  96. package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js.br +0 -0
  97. package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js.gz +0 -0
  98. package/dist/web/assets/db-tab-parts-BgVpKbi6.js +1 -0
  99. package/dist/web/assets/db-tab-parts-BgVpKbi6.js.br +0 -0
  100. package/dist/web/assets/db-tab-parts-BgVpKbi6.js.gz +0 -0
  101. package/dist/web/assets/db-types-CNhENouW.js +1 -0
  102. package/dist/web/assets/design-canvas-check-BIHc2d_k.js +1 -0
  103. package/dist/web/assets/design-canvas-check-BIHc2d_k.js.br +0 -0
  104. package/dist/web/assets/design-canvas-check-BIHc2d_k.js.gz +0 -0
  105. package/dist/web/assets/design-export-client-CJ3w7Zrk.js +1 -0
  106. package/dist/web/assets/design-export-client-CJ3w7Zrk.js.br +0 -0
  107. package/dist/web/assets/design-export-client-CJ3w7Zrk.js.gz +0 -0
  108. package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js +1 -0
  109. package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js.br +0 -0
  110. package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js.gz +0 -0
  111. package/dist/web/assets/design-settings-section-DPGw61pY.js +2 -0
  112. package/dist/web/assets/design-settings-section-DPGw61pY.js.br +0 -0
  113. package/dist/web/assets/design-settings-section-DPGw61pY.js.gz +0 -0
  114. package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js +3 -0
  115. package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js.br +0 -0
  116. package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js.gz +0 -0
  117. package/dist/web/assets/design-tab-BiCqHNl3.js +57 -0
  118. package/dist/web/assets/design-tab-BiCqHNl3.js.br +0 -0
  119. package/dist/web/assets/design-tab-BiCqHNl3.js.gz +0 -0
  120. package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js +1 -0
  121. package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js.br +0 -0
  122. package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js.gz +0 -0
  123. package/dist/web/assets/dialog-Dn_2tuYa.js +1 -0
  124. package/dist/web/assets/dialog-Dn_2tuYa.js.br +0 -0
  125. package/dist/web/assets/dialog-Dn_2tuYa.js.gz +0 -0
  126. package/dist/web/assets/diff-viewer-CLAvyqVG.js +4 -0
  127. package/dist/web/assets/diff-viewer-CLAvyqVG.js.br +0 -0
  128. package/dist/web/assets/diff-viewer-CLAvyqVG.js.gz +0 -0
  129. package/dist/web/assets/docx-preview-XSkD2IL6.js +12 -0
  130. package/dist/web/assets/docx-preview-XSkD2IL6.js.br +0 -0
  131. package/dist/web/assets/docx-preview-XSkD2IL6.js.gz +0 -0
  132. package/dist/web/assets/dropdown-menu-BQidk_OJ.js +1 -0
  133. package/dist/web/assets/dropdown-menu-BQidk_OJ.js.br +0 -0
  134. package/dist/web/assets/dropdown-menu-BQidk_OJ.js.gz +0 -0
  135. package/dist/web/assets/edit-diff-preview-DyWUMlkI.js +7 -0
  136. package/dist/web/assets/edit-diff-preview-DyWUMlkI.js.br +0 -0
  137. package/dist/web/assets/edit-diff-preview-DyWUMlkI.js.gz +0 -0
  138. package/dist/web/assets/editor-dialog-cQvqVZAR.js +1 -0
  139. package/dist/web/assets/editor-dialog-cQvqVZAR.js.br +0 -0
  140. package/dist/web/assets/editor-dialog-cQvqVZAR.js.gz +0 -0
  141. package/dist/web/assets/editor-language-service-6-7mS6_9.js +1 -0
  142. package/dist/web/assets/editor-language-service-6-7mS6_9.js.br +0 -0
  143. package/dist/web/assets/editor-language-service-6-7mS6_9.js.gz +0 -0
  144. package/dist/web/assets/explorer-body-BlGDPmNa.js +2 -0
  145. package/dist/web/assets/explorer-body-BlGDPmNa.js.br +0 -0
  146. package/dist/web/assets/explorer-body-BlGDPmNa.js.gz +0 -0
  147. package/dist/web/assets/explorer-model-BtJN4MZ9.js +1 -0
  148. package/dist/web/assets/explorer-model-BtJN4MZ9.js.br +0 -0
  149. package/dist/web/assets/explorer-model-BtJN4MZ9.js.gz +0 -0
  150. package/dist/web/assets/explorer-window-content-BLWY8GJ_.js +1 -0
  151. package/dist/web/assets/explorer-window-content-BLWY8GJ_.js.br +0 -0
  152. package/dist/web/assets/explorer-window-content-BLWY8GJ_.js.gz +0 -0
  153. package/dist/web/assets/extension-manager-section-NSEt5f4z.js +1 -0
  154. package/dist/web/assets/extension-manager-section-NSEt5f4z.js.br +0 -0
  155. package/dist/web/assets/extension-manager-section-NSEt5f4z.js.gz +0 -0
  156. package/dist/web/assets/extension-webview-BkAEBWin.js +12 -0
  157. package/dist/web/assets/extension-webview-BkAEBWin.js.br +0 -0
  158. package/dist/web/assets/extension-webview-BkAEBWin.js.gz +0 -0
  159. package/dist/web/assets/file-diff-CcDhJkXB.js +1 -0
  160. package/dist/web/assets/file-icons-JInFtBVl.js +1 -0
  161. package/dist/web/assets/file-icons-JInFtBVl.js.br +0 -0
  162. package/dist/web/assets/file-icons-JInFtBVl.js.gz +0 -0
  163. package/dist/web/assets/file-store-BQ41vIs5.js +1 -0
  164. package/dist/web/assets/file-store-BQ41vIs5.js.br +0 -0
  165. package/dist/web/assets/file-store-BQ41vIs5.js.gz +0 -0
  166. package/dist/web/assets/files-settings-section-Bq7liJ_r.js +1 -0
  167. package/dist/web/assets/files-settings-section-Bq7liJ_r.js.br +0 -0
  168. package/dist/web/assets/files-settings-section-Bq7liJ_r.js.gz +0 -0
  169. package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js +1 -0
  170. package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js.br +0 -0
  171. package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js.gz +0 -0
  172. package/dist/web/assets/format-file-meta-DdYtk07C.js +1 -0
  173. package/dist/web/assets/format-file-meta-DdYtk07C.js.br +0 -0
  174. package/dist/web/assets/format-file-meta-DdYtk07C.js.gz +0 -0
  175. package/dist/web/assets/fs-api-CFtQzsIJ.js +1 -0
  176. package/dist/web/assets/fs-api-CFtQzsIJ.js.br +0 -0
  177. package/dist/web/assets/fs-api-CFtQzsIJ.js.gz +0 -0
  178. package/dist/web/assets/general-settings-section-DvHROAMa.js +1 -0
  179. package/dist/web/assets/general-settings-section-DvHROAMa.js.br +0 -0
  180. package/dist/web/assets/general-settings-section-DvHROAMa.js.gz +0 -0
  181. package/dist/web/assets/git-commit-horizontal-BPdj2L1i.js +1 -0
  182. package/dist/web/assets/git-log-panel-Cu9kK48H.js +1 -0
  183. package/dist/web/assets/git-log-panel-Cu9kK48H.js.br +0 -0
  184. package/dist/web/assets/git-log-panel-Cu9kK48H.js.gz +0 -0
  185. package/dist/web/assets/git-repo-store-CKB5fdNP.js +1 -0
  186. package/dist/web/assets/git-repo-store-CKB5fdNP.js.br +0 -0
  187. package/dist/web/assets/git-repo-store-CKB5fdNP.js.gz +0 -0
  188. package/dist/web/assets/git-review-tab-B_JT649W.js +3 -0
  189. package/dist/web/assets/git-review-tab-B_JT649W.js.br +0 -0
  190. package/dist/web/assets/git-review-tab-B_JT649W.js.gz +0 -0
  191. package/dist/web/assets/glide-data-grid-BlposOph.js +177 -0
  192. package/dist/web/assets/glide-data-grid-BlposOph.js.br +0 -0
  193. package/dist/web/assets/glide-data-grid-BlposOph.js.gz +0 -0
  194. package/dist/web/assets/grid-save-dialog-B0d0qhnN.js +2 -0
  195. package/dist/web/assets/grid-save-dialog-B0d0qhnN.js.br +0 -0
  196. package/dist/web/assets/grid-save-dialog-B0d0qhnN.js.gz +0 -0
  197. package/dist/web/assets/group-chat-tab-jirUsGm-.js +1 -0
  198. package/dist/web/assets/group-chat-tab-jirUsGm-.js.br +0 -0
  199. package/dist/web/assets/group-chat-tab-jirUsGm-.js.gz +0 -0
  200. package/dist/web/assets/html-preview-loads-CMWBC-iv.js +1 -0
  201. package/dist/web/assets/icons-BwyIKaTT.js +1 -0
  202. package/dist/web/assets/icons-BwyIKaTT.js.br +0 -0
  203. package/dist/web/assets/icons-BwyIKaTT.js.gz +0 -0
  204. package/dist/web/assets/image-preview-gOBK9zED.js +1 -0
  205. package/dist/web/assets/impexp-tab-HJVcOTYJ.js +1 -0
  206. package/dist/web/assets/impexp-tab-HJVcOTYJ.js.br +0 -0
  207. package/dist/web/assets/impexp-tab-HJVcOTYJ.js.gz +0 -0
  208. package/dist/web/assets/index-DLB3j_P0.js +59 -0
  209. package/dist/web/assets/index-DLB3j_P0.js.br +0 -0
  210. package/dist/web/assets/index-DLB3j_P0.js.gz +0 -0
  211. package/dist/web/assets/index-M3DUzop8.css +1 -0
  212. package/dist/web/assets/index-M3DUzop8.css.br +0 -0
  213. package/dist/web/assets/index-M3DUzop8.css.gz +0 -0
  214. package/dist/web/assets/input-C3oVNCMq.js +1 -0
  215. package/dist/web/assets/jira-watcher-section-EQvdnETB.js +1 -0
  216. package/dist/web/assets/keybindings-store-CEy-Sdcc.js +1 -0
  217. package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js +1 -0
  218. package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js.br +0 -0
  219. package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js.gz +0 -0
  220. package/dist/web/assets/language-servers-section-DOcZ72FJ.js +2 -0
  221. package/dist/web/assets/language-servers-section-DOcZ72FJ.js.br +0 -0
  222. package/dist/web/assets/language-servers-section-DOcZ72FJ.js.gz +0 -0
  223. package/dist/web/assets/lib-5Chotbwm.js +2 -0
  224. package/dist/web/assets/lib-5Chotbwm.js.br +0 -0
  225. package/dist/web/assets/lib-5Chotbwm.js.gz +0 -0
  226. package/dist/web/assets/logs-app-C7n9GSCn.js +13 -0
  227. package/dist/web/assets/logs-app-C7n9GSCn.js.br +0 -0
  228. package/dist/web/assets/logs-app-C7n9GSCn.js.gz +0 -0
  229. package/dist/web/assets/logs-tab-CSOiexvx.js +1 -0
  230. package/dist/web/assets/logs-window-content-C4Qs6-0q.js +1 -0
  231. package/dist/web/assets/lsp-client-DpYmPhXX.js +1 -0
  232. package/dist/web/assets/lsp-client-DpYmPhXX.js.br +0 -0
  233. package/dist/web/assets/lsp-client-DpYmPhXX.js.gz +0 -0
  234. package/dist/web/assets/markdown-renderer-CtEl6qAt.js +4 -0
  235. package/dist/web/assets/markdown-renderer-CtEl6qAt.js.br +0 -0
  236. package/dist/web/assets/markdown-renderer-CtEl6qAt.js.gz +0 -0
  237. package/dist/web/assets/markdown-renderer-Df3r-CCb.js +1 -0
  238. package/dist/web/assets/media-url-Cn2yRAxP.js +1 -0
  239. package/dist/web/assets/metric-chart-canvas-DEW16Su8.js +1 -0
  240. package/dist/web/assets/metric-chart-canvas-DEW16Su8.js.br +0 -0
  241. package/dist/web/assets/metric-chart-canvas-DEW16Su8.js.gz +0 -0
  242. package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js +1 -0
  243. package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js.br +0 -0
  244. package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js.gz +0 -0
  245. package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js +1 -0
  246. package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js.br +0 -0
  247. package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js.gz +0 -0
  248. package/dist/web/assets/new-design-dialog-DgztQK5R.js +1 -0
  249. package/dist/web/assets/new-design-dialog-DgztQK5R.js.br +0 -0
  250. package/dist/web/assets/new-design-dialog-DgztQK5R.js.gz +0 -0
  251. package/dist/web/assets/notification-store-B92dvP_u.js +1 -0
  252. package/dist/web/assets/notifications-settings-section-JiGvaCFx.js +1 -0
  253. package/dist/web/assets/notifications-settings-section-JiGvaCFx.js.br +0 -0
  254. package/dist/web/assets/notifications-settings-section-JiGvaCFx.js.gz +0 -0
  255. package/dist/web/assets/onboarding-entry-eehqBvyM.js +1 -0
  256. package/dist/web/assets/onboarding-entry-eehqBvyM.js.br +0 -0
  257. package/dist/web/assets/onboarding-entry-eehqBvyM.js.gz +0 -0
  258. package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js +1 -0
  259. package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js.br +0 -0
  260. package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js.gz +0 -0
  261. package/dist/web/assets/open-db-tabs-CtWIWHOa.js +1 -0
  262. package/dist/web/assets/open-db-tabs-CtWIWHOa.js.br +0 -0
  263. package/dist/web/assets/open-db-tabs-CtWIWHOa.js.gz +0 -0
  264. package/dist/web/assets/open-settings-EXR4zoZG.js +1 -0
  265. package/dist/web/assets/overview-panel-DEGF2DmZ.js +1 -0
  266. package/dist/web/assets/overview-panel-DEGF2DmZ.js.br +0 -0
  267. package/dist/web/assets/overview-panel-DEGF2DmZ.js.gz +0 -0
  268. package/dist/web/assets/panel-store-BJhazigC.js +1 -0
  269. package/dist/web/assets/panel-store-BJhazigC.js.br +0 -0
  270. package/dist/web/assets/panel-store-BJhazigC.js.gz +0 -0
  271. package/dist/web/assets/patch-tab-metadata-C92YkrRX.js +1 -0
  272. package/dist/web/assets/pdf-preview-C9gMtv2a.js +1 -0
  273. package/dist/web/assets/pdf-preview-C9gMtv2a.js.br +0 -0
  274. package/dist/web/assets/pdf-preview-C9gMtv2a.js.gz +0 -0
  275. package/dist/web/assets/performance-panel-TkwfKIZa.js +3 -0
  276. package/dist/web/assets/performance-panel-TkwfKIZa.js.br +0 -0
  277. package/dist/web/assets/performance-panel-TkwfKIZa.js.gz +0 -0
  278. package/dist/web/assets/portal-container-context-NBi-KGK0.js +1 -0
  279. package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js +1 -0
  280. package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js.br +0 -0
  281. package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js.gz +0 -0
  282. package/dist/web/assets/pptx-export-B2wCBWlV.js +111 -0
  283. package/dist/web/assets/pptx-export-B2wCBWlV.js.br +0 -0
  284. package/dist/web/assets/pptx-export-B2wCBWlV.js.gz +0 -0
  285. package/dist/web/assets/problems-panel-CDzwSJn6.js +1 -0
  286. package/dist/web/assets/problems-panel-CDzwSJn6.js.br +0 -0
  287. package/dist/web/assets/problems-panel-CDzwSJn6.js.gz +0 -0
  288. package/dist/web/assets/process-row-format-CytRH7g2.js +1 -0
  289. package/dist/web/assets/process-table-C_B39GHm.js +1 -0
  290. package/dist/web/assets/process-table-C_B39GHm.js.br +0 -0
  291. package/dist/web/assets/process-table-C_B39GHm.js.gz +0 -0
  292. package/dist/web/assets/project-framework-store-DwLxaRan.js +1 -0
  293. package/dist/web/assets/project-store-BLGl9IAO.js +1 -0
  294. package/dist/web/assets/project-store-BLGl9IAO.js.br +0 -0
  295. package/dist/web/assets/project-store-BLGl9IAO.js.gz +0 -0
  296. package/dist/web/assets/proxy-settings-section-CvaOvYIv.js +1 -0
  297. package/dist/web/assets/proxy-settings-section-CvaOvYIv.js.br +0 -0
  298. package/dist/web/assets/proxy-settings-section-CvaOvYIv.js.gz +0 -0
  299. package/dist/web/assets/query-audit-section-D_WDp1m-.js +1 -0
  300. package/dist/web/assets/query-audit-section-D_WDp1m-.js.br +0 -0
  301. package/dist/web/assets/query-audit-section-D_WDp1m-.js.gz +0 -0
  302. package/dist/web/assets/query-tab-B8aMpAbI.js +22 -0
  303. package/dist/web/assets/query-tab-B8aMpAbI.js.br +0 -0
  304. package/dist/web/assets/query-tab-B8aMpAbI.js.gz +0 -0
  305. package/dist/web/assets/react-BZ0kba1-.js +1 -0
  306. package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js +1 -0
  307. package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js.br +0 -0
  308. package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js.gz +0 -0
  309. package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js +1 -0
  310. package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js.br +0 -0
  311. package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js.gz +0 -0
  312. package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js +2 -0
  313. package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js.br +0 -0
  314. package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js.gz +0 -0
  315. package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js +1 -0
  316. package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js.br +0 -0
  317. package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js.gz +0 -0
  318. package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js +1 -0
  319. package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js.br +0 -0
  320. package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js.gz +0 -0
  321. package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js +1 -0
  322. package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js.br +0 -0
  323. package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js.gz +0 -0
  324. package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js +1 -0
  325. package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js.br +0 -0
  326. package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js.gz +0 -0
  327. package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js +1 -0
  328. package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js.br +0 -0
  329. package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js.gz +0 -0
  330. package/dist/web/assets/review-code-B4osj0k1.js +5 -0
  331. package/dist/web/assets/review-code-B4osj0k1.js.br +0 -0
  332. package/dist/web/assets/review-code-B4osj0k1.js.gz +0 -0
  333. package/dist/web/assets/run-in-terminal-button-m3i-Hcou.js +1 -0
  334. package/dist/web/assets/run-in-terminal-ujoc25vj.js +1 -0
  335. package/dist/web/assets/save-as-dialog-DpXv_f1d.js +1 -0
  336. package/dist/web/assets/save-as-dialog-DpXv_f1d.js.br +5 -0
  337. package/dist/web/assets/save-as-dialog-DpXv_f1d.js.gz +0 -0
  338. package/dist/web/assets/schedules-settings-section-BbaPbc28.js +1 -0
  339. package/dist/web/assets/schedules-settings-section-BbaPbc28.js.br +0 -0
  340. package/dist/web/assets/schedules-settings-section-BbaPbc28.js.gz +0 -0
  341. package/dist/web/assets/scroll-area-DOlQJGZp.js +1 -0
  342. package/dist/web/assets/scroll-area-DOlQJGZp.js.br +0 -0
  343. package/dist/web/assets/scroll-area-DOlQJGZp.js.gz +0 -0
  344. package/dist/web/assets/send-to-chat-CWV1qd3c.js +1 -0
  345. package/dist/web/assets/send-to-chat-CWV1qd3c.js.br +0 -0
  346. package/dist/web/assets/send-to-chat-CWV1qd3c.js.gz +0 -0
  347. package/dist/web/assets/separator-DmU9aJwq.js +1 -0
  348. package/dist/web/assets/services-panel-CZQOrvth.js +1 -0
  349. package/dist/web/assets/services-panel-CZQOrvth.js.br +0 -0
  350. package/dist/web/assets/services-panel-CZQOrvth.js.gz +0 -0
  351. package/dist/web/assets/session-changes-bar-VfS2sHuH.js +1 -0
  352. package/dist/web/assets/session-changes-bar-VfS2sHuH.js.br +0 -0
  353. package/dist/web/assets/session-changes-bar-VfS2sHuH.js.gz +0 -0
  354. package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js +1 -0
  355. package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js.br +0 -0
  356. package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js.gz +0 -0
  357. package/dist/web/assets/session-review-tab-Aq3FEooH.js +6 -0
  358. package/dist/web/assets/session-review-tab-Aq3FEooH.js.br +0 -0
  359. package/dist/web/assets/session-review-tab-Aq3FEooH.js.gz +0 -0
  360. package/dist/web/assets/settings-body-vXbOWchN.js +1 -0
  361. package/dist/web/assets/settings-body-vXbOWchN.js.br +0 -0
  362. package/dist/web/assets/settings-body-vXbOWchN.js.gz +0 -0
  363. package/dist/web/assets/settings-categories-Ajj4ui27.js +1 -0
  364. package/dist/web/assets/settings-categories-Ajj4ui27.js.br +0 -0
  365. package/dist/web/assets/settings-categories-Ajj4ui27.js.gz +0 -0
  366. package/dist/web/assets/settings-rows-DD7Gxmst.js +1 -0
  367. package/dist/web/assets/settings-rows-DD7Gxmst.js.br +0 -0
  368. package/dist/web/assets/settings-rows-DD7Gxmst.js.gz +0 -0
  369. package/dist/web/assets/settings-section-content-CVtvJ6ze.js +1 -0
  370. package/dist/web/assets/settings-section-content-DkUJFop6.js +2 -0
  371. package/dist/web/assets/settings-section-content-DkUJFop6.js.br +0 -0
  372. package/dist/web/assets/settings-section-content-DkUJFop6.js.gz +0 -0
  373. package/dist/web/assets/settings-store-B4mLp19V.js +2 -0
  374. package/dist/web/assets/settings-store-B4mLp19V.js.br +0 -0
  375. package/dist/web/assets/settings-store-B4mLp19V.js.gz +0 -0
  376. package/dist/web/assets/settings-tab-Cdv9_OIe.js +1 -0
  377. package/dist/web/assets/settings-window-content-DLa6Ph4u.js +1 -0
  378. package/dist/web/assets/share-BV49OI6q.css +2 -0
  379. package/dist/web/assets/share-BV49OI6q.css.br +0 -0
  380. package/dist/web/assets/share-BV49OI6q.css.gz +0 -0
  381. package/dist/web/assets/share-D5ufGmNI.js +9 -0
  382. package/dist/web/assets/share-D5ufGmNI.js.br +0 -0
  383. package/dist/web/assets/share-D5ufGmNI.js.gz +0 -0
  384. package/dist/web/assets/slash-command-picker-lILYDfK3.js +1 -0
  385. package/dist/web/assets/slash-command-picker-lILYDfK3.js.br +0 -0
  386. package/dist/web/assets/slash-command-picker-lILYDfK3.js.gz +0 -0
  387. package/dist/web/assets/sortable-header-DwzTFLkG.js +1 -0
  388. package/dist/web/assets/sortable-header-DwzTFLkG.js.br +0 -0
  389. package/dist/web/assets/sortable-header-DwzTFLkG.js.gz +0 -0
  390. package/dist/web/assets/split-sql-statements-DcAeXbk_.js +5 -0
  391. package/dist/web/assets/split-sql-statements-DcAeXbk_.js.br +0 -0
  392. package/dist/web/assets/split-sql-statements-DcAeXbk_.js.gz +0 -0
  393. package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js +1 -0
  394. package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js.br +0 -0
  395. package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js.gz +0 -0
  396. package/dist/web/assets/sql-object-tab-Da42SMK5.js +1 -0
  397. package/dist/web/assets/sql-object-tab-Da42SMK5.js.br +0 -0
  398. package/dist/web/assets/sql-object-tab-Da42SMK5.js.gz +0 -0
  399. package/dist/web/assets/sqlite-viewer-V3SKNukY.js +1 -0
  400. package/dist/web/assets/sqlite-viewer-V3SKNukY.js.br +0 -0
  401. package/dist/web/assets/sqlite-viewer-V3SKNukY.js.gz +0 -0
  402. package/dist/web/assets/start-ellipsis-CU8GkxaV.js +1 -0
  403. package/dist/web/assets/structure-save-dialog-B635iyPI.js +1 -0
  404. package/dist/web/assets/structure-save-dialog-B635iyPI.js.br +0 -0
  405. package/dist/web/assets/structure-save-dialog-B635iyPI.js.gz +0 -0
  406. package/dist/web/assets/structure-tab-Co9d8ktU.js +3 -0
  407. package/dist/web/assets/structure-tab-Co9d8ktU.js.br +0 -0
  408. package/dist/web/assets/structure-tab-Co9d8ktU.js.gz +0 -0
  409. package/dist/web/assets/system-monitor-body-DC0j8RqP.js +2 -0
  410. package/dist/web/assets/system-monitor-body-DC0j8RqP.js.br +0 -0
  411. package/dist/web/assets/system-monitor-body-DC0j8RqP.js.gz +0 -0
  412. package/dist/web/assets/system-monitor-tab-DA8BcdXo.js +1 -0
  413. package/dist/web/assets/system-monitor-window-content-BiuLo8XW.js +1 -0
  414. package/dist/web/assets/tab-host-window-content-Crvt1r5F.js +1 -0
  415. package/dist/web/assets/tab-host-window-content-Crvt1r5F.js.br +0 -0
  416. package/dist/web/assets/tab-host-window-content-Crvt1r5F.js.gz +0 -0
  417. package/dist/web/assets/tab-store-D5I52eLN.js +1 -0
  418. package/dist/web/assets/table-tab-C2cYw7a0.js +2 -0
  419. package/dist/web/assets/table-tab-C2cYw7a0.js.br +0 -0
  420. package/dist/web/assets/table-tab-C2cYw7a0.js.gz +0 -0
  421. package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js +1 -0
  422. package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js.br +0 -0
  423. package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js.gz +0 -0
  424. package/dist/web/assets/terminal-tab-CrKxibGC.js +3 -0
  425. package/dist/web/assets/terminal-tab-CrKxibGC.js.br +0 -0
  426. package/dist/web/assets/terminal-tab-CrKxibGC.js.gz +0 -0
  427. package/dist/web/assets/tool-cards-BRto67jM.js +15 -0
  428. package/dist/web/assets/tool-cards-BRto67jM.js.br +0 -0
  429. package/dist/web/assets/tool-cards-BRto67jM.js.gz +0 -0
  430. package/dist/web/assets/tools-settings-section-DEvZsrxq.js +1 -0
  431. package/dist/web/assets/tools-settings-section-DEvZsrxq.js.br +0 -0
  432. package/dist/web/assets/tools-settings-section-DEvZsrxq.js.gz +0 -0
  433. package/dist/web/assets/use-at-most-wide-BHsrzvv3.js +1 -0
  434. package/dist/web/assets/use-blob-url-Clm7wbB_.js +1 -0
  435. package/dist/web/assets/use-db-driver-installed-anzWkGi5.js +1 -0
  436. package/dist/web/assets/use-db-read-BCYhIrJM.js +1 -0
  437. package/dist/web/assets/use-db-read-BCYhIrJM.js.br +0 -0
  438. package/dist/web/assets/use-db-read-BCYhIrJM.js.gz +0 -0
  439. package/dist/web/assets/use-db-tab-B8LjdDb7.js +1 -0
  440. package/dist/web/assets/use-db-tab-B8LjdDb7.js.br +0 -0
  441. package/dist/web/assets/use-db-tab-B8LjdDb7.js.gz +0 -0
  442. package/dist/web/assets/use-design-canvas-check-DBsLf1At.js +1 -0
  443. package/dist/web/assets/use-design-canvas-check-DBsLf1At.js.br +0 -0
  444. package/dist/web/assets/use-design-canvas-check-DBsLf1At.js.gz +0 -0
  445. package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js +1 -0
  446. package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js.br +0 -0
  447. package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js.gz +0 -0
  448. package/dist/web/assets/use-inline-blame-CRWJU6Rq.js +16 -0
  449. package/dist/web/assets/use-inline-blame-CRWJU6Rq.js.br +0 -0
  450. package/dist/web/assets/use-inline-blame-CRWJU6Rq.js.gz +0 -0
  451. package/dist/web/assets/use-is-mobile-VRV9eZy1.js +1 -0
  452. package/dist/web/assets/use-lsp-B-otjr-6.js +6 -0
  453. package/dist/web/assets/use-lsp-B-otjr-6.js.br +0 -0
  454. package/dist/web/assets/use-lsp-B-otjr-6.js.gz +0 -0
  455. package/dist/web/assets/use-monaco-theme-BiDXRJ4e.js +1 -0
  456. package/dist/web/assets/use-opener-focus-CDRKhHwX.js +1 -0
  457. package/dist/web/assets/use-process-kill-BW2UW0mZ.js +1 -0
  458. package/dist/web/assets/use-process-kill-BW2UW0mZ.js.br +0 -0
  459. package/dist/web/assets/use-process-kill-BW2UW0mZ.js.gz +0 -0
  460. package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js +4 -0
  461. package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js.br +0 -0
  462. package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js.gz +0 -0
  463. package/dist/web/assets/use-visual-viewport-MmugpRg-.js +1 -0
  464. package/dist/web/assets/use-websocket-n3Ud9vEA.js +1 -0
  465. package/dist/web/assets/vendor-markdown-C-P1aR4p.js +291 -0
  466. package/dist/web/assets/vendor-markdown-C-P1aR4p.js.br +0 -0
  467. package/dist/web/assets/vendor-markdown-C-P1aR4p.js.gz +0 -0
  468. package/dist/web/assets/vendor-ui-BTSIXzhZ.js +45 -0
  469. package/dist/web/assets/vendor-ui-BTSIXzhZ.js.br +0 -0
  470. package/dist/web/assets/vendor-ui-BTSIXzhZ.js.gz +0 -0
  471. package/dist/web/assets/video-preview-CjB6wesi.js +1 -0
  472. package/dist/web/assets/video-preview-CjB6wesi.js.br +0 -0
  473. package/dist/web/assets/video-preview-CjB6wesi.js.gz +0 -0
  474. package/dist/web/assets/voice-settings-section-C6Wb6q5o.js +1 -0
  475. package/dist/web/assets/voice-settings-section-C6Wb6q5o.js.br +0 -0
  476. package/dist/web/assets/voice-settings-section-C6Wb6q5o.js.gz +0 -0
  477. package/dist/web/assets/web-preview-tab-doNpegW3.js +1 -0
  478. package/dist/web/assets/web-preview-tab-doNpegW3.js.br +0 -0
  479. package/dist/web/assets/web-preview-tab-doNpegW3.js.gz +0 -0
  480. package/dist/web/assets/window-store-DqX_qmkQ.js +1 -0
  481. package/dist/web/assets/window-store-DqX_qmkQ.js.br +0 -0
  482. package/dist/web/assets/window-store-DqX_qmkQ.js.gz +0 -0
  483. package/dist/web/assets/ws-auth-CbF6GqxP.js +1 -0
  484. package/dist/web/design-share-page/index.html +18 -0
  485. package/dist/web/index.html +47 -47
  486. package/dist/web/index.html.br +0 -0
  487. package/dist/web/index.html.gz +0 -0
  488. package/dist/web/sw.js +1 -1
  489. package/dist/web/sw.js.br +0 -0
  490. package/dist/web/sw.js.gz +0 -0
  491. package/docs/architecture/ai-chat-and-providers.md +258 -26
  492. package/docs/architecture/data-and-storage.md +9 -3
  493. package/docs/architecture/workspace-and-ui.md +42 -5
  494. package/docs/project-roadmap.md +5 -0
  495. package/package.json +6 -2
  496. package/scripts/gen-product-icons.ts +1 -0
  497. package/src/cli/commands/db-cmd.ts +79 -1
  498. package/src/providers/claude-agent-sdk-query-options.ts +42 -10
  499. package/src/providers/claude-agent-sdk.ts +19 -6
  500. package/src/providers/codex-app-server/codex-provider.ts +9 -3
  501. package/src/providers/codex-app-server/codex-thread-params.ts +34 -4
  502. package/src/server/index.ts +17 -5
  503. package/src/server/middleware/access-log.ts +6 -3
  504. package/src/server/routes/accounts.ts +3 -2
  505. package/src/server/routes/chat-file-changes.ts +15 -1
  506. package/src/server/routes/chat.ts +92 -18
  507. package/src/server/routes/database-query.ts +14 -5
  508. package/src/server/routes/database.ts +14 -0
  509. package/src/server/routes/debug-crash.ts +30 -0
  510. package/src/server/routes/design-comments.ts +56 -7
  511. package/src/server/routes/design-share-address.ts +20 -0
  512. package/src/server/routes/design-share-guest-comments.ts +120 -0
  513. package/src/server/routes/design-share-guest-files.ts +99 -0
  514. package/src/server/routes/design-share-guest-shared.ts +95 -0
  515. package/src/server/routes/design-share-guest.ts +77 -0
  516. package/src/server/routes/design-shares.ts +90 -0
  517. package/src/server/routes/designs.ts +2 -0
  518. package/src/server/routes/settings.ts +12 -0
  519. package/src/server/routes/static.ts +10 -2
  520. package/src/server/ws/chat.ts +113 -39
  521. package/src/server/ws/global.ts +10 -8
  522. package/src/services/account.service.ts +57 -18
  523. package/src/services/chat.service.ts +16 -6
  524. package/src/services/db-ai-tools/db-ai-connections.ts +48 -0
  525. package/src/services/db-ai-tools/db-ai-format.ts +107 -0
  526. package/src/services/db-ai-tools/db-ai-run.ts +199 -0
  527. package/src/services/db-ai-tools/db-ai-target.ts +59 -0
  528. package/src/services/db-ai-tools/db-ai-tools-endpoint.ts +225 -0
  529. package/src/services/db-ai-tools/db-ai-tools-tokens.ts +33 -0
  530. package/src/services/db-ai-tools/db-ai-tools-tool.ts +131 -0
  531. package/src/services/db-ai-tools/db-approval-broker.ts +157 -0
  532. package/src/services/db.service.ts +25 -1
  533. package/src/services/design/bridge/bridge-picker.ts +15 -5
  534. package/src/services/design/bridge/guest-bridge.ts +19 -0
  535. package/src/services/design/comments/design-comment-element-context.ts +28 -6
  536. package/src/services/design/comments/design-comment-input.ts +47 -0
  537. package/src/services/design/comments/design-comment-views.ts +146 -0
  538. package/src/services/design/comments/design-comments-revision.ts +19 -0
  539. package/src/services/design/comments/design-comments-store.ts +82 -9
  540. package/src/services/design/design-comment-replies.service.ts +126 -0
  541. package/src/services/design/design-comments.service.ts +77 -34
  542. package/src/services/design/design-restore.service.ts +6 -2
  543. package/src/services/design/design-snapshots.service.ts +8 -2
  544. package/src/services/design/design-store.service.ts +7 -1
  545. package/src/services/design/design-write-rate-limit.ts +11 -17
  546. package/src/services/design/preview/design-guest-alias.ts +64 -0
  547. package/src/services/design/preview/design-preview-html.ts +16 -3
  548. package/src/services/design/preview/design-preview-scope.ts +29 -5
  549. package/src/services/design/share/design-share-address.ts +81 -0
  550. package/src/services/design/share/design-share-changed-files.ts +74 -0
  551. package/src/services/design/share/design-share-client-key.ts +72 -0
  552. package/src/services/design/share/design-share-code.ts +116 -0
  553. package/src/services/design/share/design-share-comments.service.ts +162 -0
  554. package/src/services/design/share/design-share-guest-link.ts +109 -0
  555. package/src/services/design/share/design-share-guest-page.ts +86 -0
  556. package/src/services/design/share/design-share-link-rules.ts +83 -0
  557. package/src/services/design/share/design-share-links-store.ts +157 -0
  558. package/src/services/design/share/design-share-links.service.ts +174 -0
  559. package/src/services/design/share/design-share-notifier.ts +192 -0
  560. package/src/services/design/share/design-share-rate-limit.ts +71 -0
  561. package/src/services/design/share/design-share-resolve.ts +31 -0
  562. package/src/services/mcp-http-endpoint.ts +23 -10
  563. package/src/services/mysql.service.ts +6 -2
  564. package/src/services/notification-format.ts +10 -2
  565. package/src/services/notification-link.ts +1 -1
  566. package/src/services/notification.service.ts +47 -15
  567. package/src/services/ppm-password.ts +26 -0
  568. package/src/services/project-name-for-path.ts +18 -0
  569. package/src/services/query-audit/query-audit.service.ts +7 -4
  570. package/src/services/remote-desktop/access-unit-assembler.ts +11 -7
  571. package/src/services/remote-desktop/nal-splitter.ts +14 -1
  572. package/src/services/remote-desktop/remote-desktop-capture-wayland.ts +47 -21
  573. package/src/services/remote-desktop/remote-desktop-encoder-args.ts +5 -3
  574. package/src/services/session-file-baselines/session-file-baselines.service.ts +48 -0
  575. package/src/services/session-file-baselines/session-file-blame.ts +57 -24
  576. package/src/services/session-file-baselines/session-file-changes.service.ts +220 -22
  577. package/src/services/session-file-baselines/session-file-history.ts +5 -1
  578. package/src/services/session-file-baselines/session-file-writes.ts +28 -0
  579. package/src/services/sliding-window-limiter.ts +106 -0
  580. package/src/services/tab-tools-mcp/open-url-tool.ts +149 -0
  581. package/src/services/tab-tools-mcp/tab-open-broker.ts +12 -4
  582. package/src/services/tab-tools-mcp/tab-tools-mcp-endpoint.ts +66 -22
  583. package/src/services/tab-tools-mcp/tab-tools-mcp-tokens.ts +3 -1
  584. package/src/services/tab-tools-mcp/tab-tools-mcp-tool.ts +78 -6
  585. package/src/services/tab-tools-mcp/terminal-text.ts +45 -0
  586. package/src/services/tab-tools-mcp/terminal-tools.ts +297 -0
  587. package/src/services/terminal.service.ts +39 -4
  588. package/src/shared/db-ai-tools.ts +118 -0
  589. package/src/shared/db-query-script.ts +16 -0
  590. package/src/shared/design-comment-thread-types.ts +80 -0
  591. package/src/shared/design-comment-types.ts +53 -4
  592. package/src/shared/design-share-guest-types.ts +59 -0
  593. package/src/shared/design-share-types.ts +100 -0
  594. package/src/shared/notification-settings.ts +4 -3
  595. package/src/shared/ppm-tools.ts +39 -0
  596. package/src/shared/session-file-changes.ts +16 -0
  597. package/src/shared/tab-open-protocol.ts +50 -6
  598. package/src/shared/untrusted-text.ts +15 -1
  599. package/src/types/chat.ts +7 -1
  600. package/src/types/config.ts +5 -2
  601. package/src/types/database.ts +6 -0
  602. package/src/web/components/chat/chat-history-bar.tsx +10 -6
  603. package/src/web/components/chat/chat-tab.tsx +7 -1
  604. package/src/web/components/chat/db-execute-approval-card.tsx +100 -0
  605. package/src/web/components/chat/db-tool-card.tsx +42 -0
  606. package/src/web/components/chat/device-tool-card.tsx +45 -0
  607. package/src/web/components/chat/message-input.tsx +9 -6
  608. package/src/web/components/chat/message-list.tsx +6 -1
  609. package/src/web/components/chat/message-markdown.tsx +6 -3
  610. package/src/web/components/chat/message-user-bubble.tsx +2 -1
  611. package/src/web/components/chat/model-thinking-selector.tsx +6 -4
  612. package/src/web/components/chat/prompt-cache-chip.tsx +1 -1
  613. package/src/web/components/chat/running-agents-bar.tsx +164 -76
  614. package/src/web/components/chat/session-changes-bar.tsx +46 -13
  615. package/src/web/components/chat/tool-cards.tsx +29 -1
  616. package/src/web/components/chat/turn-change-rollup.tsx +8 -1
  617. package/src/web/components/chat/usage-badge.tsx +3 -3
  618. package/src/web/components/database/query/query-run-state.ts +11 -1
  619. package/src/web/components/database/query/query-tab.tsx +33 -7
  620. package/src/web/components/database/query/use-query-runner.ts +3 -0
  621. package/src/web/components/database/query/write-once-dialog.tsx +70 -0
  622. package/src/web/components/design/canvas/design-canvas-pane.tsx +5 -2
  623. package/src/web/components/design/comments/comment-author-label.tsx +23 -0
  624. package/src/web/components/design/comments/comment-composer.tsx +6 -14
  625. package/src/web/components/design/comments/comment-pins-overlay.tsx +8 -3
  626. package/src/web/components/design/comments/comment-thread-replies.tsx +82 -0
  627. package/src/web/components/design/comments/comment-thread-text-box.tsx +69 -0
  628. package/src/web/components/design/comments/comment-thread-view.tsx +115 -0
  629. package/src/web/components/design/comments/comments-panel.tsx +33 -10
  630. package/src/web/components/design/comments/comments-send-preview.tsx +20 -8
  631. package/src/web/components/design/comments/design-comments-layer.tsx +3 -1
  632. package/src/web/components/design/comments/use-comment-pins.ts +3 -0
  633. package/src/web/components/design/comments/use-design-comments-feature.ts +40 -25
  634. package/src/web/components/design/comments/use-design-comments.ts +44 -12
  635. package/src/web/components/design/design-split-layout.tsx +106 -10
  636. package/src/web/components/design/design-tab-context.ts +2 -0
  637. package/src/web/components/design/design-tab.tsx +5 -1
  638. package/src/web/components/design/design-toolbar.tsx +24 -4
  639. package/src/web/components/design/share/design-share-dialog.tsx +81 -0
  640. package/src/web/components/design/share/new-share-link-form.tsx +85 -0
  641. package/src/web/components/design/share/share-address-block.tsx +101 -0
  642. package/src/web/components/design/share/share-changed-files.tsx +30 -0
  643. package/src/web/components/design/share/share-expiry-picker.tsx +44 -0
  644. package/src/web/components/design/share/share-repin-panel.tsx +64 -0
  645. package/src/web/components/design/share/share-row-panel.tsx +35 -0
  646. package/src/web/components/design/share/share-version-picker.tsx +67 -0
  647. package/src/web/components/design/share/shared-link-action-panels.tsx +120 -0
  648. package/src/web/components/design/share/shared-link-row.tsx +131 -0
  649. package/src/web/components/design/share/shared-links-list.tsx +33 -0
  650. package/src/web/components/design/share/use-share-address.ts +74 -0
  651. package/src/web/components/design/share/use-share-links.ts +93 -0
  652. package/src/web/components/design/use-design-layout.ts +7 -4
  653. package/src/web/components/editor/diff-viewer.tsx +16 -12
  654. package/src/web/components/editor/docx-preview.tsx +7 -2
  655. package/src/web/components/floating-window/close-window.ts +32 -0
  656. package/src/web/components/floating-window/floating-window.tsx +65 -24
  657. package/src/web/components/floating-window/open-tab-in-pip.ts +3 -0
  658. package/src/web/components/floating-window/use-window-drag.ts +33 -7
  659. package/src/web/components/floating-window/use-window-meta.ts +138 -0
  660. package/src/web/components/floating-window/window-chrome-contract.ts +19 -2
  661. package/src/web/components/floating-window/window-dock-layout.ts +72 -0
  662. package/src/web/components/floating-window/window-dock-list.tsx +156 -0
  663. package/src/web/components/floating-window/window-dock.tsx +192 -0
  664. package/src/web/components/floating-window/window-geometry.ts +39 -1
  665. package/src/web/components/floating-window/window-layer.tsx +59 -23
  666. package/src/web/components/floating-window/window-persistence.ts +16 -3
  667. package/src/web/components/floating-window/window-store-types.ts +13 -2
  668. package/src/web/components/floating-window/window-store.ts +75 -8
  669. package/src/web/components/floating-window/window-title-identity.tsx +86 -0
  670. package/src/web/components/layout/status-bar.tsx +3 -0
  671. package/src/web/components/layout/tab-pop-out-menu-item.tsx +2 -2
  672. package/src/web/components/logs/open-logs.ts +0 -1
  673. package/src/web/components/os-explorer/actions/explorer-actions-upload.ts +2 -1
  674. package/src/web/components/os-explorer/skins/macos-window-chrome.tsx +17 -11
  675. package/src/web/components/os-explorer/skins/windows-window-chrome.tsx +14 -5
  676. package/src/web/components/remote-desktop/use-remote-desktop-readiness.ts +8 -3
  677. package/src/web/components/settings/accounts/account-add-dialog.tsx +25 -13
  678. package/src/web/components/settings/accounts/claude-accounts-section.tsx +3 -3
  679. package/src/web/components/settings/ai-settings-section.tsx +0 -20
  680. package/src/web/components/settings/design-settings-section.tsx +3 -0
  681. package/src/web/components/settings/design-window-setting.tsx +28 -0
  682. package/src/web/components/settings/settings-categories.ts +3 -0
  683. package/src/web/components/settings/settings-section-content.tsx +1 -0
  684. package/src/web/components/settings/tools-settings-section.tsx +120 -0
  685. package/src/web/components/shared/docx-html-sanitize.ts +59 -0
  686. package/src/web/components/shared/markdown-code-block.tsx +3 -1
  687. package/src/web/components/shared/markdown-renderer.tsx +15 -3
  688. package/src/web/components/shared/markdown-sanitize.ts +65 -0
  689. package/src/web/components/web-preview/web-preview-tab.tsx +6 -3
  690. package/src/web/design-share-page/index.html +17 -0
  691. package/src/web/design-share-page/main.tsx +11 -0
  692. package/src/web/design-share-page/share-api.ts +131 -0
  693. package/src/web/design-share-page/share-app.tsx +14 -0
  694. package/src/web/design-share-page/share-bottom-sheet.tsx +61 -0
  695. package/src/web/design-share-page/share-canvas.tsx +92 -0
  696. package/src/web/design-share-page/share-composer.tsx +104 -0
  697. package/src/web/design-share-page/share-entry.tsx +92 -0
  698. package/src/web/design-share-page/share-identity.ts +81 -0
  699. package/src/web/design-share-page/share-name-prompt.tsx +59 -0
  700. package/src/web/design-share-page/share-panel-content.tsx +57 -0
  701. package/src/web/design-share-page/share-pins-overlay.tsx +50 -0
  702. package/src/web/design-share-page/share-review.tsx +123 -0
  703. package/src/web/design-share-page/share-states.tsx +78 -0
  704. package/src/web/design-share-page/share-thread-model.ts +83 -0
  705. package/src/web/design-share-page/share-thread-view.tsx +61 -0
  706. package/src/web/design-share-page/share-threads-panel.tsx +103 -0
  707. package/src/web/design-share-page/share-toolbar.tsx +105 -0
  708. package/src/web/design-share-page/share-ui.ts +30 -0
  709. package/src/web/design-share-page/share.css +63 -0
  710. package/src/web/design-share-page/use-share-canvas.ts +51 -0
  711. package/src/web/design-share-page/use-share-info.ts +34 -0
  712. package/src/web/design-share-page/use-share-session.ts +75 -0
  713. package/src/web/design-share-page/use-share-threads.ts +139 -0
  714. package/src/web/hooks/use-chat.ts +5 -2
  715. package/src/web/hooks/use-design-session-redirect.ts +3 -2
  716. package/src/web/hooks/use-git-repo.ts +36 -16
  717. package/src/web/hooks/use-global-events.ts +4 -0
  718. package/src/web/hooks/use-inline-blame.ts +17 -11
  719. package/src/web/hooks/use-notification-clicks.ts +23 -5
  720. package/src/web/hooks/use-session-file-changes.ts +118 -41
  721. package/src/web/hooks/use-url-sync.ts +5 -4
  722. package/src/web/lib/api-settings.ts +2 -0
  723. package/src/web/lib/chat-attempt-lifecycle.ts +3 -1
  724. package/src/web/lib/db-tool-call.ts +57 -0
  725. package/src/web/lib/design/api-design-comments.ts +39 -9
  726. package/src/web/lib/design/api-design-shares.ts +47 -0
  727. package/src/web/lib/design/design-comments-prompt.ts +108 -23
  728. package/src/web/lib/design/design-layout-mode.ts +16 -1
  729. package/src/web/lib/design/design-share-address-state.ts +88 -0
  730. package/src/web/lib/design/design-share-expiry.ts +96 -0
  731. package/src/web/lib/design/design-share-link-status.ts +66 -0
  732. package/src/web/lib/design/design-view-prefs.ts +20 -1
  733. package/src/web/lib/design/open-design-tab.ts +54 -1
  734. package/src/web/lib/git-repo-scope.ts +60 -0
  735. package/src/web/lib/icons.generated.tsx +3 -1
  736. package/src/web/lib/model-display-name.ts +16 -0
  737. package/src/web/lib/open-ai-tab.ts +129 -19
  738. package/src/web/lib/running-agent-rows.ts +52 -0
  739. package/src/web/lib/session-file-changes-client.ts +6 -0
  740. package/src/web/lib/session-file-changes.ts +13 -0
  741. package/src/web/lib/tab-tool-call.ts +37 -1
  742. package/src/web/lib/utils.ts +4 -1
  743. package/src/web/stores/panel-store.ts +13 -1
  744. package/src/web/stores/panel-utils.ts +9 -4
  745. package/src/web/stores/settings-store.ts +14 -0
  746. package/src/web/stores/window-panel-actions.ts +21 -3
  747. package/src/web/stores/window-panel-persistence.ts +2 -1
  748. package/src/web/sw-notification-click.ts +12 -1
  749. package/templates/skill/SKILL.md.tmpl +2 -1
  750. package/templates/skill/common-tasks.md +6 -0
  751. package/vite.config.ts +10 -0
  752. package/vite.share.config.ts +43 -0
  753. package/dist/web/assets/accounts-settings-section-DU-lTifs.js +0 -1
  754. package/dist/web/assets/accounts-settings-section-DU-lTifs.js.br +0 -0
  755. package/dist/web/assets/accounts-settings-section-DU-lTifs.js.gz +0 -0
  756. package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js +0 -1
  757. package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js.br +0 -0
  758. package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js.gz +0 -0
  759. package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js +0 -2
  760. package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js.br +0 -0
  761. package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js.gz +0 -0
  762. package/dist/web/assets/agent-session-sheet-store-BoBrAw5i.js +0 -1
  763. package/dist/web/assets/agent-session-window-content-CB_uvabH.js +0 -1
  764. package/dist/web/assets/agent-session-window-content-CB_uvabH.js.br +0 -0
  765. package/dist/web/assets/agent-session-window-content-CB_uvabH.js.gz +0 -0
  766. package/dist/web/assets/ai-resource-editor-Czearm3I.js +0 -1
  767. package/dist/web/assets/ai-resource-editor-Czearm3I.js.br +0 -0
  768. package/dist/web/assets/ai-resource-editor-Czearm3I.js.gz +0 -0
  769. package/dist/web/assets/ai-settings-section-AOgAUCgH.js +0 -1
  770. package/dist/web/assets/ai-settings-section-B_OFMlrt.js +0 -1
  771. package/dist/web/assets/ai-settings-section-B_OFMlrt.js.br +0 -0
  772. package/dist/web/assets/ai-settings-section-B_OFMlrt.js.gz +0 -0
  773. package/dist/web/assets/android-tab-L7DmLfHG.js +0 -2
  774. package/dist/web/assets/android-tab-L7DmLfHG.js.br +0 -0
  775. package/dist/web/assets/android-tab-L7DmLfHG.js.gz +0 -0
  776. package/dist/web/assets/api-client-DAQfiXg0.js +0 -1
  777. package/dist/web/assets/api-client-OiA8Ida1.js +0 -1
  778. package/dist/web/assets/api-client-OiA8Ida1.js.br +0 -0
  779. package/dist/web/assets/api-client-OiA8Ida1.js.gz +0 -0
  780. package/dist/web/assets/api-settings-D2H6gjen.js +0 -1
  781. package/dist/web/assets/api-settings-D2H6gjen.js.br +0 -0
  782. package/dist/web/assets/api-settings-D2H6gjen.js.gz +0 -0
  783. package/dist/web/assets/api-settings-DHhcUHtx.js +0 -1
  784. package/dist/web/assets/api-themes-CE8gPZ3X.js +0 -1
  785. package/dist/web/assets/appearance-settings-section-s3KWKTBm.js +0 -1
  786. package/dist/web/assets/appearance-settings-section-s3KWKTBm.js.br +0 -0
  787. package/dist/web/assets/appearance-settings-section-s3KWKTBm.js.gz +0 -0
  788. package/dist/web/assets/apps-panel-DaojtUvh.js +0 -1
  789. package/dist/web/assets/apps-panel-DaojtUvh.js.br +0 -0
  790. package/dist/web/assets/apps-panel-DaojtUvh.js.gz +0 -0
  791. package/dist/web/assets/audio-preview-CWcPZqTA.js +0 -1
  792. package/dist/web/assets/audio-preview-CWcPZqTA.js.br +0 -4
  793. package/dist/web/assets/audio-preview-CWcPZqTA.js.gz +0 -0
  794. package/dist/web/assets/branch-review-tab-9UB4ccpF.js +0 -1
  795. package/dist/web/assets/branch-review-tab-9UB4ccpF.js.br +0 -0
  796. package/dist/web/assets/branch-review-tab-9UB4ccpF.js.gz +0 -0
  797. package/dist/web/assets/button-Br60hGkw.js +0 -1
  798. package/dist/web/assets/button-Br60hGkw.js.br +0 -0
  799. package/dist/web/assets/button-Br60hGkw.js.gz +0 -0
  800. package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js +0 -1
  801. package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js.br +0 -0
  802. package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js.gz +0 -0
  803. package/dist/web/assets/chat-tab-DMVb_mgx.js +0 -1
  804. package/dist/web/assets/chat-tab-DMVb_mgx.js.br +0 -0
  805. package/dist/web/assets/chat-tab-DMVb_mgx.js.gz +0 -0
  806. package/dist/web/assets/chat-tab-s7uAnh-h.js +0 -17
  807. package/dist/web/assets/chat-tab-s7uAnh-h.js.br +0 -0
  808. package/dist/web/assets/chat-tab-s7uAnh-h.js.gz +0 -0
  809. package/dist/web/assets/code-editor-JK49X9EX.js +0 -10
  810. package/dist/web/assets/code-editor-JK49X9EX.js.br +0 -0
  811. package/dist/web/assets/code-editor-JK49X9EX.js.gz +0 -0
  812. package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js +0 -1
  813. package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js.br +0 -0
  814. package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js.gz +0 -0
  815. package/dist/web/assets/conflict-editor-rOpVkK9P.js +0 -19
  816. package/dist/web/assets/conflict-editor-rOpVkK9P.js.br +0 -0
  817. package/dist/web/assets/conflict-editor-rOpVkK9P.js.gz +0 -0
  818. package/dist/web/assets/connection-form-tab-BGmb918E.js +0 -4
  819. package/dist/web/assets/connection-form-tab-BGmb918E.js.br +0 -0
  820. package/dist/web/assets/connection-form-tab-BGmb918E.js.gz +0 -0
  821. package/dist/web/assets/context-menu-BoQ6lxte.js +0 -1
  822. package/dist/web/assets/context-menu-BoQ6lxte.js.br +0 -0
  823. package/dist/web/assets/context-menu-BoQ6lxte.js.gz +0 -0
  824. package/dist/web/assets/createLucideIcon-DBXq3G0e.js +0 -1
  825. package/dist/web/assets/createLucideIcon-DBXq3G0e.js.br +0 -0
  826. package/dist/web/assets/createLucideIcon-DBXq3G0e.js.gz +0 -0
  827. package/dist/web/assets/csv-preview-CM7su92m.js +0 -10
  828. package/dist/web/assets/csv-preview-CM7su92m.js.br +0 -0
  829. package/dist/web/assets/csv-preview-CM7su92m.js.gz +0 -0
  830. package/dist/web/assets/database-drivers-section-C6ZKPWaE.js +0 -1
  831. package/dist/web/assets/database-drivers-section-C6ZKPWaE.js.br +0 -0
  832. package/dist/web/assets/database-drivers-section-C6ZKPWaE.js.gz +0 -0
  833. package/dist/web/assets/db-explorer-store-BcLxq-X0.js +0 -1
  834. package/dist/web/assets/db-explorer-store-BcLxq-X0.js.br +0 -0
  835. package/dist/web/assets/db-explorer-store-BcLxq-X0.js.gz +0 -0
  836. package/dist/web/assets/db-tab-parts-DvmnlA6V.js +0 -1
  837. package/dist/web/assets/db-tab-parts-DvmnlA6V.js.br +0 -0
  838. package/dist/web/assets/db-tab-parts-DvmnlA6V.js.gz +0 -0
  839. package/dist/web/assets/db-types-9ac-eYxf.js +0 -1
  840. package/dist/web/assets/db-types-9ac-eYxf.js.br +0 -0
  841. package/dist/web/assets/db-types-9ac-eYxf.js.gz +0 -0
  842. package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js +0 -1
  843. package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js.br +0 -0
  844. package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js.gz +0 -0
  845. package/dist/web/assets/design-export-client-ClwRg798.js +0 -1
  846. package/dist/web/assets/design-export-client-ClwRg798.js.br +0 -0
  847. package/dist/web/assets/design-export-client-ClwRg798.js.gz +0 -0
  848. package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js +0 -1
  849. package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js.br +0 -0
  850. package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js.gz +0 -0
  851. package/dist/web/assets/design-settings-section-CuxZSLAr.js +0 -2
  852. package/dist/web/assets/design-settings-section-CuxZSLAr.js.br +0 -0
  853. package/dist/web/assets/design-settings-section-CuxZSLAr.js.gz +0 -0
  854. package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js +0 -3
  855. package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js.br +0 -0
  856. package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js.gz +0 -0
  857. package/dist/web/assets/design-tab-JlKmHVkd.js +0 -57
  858. package/dist/web/assets/design-tab-JlKmHVkd.js.br +0 -0
  859. package/dist/web/assets/design-tab-JlKmHVkd.js.gz +0 -0
  860. package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js +0 -1
  861. package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js.br +0 -0
  862. package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js.gz +0 -0
  863. package/dist/web/assets/dialog-DOaEX6AK.js +0 -1
  864. package/dist/web/assets/dialog-DOaEX6AK.js.br +0 -0
  865. package/dist/web/assets/dialog-DOaEX6AK.js.gz +0 -0
  866. package/dist/web/assets/diff-viewer-FidH7Nsq.js +0 -4
  867. package/dist/web/assets/diff-viewer-FidH7Nsq.js.br +0 -0
  868. package/dist/web/assets/diff-viewer-FidH7Nsq.js.gz +0 -0
  869. package/dist/web/assets/docx-preview-ENiLGqzy.js +0 -12
  870. package/dist/web/assets/docx-preview-ENiLGqzy.js.br +0 -0
  871. package/dist/web/assets/docx-preview-ENiLGqzy.js.gz +0 -0
  872. package/dist/web/assets/dropdown-menu-DB3yyoVz.js +0 -1
  873. package/dist/web/assets/dropdown-menu-DB3yyoVz.js.br +0 -0
  874. package/dist/web/assets/dropdown-menu-DB3yyoVz.js.gz +0 -0
  875. package/dist/web/assets/edit-diff-preview-D4EqC86X.js +0 -7
  876. package/dist/web/assets/edit-diff-preview-D4EqC86X.js.br +0 -0
  877. package/dist/web/assets/edit-diff-preview-D4EqC86X.js.gz +0 -0
  878. package/dist/web/assets/editor-dialog-DC7dUWAX.js +0 -1
  879. package/dist/web/assets/editor-dialog-DC7dUWAX.js.br +0 -0
  880. package/dist/web/assets/editor-dialog-DC7dUWAX.js.gz +0 -0
  881. package/dist/web/assets/editor-language-service-0pN0TxYN.js +0 -1
  882. package/dist/web/assets/editor-language-service-0pN0TxYN.js.br +0 -0
  883. package/dist/web/assets/editor-language-service-0pN0TxYN.js.gz +0 -0
  884. package/dist/web/assets/explorer-body-tFaUp9_Q.js +0 -2
  885. package/dist/web/assets/explorer-body-tFaUp9_Q.js.br +0 -0
  886. package/dist/web/assets/explorer-body-tFaUp9_Q.js.gz +0 -0
  887. package/dist/web/assets/explorer-model-BmgFEsj1.js +0 -1
  888. package/dist/web/assets/explorer-model-BmgFEsj1.js.br +0 -0
  889. package/dist/web/assets/explorer-model-BmgFEsj1.js.gz +0 -0
  890. package/dist/web/assets/explorer-window-content-XnRTZT_X.js +0 -1
  891. package/dist/web/assets/explorer-window-content-XnRTZT_X.js.br +0 -0
  892. package/dist/web/assets/explorer-window-content-XnRTZT_X.js.gz +0 -0
  893. package/dist/web/assets/extension-manager-section-DEbwRPf1.js +0 -1
  894. package/dist/web/assets/extension-manager-section-DEbwRPf1.js.br +0 -0
  895. package/dist/web/assets/extension-manager-section-DEbwRPf1.js.gz +0 -0
  896. package/dist/web/assets/extension-webview-C9ApceLU.js +0 -12
  897. package/dist/web/assets/extension-webview-C9ApceLU.js.br +0 -0
  898. package/dist/web/assets/extension-webview-C9ApceLU.js.gz +0 -0
  899. package/dist/web/assets/file-diff-lX1a7RLF.js +0 -1
  900. package/dist/web/assets/file-icons-DpwcJLL4.js +0 -1
  901. package/dist/web/assets/file-icons-DpwcJLL4.js.br +0 -0
  902. package/dist/web/assets/file-icons-DpwcJLL4.js.gz +0 -0
  903. package/dist/web/assets/file-store-Bk1WYfdy.js +0 -1
  904. package/dist/web/assets/file-store-Bk1WYfdy.js.br +0 -0
  905. package/dist/web/assets/file-store-Bk1WYfdy.js.gz +0 -0
  906. package/dist/web/assets/files-settings-section-C8MacVFQ.js +0 -1
  907. package/dist/web/assets/files-settings-section-C8MacVFQ.js.br +0 -0
  908. package/dist/web/assets/files-settings-section-C8MacVFQ.js.gz +0 -0
  909. package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js +0 -1
  910. package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js.br +0 -0
  911. package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js.gz +0 -0
  912. package/dist/web/assets/format-file-meta-C0LKHE3e.js +0 -1
  913. package/dist/web/assets/format-file-meta-C0LKHE3e.js.br +0 -0
  914. package/dist/web/assets/format-file-meta-C0LKHE3e.js.gz +0 -0
  915. package/dist/web/assets/fs-api-BQrIEcvo.js +0 -1
  916. package/dist/web/assets/fs-api-BQrIEcvo.js.br +0 -0
  917. package/dist/web/assets/fs-api-BQrIEcvo.js.gz +0 -0
  918. package/dist/web/assets/general-settings-section-DZRRGdlQ.js +0 -1
  919. package/dist/web/assets/general-settings-section-DZRRGdlQ.js.br +0 -0
  920. package/dist/web/assets/general-settings-section-DZRRGdlQ.js.gz +0 -0
  921. package/dist/web/assets/git-commit-horizontal-BVihXafd.js +0 -1
  922. package/dist/web/assets/git-log-panel-g2pBnu6r.js +0 -1
  923. package/dist/web/assets/git-log-panel-g2pBnu6r.js.br +0 -0
  924. package/dist/web/assets/git-log-panel-g2pBnu6r.js.gz +0 -0
  925. package/dist/web/assets/git-repo-store-BOYLnV67.js +0 -1
  926. package/dist/web/assets/git-repo-store-BOYLnV67.js.br +0 -0
  927. package/dist/web/assets/git-repo-store-BOYLnV67.js.gz +0 -0
  928. package/dist/web/assets/git-review-tab-BzI5mxWd.js +0 -3
  929. package/dist/web/assets/git-review-tab-BzI5mxWd.js.br +0 -0
  930. package/dist/web/assets/git-review-tab-BzI5mxWd.js.gz +0 -0
  931. package/dist/web/assets/glide-data-grid-BxvI3ehr.js +0 -177
  932. package/dist/web/assets/glide-data-grid-BxvI3ehr.js.br +0 -0
  933. package/dist/web/assets/glide-data-grid-BxvI3ehr.js.gz +0 -0
  934. package/dist/web/assets/grid-save-dialog-D55Po6Vu.js +0 -2
  935. package/dist/web/assets/grid-save-dialog-D55Po6Vu.js.br +0 -0
  936. package/dist/web/assets/grid-save-dialog-D55Po6Vu.js.gz +0 -0
  937. package/dist/web/assets/group-chat-tab-CoMC-Fx1.js +0 -1
  938. package/dist/web/assets/group-chat-tab-CoMC-Fx1.js.br +0 -0
  939. package/dist/web/assets/group-chat-tab-CoMC-Fx1.js.gz +0 -0
  940. package/dist/web/assets/icons-JMA45Ifw.js +0 -1
  941. package/dist/web/assets/icons-JMA45Ifw.js.br +0 -0
  942. package/dist/web/assets/icons-JMA45Ifw.js.gz +0 -0
  943. package/dist/web/assets/image-preview-D7KR11Xo.js +0 -1
  944. package/dist/web/assets/impexp-tab-JF6JF8eO.js +0 -1
  945. package/dist/web/assets/impexp-tab-JF6JF8eO.js.br +0 -0
  946. package/dist/web/assets/impexp-tab-JF6JF8eO.js.gz +0 -0
  947. package/dist/web/assets/index-DyYGWFVa.css +0 -1
  948. package/dist/web/assets/index-DyYGWFVa.css.br +0 -0
  949. package/dist/web/assets/index-DyYGWFVa.css.gz +0 -0
  950. package/dist/web/assets/index-ItT-dTPV.js +0 -59
  951. package/dist/web/assets/index-ItT-dTPV.js.br +0 -0
  952. package/dist/web/assets/index-ItT-dTPV.js.gz +0 -0
  953. package/dist/web/assets/input-CKGoVpYv.js +0 -1
  954. package/dist/web/assets/jira-watcher-section-CvyXLyjO.js +0 -1
  955. package/dist/web/assets/keybindings-store-CeEtx6js.js +0 -1
  956. package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js +0 -1
  957. package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js.br +0 -0
  958. package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js.gz +0 -0
  959. package/dist/web/assets/language-servers-section-DiYURB24.js +0 -2
  960. package/dist/web/assets/language-servers-section-DiYURB24.js.br +0 -0
  961. package/dist/web/assets/language-servers-section-DiYURB24.js.gz +0 -0
  962. package/dist/web/assets/logs-app-CJlNqOdc.js +0 -13
  963. package/dist/web/assets/logs-app-CJlNqOdc.js.br +0 -0
  964. package/dist/web/assets/logs-app-CJlNqOdc.js.gz +0 -0
  965. package/dist/web/assets/logs-tab-BoAlm_8H.js +0 -1
  966. package/dist/web/assets/logs-window-content-nNm4jl1s.js +0 -1
  967. package/dist/web/assets/lsp-client-LnKiMWeG.js +0 -1
  968. package/dist/web/assets/lsp-client-LnKiMWeG.js.br +0 -0
  969. package/dist/web/assets/lsp-client-LnKiMWeG.js.gz +0 -0
  970. package/dist/web/assets/markdown-renderer-8Hef5MLx.js +0 -1
  971. package/dist/web/assets/markdown-renderer-BH_CFPJw.js +0 -5
  972. package/dist/web/assets/markdown-renderer-BH_CFPJw.js.br +0 -0
  973. package/dist/web/assets/markdown-renderer-BH_CFPJw.js.gz +0 -0
  974. package/dist/web/assets/media-url-CsdZ6q_T.js +0 -1
  975. package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js +0 -1
  976. package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js.br +0 -0
  977. package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js.gz +0 -0
  978. package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js +0 -1
  979. package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js.br +0 -0
  980. package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js.gz +0 -0
  981. package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js +0 -1
  982. package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js.br +0 -0
  983. package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js.gz +0 -0
  984. package/dist/web/assets/new-design-dialog-CgBUrVFx.js +0 -1
  985. package/dist/web/assets/new-design-dialog-CgBUrVFx.js.br +0 -0
  986. package/dist/web/assets/new-design-dialog-CgBUrVFx.js.gz +0 -0
  987. package/dist/web/assets/notification-store-CXC7u6MW.js +0 -1
  988. package/dist/web/assets/notifications-settings-section-CPbx23nU.js +0 -1
  989. package/dist/web/assets/notifications-settings-section-CPbx23nU.js.br +0 -0
  990. package/dist/web/assets/notifications-settings-section-CPbx23nU.js.gz +0 -0
  991. package/dist/web/assets/onboarding-entry--MWe4amV.js +0 -1
  992. package/dist/web/assets/onboarding-entry--MWe4amV.js.br +0 -0
  993. package/dist/web/assets/onboarding-entry--MWe4amV.js.gz +0 -0
  994. package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js +0 -1
  995. package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js.br +0 -0
  996. package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js.gz +0 -0
  997. package/dist/web/assets/open-db-tabs-CkQe49j_.js +0 -1
  998. package/dist/web/assets/open-db-tabs-CkQe49j_.js.br +0 -0
  999. package/dist/web/assets/open-db-tabs-CkQe49j_.js.gz +0 -0
  1000. package/dist/web/assets/open-settings-DsGBn73g.js +0 -1
  1001. package/dist/web/assets/overview-panel-CcUGDvnt.js +0 -1
  1002. package/dist/web/assets/overview-panel-CcUGDvnt.js.br +0 -0
  1003. package/dist/web/assets/overview-panel-CcUGDvnt.js.gz +0 -0
  1004. package/dist/web/assets/panel-store-DmP16Fo0.js +0 -1
  1005. package/dist/web/assets/panel-store-DmP16Fo0.js.br +0 -0
  1006. package/dist/web/assets/panel-store-DmP16Fo0.js.gz +0 -0
  1007. package/dist/web/assets/patch-tab-metadata-B-jH5svY.js +0 -1
  1008. package/dist/web/assets/pdf-preview-DMUIWb9B.js +0 -1
  1009. package/dist/web/assets/pdf-preview-DMUIWb9B.js.br +0 -0
  1010. package/dist/web/assets/pdf-preview-DMUIWb9B.js.gz +0 -0
  1011. package/dist/web/assets/performance-panel-CJDLUwrs.js +0 -3
  1012. package/dist/web/assets/performance-panel-CJDLUwrs.js.br +0 -0
  1013. package/dist/web/assets/performance-panel-CJDLUwrs.js.gz +0 -0
  1014. package/dist/web/assets/portal-container-context-BXAsDqrB.js +0 -1
  1015. package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js +0 -1
  1016. package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js.br +0 -0
  1017. package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js.gz +0 -0
  1018. package/dist/web/assets/pptx-export-BxmgltJ4.js +0 -111
  1019. package/dist/web/assets/pptx-export-BxmgltJ4.js.br +0 -0
  1020. package/dist/web/assets/pptx-export-BxmgltJ4.js.gz +0 -0
  1021. package/dist/web/assets/problems-panel-DX32QDH_.js +0 -1
  1022. package/dist/web/assets/problems-panel-DX32QDH_.js.br +0 -0
  1023. package/dist/web/assets/problems-panel-DX32QDH_.js.gz +0 -0
  1024. package/dist/web/assets/process-row-format-CBw-CQCx.js +0 -1
  1025. package/dist/web/assets/process-table-CX-NhOg6.js +0 -1
  1026. package/dist/web/assets/process-table-CX-NhOg6.js.br +0 -0
  1027. package/dist/web/assets/process-table-CX-NhOg6.js.gz +0 -0
  1028. package/dist/web/assets/project-framework-store-Bi5dyHdx.js +0 -1
  1029. package/dist/web/assets/project-store-CEGoLMOl.js +0 -1
  1030. package/dist/web/assets/project-store-CEGoLMOl.js.br +0 -0
  1031. package/dist/web/assets/project-store-CEGoLMOl.js.gz +0 -0
  1032. package/dist/web/assets/proxy-settings-section-BGNvFe7e.js +0 -1
  1033. package/dist/web/assets/proxy-settings-section-BGNvFe7e.js.br +0 -0
  1034. package/dist/web/assets/proxy-settings-section-BGNvFe7e.js.gz +0 -0
  1035. package/dist/web/assets/query-audit-section-DTHI5GP7.js +0 -1
  1036. package/dist/web/assets/query-audit-section-DTHI5GP7.js.br +0 -0
  1037. package/dist/web/assets/query-audit-section-DTHI5GP7.js.gz +0 -0
  1038. package/dist/web/assets/query-tab-qMlIkHRk.js +0 -22
  1039. package/dist/web/assets/query-tab-qMlIkHRk.js.br +0 -0
  1040. package/dist/web/assets/query-tab-qMlIkHRk.js.gz +0 -0
  1041. package/dist/web/assets/react-PkBxFcos.js +0 -1
  1042. package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js +0 -1
  1043. package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js.br +0 -0
  1044. package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js.gz +0 -0
  1045. package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js +0 -1
  1046. package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js.br +0 -0
  1047. package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js.gz +0 -0
  1048. package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js +0 -2
  1049. package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js.br +0 -0
  1050. package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js.gz +0 -0
  1051. package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js +0 -1
  1052. package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js.br +0 -0
  1053. package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js.gz +0 -0
  1054. package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js +0 -1
  1055. package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js.br +0 -0
  1056. package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js.gz +0 -0
  1057. package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js +0 -1
  1058. package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js.br +0 -0
  1059. package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js.gz +0 -0
  1060. package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js +0 -1
  1061. package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js.br +0 -0
  1062. package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js.gz +0 -0
  1063. package/dist/web/assets/rename-object-dialog-FSlcdUoB.js +0 -1
  1064. package/dist/web/assets/rename-object-dialog-FSlcdUoB.js.br +0 -0
  1065. package/dist/web/assets/rename-object-dialog-FSlcdUoB.js.gz +0 -0
  1066. package/dist/web/assets/review-code-CfuJeLYd.js +0 -5
  1067. package/dist/web/assets/review-code-CfuJeLYd.js.br +0 -0
  1068. package/dist/web/assets/review-code-CfuJeLYd.js.gz +0 -0
  1069. package/dist/web/assets/run-in-terminal-Bk9Bw7G1.js +0 -1
  1070. package/dist/web/assets/run-in-terminal-button-DFPQUlZs.js +0 -1
  1071. package/dist/web/assets/save-as-dialog-Bj9VpGYf.js +0 -1
  1072. package/dist/web/assets/save-as-dialog-Bj9VpGYf.js.br +0 -0
  1073. package/dist/web/assets/save-as-dialog-Bj9VpGYf.js.gz +0 -0
  1074. package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js +0 -1
  1075. package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js.br +0 -0
  1076. package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js.gz +0 -0
  1077. package/dist/web/assets/scroll-area-6Am1KMiB.js +0 -1
  1078. package/dist/web/assets/scroll-area-6Am1KMiB.js.br +0 -0
  1079. package/dist/web/assets/scroll-area-6Am1KMiB.js.gz +0 -0
  1080. package/dist/web/assets/send-to-chat-Bcm_Lcog.js +0 -1
  1081. package/dist/web/assets/send-to-chat-Bcm_Lcog.js.br +0 -0
  1082. package/dist/web/assets/send-to-chat-Bcm_Lcog.js.gz +0 -0
  1083. package/dist/web/assets/separator-BOYUIPkH.js +0 -1
  1084. package/dist/web/assets/services-panel-CBRTsROB.js +0 -1
  1085. package/dist/web/assets/services-panel-CBRTsROB.js.br +0 -0
  1086. package/dist/web/assets/services-panel-CBRTsROB.js.gz +0 -0
  1087. package/dist/web/assets/session-changes-bar-BRopa3Dh.js +0 -1
  1088. package/dist/web/assets/session-changes-bar-BRopa3Dh.js.br +0 -0
  1089. package/dist/web/assets/session-changes-bar-BRopa3Dh.js.gz +0 -0
  1090. package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js +0 -1
  1091. package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js.br +0 -0
  1092. package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js.gz +0 -0
  1093. package/dist/web/assets/session-review-tab--kNB_FKQ.js +0 -6
  1094. package/dist/web/assets/session-review-tab--kNB_FKQ.js.br +0 -0
  1095. package/dist/web/assets/session-review-tab--kNB_FKQ.js.gz +0 -0
  1096. package/dist/web/assets/settings-body-B-s0fEjc.js +0 -1
  1097. package/dist/web/assets/settings-body-B-s0fEjc.js.br +0 -0
  1098. package/dist/web/assets/settings-body-B-s0fEjc.js.gz +0 -0
  1099. package/dist/web/assets/settings-categories-CcR9eL3x.js +0 -1
  1100. package/dist/web/assets/settings-categories-CcR9eL3x.js.br +0 -0
  1101. package/dist/web/assets/settings-categories-CcR9eL3x.js.gz +0 -0
  1102. package/dist/web/assets/settings-section-content-BJ35dy5r.js +0 -1
  1103. package/dist/web/assets/settings-section-content-DckksvTg.js +0 -2
  1104. package/dist/web/assets/settings-section-content-DckksvTg.js.br +0 -0
  1105. package/dist/web/assets/settings-section-content-DckksvTg.js.gz +0 -0
  1106. package/dist/web/assets/settings-store-WeJyQVL8.js +0 -2
  1107. package/dist/web/assets/settings-store-WeJyQVL8.js.br +0 -0
  1108. package/dist/web/assets/settings-store-WeJyQVL8.js.gz +0 -0
  1109. package/dist/web/assets/settings-tab-BlX33GEN.js +0 -1
  1110. package/dist/web/assets/settings-window-content-B-7yV1_q.js +0 -1
  1111. package/dist/web/assets/slash-command-picker-BBcy6w6m.js +0 -1
  1112. package/dist/web/assets/slash-command-picker-BBcy6w6m.js.br +0 -0
  1113. package/dist/web/assets/slash-command-picker-BBcy6w6m.js.gz +0 -0
  1114. package/dist/web/assets/sortable-header-B9gfWik4.js +0 -1
  1115. package/dist/web/assets/sortable-header-B9gfWik4.js.br +0 -0
  1116. package/dist/web/assets/sortable-header-B9gfWik4.js.gz +0 -0
  1117. package/dist/web/assets/sql-completion-provider-CaTHVr1l.js +0 -5
  1118. package/dist/web/assets/sql-completion-provider-CaTHVr1l.js.br +0 -0
  1119. package/dist/web/assets/sql-completion-provider-CaTHVr1l.js.gz +0 -0
  1120. package/dist/web/assets/sql-object-tab-DVo4bxRI.js +0 -1
  1121. package/dist/web/assets/sql-object-tab-DVo4bxRI.js.br +0 -0
  1122. package/dist/web/assets/sql-object-tab-DVo4bxRI.js.gz +0 -0
  1123. package/dist/web/assets/sqlite-viewer-BGfIpl5x.js +0 -1
  1124. package/dist/web/assets/sqlite-viewer-BGfIpl5x.js.br +0 -0
  1125. package/dist/web/assets/sqlite-viewer-BGfIpl5x.js.gz +0 -0
  1126. package/dist/web/assets/start-ellipsis-rBh37k0n.js +0 -1
  1127. package/dist/web/assets/structure-save-dialog-STK_RFCK.js +0 -1
  1128. package/dist/web/assets/structure-save-dialog-STK_RFCK.js.br +0 -0
  1129. package/dist/web/assets/structure-save-dialog-STK_RFCK.js.gz +0 -0
  1130. package/dist/web/assets/structure-tab-DuLnsTC4.js +0 -3
  1131. package/dist/web/assets/structure-tab-DuLnsTC4.js.br +0 -0
  1132. package/dist/web/assets/structure-tab-DuLnsTC4.js.gz +0 -0
  1133. package/dist/web/assets/system-monitor-body-BIjW16Pb.js +0 -2
  1134. package/dist/web/assets/system-monitor-body-BIjW16Pb.js.br +0 -0
  1135. package/dist/web/assets/system-monitor-body-BIjW16Pb.js.gz +0 -0
  1136. package/dist/web/assets/system-monitor-tab-B6_tC9LO.js +0 -1
  1137. package/dist/web/assets/system-monitor-window-content-CwBzqMUe.js +0 -1
  1138. package/dist/web/assets/tab-host-window-content-CpdEjkZd.js +0 -1
  1139. package/dist/web/assets/tab-host-window-content-CpdEjkZd.js.br +0 -0
  1140. package/dist/web/assets/tab-host-window-content-CpdEjkZd.js.gz +0 -0
  1141. package/dist/web/assets/tab-store-nNzRNfVV.js +0 -1
  1142. package/dist/web/assets/table-tab-B5asfTBP.js +0 -2
  1143. package/dist/web/assets/table-tab-B5asfTBP.js.br +0 -0
  1144. package/dist/web/assets/table-tab-B5asfTBP.js.gz +0 -0
  1145. package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js +0 -1
  1146. package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js.br +0 -0
  1147. package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js.gz +0 -0
  1148. package/dist/web/assets/terminal-tab-DpMONMVB.js +0 -3
  1149. package/dist/web/assets/terminal-tab-DpMONMVB.js.br +0 -0
  1150. package/dist/web/assets/terminal-tab-DpMONMVB.js.gz +0 -0
  1151. package/dist/web/assets/tool-cards-DoDKxqN4.js +0 -14
  1152. package/dist/web/assets/tool-cards-DoDKxqN4.js.br +0 -0
  1153. package/dist/web/assets/tool-cards-DoDKxqN4.js.gz +0 -0
  1154. package/dist/web/assets/use-at-most-wide-BQFi1Sjv.js +0 -1
  1155. package/dist/web/assets/use-blob-url-D7ElNPnW.js +0 -1
  1156. package/dist/web/assets/use-db-driver-installed-BscdI-wS.js +0 -1
  1157. package/dist/web/assets/use-db-read-DYuyNA5i.js +0 -1
  1158. package/dist/web/assets/use-db-read-DYuyNA5i.js.br +0 -0
  1159. package/dist/web/assets/use-db-read-DYuyNA5i.js.gz +0 -0
  1160. package/dist/web/assets/use-db-tab-Cr4lXxwF.js +0 -1
  1161. package/dist/web/assets/use-db-tab-Cr4lXxwF.js.br +0 -0
  1162. package/dist/web/assets/use-db-tab-Cr4lXxwF.js.gz +0 -0
  1163. package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js +0 -1
  1164. package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js.br +0 -0
  1165. package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js.gz +0 -0
  1166. package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js +0 -1
  1167. package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js.br +0 -0
  1168. package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js.gz +0 -0
  1169. package/dist/web/assets/use-inline-blame-DS0HrHJ3.js +0 -16
  1170. package/dist/web/assets/use-inline-blame-DS0HrHJ3.js.br +0 -0
  1171. package/dist/web/assets/use-inline-blame-DS0HrHJ3.js.gz +0 -0
  1172. package/dist/web/assets/use-is-mobile-BXHbkfs9.js +0 -1
  1173. package/dist/web/assets/use-lsp-BTVDYrt6.js +0 -6
  1174. package/dist/web/assets/use-lsp-BTVDYrt6.js.br +0 -0
  1175. package/dist/web/assets/use-lsp-BTVDYrt6.js.gz +0 -0
  1176. package/dist/web/assets/use-monaco-theme-DqnhExsm.js +0 -1
  1177. package/dist/web/assets/use-opener-focus-C5L5UUJs.js +0 -1
  1178. package/dist/web/assets/use-process-kill-D-SGQxDn.js +0 -1
  1179. package/dist/web/assets/use-process-kill-D-SGQxDn.js.br +0 -0
  1180. package/dist/web/assets/use-process-kill-D-SGQxDn.js.gz +0 -0
  1181. package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js +0 -4
  1182. package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js.br +0 -0
  1183. package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js.gz +0 -0
  1184. package/dist/web/assets/use-visual-viewport-CQ6-A0Dt.js +0 -1
  1185. package/dist/web/assets/use-websocket-C6RnlNVJ.js +0 -1
  1186. package/dist/web/assets/vendor-markdown-QKPNiWEd.js +0 -291
  1187. package/dist/web/assets/vendor-markdown-QKPNiWEd.js.br +0 -0
  1188. package/dist/web/assets/vendor-markdown-QKPNiWEd.js.gz +0 -0
  1189. package/dist/web/assets/vendor-ui-CS1GvlOm.js +0 -45
  1190. package/dist/web/assets/vendor-ui-CS1GvlOm.js.br +0 -0
  1191. package/dist/web/assets/vendor-ui-CS1GvlOm.js.gz +0 -0
  1192. package/dist/web/assets/video-preview-CYzeUPfH.js +0 -1
  1193. package/dist/web/assets/video-preview-CYzeUPfH.js.br +0 -0
  1194. package/dist/web/assets/video-preview-CYzeUPfH.js.gz +0 -0
  1195. package/dist/web/assets/voice-settings-section-C01d-toF.js +0 -1
  1196. package/dist/web/assets/voice-settings-section-C01d-toF.js.br +0 -0
  1197. package/dist/web/assets/voice-settings-section-C01d-toF.js.gz +0 -0
  1198. package/dist/web/assets/web-preview-tab-F5C3quQs.js +0 -1
  1199. package/dist/web/assets/web-preview-tab-F5C3quQs.js.br +0 -0
  1200. package/dist/web/assets/web-preview-tab-F5C3quQs.js.gz +0 -0
  1201. package/dist/web/assets/window-pip-registry-DSoB7T3k.js +0 -1
  1202. package/dist/web/assets/window-store-zJczRsv4.js +0 -1
  1203. package/dist/web/assets/window-store-zJczRsv4.js.br +0 -0
  1204. package/dist/web/assets/window-store-zJczRsv4.js.gz +0 -0
  1205. package/dist/web/assets/ws-auth-cWeQ7_61.js +0 -1
  1206. /package/dist/web/assets/{__vite-browser-external-B4VNaaaA.js → __vite-browser-external-DL4jXWNt.js} +0 -0
  1207. /package/dist/web/assets/{clipboard-D3XnL7CB.js → clipboard-D-VCry-F.js} +0 -0
  1208. /package/dist/web/assets/{clipboard-D3XnL7CB.js.br → clipboard-D-VCry-F.js.br} +0 -0
  1209. /package/dist/web/assets/{clipboard-D3XnL7CB.js.gz → clipboard-D-VCry-F.js.gz} +0 -0
  1210. /package/dist/web/assets/{code-fence-vHZyBehL.js → code-fence-BK57HRhJ.js} +0 -0
  1211. /package/dist/web/assets/{design-system-status-label-Cus6e2Df.js → design-system-status-label-KA4ESjWe.js} +0 -0
  1212. /package/dist/web/assets/{format-bytes-B2kC4sbB.js → format-bytes-he3TR0bV.js} +0 -0
  1213. /package/dist/web/assets/{session-turns-gmrmXzeg.js → session-turns-D3QpTtCq.js} +0 -0
  1214. /package/dist/web/assets/{session-turns-gmrmXzeg.js.br → session-turns-D3QpTtCq.js.br} +0 -0
  1215. /package/dist/web/assets/{session-turns-gmrmXzeg.js.gz → session-turns-D3QpTtCq.js.gz} +0 -0
  1216. /package/dist/web/assets/{vendor-xterm-sFX94k3w.js → vendor-xterm-DRhOk3kW.js} +0 -0
  1217. /package/dist/web/assets/{vendor-xterm-sFX94k3w.js.br → vendor-xterm-DRhOk3kW.js.br} +0 -0
  1218. /package/dist/web/assets/{vendor-xterm-sFX94k3w.js.gz → vendor-xterm-DRhOk3kW.js.gz} +0 -0
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{L as r,P as i,X as a,on as o,pn as s,r as c}from"./icons-JMA45Ifw.js";import"./api-client-OiA8Ida1.js";import{n as l}from"./utils-Bslrbb-G.js";import{t as u}from"./panel-store-DmP16Fo0.js";import"./window-store-zJczRsv4.js";import{i as d}from"./project-store-CEGoLMOl.js";import"./project-framework-store-Bi5dyHdx.js";import"./session-list-sync-triggers-DitiR5h1.js";import{n as f}from"./use-is-mobile-BXHbkfs9.js";import{n as p}from"./file-icons-DpwcJLL4.js";import{ct as m,dt as h,ft as g,lt as _,ni as v,ut as y}from"./index-ItT-dTPV.js";var b=e(t(),1),x=n();function S(){let e=g(v(e=>e.files)),t=d(e=>e.activeProject?.name??null),n=f(),[o,s]=(0,b.useState)(new Set),[S,D]=(0,b.useState)(``),O=(0,b.useMemo)(()=>m(e,t),[e,t]),k=(0,b.useMemo)(()=>{let e=h(O),t=S.trim().toLowerCase();return t?e.map(e=>({...e,diagnostics:e.filePath.toLowerCase().includes(t)?e.diagnostics:e.diagnostics.filter(e=>C(e,t))})).filter(e=>e.diagnostics.length>0):e},[O,S]),A=(0,b.useMemo)(()=>_(O),[O]),j=k.reduce((e,t)=>e+t.diagnostics.length,0);function M(e,t){let{grid:n,focusedPanelId:r,openTab:i}=u.getState(),a=n.flat(),o=a.includes(r)?r:a[0];i({type:`editor`,title:e.filePath.split(`/`).pop()??e.filePath,metadata:{filePath:e.filePath,projectName:e.projectName,lineNumber:t.range.start.line+1},projectId:e.projectName,closable:!0},o)}function N(e){s(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}return Object.keys(O).length===0?(0,x.jsxs)(`div`,{className:`p-4 space-y-2`,children:[(0,x.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`No problems have been detected in the open files.`}),(0,x.jsx)(`p`,{className:`text-[11px] text-text-subtle/70 leading-relaxed`,children:`Diagnostics come from the language server for each file you open, so a file that has never been opened is not checked.`})]}):(0,x.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,x.jsxs)(`div`,{className:`shrink-0 p-2 space-y-2 border-b border-border-soft`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 text-[11px] text-text-3`,children:[(0,x.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,x.jsx)(a,{className:`size-3 text-error`}),A.errors]}),(0,x.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,x.jsx)(c,{className:`size-3 text-warning`}),A.warnings]}),(0,x.jsxs)(`span`,{className:`ml-auto text-text-subtle`,children:[k.length,` file`,k.length===1?``:`s`]})]}),(0,x.jsx)(`input`,{value:S,onChange:e=>D(e.target.value),placeholder:`Filter problems`,className:l(`w-full rounded border border-border bg-surface px-2 text-xs outline-none focus:border-primary`,n?`min-h-11`:`py-1`)})]}),(0,x.jsxs)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:[j===0&&(0,x.jsxs)(`p`,{className:`p-4 text-xs text-text-subtle`,children:[`No problems match “`,S.trim(),`”.`]}),k.map(e=>{let t=y(e.projectName,e.filePath),a=o.has(t);return(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`button`,{type:`button`,onClick:()=>N(t),className:l(`w-full flex items-center gap-1 px-2 text-left hover:bg-surface-elevated transition-colors`,n?`min-h-11`:`py-1`),children:[a?(0,x.jsx)(r,{className:`size-3 shrink-0 text-text-subtle`}):(0,x.jsx)(i,{className:`size-3 shrink-0 text-text-subtle`}),(0,x.jsx)(p,{name:e.filePath,className:`size-3.5`}),(0,x.jsx)(`span`,{className:`text-xs truncate`,children:e.filePath.split(`/`).pop()}),(0,x.jsx)(`span`,{className:`text-[10px] text-text-subtle truncate min-w-0`,children:E(e.filePath)}),(0,x.jsx)(`span`,{className:`ml-auto shrink-0 rounded-full bg-surface-elevated px-1.5 text-[10px] text-text-3`,children:e.diagnostics.length})]}),!a&&e.diagnostics.map((t,r)=>(0,x.jsxs)(`button`,{type:`button`,onClick:()=>M(e,t),title:t.message,className:l(`w-full flex items-start gap-1.5 pl-6 pr-2 text-left hover:bg-surface-elevated transition-colors`,n?`min-h-11 py-2`:`py-0.5`),children:[(0,x.jsx)(w,{severity:t.severity}),(0,x.jsx)(`span`,{className:l(`flex-1 min-w-0 text-xs text-text-2`,n?`break-words`:`truncate`),children:t.message}),(0,x.jsxs)(`span`,{className:`shrink-0 text-[10px] text-text-subtle font-mono pt-px`,children:[T(t),t.range.start.line+1,`:`,t.range.start.character+1]})]},`${t.range.start.line}:${t.range.start.character}:${r}`))]},t)})]})]})}function C(e,t){return e.message.toLowerCase().includes(t)||(e.source?.toLowerCase().includes(t)??!1)||String(e.code??``).toLowerCase().includes(t)}function w({severity:e}){return e===2?(0,x.jsx)(c,{className:`size-3 shrink-0 text-warning mt-px`}):e===3?(0,x.jsx)(o,{className:`size-3 shrink-0 text-info mt-px`}):e===4?(0,x.jsx)(s,{className:`size-3 shrink-0 text-text-subtle mt-px`}):(0,x.jsx)(a,{className:`size-3 shrink-0 text-error mt-px`})}function T(e){return e.source?e.code===void 0?`${e.source} `:`${e.source}(${e.code}) `:``}function E(e){let t=e.lastIndexOf(`/`);return t<0?``:e.slice(0,t)}export{S as ProblemsPanel};
@@ -1 +0,0 @@
1
- import{r as e,t}from"./format-bytes-B2kC4sbB.js";function n(e){return e>80?`text-error`:e>50?`text-warning`:`text-success`}function r(e){if(!e)return``;let t=Math.round((Date.now()-e)/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}function i(e,n){return e===void 0&&n===void 0?`—`:`↓ ${t(e??0)} ↑ ${t(n??0)}`}function a(t){return t===void 0?`—`:e(t)}function o(e,n){return e===void 0&&n===void 0?`—`:`↓ ${t(e??0)} ↑ ${t(n??0)}`}function s(t,n,r=!0){let i=t===void 0?`—`:`${t.toFixed(0)}%`;return r?t===void 0&&n===void 0?`—`:`${i} · ${n===void 0?`—`:e(n)}`:i}function c(e,t){if(!(e===void 0&&t===void 0))return(e??0)+(t??0)}export{o as a,s as i,r as n,a as o,i as r,c as s,n as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{L as r,P as i,ci as a,xr as o}from"./icons-JMA45Ifw.js";import{a as s,k as c,r as l}from"./api-client-OiA8Ida1.js";import{n as u}from"./utils-Bslrbb-G.js";import"./portal-container-context-BXAsDqrB.js";import"./context-menu-BoQ6lxte.js";import{n as d}from"./use-is-mobile-BXHbkfs9.js";import"./button-Br60hGkw.js";import{a as f,n as p,o as m,t as h}from"./dialog-DOaEX6AK.js";import{t as g}from"./mobile-bottom-sheet-CGmmdp_5.js";import"./use-visual-viewport-CQ6-A0Dt.js";import{c as _,l as v,n as y,o as b,r as x,s as S,t as C,u as w}from"./adaptive-context-menu-Cq7ynvIn.js";import{ti as ee}from"./index-ItT-dTPV.js";import{r as T}from"./format-bytes-B2kC4sbB.js";import{a as E,i as D,n as O,o as k,r as A,s as j,t as M}from"./process-row-format-CBw-CQCx.js";import{r as te,t as N}from"./use-process-kill-D-SGQxDn.js";import{n as P,r as ne,t as F}from"./sortable-header-B9gfWik4.js";var I=e(t(),1),L=[`swap`,`disk`,`gpu`,`net`],R={cpu:64,ram:80,swap:80,disk:120,gpu:90,net:120},z=`minmax(0,1fr)`,B=`44px`;function V(e){return e===`swap`||e===`disk`||e===`gpu`||e===`net`}function H(e){return Math.round(Math.min(400,Math.max(48,e)))}function U(e,t){let n=t[e];return typeof n==`number`&&Number.isFinite(n)?H(n):R[e]}function re(e,t,n={}){let r=L.filter(t=>e[t]),i=V(t)&&e[t]?t:null,a=e=>`${U(e,n)}px`,o=[z,a(`cpu`),a(`ram`)];return{wideTemplate:[...o,...r.map(a),B].join(` `),narrowTemplate:[...o,...i?[a(i)]:[],B].join(` `),columns:e,narrowExtra:i}}var W=`grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`;function ie(e){return{"--sysmon-grid-n":e.narrowTemplate,"--sysmon-grid-w":e.wideTemplate}}function G(e,t){return e.narrowExtra===t?`block`:`hidden @lg:block`}var K=n(),q=150;function J({mode:e,onModeChange:t,ppmOnly:n,onPpmOnlyChange:r,onQueryChange:i}){let[a,s]=(0,I.useState)(``),c=(0,I.useRef)(null);return(0,I.useEffect)(()=>(c.current&&clearTimeout(c.current),c.current=setTimeout(()=>i(a),q),()=>{c.current&&clearTimeout(c.current)}),[a]),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 p-2 border-b border-border shrink-0`,children:[(0,K.jsxs)(`div`,{className:`relative flex-1 min-w-[140px]`,children:[(0,K.jsx)(o,{className:`absolute left-2 top-1/2 -translate-y-1/2 size-3.5 text-text-subtle`}),(0,K.jsx)(`input`,{type:`text`,value:a,onChange:e=>s(e.target.value),placeholder:`Search processes`,"aria-label":`Search processes`,"data-testid":`sysmon-process-search`,className:`w-full min-h-11 md:min-h-8 pl-7 pr-2 text-sm rounded-md border border-border bg-transparent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`})]}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>t(e===`grouped`?`flat`:`grouped`),"aria-pressed":e===`flat`,"data-testid":`sysmon-toggle-flat`,className:`min-h-11 md:min-h-8 px-3 text-xs rounded-md border border-border hover:bg-surface-hover transition-colors`,children:e===`flat`?`Flat`:`Grouped`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>r(!n),"aria-pressed":n,"data-testid":`sysmon-filter-ppm`,className:u(`min-h-11 md:min-h-8 px-3 text-xs rounded-md border transition-colors`,n?`border-primary bg-primary/10 text-primary`:`border-border hover:bg-surface-hover`),children:`PPM only`})]})}function Y({sortKey:e,sortDir:t,grid:n,onSort:r,resize:i}){let a={activeKey:e,activeDir:t,onClick:r,resize:i};return(0,K.jsxs)(`div`,{role:`row`,className:u(`grid gap-1 px-3 py-1.5 text-[11px] text-text-subtle border-b border-border sticky top-0 bg-background z-10`,W),children:[(0,K.jsx)(F,{label:`Process`,field:`name`,...a,resize:void 0,align:`left`,testId:`sysmon-sort-name`}),(0,K.jsx)(F,{label:`CPU`,field:`cpu`,...a,resizeKey:`cpu`,testId:`sysmon-sort-cpu`}),(0,K.jsx)(F,{label:`RAM`,field:`ram`,...a,resizeKey:`ram`,testId:`sysmon-sort-ram`}),n.columns.swap&&(0,K.jsx)(F,{label:`Swap`,field:`swap`,...a,resizeKey:`swap`,testId:`sysmon-col-swap`,className:G(n,`swap`)}),n.columns.disk&&(0,K.jsx)(F,{label:`Disk`,field:`disk`,...a,resizeKey:`disk`,testId:`sysmon-col-disk`,className:G(n,`disk`)}),n.columns.gpu&&(0,K.jsx)(F,{label:`GPU`,field:`gpu`,...a,resizeKey:`gpu`,testId:`sysmon-col-gpu`,className:G(n,`gpu`)}),n.columns.net&&(0,K.jsx)(F,{label:`Net`,field:`net`,...a,resizeKey:`net`,testId:`sysmon-col-net`,className:G(n,`net`)}),(0,K.jsx)(`span`,{})]})}function ae({totals:e,grid:t,gpuUtilPercent:n}){return(0,K.jsxs)(`div`,{className:u(`grid gap-1 px-3 py-1.5 text-xs font-medium border-t border-border shrink-0`,W),"data-testid":`sysmon-total`,"data-process-count":e.count,children:[(0,K.jsxs)(`span`,{className:`truncate`,children:[`Total (`,e.count,` processes)`]}),(0,K.jsxs)(`span`,{className:u(`text-right`,M(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,K.jsx)(`span`,{className:`text-right text-text-secondary`,children:T(e.ramMB)}),t.columns.swap&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(t,`swap`)),children:k(e.swapMB)}),t.columns.disk&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(t,`disk`)),children:A(e.diskReadBps,e.diskWriteBps)}),t.columns.gpu&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(t,`gpu`)),children:D(n,e.gpuMemMB,t.columns.gpuMemory!==!1)}),t.columns.net&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(t,`net`)),children:E(e.netInBps,e.netOutBps)}),(0,K.jsx)(`span`,{})]})}var oe=`Protected: this app contains a PPM or OS-critical process — cannot be ended as a whole.`;function se({group:e,expanded:t,grid:n,killProtected:o,onToggle:s,onKillClick:c}){let l=t?i:r;return(0,K.jsxs)(`div`,{className:`grid items-center gap-1 min-h-11 md:min-h-7 px-3 text-xs cursor-pointer hover:bg-surface-hover transition-colors group/proc grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`,onClick:()=>s(e.key),"data-testid":`sysmon-group-row`,"data-group-key":e.key,"data-count":e.count,"data-disk-bps":j(e.diskReadBps,e.diskWriteBps),"data-gpu-pct":e.gpuPct,"data-net-bps":j(e.netInBps,e.netOutBps),children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),s(e.key)},"aria-expanded":t,"aria-label":`${t?`Collapse`:`Expand`} ${e.label}`,"data-testid":`sysmon-group-expand`,className:`flex items-center justify-center size-11 md:size-7 -ml-2 shrink-0`,children:(0,K.jsx)(l,{className:`size-3.5 text-text-subtle`})}),(0,K.jsx)(`span`,{className:`truncate font-medium`,children:e.label}),(0,K.jsxs)(`span`,{className:`text-text-subtle shrink-0`,children:[`(`,e.count,`)`]})]}),(0,K.jsxs)(`span`,{className:u(`text-right`,M(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,K.jsx)(`span`,{className:`text-right text-text-secondary`,children:T(e.ramMB)}),n.columns.swap&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(n,`swap`)),children:k(e.swapMB)}),n.columns.disk&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(n,`disk`)),children:A(e.diskReadBps,e.diskWriteBps)}),n.columns.gpu&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(n,`gpu`)),children:D(e.gpuPct,e.gpuMemMB,n.columns.gpuMemory!==!1)}),n.columns.net&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(n,`net`)),children:E(e.netInBps,e.netOutBps)}),(0,K.jsx)(`div`,{className:`flex justify-end`,children:(0,K.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),c(e)},disabled:o,"aria-label":`End ${e.label} and its ${e.count} processes`,title:o?oe:`End ${e.label} (${e.count} processes)`,"data-testid":`sysmon-group-kill-btn`,className:u(`flex items-center justify-center size-11 md:size-7 rounded transition-all`,`can-hover:opacity-0 can-hover:group-hover/proc:opacity-100`,o?`opacity-40 cursor-not-allowed`:`hover:bg-error/20 hover:text-error active:bg-error/30`),children:(0,K.jsx)(a,{className:`size-3.5`})})})]})}var ce=`Protected: PPM or OS-critical process — cannot be ended.`;function le({proc:e,indent:t,grid:n,onKillClick:r}){return(0,K.jsxs)(`div`,{className:`grid items-center gap-1 min-h-11 md:min-h-7 px-3 text-xs group/proc hover:bg-surface-hover transition-colors grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`,"data-testid":`sysmon-process-row`,"data-pid":e.pid,"data-ppm":e.ppm,"data-protected":e.protected,"data-swap-mb":e.swapMB,"data-disk-bps":j(e.diskReadBps,e.diskWriteBps),"data-gpu-pct":e.gpuPct,"data-net-bps":j(e.netInBps,e.netOutBps),children:[(0,K.jsxs)(`div`,{className:u(`flex items-start gap-1.5 min-w-0`,t&&`pl-6`),children:[(0,K.jsx)(`span`,{className:`text-text-subtle shrink-0`,children:e.pid}),(0,K.jsx)(`span`,{className:`truncate text-text-secondary`,title:e.startedAt?`${e.command}\nRunning ${O(e.startedAt)}`:e.command,children:e.command})]}),(0,K.jsxs)(`span`,{className:u(`text-right`,M(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,K.jsx)(`span`,{className:`text-right text-text-secondary`,children:T(e.ramMB)}),n.columns.swap&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(n,`swap`)),children:k(e.swapMB)}),n.columns.disk&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(n,`disk`)),children:A(e.diskReadBps,e.diskWriteBps)}),n.columns.gpu&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(n,`gpu`)),children:D(e.gpuPct,e.gpuMemMB,n.columns.gpuMemory!==!1)}),n.columns.net&&(0,K.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,G(n,`net`)),children:E(e.netInBps,e.netOutBps)}),(0,K.jsx)(`div`,{className:`flex justify-end`,children:(0,K.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),r(e)},disabled:e.protected,"aria-label":`End process ${e.name} (${e.pid})`,title:e.protected?ce:`End process ${e.name}`,"data-testid":`sysmon-kill-btn`,className:u(`flex items-center justify-center size-11 md:size-7 rounded transition-all`,`can-hover:opacity-0 can-hover:group-hover/proc:opacity-100`,e.protected?`opacity-40 cursor-not-allowed`:`hover:bg-error/20 hover:text-error active:bg-error/30`),children:(0,K.jsx)(a,{className:`size-3.5`})})})]})}var ue={STOP:`Suspend (SIGSTOP)`,CONT:`Continue (SIGCONT)`,TERM:`Terminate (SIGTERM)`,KILL:`Kill (SIGKILL)`,HUP:`Hang up (SIGHUP)`,INT:`Interrupt (SIGINT)`,USR1:`User signal 1`,USR2:`User signal 2`},de=[`KILL`,`STOP`];async function fe(e){let t=s(),n={"Content-Type":`application/json`,"X-PPM-Request":`1`};t&&(n.Authorization=`Bearer ${t}`);let r=await fetch(`/api/system/resources/signal`,{method:`POST`,headers:n,body:JSON.stringify(e)}),i;try{i=await r.json()}catch{throw Error(r.ok?`Empty response from server`:`Server error (HTTP ${r.status})`)}if(i.ok===!1)throw Error(i.error??`HTTP ${r.status}`);return i.data}function pe(e,t,n){return{pid:e.pid,startedAt:e.startedAt,signal:t,tree:n}}function me(){let[e,t]=(0,I.useState)(null);return{send:(0,I.useCallback)(async(e,n,r=!1)=>{t(e.pid);try{let t=(await fe(pe(e,n,r))).signalled.length;c.success(t>1?`Sent SIG${n} to ${e.name} and ${t-1} child processes`:`Sent SIG${n} to ${e.name} (${e.pid})`)}catch(t){c.error(t instanceof Error?t.message:`Could not signal ${e.name}`)}finally{t(null)}},[]),pending:e}}function he({proc:e,signals:t,onDetails:n,onKill:r,onSignal:i,children:a}){return(0,K.jsxs)(C,{children:[(0,K.jsx)(w,{asChild:!0,children:(0,K.jsx)(`div`,{className:`select-none`,children:a})}),(0,K.jsxs)(y,{children:[(0,K.jsx)(x,{onSelect:()=>n(e),children:`Details…`}),t.length>0&&(0,K.jsxs)(S,{children:[(0,K.jsx)(v,{children:`Send signal`}),(0,K.jsx)(_,{children:t.map(t=>(0,K.jsx)(x,{variant:de.includes(t)?`destructive`:void 0,disabled:e.protected,onSelect:()=>{e.protected||i(e,t,!1)},children:ue[t]},t))})]}),(0,K.jsx)(b,{}),(0,K.jsx)(x,{variant:`destructive`,disabled:e.protected,onSelect:()=>{e.protected||r(e)},children:`End process`}),e.protected&&(0,K.jsx)(`p`,{className:`px-2 py-1.5 text-[11px] text-text-subtle max-w-64`,children:`PPM or OS-critical process — it cannot be ended or signalled.`})]})]})}function ge(e){return e>0?new Date(e).toLocaleString():`—`}function _e({pid:e,name:t,onClose:n}){let r=d(),[i,a]=(0,I.useState)(null),[o,s]=(0,I.useState)(null);if((0,I.useEffect)(()=>{if(e===null){a(null),s(null);return}let t=!0;return a(null),s(null),l.get(`/api/system/resources/process/${e}`).then(e=>{t&&a(e)}).catch(e=>{t&&s(e instanceof Error?e.message:`Could not read the process`)}),()=>{t=!1}},[e]),e===null)return null;let c=(0,K.jsxs)(`div`,{className:`space-y-3`,"data-testid":`sysmon-process-details`,"data-pid":e,children:[o&&(0,K.jsx)(`p`,{className:`text-sm text-error`,children:o}),!o&&i===null&&(0,K.jsx)(`p`,{className:`text-sm text-text-subtle`,children:`Reading /proc…`}),i&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`dl`,{className:`grid grid-cols-2 gap-x-4 gap-y-2 text-xs`,children:[(0,K.jsx)(X,{label:`PID`,value:i.pid}),(0,K.jsx)(X,{label:`Parent PID`,value:i.ppid}),(0,K.jsx)(X,{label:`User`,value:i.user}),(0,K.jsx)(X,{label:`State`,value:i.state}),(0,K.jsx)(X,{label:`Threads`,value:i.threads}),(0,K.jsx)(X,{label:`Nice`,value:i.nice}),(0,K.jsx)(X,{label:`Started`,value:ge(i.startedAt)}),(0,K.jsx)(X,{label:`Control group`,value:i.cgroup})]}),(0,K.jsx)(Z,{label:`Executable`,value:i.exe}),(0,K.jsx)(Z,{label:`Working directory`,value:i.cwd}),(0,K.jsx)(Z,{label:`Command line`,value:i.command,mono:!0})]})]});return r?(0,K.jsx)(g,{open:!0,onClose:n,children:(0,K.jsxs)(`div`,{className:`px-4 pb-4 space-y-3`,children:[(0,K.jsx)(`h2`,{className:`text-base font-semibold break-all`,children:t}),c]})}):(0,K.jsx)(h,{open:!0,onOpenChange:e=>!e&&n(),children:(0,K.jsxs)(p,{className:`sm:max-w-xl`,children:[(0,K.jsx)(f,{children:(0,K.jsx)(m,{className:`break-all`,children:t})}),c]})})}function X({label:e,value:t}){let n=t===null||t===``?`—`:String(t);return(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`dt`,{className:`text-text-subtle`,children:e}),(0,K.jsx)(`dd`,{className:`truncate`,title:n,children:n})]})}function Z({label:e,value:t,mono:n}){return(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:e}),(0,K.jsx)(`p`,{className:`text-xs break-all ${n?`font-mono`:``}`,children:t??`—`})]})}var Q=`ppm-sysmon-col-widths`;function ve(){try{let e=localStorage.getItem(Q);if(!e)return{};let t=JSON.parse(e),n={};for(let e of[`cpu`,`ram`,`disk`,`gpu`,`net`]){let r=t[e];typeof r==`number`&&Number.isFinite(r)&&(n[e]=H(r))}return n}catch{return{}}}function $(e){try{Object.keys(e).length===0?localStorage.removeItem(Q):localStorage.setItem(Q,JSON.stringify(e))}catch{}}function ye(){let[e,t]=(0,I.useState)(()=>typeof localStorage>`u`?{}:ve()),n=(0,I.useRef)(null);return(0,I.useEffect)(()=>{let e=e=>{let r=n.current;if(!r)return;let i=H(r.startWidth+(e.clientX-r.startX));t(e=>e[r.key]===i?e:{...e,[r.key]:i})},r=()=>{n.current&&(n.current=null,document.body.style.cursor=``,t(e=>($(e),e)))};return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,r),window.addEventListener(`pointercancel`,r),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,r),window.removeEventListener(`pointercancel`,r)}},[]),{widths:e,begin:(0,I.useCallback)((t,r)=>{r.preventDefault(),n.current={key:t,startX:r.clientX,startWidth:U(t,e)},document.body.style.cursor=`col-resize`},[e]),reset:(0,I.useCallback)(e=>{t(t=>{if(!(e in t))return t;let{[e]:n,...r}=t;return $(r),r})},[])}}var be={disk:!1,gpu:!1,net:!1};function xe({snapshot:e}){let t=d(),n=(0,I.useRef)(null),[r,i]=(0,I.useState)(`grouped`),[a,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)(``),[l,u]=(0,I.useState)(null),[f,p]=(0,I.useState)(`desc`),[m,h]=(0,I.useState)(()=>new Set),{pendingKill:g,groupProtected:_,requestKillProcess:v,requestKillGroup:y,confirmKill:b,cancelKill:x}=N(e),{send:S}=me(),[C,w]=(0,I.useState)(null),T=e.signals??[],{widths:E,begin:D,reset:O}=ye(),{rows:k,totals:A}=(0,I.useMemo)(()=>P({processes:e.processes,groups:e.groups,mode:r,ppmOnly:a,query:s,sortKey:l,sortDir:f,expanded:m}),[e.processes,e.groups,r,a,s,l,f,m]),j=e.processColumns??be,M=(0,I.useMemo)(()=>re(j,l,E),[j,l,E]),F=e.system.gpus[0]?.utilPercent,L=ee({count:k.length,getScrollElement:()=>n.current,estimateSize:()=>t?44:28,overscan:12}),R=(0,I.useCallback)(e=>{let[t,n]=ne(l,f,e);u(t),p(n)},[l,f]),z=(0,I.useCallback)(e=>{h(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return(0,K.jsxs)(`div`,{className:`h-full flex flex-col min-h-0 @container`,style:ie(M),"data-testid":`sysmon-processes`,"data-row-count":k.length,children:[(0,K.jsx)(J,{mode:r,onModeChange:i,ppmOnly:a,onPpmOnlyChange:o,onQueryChange:c}),(0,K.jsx)(Y,{sortKey:l,sortDir:f,grid:M,onSort:R,resize:{onResizeStart:D,onResizeReset:O}}),(0,K.jsx)(`div`,{ref:n,className:`flex-1 min-h-0 overflow-y-auto`,children:(0,K.jsx)(`div`,{style:{height:L.getTotalSize(),position:`relative`},children:L.getVirtualItems().map(e=>{let t=k[e.index];return t?(0,K.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,right:0,transform:`translateY(${e.start}px)`},children:t.kind===`group`?(0,K.jsx)(se,{group:t.group,expanded:t.expanded,grid:M,killProtected:_.get(t.group.key)??!0,onToggle:z,onKillClick:y}):(0,K.jsx)(he,{proc:t.proc,signals:T,onDetails:w,onKill:v,onSignal:(e,t,n)=>void S(e,t,n),children:(0,K.jsx)(le,{proc:t.proc,indent:t.indent,grid:M,onKillClick:v})})},t.kind===`group`?t.group.key:`p:${t.proc.pid}`):null})})}),(0,K.jsx)(ae,{totals:A,grid:M,gpuUtilPercent:F}),(0,K.jsx)(te,{target:g,onConfirm:b,onCancel:x}),(0,K.jsx)(_e,{pid:C?.pid??null,name:C?.name??``,onClose:()=>w(null)})]})}export{xe as ProcessTable};
@@ -1 +0,0 @@
1
- import{o as e,r as t}from"./api-client-OiA8Ida1.js";import{t as n}from"./react-PkBxFcos.js";var r=[[`nest`,`@nestjs/core`],[`angular`,`@angular/core`]],i=new Map,a=null,o=n(n=>({framework:null,detect:o=>{if(a=o,!o){n({framework:null});return}if(i.has(o)){n({framework:i.get(o)??null});return}n({framework:null}),t.get(`${e(o)}/files/read?path=package.json`).then(({content:e})=>{let t=JSON.parse(e),n={...t.dependencies,...t.devDependencies,...t.peerDependencies};return r.find(([,e])=>e in n)?.[0]??null}).catch(()=>null).then(e=>{i.set(o,e),a===o&&n({framework:e})})}}));function s(){return o(e=>e.framework)}export{o as n,s as t};
@@ -1 +0,0 @@
1
- import{a as e,m as t,r as n,v as r,w as i,y as a}from"./api-client-OiA8Ida1.js";import{t as o}from"./react-PkBxFcos.js";import{n as s}from"./project-framework-store-Bi5dyHdx.js";async function c(e){if(!e.type.startsWith(`image/`))throw Error(`Please choose an image file`);if(e.size>10485760)throw Error(`Image too large (max 10MB)`);let t=await createImageBitmap(e),n=Math.min(t.width,t.height),r=(t.width-n)/2,i=(t.height-n)/2,a=document.createElement(`canvas`);a.width=128,a.height=128;let o=a.getContext(`2d`);if(!o)throw t.close(),Error(`Canvas not supported`);return o.drawImage(t,r,i,n,n,0,0,128,128),t.close(),await new Promise((e,t)=>{a.toBlob(n=>n?e(n):t(Error(`Encode failed`)),`image/webp`,.85)})}var l=`ppm-recent-projects`,u=`ppm-recent-times`,d=`ppm-custom-order`;function f(){try{let e=localStorage.getItem(l);return e?JSON.parse(e):[]}catch{return[]}}function p(e){try{localStorage.setItem(l,JSON.stringify(e))}catch{}}function m(){try{let e=localStorage.getItem(u);return e?JSON.parse(e):{}}catch{return{}}}function h(e){try{localStorage.setItem(u,JSON.stringify(e))}catch{}}function g(e){let t=f().filter(t=>t!==e);t.unshift(e),p(t);let r=m();r[e]=Date.now(),h(r),n.put(`/api/settings/ui-prefs`,{recentOpen:r}).catch(()=>{})}var _=`ppm-project-sort`;function v(){try{let e=localStorage.getItem(_);return e===`recent`||e===`name`?e:`priority`}catch{return`priority`}}function y(e){let t=f(),n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.name)??1/0)-(n.get(t.name)??1/0))}function b(){try{let e=localStorage.getItem(d);return e?JSON.parse(e):null}catch{return null}}function x(e){try{localStorage.setItem(d,JSON.stringify(e))}catch{}}async function S(e){let n=r(e);await i(`${n}:`);try{localStorage.removeItem(a(n))}catch{}t(n)}function C(e,t){if(!t)return[...e];let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.name)??1/0)-(n.get(t.name)??1/0))}function w(e,t,n){if(e().activeProject?.name!==n)return;let r=e().projects.find(e=>e.name===n);r&&t({activeProject:r})}var T=o((t,r)=>({projects:[],activeProject:null,customOrder:b(),projectSortMode:v(),loading:!1,error:null,fetchProjects:async()=>{t({loading:!0,error:null});try{t({projects:await n.get(`/api/projects`),loading:!1})}catch(e){t({error:e instanceof Error?e.message:`Failed to fetch projects`,loading:!1})}},hydrateUiPrefs:async()=>{try{let e=await n.get(`/api/settings/ui-prefs`);if(e.recentOpen&&Object.keys(e.recentOpen).length>0&&(h(e.recentOpen),p(Object.entries(e.recentOpen).sort((e,t)=>t[1]-e[1]).map(([e])=>e))),e.projectSortMode===`recent`||e.projectSortMode===`priority`||e.projectSortMode===`name`){try{localStorage.setItem(_,e.projectSortMode)}catch{}t({projectSortMode:e.projectSortMode})}}catch{}},setProjectSortMode:e=>{try{localStorage.setItem(_,e)}catch{}t({projectSortMode:e}),n.put(`/api/settings/ui-prefs`,{projectSortMode:e}).catch(()=>{})},setActiveProject:e=>{g(e.name),t({activeProject:e}),s.getState().detect(e.name)},addProject:async(e,i)=>{let a=await n.post(`/api/projects`,{path:e,name:i});await r().fetchProjects();let o=r().projects.find(t=>t.name===(i??a.name)||t.path===e);return o&&(t({activeProject:o}),s.getState().detect(o.name)),a},setProjectColor:async(e,t)=>{await n.patch(`/api/projects/${encodeURIComponent(e)}/color`,{color:t}),await r().fetchProjects()},setProjectImage:async(n,i)=>{let a=await c(i),o=new FormData;o.append(`file`,a,`avatar.webp`);let s=e();if(!(await fetch(`/api/projects/${encodeURIComponent(n)}/image`,{method:`POST`,headers:s?{Authorization:`Bearer ${s}`}:void 0,body:o})).ok)throw Error(`Upload failed`);await r().fetchProjects(),w(r,t,n)},removeProjectImage:async e=>{await n.del(`/api/projects/${encodeURIComponent(e)}/image`),await r().fetchProjects(),w(r,t,e)},moveProject:async(e,i)=>{let{projects:a,customOrder:o}=r(),s=C(a,o),c=s.findIndex(t=>t.name===e);if(c===-1)return;let l=i===`up`?c-1:c+1;if(l<0||l>=s.length)return;let u=s.map(e=>e.name);[u[c],u[l]]=[u[l],u[c]],x(u),await n.patch(`/api/projects/reorder`,{order:u}),t({customOrder:u})},reorderProjects:async e=>{x(e),t({customOrder:e}),await n.patch(`/api/projects/reorder`,{order:e}).catch(()=>{})},renameProject:async(e,t)=>{let i=r().projects.find(t=>t.name===e);await n.patch(`/api/projects/${encodeURIComponent(e)}`,{name:t}),i&&S(i),await r().fetchProjects()},deleteProject:async e=>{let i=r().projects.find(t=>t.name===e);await n.del(`/api/projects/${encodeURIComponent(e)}`),i&&S(i),t(t=>{let n=t.projects.filter(t=>t.name!==e),r=t.customOrder?t.customOrder.filter(t=>t!==e):null;return r&&x(r),{projects:n,customOrder:r,activeProject:t.activeProject?.name===e?n[0]??null:t.activeProject}})}}));export{T as i,C as n,y as r,m as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{At as r,hr as i,or as a,ut as o,xn as s}from"./icons-JMA45Ifw.js";import"./api-client-OiA8Ida1.js";import"./portal-container-context-BXAsDqrB.js";import"./chat-preparation-cache-CRX9WAK5.js";import{r as c}from"./clipboard-D3XnL7CB.js";import{t as l}from"./button-Br60hGkw.js";import{a as u,n as d,o as f,r as p,s as m,t as h}from"./dialog-DOaEX6AK.js";import{t as g}from"./input-CKGoVpYv.js";import{Hn as _,Sr as v}from"./index-ItT-dTPV.js";import{C as y,a as b,d as x}from"./api-settings-D2H6gjen.js";var S=e(t(),1),C=[{value:`claude-opus-5-5`,label:`Claude Opus 5.5`,hint:`balanced, recommended`},{value:`claude-fable-5-1`,label:`Claude Fable 5.1`,hint:`flagship`},{value:`claude-opus-5`,label:`Claude Opus 5`,hint:`most powerful`},{value:`claude-fable-5`,label:`Claude Fable 5`,hint:`flagship`},{value:`claude-opus-4-8`,label:`Claude Opus 4.8`,hint:`powerful`},{value:`claude-opus-4-7`,label:`Claude Opus 4.7`,hint:`powerful`},{value:`claude-opus-4-6`,label:`Claude Opus 4.6`,hint:`powerful`},{value:`claude-sonnet-5`,label:`Claude Sonnet 5`,hint:`fast`},{value:`claude-sonnet-4-6`,label:`Claude Sonnet 4.6`,hint:`fast`},{value:`claude-haiku-4-5`,label:`Claude Haiku 4.5`,hint:`cheap`}];C.map(e=>e.value);function w(e,t){return`${e}/proxy${t?`/${t}`:``}`}function T(e,t){let n=w(e,t);return{anthropicBase:n,openAiBase:`${n}/v1`,anthropicMessages:`${n}/v1/messages`,openAiChatCompletions:`${n}/v1/chat/completions`,models:`${n}/v1/models`,imagesGenerations:t?`${n}/v1/images/generations`:null,imagesEdits:t?`${n}/v1/images/edits`:null}}var E=n(),D=`Hello! Reply briefly.`,O=`claude-opus-5-5`;function k(e){let[t,n]=(0,S.useState)(!1);return(0,E.jsxs)(h,{open:t,onOpenChange:n,children:[(0,E.jsx)(m,{asChild:!0,children:(0,E.jsxs)(l,{variant:`outline`,size:`sm`,className:`h-7 text-[11px] gap-1.5 cursor-pointer`,children:[(0,E.jsx)(r,{className:`size-3`}),`Test`]})}),(0,E.jsxs)(d,{className:`sm:max-w-md max-h-[85vh] overflow-y-auto`,children:[(0,E.jsxs)(u,{children:[(0,E.jsx)(f,{className:`text-sm`,children:`Test Proxy`}),(0,E.jsx)(p,{className:`text-[11px]`,children:`Send a test request and inspect the raw response.`})]}),t&&(0,E.jsx)(A,{...e})]})]})}function A({authKey:e,baseUrl:t,provider:n}){let[r,i]=(0,S.useState)(`anthropic`),[o,c]=(0,S.useState)(D),[u,d]=(0,S.useState)(n?``:O),[f,p]=(0,S.useState)(!0),[m,h]=(0,S.useState)(!1),[_,y]=(0,S.useState)(null),[b,x]=(0,S.useState)(null),[w,k]=(0,S.useState)(null),A=(0,S.useRef)(null),j=(0,S.useRef)(null);(0,S.useEffect)(()=>{A.current?.select()},[]),(0,S.useEffect)(()=>{j.current&&(j.current.scrollTop=j.current.scrollHeight)},[_]);let M=e=>{i(e),y(null),x(null),k(null)},N=async()=>{h(!0),y(null),x(null),k(null);let i=Date.now(),a=r===`openai`,s=T(t,n),c=a?s.openAiChatCompletions:s.anthropicMessages,l=JSON.stringify({...u?{model:u}:{},max_tokens:256,stream:f,messages:[{role:`user`,content:o}]}),d={"Content-Type":`application/json`};a?d.Authorization=`Bearer ${e}`:(d[`x-api-key`]=e,d[`anthropic-version`]=`2023-06-01`);try{let e=await fetch(c,{method:`POST`,headers:d,body:l});if(!e.ok){let t=await e.text();x(`HTTP ${e.status}: ${t}`),h(!1),k(Date.now()-i);return}if(f){let t=e.body?.getReader();if(!t){x(`No response body`),h(!1);return}let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;r+=n.decode(i,{stream:!0}),y(r)}k(Date.now()-i)}else{let t=await e.text();try{y(JSON.stringify(JSON.parse(t),null,2))}catch{y(t)}k(Date.now()-i)}}catch(e){x(e.message)}finally{h(!1),k(e=>e??Date.now()-i)}};return(0,E.jsxs)(`div`,{className:`space-y-3 min-w-0`,children:[(0,E.jsxs)(`div`,{className:`space-y-1.5 min-w-0`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Auth Style`}),(0,E.jsx)(`div`,{className:`flex gap-1`,children:[`anthropic`,`openai`].map(e=>(0,E.jsx)(`button`,{onClick:()=>M(e),className:`flex-1 h-8 rounded-md text-[11px] font-medium border transition-colors cursor-pointer ${r===e?`bg-primary text-primary-foreground border-primary`:`bg-muted text-muted-foreground border-transparent hover:bg-muted/80`}`,children:e===`anthropic`?`Anthropic`:`OpenAI`},e))}),(0,E.jsxs)(`p`,{className:`text-[9px] text-muted-foreground break-all`,children:[r===`anthropic`?`x-api-key header`:`Authorization: Bearer header`,` · `,(0,E.jsx)(`code`,{children:`/proxy${n?`/${n}`:``}/v1/${r===`anthropic`?`messages`:`chat/completions`}`})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Model`}),n?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(g,{value:u,onChange:e=>d(e.target.value),placeholder:`leave empty to let the provider choose`,className:`h-8 text-[11px] font-mono`}),(0,E.jsxs)(`p`,{className:`text-[9px] text-muted-foreground`,children:[`Names come from `,(0,E.jsxs)(`code`,{children:[`GET /proxy/`,n,`/v1/models`]}),`.`]})]}):(0,E.jsx)(`select`,{value:u,onChange:e=>d(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-[11px]`,children:C.map(e=>(0,E.jsx)(`option`,{value:e.value,children:e.value},e.value))})]}),(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Streaming`}),(0,E.jsx)(`div`,{className:`flex gap-1`,children:[!0,!1].map(e=>(0,E.jsx)(`button`,{onClick:()=>p(e),className:`h-7 px-3 rounded-md text-[11px] font-medium border transition-colors cursor-pointer ${f===e?`bg-primary text-primary-foreground border-primary`:`bg-muted text-muted-foreground border-transparent hover:bg-muted/80`}`,children:e?`Stream`:`JSON`},String(e)))})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Message`}),(0,E.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,E.jsx)(g,{ref:A,value:o,onChange:e=>c(e.target.value),placeholder:`Type a test message...`,className:`h-9 text-[11px] flex-1 min-w-0`,onKeyDown:e=>{e.key===`Enter`&&!m&&N()}}),(0,E.jsxs)(l,{size:`sm`,className:`h-9 px-3 cursor-pointer shrink-0`,onClick:N,disabled:m||!o.trim(),children:[m?(0,E.jsx)(s,{className:`size-3.5 animate-spin`}):(0,E.jsx)(a,{className:`size-3.5`}),(0,E.jsx)(`span`,{className:`ml-1 text-[11px]`,children:m?`...`:`Send`})]})]})]}),(_||b)&&(0,E.jsxs)(`div`,{className:`space-y-1 min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Raw Response`}),w!=null&&(0,E.jsxs)(`span`,{className:`text-[9px] font-mono text-muted-foreground`,children:[(w/1e3).toFixed(1),`s`]})]}),b?(0,E.jsx)(`pre`,{className:`text-[9px] font-mono bg-error/10 text-error p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:b}):(0,E.jsx)(`pre`,{ref:j,className:`text-[9px] font-mono bg-muted p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:_})]})]})}function j(){let[e,t]=(0,S.useState)(``),[n,r]=(0,S.useState)([]);(0,S.useEffect)(()=>{b().then(e=>r(Object.keys(e.providers??{}).filter(e=>e!==`mock`&&e!==`claude`))).catch(()=>r([]))},[]);let[a,s]=(0,S.useState)(null),[u,d]=(0,S.useState)(!0),[f,p]=(0,S.useState)(!1),[m,h]=(0,S.useState)(null),[C,w]=(0,S.useState)(null);(0,S.useEffect)(()=>{d(!0),x().then(s).catch(e=>h(e.message)).finally(()=>d(!1))},[]);let D=async e=>{p(!0),h(null);try{s(await y(e))}catch(e){h(e.message)}finally{p(!1)}},O=(e,t)=>{c(e),w(t),setTimeout(()=>w(null),2e3)};if(u||!a)return(0,E.jsxs)(`div`,{className:`space-y-2`,children:[(0,E.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`API Proxy`}),(0,E.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:m?`Error: ${m}`:`Loading...`})]});let A=!!a.authKey,j=!!a.tunnelUrl,M=a.localEndpoint.replace(/\/proxy\/v1\/messages$/,``),N=T(j?a.tunnelUrl:M,e),P=N.anthropicMessages,F=N.openAiChatCompletions,I=`ANTHROPIC_BASE_URL=${N.anthropicBase}\nANTHROPIC_API_KEY=${a.authKey}`,L=`OPENAI_BASE_URL=${N.openAiBase}\nOPENAI_API_KEY=${a.authKey}`;return(0,E.jsxs)(`div`,{className:`space-y-4`,children:[(0,E.jsx)(`div`,{className:`space-y-1.5`,children:(0,E.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Expose your accounts as an API that speaks both the Anthropic and OpenAI formats, so most SDKs need only a new base URL. The default path answers from your Claude accounts; pick a provider below to run its agent instead, which also unlocks image generation.`})}),(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,E.jsx)(v,{className:`text-xs`,children:`Enable Proxy`}),(0,E.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Accept API requests under /proxy`})]}),(0,E.jsx)(_,{checked:a.enabled,onCheckedChange:e=>D({enabled:e}),disabled:f})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(v,{className:`text-[11px]`,children:`Auth Key`}),A?(0,E.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,E.jsx)(g,{readOnly:!0,value:a.authKey,className:`h-7 text-[11px] font-mono flex-1`}),(0,E.jsx)(l,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>O(a.authKey,`key`),children:C===`key`?`Copied!`:(0,E.jsx)(o,{className:`size-3`})}),(0,E.jsx)(l,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>D({generateKey:!0}),disabled:f,children:(0,E.jsx)(i,{className:`size-3`})})]}):(0,E.jsx)(l,{variant:`outline`,size:`sm`,className:`h-7 text-xs cursor-pointer`,onClick:()=>D({generateKey:!0}),disabled:f,children:`Generate Auth Key`}),(0,E.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Use as Bearer token or x-api-key when calling the proxy.`})]}),a.enabled&&A&&(0,E.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3 bg-muted/30`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsx)(`h4`,{className:`text-[11px] font-medium`,children:`Connection Info`}),(0,E.jsx)(k,{authKey:a.authKey,baseUrl:window.location.origin,provider:e})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Provider`}),(0,E.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:[{id:``,label:`Claude (default)`},...n.map(e=>({id:e,label:e}))].map(n=>(0,E.jsx)(`button`,{type:`button`,onClick:()=>t(n.id),className:`text-[10px] px-2.5 min-h-[36px] rounded-md border transition-colors cursor-pointer ${e===n.id?`border-primary bg-primary/15`:`border-border bg-muted/40 hover:bg-muted`}`,children:n.label},n.id||`default`))}),e&&(0,E.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[`Runs the `,e,` agent per request (read-only sandbox, one turn). Slower than the default path.`]})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Anthropic Endpoint`}),(0,E.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,E.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:P}),(0,E.jsx)(l,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>O(P,`anthropic`),children:C===`anthropic`?`Copied!`:(0,E.jsx)(o,{className:`size-3`})})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`OpenAI-Compatible Endpoint`}),(0,E.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,E.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:F}),(0,E.jsx)(l,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>O(F,`openai`),children:C===`openai`?`Copied!`:(0,E.jsx)(o,{className:`size-3`})})]})]}),N.imagesGenerations&&N.imagesEdits&&(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Image Endpoints`}),(0,E.jsx)(`code`,{className:`block text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded truncate`,children:N.imagesGenerations}),(0,E.jsx)(`code`,{className:`block text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded truncate`,children:N.imagesEdits})]}),!j&&(0,E.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Start a Cloudflare tunnel (Share) to get a public URL.`}),(0,E.jsxs)(`div`,{className:`space-y-1 pt-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Anthropic Format`}),(0,E.jsxs)(`div`,{className:`relative`,children:[(0,E.jsx)(`pre`,{className:`text-[9px] font-mono bg-muted p-2 rounded overflow-x-auto whitespace-pre`,children:I}),(0,E.jsx)(l,{variant:`ghost`,size:`sm`,className:`absolute top-1 right-1 h-5 px-1 cursor-pointer`,onClick:()=>O(I,`anthropic-env`),children:C===`anthropic-env`?`Copied!`:(0,E.jsx)(o,{className:`size-2.5`})})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1`,children:[(0,E.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`OpenAI Format`}),(0,E.jsxs)(`div`,{className:`relative`,children:[(0,E.jsx)(`pre`,{className:`text-[9px] font-mono bg-muted p-2 rounded overflow-x-auto whitespace-pre`,children:L}),(0,E.jsx)(l,{variant:`ghost`,size:`sm`,className:`absolute top-1 right-1 h-5 px-1 cursor-pointer`,onClick:()=>O(L,`openai-env`),children:C===`openai-env`?`Copied!`:(0,E.jsx)(o,{className:`size-2.5`})})]})]}),(0,E.jsx)(`div`,{className:`flex items-center gap-3 pt-1`,children:(0,E.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`Requests served: `,(0,E.jsx)(`span`,{className:`font-mono`,children:a.requestCount})]})})]}),f&&(0,E.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`Saving...`}),m&&(0,E.jsx)(`p`,{className:`text-[11px] text-error`,children:m})]})}export{j as ProxySettingsSection};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{Kr as r,xn as i}from"./icons-JMA45Ifw.js";import{k as a}from"./api-client-OiA8Ida1.js";import"./chat-preparation-cache-CRX9WAK5.js";import{t as o}from"./button-Br60hGkw.js";import{t as s}from"./input-CKGoVpYv.js";import{f as c,n as l,w as u}from"./api-settings-D2H6gjen.js";var d=e(t(),1),f=n();function p(e){return e<1024*1024?`${(e/1024).toFixed(0)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function m(){let[e,t]=(0,d.useState)(null),[n,m]=(0,d.useState)(``),[h,g]=(0,d.useState)(``),[_,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(!1);function x(e){t(e),m(String(e.retention_days)),g(String(e.max_size_mb))}(0,d.useEffect)(()=>{c().then(x).catch(e=>a.error(`Could not load audit settings`,{description:e.message}))},[]);async function S(){v(!0);try{x(await u({retention_days:Number(n),max_size_mb:Number(h)})),a.success(`Audit retention updated`)}catch(e){a.error(`Could not save`,{description:e.message})}finally{v(!1)}}async function C(){if(confirm(`Delete every recorded query? This cannot be undone.`)){b(!0);try{await l(),x(await c()),a.success(`Query audit log cleared`)}catch(e){a.error(`Could not clear the log`,{description:e.message})}finally{b(!1)}}}if(!e)return(0,f.jsx)(`div`,{className:`flex items-center justify-center py-8 text-muted-foreground`,children:(0,f.jsx)(i,{className:`size-4 animate-spin`})});let w=n!==String(e.retention_days)||h!==String(e.max_size_mb);return(0,f.jsxs)(`div`,{className:`space-y-4`,children:[(0,f.jsxs)(`p`,{className:`text-[11px] text-muted-foreground`,children:[`Every statement run from the SQL editor, the data grid and the `,(0,f.jsx)(`code`,{children:`ppm db`}),` CLI is recorded, together with a sample of the result. Entries are pruned once they pass either limit below — whichever comes first.`]}),(0,f.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,f.jsxs)(`label`,{className:`space-y-1`,children:[(0,f.jsx)(`span`,{className:`text-xs font-medium`,children:`Keep for (days)`}),(0,f.jsx)(s,{type:`number`,min:1,value:n,onChange:e=>m(e.target.value),className:`h-8 text-xs`})]}),(0,f.jsxs)(`label`,{className:`space-y-1`,children:[(0,f.jsx)(`span`,{className:`text-xs font-medium`,children:`Max size (MB)`}),(0,f.jsx)(s,{type:`number`,min:10,value:h,onChange:e=>g(e.target.value),className:`h-8 text-xs`})]})]}),(0,f.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,f.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[e.entry_count.toLocaleString(),` entries · `,p(e.size_bytes),` on disk`]}),(0,f.jsx)(o,{size:`sm`,className:`h-8 text-xs`,disabled:!w||_,onClick:S,children:_?(0,f.jsx)(i,{className:`size-3.5 animate-spin`}):`Save`})]}),(0,f.jsxs)(o,{variant:`outline`,size:`sm`,className:`h-8 w-full gap-1.5 text-xs text-destructive`,disabled:y||e.entry_count===0,onClick:C,children:[y?(0,f.jsx)(i,{className:`size-3.5 animate-spin`}):(0,f.jsx)(r,{className:`size-3.5`}),`Clear all recorded queries`]})]})}export{m as QueryAuditSection};
@@ -1,22 +0,0 @@
1
- import{s as e,t}from"./rolldown-runtime-C5c2KzVm.js";import{C as n,S as r}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{Cn as i,Ht as a,M as o,Mr as s,P as c,Rr as l,Vn as u,Wr as d,an as f,br as p,ci as m,en as h,h as g,n as _,on as v,or as y,pt as b,qr as x,qt as ee,vr as S,xn as te}from"./icons-JMA45Ifw.js";import{k as C,r as w}from"./api-client-OiA8Ida1.js";import"./settings-store-WeJyQVL8.js";import{n as T,r as E}from"./utils-Bslrbb-G.js";import"./portal-container-context-BXAsDqrB.js";import{E as D,S as O,t as ne,v as k,w as re}from"./panel-store-DmP16Fo0.js";import"./window-store-zJczRsv4.js";import"./project-store-CEGoLMOl.js";import"./project-framework-store-Bi5dyHdx.js";import"./session-list-sync-triggers-DitiR5h1.js";import{t as ie}from"./tab-store-nNzRNfVV.js";import"./context-menu-BoQ6lxte.js";import{n as ae}from"./use-is-mobile-BXHbkfs9.js";import"./settings-categories-CcR9eL3x.js";import"./open-settings-DsGBn73g.js";import{t as oe}from"./button-Br60hGkw.js";import{a as se,i as ce,n as le,o as ue,r as de,t as fe}from"./dialog-DOaEX6AK.js";import"./file-icons-DpwcJLL4.js";import{n as pe,t as me}from"./patch-tab-metadata-B-jH5svY.js";import"./dropdown-menu-DB3yyoVz.js";import{t as he}from"./mobile-bottom-sheet-CGmmdp_5.js";import"./use-visual-viewport-CQ6-A0Dt.js";import"./adaptive-context-menu-Cq7ynvIn.js";import"./fs-api-BQrIEcvo.js";import"./format-file-meta-C0LKHE3e.js";import"./input-CKGoVpYv.js";import{i as ge,t as _e}from"./use-db-driver-installed-BscdI-wS.js";import{r as ve}from"./db-types-9ac-eYxf.js";import{b as ye,g as be,k as xe}from"./explorer-model-BmgFEsj1.js";import{L as Se}from"./db-explorer-store-BcLxq-X0.js";import{I as Ce}from"./open-db-tabs-CkQe49j_.js";import{S as we,m as Te,p as Ee}from"./impexp-state-BWKOuRGj.js";import"./scroll-area-6Am1KMiB.js";import{$n as De,Jn as Oe,Zn as ke,hr as Ae,s as je,tr as Me,vi as A,wi as Ne,xi as Pe}from"./index-ItT-dTPV.js";import"./marked.esm-jqwIt-AK.js";import"./use-monaco-theme-DqnhExsm.js";import{t as Fe}from"./use-db-tab-Cr4lXxwF.js";import{a as Ie,i as Le,n as Re,r as ze,t as Be}from"./db-tab-parts-DvmnlA6V.js";import"./use-opener-focus-C5L5UUJs.js";import"./filter-dialog-frame-CoWlaNRy.js";import{a as Ve,n as He,s as j}from"./sql-completion-provider-CaTHVr1l.js";import{n as Ue,t as We}from"./use-sql-schema-info-DRb9dAKi.js";import{t as Ge}from"./use-at-most-wide-BQFi1Sjv.js";import{t as Ke}from"./glide-data-grid-BxvI3ehr.js";import{t as qe}from"./save-as-dialog-Bj9VpGYf.js";var M=e(n(),1),Je=[100,1e3,1e4,1e5],Ye=1e3,Xe=/^\(*\s*(SELECT|WITH|VALUES|TABLE|EXPLAIN|SHOW|PRAGMA|DESCRIBE|DESC)\b/i,Ze=/\b(INSERT|UPDATE|DELETE|MERGE|DROP|CREATE|ALTER|TRUNCATE|INTO)\b/i,Qe=/^\(*\s*SHOW\b/i;function $e(e){return e===`mysql`?[{backslashEscapes:!0},{backslashEscapes:!1}]:[{}]}function et(e,t=`postgres`){return $e(t).every(n=>{let r=Ve(e,t,n).map(e=>j(e,t,n).trim()).filter(Boolean);return r.length===0?!1:r.every(e=>Qe.test(e)||Xe.test(e)&&!Ze.test(e))})}async function tt(e,t){let n=e.getReader(),r=new TextDecoder,i=``,a=e=>{let n=0;for(let r=e.indexOf(`
2
- `);r!==-1;r=e.indexOf(`
3
- `,n)){let a=i+e.slice(n,r);i=``,n=r+1,a.trim()&&t(JSON.parse(a))}i+=e.slice(n)};try{for(;;){let{done:e,value:t}=await n.read();if(e)break;a(r.decode(t,{stream:!0}))}a(r.decode()),i.trim()&&t(JSON.parse(i))}finally{n.releaseLock()}}var nt=`messages`;function rt(e,t){return{...e,startedAt:t,statements:[],running:null,results:[],tabs:[],messages:[{id:0,level:`info`,text:`Query execution started`,time:t}],errorLines:[],failed:!1,done:!1}}function it(e){return e===`sqlite`?`Stop before the next statement: SQLite cannot stop the one already running`:`Stop the statement running; the ones after it do not run`}function N(e,t){return`${e.toLocaleString(`en-US`)} ${t}${e===1?``:`s`}`}function at(e){return e.columns.length>0}function ot(e,t){return t===0?e:{...e,startLine:e.startLine+t,endLine:e.endLine+t,...e.errorLine===void 0?{}:{errorLine:e.errorLine+t}}}function st(e){let t={statement:e.index,line:e.startLine},n=(e.notices??[]).map(e=>({...t,level:`info`,text:e})),r=[];return e.resultSets.filter(at).forEach((n,i)=>{let a=N(n.rows.length,`row`),o=i===0?` in ${e.durationMs.toLocaleString(`en-US`)} ms`:``;r.push(n.truncated?{...t,level:`warning`,text:`Query returned the first ${a}${o}; the rest were cut off by the row limit`}:{...t,level:`success`,text:`Query returned ${a}${o}`})}),e.rowsAffected!==void 0&&r.push({...t,level:`success`,text:`${N(e.rowsAffected,`row`)} affected`}),e.error===void 0?e.stopped&&r.push({...t,level:`warning`,text:e.stopped===`user`?`Stopped`:`Stopped: the connection's query timeout was reached`}):r.push({...t,level:`error`,line:e.errorLine??e.startLine,text:e.stopped===`user`?`Stopped: ${e.error}`:e.error}),r.length===0&&r.push({...t,level:`success`,text:`${e.command??`Statement`} executed`}),[...n,...r]}function ct(e,t){return e===`explain`?t===1?`Plan`:`Plan ${t}`:`Result ${t}`}function lt(e,t){if(t.length===0)return e;let n={...e,results:[...e.results],tabs:[...e.tabs],messages:[...e.messages],errorLines:[...e.errorLines]};for(let{event:r,at:i}of t){let t=e=>{n.messages.push({...e,id:n.messages.length,time:i})};switch(r.type){case`start`:n.statements=r.statements.map(t=>({startLine:t.startLine+e.lineOffset,endLine:t.endLine+e.lineOffset}));break;case`running`:n.running={index:r.index,since:i};break;case`statement`:{let i=ot(r.result,e.lineOffset);n.results.push(i),n.running?.index===i.index&&(n.running=null),i.resultSets.forEach((t,r)=>{at(t)&&n.tabs.push({key:`${i.index}:${r}`,title:ct(e.kind,n.tabs.length+1),statement:i.index,set:r})});for(let e of st(i))t(e);(i.error!==void 0||i.stopped)&&(n.failed=!0),i.error!==void 0&&n.errorLines.push(i.errorLine??i.startLine);break}case`message`:t({level:r.level,text:r.text}),r.level===`error`&&(n.failed=!0);break;case`done`:{n.running=null,r.error!==void 0&&(t({level:`error`,text:r.error}),n.failed=!0);let e=n.statements.length-n.results.length;e>0&&t({level:`info`,text:`${N(e,`statement`)} did not run`}),t({level:`info`,text:`Query execution finished`}),n.done=!0,n.durationMs=r.durationMs;break}}}return n}function ut(e,t,n){return e.done?e:{...e,running:null,failed:!0,done:!0,durationMs:Math.max(0,Math.round(n-e.startedAt)),messages:[...e.messages,{id:e.messages.length,level:`error`,text:t,time:n}]}}function dt(e,t,n){return{...e,messages:[...e.messages,{...t,id:e.messages.length,time:n}]}}function ft(e,t){let n=e.results.find(e=>e.index===t.statement),r=n?.resultSets[t.set];return n&&r?{result:n,set:r}:null}function pt(e,t,n){let r=e.tabs.find(e=>e.key===t);return r?{...e,results:e.results.map(e=>e.index===r.statement?{...e,resultSets:e.resultSets.map((e,t)=>t===r.set?n:e)}:e)}:e}function mt(e,t){return e?t===`messages`||t&&e.tabs.some(e=>e.key===t)?t:e.tabs[0]?.key??`messages`:nt}function ht(e){if(e.readonly)return{editable:!1,reason:`read-only connection`};if(e.explain)return{editable:!1,reason:`read-only: a plan`};if(!e.table)return{editable:!1,reason:`read-only: not a single table`};if(e.tableColumns===void 0)return{editable:!1,reason:null};if(e.tableColumns===null)return{editable:!1,reason:`read-only: the table's columns could not be read`};if(e.tableColumns.length===0)return{editable:!1,reason:`read-only: not a single table`};let t=new Map(e.tableColumns.map(e=>[e.name,e]));if(new Set(e.columns).size!==e.columns.length)return{editable:!1,reason:`read-only: a column name repeats`};if(!e.columns.every(e=>t.has(e)))return{editable:!1,reason:`read-only: not every column is the table's`};let n=e.tableColumns.filter(e=>e.pk).map(e=>e.name);return n.length===0?{editable:!1,reason:`read-only: no primary key`}:n.every(t=>e.columns.includes(t))?{editable:!0,rowKey:n,schema:e.columns.map(e=>t.get(e))}:{editable:!1,reason:`read-only: the primary key is not in the result`}}var gt=50,_t=1e3;function vt(){return`${E()}${E()}`}function yt(e,t){let[n,r]=(0,M.useState)(null),[i,a]=(0,M.useState)(null),[o,s]=(0,M.useState)(!1),[c,l]=(0,M.useState)(null),[u,d]=(0,M.useState)(0),f=(0,M.useRef)(null),p=(0,M.useRef)(null),m=(0,M.useRef)(null),h=(0,M.useRef)(t);h.current=t;let g=(0,M.useRef)(!0),_=(0,M.useCallback)(e=>{f.current=e,r(e)},[]);(0,M.useEffect)(()=>(g.current=!0,()=>{g.current=!1,p.current?.abort.abort()}),[]);let v=(0,M.useCallback)(async t=>{if(!e||!t.sql.trim()||p.current)return;let{maxRows:n,continueOnError:r}=h.current,i={runId:vt(),target:e,abort:new AbortController,stopping:!1};p.current=i,_(rt({runId:i.runId,kind:t.kind,sql:t.sql,lineOffset:t.lineOffset,maxRows:n},Date.now())),a(null),s(!1);let o=[],c=null,l=()=>{if(c&&clearTimeout(c),c=null,o.length===0||!g.current||!f.current)return;let e=o;o=[],_(lt(f.current,e))},u={sql:t.sql,runId:i.runId,maxRows:n,...r?{continueOnError:!0}:{},...t.kind===`explain`?{explain:!0}:{}};try{await tt((await w.postStream(D(e,`/query/script`),u,{signal:i.abort.signal})).body,e=>{o.push({event:e,at:Date.now()}),e.type===`done`?l():c??=setTimeout(l,gt)}),l(),g.current&&f.current&&!f.current.done&&_(ut(f.current,`The connection to the server was lost before the run ended`,Date.now()))}catch(e){if(l(),!g.current||!f.current)return;let n=ge(e);a(n),m.current=n?()=>{v(t)}:null;let r=i.stopping&&i.abort.signal.aborted?`Stopped: the server did not answer Stop, so the run was dropped`:e.message;_(ut(f.current,r,Date.now()))}finally{c&&clearTimeout(c),p.current===i&&(p.current=null),g.current&&(s(!1),d(e=>e+1))}},[e,_]),y=(0,M.useCallback)(async()=>{let e=p.current;if(!e||e.stopping)return;e.stopping=!0,s(!0);let t=null;try{t=(await w.post(D(e.target,`/query/cancel`),{runId:e.runId})).stopped}catch{}t||setTimeout(()=>{p.current===e&&e.abort.abort()},t===!1?_t:0)},[]);_e(e=>{if(i?.id!==e)return;let t=m.current;m.current=null,t?.()});let b=(0,M.useCallback)(async t=>{let n=f.current,r=n?.tabs.find(e=>e.key===t),i=n&&r?ft(n,r):null;if(!e||!n||!r||!i)return;l(t);let a,o;try{await tt((await w.postStream(D(e,`/query/script`),{sql:i.result.sql,runId:vt(),maxRows:n.maxRows})).body,e=>{e.type===`statement`?a??=e.result:e.type===`done`&&e.error!==void 0&&(o=e.error)})}catch(e){o=e.message}if(!g.current)return;l(null);let s=f.current;if(!s||s.runId!==n.runId)return;let c=a?.resultSets[r.set],u=a?.error??o??(c?void 0:`the statement no longer returns that result`);_(u===void 0?pt(s,t,c):dt(s,{level:`warning`,text:`Saved, but reading the rows again failed: ${u}`,statement:r.statement},Date.now()))},[e,_]),x=(0,M.useCallback)(async(t,n,r,i,a)=>{e&&(await je({target:e,place:a,table:n,schema:r,changes:i}),b(t))},[e,b]);return{run:n,running:!!n&&!n.done,stopping:o,rereading:c,ended:u,driverMissing:i,start:v,stop:y,saveChangesIn:x}}var P=r(),bt=`h-[26px] w-full min-w-0 appearance-none rounded-[5px] border border-border bg-input pr-[26px] pl-2 text-xs text-foreground outline-none focus:border-primary max-md:h-11 max-md:text-sm`,xt=[`connectionId`,`database`,`dbFile`,`connectionName`,`dbType`,`connectionColor`];function St({target:e,conn:t,fileName:n,metadata:r,tabId:i}){let a=Se(e=>e.connections),o=Se(e=>t?e.databases[t.id]:void 0);if(e?.kind===`file`)return(0,P.jsxs)(`span`,{className:`flex min-w-0 shrink items-center gap-1.5 px-1 text-xs text-text-2 max-md:text-sm`,title:e.path,children:[(0,P.jsx)(b,{className:`size-4 shrink-0 text-text-subtle`}),(0,P.jsx)(`span`,{className:`truncate`,children:n})]});let s=(e,t)=>{if(!i)return;let n=Object.fromEntries(Object.entries(r??{}).filter(([e])=>!xt.includes(e)));ie.getState().updateTab(i,{metadata:{...n,...O(e),...t?{connectionName:t.name,dbType:t.type,...t.color?{connectionColor:t.color}:{}}:{}}})},c=t?ye(t):null,l=e?.kind===`connection`?e.database??c:null,u=t&&!be(t)&&o?.state===`ready`?xe(t,o.data):null,d=u?l&&!u.includes(l)?[l,...u]:u:l?[l]:[];return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(Ct,{className:`w-[190px] max-md:w-auto max-md:flex-1`,color:t?.color,children:(0,P.jsxs)(`select`,{"aria-label":`Connection`,value:t?.id??``,className:T(bt,t?.color&&`pl-6`),onChange:e=>{let t=a.find(t=>t.id===Number(e.target.value));t&&s({kind:`connection`,connectionId:t.id},t)},children:[!t&&(0,P.jsx)(`option`,{value:``,children:`Connection…`}),a.map(e=>(0,P.jsx)(`option`,{value:e.id,children:e.name},e.id))]})}),t&&!be(t)&&d.length>0&&(0,P.jsx)(Ct,{className:`w-[150px] max-md:w-auto max-md:flex-1`,children:(0,P.jsx)(`select`,{"aria-label":`Database`,value:l??``,className:bt,onChange:e=>{let n=e.target.value;s({kind:`connection`,connectionId:t.id,...n&&n!==c?{database:n}:{}},t)},children:d.map(e=>(0,P.jsx)(`option`,{value:e,children:e},e))})})]})}function Ct({children:e,className:t,color:n}){return(0,P.jsxs)(`span`,{className:T(`relative mx-0.5 flex shrink-0`,t),children:[n&&(0,P.jsx)(`span`,{"aria-hidden":!0,className:`pointer-events-none absolute top-1/2 left-2 size-2 -translate-y-1/2 rounded-full`,style:{backgroundColor:n}}),e,(0,P.jsx)(c,{className:`pointer-events-none absolute top-1/2 right-1.5 size-3.5 -translate-y-1/2 text-text-subtle`})]})}var wt=`grid grid-cols-[3rem_minmax(0,1fr)_4.5rem_4rem_4.5rem_3.5rem] max-md:grid-cols-[minmax(0,1fr)_4rem]`,F=`max-md:hidden`,Tt={info:{Icon:v,className:`text-text-subtle`},success:{Icon:o,className:`text-success`},warning:{Icon:x,className:`text-warning`},error:{Icon:_,className:`text-destructive`}};function Et({messages:e,onShowLine:t}){let n=e[0]?.time??0;return(0,P.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto text-xs`,role:`table`,"aria-label":`Messages`,children:[(0,P.jsxs)(`div`,{role:`row`,className:T(wt,`sticky top-0 z-[1] h-6 items-center border-b border-border bg-panel-2 px-1 text-[11px] font-medium text-text-2`),children:[(0,P.jsx)(`span`,{role:`columnheader`,className:T(`px-1 text-right`,F),children:`Number`}),(0,P.jsx)(`span`,{role:`columnheader`,className:`px-1`,children:`Message`}),(0,P.jsx)(`span`,{role:`columnheader`,className:T(`px-1`,F),children:`Time`}),(0,P.jsx)(`span`,{role:`columnheader`,className:T(`px-1 text-right`,F),children:`Delta`}),(0,P.jsx)(`span`,{role:`columnheader`,className:T(`px-1 text-right`,F),children:`Duration`}),(0,P.jsx)(`span`,{role:`columnheader`,className:`px-1 text-right`,children:`Line`})]}),e.map((r,i)=>(0,P.jsx)(Dt,{message:r,first:n,previous:i===0?null:e[i-1].time,onShowLine:t},r.id))]})}var Dt=(0,M.memo)(function({message:e,first:t,previous:n,onShowLine:r}){let{Icon:i,className:a}=Tt[e.level],o=e.line!==void 0&&r?()=>r(e.line):void 0;return(0,P.jsxs)(`div`,{role:`row`,className:T(wt,`items-start border-b border-border-soft px-1 py-1`,`max-md:min-h-11 max-md:items-center max-md:text-sm`,o&&`cursor-pointer can-hover:hover:bg-surface-hover`),onClick:o,children:[(0,P.jsx)(`span`,{role:`cell`,className:T(`px-1 text-right text-text-subtle tabular-nums`,F),children:e.id+1}),(0,P.jsxs)(`span`,{role:`cell`,className:T(`flex min-w-0 gap-1.5 px-1 break-words whitespace-pre-wrap`,e.level===`error`?`text-destructive`:e.level===`warning`?`text-warning`:`text-text-primary`),children:[(0,P.jsx)(i,{"aria-hidden":!0,className:T(`mt-px size-3.5 shrink-0 max-md:mt-0.5`,a)}),(0,P.jsx)(`span`,{className:`min-w-0`,children:e.text})]}),(0,P.jsx)(`span`,{role:`cell`,className:T(`px-1 whitespace-nowrap text-text-2 tabular-nums`,F),children:we(e.time)}),(0,P.jsx)(`span`,{role:`cell`,className:T(`px-1 text-right whitespace-nowrap text-text-2 tabular-nums`,F),children:Ee(e.time-t)}),(0,P.jsx)(`span`,{role:`cell`,className:T(`px-1 text-right whitespace-nowrap text-text-2 tabular-nums`,F),children:n===null?`n/a`:Ee(e.time-n)}),(0,P.jsx)(`span`,{role:`cell`,className:`px-1 text-right tabular-nums`,children:e.line!==void 0&&(o?(0,P.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),o()},title:`Show line ${e.line} in the editor`,className:`text-primary underline-offset-2 can-hover:hover:underline max-md:min-h-11 max-md:px-2`,children:e.line}):(0,P.jsx)(`span`,{className:`text-text-2`,children:e.line}))})]})});function Ot({run:e,shown:t,onPick:n,onShowLine:r,onStop:i,stopping:a,renderResult:o}){let s=(0,M.useRef)({runId:``,keys:new Set});s.current.runId!==e.runId&&(s.current={runId:e.runId,keys:new Set}),t!==`messages`&&s.current.keys.add(t);let c=e.messages.filter(e=>e.level===`error`).length;return(0,P.jsxs)(`div`,{className:`relative flex h-full min-h-0 flex-col overflow-hidden`,children:[(0,P.jsxs)(`div`,{role:`tablist`,"aria-label":`Results`,className:`flex h-8 shrink-0 items-stretch overflow-x-auto border-b border-border bg-panel pl-1 max-md:h-auto`,children:[(0,P.jsxs)(kt,{selected:t===nt,onClick:()=>n(nt),icon:(0,P.jsx)(p,{className:`size-3.5`}),children:[`Messages`,c>0&&(0,P.jsx)(`span`,{className:`rounded-full bg-destructive/15 px-1.5 font-mono text-[10.5px] text-destructive`,"aria-label":N(c,`error`),children:c})]}),e.tabs.map(r=>{let i=e.results.find(e=>e.index===r.statement)?.resultSets[r.set]?.rows.length??0;return(0,P.jsxs)(kt,{selected:t===r.key,onClick:()=>n(r.key),icon:(0,P.jsx)(l,{className:`size-3.5`}),children:[r.title,(0,P.jsx)(`span`,{className:`font-mono text-[10.5px] text-text-subtle`,"aria-label":N(i,`row`),children:i.toLocaleString(`en-US`)})]},r.key)})]}),(0,P.jsx)(`div`,{role:`tabpanel`,className:T(`min-h-0 flex-1 flex-col overflow-hidden`,t===`messages`?`flex`:`hidden`),children:(0,P.jsx)(Et,{messages:e.messages,onShowLine:r})}),e.tabs.filter(e=>s.current.keys.has(e.key)).map(e=>(0,P.jsx)(`div`,{role:`tabpanel`,"aria-label":e.title,className:T(`min-h-0 flex-1 flex-col overflow-hidden`,t===e.key?`flex`:`hidden`),children:o(e)},e.key)),!e.done&&(0,P.jsx)(At,{run:e,onStop:i,stopping:a})]})}function kt({selected:e,onClick:t,icon:n,children:r}){return(0,P.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e,onClick:t,className:T(`flex shrink-0 items-center gap-1.5 border-b-2 px-3 text-xs whitespace-nowrap max-md:min-h-11 max-md:px-3.5 max-md:text-[13px]`,e?`border-primary text-text-primary`:`border-transparent text-text-2 can-hover:hover:text-text-primary`),children:[n,r]})}function At({run:e,onStop:t,stopping:n}){let r=e.running?.since??e.startedAt,[i,a]=(0,M.useState)(()=>Date.now());(0,M.useEffect)(()=>{let e=setInterval(()=>a(Date.now()),100);return()=>clearInterval(e)},[]);let o=e.statements.length,c=Math.max(0,(i-r)/1e3).toFixed(1);return(0,P.jsx)(`div`,{className:`pointer-events-none absolute inset-x-0 bottom-3 z-10 flex justify-center px-3`,children:(0,P.jsxs)(`div`,{className:`pointer-events-auto flex items-center gap-2.5 rounded-[10px] border border-border bg-panel px-3.5 py-2 text-xs shadow-lg max-md:text-sm`,children:[(0,P.jsx)(te,{"aria-hidden":!0,className:`size-4 animate-spin text-text-subtle`}),(0,P.jsx)(`span`,{role:`status`,children:e.running?`Running statement ${e.running.index+1}${o>1?`/${o}`:``}`:`Running…`}),(0,P.jsxs)(`span`,{"aria-hidden":!0,className:`font-mono text-text-subtle tabular-nums`,children:[c,` s`]}),(0,P.jsxs)(`button`,{type:`button`,onClick:t,disabled:n,className:`flex h-7 items-center gap-1.5 rounded-md bg-destructive px-2.5 font-medium text-destructive-foreground disabled:opacity-60 max-md:h-11 max-md:px-3.5`,children:[(0,P.jsx)(s,{"aria-hidden":!0,className:`size-3.5`}),n?`Stopping…`:`Stop`]})]})})}function jt(e,t){let n=e.replace(/--[^\r\n]*/g,` `).replace(/\/\*[\s\S]*?\*\//g,` `).trim().replace(/;\s*$/,``);if(!/^select\s/i.test(n)||/\b(join|union|intersect|except|group\s+by|distinct)\b/i.test(n)||(n.match(/\bfrom\b/gi)??[]).length!==1)return null;let r=/\bfrom\s+(?:"([^"]+)"|`([^`]+)`|(\w+))\s*(?:\.\s*(?:"([^"]+)"|`([^`]+)`|(\w+)))?/i.exec(n);if(!r)return null;let i=r[1]??r[2]??r[3],a=r[4]??r[5]??r[6];return a?{schema:i,table:a}:{table:i,schema:t}}function Mt({tab:e,result:t,set:n,target:r,readonly:a,explain:o,connectionName:s,dialect:c,tabId:l,rereading:u,onSave:d,exporter:f}){let{keys:p,records:m}=(0,M.useMemo)(()=>Ce(n.columns,n.rows),[n]),h=(0,M.useMemo)(()=>n.columns.map(e=>e.name),[n]),g=(0,M.useMemo)(()=>o?null:jt(t.sql,``),[t.sql,o]),_=Nt(a||o?null:r,g),v=(0,M.useMemo)(()=>ht({readonly:a,explain:o,table:g,tableColumns:_,columns:h}),[a,o,g,_,h]),y=(0,M.useMemo)(()=>v.editable?v.schema:n.columns.map((e,t)=>({name:p[t],type:e.type,nullable:!0,pk:!1,defaultValue:null})),[v,n,p]),b=t.startLine===t.endLine?`line ${t.startLine}`:`lines ${t.startLine}–${t.endLine}`;return(0,P.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:[(0,P.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:(0,P.jsx)(Ke,{columns:p,rows:m,schema:y,loading:u,rowKey:v.editable?v.rowKey:[],editOnly:!0,readOnly:!v.editable,onSaveChanges:v.editable&&g?e=>d(g,e):void 0,connectionName:s,dialect:c,tabId:l,tabSlot:e.key,exporter:f})}),(0,P.jsxs)(`div`,{className:T(`flex h-6 shrink-0 items-center gap-2 overflow-hidden border-t border-border px-3 text-[11px] whitespace-nowrap text-text-subtle`,`max-md:h-8 max-md:text-xs`),children:[(0,P.jsx)(`span`,{className:`text-text-2`,children:N(n.rows.length,`row`)}),(0,P.jsxs)(`span`,{className:`font-mono`,children:[t.durationMs.toLocaleString(`en-US`),` ms`]}),(0,P.jsxs)(`span`,{className:`truncate max-md:hidden`,children:[`· statement `,t.index+1,`, `,b]}),n.truncated&&(0,P.jsxs)(`span`,{className:`flex items-center gap-1 text-warning`,title:`Raise the row limit in the toolbar to read more`,children:[(0,P.jsx)(x,{"aria-hidden":!0,className:`size-3.5`}),`Cut off at `,n.rows.length.toLocaleString(`en-US`),` rows`]}),(0,P.jsx)(`span`,{className:`flex-1`}),!v.editable&&v.reason&&(0,P.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1 rounded-full border border-border px-2 py-px`,title:`A result can be edited only when it holds one table's rows, its primary key among them`,children:[(0,P.jsx)(i,{"aria-hidden":!0,className:`size-3`}),v.reason]})]})]})}function Nt(e,t){let[n,r]=(0,M.useState)(null),i=e&&t?JSON.stringify([e,t]):null;return(0,M.useEffect)(()=>{if(!e||!t||!i)return;let n=!0,a=t.schema?`&schema=${encodeURIComponent(t.schema)}`:``;return w.get(D(e,`/schema?table=${encodeURIComponent(t.table)}${a}`)).then(e=>{n&&r({key:i,cols:e})}).catch(()=>{n&&r({key:i,cols:null})}),()=>{n=!1}},[i]),n&&n.key===i?n.cols:void 0}var Pt=`Discard unsaved changes?`,Ft=`Rows were changed in the results and not saved. Running again replaces the results and discards the changes.`;function It({onCancel:e,onDiscard:t}){let n=ae(),r=(0,P.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 pt-2 md:flex-row md:justify-end`,children:[(0,P.jsx)(oe,{variant:`outline`,onClick:e,className:`min-h-11 md:min-h-9`,autoFocus:!0,children:`Cancel`}),(0,P.jsx)(oe,{variant:`destructive`,onClick:t,className:`min-h-11 md:min-h-9`,children:`Discard and run`})]});return n?(0,P.jsx)(he,{open:!0,onClose:e,children:(0,P.jsxs)(`div`,{className:`space-y-3 px-4 pb-4`,role:`alertdialog`,"aria-label":Pt,children:[(0,P.jsx)(`h2`,{className:`text-base font-semibold`,children:Pt}),(0,P.jsx)(`p`,{className:`text-sm text-text-secondary`,children:Ft}),r]})}):(0,P.jsx)(fe,{open:!0,onOpenChange:t=>{t||e()},children:(0,P.jsxs)(le,{role:`alertdialog`,children:[(0,P.jsxs)(se,{children:[(0,P.jsx)(ue,{children:Pt}),(0,P.jsx)(de,{children:Ft})]}),r]})})}function Lt(e,t,n){let r=D(e,`/history`),i=new URLSearchParams;t.trim()&&i.set(`search`,t.trim()),n>0&&i.set(`offset`,String(n));let a=i.toString();return a?`${r}${r.includes(`?`)?`&`:`?`}${a}`:r}function Rt(e,t,n){if(n===0)return[...t];let r=new Set(e.map(e=>e.id));return[...e,...t.filter(e=>!r.has(e.id))]}function zt(e){return e.length>=50}function Bt(e,t){let n=[Ae(Date.parse(e.ranAt),t)];return e.database&&n.push(e.database),e.status===`ok`&&e.rowCount!==null&&n.push(N(e.rowCount,`row`)),e.durationMs!==null&&n.push(`${e.durationMs.toLocaleString(`en-US`)} ms`),n}var Vt={ok:`Ran`,error:`Failed`,blocked:`Blocked`};function Ht(e,t){return`Read from the existing audit log. Kept as long as audit settings say (${N(e,`day`)} / ${t.toLocaleString(`en-US`)} MB).`}var Ut=290,Wt=300,Gt=6e4,Kt={ok:`bg-success`,error:`bg-error`,blocked:`bg-warning`};function qt({target:e,refreshKey:t,floating:n,onPick:r,onClose:i}){let[a,o]=(0,M.useState)(``),[s,c]=(0,M.useState)(``);(0,M.useEffect)(()=>{let e=setTimeout(()=>c(a),Wt);return()=>clearTimeout(e)},[a]);let[l,u]=(0,M.useState)({items:[],more:!1,retention:null,loading:!0,error:null}),[d,f]=(0,M.useState)(Date.now);(0,M.useEffect)(()=>{let e=setInterval(()=>f(Date.now()),Gt);return()=>clearInterval(e)},[]);let p=(0,M.useRef)(0),g=(0,M.useRef)([]),_=(0,M.useRef)(e);_.current=e;let v=(0,M.useCallback)(async e=>{let t=++p.current;u(e=>({...e,loading:!0,error:null}));try{let n=await w.get(Lt(_.current,s,e));if(t!==p.current)return;let r=Rt(g.current,n.items,e);g.current=r,f(Date.now()),u({items:r,more:zt(n.items),retention:{days:n.retentionDays,maxSizeMb:n.maxSizeMb},loading:!1,error:null})}catch(n){if(t!==p.current)return;u(t=>({...t,loading:!1,error:{message:n.message,offset:e}}))}},[s]);(0,M.useEffect)(()=>{v(0)},[v,D(e),t]);let y=(0,M.useRef)(null),b=(0,M.useRef)(null);(0,M.useEffect)(()=>{n&&(b.current=document.activeElement instanceof HTMLElement?document.activeElement:null,y.current?.focus())},[]);let x=()=>{i(),b.current?.focus()},ee=e=>{!n||e.key!==`Escape`||e.defaultPrevented||(e.preventDefault(),e.stopPropagation(),x())},{items:S,more:te,retention:C,loading:E,error:O}=l;return(0,P.jsxs)(`aside`,{"aria-label":`Query history`,onKeyDown:ee,style:{width:n?`min(${Ut}px, 86%)`:Ut},className:T(`flex shrink-0 flex-col overflow-hidden border-l border-border bg-panel`,n&&`absolute inset-y-0 right-0 z-30 shadow-[-14px_0_34px_-14px_rgb(0_0_0/0.45)]`),children:[(0,P.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-1.5 border-b border-border-soft pr-1 pl-2.5 text-xs font-semibold text-text-primary`,children:[(0,P.jsx)(h,{"aria-hidden":!0,className:`size-4 shrink-0 text-text-2`}),`History`,(0,P.jsx)(`span`,{className:`flex-1`}),(0,P.jsx)(`button`,{type:`button`,onClick:x,"aria-label":`Close history`,title:`Close history`,className:`grid size-7 place-items-center rounded text-text-2 can-hover:hover:bg-surface-hover can-hover:hover:text-text-primary`,children:(0,P.jsx)(m,{className:`size-3.5`})})]}),(0,P.jsx)(`div`,{className:`flex shrink-0 px-2.5 py-2`,children:(0,P.jsx)(De,{value:a,onChange:o,placeholder:`Search history`,inputRef:y})}),(0,P.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-2 pb-2`,"aria-busy":E,children:[S.map(e=>(0,P.jsxs)(`button`,{type:`button`,onClick:()=>r(e.sql),title:e.sql,className:T(`mb-0.5 block w-full rounded-md border border-transparent px-2 py-1.5 text-left`,`can-hover:hover:border-border can-hover:hover:bg-surface-hover focus-visible:border-primary focus-visible:outline-none`),children:[(0,P.jsxs)(`span`,{className:`mb-0.5 flex min-w-0 items-center gap-1.5 text-[11px] text-text-subtle`,children:[(0,P.jsx)(`span`,{role:`img`,"aria-label":Vt[e.status],className:T(`size-[7px] shrink-0 rounded-full`,Kt[e.status])}),(0,P.jsx)(`span`,{className:`truncate`,children:Bt(e,d).join(` · `)}),e.byAgent&&(0,P.jsx)(`span`,{title:`An AI agent ran it`,className:`ml-auto shrink-0 rounded border border-border px-1 text-[10px] leading-4`,children:`agent`})]}),(0,P.jsx)(`span`,{className:`line-clamp-2 font-mono text-[11.5px] leading-[1.45] break-all text-text-primary`,children:e.sql}),e.status===`error`&&e.error&&(0,P.jsx)(`span`,{className:`mt-0.5 line-clamp-2 text-[11px] text-error`,children:e.error}),e.status===`blocked`&&(0,P.jsxs)(`span`,{className:`mt-0.5 line-clamp-2 text-[11px] text-warning`,children:[`Blocked: `,e.error??`not allowed on this connection`]})]},e.id)),O?(0,P.jsxs)(ke,{children:[(0,P.jsxs)(`span`,{role:`alert`,className:`text-error`,children:[`Could not read the history: `,O.message]}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>void v(O.offset),className:Me,children:`Try again`})]}):E&&S.length===0?(0,P.jsx)(ke,{children:`Reading the history…`}):S.length===0?(0,P.jsx)(ke,{children:s.trim()?`No query run here matches.`:`Nothing has been run here yet.`}):te?(0,P.jsx)(`button`,{type:`button`,onClick:()=>void v(S.length),disabled:E,className:`mt-1 h-7 w-full rounded-md border border-border text-xs text-text-2 can-hover:hover:bg-surface-hover disabled:opacity-50`,children:E?`Reading…`:`Load more`}):null]}),C&&(0,P.jsx)(`div`,{className:`shrink-0 border-t border-border-soft px-3 py-2 text-[11px] leading-snug text-text-subtle`,children:Ht(C.days,C.maxSizeMb)})]})}function Jt(e){let t=e?.savedPath;return typeof t==`string`&&t!==``?t:null}function Yt(e){return`${e.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,`-`).replace(/^-+|-+$/g,``)||`query`}.sql`}function Xt(e){return/\.[^./\\]+$/.test(e)?e:`${e}.sql`}function Zt(e){let t=k(e);return t.replace(/\.sql$/i,``)||t}function Qt(e,t,n){return{title:Zt(t),metadata:{...e,savedPath:t,openedSql:n}}}function $t(e){let t=Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`));return t<0?{dir:``,name:e}:{dir:t===0||e[t-1]===`:`?e.slice(0,t+1):e.slice(0,t),name:e.slice(t+1)}}function en(e,t){let n=t.toLowerCase();return e.some(e=>e.type!==`directory`&&e.name.toLowerCase()===n)}async function tn(e){let{dir:t,name:n}=$t(e);if(!t)return!1;try{return en((await w.get(`/api/fs/browse?path=${encodeURIComponent(t)}&showHidden=true`)).entries,n)}catch{return!1}}function nn(e){let t=ne.getState();return t.panels[t.focusedPanelId]?.activeTabId===e}function rn({tabId:e,keys:t,title:n,savedPath:r,sql:i,onSaved:a}){let[o,s]=(0,M.useState)(!1),[c,l]=(0,M.useState)(null),u=(0,M.useCallback)(async e=>{let t=i();try{await w.put(`/api/fs/write`,{path:e,content:t})}catch(t){C.error(`Could not save ${k(e)}: ${t.message}`);return}a(e,t)},[i,a]),d=(0,M.useCallback)(()=>{r?u(r):s(!0)},[r,u]),f=(0,M.useCallback)(async e=>{s(!1);let t=Xt(e);await tn(t)?l(t):u(t)},[u]),p=(0,M.useRef)(d);return p.current=d,(0,M.useEffect)(()=>{if(!t||!e)return;let n=t=>{t.repeat||!Pe.getState().matchesEvent(t,`save-prevent`)||!nn(e)||t.target?.closest?.(`[role="dialog"], [role="alertdialog"]`)||(t.preventDefault(),p.current())};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[t,e]),{save:d,dialogs:(0,P.jsxs)(P.Fragment,{children:[o&&(0,P.jsx)(qe,{open:!0,defaultName:Yt(n),content:``,onSave:e=>void f(e),onCancel:()=>s(!1)}),c&&(0,P.jsx)(fe,{open:!0,onOpenChange:e=>{e||l(null)},children:(0,P.jsxs)(le,{role:`alertdialog`,className:`sm:max-w-md`,children:[(0,P.jsxs)(se,{children:[(0,P.jsx)(ue,{children:`Replace file?`}),(0,P.jsxs)(de,{children:[k(c),` is already in that folder. Replacing it writes this tab's SQL over what it holds.`]})]}),(0,P.jsxs)(ce,{children:[(0,P.jsx)(oe,{variant:`outline`,onClick:()=>l(null),autoFocus:!0,children:`Cancel`}),(0,P.jsx)(oe,{variant:`destructive`,onClick:()=>{let e=c;l(null),u(e)},children:`Replace`})]})]})})]})}}var I=e=>e.flatMap(an),an=e=>pn(sn(e)).map(on),on=e=>e.replace(/ +/g,` `).trim(),sn=e=>({type:`mandatory_block`,items:cn(e,0)[0]}),cn=(e,t,n)=>{let r=[];for(;e[t];){let[i,a]=ln(e,t);if(r.push(i),t=a,e[t]===`|`)t++;else if(e[t]===`}`||e[t]===`]`){if(n!==e[t])throw Error(`Unbalanced parenthesis in: ${e}`);return t++,[r,t]}else if(t===e.length){if(n)throw Error(`Unbalanced parenthesis in: ${e}`);return[r,t]}else throw Error(`Unexpected "${e[t]}"`)}return[r,t]},ln=(e,t)=>{let n=[];for(;;){let[r,i]=un(e,t);if(r)n.push(r),t=i;else break}return n.length===1?[n[0],t]:[{type:`concatenation`,items:n},t]},un=(e,t)=>{if(e[t]===`{`)return dn(e,t+1);if(e[t]===`[`)return fn(e,t+1);{let n=``;for(;e[t]&&/[A-Za-z0-9_ ]/.test(e[t]);)n+=e[t],t++;return[n,t]}},dn=(e,t)=>{let[n,r]=cn(e,t,`}`);return[{type:`mandatory_block`,items:n},r]},fn=(e,t)=>{let[n,r]=cn(e,t,`]`);return[{type:`optional_block`,items:n},r]},pn=e=>{if(typeof e==`string`)return[e];if(e.type===`concatenation`)return e.items.map(pn).reduce(mn,[``]);if(e.type===`mandatory_block`)return e.items.flatMap(pn);if(e.type===`optional_block`)return[``,...e.items.flatMap(pn)];throw Error(`Unknown node type: ${e}`)},mn=(e,t)=>{let n=[];for(let r of e)for(let e of t)n.push(r+e);return n},L;(function(e){e.QUOTED_IDENTIFIER=`QUOTED_IDENTIFIER`,e.IDENTIFIER=`IDENTIFIER`,e.STRING=`STRING`,e.VARIABLE=`VARIABLE`,e.RESERVED_DATA_TYPE=`RESERVED_DATA_TYPE`,e.RESERVED_PARAMETERIZED_DATA_TYPE=`RESERVED_PARAMETERIZED_DATA_TYPE`,e.RESERVED_KEYWORD=`RESERVED_KEYWORD`,e.RESERVED_FUNCTION_NAME=`RESERVED_FUNCTION_NAME`,e.RESERVED_KEYWORD_PHRASE=`RESERVED_KEYWORD_PHRASE`,e.RESERVED_DATA_TYPE_PHRASE=`RESERVED_DATA_TYPE_PHRASE`,e.RESERVED_SET_OPERATION=`RESERVED_SET_OPERATION`,e.RESERVED_CLAUSE=`RESERVED_CLAUSE`,e.RESERVED_SELECT=`RESERVED_SELECT`,e.RESERVED_JOIN=`RESERVED_JOIN`,e.ARRAY_IDENTIFIER=`ARRAY_IDENTIFIER`,e.ARRAY_KEYWORD=`ARRAY_KEYWORD`,e.CASE=`CASE`,e.END=`END`,e.WHEN=`WHEN`,e.ELSE=`ELSE`,e.THEN=`THEN`,e.LIMIT=`LIMIT`,e.BETWEEN=`BETWEEN`,e.AND=`AND`,e.OR=`OR`,e.XOR=`XOR`,e.OPERATOR=`OPERATOR`,e.COMMA=`COMMA`,e.ASTERISK=`ASTERISK`,e.PROPERTY_ACCESS_OPERATOR=`PROPERTY_ACCESS_OPERATOR`,e.OPEN_PAREN=`OPEN_PAREN`,e.CLOSE_PAREN=`CLOSE_PAREN`,e.LINE_COMMENT=`LINE_COMMENT`,e.BLOCK_COMMENT=`BLOCK_COMMENT`,e.DISABLE_COMMENT=`DISABLE_COMMENT`,e.NUMBER=`NUMBER`,e.NAMED_PARAMETER=`NAMED_PARAMETER`,e.QUOTED_PARAMETER=`QUOTED_PARAMETER`,e.NUMBERED_PARAMETER=`NUMBERED_PARAMETER`,e.POSITIONAL_PARAMETER=`POSITIONAL_PARAMETER`,e.CUSTOM_PARAMETER=`CUSTOM_PARAMETER`,e.DELIMITER=`DELIMITER`,e.EOF=`EOF`})(L=L||={});var hn=e=>({type:L.EOF,raw:`«EOF»`,text:`«EOF»`,start:e}),gn=hn(1/0),R=e=>t=>t.type===e.type&&t.text===e.text,_n={ARRAY:R({text:`ARRAY`,type:L.RESERVED_DATA_TYPE}),BY:R({text:`BY`,type:L.RESERVED_KEYWORD}),SET:R({text:`SET`,type:L.RESERVED_CLAUSE}),STRUCT:R({text:`STRUCT`,type:L.RESERVED_DATA_TYPE}),WINDOW:R({text:`WINDOW`,type:L.RESERVED_CLAUSE}),VALUES:R({text:`VALUES`,type:L.RESERVED_CLAUSE})},vn=e=>e===L.RESERVED_DATA_TYPE||e===L.RESERVED_KEYWORD||e===L.RESERVED_FUNCTION_NAME||e===L.RESERVED_KEYWORD_PHRASE||e===L.RESERVED_DATA_TYPE_PHRASE||e===L.RESERVED_CLAUSE||e===L.RESERVED_SELECT||e===L.RESERVED_SET_OPERATION||e===L.RESERVED_JOIN||e===L.ARRAY_KEYWORD||e===L.CASE||e===L.END||e===L.WHEN||e===L.ELSE||e===L.THEN||e===L.LIMIT||e===L.BETWEEN||e===L.AND||e===L.OR||e===L.XOR,yn=e=>e===L.AND||e===L.OR||e===L.XOR;function bn(e){return e.map((t,n)=>{let r=e[n+1]||gn;if(_n.SET(t)&&r.text===`(`)return Object.assign(Object.assign({},t),{type:L.RESERVED_FUNCTION_NAME});let i=e[n-1]||gn;return _n.VALUES(t)&&i.text===`=`?Object.assign(Object.assign({},t),{type:L.RESERVED_FUNCTION_NAME}):t})}var xn=`ACCESSIBLE.ADD.ALL.ALTER.ANALYZE.AND.AS.ASC.ASENSITIVE.BEFORE.BETWEEN.BOTH.BY.CALL.CASCADE.CASE.CHANGE.CHECK.COLLATE.COLUMN.CONDITION.CONSTRAINT.CONTINUE.CONVERT.CREATE.CROSS.CURRENT_DATE.CURRENT_ROLE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURSOR.DATABASE.DATABASES.DAY_HOUR.DAY_MICROSECOND.DAY_MINUTE.DAY_SECOND.DECLARE.DEFAULT.DELAYED.DELETE.DELETE_DOMAIN_ID.DESC.DESCRIBE.DETERMINISTIC.DISTINCT.DISTINCTROW.DIV.DO_DOMAIN_IDS.DROP.DUAL.EACH.ELSE.ELSEIF.ENCLOSED.ESCAPED.EXCEPT.EXISTS.EXIT.EXPLAIN.FALSE.FETCH.FOR.FORCE.FOREIGN.FROM.FULLTEXT.GENERAL.GRANT.GROUP.HAVING.HIGH_PRIORITY.HOUR_MICROSECOND.HOUR_MINUTE.HOUR_SECOND.IF.IGNORE.IGNORE_DOMAIN_IDS.IGNORE_SERVER_IDS.IN.INDEX.INFILE.INNER.INOUT.INSENSITIVE.INSERT.INTERSECT.INTERVAL.INTO.IS.ITERATE.JOIN.KEY.KEYS.KILL.LEADING.LEAVE.LEFT.LIKE.LIMIT.LINEAR.LINES.LOAD.LOCALTIME.LOCALTIMESTAMP.LOCK.LOOP.LOW_PRIORITY.MASTER_HEARTBEAT_PERIOD.MASTER_SSL_VERIFY_SERVER_CERT.MATCH.MAXVALUE.MINUTE_MICROSECOND.MINUTE_SECOND.MOD.MODIFIES.NATURAL.NOT.NO_WRITE_TO_BINLOG.NULL.OFFSET.ON.OPTIMIZE.OPTION.OPTIONALLY.OR.ORDER.OUT.OUTER.OUTFILE.OVER.PAGE_CHECKSUM.PARSE_VCOL_EXPR.PARTITION.POSITION.PRIMARY.PROCEDURE.PURGE.RANGE.READ.READS.READ_WRITE.RECURSIVE.REF_SYSTEM_ID.REFERENCES.REGEXP.RELEASE.RENAME.REPEAT.REPLACE.REQUIRE.RESIGNAL.RESTRICT.RETURN.RETURNING.REVOKE.RIGHT.RLIKE.ROW_NUMBER.ROWS.SCHEMA.SCHEMAS.SECOND_MICROSECOND.SELECT.SENSITIVE.SEPARATOR.SET.SHOW.SIGNAL.SLOW.SPATIAL.SPECIFIC.SQL.SQLEXCEPTION.SQLSTATE.SQLWARNING.SQL_BIG_RESULT.SQL_CALC_FOUND_ROWS.SQL_SMALL_RESULT.SSL.STARTING.STATS_AUTO_RECALC.STATS_PERSISTENT.STATS_SAMPLE_PAGES.STRAIGHT_JOIN.TABLE.TERMINATED.THEN.TO.TRAILING.TRIGGER.TRUE.UNDO.UNION.UNIQUE.UNLOCK.UNSIGNED.UPDATE.USAGE.USE.USING.UTC_DATE.UTC_TIME.UTC_TIMESTAMP.VALUES.WHEN.WHERE.WHILE.WINDOW.WITH.WRITE.XOR.YEAR_MONTH.ZEROFILL`.split(`.`),Sn=`BIGINT.BINARY.BIT.BLOB.CHAR BYTE.CHAR.CHARACTER.DATETIME.DEC.DECIMAL.DOUBLE PRECISION.DOUBLE.ENUM.FIXED.FLOAT.FLOAT4.FLOAT8.INT.INT1.INT2.INT3.INT4.INT8.INTEGER.LONG.LONGBLOB.LONGTEXT.MEDIUMBLOB.MEDIUMINT.MEDIUMTEXT.MIDDLEINT.NATIONAL CHAR.NATIONAL VARCHAR.NUMERIC.PRECISION.REAL.SMALLINT.TEXT.TIMESTAMP.TINYBLOB.TINYINT.TINYTEXT.VARBINARY.VARCHAR.VARCHARACTER.VARYING.YEAR`.split(`.`),Cn=`ADDDATE.ADD_MONTHS.BIT_AND.BIT_OR.BIT_XOR.CAST.COUNT.CUME_DIST.CURDATE.CURTIME.DATE_ADD.DATE_SUB.DATE_FORMAT.DECODE.DENSE_RANK.EXTRACT.FIRST_VALUE.GROUP_CONCAT.JSON_ARRAYAGG.JSON_OBJECTAGG.LAG.LEAD.MAX.MEDIAN.MID.MIN.NOW.NTH_VALUE.NTILE.POSITION.PERCENT_RANK.PERCENTILE_CONT.PERCENTILE_DISC.RANK.ROW_NUMBER.SESSION_USER.STD.STDDEV.STDDEV_POP.STDDEV_SAMP.SUBDATE.SUBSTR.SUBSTRING.SUM.SYSTEM_USER.TRIM.TRIM_ORACLE.VARIANCE.VAR_POP.VAR_SAMP.ABS.ACOS.ADDTIME.AES_DECRYPT.AES_ENCRYPT.ASIN.ATAN.ATAN2.BENCHMARK.BIN.BINLOG_GTID_POS.BIT_COUNT.BIT_LENGTH.CEIL.CEILING.CHARACTER_LENGTH.CHAR_LENGTH.CHR.COERCIBILITY.COLUMN_CHECK.COLUMN_EXISTS.COLUMN_LIST.COLUMN_JSON.COMPRESS.CONCAT.CONCAT_OPERATOR_ORACLE.CONCAT_WS.CONNECTION_ID.CONV.CONVERT_TZ.COS.COT.CRC32.DATEDIFF.DAYNAME.DAYOFMONTH.DAYOFWEEK.DAYOFYEAR.DEGREES.DECODE_HISTOGRAM.DECODE_ORACLE.DES_DECRYPT.DES_ENCRYPT.ELT.ENCODE.ENCRYPT.EXP.EXPORT_SET.EXTRACTVALUE.FIELD.FIND_IN_SET.FLOOR.FORMAT.FOUND_ROWS.FROM_BASE64.FROM_DAYS.FROM_UNIXTIME.GET_LOCK.GREATEST.HEX.IFNULL.INSTR.ISNULL.IS_FREE_LOCK.IS_USED_LOCK.JSON_ARRAY.JSON_ARRAY_APPEND.JSON_ARRAY_INSERT.JSON_COMPACT.JSON_CONTAINS.JSON_CONTAINS_PATH.JSON_DEPTH.JSON_DETAILED.JSON_EXISTS.JSON_EXTRACT.JSON_INSERT.JSON_KEYS.JSON_LENGTH.JSON_LOOSE.JSON_MERGE.JSON_MERGE_PATCH.JSON_MERGE_PRESERVE.JSON_QUERY.JSON_QUOTE.JSON_OBJECT.JSON_REMOVE.JSON_REPLACE.JSON_SET.JSON_SEARCH.JSON_TYPE.JSON_UNQUOTE.JSON_VALID.JSON_VALUE.LAST_DAY.LAST_INSERT_ID.LCASE.LEAST.LENGTH.LENGTHB.LN.LOAD_FILE.LOCATE.LOG.LOG10.LOG2.LOWER.LPAD.LPAD_ORACLE.LTRIM.LTRIM_ORACLE.MAKEDATE.MAKETIME.MAKE_SET.MASTER_GTID_WAIT.MASTER_POS_WAIT.MD5.MONTHNAME.NAME_CONST.NVL.NVL2.OCT.OCTET_LENGTH.ORD.PERIOD_ADD.PERIOD_DIFF.PI.POW.POWER.QUOTE.REGEXP_INSTR.REGEXP_REPLACE.REGEXP_SUBSTR.RADIANS.RAND.RELEASE_ALL_LOCKS.RELEASE_LOCK.REPLACE_ORACLE.REVERSE.ROUND.RPAD.RPAD_ORACLE.RTRIM.RTRIM_ORACLE.SEC_TO_TIME.SHA.SHA1.SHA2.SIGN.SIN.SLEEP.SOUNDEX.SPACE.SQRT.STRCMP.STR_TO_DATE.SUBSTR_ORACLE.SUBSTRING_INDEX.SUBTIME.SYS_GUID.TAN.TIMEDIFF.TIME_FORMAT.TIME_TO_SEC.TO_BASE64.TO_CHAR.TO_DAYS.TO_SECONDS.UCASE.UNCOMPRESS.UNCOMPRESSED_LENGTH.UNHEX.UNIX_TIMESTAMP.UPDATEXML.UPPER.UUID.UUID_SHORT.VERSION.WEEKDAY.WEEKOFYEAR.WSREP_LAST_WRITTEN_GTID.WSREP_LAST_SEEN_GTID.WSREP_SYNC_WAIT_UPTO_GTID.YEARWEEK.COALESCE.NULLIF`.split(`.`),wn=I([`SELECT [ALL | DISTINCT | DISTINCTROW]`]),Tn=I([`WITH [RECURSIVE]`,`FROM`,`WHERE`,`GROUP BY`,`HAVING`,`PARTITION BY`,`ORDER BY`,`LIMIT`,`OFFSET`,`FETCH {FIRST | NEXT}`,`INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]`,`REPLACE [LOW_PRIORITY | DELAYED] [INTO]`,`VALUES`,`ON DUPLICATE KEY UPDATE`,`SET`,`RETURNING`]),En=I([`CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS]`]),Dn=I(`CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS].UPDATE [LOW_PRIORITY] [IGNORE].DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM.DROP [TEMPORARY] TABLE [IF EXISTS].ALTER [ONLINE] [IGNORE] TABLE [IF EXISTS].ADD [COLUMN] [IF NOT EXISTS].{CHANGE | MODIFY} [COLUMN] [IF EXISTS].DROP [COLUMN] [IF EXISTS].RENAME [TO].RENAME COLUMN.ALTER [COLUMN].{SET | DROP} DEFAULT.SET {VISIBLE | INVISIBLE}.TRUNCATE [TABLE].ALTER DATABASE.ALTER DATABASE COMMENT.ALTER EVENT.ALTER FUNCTION.ALTER PROCEDURE.ALTER SCHEMA.ALTER SCHEMA COMMENT.ALTER SEQUENCE.ALTER SERVER.ALTER USER.ALTER VIEW.ANALYZE.ANALYZE TABLE.BACKUP LOCK.BACKUP STAGE.BACKUP UNLOCK.BEGIN.BINLOG.CACHE INDEX.CALL.CHANGE MASTER TO.CHECK TABLE.CHECK VIEW.CHECKSUM TABLE.COMMIT.CREATE AGGREGATE FUNCTION.CREATE DATABASE.CREATE EVENT.CREATE FUNCTION.CREATE INDEX.CREATE PROCEDURE.CREATE ROLE.CREATE SEQUENCE.CREATE SERVER.CREATE SPATIAL INDEX.CREATE TRIGGER.CREATE UNIQUE INDEX.CREATE USER.DEALLOCATE PREPARE.DESCRIBE.DROP DATABASE.DROP EVENT.DROP FUNCTION.DROP INDEX.DROP PREPARE.DROP PROCEDURE.DROP ROLE.DROP SEQUENCE.DROP SERVER.DROP TRIGGER.DROP USER.DROP VIEW.EXECUTE.EXPLAIN.FLUSH.GET DIAGNOSTICS.GET DIAGNOSTICS CONDITION.GRANT.HANDLER.HELP.INSTALL PLUGIN.INSTALL SONAME.KILL.LOAD DATA INFILE.LOAD INDEX INTO CACHE.LOAD XML INFILE.LOCK TABLE.OPTIMIZE TABLE.PREPARE.PURGE BINARY LOGS.PURGE MASTER LOGS.RELEASE SAVEPOINT.RENAME TABLE.RENAME USER.REPAIR TABLE.REPAIR VIEW.RESET MASTER.RESET QUERY CACHE.RESET REPLICA.RESET SLAVE.RESIGNAL.REVOKE.ROLLBACK.SAVEPOINT.SET CHARACTER SET.SET DEFAULT ROLE.SET GLOBAL TRANSACTION.SET NAMES.SET PASSWORD.SET ROLE.SET STATEMENT.SET TRANSACTION.SHOW.SHOW ALL REPLICAS STATUS.SHOW ALL SLAVES STATUS.SHOW AUTHORS.SHOW BINARY LOGS.SHOW BINLOG EVENTS.SHOW BINLOG STATUS.SHOW CHARACTER SET.SHOW CLIENT_STATISTICS.SHOW COLLATION.SHOW COLUMNS.SHOW CONTRIBUTORS.SHOW CREATE DATABASE.SHOW CREATE EVENT.SHOW CREATE FUNCTION.SHOW CREATE PACKAGE.SHOW CREATE PACKAGE BODY.SHOW CREATE PROCEDURE.SHOW CREATE SEQUENCE.SHOW CREATE TABLE.SHOW CREATE TRIGGER.SHOW CREATE USER.SHOW CREATE VIEW.SHOW DATABASES.SHOW ENGINE.SHOW ENGINE INNODB STATUS.SHOW ENGINES.SHOW ERRORS.SHOW EVENTS.SHOW EXPLAIN.SHOW FUNCTION CODE.SHOW FUNCTION STATUS.SHOW GRANTS.SHOW INDEX.SHOW INDEXES.SHOW INDEX_STATISTICS.SHOW KEYS.SHOW LOCALES.SHOW MASTER LOGS.SHOW MASTER STATUS.SHOW OPEN TABLES.SHOW PACKAGE BODY CODE.SHOW PACKAGE BODY STATUS.SHOW PACKAGE STATUS.SHOW PLUGINS.SHOW PLUGINS SONAME.SHOW PRIVILEGES.SHOW PROCEDURE CODE.SHOW PROCEDURE STATUS.SHOW PROCESSLIST.SHOW PROFILE.SHOW PROFILES.SHOW QUERY_RESPONSE_TIME.SHOW RELAYLOG EVENTS.SHOW REPLICA.SHOW REPLICA HOSTS.SHOW REPLICA STATUS.SHOW SCHEMAS.SHOW SLAVE.SHOW SLAVE HOSTS.SHOW SLAVE STATUS.SHOW STATUS.SHOW STORAGE ENGINES.SHOW TABLE STATUS.SHOW TABLES.SHOW TRIGGERS.SHOW USER_STATISTICS.SHOW VARIABLES.SHOW WARNINGS.SHOW WSREP_MEMBERSHIP.SHOW WSREP_STATUS.SHUTDOWN.SIGNAL.START ALL REPLICAS.START ALL SLAVES.START REPLICA.START SLAVE.START TRANSACTION.STOP ALL REPLICAS.STOP ALL SLAVES.STOP REPLICA.STOP SLAVE.UNINSTALL PLUGIN.UNINSTALL SONAME.UNLOCK TABLE.USE.XA BEGIN.XA COMMIT.XA END.XA PREPARE.XA RECOVER.XA ROLLBACK.XA START`.split(`.`)),On=I([`UNION [ALL | DISTINCT]`,`EXCEPT [ALL | DISTINCT]`,`INTERSECT [ALL | DISTINCT]`,`MINUS [ALL | DISTINCT]`]),kn=I([`JOIN`,`{LEFT | RIGHT} [OUTER] JOIN`,`{INNER | CROSS} JOIN`,`NATURAL JOIN`,`NATURAL {LEFT | RIGHT} [OUTER] JOIN`,`STRAIGHT_JOIN`]),An=I([`ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]`,`CHARACTER SET`,`{ROWS | RANGE} BETWEEN`,`IDENTIFIED BY`]),jn=I([]),Mn={name:`mariadb`,tokenizerOptions:{reservedSelect:wn,reservedClauses:[...Tn,...En,...Dn],reservedSetOperations:On,reservedJoins:kn,reservedKeywordPhrases:An,reservedDataTypePhrases:jn,supportsXor:!0,reservedKeywords:xn,reservedDataTypes:Sn,reservedFunctionNames:Cn,stringTypes:[`""-qq-bs`,`''-qq-bs`,{quote:`''-raw`,prefixes:[`B`,`X`],requirePrefix:!0}],identTypes:["``"],identChars:{first:`$`,rest:`$`,allowFirstCharNumber:!0},variableTypes:[{regex:`@@?[A-Za-z0-9_.$]+`},{quote:`""-qq-bs`,prefixes:[`@`],requirePrefix:!0},{quote:`''-qq-bs`,prefixes:[`@`],requirePrefix:!0},{quote:"``",prefixes:[`@`],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:[`--`,`#`],operators:[`%`,`:=`,`&`,`|`,`^`,`~`,`<<`,`>>`,`<=>`,`&&`,`||`,`!`,`*.*`],postProcess:bn},formatOptions:{onelineClauses:[...En,...Dn],tabularOnelineClauses:Dn}},Nn=`ACCESSIBLE.ADD.ALL.ALTER.ANALYZE.AND.AS.ASC.ASENSITIVE.BEFORE.BETWEEN.BOTH.BY.CALL.CASCADE.CASE.CHANGE.CHECK.COLLATE.COLUMN.CONDITION.CONSTRAINT.CONTINUE.CONVERT.CREATE.CROSS.CUBE.CUME_DIST.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURSOR.DATABASE.DATABASES.DAY_HOUR.DAY_MICROSECOND.DAY_MINUTE.DAY_SECOND.DECLARE.DEFAULT.DELAYED.DELETE.DENSE_RANK.DESC.DESCRIBE.DETERMINISTIC.DISTINCT.DISTINCTROW.DIV.DROP.DUAL.EACH.ELSE.ELSEIF.EMPTY.ENCLOSED.ESCAPED.EXCEPT.EXISTS.EXIT.EXPLAIN.FALSE.FETCH.FIRST_VALUE.FOR.FORCE.FOREIGN.FROM.FULLTEXT.FUNCTION.GENERATED.GET.GRANT.GROUP.GROUPING.GROUPS.HAVING.HIGH_PRIORITY.HOUR_MICROSECOND.HOUR_MINUTE.HOUR_SECOND.IF.IGNORE.IN.INDEX.INFILE.INNER.INOUT.INSENSITIVE.INSERT.IN.INTERSECT.INTERVAL.INTO.IO_AFTER_GTIDS.IO_BEFORE_GTIDS.IS.ITERATE.JOIN.JSON_TABLE.KEY.KEYS.KILL.LAG.LAST_VALUE.LATERAL.LEAD.LEADING.LEAVE.LEFT.LIKE.LIMIT.LINEAR.LINES.LOAD.LOCALTIME.LOCALTIMESTAMP.LOCK.LONG.LOOP.LOW_PRIORITY.MASTER_BIND.MASTER_SSL_VERIFY_SERVER_CERT.MATCH.MAXVALUE.MINUTE_MICROSECOND.MINUTE_SECOND.MOD.MODIFIES.NATURAL.NOT.NO_WRITE_TO_BINLOG.NTH_VALUE.NTILE.NULL.OF.ON.OPTIMIZE.OPTIMIZER_COSTS.OPTION.OPTIONALLY.OR.ORDER.OUT.OUTER.OUTFILE.OVER.PARTITION.PERCENT_RANK.PRIMARY.PROCEDURE.PURGE.RANGE.RANK.READ.READS.READ_WRITE.RECURSIVE.REFERENCES.REGEXP.RELEASE.RENAME.REPEAT.REPLACE.REQUIRE.RESIGNAL.RESTRICT.RETURN.REVOKE.RIGHT.RLIKE.ROW.ROWS.ROW_NUMBER.SCHEMA.SCHEMAS.SECOND_MICROSECOND.SELECT.SENSITIVE.SEPARATOR.SET.SHOW.SIGNAL.SPATIAL.SPECIFIC.SQL.SQLEXCEPTION.SQLSTATE.SQLWARNING.SQL_BIG_RESULT.SQL_CALC_FOUND_ROWS.SQL_SMALL_RESULT.SSL.STARTING.STORED.STRAIGHT_JOIN.SYSTEM.TABLE.TERMINATED.THEN.TO.TRAILING.TRIGGER.TRUE.UNDO.UNION.UNIQUE.UNLOCK.UNSIGNED.UPDATE.USAGE.USE.USING.UTC_DATE.UTC_TIME.UTC_TIMESTAMP.VALUES.VIRTUAL.WHEN.WHERE.WHILE.WINDOW.WITH.WRITE.XOR.YEAR_MONTH.ZEROFILL`.split(`.`),Pn=`BIGINT.BINARY.BIT.BLOB.BOOL.BOOLEAN.CHAR.CHARACTER.DATE.DATETIME.DEC.DECIMAL.DOUBLE PRECISION.DOUBLE.ENUM.FIXED.FLOAT.FLOAT4.FLOAT8.INT.INT1.INT2.INT3.INT4.INT8.INTEGER.LONGBLOB.LONGTEXT.MEDIUMBLOB.MEDIUMINT.MEDIUMTEXT.MIDDLEINT.NATIONAL CHAR.NATIONAL VARCHAR.NUMERIC.PRECISION.REAL.SMALLINT.TEXT.TIME.TIMESTAMP.TINYBLOB.TINYINT.TINYTEXT.VARBINARY.VARCHAR.VARCHARACTER.VARYING.YEAR`.split(`.`),Fn=`ABS.ACOS.ADDDATE.ADDTIME.AES_DECRYPT.AES_ENCRYPT.ANY_VALUE.ASCII.ASIN.ATAN.ATAN2.AVG.BENCHMARK.BIN.BIN_TO_UUID.BINARY.BIT_AND.BIT_COUNT.BIT_LENGTH.BIT_OR.BIT_XOR.CAN_ACCESS_COLUMN.CAN_ACCESS_DATABASE.CAN_ACCESS_TABLE.CAN_ACCESS_USER.CAN_ACCESS_VIEW.CAST.CEIL.CEILING.CHAR.CHAR_LENGTH.CHARACTER_LENGTH.CHARSET.COALESCE.COERCIBILITY.COLLATION.COMPRESS.CONCAT.CONCAT_WS.CONNECTION_ID.CONV.CONVERT.CONVERT_TZ.COS.COT.COUNT.CRC32.CUME_DIST.CURDATE.CURRENT_DATE.CURRENT_ROLE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURTIME.DATABASE.DATE.DATE_ADD.DATE_FORMAT.DATE_SUB.DATEDIFF.DAY.DAYNAME.DAYOFMONTH.DAYOFWEEK.DAYOFYEAR.DEFAULT.DEGREES.DENSE_RANK.DIV.ELT.EXP.EXPORT_SET.EXTRACT.EXTRACTVALUE.FIELD.FIND_IN_SET.FIRST_VALUE.FLOOR.FORMAT.FORMAT_BYTES.FORMAT_PICO_TIME.FOUND_ROWS.FROM_BASE64.FROM_DAYS.FROM_UNIXTIME.GEOMCOLLECTION.GEOMETRYCOLLECTION.GET_DD_COLUMN_PRIVILEGES.GET_DD_CREATE_OPTIONS.GET_DD_INDEX_SUB_PART_LENGTH.GET_FORMAT.GET_LOCK.GREATEST.GROUP_CONCAT.GROUPING.GTID_SUBSET.GTID_SUBTRACT.HEX.HOUR.ICU_VERSION.IF.IFNULL.INET_ATON.INET_NTOA.INET6_ATON.INET6_NTOA.INSERT.INSTR.INTERNAL_AUTO_INCREMENT.INTERNAL_AVG_ROW_LENGTH.INTERNAL_CHECK_TIME.INTERNAL_CHECKSUM.INTERNAL_DATA_FREE.INTERNAL_DATA_LENGTH.INTERNAL_DD_CHAR_LENGTH.INTERNAL_GET_COMMENT_OR_ERROR.INTERNAL_GET_ENABLED_ROLE_JSON.INTERNAL_GET_HOSTNAME.INTERNAL_GET_USERNAME.INTERNAL_GET_VIEW_WARNING_OR_ERROR.INTERNAL_INDEX_COLUMN_CARDINALITY.INTERNAL_INDEX_LENGTH.INTERNAL_IS_ENABLED_ROLE.INTERNAL_IS_MANDATORY_ROLE.INTERNAL_KEYS_DISABLED.INTERNAL_MAX_DATA_LENGTH.INTERNAL_TABLE_ROWS.INTERNAL_UPDATE_TIME.INTERVAL.IS.IS_FREE_LOCK.IS_IPV4.IS_IPV4_COMPAT.IS_IPV4_MAPPED.IS_IPV6.IS NOT.IS NOT NULL.IS NULL.IS_USED_LOCK.IS_UUID.ISNULL.JSON_ARRAY.JSON_ARRAY_APPEND.JSON_ARRAY_INSERT.JSON_ARRAYAGG.JSON_CONTAINS.JSON_CONTAINS_PATH.JSON_DEPTH.JSON_EXTRACT.JSON_INSERT.JSON_KEYS.JSON_LENGTH.JSON_MERGE.JSON_MERGE_PATCH.JSON_MERGE_PRESERVE.JSON_OBJECT.JSON_OBJECTAGG.JSON_OVERLAPS.JSON_PRETTY.JSON_QUOTE.JSON_REMOVE.JSON_REPLACE.JSON_SCHEMA_VALID.JSON_SCHEMA_VALIDATION_REPORT.JSON_SEARCH.JSON_SET.JSON_STORAGE_FREE.JSON_STORAGE_SIZE.JSON_TABLE.JSON_TYPE.JSON_UNQUOTE.JSON_VALID.JSON_VALUE.LAG.LAST_DAY.LAST_INSERT_ID.LAST_VALUE.LCASE.LEAD.LEAST.LEFT.LENGTH.LIKE.LINESTRING.LN.LOAD_FILE.LOCALTIME.LOCALTIMESTAMP.LOCATE.LOG.LOG10.LOG2.LOWER.LPAD.LTRIM.MAKE_SET.MAKEDATE.MAKETIME.MASTER_POS_WAIT.MATCH.MAX.MBRCONTAINS.MBRCOVEREDBY.MBRCOVERS.MBRDISJOINT.MBREQUALS.MBRINTERSECTS.MBROVERLAPS.MBRTOUCHES.MBRWITHIN.MD5.MICROSECOND.MID.MIN.MINUTE.MOD.MONTH.MONTHNAME.MULTILINESTRING.MULTIPOINT.MULTIPOLYGON.NAME_CONST.NOW.NTH_VALUE.NTILE.NULLIF.OCT.OCTET_LENGTH.ORD.PERCENT_RANK.PERIOD_ADD.PERIOD_DIFF.PI.POINT.POLYGON.POSITION.POW.POWER.PS_CURRENT_THREAD_ID.PS_THREAD_ID.QUARTER.QUOTE.RADIANS.RAND.RANDOM_BYTES.RANK.REGEXP.REGEXP_INSTR.REGEXP_LIKE.REGEXP_REPLACE.REGEXP_SUBSTR.RELEASE_ALL_LOCKS.RELEASE_LOCK.REPEAT.REPLACE.REVERSE.RIGHT.RLIKE.ROLES_GRAPHML.ROUND.ROW_COUNT.ROW_NUMBER.RPAD.RTRIM.SCHEMA.SEC_TO_TIME.SECOND.SESSION_USER.SHA1.SHA2.SIGN.SIN.SLEEP.SOUNDEX.SOUNDS LIKE.SOURCE_POS_WAIT.SPACE.SQRT.ST_AREA.ST_ASBINARY.ST_ASGEOJSON.ST_ASTEXT.ST_BUFFER.ST_BUFFER_STRATEGY.ST_CENTROID.ST_COLLECT.ST_CONTAINS.ST_CONVEXHULL.ST_CROSSES.ST_DIFFERENCE.ST_DIMENSION.ST_DISJOINT.ST_DISTANCE.ST_DISTANCE_SPHERE.ST_ENDPOINT.ST_ENVELOPE.ST_EQUALS.ST_EXTERIORRING.ST_FRECHETDISTANCE.ST_GEOHASH.ST_GEOMCOLLFROMTEXT.ST_GEOMCOLLFROMWKB.ST_GEOMETRYN.ST_GEOMETRYTYPE.ST_GEOMFROMGEOJSON.ST_GEOMFROMTEXT.ST_GEOMFROMWKB.ST_HAUSDORFFDISTANCE.ST_INTERIORRINGN.ST_INTERSECTION.ST_INTERSECTS.ST_ISCLOSED.ST_ISEMPTY.ST_ISSIMPLE.ST_ISVALID.ST_LATFROMGEOHASH.ST_LATITUDE.ST_LENGTH.ST_LINEFROMTEXT.ST_LINEFROMWKB.ST_LINEINTERPOLATEPOINT.ST_LINEINTERPOLATEPOINTS.ST_LONGFROMGEOHASH.ST_LONGITUDE.ST_MAKEENVELOPE.ST_MLINEFROMTEXT.ST_MLINEFROMWKB.ST_MPOINTFROMTEXT.ST_MPOINTFROMWKB.ST_MPOLYFROMTEXT.ST_MPOLYFROMWKB.ST_NUMGEOMETRIES.ST_NUMINTERIORRING.ST_NUMPOINTS.ST_OVERLAPS.ST_POINTATDISTANCE.ST_POINTFROMGEOHASH.ST_POINTFROMTEXT.ST_POINTFROMWKB.ST_POINTN.ST_POLYFROMTEXT.ST_POLYFROMWKB.ST_SIMPLIFY.ST_SRID.ST_STARTPOINT.ST_SWAPXY.ST_SYMDIFFERENCE.ST_TOUCHES.ST_TRANSFORM.ST_UNION.ST_VALIDATE.ST_WITHIN.ST_X.ST_Y.STATEMENT_DIGEST.STATEMENT_DIGEST_TEXT.STD.STDDEV.STDDEV_POP.STDDEV_SAMP.STR_TO_DATE.STRCMP.SUBDATE.SUBSTR.SUBSTRING.SUBSTRING_INDEX.SUBTIME.SUM.SYSDATE.SYSTEM_USER.TAN.TIME.TIME_FORMAT.TIME_TO_SEC.TIMEDIFF.TIMESTAMP.TIMESTAMPADD.TIMESTAMPDIFF.TO_BASE64.TO_DAYS.TO_SECONDS.TRIM.TRUNCATE.UCASE.UNCOMPRESS.UNCOMPRESSED_LENGTH.UNHEX.UNIX_TIMESTAMP.UPDATEXML.UPPER.UTC_DATE.UTC_TIME.UTC_TIMESTAMP.UUID.UUID_SHORT.UUID_TO_BIN.VALIDATE_PASSWORD_STRENGTH.VALUES.VAR_POP.VAR_SAMP.VARIANCE.VERSION.WAIT_FOR_EXECUTED_GTID_SET.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS.WEEK.WEEKDAY.WEEKOFYEAR.WEIGHT_STRING.YEAR.YEARWEEK`.split(`.`),In=I([`SELECT [ALL | DISTINCT | DISTINCTROW]`]),Ln=I([`WITH [RECURSIVE]`,`FROM`,`WHERE`,`GROUP BY`,`HAVING`,`WINDOW`,`PARTITION BY`,`ORDER BY`,`LIMIT`,`OFFSET`,`INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]`,`REPLACE [LOW_PRIORITY | DELAYED] [INTO]`,`VALUES`,`ON DUPLICATE KEY UPDATE`,`SET`]),Rn=I([`CREATE [TEMPORARY] TABLE [IF NOT EXISTS]`]),zn=I(`CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS].UPDATE [LOW_PRIORITY] [IGNORE].DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM.DROP [TEMPORARY] TABLE [IF EXISTS].ALTER TABLE.ADD [COLUMN].{CHANGE | MODIFY} [COLUMN].DROP [COLUMN].RENAME [TO | AS].RENAME COLUMN.ALTER [COLUMN].{SET | DROP} DEFAULT.TRUNCATE [TABLE].ALTER DATABASE.ALTER EVENT.ALTER FUNCTION.ALTER INSTANCE.ALTER LOGFILE GROUP.ALTER PROCEDURE.ALTER RESOURCE GROUP.ALTER SERVER.ALTER TABLESPACE.ALTER USER.ALTER VIEW.ANALYZE TABLE.BINLOG.CACHE INDEX.CALL.CHANGE MASTER TO.CHANGE REPLICATION FILTER.CHANGE REPLICATION SOURCE TO.CHECK TABLE.CHECKSUM TABLE.CLONE.COMMIT.CREATE DATABASE.CREATE EVENT.CREATE FUNCTION.CREATE FUNCTION.CREATE INDEX.CREATE LOGFILE GROUP.CREATE PROCEDURE.CREATE RESOURCE GROUP.CREATE ROLE.CREATE SERVER.CREATE SPATIAL REFERENCE SYSTEM.CREATE TABLESPACE.CREATE TRIGGER.CREATE USER.DEALLOCATE PREPARE.DESCRIBE.DROP DATABASE.DROP EVENT.DROP FUNCTION.DROP FUNCTION.DROP INDEX.DROP LOGFILE GROUP.DROP PROCEDURE.DROP RESOURCE GROUP.DROP ROLE.DROP SERVER.DROP SPATIAL REFERENCE SYSTEM.DROP TABLESPACE.DROP TRIGGER.DROP USER.DROP VIEW.EXECUTE.EXPLAIN.FLUSH.GRANT.HANDLER.HELP.IMPORT TABLE.INSTALL COMPONENT.INSTALL PLUGIN.KILL.LOAD DATA.LOAD INDEX INTO CACHE.LOAD XML.LOCK INSTANCE FOR BACKUP.LOCK TABLES.MASTER_POS_WAIT.OPTIMIZE TABLE.PREPARE.PURGE BINARY LOGS.RELEASE SAVEPOINT.RENAME TABLE.RENAME USER.REPAIR TABLE.RESET.RESET MASTER.RESET PERSIST.RESET REPLICA.RESET SLAVE.RESTART.REVOKE.ROLLBACK.ROLLBACK TO SAVEPOINT.SAVEPOINT.SET CHARACTER SET.SET DEFAULT ROLE.SET NAMES.SET PASSWORD.SET RESOURCE GROUP.SET ROLE.SET TRANSACTION.SHOW.SHOW BINARY LOGS.SHOW BINLOG EVENTS.SHOW CHARACTER SET.SHOW COLLATION.SHOW COLUMNS.SHOW CREATE DATABASE.SHOW CREATE EVENT.SHOW CREATE FUNCTION.SHOW CREATE PROCEDURE.SHOW CREATE TABLE.SHOW CREATE TRIGGER.SHOW CREATE USER.SHOW CREATE VIEW.SHOW DATABASES.SHOW ENGINE.SHOW ENGINES.SHOW ERRORS.SHOW EVENTS.SHOW FUNCTION CODE.SHOW FUNCTION STATUS.SHOW GRANTS.SHOW INDEX.SHOW MASTER STATUS.SHOW OPEN TABLES.SHOW PLUGINS.SHOW PRIVILEGES.SHOW PROCEDURE CODE.SHOW PROCEDURE STATUS.SHOW PROCESSLIST.SHOW PROFILE.SHOW PROFILES.SHOW RELAYLOG EVENTS.SHOW REPLICA STATUS.SHOW REPLICAS.SHOW SLAVE.SHOW SLAVE HOSTS.SHOW STATUS.SHOW TABLE STATUS.SHOW TABLES.SHOW TRIGGERS.SHOW VARIABLES.SHOW WARNINGS.SHUTDOWN.SOURCE_POS_WAIT.START GROUP_REPLICATION.START REPLICA.START SLAVE.START TRANSACTION.STOP GROUP_REPLICATION.STOP REPLICA.STOP SLAVE.TABLE.UNINSTALL COMPONENT.UNINSTALL PLUGIN.UNLOCK INSTANCE.UNLOCK TABLES.USE.XA.ITERATE.LEAVE.LOOP.REPEAT.RETURN.WHILE`.split(`.`)),Bn=I([`UNION [ALL | DISTINCT]`]),Vn=I([`JOIN`,`{LEFT | RIGHT} [OUTER] JOIN`,`{INNER | CROSS} JOIN`,`NATURAL [INNER] JOIN`,`NATURAL {LEFT | RIGHT} [OUTER] JOIN`,`STRAIGHT_JOIN`]),Hn=I([`ON {UPDATE | DELETE} [SET NULL]`,`CHARACTER SET`,`{ROWS | RANGE} BETWEEN`,`IDENTIFIED BY`]),Un=I([]),Wn={name:`mysql`,tokenizerOptions:{reservedSelect:In,reservedClauses:[...Ln,...Rn,...zn],reservedSetOperations:Bn,reservedJoins:Vn,reservedKeywordPhrases:Hn,reservedDataTypePhrases:Un,supportsXor:!0,reservedKeywords:Nn,reservedDataTypes:Pn,reservedFunctionNames:Fn,stringTypes:[`""-qq-bs`,{quote:`''-qq-bs`,prefixes:[`N`]},{quote:`''-raw`,prefixes:[`B`,`X`],requirePrefix:!0}],identTypes:["``"],identChars:{first:`$`,rest:`$`,allowFirstCharNumber:!0},variableTypes:[{regex:`@@?[A-Za-z0-9_.$]+`},{quote:`""-qq-bs`,prefixes:[`@`],requirePrefix:!0},{quote:`''-qq-bs`,prefixes:[`@`],requirePrefix:!0},{quote:"``",prefixes:[`@`],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:[`--`,`#`],operators:[`%`,`:=`,`&`,`|`,`^`,`~`,`<<`,`>>`,`<=>`,`->`,`->>`,`&&`,`||`,`!`,`*.*`],postProcess:bn},formatOptions:{onelineClauses:[...Rn,...zn],tabularOnelineClauses:zn}},Gn=`ABS.ACOS.ACOSD.ACOSH.ASIN.ASIND.ASINH.ATAN.ATAN2.ATAN2D.ATAND.ATANH.CBRT.CEIL.CEILING.COS.COSD.COSH.COT.COTD.DEGREES.DIV.EXP.FACTORIAL.FLOOR.GCD.LCM.LN.LOG.LOG10.MIN_SCALE.MOD.PI.POWER.RADIANS.RANDOM.ROUND.SCALE.SETSEED.SIGN.SIN.SIND.SINH.SQRT.TAN.TAND.TANH.TRIM_SCALE.TRUNC.WIDTH_BUCKET.ABS.ASCII.BIT_LENGTH.BTRIM.CHARACTER_LENGTH.CHAR_LENGTH.CHR.CONCAT.CONCAT_WS.FORMAT.INITCAP.LEFT.LENGTH.LOWER.LPAD.LTRIM.MD5.NORMALIZE.OCTET_LENGTH.OVERLAY.PARSE_IDENT.PG_CLIENT_ENCODING.POSITION.QUOTE_IDENT.QUOTE_LITERAL.QUOTE_NULLABLE.REGEXP_MATCH.REGEXP_MATCHES.REGEXP_REPLACE.REGEXP_SPLIT_TO_ARRAY.REGEXP_SPLIT_TO_TABLE.REPEAT.REPLACE.REVERSE.RIGHT.RPAD.RTRIM.SPLIT_PART.SPRINTF.STARTS_WITH.STRING_AGG.STRING_TO_ARRAY.STRING_TO_TABLE.STRPOS.SUBSTR.SUBSTRING.TO_ASCII.TO_HEX.TRANSLATE.TRIM.UNISTR.UPPER.BIT_COUNT.BIT_LENGTH.BTRIM.CONVERT.CONVERT_FROM.CONVERT_TO.DECODE.ENCODE.GET_BIT.GET_BYTE.LENGTH.LTRIM.MD5.OCTET_LENGTH.OVERLAY.POSITION.RTRIM.SET_BIT.SET_BYTE.SHA224.SHA256.SHA384.SHA512.STRING_AGG.SUBSTR.SUBSTRING.TRIM.BIT_COUNT.BIT_LENGTH.GET_BIT.LENGTH.OCTET_LENGTH.OVERLAY.POSITION.SET_BIT.SUBSTRING.REGEXP_MATCH.REGEXP_MATCHES.REGEXP_REPLACE.REGEXP_SPLIT_TO_ARRAY.REGEXP_SPLIT_TO_TABLE.TO_CHAR.TO_DATE.TO_NUMBER.TO_TIMESTAMP.CLOCK_TIMESTAMP.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.DATE_BIN.DATE_PART.DATE_TRUNC.EXTRACT.ISFINITE.JUSTIFY_DAYS.JUSTIFY_HOURS.JUSTIFY_INTERVAL.LOCALTIME.LOCALTIMESTAMP.MAKE_DATE.MAKE_INTERVAL.MAKE_TIME.MAKE_TIMESTAMP.MAKE_TIMESTAMPTZ.NOW.PG_SLEEP.PG_SLEEP_FOR.PG_SLEEP_UNTIL.STATEMENT_TIMESTAMP.TIMEOFDAY.TO_TIMESTAMP.TRANSACTION_TIMESTAMP.ENUM_FIRST.ENUM_LAST.ENUM_RANGE.AREA.BOUND_BOX.BOX.CENTER.CIRCLE.DIAGONAL.DIAMETER.HEIGHT.ISCLOSED.ISOPEN.LENGTH.LINE.LSEG.NPOINTS.PATH.PCLOSE.POINT.POLYGON.POPEN.RADIUS.SLOPE.WIDTH.ABBREV.BROADCAST.FAMILY.HOST.HOSTMASK.INET_MERGE.INET_SAME_FAMILY.MACADDR8_SET7BIT.MASKLEN.NETMASK.NETWORK.SET_MASKLEN.TRUNC.ARRAY_TO_TSVECTOR.GET_CURRENT_TS_CONFIG.JSONB_TO_TSVECTOR.JSON_TO_TSVECTOR.LENGTH.NUMNODE.PHRASETO_TSQUERY.PLAINTO_TSQUERY.QUERYTREE.SETWEIGHT.STRIP.TO_TSQUERY.TO_TSVECTOR.TSQUERY_PHRASE.TSVECTOR_TO_ARRAY.TS_DEBUG.TS_DELETE.TS_FILTER.TS_HEADLINE.TS_LEXIZE.TS_PARSE.TS_RANK.TS_RANK_CD.TS_REWRITE.TS_STAT.TS_TOKEN_TYPE.WEBSEARCH_TO_TSQUERY.GEN_RANDOM_UUID.UUIDV4.UUIDV7.UUID_EXTRACT_TIMESTAMP.UUID_EXTRACT_VERSION.CURSOR_TO_XML.CURSOR_TO_XMLSCHEMA.DATABASE_TO_XML.DATABASE_TO_XMLSCHEMA.DATABASE_TO_XML_AND_XMLSCHEMA.NEXTVAL.QUERY_TO_XML.QUERY_TO_XMLSCHEMA.QUERY_TO_XML_AND_XMLSCHEMA.SCHEMA_TO_XML.SCHEMA_TO_XMLSCHEMA.SCHEMA_TO_XML_AND_XMLSCHEMA.STRING.TABLE_TO_XML.TABLE_TO_XMLSCHEMA.TABLE_TO_XML_AND_XMLSCHEMA.XMLAGG.XMLCOMMENT.XMLCONCAT.XMLELEMENT.XMLEXISTS.XMLFOREST.XMLPARSE.XMLPI.XMLROOT.XMLSERIALIZE.XMLTABLE.XML_IS_WELL_FORMED.XML_IS_WELL_FORMED_CONTENT.XML_IS_WELL_FORMED_DOCUMENT.XPATH.XPATH_EXISTS.ARRAY_TO_JSON.JSONB_AGG.JSONB_ARRAY_ELEMENTS.JSONB_ARRAY_ELEMENTS_TEXT.JSONB_ARRAY_LENGTH.JSONB_BUILD_ARRAY.JSONB_BUILD_OBJECT.JSONB_EACH.JSONB_EACH_TEXT.JSONB_EXTRACT_PATH.JSONB_EXTRACT_PATH_TEXT.JSONB_INSERT.JSONB_OBJECT.JSONB_OBJECT_AGG.JSONB_OBJECT_KEYS.JSONB_PATH_EXISTS.JSONB_PATH_EXISTS_TZ.JSONB_PATH_MATCH.JSONB_PATH_MATCH_TZ.JSONB_PATH_QUERY.JSONB_PATH_QUERY_ARRAY.JSONB_PATH_QUERY_ARRAY_TZ.JSONB_PATH_QUERY_FIRST.JSONB_PATH_QUERY_FIRST_TZ.JSONB_PATH_QUERY_TZ.JSONB_POPULATE_RECORD.JSONB_POPULATE_RECORDSET.JSONB_PRETTY.JSONB_SET.JSONB_SET_LAX.JSONB_STRIP_NULLS.JSONB_TO_RECORD.JSONB_TO_RECORDSET.JSONB_TYPEOF.JSON_AGG.JSON_ARRAY_ELEMENTS.JSON_ARRAY_ELEMENTS_TEXT.JSON_ARRAY_LENGTH.JSON_BUILD_ARRAY.JSON_BUILD_OBJECT.JSON_EACH.JSON_EACH_TEXT.JSON_EXTRACT_PATH.JSON_EXTRACT_PATH_TEXT.JSON_OBJECT.JSON_OBJECT_AGG.JSON_OBJECT_KEYS.JSON_POPULATE_RECORD.JSON_POPULATE_RECORDSET.JSON_STRIP_NULLS.JSON_TO_RECORD.JSON_TO_RECORDSET.JSON_TYPEOF.ROW_TO_JSON.TO_JSON.TO_JSONB.TO_TIMESTAMP.CURRVAL.LASTVAL.NEXTVAL.SETVAL.COALESCE.GREATEST.LEAST.NULLIF.ARRAY_AGG.ARRAY_APPEND.ARRAY_CAT.ARRAY_DIMS.ARRAY_FILL.ARRAY_LENGTH.ARRAY_LOWER.ARRAY_NDIMS.ARRAY_POSITION.ARRAY_POSITIONS.ARRAY_PREPEND.ARRAY_REMOVE.ARRAY_REPLACE.ARRAY_TO_STRING.ARRAY_UPPER.CARDINALITY.STRING_TO_ARRAY.TRIM_ARRAY.UNNEST.ISEMPTY.LOWER.LOWER_INC.LOWER_INF.MULTIRANGE.RANGE_MERGE.UPPER.UPPER_INC.UPPER_INF.ARRAY_AGG.AVG.BIT_AND.BIT_OR.BIT_XOR.BOOL_AND.BOOL_OR.COALESCE.CORR.COUNT.COVAR_POP.COVAR_SAMP.CUME_DIST.DENSE_RANK.EVERY.GROUPING.JSONB_AGG.JSONB_OBJECT_AGG.JSON_AGG.JSON_OBJECT_AGG.MAX.MIN.MODE.PERCENTILE_CONT.PERCENTILE_DISC.PERCENT_RANK.RANGE_AGG.RANGE_INTERSECT_AGG.RANK.REGR_AVGX.REGR_AVGY.REGR_COUNT.REGR_INTERCEPT.REGR_R2.REGR_SLOPE.REGR_SXX.REGR_SXY.REGR_SYY.STDDEV.STDDEV_POP.STDDEV_SAMP.STRING_AGG.SUM.TO_JSON.TO_JSONB.VARIANCE.VAR_POP.VAR_SAMP.XMLAGG.CUME_DIST.DENSE_RANK.FIRST_VALUE.LAG.LAST_VALUE.LEAD.NTH_VALUE.NTILE.PERCENT_RANK.RANK.ROW_NUMBER.GENERATE_SERIES.GENERATE_SUBSCRIPTS.ACLDEFAULT.ACLEXPLODE.COL_DESCRIPTION.CURRENT_CATALOG.CURRENT_DATABASE.CURRENT_QUERY.CURRENT_ROLE.CURRENT_SCHEMA.CURRENT_SCHEMAS.CURRENT_USER.FORMAT_TYPE.HAS_ANY_COLUMN_PRIVILEGE.HAS_COLUMN_PRIVILEGE.HAS_DATABASE_PRIVILEGE.HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE.HAS_FUNCTION_PRIVILEGE.HAS_LANGUAGE_PRIVILEGE.HAS_SCHEMA_PRIVILEGE.HAS_SEQUENCE_PRIVILEGE.HAS_SERVER_PRIVILEGE.HAS_TABLESPACE_PRIVILEGE.HAS_TABLE_PRIVILEGE.HAS_TYPE_PRIVILEGE.INET_CLIENT_ADDR.INET_CLIENT_PORT.INET_SERVER_ADDR.INET_SERVER_PORT.MAKEACLITEM.OBJ_DESCRIPTION.PG_BACKEND_PID.PG_BLOCKING_PIDS.PG_COLLATION_IS_VISIBLE.PG_CONF_LOAD_TIME.PG_CONTROL_CHECKPOINT.PG_CONTROL_INIT.PG_CONTROL_SYSTEM.PG_CONVERSION_IS_VISIBLE.PG_CURRENT_LOGFILE.PG_CURRENT_SNAPSHOT.PG_CURRENT_XACT_ID.PG_CURRENT_XACT_ID_IF_ASSIGNED.PG_DESCRIBE_OBJECT.PG_FUNCTION_IS_VISIBLE.PG_GET_CATALOG_FOREIGN_KEYS.PG_GET_CONSTRAINTDEF.PG_GET_EXPR.PG_GET_FUNCTIONDEF.PG_GET_FUNCTION_ARGUMENTS.PG_GET_FUNCTION_IDENTITY_ARGUMENTS.PG_GET_FUNCTION_RESULT.PG_GET_INDEXDEF.PG_GET_KEYWORDS.PG_GET_OBJECT_ADDRESS.PG_GET_OWNED_SEQUENCE.PG_GET_RULEDEF.PG_GET_SERIAL_SEQUENCE.PG_GET_STATISTICSOBJDEF.PG_GET_TRIGGERDEF.PG_GET_USERBYID.PG_GET_VIEWDEF.PG_HAS_ROLE.PG_IDENTIFY_OBJECT.PG_IDENTIFY_OBJECT_AS_ADDRESS.PG_INDEXAM_HAS_PROPERTY.PG_INDEX_COLUMN_HAS_PROPERTY.PG_INDEX_HAS_PROPERTY.PG_IS_OTHER_TEMP_SCHEMA.PG_JIT_AVAILABLE.PG_LAST_COMMITTED_XACT.PG_LISTENING_CHANNELS.PG_MY_TEMP_SCHEMA.PG_NOTIFICATION_QUEUE_USAGE.PG_OPCLASS_IS_VISIBLE.PG_OPERATOR_IS_VISIBLE.PG_OPFAMILY_IS_VISIBLE.PG_OPTIONS_TO_TABLE.PG_POSTMASTER_START_TIME.PG_SAFE_SNAPSHOT_BLOCKING_PIDS.PG_SNAPSHOT_XIP.PG_SNAPSHOT_XMAX.PG_SNAPSHOT_XMIN.PG_STATISTICS_OBJ_IS_VISIBLE.PG_TABLESPACE_DATABASES.PG_TABLESPACE_LOCATION.PG_TABLE_IS_VISIBLE.PG_TRIGGER_DEPTH.PG_TS_CONFIG_IS_VISIBLE.PG_TS_DICT_IS_VISIBLE.PG_TS_PARSER_IS_VISIBLE.PG_TS_TEMPLATE_IS_VISIBLE.PG_TYPEOF.PG_TYPE_IS_VISIBLE.PG_VISIBLE_IN_SNAPSHOT.PG_XACT_COMMIT_TIMESTAMP.PG_XACT_COMMIT_TIMESTAMP_ORIGIN.PG_XACT_STATUS.PQSERVERVERSION.ROW_SECURITY_ACTIVE.SESSION_USER.SHOBJ_DESCRIPTION.TO_REGCLASS.TO_REGCOLLATION.TO_REGNAMESPACE.TO_REGOPER.TO_REGOPERATOR.TO_REGPROC.TO_REGPROCEDURE.TO_REGROLE.TO_REGTYPE.TXID_CURRENT.TXID_CURRENT_IF_ASSIGNED.TXID_CURRENT_SNAPSHOT.TXID_SNAPSHOT_XIP.TXID_SNAPSHOT_XMAX.TXID_SNAPSHOT_XMIN.TXID_STATUS.TXID_VISIBLE_IN_SNAPSHOT.USER.VERSION.BRIN_DESUMMARIZE_RANGE.BRIN_SUMMARIZE_NEW_VALUES.BRIN_SUMMARIZE_RANGE.CONVERT_FROM.CURRENT_SETTING.GIN_CLEAN_PENDING_LIST.PG_ADVISORY_LOCK.PG_ADVISORY_LOCK_SHARED.PG_ADVISORY_UNLOCK.PG_ADVISORY_UNLOCK_ALL.PG_ADVISORY_UNLOCK_SHARED.PG_ADVISORY_XACT_LOCK.PG_ADVISORY_XACT_LOCK_SHARED.PG_BACKUP_START_TIME.PG_CANCEL_BACKEND.PG_COLLATION_ACTUAL_VERSION.PG_COLUMN_COMPRESSION.PG_COLUMN_SIZE.PG_COPY_LOGICAL_REPLICATION_SLOT.PG_COPY_PHYSICAL_REPLICATION_SLOT.PG_CREATE_LOGICAL_REPLICATION_SLOT.PG_CREATE_PHYSICAL_REPLICATION_SLOT.PG_CREATE_RESTORE_POINT.PG_CURRENT_WAL_FLUSH_LSN.PG_CURRENT_WAL_INSERT_LSN.PG_CURRENT_WAL_LSN.PG_DATABASE_SIZE.PG_DROP_REPLICATION_SLOT.PG_EXPORT_SNAPSHOT.PG_FILENODE_RELATION.PG_GET_WAL_REPLAY_PAUSE_STATE.PG_IMPORT_SYSTEM_COLLATIONS.PG_INDEXES_SIZE.PG_IS_IN_BACKUP.PG_IS_IN_RECOVERY.PG_IS_WAL_REPLAY_PAUSED.PG_LAST_WAL_RECEIVE_LSN.PG_LAST_WAL_REPLAY_LSN.PG_LAST_XACT_REPLAY_TIMESTAMP.PG_LOGICAL_EMIT_MESSAGE.PG_LOGICAL_SLOT_GET_BINARY_CHANGES.PG_LOGICAL_SLOT_GET_CHANGES.PG_LOGICAL_SLOT_PEEK_BINARY_CHANGES.PG_LOGICAL_SLOT_PEEK_CHANGES.PG_LOG_BACKEND_MEMORY_CONTEXTS.PG_LS_ARCHIVE_STATUSDIR.PG_LS_DIR.PG_LS_LOGDIR.PG_LS_TMPDIR.PG_LS_WALDIR.PG_PARTITION_ANCESTORS.PG_PARTITION_ROOT.PG_PARTITION_TREE.PG_PROMOTE.PG_READ_BINARY_FILE.PG_READ_FILE.PG_RELATION_FILENODE.PG_RELATION_FILEPATH.PG_RELATION_SIZE.PG_RELOAD_CONF.PG_REPLICATION_ORIGIN_ADVANCE.PG_REPLICATION_ORIGIN_CREATE.PG_REPLICATION_ORIGIN_DROP.PG_REPLICATION_ORIGIN_OID.PG_REPLICATION_ORIGIN_PROGRESS.PG_REPLICATION_ORIGIN_SESSION_IS_SETUP.PG_REPLICATION_ORIGIN_SESSION_PROGRESS.PG_REPLICATION_ORIGIN_SESSION_RESET.PG_REPLICATION_ORIGIN_SESSION_SETUP.PG_REPLICATION_ORIGIN_XACT_RESET.PG_REPLICATION_ORIGIN_XACT_SETUP.PG_REPLICATION_SLOT_ADVANCE.PG_ROTATE_LOGFILE.PG_SIZE_BYTES.PG_SIZE_PRETTY.PG_START_BACKUP.PG_STAT_FILE.PG_STOP_BACKUP.PG_SWITCH_WAL.PG_TABLESPACE_SIZE.PG_TABLE_SIZE.PG_TERMINATE_BACKEND.PG_TOTAL_RELATION_SIZE.PG_TRY_ADVISORY_LOCK.PG_TRY_ADVISORY_LOCK_SHARED.PG_TRY_ADVISORY_XACT_LOCK.PG_TRY_ADVISORY_XACT_LOCK_SHARED.PG_WALFILE_NAME.PG_WALFILE_NAME_OFFSET.PG_WAL_LSN_DIFF.PG_WAL_REPLAY_PAUSE.PG_WAL_REPLAY_RESUME.SET_CONFIG.SUPPRESS_REDUNDANT_UPDATES_TRIGGER.TSVECTOR_UPDATE_TRIGGER.TSVECTOR_UPDATE_TRIGGER_COLUMN.PG_EVENT_TRIGGER_DDL_COMMANDS.PG_EVENT_TRIGGER_DROPPED_OBJECTS.PG_EVENT_TRIGGER_TABLE_REWRITE_OID.PG_EVENT_TRIGGER_TABLE_REWRITE_REASON.PG_GET_OBJECT_ADDRESS.PG_MCV_LIST_ITEMS.CAST`.split(`.`),Kn=`ALL.ANALYSE.ANALYZE.AND.ANY.AS.ASC.ASYMMETRIC.AUTHORIZATION.BETWEEN.BINARY.BOTH.CASE.CAST.CHECK.COLLATE.COLLATION.COLUMN.CONCURRENTLY.CONSTRAINT.CREATE.CROSS.CURRENT_CATALOG.CURRENT_DATE.CURRENT_ROLE.CURRENT_SCHEMA.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.DAY.DEFAULT.DEFERRABLE.DESC.DISTINCT.DO.ELSE.END.EXCEPT.EXISTS.FALSE.FETCH.FILTER.FOR.FOREIGN.FREEZE.FROM.FULL.GRANT.GROUP.HAVING.HOUR.ILIKE.IN.INITIALLY.INNER.INOUT.INTERSECT.INTO.IS.ISNULL.JOIN.LATERAL.LEADING.LEFT.LIKE.LIMIT.LOCALTIME.LOCALTIMESTAMP.MINUTE.MONTH.NATURAL.NOT.NOTNULL.NULL.NULLIF.OFFSET.ON.ONLY.OR.ORDER.OUT.OUTER.OVER.OVERLAPS.PLACING.PRIMARY.REFERENCES.RETURNING.RIGHT.ROW.SECOND.SELECT.SESSION_USER.SIMILAR.SOME.SYMMETRIC.TABLE.TABLESAMPLE.THEN.TO.TRAILING.TRUE.UNION.UNIQUE.USER.USING.VALUES.VARIADIC.VERBOSE.WHEN.WHERE.WINDOW.WITH.WITHIN.WITHOUT.YEAR`.split(`.`),qn=`ARRAY.BIGINT.BIT.BIT VARYING.BOOL.BOOLEAN.CHAR.CHARACTER.CHARACTER VARYING.DECIMAL.DEC.DOUBLE.ENUM.FLOAT.INT.INTEGER.INTERVAL.NCHAR.NUMERIC.JSON.JSONB.PRECISION.REAL.SMALLINT.TEXT.TIME.TIMESTAMP.TIMESTAMPTZ.UUID.VARCHAR.XML.ZONE`.split(`.`),Jn=I([`SELECT [ALL | DISTINCT]`]),Yn=I([`WITH [RECURSIVE]`,`FROM`,`WHERE`,`GROUP BY [ALL | DISTINCT]`,`HAVING`,`WINDOW`,`PARTITION BY`,`ORDER BY`,`LIMIT`,`OFFSET`,`FETCH {FIRST | NEXT}`,`FOR {UPDATE | NO KEY UPDATE | SHARE | KEY SHARE} [OF]`,`INSERT INTO`,`VALUES`,`DEFAULT VALUES`,`SET`,`RETURNING`]),Xn=I([`CREATE [GLOBAL | LOCAL] [TEMPORARY | TEMP | UNLOGGED] TABLE [IF NOT EXISTS]`]),Zn=I(`CREATE [OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE] VIEW.CREATE [MATERIALIZED] VIEW [IF NOT EXISTS].UPDATE [ONLY].WHERE CURRENT OF.ON CONFLICT.DELETE FROM [ONLY].DROP TABLE [IF EXISTS].ALTER TABLE [IF EXISTS] [ONLY].ALTER TABLE ALL IN TABLESPACE.RENAME [COLUMN].RENAME TO.ADD [COLUMN] [IF NOT EXISTS].DROP [COLUMN] [IF EXISTS].ALTER [COLUMN].SET DATA TYPE.{SET | DROP} DEFAULT.{SET | DROP} NOT NULL.TRUNCATE [TABLE] [ONLY].SET SCHEMA.{BEFORE | AFTER | INSTEAD OF} {INSERT | UPDATE [OF] | DELETE | TRUNCATE}.[NOT] DEFERRABLE.INITIALLY {DEFERRED | IMMEDIATE}.[NOT] DEFERRABLE INITIALLY {DEFERRED | IMMEDIATE}.ABORT.ALTER AGGREGATE.ALTER COLLATION.ALTER CONVERSION.ALTER DATABASE.ALTER DEFAULT PRIVILEGES.ALTER DOMAIN.ALTER EVENT TRIGGER.ALTER EXTENSION.ALTER FOREIGN DATA WRAPPER.ALTER FOREIGN TABLE.ALTER FUNCTION.ALTER GROUP.ALTER INDEX.ALTER LANGUAGE.ALTER LARGE OBJECT.ALTER MATERIALIZED VIEW.ALTER OPERATOR.ALTER OPERATOR CLASS.ALTER OPERATOR FAMILY.ALTER POLICY.ALTER PROCEDURE.ALTER PUBLICATION.ALTER ROLE.ALTER ROUTINE.ALTER RULE.ALTER SCHEMA.ALTER SEQUENCE.ALTER SERVER.ALTER STATISTICS.ALTER SUBSCRIPTION.ALTER SYSTEM.ALTER TABLESPACE.ALTER TEXT SEARCH CONFIGURATION.ALTER TEXT SEARCH DICTIONARY.ALTER TEXT SEARCH PARSER.ALTER TEXT SEARCH TEMPLATE.ALTER TRIGGER.ALTER TYPE.ALTER USER.ALTER USER MAPPING.ALTER VIEW.ANALYZE.BEGIN.CALL.CHECKPOINT.CLOSE.CLUSTER.COMMENT ON.COMMIT.COMMIT PREPARED.COPY.CREATE ACCESS METHOD.CREATE [OR REPLACE] AGGREGATE.CREATE CAST.CREATE COLLATION.CREATE [DEFAULT] CONVERSION.CREATE DATABASE.CREATE DOMAIN.CREATE EVENT TRIGGER.CREATE EXTENSION.CREATE FOREIGN DATA WRAPPER.CREATE FOREIGN TABLE.CREATE [OR REPLACE] FUNCTION.CREATE GROUP.CREATE [UNIQUE] INDEX.CREATE [OR REPLACE] [TRUSTED] [PROCEDURAL] LANGUAGE.CREATE OPERATOR.CREATE OPERATOR CLASS.CREATE OPERATOR FAMILY.CREATE POLICY.CREATE [OR REPLACE] PROCEDURE.CREATE PUBLICATION.CREATE ROLE.CREATE [OR REPLACE] RULE.CREATE SCHEMA [AUTHORIZATION].CREATE [TEMPORARY | TEMP | UNLOGGED] SEQUENCE.CREATE SERVER.CREATE STATISTICS.CREATE SUBSCRIPTION.CREATE TABLESPACE.CREATE TEXT SEARCH CONFIGURATION.CREATE TEXT SEARCH DICTIONARY.CREATE TEXT SEARCH PARSER.CREATE TEXT SEARCH TEMPLATE.CREATE [OR REPLACE] TRANSFORM.CREATE [OR REPLACE] [CONSTRAINT] TRIGGER.CREATE TYPE.CREATE USER.CREATE USER MAPPING.DEALLOCATE.DECLARE.DISCARD.DROP ACCESS METHOD.DROP AGGREGATE.DROP CAST.DROP COLLATION.DROP CONVERSION.DROP DATABASE.DROP DOMAIN.DROP EVENT TRIGGER.DROP EXTENSION.DROP FOREIGN DATA WRAPPER.DROP FOREIGN TABLE.DROP FUNCTION.DROP GROUP.DROP IDENTITY.DROP INDEX.DROP LANGUAGE.DROP MATERIALIZED VIEW [IF EXISTS].DROP OPERATOR.DROP OPERATOR CLASS.DROP OPERATOR FAMILY.DROP OWNED.DROP POLICY.DROP PROCEDURE.DROP PUBLICATION.DROP ROLE.DROP ROUTINE.DROP RULE.DROP SCHEMA.DROP SEQUENCE.DROP SERVER.DROP STATISTICS.DROP SUBSCRIPTION.DROP TABLESPACE.DROP TEXT SEARCH CONFIGURATION.DROP TEXT SEARCH DICTIONARY.DROP TEXT SEARCH PARSER.DROP TEXT SEARCH TEMPLATE.DROP TRANSFORM.DROP TRIGGER.DROP TYPE.DROP USER.DROP USER MAPPING.DROP VIEW.EXECUTE [FUNCTION | PROCEDURE].EXPLAIN.FETCH.GRANT.IMPORT FOREIGN SCHEMA.LISTEN.LOAD.LOCK.MOVE.NOTIFY.OVERRIDING SYSTEM VALUE.PREPARE.PREPARE TRANSACTION.REASSIGN OWNED.REFRESH MATERIALIZED VIEW.REINDEX.RELEASE SAVEPOINT.RESET [ALL|ROLE|SESSION AUTHORIZATION].REVOKE.ROLLBACK.ROLLBACK PREPARED.ROLLBACK TO SAVEPOINT.SAVEPOINT.SECURITY LABEL.SELECT INTO.SET CONSTRAINTS.SET ROLE.SET SESSION AUTHORIZATION.SET TRANSACTION.SHOW.START TRANSACTION.UNLISTEN.VACUUM`.split(`.`)),Qn=I([`UNION [ALL | DISTINCT]`,`EXCEPT [ALL | DISTINCT]`,`INTERSECT [ALL | DISTINCT]`]),$n=I([`JOIN`,`{LEFT | RIGHT | FULL} [OUTER] JOIN`,`{INNER | CROSS} JOIN`,`NATURAL [INNER] JOIN`,`NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN`]),er=I([`PRIMARY KEY`,`GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY`,`ON {UPDATE | DELETE} [NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT]`,`DO {NOTHING | UPDATE}`,`AS MATERIALIZED`,`FOR EACH ROW`,`OR {INSERT | UPDATE [OF] | DELETE | TRUNCATE}`,`{ROWS | RANGE | GROUPS} BETWEEN`,`IS [NOT] DISTINCT FROM`,`NULLS {FIRST | LAST}`,`WITH ORDINALITY`]),tr=I([`[TIMESTAMP | TIME] {WITH | WITHOUT} TIME ZONE`]),nr={name:`postgresql`,tokenizerOptions:{reservedSelect:Jn,reservedClauses:[...Yn,...Xn,...Zn],reservedSetOperations:Qn,reservedJoins:$n,reservedKeywordPhrases:er,reservedDataTypePhrases:tr,reservedKeywords:Kn,reservedDataTypes:qn,reservedFunctionNames:Gn,nestedBlockComments:!0,lineCommentTypes:[`--`,`\\restrict `,`\\unrestrict `],extraParens:[`[]`],underscoresInNumbers:!0,stringTypes:[`$$`,{quote:`''-qq`,prefixes:[`U&`]},{quote:`''-qq-bs`,prefixes:[`E`],requirePrefix:!0},{quote:`''-raw`,prefixes:[`B`,`X`],requirePrefix:!0}],identTypes:[{quote:`""-qq`,prefixes:[`U&`]}],identChars:{rest:`$`},paramTypes:{numbered:[`$`]},operators:`%.^.|/.||/.@.:=.&.|.#.~.<<.>>.~>~.~<~.~>=~.~<=~.@-@.@@.##.<->.&&.&<.&>.<<|.&<|.|>>.|&>.<^.>^.?#.?-.?|.?-|.?||.@>.<@.<@>.~=.?.@?.?&.->.->>.#>.#>>.#-.=>.>>=.<<=.~~.~~*.!~~.!~~*.~.~*.!~.!~*.-|-.||.@@@.!!.^@.<%.%>.<<%.%>>.<<->.<->>.<<<->.<->>>.~>.#=.::.:.<#>.<=>.<+>.<~>.<%>.&&&.|=|`.split(`.`),operatorKeyword:!0},formatOptions:{alwaysDenseOperators:[`::`,`:`],onelineClauses:[...Xn,...Zn],tabularOnelineClauses:Zn}},rr=`ABS.CHANGES.CHAR.COALESCE.FORMAT.GLOB.HEX.IFNULL.IIF.INSTR.LAST_INSERT_ROWID.LENGTH.LIKE.LIKELIHOOD.LIKELY.LOAD_EXTENSION.LOWER.LTRIM.NULLIF.PRINTF.QUOTE.RANDOM.RANDOMBLOB.REPLACE.ROUND.RTRIM.SIGN.SOUNDEX.SQLITE_COMPILEOPTION_GET.SQLITE_COMPILEOPTION_USED.SQLITE_OFFSET.SQLITE_SOURCE_ID.SQLITE_VERSION.SUBSTR.SUBSTRING.TOTAL_CHANGES.TRIM.TYPEOF.UNICODE.UNLIKELY.UPPER.ZEROBLOB.AVG.COUNT.GROUP_CONCAT.MAX.MIN.SUM.TOTAL.DATE.TIME.DATETIME.JULIANDAY.UNIXEPOCH.STRFTIME.row_number.rank.dense_rank.percent_rank.cume_dist.ntile.lag.lead.first_value.last_value.nth_value.ACOS.ACOSH.ASIN.ASINH.ATAN.ATAN2.ATANH.CEIL.CEILING.COS.COSH.DEGREES.EXP.FLOOR.LN.LOG.LOG.LOG10.LOG2.MOD.PI.POW.POWER.RADIANS.SIN.SINH.SQRT.TAN.TANH.TRUNC.JSON.JSON_ARRAY.JSON_ARRAY_LENGTH.JSON_ARRAY_LENGTH.JSON_EXTRACT.JSON_INSERT.JSON_OBJECT.JSON_PATCH.JSON_REMOVE.JSON_REPLACE.JSON_SET.JSON_TYPE.JSON_TYPE.JSON_VALID.JSON_QUOTE.JSON_GROUP_ARRAY.JSON_GROUP_OBJECT.JSON_EACH.JSON_TREE.CAST`.split(`.`),ir=`ABORT.ACTION.ADD.AFTER.ALL.ALTER.AND.ARE.ALWAYS.ANALYZE.AS.ASC.ATTACH.AUTOINCREMENT.BEFORE.BEGIN.BETWEEN.BY.CASCADE.CASE.CAST.CHECK.COLLATE.COLUMN.COMMIT.CONFLICT.CONSTRAINT.CREATE.CROSS.CURRENT.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.DATABASE.DEFAULT.DEFERRABLE.DEFERRED.DELETE.DESC.DETACH.DISTINCT.DO.DROP.EACH.ELSE.END.ESCAPE.EXCEPT.EXCLUDE.EXCLUSIVE.EXISTS.EXPLAIN.FAIL.FILTER.FIRST.FOLLOWING.FOR.FOREIGN.FROM.FULL.GENERATED.GLOB.GROUP.HAVING.IF.IGNORE.IMMEDIATE.IN.INDEX.INDEXED.INITIALLY.INNER.INSERT.INSTEAD.INTERSECT.INTO.IS.ISNULL.JOIN.KEY.LAST.LEFT.LIKE.LIMIT.MATCH.MATERIALIZED.NATURAL.NO.NOT.NOTHING.NOTNULL.NULL.NULLS.OF.OFFSET.ON.ONLY.OPEN.OR.ORDER.OTHERS.OUTER.OVER.PARTITION.PLAN.PRAGMA.PRECEDING.PRIMARY.QUERY.RAISE.RANGE.RECURSIVE.REFERENCES.REGEXP.REINDEX.RELEASE.RENAME.REPLACE.RESTRICT.RETURNING.RIGHT.ROLLBACK.ROW.ROWS.SAVEPOINT.SELECT.SET.TABLE.TEMP.TEMPORARY.THEN.TIES.TO.TRANSACTION.TRIGGER.UNBOUNDED.UNION.UNIQUE.UPDATE.USING.VACUUM.VALUES.VIEW.VIRTUAL.WHEN.WHERE.WINDOW.WITH.WITHOUT`.split(`.`),ar=[`ANY`,`ARRAY`,`BLOB`,`CHARACTER`,`DECIMAL`,`INT`,`INTEGER`,`NATIVE CHARACTER`,`NCHAR`,`NUMERIC`,`NVARCHAR`,`REAL`,`TEXT`,`VARCHAR`,`VARYING CHARACTER`],or=I([`SELECT [ALL | DISTINCT]`]),sr=I([`WITH [RECURSIVE]`,`FROM`,`WHERE`,`GROUP BY`,`HAVING`,`WINDOW`,`PARTITION BY`,`ORDER BY`,`LIMIT`,`OFFSET`,`INSERT [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK] INTO`,`REPLACE INTO`,`VALUES`,`SET`,`RETURNING`]),cr=I([`CREATE [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]`]),lr=I([`CREATE [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]`,`UPDATE [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK]`,`ON CONFLICT`,`DELETE FROM`,`DROP TABLE [IF EXISTS]`,`ALTER TABLE`,`ADD [COLUMN]`,`DROP [COLUMN]`,`RENAME [COLUMN]`,`RENAME TO`,`SET SCHEMA`]),ur=I([`UNION [ALL]`,`EXCEPT`,`INTERSECT`]),dr=I([`JOIN`,`{LEFT | RIGHT | FULL} [OUTER] JOIN`,`{INNER | CROSS} JOIN`,`NATURAL [INNER] JOIN`,`NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN`]),fr=I([`ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]`,`{ROWS | RANGE | GROUPS} BETWEEN`,`DO UPDATE`]),pr=I([]),mr={name:`sqlite`,tokenizerOptions:{reservedSelect:or,reservedClauses:[...sr,...cr,...lr],reservedSetOperations:ur,reservedJoins:dr,reservedKeywordPhrases:fr,reservedDataTypePhrases:pr,reservedKeywords:ir,reservedDataTypes:ar,reservedFunctionNames:rr,stringTypes:[`''-qq`,{quote:`''-raw`,prefixes:[`X`],requirePrefix:!0}],identTypes:[`""-qq`,"``",`[]`],paramTypes:{positional:!0,numbered:[`?`],named:[`:`,`@`],custom:[{regex:String.raw`\$[a-zA-Z_][a-zA-Z0-9_]*(?:::[a-zA-Z_][a-zA-Z0-9_]*)*(?:\([^)]*\))?`,key:e=>e.slice(1)}]},operators:[`%`,`~`,`&`,`|`,`<<`,`>>`,`==`,`->`,`->>`,`||`]},formatOptions:{onelineClauses:[...cr,...lr],tabularOnelineClauses:lr}},z=e=>e[e.length-1],hr=e=>e.sort((e,t)=>t.length-e.length||e.localeCompare(t)),gr=e=>e.replace(/\s+/gu,` `),_r=e=>/\n/.test(e),B=e=>e.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`),vr=/\s+/uy,V=e=>RegExp(`(?:${e})`,`uy`),yr=e=>e.split(``).map(e=>/ /gu.test(e)?`\\s+`:`[${e.toUpperCase()}${e.toLowerCase()}]`).join(``),br=e=>e+`(?:-`+e+`)*`,xr=({prefixes:e,requirePrefix:t})=>`(?:${e.map(yr).join(`|`)}${t?``:`|`})`,Sr=e=>RegExp(`(?:${e.map(B).join(`|`)}).*?(?=\r\n|\r|\n|$)`,`uy`),Cr=(e,t=[])=>{let n=e===`open`?0:1;return V([`()`,...t].map(e=>e[n]).map(B).join(`|`))},wr=e=>V(`${hr(e).map(B).join(`|`)}`),Tr=({rest:e,dashes:t})=>e||t?`(?![${e||``}${t?`-`:``}])`:``,H=(e,t={})=>{if(e.length===0)return/^\b$/u;let n=Tr(t),r=hr(e).map(B).join(`|`).replace(/ /gu,`\\s+`);return RegExp(`(?:${r})${n}\\b`,`iuy`)},Er=(e,t)=>{if(e.length)return V(`(?:${e.map(B).join(`|`)})(?:${t})`)},Dr=()=>{let e={"<":`>`,"[":`]`,"(":`)`,"{":`}`},t=Object.entries(e).map(([e,t])=>`{left}(?:(?!{right}').)*?{right}`.replace(/{left}/g,B(e)).replace(/{right}/g,B(t))),n=B(Object.keys(e).join(``));return`[Qq]'(?:${String.raw`(?<tag>[^\s${n}])(?:(?!\k<tag>').)*?\k<tag>`}|${t.join(`|`)})'`},Or={"``":"(?:`[^`]*`)+","[]":String.raw`(?:\[[^\]]*\])(?:\][^\]]*\])*`,'""-qq':String.raw`(?:"[^"]*")+`,'""-bs':String.raw`(?:"[^"\\]*(?:\\.[^"\\]*)*")`,'""-qq-bs':String.raw`(?:"[^"\\]*(?:\\.[^"\\]*)*")+`,'""-raw':String.raw`(?:"[^"]*")`,"''-qq":String.raw`(?:'[^']*')+`,"''-bs":String.raw`(?:'[^'\\]*(?:\\.[^'\\]*)*')`,"''-qq-bs":String.raw`(?:'[^'\\]*(?:\\.[^'\\]*)*')+`,"''-raw":String.raw`(?:'[^']*')`,$$:String.raw`(?<tag>\$\w*\$)[\s\S]*?\k<tag>`,"'''..'''":String.raw`'''[^\\]*?(?:\\.[^\\]*?)*?'''`,'""".."""':String.raw`"""[^\\]*?(?:\\.[^\\]*?)*?"""`,"{}":String.raw`(?:\{[^\}]*\})`,"q''":Dr()},kr=e=>typeof e==`string`?Or[e]:`regex`in e?e.regex:xr(e)+Or[e.quote],Ar=e=>V(e.map(e=>`regex`in e?e.regex:kr(e)).join(`|`)),jr=e=>e.map(kr).join(`|`),Mr=e=>V(jr(e)),Nr=(e={})=>V(Pr(e)),Pr=({first:e,rest:t,dashes:n,allowFirstCharNumber:r}={})=>{let i=`\\p{Alphabetic}\\p{Mark}_`,a=`\\p{Decimal_Number}`,o=B(e??``),s=B(t??``),c=r?`[${i}${a}${o}][${i}${a}${s}]*`:`[${i}${o}][${i}${a}${s}]*`;return n?br(c):c};function Fr(e,t){let n=e.slice(0,t).split(/\n/);return{line:n.length,col:n[n.length-1].length+1}}var Ir=class{constructor(e,t){this.rules=e,this.dialectName=t,this.input=``,this.index=0}tokenize(e){this.input=e,this.index=0;let t=[],n;for(;this.index<this.input.length;){let e=this.getWhitespace();if(this.index<this.input.length){if(n=this.getNextToken(),!n)throw this.createParseError();t.push(Object.assign(Object.assign({},n),{precedingWhitespace:e}))}}return t}createParseError(){let e=this.input.slice(this.index,this.index+10),{line:t,col:n}=Fr(this.input,this.index);return Error(`Parse error: Unexpected "${e}" at line ${t} column ${n}.\n${this.dialectInfo()}`)}dialectInfo(){return this.dialectName===`sql`?`This likely happens because you're using the default "sql" dialect.
4
- If possible, please select a more specific dialect (like sqlite, postgresql, etc).`:`SQL dialect used: "${this.dialectName}".`}getWhitespace(){vr.lastIndex=this.index;let e=vr.exec(this.input);if(e)return this.index+=e[0].length,e[0]}getNextToken(){for(let e of this.rules){let t=this.match(e);if(t)return t}}match(e){e.regex.lastIndex=this.index;let t=e.regex.exec(this.input);if(t){let n=t[0],r={type:e.type,raw:n,text:e.text?e.text(n):n,start:this.index};return e.key&&(r.key=e.key(n)),this.index+=n.length,r}}},Lr=/\/\*/uy,Rr=/[\s\S]/uy,zr=/\*\//uy,Br=class{constructor(){this.lastIndex=0}exec(e){let t=``,n,r=0;if(n=this.matchSection(Lr,e))t+=n,r++;else return null;for(;r>0;)if(n=this.matchSection(Lr,e))t+=n,r++;else if(n=this.matchSection(zr,e))t+=n,r--;else if(n=this.matchSection(Rr,e))t+=n;else return null;return[t]}matchSection(e,t){e.lastIndex=this.lastIndex;let n=e.exec(t);return n&&(this.lastIndex+=n[0].length),n?n[0]:null}},Vr=class{constructor(e,t){this.cfg=e,this.dialectName=t,this.rulesBeforeParams=this.buildRulesBeforeParams(e),this.rulesAfterParams=this.buildRulesAfterParams(e)}tokenize(e,t){let n=new Ir([...this.rulesBeforeParams,...this.buildParamRules(this.cfg,t),...this.rulesAfterParams],this.dialectName).tokenize(e);return this.cfg.postProcess?this.cfg.postProcess(n):n}buildRulesBeforeParams(e){return this.validRules([{type:L.DISABLE_COMMENT,regex:/(\/\* *sql-formatter-disable *\*\/[\s\S]*?(?:\/\* *sql-formatter-enable *\*\/|$))/uy},{type:L.BLOCK_COMMENT,regex:e.nestedBlockComments?new Br:/(\/\*[^]*?\*\/)/uy},{type:L.LINE_COMMENT,regex:Sr(e.lineCommentTypes??[`--`])},{type:L.QUOTED_IDENTIFIER,regex:Mr(e.identTypes)},{type:L.NUMBER,regex:e.underscoresInNumbers?/(?:0x[0-9a-fA-F_]+|0b[01_]+|(?:-\s*)?(?:[0-9_]*\.[0-9_]+|[0-9_]+(?:\.[0-9_]*)?)(?:[eE][-+]?[0-9_]+(?:\.[0-9_]+)?)?)(?![\w\p{Alphabetic}])/uy:/(?:0x[0-9a-fA-F]+|0b[01]+|(?:-\s*)?(?:[0-9]*\.[0-9]+|[0-9]+(?:\.[0-9]*)?)(?:[eE][-+]?[0-9]+(?:\.[0-9]+)?)?)(?![\w\p{Alphabetic}])/uy},{type:L.RESERVED_KEYWORD_PHRASE,regex:H(e.reservedKeywordPhrases??[],e.identChars),text:U},{type:L.RESERVED_DATA_TYPE_PHRASE,regex:H(e.reservedDataTypePhrases??[],e.identChars),text:U},{type:L.CASE,regex:/CASE\b/iuy,text:U},{type:L.END,regex:/END\b/iuy,text:U},{type:L.BETWEEN,regex:/BETWEEN\b/iuy,text:U},{type:L.LIMIT,regex:e.reservedClauses.includes(`LIMIT`)?/LIMIT\b/iuy:void 0,text:U},{type:L.RESERVED_CLAUSE,regex:H(e.reservedClauses,e.identChars),text:U},{type:L.RESERVED_SELECT,regex:H(e.reservedSelect,e.identChars),text:U},{type:L.RESERVED_SET_OPERATION,regex:H(e.reservedSetOperations,e.identChars),text:U},{type:L.WHEN,regex:/WHEN\b/iuy,text:U},{type:L.ELSE,regex:/ELSE\b/iuy,text:U},{type:L.THEN,regex:/THEN\b/iuy,text:U},{type:L.RESERVED_JOIN,regex:H(e.reservedJoins,e.identChars),text:U},{type:L.AND,regex:/AND\b/iuy,text:U},{type:L.OR,regex:/OR\b/iuy,text:U},{type:L.XOR,regex:e.supportsXor?/XOR\b/iuy:void 0,text:U},...e.operatorKeyword?[{type:L.OPERATOR,regex:/OPERATOR *\([^)]+\)/iuy}]:[],{type:L.RESERVED_FUNCTION_NAME,regex:H(e.reservedFunctionNames,e.identChars),text:U},{type:L.RESERVED_DATA_TYPE,regex:H(e.reservedDataTypes,e.identChars),text:U},{type:L.RESERVED_KEYWORD,regex:H(e.reservedKeywords,e.identChars),text:U}])}buildRulesAfterParams(e){return this.validRules([{type:L.VARIABLE,regex:e.variableTypes?Ar(e.variableTypes):void 0},{type:L.STRING,regex:Mr(e.stringTypes)},{type:L.IDENTIFIER,regex:Nr(e.identChars)},{type:L.DELIMITER,regex:/[;]/uy},{type:L.COMMA,regex:/[,]/y},{type:L.OPEN_PAREN,regex:Cr(`open`,e.extraParens)},{type:L.CLOSE_PAREN,regex:Cr(`close`,e.extraParens)},{type:L.OPERATOR,regex:wr([`+`,`-`,`/`,`>`,`<`,`=`,`<>`,`<=`,`>=`,`!=`,...e.operators??[]])},{type:L.ASTERISK,regex:/[*]/uy},{type:L.PROPERTY_ACCESS_OPERATOR,regex:wr([`.`,...e.propertyAccessOperators??[]])}])}buildParamRules(e,t){let n={named:t?.named||e.paramTypes?.named||[],quoted:t?.quoted||e.paramTypes?.quoted||[],numbered:t?.numbered||e.paramTypes?.numbered||[],positional:typeof t?.positional==`boolean`?t.positional:e.paramTypes?.positional,custom:t?.custom||e.paramTypes?.custom||[]};return this.validRules([{type:L.NAMED_PARAMETER,regex:Er(n.named,Pr(e.paramChars||e.identChars)),key:e=>e.slice(1)},{type:L.QUOTED_PARAMETER,regex:Er(n.quoted,jr(e.identTypes)),key:e=>(({tokenKey:e,quoteChar:t})=>e.replace(new RegExp(B(`\\`+t),`gu`),t))({tokenKey:e.slice(2,-1),quoteChar:e.slice(-1)})},{type:L.NUMBERED_PARAMETER,regex:Er(n.numbered,`[0-9]+`),key:e=>e.slice(1)},{type:L.POSITIONAL_PARAMETER,regex:n.positional?/[?]/y:void 0},...n.custom.map(e=>({type:L.CUSTOM_PARAMETER,regex:V(e.regex),key:e.key??(e=>e)}))])}validRules(e){return e.filter(e=>!!e.regex)}},U=e=>gr(e.toUpperCase()),Hr=new Map,Ur=e=>{let t=Hr.get(e);return t||(t=Wr(e),Hr.set(e,t)),t},Wr=e=>({tokenizer:new Vr(e.tokenizerOptions,e.name),formatOptions:Gr(e)}),Gr=({tokenizerOptions:e,formatOptions:t})=>({alwaysDenseOperators:t.alwaysDenseOperators||[],onelineClauses:Object.fromEntries(t.onelineClauses.map(e=>[e,!0])),tabularOnelineClauses:Object.fromEntries((t.tabularOnelineClauses??t.onelineClauses).map(e=>[e,!0])),identifierDashes:!!e.identChars?.dashes});function Kr(e){return e.indentStyle===`tabularLeft`||e.indentStyle===`tabularRight`?` `.repeat(10):e.useTabs?` `:` `.repeat(e.tabWidth)}function W(e){return e.indentStyle===`tabularLeft`||e.indentStyle===`tabularRight`}var qr=class{constructor(e){this.params=e,this.index=0}get({key:e,text:t}){return this.params?e?this.params[e]:this.params[this.index++]:t}getPositionalParameterIndex(){return this.index}setPositionalParameterIndex(e){this.index=e}},Jr=t(((e,t)=>{(function(e,n){typeof t==`object`&&t.exports?t.exports=n():e.nearley=n()})(e,function(){function e(t,n,r){return this.id=++e.highestId,this.name=t,this.symbols=n,this.postprocess=r,this}e.highestId=0,e.prototype.toString=function(e){var t=e===void 0?this.symbols.map(s).join(` `):this.symbols.slice(0,e).map(s).join(` `)+` ● `+this.symbols.slice(e).map(s).join(` `);return this.name+` → `+t};function t(e,t,n,r){this.rule=e,this.dot=t,this.reference=n,this.data=[],this.wantedBy=r,this.isComplete=this.dot===e.symbols.length}t.prototype.toString=function(){return`{`+this.rule.toString(this.dot)+`}, from: `+(this.reference||0)},t.prototype.nextState=function(e){var n=new t(this.rule,this.dot+1,this.reference,this.wantedBy);return n.left=this,n.right=e,n.isComplete&&(n.data=n.build(),n.right=void 0),n},t.prototype.build=function(){var e=[],t=this;do e.push(t.right.data),t=t.left;while(t.left);return e.reverse(),e},t.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,a.fail))};function n(e,t){this.grammar=e,this.index=t,this.states=[],this.wants={},this.scannable=[],this.completed={}}n.prototype.process=function(e){for(var t=this.states,n=this.wants,r=this.completed,i=0;i<t.length;i++){var o=t[i];if(o.isComplete){if(o.finish(),o.data!==a.fail){for(var s=o.wantedBy,c=s.length;c--;){var l=s[c];this.complete(l,o)}if(o.reference===this.index){var u=o.rule.name;(this.completed[u]=this.completed[u]||[]).push(o)}}}else{var u=o.rule.symbols[o.dot];if(typeof u!=`string`){this.scannable.push(o);continue}if(n[u]){if(n[u].push(o),r.hasOwnProperty(u))for(var d=r[u],c=0;c<d.length;c++){var f=d[c];this.complete(o,f)}}else n[u]=[o],this.predict(u)}}},n.prototype.predict=function(e){for(var n=this.grammar.byName[e]||[],r=0;r<n.length;r++){var i=n[r],a=this.wants[e],o=new t(i,0,this.index,a);this.states.push(o)}},n.prototype.complete=function(e,t){var n=e.nextState(t);this.states.push(n)};function r(e,t){this.rules=e,this.start=t||this.rules[0].name;var n=this.byName={};this.rules.forEach(function(e){n.hasOwnProperty(e.name)||(n[e.name]=[]),n[e.name].push(e)})}r.fromCompiled=function(t,n){var i=t.Lexer;t.ParserStart&&(n=t.ParserStart,t=t.ParserRules);var t=t.map(function(t){return new e(t.name,t.symbols,t.postprocess)}),a=new r(t,n);return a.lexer=i,a};function i(){this.reset(``)}i.prototype.reset=function(e,t){this.buffer=e,this.index=0,this.line=t?t.line:1,this.lastLineBreak=t?-t.col:0},i.prototype.next=function(){if(this.index<this.buffer.length){var e=this.buffer[this.index++];return e===`
5
- `&&(this.line+=1,this.lastLineBreak=this.index),{value:e}}},i.prototype.save=function(){return{line:this.line,col:this.index-this.lastLineBreak}},i.prototype.formatError=function(e,t){var n=this.buffer;if(typeof n==`string`){var r=n.split(`
6
- `).slice(Math.max(0,this.line-5),this.line),i=n.indexOf(`
7
- `,this.index);i===-1&&(i=n.length);var a=this.index-this.lastLineBreak,o=String(this.line).length;return t+=` at line `+this.line+` col `+a+`:
8
-
9
- `,t+=r.map(function(e,t){return s(this.line-r.length+t+1,o)+` `+e},this).join(`
10
- `),t+=`
11
- `+s(``,o+a)+`^
12
- `,t}else return t+` at index `+(this.index-1);function s(e,t){var n=String(e);return Array(t-n.length+1).join(` `)+n}};function a(e,t,a){if(e instanceof r)var o=e,a=t;else var o=r.fromCompiled(e,t);for(var s in this.grammar=o,this.options={keepHistory:!1,lexer:o.lexer||new i},a||{})this.options[s]=a[s];this.lexer=this.options.lexer,this.lexerState=void 0;var c=new n(o,0);this.table=[c],c.wants[o.start]=[],c.predict(o.start),c.process(),this.current=0}a.fail={},a.prototype.feed=function(e){var t=this.lexer;t.reset(e,this.lexerState);for(var r;;){try{if(r=t.next(),!r)break}catch(e){var a=new n(this.grammar,this.current+1);this.table.push(a);var o=Error(this.reportLexerError(e));throw o.offset=this.current,o.token=e.token,o}var s=this.table[this.current];this.options.keepHistory||delete this.table[this.current-1];var c=this.current+1,a=new n(this.grammar,c);this.table.push(a);for(var l=r.text===void 0?r.value:r.text,u=t.constructor===i?r.value:r,d=s.scannable,f=d.length;f--;){var p=d[f],m=p.rule.symbols[p.dot];if(m.test?m.test(u):m.type?m.type===r.type:m.literal===l){var h=p.nextState({data:u,token:r,isToken:!0,reference:c-1});a.states.push(h)}}if(a.process(),a.states.length===0){var o=Error(this.reportError(r));throw o.offset=this.current,o.token=r,o}this.options.keepHistory&&(s.lexerState=t.save()),this.current++}return s&&(this.lexerState=t.save()),this.results=this.finish(),this},a.prototype.reportLexerError=function(e){var t,n,r=e.token;return r?(t=`input `+JSON.stringify(r.text[0])+` (lexer error)`,n=this.lexer.formatError(r,`Syntax error`)):(t=`input (lexer error)`,n=e.message),this.reportErrorCommon(n,t)},a.prototype.reportError=function(e){var t=(e.type?e.type+` token: `:``)+JSON.stringify(e.value===void 0?e:e.value),n=this.lexer.formatError(e,`Syntax error`);return this.reportErrorCommon(n,t)},a.prototype.reportErrorCommon=function(e,t){var n=[];n.push(e);var r=this.table.length-2,i=this.table[r],a=i.states.filter(function(e){var t=e.rule.symbols[e.dot];return t&&typeof t!=`string`});return a.length===0?(n.push(`Unexpected `+t+`. I did not expect any more input. Here is the state of my parse table:
13
- `),this.displayStateStack(i.states,n)):(n.push(`Unexpected `+t+`. Instead, I was expecting to see one of the following:
14
- `),a.map(function(e){return this.buildFirstStateStack(e,[])||[e]},this).forEach(function(e){var t=e[0],r=t.rule.symbols[t.dot],i=this.getSymbolDisplay(r);n.push(`A `+i+` based on:`),this.displayStateStack(e,n)},this)),n.push(``),n.join(`
15
- `)},a.prototype.displayStateStack=function(e,t){for(var n,r=0,i=0;i<e.length;i++){var a=e[i],o=a.rule.toString(a.dot);o===n?r++:(r>0&&t.push(` ^ `+r+` more lines identical to this`),r=0,t.push(` `+o)),n=o}},a.prototype.getSymbolDisplay=function(e){return o(e)},a.prototype.buildFirstStateStack=function(e,t){if(t.indexOf(e)!==-1)return null;if(e.wantedBy.length===0)return[e];var n=e.wantedBy[0],r=[e].concat(t),i=this.buildFirstStateStack(n,r);return i===null?null:[e].concat(i)},a.prototype.save=function(){var e=this.table[this.current];return e.lexerState=this.lexerState,e},a.prototype.restore=function(e){var t=e.index;this.current=t,this.table[t]=e,this.table.splice(t+1),this.lexerState=e.lexerState,this.results=this.finish()},a.prototype.rewind=function(e){if(!this.options.keepHistory)throw Error("set option `keepHistory` to enable rewinding");this.restore(this.table[e])},a.prototype.finish=function(){var e=[],t=this.grammar.start;return this.table[this.table.length-1].states.forEach(function(n){n.rule.name===t&&n.dot===n.rule.symbols.length&&n.reference===0&&n.data!==a.fail&&e.push(n)}),e.map(function(e){return e.data})};function o(e){var t=typeof e;if(t===`string`)return e;if(t===`object`){if(e.literal)return JSON.stringify(e.literal);if(e instanceof RegExp)return`character matching `+e;if(e.type)return e.type+` token`;if(e.test)return`token matching `+String(e.test);throw Error(`Unknown symbol type: `+e)}}function s(e){var t=typeof e;if(t===`string`)return e;if(t===`object`){if(e.literal)return JSON.stringify(e.literal);if(e instanceof RegExp)return e.toString();if(e.type)return`%`+e.type;if(e.test)return`<`+String(e.test)+`>`;throw Error(`Unknown symbol type: `+e)}}return{Parser:a,Grammar:r,Rule:e}})}));function Yr(e){return e.map(Xr).map(Zr).map(ei).map(ti).map(ni).map(ri)}var Xr=(e,t,n)=>{if(vn(e.type)){let r=ii(n,t);if(r&&r.type===L.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},e),{type:L.IDENTIFIER,text:e.raw});let i=G(n,t);if(i&&i.type===L.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},e),{type:L.IDENTIFIER,text:e.raw})}return e},Zr=(e,t,n)=>{if($r(e)){let r=ii(n,t);if(r&&Qr(r))return Object.assign(Object.assign({},e),{type:L.IDENTIFIER,text:e.raw})}return e},Qr=e=>e.type===L.RESERVED_KEYWORD&&e.text===`AS`,$r=e=>e.type===L.RESERVED_SET_OPERATION||e.type===L.RESERVED_JOIN||e.type===L.LIMIT||e.type===L.BETWEEN||e.type===L.CASE||e.type===L.END||e.type===L.WHEN||e.type===L.ELSE||e.type===L.THEN||e.type===L.AND||e.type===L.OR||e.type===L.XOR||e.type===L.RESERVED_CLAUSE&&e.text===`SET`,ei=(e,t,n)=>{if(e.type===L.RESERVED_FUNCTION_NAME){let r=G(n,t);if(!r||!ai(r))return Object.assign(Object.assign({},e),{type:L.IDENTIFIER,text:e.raw})}return e},ti=(e,t,n)=>{if(e.type===L.RESERVED_DATA_TYPE){let r=G(n,t);if(r&&ai(r))return Object.assign(Object.assign({},e),{type:L.RESERVED_PARAMETERIZED_DATA_TYPE})}return e},ni=(e,t,n)=>{if(e.type===L.IDENTIFIER){let r=G(n,t);if(r&&oi(r))return Object.assign(Object.assign({},e),{type:L.ARRAY_IDENTIFIER})}return e},ri=(e,t,n)=>{if(e.type===L.RESERVED_DATA_TYPE){let r=G(n,t);if(r&&oi(r))return Object.assign(Object.assign({},e),{type:L.ARRAY_KEYWORD})}return e},ii=(e,t)=>G(e,t,-1),G=(e,t,n=1)=>{let r=1;for(;e[t+r*n]&&si(e[t+r*n]);)r++;return e[t+r*n]},ai=e=>e.type===L.OPEN_PAREN&&e.text===`(`,oi=e=>e.type===L.OPEN_PAREN&&e.text===`[`,si=e=>e.type===L.BLOCK_COMMENT||e.type===L.LINE_COMMENT,ci=class{constructor(e){this.tokenize=e,this.index=0,this.tokens=[],this.input=``}reset(e,t){this.input=e,this.index=0,this.tokens=this.tokenize(e)}next(){return this.tokens[this.index++]}save(){}formatError(e){let{line:t,col:n}=Fr(this.input,e.start);return`Parse error at token: ${e.text} at line ${t} column ${n}`}has(e){return e in L}},K;(function(e){e.statement=`statement`,e.clause=`clause`,e.set_operation=`set_operation`,e.function_call=`function_call`,e.parameterized_data_type=`parameterized_data_type`,e.array_subscript=`array_subscript`,e.property_access=`property_access`,e.parenthesis=`parenthesis`,e.between_predicate=`between_predicate`,e.case_expression=`case_expression`,e.case_when=`case_when`,e.case_else=`case_else`,e.limit_clause=`limit_clause`,e.all_columns_asterisk=`all_columns_asterisk`,e.literal=`literal`,e.identifier=`identifier`,e.keyword=`keyword`,e.data_type=`data_type`,e.parameter=`parameter`,e.operator=`operator`,e.comma=`comma`,e.line_comment=`line_comment`,e.block_comment=`block_comment`,e.disable_comment=`disable_comment`})(K=K||={});function li(e){return e[0]}var q=new ci(e=>[]),J=([[e]])=>e,Y=e=>({type:K.keyword,tokenType:e.type,text:e.text,raw:e.raw}),ui=e=>({type:K.data_type,text:e.text,raw:e.raw}),X=e=>{let t=[];for(let n=e;n;n=n.previous)t.push(n.value);return t.reverse(),t},Z=(e,{leading:t,trailing:n})=>(t?.length&&(e=Object.assign(Object.assign({},e),{leadingComments:t})),n?.length&&(e=Object.assign(Object.assign({},e),{trailingComments:n})),e),di=(e,{leading:t,trailing:n})=>{if(t?.length){let[n,...r]=e;e=[Z(n,{leading:t}),...r]}if(n?.length){let t=e.slice(0,-1),r=e[e.length-1];e=[...t,Z(r,{trailing:n})]}return e},fi={Lexer:q,ParserRules:[{name:`main$ebnf$1`,symbols:[]},{name:`main$ebnf$1`,symbols:[`main$ebnf$1`,`statement`],postprocess:e=>e[0].concat([e[1]])},{name:`main`,symbols:[`main$ebnf$1`],postprocess:([e])=>{let t=e[e.length-1];return t&&!t.hasSemicolon?t.children.length>0?e:e.slice(0,-1):e}},{name:`statement$subexpression$1`,symbols:[q.has(`DELIMITER`)?{type:`DELIMITER`}:DELIMITER]},{name:`statement$subexpression$1`,symbols:[q.has(`EOF`)?{type:`EOF`}:EOF]},{name:`statement`,symbols:[`expressions_or_clauses`,`statement$subexpression$1`],postprocess:([e,[t]])=>({type:K.statement,children:X(e),hasSemicolon:t.type===L.DELIMITER})},{name:`expressions_or_clauses`,symbols:[`expression_list`],postprocess:li},{name:`expressions_or_clauses`,symbols:[`expressions_or_clauses`,`clause`],postprocess:([e,t])=>({previous:e,value:t})},{name:`expression_list`,symbols:[],postprocess:()=>void 0},{name:`expression_list`,symbols:[`expression_list`,`free_form_sql`],postprocess:([e,t])=>({previous:e,value:t})},{name:`clause$subexpression$1`,symbols:[`limit_clause`]},{name:`clause$subexpression$1`,symbols:[`select_clause`]},{name:`clause$subexpression$1`,symbols:[`other_clause`]},{name:`clause$subexpression$1`,symbols:[`set_operation`]},{name:`clause`,symbols:[`clause$subexpression$1`],postprocess:J},{name:`limit_clause$ebnf$1$subexpression$1$ebnf$1`,symbols:[`free_form_sql`]},{name:`limit_clause$ebnf$1$subexpression$1$ebnf$1`,symbols:[`limit_clause$ebnf$1$subexpression$1$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`limit_clause$ebnf$1$subexpression$1`,symbols:[q.has(`COMMA`)?{type:`COMMA`}:COMMA,`limit_clause$ebnf$1$subexpression$1$ebnf$1`]},{name:`limit_clause$ebnf$1`,symbols:[`limit_clause$ebnf$1$subexpression$1`],postprocess:li},{name:`limit_clause$ebnf$1`,symbols:[],postprocess:()=>null},{name:`limit_clause`,symbols:[q.has(`LIMIT`)?{type:`LIMIT`}:LIMIT,`_`,`expression_chain_`,`limit_clause$ebnf$1`],postprocess:([e,t,n,r])=>{if(r){let[i,a]=r;return{type:K.limit_clause,limitKw:Z(Y(e),{trailing:t}),offset:n,count:a}}else return{type:K.limit_clause,limitKw:Z(Y(e),{trailing:t}),count:n}}},{name:`select_clause$subexpression$1`,symbols:[`all_columns_asterisk`,`expression_list`]},{name:`select_clause$subexpression$1`,symbols:[`asteriskless_free_form_sql`,`expression_list`]},{name:`select_clause`,symbols:[q.has(`RESERVED_SELECT`)?{type:`RESERVED_SELECT`}:RESERVED_SELECT,`select_clause$subexpression$1`],postprocess:([e,[t,n]])=>({type:K.clause,nameKw:Y(e),get children(){return[t,...X(n)]}})},{name:`select_clause`,symbols:[q.has(`RESERVED_SELECT`)?{type:`RESERVED_SELECT`}:RESERVED_SELECT],postprocess:([e])=>({type:K.clause,nameKw:Y(e),children:[]})},{name:`all_columns_asterisk`,symbols:[q.has(`ASTERISK`)?{type:`ASTERISK`}:ASTERISK],postprocess:()=>({type:K.all_columns_asterisk})},{name:`other_clause`,symbols:[q.has(`RESERVED_CLAUSE`)?{type:`RESERVED_CLAUSE`}:RESERVED_CLAUSE,`expression_list`],postprocess:([e,t])=>({type:K.clause,nameKw:Y(e),get children(){return X(t)}})},{name:`set_operation`,symbols:[q.has(`RESERVED_SET_OPERATION`)?{type:`RESERVED_SET_OPERATION`}:RESERVED_SET_OPERATION,`expression_list`],postprocess:([e,t])=>({type:K.set_operation,nameKw:Y(e),get children(){return X(t)}})},{name:`expression_chain_$ebnf$1`,symbols:[`expression_with_comments_`]},{name:`expression_chain_$ebnf$1`,symbols:[`expression_chain_$ebnf$1`,`expression_with_comments_`],postprocess:e=>e[0].concat([e[1]])},{name:`expression_chain_`,symbols:[`expression_chain_$ebnf$1`],postprocess:li},{name:`expression_chain$ebnf$1`,symbols:[]},{name:`expression_chain$ebnf$1`,symbols:[`expression_chain$ebnf$1`,`_expression_with_comments`],postprocess:e=>e[0].concat([e[1]])},{name:`expression_chain`,symbols:[`expression`,`expression_chain$ebnf$1`],postprocess:([e,t])=>[e,...t]},{name:`andless_expression_chain$ebnf$1`,symbols:[]},{name:`andless_expression_chain$ebnf$1`,symbols:[`andless_expression_chain$ebnf$1`,`_andless_expression_with_comments`],postprocess:e=>e[0].concat([e[1]])},{name:`andless_expression_chain`,symbols:[`andless_expression`,`andless_expression_chain$ebnf$1`],postprocess:([e,t])=>[e,...t]},{name:`expression_with_comments_`,symbols:[`expression`,`_`],postprocess:([e,t])=>Z(e,{trailing:t})},{name:`_expression_with_comments`,symbols:[`_`,`expression`],postprocess:([e,t])=>Z(t,{leading:e})},{name:`_andless_expression_with_comments`,symbols:[`_`,`andless_expression`],postprocess:([e,t])=>Z(t,{leading:e})},{name:`free_form_sql$subexpression$1`,symbols:[`asteriskless_free_form_sql`]},{name:`free_form_sql$subexpression$1`,symbols:[`asterisk`]},{name:`free_form_sql`,symbols:[`free_form_sql$subexpression$1`],postprocess:J},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`asteriskless_andless_expression`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`logic_operator`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`comma`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`comment`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`other_keyword`]},{name:`asteriskless_free_form_sql`,symbols:[`asteriskless_free_form_sql$subexpression$1`],postprocess:J},{name:`expression$subexpression$1`,symbols:[`andless_expression`]},{name:`expression$subexpression$1`,symbols:[`logic_operator`]},{name:`expression`,symbols:[`expression$subexpression$1`],postprocess:J},{name:`andless_expression$subexpression$1`,symbols:[`asteriskless_andless_expression`]},{name:`andless_expression$subexpression$1`,symbols:[`asterisk`]},{name:`andless_expression`,symbols:[`andless_expression$subexpression$1`],postprocess:J},{name:`asteriskless_andless_expression$subexpression$1`,symbols:[`atomic_expression`]},{name:`asteriskless_andless_expression$subexpression$1`,symbols:[`between_predicate`]},{name:`asteriskless_andless_expression$subexpression$1`,symbols:[`case_expression`]},{name:`asteriskless_andless_expression`,symbols:[`asteriskless_andless_expression$subexpression$1`],postprocess:J},{name:`atomic_expression$subexpression$1`,symbols:[`array_subscript`]},{name:`atomic_expression$subexpression$1`,symbols:[`function_call`]},{name:`atomic_expression$subexpression$1`,symbols:[`property_access`]},{name:`atomic_expression$subexpression$1`,symbols:[`parenthesis`]},{name:`atomic_expression$subexpression$1`,symbols:[`curly_braces`]},{name:`atomic_expression$subexpression$1`,symbols:[`square_brackets`]},{name:`atomic_expression$subexpression$1`,symbols:[`operator`]},{name:`atomic_expression$subexpression$1`,symbols:[`identifier`]},{name:`atomic_expression$subexpression$1`,symbols:[`parameter`]},{name:`atomic_expression$subexpression$1`,symbols:[`literal`]},{name:`atomic_expression$subexpression$1`,symbols:[`data_type`]},{name:`atomic_expression$subexpression$1`,symbols:[`keyword`]},{name:`atomic_expression`,symbols:[`atomic_expression$subexpression$1`],postprocess:J},{name:`array_subscript`,symbols:[q.has(`ARRAY_IDENTIFIER`)?{type:`ARRAY_IDENTIFIER`}:ARRAY_IDENTIFIER,`_`,`square_brackets`],postprocess:([e,t,n])=>({type:K.array_subscript,array:Z({type:K.identifier,quoted:!1,text:e.text},{trailing:t}),parenthesis:n})},{name:`array_subscript`,symbols:[q.has(`ARRAY_KEYWORD`)?{type:`ARRAY_KEYWORD`}:ARRAY_KEYWORD,`_`,`square_brackets`],postprocess:([e,t,n])=>({type:K.array_subscript,array:Z(Y(e),{trailing:t}),parenthesis:n})},{name:`function_call`,symbols:[q.has(`RESERVED_FUNCTION_NAME`)?{type:`RESERVED_FUNCTION_NAME`}:RESERVED_FUNCTION_NAME,`_`,`parenthesis`],postprocess:([e,t,n])=>({type:K.function_call,nameKw:Z(Y(e),{trailing:t}),parenthesis:n})},{name:`parenthesis`,symbols:[{literal:`(`},`expressions_or_clauses`,{literal:`)`}],postprocess:([e,t,n])=>({type:K.parenthesis,children:X(t),openParen:`(`,closeParen:`)`})},{name:`curly_braces`,symbols:[{literal:`{`},`expression_list`,{literal:`}`}],postprocess:([e,t,n])=>({type:K.parenthesis,children:X(t),openParen:`{`,closeParen:`}`})},{name:`square_brackets`,symbols:[{literal:`[`},`expression_list`,{literal:`]`}],postprocess:([e,t,n])=>({type:K.parenthesis,children:X(t),openParen:`[`,closeParen:`]`})},{name:`property_access$subexpression$1`,symbols:[`identifier`]},{name:`property_access$subexpression$1`,symbols:[`array_subscript`]},{name:`property_access$subexpression$1`,symbols:[`all_columns_asterisk`]},{name:`property_access$subexpression$1`,symbols:[`parameter`]},{name:`property_access`,symbols:[`atomic_expression`,`_`,q.has(`PROPERTY_ACCESS_OPERATOR`)?{type:`PROPERTY_ACCESS_OPERATOR`}:PROPERTY_ACCESS_OPERATOR,`_`,`property_access$subexpression$1`],postprocess:([e,t,n,r,[i]])=>({type:K.property_access,object:Z(e,{trailing:t}),operator:n.text,property:Z(i,{leading:r})})},{name:`between_predicate`,symbols:[q.has(`BETWEEN`)?{type:`BETWEEN`}:BETWEEN,`_`,`andless_expression_chain`,`_`,q.has(`AND`)?{type:`AND`}:AND,`_`,`andless_expression`],postprocess:([e,t,n,r,i,a,o])=>({type:K.between_predicate,betweenKw:Y(e),expr1:di(n,{leading:t,trailing:r}),andKw:Y(i),expr2:[Z(o,{leading:a})]})},{name:`case_expression$ebnf$1`,symbols:[`expression_chain_`],postprocess:li},{name:`case_expression$ebnf$1`,symbols:[],postprocess:()=>null},{name:`case_expression$ebnf$2`,symbols:[]},{name:`case_expression$ebnf$2`,symbols:[`case_expression$ebnf$2`,`case_clause`],postprocess:e=>e[0].concat([e[1]])},{name:`case_expression`,symbols:[q.has(`CASE`)?{type:`CASE`}:CASE,`_`,`case_expression$ebnf$1`,`case_expression$ebnf$2`,q.has(`END`)?{type:`END`}:END],postprocess:([e,t,n,r,i])=>({type:K.case_expression,caseKw:Z(Y(e),{trailing:t}),endKw:Y(i),expr:n||[],clauses:r})},{name:`case_clause`,symbols:[q.has(`WHEN`)?{type:`WHEN`}:WHEN,`_`,`expression_chain_`,q.has(`THEN`)?{type:`THEN`}:THEN,`_`,`expression_chain_`],postprocess:([e,t,n,r,i,a])=>({type:K.case_when,whenKw:Z(Y(e),{trailing:t}),thenKw:Z(Y(r),{trailing:i}),condition:n,result:a})},{name:`case_clause`,symbols:[q.has(`ELSE`)?{type:`ELSE`}:ELSE,`_`,`expression_chain_`],postprocess:([e,t,n])=>({type:K.case_else,elseKw:Z(Y(e),{trailing:t}),result:n})},{name:`comma$subexpression$1`,symbols:[q.has(`COMMA`)?{type:`COMMA`}:COMMA]},{name:`comma`,symbols:[`comma$subexpression$1`],postprocess:([[e]])=>({type:K.comma})},{name:`asterisk$subexpression$1`,symbols:[q.has(`ASTERISK`)?{type:`ASTERISK`}:ASTERISK]},{name:`asterisk`,symbols:[`asterisk$subexpression$1`],postprocess:([[e]])=>({type:K.operator,text:e.text})},{name:`operator$subexpression$1`,symbols:[q.has(`OPERATOR`)?{type:`OPERATOR`}:OPERATOR]},{name:`operator`,symbols:[`operator$subexpression$1`],postprocess:([[e]])=>({type:K.operator,text:e.text})},{name:`identifier$subexpression$1`,symbols:[q.has(`IDENTIFIER`)?{type:`IDENTIFIER`}:IDENTIFIER]},{name:`identifier$subexpression$1`,symbols:[q.has(`QUOTED_IDENTIFIER`)?{type:`QUOTED_IDENTIFIER`}:QUOTED_IDENTIFIER]},{name:`identifier$subexpression$1`,symbols:[q.has(`VARIABLE`)?{type:`VARIABLE`}:VARIABLE]},{name:`identifier`,symbols:[`identifier$subexpression$1`],postprocess:([[e]])=>({type:K.identifier,quoted:e.type!==`IDENTIFIER`,text:e.text})},{name:`parameter$subexpression$1`,symbols:[q.has(`NAMED_PARAMETER`)?{type:`NAMED_PARAMETER`}:NAMED_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[q.has(`QUOTED_PARAMETER`)?{type:`QUOTED_PARAMETER`}:QUOTED_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[q.has(`NUMBERED_PARAMETER`)?{type:`NUMBERED_PARAMETER`}:NUMBERED_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[q.has(`POSITIONAL_PARAMETER`)?{type:`POSITIONAL_PARAMETER`}:POSITIONAL_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[q.has(`CUSTOM_PARAMETER`)?{type:`CUSTOM_PARAMETER`}:CUSTOM_PARAMETER]},{name:`parameter`,symbols:[`parameter$subexpression$1`],postprocess:([[e]])=>({type:K.parameter,key:e.key,text:e.text})},{name:`literal$subexpression$1`,symbols:[q.has(`NUMBER`)?{type:`NUMBER`}:NUMBER]},{name:`literal$subexpression$1`,symbols:[q.has(`STRING`)?{type:`STRING`}:STRING]},{name:`literal`,symbols:[`literal$subexpression$1`],postprocess:([[e]])=>({type:K.literal,text:e.text})},{name:`keyword$subexpression$1`,symbols:[q.has(`RESERVED_KEYWORD`)?{type:`RESERVED_KEYWORD`}:RESERVED_KEYWORD]},{name:`keyword$subexpression$1`,symbols:[q.has(`RESERVED_KEYWORD_PHRASE`)?{type:`RESERVED_KEYWORD_PHRASE`}:RESERVED_KEYWORD_PHRASE]},{name:`keyword$subexpression$1`,symbols:[q.has(`RESERVED_JOIN`)?{type:`RESERVED_JOIN`}:RESERVED_JOIN]},{name:`keyword`,symbols:[`keyword$subexpression$1`],postprocess:([[e]])=>Y(e)},{name:`data_type$subexpression$1`,symbols:[q.has(`RESERVED_DATA_TYPE`)?{type:`RESERVED_DATA_TYPE`}:RESERVED_DATA_TYPE]},{name:`data_type$subexpression$1`,symbols:[q.has(`RESERVED_DATA_TYPE_PHRASE`)?{type:`RESERVED_DATA_TYPE_PHRASE`}:RESERVED_DATA_TYPE_PHRASE]},{name:`data_type`,symbols:[`data_type$subexpression$1`],postprocess:([[e]])=>ui(e)},{name:`data_type`,symbols:[q.has(`RESERVED_PARAMETERIZED_DATA_TYPE`)?{type:`RESERVED_PARAMETERIZED_DATA_TYPE`}:RESERVED_PARAMETERIZED_DATA_TYPE,`_`,`parenthesis`],postprocess:([e,t,n])=>({type:K.parameterized_data_type,dataType:Z(ui(e),{trailing:t}),parenthesis:n})},{name:`logic_operator$subexpression$1`,symbols:[q.has(`AND`)?{type:`AND`}:AND]},{name:`logic_operator$subexpression$1`,symbols:[q.has(`OR`)?{type:`OR`}:OR]},{name:`logic_operator$subexpression$1`,symbols:[q.has(`XOR`)?{type:`XOR`}:XOR]},{name:`logic_operator`,symbols:[`logic_operator$subexpression$1`],postprocess:([[e]])=>Y(e)},{name:`other_keyword$subexpression$1`,symbols:[q.has(`WHEN`)?{type:`WHEN`}:WHEN]},{name:`other_keyword$subexpression$1`,symbols:[q.has(`THEN`)?{type:`THEN`}:THEN]},{name:`other_keyword$subexpression$1`,symbols:[q.has(`ELSE`)?{type:`ELSE`}:ELSE]},{name:`other_keyword$subexpression$1`,symbols:[q.has(`END`)?{type:`END`}:END]},{name:`other_keyword`,symbols:[`other_keyword$subexpression$1`],postprocess:([[e]])=>Y(e)},{name:`_$ebnf$1`,symbols:[]},{name:`_$ebnf$1`,symbols:[`_$ebnf$1`,`comment`],postprocess:e=>e[0].concat([e[1]])},{name:`_`,symbols:[`_$ebnf$1`],postprocess:([e])=>e},{name:`comment`,symbols:[q.has(`LINE_COMMENT`)?{type:`LINE_COMMENT`}:LINE_COMMENT],postprocess:([e])=>({type:K.line_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})},{name:`comment`,symbols:[q.has(`BLOCK_COMMENT`)?{type:`BLOCK_COMMENT`}:BLOCK_COMMENT],postprocess:([e])=>({type:K.block_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})},{name:`comment`,symbols:[q.has(`DISABLE_COMMENT`)?{type:`DISABLE_COMMENT`}:DISABLE_COMMENT],postprocess:([e])=>({type:K.disable_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})}],ParserStart:`main`},{Parser:pi,Grammar:mi}=e(Jr(),1).default;function hi(e){let t={},n=new ci(n=>[...Yr(e.tokenize(n,t)),hn(n.length)]),r=new pi(mi.fromCompiled(fi),{lexer:n});return{parse:(e,n)=>{t=n;let{results:i}=r.feed(e);if(i.length===1)return i[0];throw i.length===0?Error(`Parse error: Invalid SQL`):Error(`Parse error: Ambiguous grammar\n${JSON.stringify(i,void 0,2)}`)}}}var Q;(function(e){e[e.SPACE=0]=`SPACE`,e[e.NO_SPACE=1]=`NO_SPACE`,e[e.NO_NEWLINE=2]=`NO_NEWLINE`,e[e.NEWLINE=3]=`NEWLINE`,e[e.MANDATORY_NEWLINE=4]=`MANDATORY_NEWLINE`,e[e.INDENT=5]=`INDENT`,e[e.SINGLE_INDENT=6]=`SINGLE_INDENT`})(Q=Q||={});var gi=class{constructor(e){this.indentation=e,this.items=[]}add(...e){for(let t of e)switch(t){case Q.SPACE:this.items.push(Q.SPACE);break;case Q.NO_SPACE:this.trimHorizontalWhitespace();break;case Q.NO_NEWLINE:this.trimWhitespace();break;case Q.NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(Q.NEWLINE);break;case Q.MANDATORY_NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(Q.MANDATORY_NEWLINE);break;case Q.INDENT:this.addIndentation();break;case Q.SINGLE_INDENT:this.items.push(Q.SINGLE_INDENT);break;default:t.startsWith(`-`)&&this.lastItemEndsWith(`-`)&&this.items.push(Q.SPACE),this.items.push(t)}}lastItemEndsWith(e){let t=z(this.items);return typeof t==`string`&&t.endsWith(e)}trimHorizontalWhitespace(){for(;_i(z(this.items));)this.items.pop()}trimWhitespace(){for(;vi(z(this.items));)this.items.pop()}addNewline(e){if(this.items.length>0)switch(z(this.items)){case Q.NEWLINE:this.items.pop(),this.items.push(e);break;case Q.MANDATORY_NEWLINE:break;default:this.items.push(e);break}}addIndentation(){for(let e=0;e<this.indentation.getLevel();e++)this.items.push(Q.SINGLE_INDENT)}toString(){return this.items.map(e=>this.itemToString(e)).join(``)}getLayoutItems(){return this.items}isAtStartOfLine(){for(let e=this.items.length-1;e>=0;e--){let t=this.items[e];if(t!==Q.SINGLE_INDENT)return t===Q.NEWLINE||t===Q.MANDATORY_NEWLINE}return!1}itemToString(e){switch(e){case Q.SPACE:return` `;case Q.NEWLINE:case Q.MANDATORY_NEWLINE:return`
16
- `;case Q.SINGLE_INDENT:return this.indentation.getSingleIndent();default:return e}}},_i=e=>e===Q.SPACE||e===Q.SINGLE_INDENT,vi=e=>e===Q.SPACE||e===Q.SINGLE_INDENT||e===Q.NEWLINE;function yi(e,t){if(t===`standard`)return e;let n=[];return e.length>=10&&e.includes(` `)&&([e,...n]=e.split(` `)),e=t===`tabularLeft`?e.padEnd(9,` `):e.padStart(9,` `),e+[``,...n].join(` `)}function bi(e){return yn(e)||e===L.RESERVED_CLAUSE||e===L.RESERVED_SELECT||e===L.RESERVED_SET_OPERATION||e===L.RESERVED_JOIN||e===L.LIMIT}var xi=`top-level`,Si=`block-level`,Ci=class{constructor(e){this.indent=e,this.indentTypes=[]}getSingleIndent(){return this.indent}getLevel(){return this.indentTypes.length}increaseTopLevel(){this.indentTypes.push(xi)}increaseBlockLevel(){this.indentTypes.push(Si)}decreaseTopLevel(){this.indentTypes.length>0&&z(this.indentTypes)===xi&&this.indentTypes.pop()}decreaseBlockLevel(){for(;this.indentTypes.length>0&&this.indentTypes.pop()===xi;);}},wi=class extends gi{constructor(e){super(new Ci(``)),this.expressionWidth=e,this.length=0,this.trailingSpace=!1}add(...e){if(e.forEach(e=>this.addToLength(e)),this.length>this.expressionWidth)throw new Ti;super.add(...e)}addToLength(e){if(typeof e==`string`)this.length+=e.length,this.trailingSpace=!1;else if(e===Q.MANDATORY_NEWLINE||e===Q.NEWLINE)throw new Ti;else e===Q.INDENT||e===Q.SINGLE_INDENT||e===Q.SPACE?this.trailingSpace||=(this.length++,!0):(e===Q.NO_NEWLINE||e===Q.NO_SPACE)&&this.trailingSpace&&(this.trailingSpace=!1,this.length--)}},Ti=class extends Error{},Ei=class e{constructor({cfg:e,dialectCfg:t,params:n,layout:r,inline:i=!1,enclosingParenthesis:a}){this.inline=!1,this.nodes=[],this.index=-1,this.cfg=e,this.dialectCfg=t,this.inline=i,this.params=n,this.layout=r,this.enclosingParenthesis=a}format(e){for(this.nodes=e,this.index=0;this.index<this.nodes.length;this.index++)this.formatNode(this.nodes[this.index]);return this.layout}formatNode(e){this.formatComments(e.leadingComments),this.formatNodeWithoutComments(e),this.formatComments(e.trailingComments)}formatNodeWithoutComments(e){switch(e.type){case K.function_call:return this.formatFunctionCall(e);case K.parameterized_data_type:return this.formatParameterizedDataType(e);case K.array_subscript:return this.formatArraySubscript(e);case K.property_access:return this.formatPropertyAccess(e);case K.parenthesis:return this.formatParenthesis(e);case K.between_predicate:return this.formatBetweenPredicate(e);case K.case_expression:return this.formatCaseExpression(e);case K.case_when:return this.formatCaseWhen(e);case K.case_else:return this.formatCaseElse(e);case K.clause:return this.formatClause(e);case K.set_operation:return this.formatSetOperation(e);case K.limit_clause:return this.formatLimitClause(e);case K.all_columns_asterisk:return this.formatAllColumnsAsterisk(e);case K.literal:return this.formatLiteral(e);case K.identifier:return this.formatIdentifier(e);case K.parameter:return this.formatParameter(e);case K.operator:return this.formatOperator(e);case K.comma:return this.formatComma(e);case K.line_comment:return this.formatLineComment(e);case K.block_comment:return this.formatBlockComment(e);case K.disable_comment:return this.formatBlockComment(e);case K.data_type:return this.formatDataType(e);case K.keyword:return this.formatKeywordNode(e)}}formatFunctionCall(e){this.withComments(e.nameKw,()=>{this.layout.add(this.showFunctionKw(e.nameKw))}),this.formatNode(e.parenthesis)}formatParameterizedDataType(e){this.withComments(e.dataType,()=>{this.layout.add(this.showDataType(e.dataType))}),this.formatNode(e.parenthesis)}formatArraySubscript(e){let t;switch(e.array.type){case K.data_type:t=this.showDataType(e.array);break;case K.keyword:t=this.showKw(e.array);break;default:t=this.showIdentifier(e.array);break}this.withComments(e.array,()=>{this.layout.add(t)}),this.formatNode(e.parenthesis)}formatPropertyAccess(e){this.formatNode(e.object),this.layout.add(Q.NO_SPACE,e.operator),this.formatNode(e.property)}formatParenthesis(e){let t=this.formatInlineExpression(e.children,e.openParen);t?(this.layout.add(e.openParen),this.layout.add(...t.getLayoutItems()),this.layout.add(Q.NO_SPACE,e.closeParen,Q.SPACE)):(this.layout.add(e.openParen,Q.NEWLINE),W(this.cfg)?(this.layout.add(Q.INDENT),this.layout=this.formatSubExpression(e.children,e.openParen)):(this.layout.indentation.increaseBlockLevel(),this.layout.add(Q.INDENT),this.layout=this.formatSubExpression(e.children,e.openParen),this.layout.indentation.decreaseBlockLevel()),this.layout.add(Q.NEWLINE,Q.INDENT,e.closeParen,Q.SPACE))}formatBetweenPredicate(e){this.layout.add(this.showKw(e.betweenKw),Q.SPACE),this.layout=this.formatSubExpression(e.expr1),this.layout.add(Q.NO_SPACE,Q.SPACE,this.showNonTabularKw(e.andKw),Q.SPACE),this.layout=this.formatSubExpression(e.expr2),this.layout.add(Q.NO_SPACE,Q.SPACE)}formatCaseExpression(e){this.formatNode(e.caseKw),this.layout.indentation.increaseBlockLevel(),this.layout=this.formatSubExpression(e.expr),this.layout=this.formatSubExpression(e.clauses),this.layout.indentation.decreaseBlockLevel(),this.layout.add(Q.NEWLINE,Q.INDENT),this.formatNode(e.endKw)}formatCaseWhen(e){this.layout.add(Q.NEWLINE,Q.INDENT),this.formatNode(e.whenKw),this.layout=this.formatSubExpression(e.condition),this.formatNode(e.thenKw),this.layout=this.formatSubExpression(e.result)}formatCaseElse(e){this.layout.add(Q.NEWLINE,Q.INDENT),this.formatNode(e.elseKw),this.layout=this.formatSubExpression(e.result)}formatClause(e){this.isOnelineClause(e)?this.formatClauseInOnelineStyle(e):W(this.cfg)?this.formatClauseInTabularStyle(e):this.formatClauseInIndentedStyle(e)}isOnelineClause(e){return W(this.cfg)?this.dialectCfg.tabularOnelineClauses[e.nameKw.text]:this.dialectCfg.onelineClauses[e.nameKw.text]}formatClauseInIndentedStyle(e){this.layout.add(Q.NEWLINE,Q.INDENT,this.showKw(e.nameKw),Q.NEWLINE),this.layout.indentation.increaseTopLevel(),this.layout.add(Q.INDENT),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseTopLevel()}formatClauseInOnelineStyle(e){this.layout.add(Q.NEWLINE,Q.INDENT,this.showKw(e.nameKw),Q.SPACE),this.layout=this.formatSubExpression(e.children)}formatClauseInTabularStyle(e){this.layout.add(Q.NEWLINE,Q.INDENT,this.showKw(e.nameKw),Q.SPACE),this.layout.indentation.increaseTopLevel(),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseTopLevel()}formatSetOperation(e){this.layout.add(Q.NEWLINE,Q.INDENT,this.showKw(e.nameKw),Q.NEWLINE),this.layout.add(Q.INDENT),this.layout=this.formatSubExpression(e.children)}formatLimitClause(e){this.withComments(e.limitKw,()=>{this.layout.add(Q.NEWLINE,Q.INDENT,this.showKw(e.limitKw))}),this.layout.indentation.increaseTopLevel(),W(this.cfg)?this.layout.add(Q.SPACE):this.layout.add(Q.NEWLINE,Q.INDENT),e.offset?(this.layout=this.formatSubExpression(e.offset),this.layout.add(Q.NO_SPACE,`,`,Q.SPACE),this.layout=this.formatSubExpression(e.count)):this.layout=this.formatSubExpression(e.count),this.layout.indentation.decreaseTopLevel()}formatAllColumnsAsterisk(e){this.layout.add(`*`,Q.SPACE)}formatLiteral(e){this.layout.add(e.text,Q.SPACE)}formatIdentifier(e){this.layout.add(this.showIdentifier(e),Q.SPACE)}formatParameter(e){this.layout.add(this.params.get(e),Q.SPACE)}formatOperator({text:e}){e===`-`&&this.dialectCfg.identifierDashes||/^OPERATOR\s*\(/iu.test(e)?this.layout.add(e,Q.SPACE):this.cfg.denseOperators||this.dialectCfg.alwaysDenseOperators.includes(e)||e===`:`&&this.enclosingParenthesis===`[`?this.layout.add(Q.NO_SPACE,e):e===`:`?this.layout.add(Q.NO_SPACE,e,Q.SPACE):this.layout.add(e,Q.SPACE)}formatComma(e){this.inline?this.layout.add(Q.NO_SPACE,`,`,Q.SPACE):this.layout.add(Q.NO_SPACE,`,`,Q.NEWLINE,Q.INDENT)}withComments(e,t){this.formatComments(e.leadingComments),t(),this.formatComments(e.trailingComments)}formatComments(e){e&&e.forEach(e=>{e.type===K.line_comment?this.formatLineComment(e):this.formatBlockComment(e)})}formatLineComment(e){_r(e.precedingWhitespace||``)?this.layout.add(Q.NEWLINE,Q.INDENT,e.text,Q.MANDATORY_NEWLINE,Q.INDENT):this.layout.getLayoutItems().length>0?this.layout.add(Q.NO_NEWLINE,Q.SPACE,e.text,Q.MANDATORY_NEWLINE,Q.INDENT):this.layout.add(e.text,Q.MANDATORY_NEWLINE,Q.INDENT)}formatBlockComment(e){e.type===K.block_comment&&this.isStandaloneBlockComment(e)?(this.splitBlockComment(e.text).forEach(e=>{this.layout.add(Q.NEWLINE,Q.INDENT,e)}),this.layout.add(Q.NEWLINE,Q.INDENT)):this.layout.add(e.text,Q.SPACE)}isStandaloneBlockComment(e){return _r(e.text)||_r(e.precedingWhitespace||``)||this.layout.isAtStartOfLine()}isDocComment(e){let t=e.split(/\n/);return/^\/\*\*?$/.test(t[0])&&t.slice(1,t.length-1).every(e=>/^\s*\*/.test(e))&&/^\s*\*\/$/.test(z(t))}splitBlockComment(e){return this.isDocComment(e)?e.split(/\n/).map(e=>/^\s*\*/.test(e)?` `+e.replace(/^\s*/,``):e):e.split(/\n/).map(e=>e.replace(/^\s*/,``))}formatSubExpression(t,n=this.enclosingParenthesis){return new e({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:this.layout,inline:this.inline,enclosingParenthesis:n}).format(t)}formatInlineExpression(t,n=this.enclosingParenthesis){let r=this.params.getPositionalParameterIndex();try{return new e({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:new wi(this.cfg.expressionWidth),inline:!0,enclosingParenthesis:n}).format(t)}catch(e){if(e instanceof Ti){this.params.setPositionalParameterIndex(r);return}else throw e}}formatKeywordNode(e){switch(e.tokenType){case L.RESERVED_JOIN:return this.formatJoin(e);case L.AND:case L.OR:case L.XOR:return this.formatLogicalOperator(e);default:return this.formatKeyword(e)}}formatJoin(e){W(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(Q.NEWLINE,Q.INDENT,this.showKw(e),Q.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(Q.NEWLINE,Q.INDENT,this.showKw(e),Q.SPACE)}formatKeyword(e){this.layout.add(this.showKw(e),Q.SPACE)}formatLogicalOperator(e){this.cfg.logicalOperatorNewline===`before`?W(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(Q.NEWLINE,Q.INDENT,this.showKw(e),Q.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(Q.NEWLINE,Q.INDENT,this.showKw(e),Q.SPACE):this.layout.add(this.showKw(e),Q.NEWLINE,Q.INDENT)}formatDataType(e){this.layout.add(this.showDataType(e),Q.SPACE)}showKw(e){return bi(e.tokenType)?yi(this.showNonTabularKw(e),this.cfg.indentStyle):this.showNonTabularKw(e)}showNonTabularKw(e){switch(this.cfg.keywordCase){case`preserve`:return gr(e.raw);case`upper`:return e.text;case`lower`:return e.text.toLowerCase()}}showFunctionKw(e){return bi(e.tokenType)?yi(this.showNonTabularFunctionKw(e),this.cfg.indentStyle):this.showNonTabularFunctionKw(e)}showNonTabularFunctionKw(e){switch(this.cfg.functionCase){case`preserve`:return gr(e.raw);case`upper`:return e.text;case`lower`:return e.text.toLowerCase()}}showIdentifier(e){if(e.quoted)return e.text;switch(this.cfg.identifierCase){case`preserve`:return e.text;case`upper`:return e.text.toUpperCase();case`lower`:return e.text.toLowerCase()}}showDataType(e){switch(this.cfg.dataTypeCase){case`preserve`:return gr(e.raw);case`upper`:return e.text;case`lower`:return e.text.toLowerCase()}}},Di=class{constructor(e,t){this.dialect=e,this.cfg=t,this.params=new qr(this.cfg.params)}format(e){let t=this.parse(e);return this.formatAst(t).trimEnd()}parse(e){return hi(this.dialect.tokenizer).parse(e,this.cfg.paramTypes||{})}formatAst(e){return e.map(e=>this.formatStatement(e)).join(`
17
- `.repeat(this.cfg.linesBetweenQueries+1))}formatStatement(e){let t=new Ei({cfg:this.cfg,dialectCfg:this.dialect.formatOptions,params:this.params,layout:new gi(new Ci(Kr(this.cfg)))}).format(e.children);return e.hasSemicolon&&(this.cfg.newlineBeforeSemicolon?t.add(Q.NEWLINE,`;`):t.add(Q.NO_NEWLINE,`;`)),t.toString()}},Oi=class extends Error{};function ki(e){for(let t of[`multilineLists`,`newlineBeforeOpenParen`,`newlineBeforeCloseParen`,`aliasAs`,`commaPosition`,`tabulateAlias`])if(t in e)throw new Oi(`${t} config is no more supported.`);if(e.expressionWidth<=0)throw new Oi(`expressionWidth config must be positive number. Received ${e.expressionWidth} instead.`);if(e.params&&!Ai(e.params)&&console.warn(`WARNING: All "params" option values should be strings.`),e.paramTypes&&!ji(e.paramTypes))throw new Oi(`Empty regex given in custom paramTypes. That would result in matching infinite amount of parameters.`);return e}function Ai(e){return(e instanceof Array?e:Object.values(e)).every(e=>typeof e==`string`)}function ji(e){return e.custom&&Array.isArray(e.custom)?e.custom.every(e=>e.regex!==``):!0}var Mi=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},Ni={tabWidth:2,useTabs:!1,keywordCase:`preserve`,identifierCase:`preserve`,dataTypeCase:`preserve`,functionCase:`preserve`,indentStyle:`standard`,logicalOperatorNewline:`before`,expressionWidth:50,linesBetweenQueries:1,denseOperators:!1,newlineBeforeSemicolon:!1},Pi=(e,t)=>{var{dialect:n}=t,r=Mi(t,[`dialect`]);if(typeof e!=`string`)throw Error(`Invalid query argument. Expected string, instead got `+typeof e);let i=ki(Object.assign(Object.assign({},Ni),r));return new Di(Ur(n),i).format(e)},Fi={postgres:nr,mysql:Wn,mariadb:Mn,sqlite:mr},Ii=5e5;function Li(e){let t=0;for(let n=e.indexOf(`
18
- `);n!==-1;n=e.indexOf(`
19
- `,n+1))t++;return t}function Ri(e,t,n){if(!e.trim())return e;let r;try{r=Pi(e,{dialect:t,tabWidth:2})}catch(e){let t=(e instanceof Error?e.message:String(e)).split(`
20
- `)[0];throw Error(t.replace(/at line (\d+)/,(e,t)=>`at line ${Number(t)+n}`))}let i=e.slice(0,e.length-e.trimStart().length),a=e.slice(e.trimEnd().length);return`
21
- `.repeat(Li(i))+r+`
22
- `.repeat(Li(a))}function zi(e,t){if(e.length>5e5)throw Error(`The script is longer than ${Ii.toLocaleString(`en-US`)} characters.`);let n=Fi[t],r=``,i=0,a=`;`,o=t=>{let o=e.slice(i,t);r+=a===`;`?Ri(o,n,Li(e.slice(0,i))):o};for(let n of He(e,ve(t)))o(n.start),r+=e.slice(n.start,n.end),i=n.end,a=n.delimiter;return o(e.length),r}var Bi=80,Vi=`@max-[1120px]:hidden`,$=`@max-[1020px]:hidden`,Hi=`@max-[720px]:hidden`;function Ui(e){let t=e?.rowLimit;return typeof t==`number`&&Je.includes(t)?t:Ye}var Wi={script:`script`,selection:`selection`,statement:`statement`};function Gi({metadata:e,tabId:t}){let n=Fe(e,t),r=ae(),i=Jt(e),o=i?Zt(i):typeof e?.queryNumber==`number`?`Query ${e.queryNumber}`:`Query`,c=Ui(e),l=e?.continueOnError===!0,p=yt(n.target,{maxRows:c,continueOnError:l}),{run:m}=p,_=ie(e=>e.updateTab),v=(0,M.useRef)(e);v.current=e;let b=(0,M.useCallback)(e=>{t&&pe(t,e)},[t]),x=(0,M.useRef)(typeof e?.currentSql==`string`?e.currentSql:``),[te]=(0,M.useState)(x.current),w=(0,M.useCallback)(e=>{x.current=e,b({currentSql:e})},[b]),[E,D]=(0,M.useState)(null),O=(0,M.useCallback)(e=>{p.running||(t&&Ne(t)>0?D(e):p.start(e))},[p.running,p.start,t]),ne=(0,M.useCallback)((e,t)=>{e&&O({sql:e.sql,lineOffset:e.lineOffset,kind:t??Wi[e.from]})},[O]);(0,M.useEffect)(()=>{if(v.current?.runOnOpen!==!0||!n.target)return;let{runOnOpen:e,...r}=v.current;t&&_(t,{metadata:r}),p.start({sql:x.current,lineOffset:0,kind:`script`})},[n.target]);let k=(0,M.useRef)(null),oe=We(n.target),se=(0,M.useCallback)(e=>k.current?.revealLine(e),[]),[ce,le]=(0,M.useState)(null),ue=mt(m,ce&&m&&ce.runId===m.runId?ce.key:null),de=(0,M.useCallback)(e=>{m&&le({runId:m.runId,key:e})},[m]),fe=(0,M.useCallback)(e=>{if(r||!n.target||!et(e,n.dialect))return;let t=n.target;return()=>{Oe(Te({target:t,schema:null},``,e))}},[r,n.target,n.dialect]),ge=m?.done&&m.kind!==`explain`&&m.tabs.length===1?ft(m,m.tabs[0]):null,_e=ge?fe(ge.result.sql):void 0,ve=(0,M.useCallback)(e=>{let r=m?ft(m,e):null;if(!m||!r)return null;let i=m.kind===`explain`?void 0:fe(r.result.sql),a=i?{busy:!1,advanced:i}:void 0;return(0,P.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,onKeyDown:e=>{!i||e.altKey||e.shiftKey||!(e.ctrlKey||e.metaKey)||e.key.toLowerCase()!==`e`||(e.preventDefault(),e.stopPropagation(),i())},children:(0,P.jsx)(Mt,{tab:e,result:r.result,set:r.set,target:n.target,readonly:n.readonly,explain:m.kind===`explain`,connectionName:n.name,dialect:n.dialect,tabId:t,rereading:p.rereading===e.key,exporter:a,onSave:(t,r)=>p.saveChangesIn(e.key,t.table,t.schema,r,n.place)})})},[m,fe,n.target,n.readonly,n.name,n.dialect,n.place,t,p.rereading,p.saveChangesIn]),[ye,be]=(0,M.useState)(220),xe=(0,M.useRef)(null),Se=e=>{e.preventDefault();let t=e.clientY,n=ye,r=(xe.current?.clientHeight??600)-100,i=e=>be(Math.max(Bi,Math.min(n+e.clientY-t,r))),a=()=>{window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,a)};window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,a)},[Ce,we]=(0,M.useState)(!1),Ee=(0,M.useCallback)((e,n)=>{t&&_(t,Qt(me(t),e,n))},[t,_]),De=rn({tabId:t,keys:!r,title:o,savedPath:i,sql:()=>x.current,onSaved:Ee}),ke=(0,M.useRef)(null),Ae=Ge(ke,860),[je,Me]=(0,M.useState)(null),Pe=!r&&!!n.target&&(je??!Ae),Ve=(0,M.useCallback)(e=>{k.current?.insertText(e),Ae&&Me(!1)},[Ae]);if(n.missing)return(0,P.jsx)(Re,{empty:`This connection no longer exists.`});let He=re(n.target,n.name),j=!!n.target&&!p.running,Ke=()=>k.current?.runScript(),qe=()=>k.current?.runAtCursor(),Je=()=>ne(k.current?.selectionOrStatement()??null,`explain`),Ye=n.dbType,Xe=()=>{if(Ye)try{k.current?.reformat(e=>zi(e,Ye))}catch(e){C.error(`Could not format the SQL`,{description:e instanceof Error?e.message:String(e)})}};return(0,P.jsxs)(`div`,{ref:ke,className:`flex h-full w-full flex-col overflow-hidden`,children:[(0,P.jsx)(Be,{title:o,subtitle:He,color:n.conn?.color??e?.connectionColor,children:(0,P.jsx)(`button`,{type:`button`,onClick:()=>we(!0),"aria-label":`Run options`,className:`grid size-11 shrink-0 place-items-center rounded-md text-text-2`,children:(0,P.jsx)(u,{className:`size-5`})})}),(0,P.jsxs)(Le,{label:o,children:[(0,P.jsx)(St,{target:n.target,conn:n.conn,fileName:n.name,metadata:e,tabId:t}),(0,P.jsxs)(`div`,{className:`@container flex min-w-0 flex-1 items-center gap-0.5 max-md:gap-1`,children:[(0,P.jsx)(`span`,{"aria-hidden":!0,className:`mx-1 h-4 w-px shrink-0 bg-border max-md:hidden`}),(0,P.jsxs)(`button`,{type:`button`,onClick:Ke,disabled:!j,title:`Run the whole script, or the selection (${A(`F5`)})`,className:`flex h-7 shrink-0 items-center gap-1.5 rounded bg-primary px-2.5 text-xs font-medium text-primary-foreground can-hover:hover:opacity-90 disabled:opacity-50 max-md:hidden`,children:[(0,P.jsx)(y,{className:`size-4`}),`Run`,(0,P.jsx)(`kbd`,{className:T(`rounded bg-black/15 px-1 font-mono text-[10px]`,Vi),children:`F5`})]}),(0,P.jsxs)(`button`,{type:`button`,onClick:qe,disabled:!j,title:`Run the statement at the cursor (${A(`Mod+Enter`)}, also ${A(`Mod+Shift+Enter`)})`,className:T(Ie,`max-md:hidden`),children:[(0,P.jsx)(d,{className:`size-4 shrink-0`}),(0,P.jsx)(`span`,{className:Hi,children:`Current statement`}),(0,P.jsx)(`kbd`,{className:T(`rounded border border-border px-1 font-mono text-[10px] text-text-subtle`,Vi),children:A(`Mod+Enter`)})]}),(0,P.jsx)(ze,{icon:s,label:`Stop`,title:it(n.dialect),onClick:()=>void p.stop(),disabled:!p.running||p.stopping,className:`max-md:hidden`,labelClassName:$}),(0,P.jsx)(ze,{icon:S,label:`Save`,onClick:De.save,className:`max-md:hidden`,labelClassName:$,title:`${i?`Save the SQL to ${i}`:`Save the SQL to a .sql file`} (${A(`Mod+S`)})`}),(0,P.jsx)(ze,{icon:f,label:`Format`,title:`Format the SQL (${A(`Shift+Alt+F`)})`,onClick:Xe,disabled:!Ye,className:`max-md:hidden`,labelClassName:$}),(0,P.jsx)(`span`,{"aria-hidden":!0,className:`mx-1 h-4 w-px shrink-0 bg-border max-md:hidden`}),(0,P.jsx)(ze,{icon:a,label:`Explain`,title:`EXPLAIN the selection, or the statement at the cursor — without ANALYZE, which would run it`,onClick:Je,disabled:!j,className:`max-md:hidden`,labelClassName:$}),(0,P.jsxs)(`label`,{className:T(Ie,`cursor-pointer max-md:hidden`),title:`Go on with the statements after one that fails`,children:[(0,P.jsx)(`input`,{type:`checkbox`,checked:l,onChange:e=>b({continueOnError:e.target.checked}),className:`size-3.5 accent-[var(--accent)]`}),(0,P.jsx)(`span`,{className:Hi,children:`Continue on error`})]}),(0,P.jsx)(`span`,{className:`flex-1`}),(0,P.jsx)(Ki,{value:c,onChange:e=>b({rowLimit:e}),className:`max-md:hidden`}),!r&&(0,P.jsx)(ze,{icon:g,label:`Export result`,opensTab:!0,onClick:()=>_e?.(),disabled:!_e,title:_e?`Export the result to a file, in the Import/Export tab`:`Export needs a run with one result, of a statement that only reads`,labelClassName:$,arrowClassName:$}),!r&&(0,P.jsxs)(`button`,{type:`button`,onClick:()=>Me(!Pe),"aria-pressed":Pe,disabled:!n.target,title:`Query history: what was run on this connection`,"aria-label":`History`,className:T(Ie,Pe&&`bg-accent-wash text-primary can-hover:hover:bg-accent-wash can-hover:hover:text-primary`),children:[(0,P.jsx)(h,{className:`size-4 shrink-0`}),(0,P.jsx)(`span`,{className:$,children:`History`})]})]})]}),(0,P.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 overflow-hidden`,children:[(0,P.jsxs)(`div`,{ref:xe,className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[(0,P.jsx)(`div`,{className:T(`shrink-0`,r&&`h-[38%]`),style:r?void 0:{height:ye},children:(0,P.jsx)(Ue,{onExecute:e=>ne(e),loading:p.running,defaultValue:te,persistedSql:te,onSqlChange:w,schemaInfo:oe,dialect:n.dialect,handleRef:k,queryTab:!0,errorLines:m?.errorLines,onFormat:Xe})}),(0,P.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,"aria-label":`Resize the editor`,onPointerDown:Se,className:`flex h-1.5 shrink-0 cursor-row-resize touch-none items-center justify-center bg-border/50 can-hover:hover:bg-primary/30 max-md:hidden`,children:(0,P.jsx)(ee,{className:`size-3 text-text-subtle/50`})}),(0,P.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden border-t border-border md:border-t-0`,children:p.driverMissing?(0,P.jsx)(Re,{driver:p.driverMissing}):m?(0,P.jsx)(Ot,{run:m,shown:ue,onPick:de,onShowLine:se,onStop:()=>void p.stop(),stopping:p.stopping,renderResult:ve}):(0,P.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-1 p-4 text-center text-xs text-text-subtle`,children:[(0,P.jsx)(`span`,{children:`Run a statement to see its result`}),(0,P.jsxs)(`span`,{className:`max-md:hidden`,children:[A(`F5`),` runs the script or the selection · `,A(`Mod+Enter`),` runs the statement at the cursor`]})]})})]}),Pe&&n.target&&(0,P.jsx)(qt,{target:n.target,refreshKey:p.ended,floating:Ae,onPick:Ve,onClose:()=>Me(!1)})]}),(0,P.jsx)(`div`,{className:`flex shrink-0 gap-2 border-t border-border bg-panel-2 p-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] md:hidden`,children:p.running?(0,P.jsxs)(`button`,{type:`button`,onClick:()=>void p.stop(),disabled:p.stopping,className:`flex h-11 flex-1 items-center justify-center gap-2 rounded-md bg-destructive text-sm font-medium text-destructive-foreground disabled:opacity-60`,children:[(0,P.jsx)(s,{className:`size-4`}),p.stopping?`Stopping…`:`Stop`]}):(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`button`,{type:`button`,onClick:Ke,disabled:!j,className:`flex h-11 shrink-0 items-center justify-center gap-2 rounded-md border border-border px-3.5 text-sm text-text-2 disabled:opacity-50`,children:[(0,P.jsx)(y,{className:`size-4`}),`Whole script`]}),(0,P.jsxs)(`button`,{type:`button`,onClick:qe,disabled:!j,className:`flex h-11 flex-1 items-center justify-center gap-2 rounded-md bg-primary text-sm font-medium text-primary-foreground disabled:opacity-50`,children:[(0,P.jsx)(d,{className:`size-4`}),`Run current statement`]})]})}),(0,P.jsx)(he,{open:Ce,onClose:()=>we(!1),children:(0,P.jsxs)(`div`,{className:`space-y-1 px-4 pb-4`,role:`dialog`,"aria-label":`Run options`,children:[(0,P.jsx)(`h2`,{className:`pb-2 text-base font-semibold`,children:`Run options`}),(0,P.jsxs)(`label`,{className:`flex min-h-11 items-center justify-between gap-3 text-sm`,children:[`Rows per result`,(0,P.jsx)(Ki,{value:c,onChange:e=>b({rowLimit:e})})]}),(0,P.jsxs)(`label`,{className:`flex min-h-11 items-center justify-between gap-3 text-sm`,children:[`Continue on error`,(0,P.jsx)(`input`,{type:`checkbox`,checked:l,onChange:e=>b({continueOnError:e.target.checked}),className:`size-5 accent-[var(--accent)]`})]}),(0,P.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`A statement that fails stops the script, unless Continue on error is on.`})]})}),E&&(0,P.jsx)(It,{onCancel:()=>D(null),onDiscard:()=>{let e=E;D(null),p.start(e)}}),De.dialogs]})}function Ki({value:e,onChange:t,className:n}){let r=(0,M.useMemo)(()=>Je.map(e=>({n:e,label:`≤ ${e.toLocaleString(`en-US`)} rows`})),[]);return(0,P.jsxs)(`span`,{className:T(`relative flex shrink-0`,n),children:[(0,P.jsx)(`select`,{"aria-label":`Most rows per result`,title:`Most rows each result keeps`,value:e,onChange:e=>t(Number(e.target.value)),className:`h-[26px] appearance-none rounded-[5px] border border-border bg-input pr-[26px] pl-2 text-xs text-foreground outline-none focus:border-primary max-md:h-11 max-md:text-sm`,children:r.map(e=>(0,P.jsx)(`option`,{value:e.n,children:e.label},e.n))}),(0,P.jsx)(c,{"aria-hidden":!0,className:`pointer-events-none absolute top-1/2 right-1.5 size-3.5 -translate-y-1/2 text-text-subtle`})]})}export{Gi as QueryTab};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";var n=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},r=(e=>e?n(e):n),i=e(t(),1),a=e=>e;function o(e,t=a){let n=i.useSyncExternalStore(e.subscribe,i.useCallback(()=>t(e.getState()),[e,t]),i.useCallback(()=>t(e.getInitialState()),[e,t]));return i.useDebugValue(n),n}var s=e=>{let t=r(e),n=e=>o(t,e);return Object.assign(n,t),n},c=(e=>e?s(e):s);export{c as t};
@@ -1 +0,0 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{A as r,Cn as i,gt as a,hr as o,j as s,pr as c,qr as l,ut as u,wn as d,xn as f}from"./icons-JMA45Ifw.js";import{k as p,n as m,r as h}from"./api-client-OiA8Ida1.js";import{n as g}from"./utils-Bslrbb-G.js";import"./portal-container-context-BXAsDqrB.js";import"./panel-store-DmP16Fo0.js";import"./window-store-zJczRsv4.js";import"./project-store-CEGoLMOl.js";import"./project-framework-store-Bi5dyHdx.js";import"./session-list-sync-triggers-DitiR5h1.js";import"./tab-store-nNzRNfVV.js";import"./use-is-mobile-BXHbkfs9.js";import"./settings-categories-CcR9eL3x.js";import{t as _}from"./open-settings-DsGBn73g.js";import{r as v}from"./clipboard-D3XnL7CB.js";import{t as y}from"./button-Br60hGkw.js";import"./dialog-DOaEX6AK.js";import"./mobile-bottom-sheet-CGmmdp_5.js";import"./use-visual-viewport-CQ6-A0Dt.js";import{Cn as b,Dn as x,En as S,Hn as ee,On as C,Sr as w,Tn as T,a as E,an as D,i as O,kn as k,xn as A}from"./index-ItT-dTPV.js";import"./run-in-terminal-Bk9Bw7G1.js";import{t as j}from"./run-in-terminal-button-DFPQUlZs.js";var M=e(t(),1),N={state:()=>h.get(`/api/tailscale/state`),login:()=>h.post(`/api/tailscale/login`),cancelLogin:()=>h.post(`/api/tailscale/login/cancel`),setService:e=>h.post(`/api/tailscale/service`,e)};function P(e){return e.installed?e.backendState===null?`start`:e.canManage===!1?`operator`:e.backendState===`Running`?!e.magicDns||!e.httpsCertificates?`dns`:e.device?.tags.length?e.service.defined?null:`service`:`tag`:`sign-in`:`install`}function F(e){let t=P(e);return t===`service`?null:t}var I=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;function L(e){return e?e.length>63?`Use at most 63 characters.`:I.test(e)?null:`Use lowercase letters, digits and dashes, starting and ending with a letter or digit.`:`Enter a name.`}var R={dns:`https://login.tailscale.com/admin/dns`,accessControls:`https://login.tailscale.com/admin/acls/file`,machines:`https://login.tailscale.com/admin/machines`,services:`https://login.tailscale.com/admin/services`},z=n(),B=[`install`,`start`,`operator`,`sign-in`,`dns`,`tag`,`service`],V={install:`Install Tailscale`,start:`Start Tailscale`,operator:`Let PPM manage Tailscale`,"sign-in":`Sign in to Tailscale`,dns:`Turn on MagicDNS and HTTPS`,tag:`Tag this machine`,service:`Create the service`},H={darwin:`https://tailscale.com/download/mac`,win32:`https://tailscale.com/download/windows`},U=`curl -fsSL https://tailscale.com/install.sh | sh`,te=`sudo systemctl enable --now tailscaled`,W=e=>`sudo tailscale set --operator=${/^[\w.@-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}`,G=`tag:ppm`,ne=e=>`"tagOwners": {\n "${e}": ["autogroup:admin"]\n}`;function re({state:e,onRefresh:t,onSignIn:n,onShowSignIn:r}){let i=P(e),a=i?B.indexOf(i):B.length,s=B.filter(t=>t===`start`?i===`start`:t===`operator`?e.platform===`linux`:!0),c=e=>B.indexOf(e)<a?`done`:e===i?`current`:`todo`,l=(0,z.jsxs)(y,{variant:`outline`,onClick:t,className:`min-h-11 cursor-pointer md:min-h-9`,children:[(0,z.jsx)(o,{className:`size-3.5`}),`Check again`]}),u=e.device?.name||`this machine`,p=e.service.name,m=e.osUser&&e.osUser!==`root`?` && ${W(e.osUser)}`:``,h=`${U}${m}`,_=`${te}${m}`,v=`PPM types it into a terminal on this machine; press Enter there and give your password once.`,b={install:()=>e.platform===`linux`?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(K,{children:[`This installs Tailscale, starts it`,m?` and lets PPM manage it`:``,`. `,v]}),(0,z.jsx)(C,{code:h}),(0,z.jsxs)(J,{children:[(0,z.jsx)(j,{command:h,label:`Install in terminal`}),l]})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(K,{children:`Install the Tailscale app on the machine PPM runs on and open it once.`}),(0,z.jsxs)(J,{children:[(0,z.jsx)(k,{href:H[e.platform]??`https://tailscale.com/download`,children:`Download Tailscale`}),l]})]}),start:()=>e.platform===`linux`?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(K,{children:[`Tailscale is installed, but its service is not running. `,v]}),(0,z.jsx)(C,{code:_}),(0,z.jsxs)(J,{children:[(0,z.jsx)(j,{command:_,label:`Start in terminal`}),l]})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(K,{children:`Tailscale is installed, but not running. Open the Tailscale app on this machine.`}),(0,z.jsx)(J,{children:l})]}),operator:()=>(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(K,{children:[`On Linux, Tailscale only takes changes from root and from one user it trusts. PPM runs as `,(0,z.jsx)(q,{children:e.osUser}),`, which has to be named once. `,v]}),(0,z.jsx)(C,{code:W(e.osUser)}),(0,z.jsxs)(J,{children:[(0,z.jsx)(j,{command:W(e.osUser),label:`Run in terminal`}),l]})]}),"sign-in":()=>{if(e.login.state===`starting`||e.login.state===`waiting`)return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(K,{children:`Waiting for you to finish signing in.`}),(0,z.jsx)(J,{children:(0,z.jsx)(y,{onClick:r,className:`min-h-11 cursor-pointer md:min-h-9`,children:`Show sign-in link`})})]});if(e.backendState===`NeedsMachineAuth`)return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(K,{children:[`Signed in. An admin has to approve `,u,` before it joins the tailnet.`]}),(0,z.jsxs)(J,{children:[(0,z.jsx)(k,{href:R.machines,children:`Open machines`}),l]})]});if(e.backendState===`Starting`)return(0,z.jsxs)(K,{children:[(0,z.jsx)(f,{className:`mr-2 inline size-4 animate-spin`}),`Connecting to Tailscale…`]});let t=e.backendState===`Stopped`;return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(K,{children:t?`Tailscale is turned off on this machine.`:`Sign this machine in with the account that owns your tailnet.`}),(0,z.jsx)(J,{children:(0,z.jsxs)(y,{onClick:n,className:`min-h-11 cursor-pointer md:min-h-9`,children:[(0,z.jsx)(d,{className:`size-4`}),t?`Turn on`:`Sign in`]})})]})},dns:()=>(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(K,{children:[`In `,(0,z.jsx)(`b`,{children:`DNS`}),`, turn on `,(0,z.jsx)(`b`,{children:`MagicDNS`}),`, then choose `,(0,z.jsx)(`b`,{children:`Enable HTTPS`}),` under HTTPS Certificates. Every .ts.net address needs both.`]}),(0,z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`MagicDNS `,e.magicDns?`on`:`off`,` · HTTPS `,e.httpsCertificates?`on`:`off`]}),(0,z.jsxs)(J,{children:[(0,z.jsx)(k,{href:R.dns,children:`Open DNS settings`}),l]})]}),tag:()=>(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(K,{children:`Tailscale only lets a tagged machine host a service.`}),(0,z.jsxs)(`ol`,{className:`list-decimal space-y-3 pl-5 text-sm leading-relaxed text-muted-foreground`,children:[(0,z.jsxs)(`li`,{className:`space-y-2`,children:[(0,z.jsxs)(`p`,{children:[`In `,(0,z.jsx)(`b`,{children:`Access controls`}),`, let admins hand out the tag (once per tailnet):`]}),(0,z.jsx)(C,{code:ne(G)}),(0,z.jsx)(k,{href:R.accessControls,children:`Open access controls`})]}),(0,z.jsxs)(`li`,{className:`space-y-2`,children:[(0,z.jsxs)(`p`,{children:[`In `,(0,z.jsx)(`b`,{children:`Machines`}),`, open the menu of `,u,`, choose `,(0,z.jsx)(`b`,{children:`Edit tags`}),` and add `,(0,z.jsx)(q,{children:G}),`.`]}),(0,z.jsx)(k,{href:R.machines,children:`Open machines`})]})]}),(0,z.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:`A tagged machine belongs to the tag rather than to your account.`}),(0,z.jsx)(J,{children:l})]}),service:()=>(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(K,{children:[`In `,(0,z.jsx)(`b`,{children:`Services`}),`, choose `,(0,z.jsx)(`b`,{children:`Advertise`}),`, then `,(0,z.jsx)(`b`,{children:`Define a Service`}),`: name it `,(0,z.jsx)(q,{children:p}),` and give it the port `,(0,z.jsx)(q,{children:`tcp:443`}),`.`]}),(0,z.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:`The address can be turned on before this; it then waits for the service and for an admin to approve this machine.`}),(0,z.jsxs)(J,{children:[(0,z.jsx)(k,{href:R.services,children:`Open services`}),l]})]})},x={operator:`PPM can change Tailscale's settings.`,"sign-in":e.device?.dnsName?`Signed in as ${e.device.dnsName}`:void 0,dns:`MagicDNS and HTTPS are on.`,tag:e.device?.tags.length?`Tagged ${e.device.tags.join(`, `)}`:void 0,service:`svc:${p} exists in your tailnet.`};return(0,z.jsx)(`ol`,{className:`space-y-1`,"data-testid":`tailscale-steps`,children:s.map((e,t)=>{let n=c(e);return(0,z.jsxs)(`li`,{className:`flex gap-3`,"data-step":e,"data-status":n,children:[(0,z.jsx)(ie,{n:t+1,status:n}),(0,z.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2 pb-4`,children:[(0,z.jsx)(`div`,{className:g(`pt-0.5 text-sm`,n===`todo`?`text-muted-foreground`:`font-medium`),children:V[e]}),n===`done`&&x[e]&&(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:x[e]}),n===`current`&&b[e]()]})]},e)})})}function ie({n:e,status:t}){return t===`done`?(0,z.jsx)(s,{className:`mt-0.5 size-5 shrink-0 text-success`}):(0,z.jsx)(`span`,{className:g(`mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full border text-[11px] font-medium`,t===`current`?`border-primary text-primary`:`border-border text-muted-foreground`),children:e})}function K({children:e}){return(0,z.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:e})}function q({children:e}){return(0,z.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5 text-xs text-foreground`,children:e})}function J({children:e}){return(0,z.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e})}var Y=`text-sm leading-relaxed text-muted-foreground`;function ae({open:e,login:t,osUser:n,onRetry:r,onCancel:i,onClose:a}){let o=(0,z.jsx)(y,{variant:`outline`,onClick:a,className:`min-h-11 cursor-pointer md:min-h-9`,children:`Close`}),s=(0,z.jsx)(y,{onClick:r,className:`min-h-11 cursor-pointer md:min-h-9`,children:`Try again`}),c,l;if(t.state===`waiting`&&t.url)c=(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`p`,{className:Y,children:`Sign in with the account that owns your tailnet. This machine joins as soon as you finish.`}),(0,z.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,z.jsx)(`div`,{className:`rounded-lg p-3`,style:{backgroundColor:`#ffffff`,colorScheme:`light`},children:(0,z.jsx)(D,{value:t.url,size:168,bgColor:`#ffffff`,fgColor:`#000000`,level:`L`,style:{display:`block`}})}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Or scan it with your phone`})]})]}),l=(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(y,{variant:`outline`,onClick:i,className:`min-h-11 cursor-pointer md:min-h-9`,children:`Cancel sign-in`}),(0,z.jsx)(k,{href:t.url,primary:!0,children:`Open sign-in page`})]});else if(t.state===`idle`||t.state===`starting`)c=(0,z.jsxs)(`p`,{className:`flex items-center gap-2 ${Y}`,children:[(0,z.jsx)(f,{className:`size-4 animate-spin`}),`Asking Tailscale for a sign-in link…`]}),l=(0,z.jsx)(y,{variant:`outline`,onClick:i,className:`min-h-11 cursor-pointer md:min-h-9`,children:`Cancel`});else if(t.state===`success`)c=(0,z.jsx)(`p`,{className:Y,children:`Signed in.`}),l=o;else if(t.state===`needs-approval`)c=(0,z.jsx)(`p`,{className:Y,children:`Signed in. An admin has to approve this machine before it joins the tailnet.`}),l=(0,z.jsxs)(z.Fragment,{children:[o,(0,z.jsx)(k,{href:R.machines,primary:!0,children:`Open machines`})]});else if(t.state===`needs-operator`){let e=W(n);c=(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`p`,{className:Y,children:`Tailscale on this machine only takes changes from root and from one user it trusts. This has to be run once, with your password. PPM types it into a terminal; press Enter there, then sign in again.`}),(0,z.jsx)(C,{code:e})]}),l=(0,z.jsxs)(z.Fragment,{children:[o,(0,z.jsx)(y,{variant:`outline`,onClick:r,className:`min-h-11 cursor-pointer md:min-h-9`,children:`Try again`}),(0,z.jsx)(j,{command:e,label:`Run in terminal`,onRun:a})]})}else c=(0,z.jsx)(`p`,{className:Y,children:t.message??`The sign-in was cancelled.`}),l=(0,z.jsxs)(z.Fragment,{children:[o,s]});return(0,z.jsx)(x,{open:e,title:`Sign in to Tailscale`,onClose:a,children:(0,z.jsxs)(`div`,{className:`space-y-4`,"data-testid":`tailscale-sign-in`,children:[c,(0,z.jsx)(`div`,{className:`flex flex-col-reverse gap-2 pt-2 md:flex-row md:justify-end`,children:l})]})})}var oe=4e3,X=e=>e instanceof Error?e.message:String(e);function se(e){return e.login.state===`starting`||e.login.state===`waiting`||P(e)!==null||e.enabled&&!e.service.approved}function ce(e){if(!e)return!1;try{return new URL(e).hostname===window.location.hostname}catch{return!1}}function le(e){return e.enabled?e.backendState===`Running`?e.service.pointsAtPpm?e.service.approved?`On. Open it from any device signed in to your tailnet.`:`On, waiting for an admin to approve this machine.`:`On, but Tailscale is not serving it right now.`:`On, but this machine is not connected to Tailscale.`:`Off.`}function ue(){let[e,t]=(0,M.useState)(null),[n,r]=(0,M.useState)(null),[a,o]=(0,M.useState)(!1),[s,c]=(0,M.useState)(!1),[u,d]=(0,M.useState)(!1),[f,h]=(0,M.useState)(!1),[v,b]=(0,M.useState)(``),S=(0,M.useRef)(0),C=(0,M.useRef)(null),T=(0,M.useCallback)(e=>{S.current++,t(e),r(null)},[]),E=(0,M.useCallback)(e=>{S.current++,t(t=>t&&{...t,login:e})},[]),D=(0,M.useCallback)(async()=>{let e=++S.current;try{let n=await N.state();e===S.current&&(t(n),r(null))}catch(t){e===S.current&&r(X(t))}},[]);(0,M.useEffect)(()=>{D()},[D]),(0,M.useEffect)(()=>{let e=()=>void D(),t=()=>{document.visibilityState===`visible`&&D()};return window.addEventListener(`tailscale:changed`,e),window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(`tailscale:changed`,e),window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,t)}},[D]);let O=!!e&&se(e);(0,M.useEffect)(()=>{if(!O)return;let e=setInterval(()=>{document.visibilityState===`visible`&&D()},oe);return()=>clearInterval(e)},[O,D]);let k=e?.service.name??``;(0,M.useEffect)(()=>{b(k)},[k]);let A=e?.login.state;(0,M.useEffect)(()=>{s&&A===`success`&&(c(!1),p.success(`Signed in to Tailscale`))},[s,A]);let j=async()=>{E({state:`starting`,url:null,message:null}),c(!0);try{E(await N.login())}catch(e){E({state:`error`,url:null,message:X(e)})}},I=async()=>{c(!1);try{E(await N.cancelLogin())}catch{}},R=L(v),B=()=>{!e||v===e.service.name||R||(C.current=(async()=>{o(!0);try{T(await N.setService({name:v}))}catch(t){p.error(`Could not rename the address`,{description:X(t)}),b(e.service.name)}finally{o(!1)}})())},V=async(e,t=!1)=>{await C.current,o(!0);try{T(await N.setService(e?{enabled:!0,replace:t}:{enabled:!1}))}catch(t){let n=t instanceof m?t.body?.code:void 0;e&&n===`conflict`?d(!0):p.error(e?`Could not turn the address on`:`Could not turn the address off`,{description:X(t)})}finally{o(!1)}};if(!e)return(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n?`Could not read Tailscale's state: ${n}`:`Reading Tailscale's state…`});let H=F(e)!==null,U=e.backendState===`Running`,te=e.authEnabled&&!H&&!R,W=P(e)===null,G=(0,z.jsx)(re,{state:e,onRefresh:()=>void D(),onSignIn:()=>void j(),onShowSignIn:()=>c(!0)});return(0,z.jsxs)(`div`,{className:`space-y-6`,"data-testid":`tailscale-settings`,children:[(0,z.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:`Reach PPM at a private https address from any device signed in to your tailnet. Nothing is opened to the internet, and PPM still asks for its password.`}),(0,z.jsxs)(`section`,{className:`space-y-4 rounded-lg border border-border p-4`,"data-testid":`tailscale-address`,children:[(0,z.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,z.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,z.jsx)(w,{htmlFor:`tailscale-address-switch`,className:`text-sm font-medium`,children:`Private address`}),(0,z.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,"data-testid":`tailscale-address-status`,children:le(e)})]}),(0,z.jsx)(`div`,{className:`flex min-h-11 shrink-0 items-center`,children:(0,z.jsx)(ee,{id:`tailscale-address-switch`,checked:e.enabled,disabled:a||!e.enabled&&!te,onCheckedChange:t=>{!t&&ce(e.service.url)?h(!0):V(t)}})})]}),e.enabled&&e.service.url?(0,z.jsx)(de,{url:e.service.url}):(0,z.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,z.jsx)(w,{htmlFor:`tailscale-service-name`,className:`text-xs text-muted-foreground`,children:`Address`}),(0,z.jsxs)(`div`,{className:g(`flex min-h-11 items-center rounded-md border border-input bg-background focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50`,R&&`border-destructive`),children:[(0,z.jsx)(`input`,{id:`tailscale-service-name`,value:v,onChange:e=>b(e.target.value.toLowerCase()),onBlur:B,onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()},disabled:a||e.enabled,"aria-invalid":!!R,spellCheck:!1,autoCapitalize:`none`,autoComplete:`off`,className:`w-20 min-w-20 flex-1 bg-transparent py-2 pl-3 text-sm outline-none`}),(0,z.jsxs)(`span`,{className:`min-w-0 truncate pr-3 text-sm text-muted-foreground`,children:[`.`,e.dnsSuffix??`your-tailnet.ts.net`]})]}),(0,z.jsx)(`p`,{className:g(`text-xs`,R?`text-destructive`:`text-muted-foreground`),children:R??(e.enabled?`Turn the address off to rename it.`:`The address keeps this name when the machine is renamed.`)})]}),!e.enabled&&!e.authEnabled&&(0,z.jsxs)(Q,{icon:(0,z.jsx)(i,{className:`size-4`}),children:[(0,z.jsx)(`p`,{children:`PPM's password is off. Turn it on first: anyone in your tailnet could otherwise open PPM.`}),(0,z.jsx)(y,{variant:`outline`,onClick:()=>_(`general`),className:`min-h-11 cursor-pointer md:min-h-9`,children:`Open General`})]}),!e.enabled&&e.authEnabled&&H&&(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Finish the setup below to turn it on.`}),e.enabled&&U&&!e.service.pointsAtPpm&&(0,z.jsxs)(Q,{icon:(0,z.jsx)(l,{className:`size-4 text-warning`}),children:[(0,z.jsx)(`p`,{children:`Tailscale is not serving this address right now.`}),(0,z.jsx)(y,{variant:`outline`,onClick:()=>void V(!0),disabled:a,className:`min-h-11 cursor-pointer md:min-h-9`,children:`Apply again`})]}),e.enabled&&U&&e.service.pointsAtPpm&&!e.service.approved&&(0,z.jsx)(fe,{state:e})]}),W?(0,z.jsxs)(`details`,{className:`group`,children:[(0,z.jsx)(`summary`,{className:`flex min-h-11 cursor-pointer items-center text-sm font-medium`,children:`Setup: every step is done`}),(0,z.jsx)(`div`,{className:`pt-2`,children:G})]}):(0,z.jsxs)(`section`,{className:`space-y-3`,children:[(0,z.jsx)(`h3`,{className:`text-sm font-medium`,children:`Setup`}),G]}),(0,z.jsx)(ae,{open:s,login:e.login,osUser:e.osUser,onRetry:()=>void j(),onCancel:()=>void I(),onClose:()=>c(!1)}),(0,z.jsx)(x,{open:f,title:`Turn off the address you are using?`,onClose:()=>h(!1),children:(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsxs)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:[`This page is open at `,e.service.url,`. Turning the address off disconnects it; reach PPM another way to turn it back on.`]}),(0,z.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 pt-2 md:flex-row md:justify-end`,children:[(0,z.jsx)(y,{variant:`outline`,onClick:()=>h(!1),className:`min-h-11 cursor-pointer md:min-h-9`,children:`Cancel`}),(0,z.jsx)(y,{variant:`destructive`,onClick:()=>{h(!1),V(!1)},className:`min-h-11 cursor-pointer md:min-h-9`,children:`Turn off`})]})]})}),(0,z.jsx)(x,{open:u,title:`Replace svc:${e.service.name}?`,onClose:()=>d(!1),children:(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsxs)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:[`On this machine, svc:`,e.service.name,` already serves `,(0,z.jsx)(`code`,{className:`text-xs text-foreground`,children:e.service.target??`something else`}),`. Replacing it points the address at PPM, and what it served stops answering there.`]}),(0,z.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 pt-2 md:flex-row md:justify-end`,children:[(0,z.jsx)(y,{variant:`outline`,onClick:()=>d(!1),className:`min-h-11 cursor-pointer md:min-h-9`,children:`Cancel`}),(0,z.jsx)(y,{variant:`destructive`,onClick:()=>{d(!1),V(!0,!0)},className:`min-h-11 cursor-pointer md:min-h-9`,children:`Replace`})]})]})})]})}var Z=`flex size-11 shrink-0 cursor-pointer items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-surface-hover hover:text-foreground`;function de({url:e,qrHint:t=`Scan with a phone that is signed in to your tailnet`}){let[n,i]=(0,M.useState)(!1),[o,s]=(0,M.useState)(!1),l=async()=>{await v(e)&&(i(!0),setTimeout(()=>i(!1),1500))};return(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsxs)(`div`,{className:`flex items-center rounded-md border border-border bg-muted pl-3`,"data-testid":`tailscale-address-url`,children:[(0,z.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm`,children:e}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>void l(),"aria-label":`Copy address`,title:`Copy address`,className:Z,children:n?(0,z.jsx)(r,{className:`size-4 text-success`}):(0,z.jsx)(u,{className:`size-4`})}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>s(e=>!e),"aria-label":`Show QR code`,"aria-pressed":o,title:`Show QR code`,className:g(Z,o&&`text-foreground`),children:(0,z.jsx)(c,{className:`size-4`})}),(0,z.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`Open address`,title:`Open address`,className:Z,children:(0,z.jsx)(a,{className:`size-4`})})]}),o&&(0,z.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,z.jsx)(`div`,{className:`rounded-lg p-3`,style:{backgroundColor:`#ffffff`,colorScheme:`light`},children:(0,z.jsx)(D,{value:e,size:168,bgColor:`#ffffff`,fgColor:`#000000`,level:`L`,style:{display:`block`}})}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:t})]})]})}function fe({state:e}){let t=`svc:${e.service.name}`,n=e.device?.name||`this machine`,r=`"autoApprovers": {\n "services": {\n "${t}": ["${e.device?.tags[0]??`tag:ppm`}"]\n }\n}`;return(0,z.jsxs)(Q,{icon:(0,z.jsx)(l,{className:`size-4 text-warning`}),children:[(0,z.jsx)(`p`,{children:e.service.defined?(0,z.jsxs)(z.Fragment,{children:[`Waiting for approval. In `,(0,z.jsx)(`b`,{children:`Services`}),`, open `,t,` and approve `,n,` under Service hosts.`]}):(0,z.jsxs)(z.Fragment,{children:[`Waiting for the service. Create `,t,` in `,(0,z.jsx)(`b`,{children:`Services`}),` (the last step below), then approve `,n,` as its host.`]})}),(0,z.jsx)(k,{href:R.services,children:`Open services`}),(0,z.jsx)(`p`,{className:`pt-1`,children:`To approve machines with this tag automatically, add this to your access controls:`}),(0,z.jsx)(C,{code:r})]})}function Q({icon:e,children:t}){return(0,z.jsxs)(`div`,{className:`flex gap-3 rounded-md border border-border bg-muted px-4 py-3`,children:[(0,z.jsx)(`span`,{className:`mt-0.5 shrink-0 text-muted-foreground`,children:e}),(0,z.jsx)(`div`,{className:`min-w-0 flex-1 space-y-2 text-sm leading-relaxed text-muted-foreground`,children:t})]})}var pe=1e4,me=2e3,$=e=>e instanceof Error?e.message:String(e);function he(e){if(!e)return!1;try{return new URL(e).hostname===window.location.hostname}catch{return!1}}function ge(){let[e,t]=(0,M.useState)(null),[n,r]=(0,M.useState)(null),[a,o]=(0,M.useState)(!1),[s,c]=(0,M.useState)(!1),[u,d]=(0,M.useState)(!1),[m,h]=(0,M.useState)(!1),g=E(),v=(0,M.useCallback)(async()=>{try{t(await A.status()),r(null)}catch(e){r($(e))}},[]),S=e?e.enabled??!0:!1,C=S&&!!e&&!e.active;(0,M.useEffect)(()=>{v()},[v]),(0,M.useEffect)(()=>{let e=setInterval(()=>{document.visibilityState===`visible`&&v()},C?me:pe);return()=>clearInterval(e)},[C,v]),(0,M.useEffect)(()=>{let e=()=>{v(),g.refreshStatus()};return window.addEventListener(`focus`,e),()=>window.removeEventListener(`focus`,e)},[v,g.refreshStatus]);let T=async e=>{o(!0),t(t=>t&&{...t,enabled:e});try{await A.setEnabled(e),await v()}catch(n){t(t=>t&&{...t,enabled:!e}),p.error(e?`Could not turn the public link on`:`Could not turn the public link off`,{description:$(n)})}finally{o(!1)}},D=async()=>{d(!1),h(!0);try{await b.disable(),p.success(`Switched to a temporary address`),await Promise.all([g.refreshStatus(),v()])}catch(e){p.error(`Could not switch to a temporary address`,{description:$(e)})}finally{h(!1)}};if(!e)return(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n?`Could not read the public link's state: ${n}`:`Reading the public link's state…`});let k=g.status,j=k?.authEnabled??!0,N=k?.mode??`quick`,P=N===`named`?k?.hostname??null:null,F=!!P&&window.location.hostname===P,I=g.step.k!==`hidden`&&g.step.k!==`ask-domain`,L=N===`named`&&k?.liveMode===`quick`;return(0,z.jsxs)(`div`,{className:`space-y-6`,"data-testid":`public-link-pane`,children:[(0,z.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:`Open PPM from anywhere through a public https link, served by Cloudflare. Anyone who has the link reaches PPM's sign-in page, so keep the password on. For a link only your own devices can open, use Tailscale instead.`}),(0,z.jsxs)(`section`,{className:`space-y-4 rounded-lg border border-border p-4`,"data-testid":`public-link-switch-card`,children:[(0,z.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,z.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,z.jsx)(w,{htmlFor:`public-link-switch`,className:`text-sm font-medium`,children:`Public link`}),(0,z.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,"data-testid":`public-link-status`,children:S?C?`On. Waiting for Cloudflare to hand out the link…`:`On. Anyone with the link reaches PPM's sign-in page.`:`Off.`})]}),(0,z.jsxs)(`div`,{className:`flex min-h-11 shrink-0 items-center gap-2`,children:[(a||C)&&(0,z.jsx)(f,{className:`size-4 animate-spin text-muted-foreground`}),(0,z.jsx)(ee,{id:`public-link-switch`,checked:S,disabled:a||!S&&!j,onCheckedChange:t=>{!t&&he(e.url)?c(!0):T(t)}})]})]}),S&&e.url&&(0,z.jsx)(de,{url:e.url,qrHint:`Scan to open PPM on a phone`}),!j&&(0,z.jsxs)(Q,{icon:(0,z.jsx)(i,{className:`size-4`}),children:[(0,z.jsx)(`p`,{children:S?`PPM's password is off while the link is on: anyone who has the link can open PPM. Turn the password on, or the link off.`:`PPM's password is off. Turn it on first: anyone with the link could otherwise open PPM.`}),(0,z.jsx)(y,{variant:`outline`,onClick:()=>_(`general`),className:`min-h-11 cursor-pointer md:min-h-9`,children:`Open General`})]})]}),(0,z.jsxs)(`section`,{className:`space-y-3`,"data-testid":`public-link-address`,children:[(0,z.jsx)(`h3`,{className:`text-sm font-medium`,children:`Address`}),I?(0,z.jsx)(`div`,{className:`rounded-lg border border-border p-4`,children:(0,z.jsx)(O,{step:g.step,t:g})}):(0,z.jsxs)(`div`,{className:`divide-y divide-border rounded-lg border border-border`,children:[(0,z.jsx)(_e,{title:`Temporary address`,inUse:N===`quick`,description:`A random trycloudflare.com address. It changes every time PPM restarts.`,action:N===`named`&&(0,z.jsx)(y,{variant:`outline`,onClick:()=>d(!0),disabled:m||F,className:`min-h-11 cursor-pointer md:min-h-9`,children:m?(0,z.jsx)(f,{className:`size-4 animate-spin`}):`Switch`})}),(0,z.jsx)(_e,{title:`Your own domain`,inUse:N===`named`,description:P?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`span`,{className:`break-all font-medium text-foreground`,children:[`https://`,P]}),`. It stays the same after a restart.`]}):`One fixed address on a domain you have on Cloudflare, like ppm.example.com.`,action:N===`quick`&&j&&(0,z.jsx)(y,{onClick:g.answerYes,className:`min-h-11 cursor-pointer md:min-h-9`,children:`Set up`})})]}),!I&&N===`quick`&&!j&&(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Turn on PPM's password to use your own domain.`}),!I&&F&&(0,z.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:`This page is open through your domain, so switching would cut it off before the new address could show. Open PPM another way first (Tailscale, or on this machine), then switch.`}),(L||k?.tunnelWarning)&&(0,z.jsxs)(Q,{icon:(0,z.jsx)(l,{className:`size-4 text-warning`}),children:[L&&(0,z.jsx)(`p`,{children:`PPM could not use your domain and is on a temporary address for now.`}),k?.tunnelWarning&&(0,z.jsx)(`p`,{children:k.tunnelWarning})]})]}),(0,z.jsx)(x,{open:s,title:`Turn off the link you are using?`,onClose:()=>c(!1),children:(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsxs)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:[`This page is open at `,e.url,`. Turning the link off disconnects it; reach PPM another way to turn it back on.`]}),(0,z.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 pt-2 md:flex-row md:justify-end`,children:[(0,z.jsx)(y,{variant:`outline`,onClick:()=>c(!1),className:`min-h-11 cursor-pointer md:min-h-9`,children:`Cancel`}),(0,z.jsx)(y,{variant:`destructive`,onClick:()=>{c(!1),T(!1)},className:`min-h-11 cursor-pointer md:min-h-9`,children:`Turn off`})]})]})}),(0,z.jsx)(x,{open:u,title:`Switch to a temporary address?`,onClose:()=>d(!1),children:(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsxs)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:[`PPM stops answering at https://`,P,` and gets a new random address instead. Links that use your domain stop working until you set it up again.`]}),(0,z.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 pt-2 md:flex-row md:justify-end`,children:[(0,z.jsx)(y,{variant:`outline`,onClick:()=>d(!1),className:`min-h-11 cursor-pointer md:min-h-9`,children:`Cancel`}),(0,z.jsx)(y,{variant:`destructive`,onClick:()=>void D(),className:`min-h-11 cursor-pointer md:min-h-9`,children:`Switch`})]})]})})]})}function _e({title:e,description:t,inUse:n,action:r}){return(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 p-3`,"data-in-use":n||void 0,children:[(0,z.jsxs)(`div`,{className:`min-w-0 flex-[1_1_14rem] space-y-0.5`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`span`,{className:`text-sm font-medium`,children:e}),n&&(0,z.jsx)(`span`,{className:`rounded bg-primary/10 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-primary`,children:`In use`})]}),(0,z.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:t})]}),r&&(0,z.jsx)(`div`,{className:`shrink-0`,children:r})]})}function ve(){let e=S(e=>e.tab),t=S(e=>e.setTab);return(0,z.jsxs)(`div`,{className:`space-y-5`,"data-testid":`remote-access`,"data-tab":e,children:[(0,z.jsx)(`div`,{role:`tablist`,"aria-label":`Remote access`,className:`flex gap-1 overflow-x-auto border-b border-border/50`,children:T.map(n=>(0,z.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":e===n.id,"data-testid":`remote-access-tab-${n.id}`,onClick:()=>t(n.id),className:g(`flex min-h-11 shrink-0 cursor-pointer items-center whitespace-nowrap rounded-t px-3 text-sm transition-colors md:min-h-9 md:text-xs`,e===n.id?`border-b-2 border-primary font-medium text-primary`:`text-text-subtle hover:text-text-secondary`),children:n.label},n.id))}),(0,z.jsxs)(`div`,{role:`tabpanel`,children:[e===`tailscale`&&(0,z.jsx)(ue,{}),e===`public-link`&&(0,z.jsx)(ge,{})]})]})}export{ve as RemoteAccessSettingsSection};