spark-sql-language-server 0.0.1-beta.6 → 0.2.0-beta.0

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 (740) hide show
  1. package/out/sparksql-server-worker.js +1 -1
  2. package/out/sparksql-server-worker.js.map +1 -1
  3. package/out-tsc/assets/built-in-functions.d.ts +2 -0
  4. package/out-tsc/assets/built-in-functions.d.ts.map +1 -0
  5. package/out-tsc/assets/built-in-functions.js +4 -2
  6. package/out-tsc/assets/built-in-functions.js.map +1 -1
  7. package/out-tsc/completion-parser.d.ts +11 -0
  8. package/out-tsc/completion-parser.d.ts.map +1 -0
  9. package/out-tsc/completion-parser.js +148 -0
  10. package/out-tsc/completion-parser.js.map +1 -0
  11. package/out-tsc/constants.d.ts +9 -0
  12. package/out-tsc/constants.d.ts.map +1 -0
  13. package/out-tsc/constants.js +12 -0
  14. package/out-tsc/constants.js.map +1 -0
  15. package/out-tsc/cursor.d.ts +10 -0
  16. package/out-tsc/cursor.d.ts.map +1 -0
  17. package/out-tsc/cursor.js +3 -0
  18. package/out-tsc/cursor.js.map +1 -1
  19. package/out-tsc/execute-command.d.ts +7 -0
  20. package/out-tsc/execute-command.d.ts.map +1 -0
  21. package/out-tsc/execute-command.js +78 -0
  22. package/out-tsc/execute-command.js.map +1 -0
  23. package/out-tsc/execute-commands.d.ts +1 -0
  24. package/out-tsc/execute-commands.d.ts.map +1 -0
  25. package/out-tsc/execute-commands.js +3 -4
  26. package/out-tsc/execute-commands.js.map +1 -1
  27. package/out-tsc/formatter/boundary-writer.d.ts +30 -0
  28. package/out-tsc/formatter/boundary-writer.d.ts.map +1 -0
  29. package/out-tsc/formatter/boundary-writer.js +47 -0
  30. package/out-tsc/formatter/boundary-writer.js.map +1 -0
  31. package/out-tsc/formatter/core/comment-helper.d.ts +11 -0
  32. package/out-tsc/formatter/core/comment-helper.d.ts.map +1 -0
  33. package/out-tsc/formatter/core/comment-helper.js +139 -0
  34. package/out-tsc/formatter/core/comment-helper.js.map +1 -0
  35. package/out-tsc/formatter/core/edit-collector.d.ts +110 -0
  36. package/out-tsc/formatter/core/edit-collector.d.ts.map +1 -0
  37. package/out-tsc/formatter/core/edit-collector.js +159 -0
  38. package/out-tsc/formatter/core/edit-collector.js.map +1 -0
  39. package/out-tsc/formatter/core/formatting-context.d.ts +183 -0
  40. package/out-tsc/formatter/core/formatting-context.d.ts.map +1 -0
  41. package/out-tsc/formatter/core/formatting-context.js +294 -0
  42. package/out-tsc/formatter/core/formatting-context.js.map +1 -0
  43. package/out-tsc/formatter/core/index.d.ts +25 -0
  44. package/out-tsc/formatter/core/index.d.ts.map +1 -0
  45. package/out-tsc/formatter/core/index.js +57 -0
  46. package/out-tsc/formatter/core/index.js.map +1 -0
  47. package/out-tsc/formatter/core/pipeline/formatting-pipeline.d.ts +116 -0
  48. package/out-tsc/formatter/core/pipeline/formatting-pipeline.d.ts.map +1 -0
  49. package/out-tsc/formatter/core/pipeline/formatting-pipeline.js +237 -0
  50. package/out-tsc/formatter/core/pipeline/formatting-pipeline.js.map +1 -0
  51. package/out-tsc/formatter/core/pipeline/index.d.ts +12 -0
  52. package/out-tsc/formatter/core/pipeline/index.d.ts.map +1 -0
  53. package/out-tsc/formatter/core/pipeline/index.js +19 -0
  54. package/out-tsc/formatter/core/pipeline/index.js.map +1 -0
  55. package/out-tsc/formatter/core/pipeline/statement-separation.d.ts +5 -0
  56. package/out-tsc/formatter/core/pipeline/statement-separation.d.ts.map +1 -0
  57. package/out-tsc/formatter/core/pipeline/statement-separation.js +149 -0
  58. package/out-tsc/formatter/core/pipeline/statement-separation.js.map +1 -0
  59. package/out-tsc/formatter/core/rules/index.d.ts +11 -0
  60. package/out-tsc/formatter/core/rules/index.d.ts.map +1 -0
  61. package/out-tsc/formatter/core/rules/index.js +29 -0
  62. package/out-tsc/formatter/core/rules/index.js.map +1 -0
  63. package/out-tsc/formatter/core/rules/newline-rules.d.ts +169 -0
  64. package/out-tsc/formatter/core/rules/newline-rules.d.ts.map +1 -0
  65. package/out-tsc/formatter/core/rules/newline-rules.js +246 -0
  66. package/out-tsc/formatter/core/rules/newline-rules.js.map +1 -0
  67. package/out-tsc/formatter/core/rules/spacing-rules.d.ts +150 -0
  68. package/out-tsc/formatter/core/rules/spacing-rules.d.ts.map +1 -0
  69. package/out-tsc/formatter/core/rules/spacing-rules.js +219 -0
  70. package/out-tsc/formatter/core/rules/spacing-rules.js.map +1 -0
  71. package/out-tsc/formatter/core/strategy-bridge.d.ts +56 -0
  72. package/out-tsc/formatter/core/strategy-bridge.d.ts.map +1 -0
  73. package/out-tsc/formatter/core/strategy-bridge.js +159 -0
  74. package/out-tsc/formatter/core/strategy-bridge.js.map +1 -0
  75. package/out-tsc/formatter/core/strategy-interface.d.ts +123 -0
  76. package/out-tsc/formatter/core/strategy-interface.d.ts.map +1 -0
  77. package/out-tsc/formatter/core/strategy-interface.js +83 -0
  78. package/out-tsc/formatter/core/strategy-interface.js.map +1 -0
  79. package/out-tsc/formatter/core/token-helper.d.ts +12 -0
  80. package/out-tsc/formatter/core/token-helper.d.ts.map +1 -0
  81. package/out-tsc/formatter/core/token-helper.js +79 -0
  82. package/out-tsc/formatter/core/token-helper.js.map +1 -0
  83. package/out-tsc/formatter/core/unicode-utils.d.ts +107 -0
  84. package/out-tsc/formatter/core/unicode-utils.d.ts.map +1 -0
  85. package/out-tsc/formatter/core/unicode-utils.js +181 -0
  86. package/out-tsc/formatter/core/unicode-utils.js.map +1 -0
  87. package/out-tsc/formatter/core/whitespace-writer.d.ts +20 -0
  88. package/out-tsc/formatter/core/whitespace-writer.d.ts.map +1 -0
  89. package/out-tsc/formatter/core/whitespace-writer.js +86 -0
  90. package/out-tsc/formatter/core/whitespace-writer.js.map +1 -0
  91. package/out-tsc/formatter/formatter-adapter.d.ts +56 -0
  92. package/out-tsc/formatter/formatter-adapter.d.ts.map +1 -0
  93. package/out-tsc/formatter/formatter-adapter.js +719 -0
  94. package/out-tsc/formatter/formatter-adapter.js.map +1 -0
  95. package/out-tsc/formatter/index.d.ts +16 -0
  96. package/out-tsc/formatter/index.d.ts.map +1 -0
  97. package/out-tsc/formatter/index.js +43 -0
  98. package/out-tsc/formatter/index.js.map +1 -0
  99. package/out-tsc/formatter/pipe-step-classifier.d.ts +9 -0
  100. package/out-tsc/formatter/pipe-step-classifier.d.ts.map +1 -0
  101. package/out-tsc/formatter/pipe-step-classifier.js +49 -0
  102. package/out-tsc/formatter/pipe-step-classifier.js.map +1 -0
  103. package/out-tsc/formatter/state.d.ts +10 -0
  104. package/out-tsc/formatter/state.d.ts.map +1 -0
  105. package/out-tsc/formatter/state.js +12 -0
  106. package/out-tsc/formatter/state.js.map +1 -0
  107. package/out-tsc/formatter/strategies/block.strategy.d.ts +191 -0
  108. package/out-tsc/formatter/strategies/block.strategy.d.ts.map +1 -0
  109. package/out-tsc/formatter/strategies/block.strategy.js +238 -0
  110. package/out-tsc/formatter/strategies/block.strategy.js.map +1 -0
  111. package/out-tsc/formatter/strategies/clause-head-body.strategy.d.ts +17 -0
  112. package/out-tsc/formatter/strategies/clause-head-body.strategy.d.ts.map +1 -0
  113. package/out-tsc/formatter/strategies/clause-head-body.strategy.js +13 -0
  114. package/out-tsc/formatter/strategies/clause-head-body.strategy.js.map +1 -0
  115. package/out-tsc/formatter/strategies/ddl/alter-table-extended.strategy.d.ts +68 -0
  116. package/out-tsc/formatter/strategies/ddl/alter-table-extended.strategy.d.ts.map +1 -0
  117. package/out-tsc/formatter/strategies/ddl/alter-table-extended.strategy.js +242 -0
  118. package/out-tsc/formatter/strategies/ddl/alter-table-extended.strategy.js.map +1 -0
  119. package/out-tsc/formatter/strategies/ddl/alter-table.strategy.d.ts +146 -0
  120. package/out-tsc/formatter/strategies/ddl/alter-table.strategy.d.ts.map +1 -0
  121. package/out-tsc/formatter/strategies/ddl/alter-table.strategy.js +578 -0
  122. package/out-tsc/formatter/strategies/ddl/alter-table.strategy.js.map +1 -0
  123. package/out-tsc/formatter/strategies/ddl/create-table.strategy.d.ts +103 -0
  124. package/out-tsc/formatter/strategies/ddl/create-table.strategy.d.ts.map +1 -0
  125. package/out-tsc/formatter/strategies/ddl/create-table.strategy.js +659 -0
  126. package/out-tsc/formatter/strategies/ddl/create-table.strategy.js.map +1 -0
  127. package/out-tsc/formatter/strategies/ddl/create-view-function.strategy.d.ts +64 -0
  128. package/out-tsc/formatter/strategies/ddl/create-view-function.strategy.d.ts.map +1 -0
  129. package/out-tsc/formatter/strategies/ddl/create-view-function.strategy.js +402 -0
  130. package/out-tsc/formatter/strategies/ddl/create-view-function.strategy.js.map +1 -0
  131. package/out-tsc/formatter/strategies/ddl/drop-utility.strategy.d.ts +119 -0
  132. package/out-tsc/formatter/strategies/ddl/drop-utility.strategy.d.ts.map +1 -0
  133. package/out-tsc/formatter/strategies/ddl/drop-utility.strategy.js +863 -0
  134. package/out-tsc/formatter/strategies/ddl/drop-utility.strategy.js.map +1 -0
  135. package/out-tsc/formatter/strategies/ddl/index.d.ts +17 -0
  136. package/out-tsc/formatter/strategies/ddl/index.d.ts.map +1 -0
  137. package/out-tsc/formatter/strategies/ddl/index.js +57 -0
  138. package/out-tsc/formatter/strategies/ddl/index.js.map +1 -0
  139. package/out-tsc/formatter/strategies/ddl/namespace-catalog.strategy.d.ts +26 -0
  140. package/out-tsc/formatter/strategies/ddl/namespace-catalog.strategy.d.ts.map +1 -0
  141. package/out-tsc/formatter/strategies/ddl/namespace-catalog.strategy.js +77 -0
  142. package/out-tsc/formatter/strategies/ddl/namespace-catalog.strategy.js.map +1 -0
  143. package/out-tsc/formatter/strategies/ddl/pipeline.strategy.d.ts +99 -0
  144. package/out-tsc/formatter/strategies/ddl/pipeline.strategy.d.ts.map +1 -0
  145. package/out-tsc/formatter/strategies/ddl/pipeline.strategy.js +385 -0
  146. package/out-tsc/formatter/strategies/ddl/pipeline.strategy.js.map +1 -0
  147. package/out-tsc/formatter/strategies/ddl/set-reset-config.strategy.d.ts +48 -0
  148. package/out-tsc/formatter/strategies/ddl/set-reset-config.strategy.d.ts.map +1 -0
  149. package/out-tsc/formatter/strategies/ddl/set-reset-config.strategy.js +145 -0
  150. package/out-tsc/formatter/strategies/ddl/set-reset-config.strategy.js.map +1 -0
  151. package/out-tsc/formatter/strategies/ddl/show-utility.strategy.d.ts +71 -0
  152. package/out-tsc/formatter/strategies/ddl/show-utility.strategy.d.ts.map +1 -0
  153. package/out-tsc/formatter/strategies/ddl/show-utility.strategy.js +196 -0
  154. package/out-tsc/formatter/strategies/ddl/show-utility.strategy.js.map +1 -0
  155. package/out-tsc/formatter/strategies/dml/index.d.ts +10 -0
  156. package/out-tsc/formatter/strategies/dml/index.d.ts.map +1 -0
  157. package/out-tsc/formatter/strategies/dml/index.js +35 -0
  158. package/out-tsc/formatter/strategies/dml/index.js.map +1 -0
  159. package/out-tsc/formatter/strategies/dml/insert-update-delete.strategy.d.ts +113 -0
  160. package/out-tsc/formatter/strategies/dml/insert-update-delete.strategy.d.ts.map +1 -0
  161. package/out-tsc/formatter/strategies/dml/insert-update-delete.strategy.js +438 -0
  162. package/out-tsc/formatter/strategies/dml/insert-update-delete.strategy.js.map +1 -0
  163. package/out-tsc/formatter/strategies/dml/select-clause.strategy.d.ts +76 -0
  164. package/out-tsc/formatter/strategies/dml/select-clause.strategy.d.ts.map +1 -0
  165. package/out-tsc/formatter/strategies/dml/select-clause.strategy.js +480 -0
  166. package/out-tsc/formatter/strategies/dml/select-clause.strategy.js.map +1 -0
  167. package/out-tsc/formatter/strategies/expression/function-call.strategy.d.ts +50 -0
  168. package/out-tsc/formatter/strategies/expression/function-call.strategy.d.ts.map +1 -0
  169. package/out-tsc/formatter/strategies/expression/function-call.strategy.js +319 -0
  170. package/out-tsc/formatter/strategies/expression/function-call.strategy.js.map +1 -0
  171. package/out-tsc/formatter/strategies/expression/index.d.ts +18 -0
  172. package/out-tsc/formatter/strategies/expression/index.d.ts.map +1 -0
  173. package/out-tsc/formatter/strategies/expression/index.js +51 -0
  174. package/out-tsc/formatter/strategies/expression/index.js.map +1 -0
  175. package/out-tsc/formatter/strategies/expression/logical-comparison.strategy.d.ts +55 -0
  176. package/out-tsc/formatter/strategies/expression/logical-comparison.strategy.d.ts.map +1 -0
  177. package/out-tsc/formatter/strategies/expression/logical-comparison.strategy.js +266 -0
  178. package/out-tsc/formatter/strategies/expression/logical-comparison.strategy.js.map +1 -0
  179. package/out-tsc/formatter/strategies/expression/subquery-parenthesis.strategy.d.ts +38 -0
  180. package/out-tsc/formatter/strategies/expression/subquery-parenthesis.strategy.d.ts.map +1 -0
  181. package/out-tsc/formatter/strategies/expression/subquery-parenthesis.strategy.js +397 -0
  182. package/out-tsc/formatter/strategies/expression/subquery-parenthesis.strategy.js.map +1 -0
  183. package/out-tsc/formatter/strategies/function-call.strategy.d.ts +80 -0
  184. package/out-tsc/formatter/strategies/function-call.strategy.d.ts.map +1 -0
  185. package/out-tsc/formatter/strategies/function-call.strategy.js +136 -0
  186. package/out-tsc/formatter/strategies/function-call.strategy.js.map +1 -0
  187. package/out-tsc/formatter/strategies/index.d.ts +87 -0
  188. package/out-tsc/formatter/strategies/index.d.ts.map +1 -0
  189. package/out-tsc/formatter/strategies/index.js +121 -0
  190. package/out-tsc/formatter/strategies/index.js.map +1 -0
  191. package/out-tsc/formatter/strategies/join.strategy.d.ts +31 -0
  192. package/out-tsc/formatter/strategies/join.strategy.d.ts.map +1 -0
  193. package/out-tsc/formatter/strategies/join.strategy.js +29 -0
  194. package/out-tsc/formatter/strategies/join.strategy.js.map +1 -0
  195. package/out-tsc/formatter/strategies/keyword.strategy.d.ts +82 -0
  196. package/out-tsc/formatter/strategies/keyword.strategy.d.ts.map +1 -0
  197. package/out-tsc/formatter/strategies/keyword.strategy.js +129 -0
  198. package/out-tsc/formatter/strategies/keyword.strategy.js.map +1 -0
  199. package/out-tsc/formatter/strategies/list.strategy.d.ts +159 -0
  200. package/out-tsc/formatter/strategies/list.strategy.d.ts.map +1 -0
  201. package/out-tsc/formatter/strategies/list.strategy.js +193 -0
  202. package/out-tsc/formatter/strategies/list.strategy.js.map +1 -0
  203. package/out-tsc/formatter/strategies/pipe-aggregate.strategy.d.ts +24 -0
  204. package/out-tsc/formatter/strategies/pipe-aggregate.strategy.d.ts.map +1 -0
  205. package/out-tsc/formatter/strategies/pipe-aggregate.strategy.js +47 -0
  206. package/out-tsc/formatter/strategies/pipe-aggregate.strategy.js.map +1 -0
  207. package/out-tsc/formatter/strategies/pipe-drop.strategy.d.ts +21 -0
  208. package/out-tsc/formatter/strategies/pipe-drop.strategy.d.ts.map +1 -0
  209. package/out-tsc/formatter/strategies/pipe-drop.strategy.js +52 -0
  210. package/out-tsc/formatter/strategies/pipe-drop.strategy.js.map +1 -0
  211. package/out-tsc/formatter/strategies/pipe-extend.strategy.d.ts +21 -0
  212. package/out-tsc/formatter/strategies/pipe-extend.strategy.d.ts.map +1 -0
  213. package/out-tsc/formatter/strategies/pipe-extend.strategy.js +45 -0
  214. package/out-tsc/formatter/strategies/pipe-extend.strategy.js.map +1 -0
  215. package/out-tsc/formatter/strategies/pipe-join.strategy.d.ts +22 -0
  216. package/out-tsc/formatter/strategies/pipe-join.strategy.d.ts.map +1 -0
  217. package/out-tsc/formatter/strategies/pipe-join.strategy.js +42 -0
  218. package/out-tsc/formatter/strategies/pipe-join.strategy.js.map +1 -0
  219. package/out-tsc/formatter/strategies/pipe-pivot.strategy.d.ts +7 -0
  220. package/out-tsc/formatter/strategies/pipe-pivot.strategy.d.ts.map +1 -0
  221. package/out-tsc/formatter/strategies/pipe-pivot.strategy.js +34 -0
  222. package/out-tsc/formatter/strategies/pipe-pivot.strategy.js.map +1 -0
  223. package/out-tsc/formatter/strategies/pipe-query-organization.strategy.d.ts +7 -0
  224. package/out-tsc/formatter/strategies/pipe-query-organization.strategy.d.ts.map +1 -0
  225. package/out-tsc/formatter/strategies/pipe-query-organization.strategy.js +14 -0
  226. package/out-tsc/formatter/strategies/pipe-query-organization.strategy.js.map +1 -0
  227. package/out-tsc/formatter/strategies/pipe-sample.strategy.d.ts +7 -0
  228. package/out-tsc/formatter/strategies/pipe-sample.strategy.d.ts.map +1 -0
  229. package/out-tsc/formatter/strategies/pipe-sample.strategy.js +18 -0
  230. package/out-tsc/formatter/strategies/pipe-sample.strategy.js.map +1 -0
  231. package/out-tsc/formatter/strategies/pipe-select.strategy.d.ts +22 -0
  232. package/out-tsc/formatter/strategies/pipe-select.strategy.d.ts.map +1 -0
  233. package/out-tsc/formatter/strategies/pipe-select.strategy.js +51 -0
  234. package/out-tsc/formatter/strategies/pipe-select.strategy.js.map +1 -0
  235. package/out-tsc/formatter/strategies/pipe-set-operation.strategy.d.ts +7 -0
  236. package/out-tsc/formatter/strategies/pipe-set-operation.strategy.d.ts.map +1 -0
  237. package/out-tsc/formatter/strategies/pipe-set-operation.strategy.js +30 -0
  238. package/out-tsc/formatter/strategies/pipe-set-operation.strategy.js.map +1 -0
  239. package/out-tsc/formatter/strategies/pipe-set.strategy.d.ts +21 -0
  240. package/out-tsc/formatter/strategies/pipe-set.strategy.d.ts.map +1 -0
  241. package/out-tsc/formatter/strategies/pipe-set.strategy.js +52 -0
  242. package/out-tsc/formatter/strategies/pipe-set.strategy.js.map +1 -0
  243. package/out-tsc/formatter/strategies/pipe-step.strategy.d.ts +25 -0
  244. package/out-tsc/formatter/strategies/pipe-step.strategy.d.ts.map +1 -0
  245. package/out-tsc/{lib/SparkSqlParserVisitor.js → formatter/strategies/pipe-step.strategy.js} +1 -1
  246. package/out-tsc/formatter/strategies/pipe-step.strategy.js.map +1 -0
  247. package/out-tsc/formatter/strategies/pipe-unpivot.strategy.d.ts +7 -0
  248. package/out-tsc/formatter/strategies/pipe-unpivot.strategy.d.ts.map +1 -0
  249. package/out-tsc/formatter/strategies/pipe-unpivot.strategy.js +33 -0
  250. package/out-tsc/formatter/strategies/pipe-unpivot.strategy.js.map +1 -0
  251. package/out-tsc/formatter/strategies/pipe-where.strategy.d.ts +21 -0
  252. package/out-tsc/formatter/strategies/pipe-where.strategy.d.ts.map +1 -0
  253. package/out-tsc/formatter/strategies/pipe-where.strategy.js +44 -0
  254. package/out-tsc/formatter/strategies/pipe-where.strategy.js.map +1 -0
  255. package/out-tsc/formatter/strategies/procedure/case-statement.strategy.d.ts +20 -0
  256. package/out-tsc/formatter/strategies/procedure/case-statement.strategy.d.ts.map +1 -0
  257. package/out-tsc/formatter/strategies/procedure/case-statement.strategy.js +132 -0
  258. package/out-tsc/formatter/strategies/procedure/case-statement.strategy.js.map +1 -0
  259. package/out-tsc/formatter/strategies/procedure/compound-statement.strategy.d.ts +43 -0
  260. package/out-tsc/formatter/strategies/procedure/compound-statement.strategy.d.ts.map +1 -0
  261. package/out-tsc/formatter/strategies/procedure/compound-statement.strategy.js +174 -0
  262. package/out-tsc/formatter/strategies/procedure/compound-statement.strategy.js.map +1 -0
  263. package/out-tsc/formatter/strategies/procedure/handler.strategy.d.ts +23 -0
  264. package/out-tsc/formatter/strategies/procedure/handler.strategy.d.ts.map +1 -0
  265. package/out-tsc/formatter/strategies/procedure/handler.strategy.js +81 -0
  266. package/out-tsc/formatter/strategies/procedure/handler.strategy.js.map +1 -0
  267. package/out-tsc/formatter/strategies/procedure/if-else.strategy.d.ts +19 -0
  268. package/out-tsc/formatter/strategies/procedure/if-else.strategy.d.ts.map +1 -0
  269. package/out-tsc/formatter/strategies/procedure/if-else.strategy.js +80 -0
  270. package/out-tsc/formatter/strategies/procedure/if-else.strategy.js.map +1 -0
  271. package/out-tsc/formatter/strategies/procedure/index.d.ts +27 -0
  272. package/out-tsc/formatter/strategies/procedure/index.d.ts.map +1 -0
  273. package/out-tsc/formatter/strategies/procedure/index.js +63 -0
  274. package/out-tsc/formatter/strategies/procedure/index.js.map +1 -0
  275. package/out-tsc/formatter/strategies/procedure/leave-iterate.strategy.d.ts +19 -0
  276. package/out-tsc/formatter/strategies/procedure/leave-iterate.strategy.d.ts.map +1 -0
  277. package/out-tsc/formatter/strategies/procedure/leave-iterate.strategy.js +54 -0
  278. package/out-tsc/formatter/strategies/procedure/leave-iterate.strategy.js.map +1 -0
  279. package/out-tsc/formatter/strategies/procedure/loop.strategy.d.ts +71 -0
  280. package/out-tsc/formatter/strategies/procedure/loop.strategy.d.ts.map +1 -0
  281. package/out-tsc/formatter/strategies/procedure/loop.strategy.js +216 -0
  282. package/out-tsc/formatter/strategies/procedure/loop.strategy.js.map +1 -0
  283. package/out-tsc/formatter/strategy-based-formatter.d.ts +329 -0
  284. package/out-tsc/formatter/strategy-based-formatter.d.ts.map +1 -0
  285. package/out-tsc/formatter/strategy-based-formatter.js +3808 -0
  286. package/out-tsc/formatter/strategy-based-formatter.js.map +1 -0
  287. package/out-tsc/formatter/strategy-dispatcher.d.ts +24 -0
  288. package/out-tsc/formatter/strategy-dispatcher.d.ts.map +1 -0
  289. package/out-tsc/formatter/strategy-dispatcher.js +19 -0
  290. package/out-tsc/formatter/strategy-dispatcher.js.map +1 -0
  291. package/out-tsc/formatter/types.d.ts +2 -0
  292. package/out-tsc/formatter/types.d.ts.map +1 -0
  293. package/out-tsc/{lib/SparkSqlParserListener.js → formatter/types.js} +1 -1
  294. package/out-tsc/formatter/types.js.map +1 -0
  295. package/out-tsc/formatter/visitor/ddl/alter-table.d.ts +48 -0
  296. package/out-tsc/formatter/visitor/ddl/alter-table.d.ts.map +1 -0
  297. package/out-tsc/formatter/visitor/ddl/alter-table.js +133 -0
  298. package/out-tsc/formatter/visitor/ddl/alter-table.js.map +1 -0
  299. package/out-tsc/formatter/visitor/ddl/create-table.d.ts +54 -0
  300. package/out-tsc/formatter/visitor/ddl/create-table.d.ts.map +1 -0
  301. package/out-tsc/formatter/visitor/ddl/create-table.js +142 -0
  302. package/out-tsc/formatter/visitor/ddl/create-table.js.map +1 -0
  303. package/out-tsc/formatter/visitor/ddl/create-view.d.ts +27 -0
  304. package/out-tsc/formatter/visitor/ddl/create-view.d.ts.map +1 -0
  305. package/out-tsc/formatter/visitor/ddl/create-view.js +61 -0
  306. package/out-tsc/formatter/visitor/ddl/create-view.js.map +1 -0
  307. package/out-tsc/formatter/visitor/ddl/drop.d.ts +30 -0
  308. package/out-tsc/formatter/visitor/ddl/drop.d.ts.map +1 -0
  309. package/out-tsc/formatter/visitor/ddl/drop.js +69 -0
  310. package/out-tsc/formatter/visitor/ddl/drop.js.map +1 -0
  311. package/out-tsc/formatter/visitor/ddl/index.d.ts +10 -0
  312. package/out-tsc/formatter/visitor/ddl/index.d.ts.map +1 -0
  313. package/out-tsc/formatter/visitor/ddl/index.js +26 -0
  314. package/out-tsc/formatter/visitor/ddl/index.js.map +1 -0
  315. package/out-tsc/formatter/visitor/dml/delete.d.ts +26 -0
  316. package/out-tsc/formatter/visitor/dml/delete.d.ts.map +1 -0
  317. package/out-tsc/formatter/visitor/dml/delete.js +38 -0
  318. package/out-tsc/formatter/visitor/dml/delete.js.map +1 -0
  319. package/out-tsc/formatter/visitor/dml/index.d.ts +10 -0
  320. package/out-tsc/formatter/visitor/dml/index.d.ts.map +1 -0
  321. package/out-tsc/formatter/visitor/dml/index.js +26 -0
  322. package/out-tsc/formatter/visitor/dml/index.js.map +1 -0
  323. package/out-tsc/formatter/visitor/dml/insert.d.ts +42 -0
  324. package/out-tsc/formatter/visitor/dml/insert.d.ts.map +1 -0
  325. package/out-tsc/formatter/visitor/dml/insert.js +112 -0
  326. package/out-tsc/formatter/visitor/dml/insert.js.map +1 -0
  327. package/out-tsc/formatter/visitor/dml/merge.d.ts +40 -0
  328. package/out-tsc/formatter/visitor/dml/merge.d.ts.map +1 -0
  329. package/out-tsc/formatter/visitor/dml/merge.js +67 -0
  330. package/out-tsc/formatter/visitor/dml/merge.js.map +1 -0
  331. package/out-tsc/formatter/visitor/dml/update.d.ts +33 -0
  332. package/out-tsc/formatter/visitor/dml/update.d.ts.map +1 -0
  333. package/out-tsc/formatter/visitor/dml/update.js +49 -0
  334. package/out-tsc/formatter/visitor/dml/update.js.map +1 -0
  335. package/out-tsc/formatter/visitor/expression/arithmetic.d.ts +20 -0
  336. package/out-tsc/formatter/visitor/expression/arithmetic.d.ts.map +1 -0
  337. package/out-tsc/formatter/visitor/expression/arithmetic.js +44 -0
  338. package/out-tsc/formatter/visitor/expression/arithmetic.js.map +1 -0
  339. package/out-tsc/formatter/visitor/expression/case-when.d.ts +41 -0
  340. package/out-tsc/formatter/visitor/expression/case-when.d.ts.map +1 -0
  341. package/out-tsc/formatter/visitor/expression/case-when.js +94 -0
  342. package/out-tsc/formatter/visitor/expression/case-when.js.map +1 -0
  343. package/out-tsc/formatter/visitor/expression/comparison.d.ts +20 -0
  344. package/out-tsc/formatter/visitor/expression/comparison.d.ts.map +1 -0
  345. package/out-tsc/formatter/visitor/expression/comparison.js +26 -0
  346. package/out-tsc/formatter/visitor/expression/comparison.js.map +1 -0
  347. package/out-tsc/formatter/visitor/expression/function-call.d.ts +20 -0
  348. package/out-tsc/formatter/visitor/expression/function-call.d.ts.map +1 -0
  349. package/out-tsc/formatter/visitor/expression/function-call.js +33 -0
  350. package/out-tsc/formatter/visitor/expression/function-call.js.map +1 -0
  351. package/out-tsc/formatter/visitor/expression/index.d.ts +11 -0
  352. package/out-tsc/formatter/visitor/expression/index.d.ts.map +1 -0
  353. package/out-tsc/formatter/visitor/expression/index.js +27 -0
  354. package/out-tsc/formatter/visitor/expression/index.js.map +1 -0
  355. package/out-tsc/formatter/visitor/expression/logical.d.ts +26 -0
  356. package/out-tsc/formatter/visitor/expression/logical.d.ts.map +1 -0
  357. package/out-tsc/formatter/visitor/expression/logical.js +46 -0
  358. package/out-tsc/formatter/visitor/expression/logical.js.map +1 -0
  359. package/out-tsc/formatter/visitor/formatter-core.d.ts +79 -0
  360. package/out-tsc/formatter/visitor/formatter-core.d.ts.map +1 -0
  361. package/out-tsc/formatter/visitor/formatter-core.js +211 -0
  362. package/out-tsc/formatter/visitor/formatter-core.js.map +1 -0
  363. package/out-tsc/formatter/visitor/index.d.ts +21 -0
  364. package/out-tsc/formatter/visitor/index.d.ts.map +1 -0
  365. package/out-tsc/formatter/visitor/index.js +26 -0
  366. package/out-tsc/formatter/visitor/index.js.map +1 -0
  367. package/out-tsc/formatter/visitor/management/cache.d.ts +26 -0
  368. package/out-tsc/formatter/visitor/management/cache.d.ts.map +1 -0
  369. package/out-tsc/formatter/visitor/management/cache.js +58 -0
  370. package/out-tsc/formatter/visitor/management/cache.js.map +1 -0
  371. package/out-tsc/formatter/visitor/management/index.d.ts +8 -0
  372. package/out-tsc/formatter/visitor/management/index.d.ts.map +1 -0
  373. package/out-tsc/formatter/visitor/management/index.js +24 -0
  374. package/out-tsc/formatter/visitor/management/index.js.map +1 -0
  375. package/out-tsc/formatter/visitor/management/refresh.d.ts +26 -0
  376. package/out-tsc/formatter/visitor/management/refresh.d.ts.map +1 -0
  377. package/out-tsc/formatter/visitor/management/refresh.js +55 -0
  378. package/out-tsc/formatter/visitor/management/refresh.js.map +1 -0
  379. package/out-tsc/formatter/visitor/pipeline/delta-live-tables.d.ts +31 -0
  380. package/out-tsc/formatter/visitor/pipeline/delta-live-tables.d.ts.map +1 -0
  381. package/out-tsc/formatter/visitor/pipeline/delta-live-tables.js +46 -0
  382. package/out-tsc/formatter/visitor/pipeline/delta-live-tables.js.map +1 -0
  383. package/out-tsc/formatter/visitor/pipeline/index.d.ts +7 -0
  384. package/out-tsc/formatter/visitor/pipeline/index.d.ts.map +1 -0
  385. package/out-tsc/formatter/visitor/pipeline/index.js +23 -0
  386. package/out-tsc/formatter/visitor/pipeline/index.js.map +1 -0
  387. package/out-tsc/formatter/visitor/query/cte.d.ts +34 -0
  388. package/out-tsc/formatter/visitor/query/cte.d.ts.map +1 -0
  389. package/out-tsc/formatter/visitor/query/cte.js +54 -0
  390. package/out-tsc/formatter/visitor/query/cte.js.map +1 -0
  391. package/out-tsc/formatter/visitor/query/index.d.ts +11 -0
  392. package/out-tsc/formatter/visitor/query/index.d.ts.map +1 -0
  393. package/out-tsc/formatter/visitor/query/index.js +27 -0
  394. package/out-tsc/formatter/visitor/query/index.js.map +1 -0
  395. package/out-tsc/formatter/visitor/query/query-organization.d.ts +25 -0
  396. package/out-tsc/formatter/visitor/query/query-organization.d.ts.map +1 -0
  397. package/out-tsc/formatter/visitor/query/query-organization.js +75 -0
  398. package/out-tsc/formatter/visitor/query/query-organization.js.map +1 -0
  399. package/out-tsc/formatter/visitor/query/query.d.ts +22 -0
  400. package/out-tsc/formatter/visitor/query/query.d.ts.map +1 -0
  401. package/out-tsc/formatter/visitor/query/query.js +30 -0
  402. package/out-tsc/formatter/visitor/query/query.js.map +1 -0
  403. package/out-tsc/formatter/visitor/query/select-clause.d.ts +17 -0
  404. package/out-tsc/formatter/visitor/query/select-clause.d.ts.map +1 -0
  405. package/out-tsc/formatter/visitor/query/select-clause.js +35 -0
  406. package/out-tsc/formatter/visitor/query/select-clause.js.map +1 -0
  407. package/out-tsc/formatter/visitor/query/set-operation.d.ts +25 -0
  408. package/out-tsc/formatter/visitor/query/set-operation.d.ts.map +1 -0
  409. package/out-tsc/formatter/visitor/query/set-operation.js +52 -0
  410. package/out-tsc/formatter/visitor/query/set-operation.js.map +1 -0
  411. package/out-tsc/formatter/visitor/statements/index.d.ts +7 -0
  412. package/out-tsc/formatter/visitor/statements/index.d.ts.map +1 -0
  413. package/out-tsc/formatter/visitor/statements/index.js +23 -0
  414. package/out-tsc/formatter/visitor/statements/index.js.map +1 -0
  415. package/out-tsc/formatter/visitor/statements/program.d.ts +33 -0
  416. package/out-tsc/formatter/visitor/statements/program.d.ts.map +1 -0
  417. package/out-tsc/formatter/visitor/statements/program.js +69 -0
  418. package/out-tsc/formatter/visitor/statements/program.js.map +1 -0
  419. package/out-tsc/formatter/visitor/types/complex-types.d.ts +24 -0
  420. package/out-tsc/formatter/visitor/types/complex-types.d.ts.map +1 -0
  421. package/out-tsc/formatter/visitor/types/complex-types.js +47 -0
  422. package/out-tsc/formatter/visitor/types/complex-types.js.map +1 -0
  423. package/out-tsc/formatter/visitor/types/index.d.ts +8 -0
  424. package/out-tsc/formatter/visitor/types/index.d.ts.map +1 -0
  425. package/out-tsc/formatter/visitor/types/index.js +24 -0
  426. package/out-tsc/formatter/visitor/types/index.js.map +1 -0
  427. package/out-tsc/formatter/visitor/types/primitive-types.d.ts +22 -0
  428. package/out-tsc/formatter/visitor/types/primitive-types.d.ts.map +1 -0
  429. package/out-tsc/formatter/visitor/types/primitive-types.js +37 -0
  430. package/out-tsc/formatter/visitor/types/primitive-types.js.map +1 -0
  431. package/out-tsc/formatter/visitor/utils/context-helpers.d.ts +32 -0
  432. package/out-tsc/formatter/visitor/utils/context-helpers.d.ts.map +1 -0
  433. package/out-tsc/formatter/visitor/utils/context-helpers.js +98 -0
  434. package/out-tsc/formatter/visitor/utils/context-helpers.js.map +1 -0
  435. package/out-tsc/formatter/visitor/utils/index.d.ts +11 -0
  436. package/out-tsc/formatter/visitor/utils/index.d.ts.map +1 -0
  437. package/out-tsc/formatter/visitor/utils/index.js +45 -0
  438. package/out-tsc/formatter/visitor/utils/index.js.map +1 -0
  439. package/out-tsc/formatter/visitor/utils/keyword-formatting.d.ts +57 -0
  440. package/out-tsc/formatter/visitor/utils/keyword-formatting.d.ts.map +1 -0
  441. package/out-tsc/formatter/visitor/utils/keyword-formatting.js +87 -0
  442. package/out-tsc/formatter/visitor/utils/keyword-formatting.js.map +1 -0
  443. package/out-tsc/formatter/visitor/utils/parenthesis-formatting.d.ts +53 -0
  444. package/out-tsc/formatter/visitor/utils/parenthesis-formatting.d.ts.map +1 -0
  445. package/out-tsc/formatter/visitor/utils/parenthesis-formatting.js +88 -0
  446. package/out-tsc/formatter/visitor/utils/parenthesis-formatting.js.map +1 -0
  447. package/out-tsc/formatter/visitor/utils/space-compression.d.ts +55 -0
  448. package/out-tsc/formatter/visitor/utils/space-compression.d.ts.map +1 -0
  449. package/out-tsc/formatter/visitor/utils/space-compression.js +71 -0
  450. package/out-tsc/formatter/visitor/utils/space-compression.js.map +1 -0
  451. package/out-tsc/formatter/visitor/utils/token-helpers.d.ts +64 -0
  452. package/out-tsc/formatter/visitor/utils/token-helpers.d.ts.map +1 -0
  453. package/out-tsc/formatter/visitor/utils/token-helpers.js +249 -0
  454. package/out-tsc/formatter/visitor/utils/token-helpers.js.map +1 -0
  455. package/out-tsc/index.d.ts +2 -1
  456. package/out-tsc/index.d.ts.map +1 -0
  457. package/out-tsc/index.js +3 -1
  458. package/out-tsc/index.js.map +1 -1
  459. package/out-tsc/lib/SparkSQLLexer.d.ts +557 -0
  460. package/out-tsc/lib/SparkSQLLexer.d.ts.map +1 -0
  461. package/out-tsc/lib/SparkSQLLexer.js +3676 -0
  462. package/out-tsc/lib/SparkSQLLexer.js.map +1 -0
  463. package/out-tsc/lib/SparkSQLParser.d.ts +7884 -0
  464. package/out-tsc/lib/SparkSQLParser.d.ts.map +1 -0
  465. package/out-tsc/lib/SparkSQLParser.js +45848 -0
  466. package/out-tsc/lib/SparkSQLParser.js.map +1 -0
  467. package/out-tsc/lib/SparkSQLParserListener.d.ts +5855 -0
  468. package/out-tsc/lib/SparkSQLParserListener.d.ts.map +1 -0
  469. package/out-tsc/lib/SparkSQLParserListener.js +4 -0
  470. package/out-tsc/lib/SparkSQLParserListener.js.map +1 -0
  471. package/out-tsc/lib/SparkSQLParserVisitor.d.ts +3674 -0
  472. package/out-tsc/lib/SparkSQLParserVisitor.d.ts.map +1 -0
  473. package/out-tsc/lib/SparkSQLParserVisitor.js +4 -0
  474. package/out-tsc/lib/SparkSQLParserVisitor.js.map +1 -0
  475. package/out-tsc/lineage.typing.d.ts +64 -0
  476. package/out-tsc/lineage.typing.d.ts.map +1 -0
  477. package/out-tsc/lineage.typing.js +3 -0
  478. package/out-tsc/lineage.typing.js.map +1 -0
  479. package/out-tsc/listeners/parse-error.listener.d.ts +3 -2
  480. package/out-tsc/listeners/parse-error.listener.d.ts.map +1 -0
  481. package/out-tsc/listeners/parse-error.listener.js +4 -4
  482. package/out-tsc/listeners/parse-error.listener.js.map +1 -1
  483. package/out-tsc/listeners/schema.listener.d.ts +32 -39
  484. package/out-tsc/listeners/schema.listener.d.ts.map +1 -0
  485. package/out-tsc/listeners/schema.listener.js +58 -100
  486. package/out-tsc/listeners/schema.listener.js.map +1 -1
  487. package/out-tsc/listeners/statement.listener.d.ts +263 -5
  488. package/out-tsc/listeners/statement.listener.d.ts.map +1 -0
  489. package/out-tsc/listeners/statement.listener.js +836 -11
  490. package/out-tsc/listeners/statement.listener.js.map +1 -1
  491. package/out-tsc/listeners/structure.listener.d.ts +70 -0
  492. package/out-tsc/listeners/structure.listener.d.ts.map +1 -0
  493. package/out-tsc/listeners/structure.listener.js +211 -0
  494. package/out-tsc/listeners/structure.listener.js.map +1 -0
  495. package/out-tsc/listeners/tokens-collector.listener.d.ts +27 -0
  496. package/out-tsc/listeners/tokens-collector.listener.d.ts.map +1 -0
  497. package/out-tsc/listeners/tokens-collector.listener.js +102 -0
  498. package/out-tsc/listeners/tokens-collector.listener.js.map +1 -0
  499. package/out-tsc/lsp-server.d.ts +79 -8
  500. package/out-tsc/lsp-server.d.ts.map +1 -0
  501. package/out-tsc/lsp-server.js +672 -237
  502. package/out-tsc/lsp-server.js.map +1 -1
  503. package/out-tsc/metadata.typing.d.ts +1 -0
  504. package/out-tsc/metadata.typing.d.ts.map +1 -0
  505. package/out-tsc/monaco-config.d.ts +219 -0
  506. package/out-tsc/monaco-config.d.ts.map +1 -0
  507. package/out-tsc/monaco-config.js +1032 -0
  508. package/out-tsc/monaco-config.js.map +1 -0
  509. package/out-tsc/parsing-warehouse.d.ts +8 -3
  510. package/out-tsc/parsing-warehouse.d.ts.map +1 -0
  511. package/out-tsc/parsing-warehouse.js +62 -6
  512. package/out-tsc/parsing-warehouse.js.map +1 -1
  513. package/out-tsc/protocol-translation.d.ts +12 -5
  514. package/out-tsc/protocol-translation.d.ts.map +1 -0
  515. package/out-tsc/protocol-translation.js +72 -19
  516. package/out-tsc/protocol-translation.js.map +1 -1
  517. package/out-tsc/public-apis.d.ts +1 -0
  518. package/out-tsc/public-apis.d.ts.map +1 -0
  519. package/out-tsc/schema-registry.d.ts +10 -7
  520. package/out-tsc/schema-registry.d.ts.map +1 -0
  521. package/out-tsc/schema-registry.js +87 -106
  522. package/out-tsc/schema-registry.js.map +1 -1
  523. package/out-tsc/server-worker.d.ts +1 -0
  524. package/out-tsc/server-worker.d.ts.map +1 -0
  525. package/out-tsc/server-worker.js +159 -44
  526. package/out-tsc/server-worker.js.map +1 -1
  527. package/out-tsc/tests/folding/block-comment-folding.test.d.ts +7 -0
  528. package/out-tsc/tests/folding/block-comment-folding.test.d.ts.map +1 -0
  529. package/out-tsc/tests/folding/block-comment-folding.test.js +268 -0
  530. package/out-tsc/tests/folding/block-comment-folding.test.js.map +1 -0
  531. package/out-tsc/tests/folding/caching.test.d.ts +11 -0
  532. package/out-tsc/tests/folding/caching.test.d.ts.map +1 -0
  533. package/out-tsc/tests/folding/caching.test.js +141 -0
  534. package/out-tsc/tests/folding/caching.test.js.map +1 -0
  535. package/out-tsc/tests/folding/cte-dependency-chain.test.d.ts +15 -0
  536. package/out-tsc/tests/folding/cte-dependency-chain.test.d.ts.map +1 -0
  537. package/out-tsc/tests/folding/cte-dependency-chain.test.js +323 -0
  538. package/out-tsc/tests/folding/cte-dependency-chain.test.js.map +1 -0
  539. package/out-tsc/tests/folding/debug-format-flow.test.d.ts +2 -0
  540. package/out-tsc/tests/folding/debug-format-flow.test.d.ts.map +1 -0
  541. package/out-tsc/tests/folding/debug-format-flow.test.js +114 -0
  542. package/out-tsc/tests/folding/debug-format-flow.test.js.map +1 -0
  543. package/out-tsc/tests/folding/debug-formatted.test.d.ts +2 -0
  544. package/out-tsc/tests/folding/debug-formatted.test.d.ts.map +1 -0
  545. package/out-tsc/tests/folding/debug-formatted.test.js +175 -0
  546. package/out-tsc/tests/folding/debug-formatted.test.js.map +1 -0
  547. package/out-tsc/tests/folding/deduplication.test.d.ts +10 -0
  548. package/out-tsc/tests/folding/deduplication.test.d.ts.map +1 -0
  549. package/out-tsc/tests/folding/deduplication.test.js +206 -0
  550. package/out-tsc/tests/folding/deduplication.test.js.map +1 -0
  551. package/out-tsc/tests/folding/edge-cases.test.d.ts +8 -0
  552. package/out-tsc/tests/folding/edge-cases.test.d.ts.map +1 -0
  553. package/out-tsc/tests/folding/edge-cases.test.js +319 -0
  554. package/out-tsc/tests/folding/edge-cases.test.js.map +1 -0
  555. package/out-tsc/tests/folding/folding-level-config.test.d.ts +11 -0
  556. package/out-tsc/tests/folding/folding-level-config.test.d.ts.map +1 -0
  557. package/out-tsc/tests/folding/folding-level-config.test.js +313 -0
  558. package/out-tsc/tests/folding/folding-level-config.test.js.map +1 -0
  559. package/out-tsc/tests/folding/folding-statistics.test.d.ts +13 -0
  560. package/out-tsc/tests/folding/folding-statistics.test.d.ts.map +1 -0
  561. package/out-tsc/tests/folding/folding-statistics.test.js +144 -0
  562. package/out-tsc/tests/folding/folding-statistics.test.js.map +1 -0
  563. package/out-tsc/tests/folding/index.d.ts +8 -0
  564. package/out-tsc/tests/folding/index.d.ts.map +1 -0
  565. package/out-tsc/tests/folding/index.js +24 -0
  566. package/out-tsc/tests/folding/index.js.map +1 -0
  567. package/out-tsc/tests/folding/join-folding.test.d.ts +11 -0
  568. package/out-tsc/tests/folding/join-folding.test.d.ts.map +1 -0
  569. package/out-tsc/tests/folding/join-folding.test.js +167 -0
  570. package/out-tsc/tests/folding/join-folding.test.js.map +1 -0
  571. package/out-tsc/tests/folding/kind-classification.test.d.ts +11 -0
  572. package/out-tsc/tests/folding/kind-classification.test.d.ts.map +1 -0
  573. package/out-tsc/tests/folding/kind-classification.test.js +270 -0
  574. package/out-tsc/tests/folding/kind-classification.test.js.map +1 -0
  575. package/out-tsc/tests/folding/level1-statement.test.d.ts +8 -0
  576. package/out-tsc/tests/folding/level1-statement.test.d.ts.map +1 -0
  577. package/out-tsc/tests/folding/level1-statement.test.js +278 -0
  578. package/out-tsc/tests/folding/level1-statement.test.js.map +1 -0
  579. package/out-tsc/tests/folding/level2-query-block.test.d.ts +8 -0
  580. package/out-tsc/tests/folding/level2-query-block.test.d.ts.map +1 -0
  581. package/out-tsc/tests/folding/level2-query-block.test.js +374 -0
  582. package/out-tsc/tests/folding/level2-query-block.test.js.map +1 -0
  583. package/out-tsc/tests/folding/level3-expression.test.d.ts +8 -0
  584. package/out-tsc/tests/folding/level3-expression.test.d.ts.map +1 -0
  585. package/out-tsc/tests/folding/level3-expression.test.js +361 -0
  586. package/out-tsc/tests/folding/level3-expression.test.js.map +1 -0
  587. package/out-tsc/tests/folding/level4-structure.test.d.ts +8 -0
  588. package/out-tsc/tests/folding/level4-structure.test.d.ts.map +1 -0
  589. package/out-tsc/tests/folding/level4-structure.test.js +270 -0
  590. package/out-tsc/tests/folding/level4-structure.test.js.map +1 -0
  591. package/out-tsc/tests/folding/line-comment-folding.test.d.ts +13 -0
  592. package/out-tsc/tests/folding/line-comment-folding.test.d.ts.map +1 -0
  593. package/out-tsc/tests/folding/line-comment-folding.test.js +215 -0
  594. package/out-tsc/tests/folding/line-comment-folding.test.js.map +1 -0
  595. package/out-tsc/tests/folding/nested-folding.test.d.ts +8 -0
  596. package/out-tsc/tests/folding/nested-folding.test.d.ts.map +1 -0
  597. package/out-tsc/tests/folding/nested-folding.test.js +386 -0
  598. package/out-tsc/tests/folding/nested-folding.test.js.map +1 -0
  599. package/out-tsc/tests/folding/performance-benchmark.test.d.ts +11 -0
  600. package/out-tsc/tests/folding/performance-benchmark.test.d.ts.map +1 -0
  601. package/out-tsc/tests/folding/performance-benchmark.test.js +256 -0
  602. package/out-tsc/tests/folding/performance-benchmark.test.js.map +1 -0
  603. package/out-tsc/tests/folding/region-marker-folding.test.d.ts +11 -0
  604. package/out-tsc/tests/folding/region-marker-folding.test.d.ts.map +1 -0
  605. package/out-tsc/tests/folding/region-marker-folding.test.js +245 -0
  606. package/out-tsc/tests/folding/region-marker-folding.test.js.map +1 -0
  607. package/out-tsc/tests/folding/select-columns-folding.test.d.ts +10 -0
  608. package/out-tsc/tests/folding/select-columns-folding.test.d.ts.map +1 -0
  609. package/out-tsc/tests/folding/select-columns-folding.test.js +139 -0
  610. package/out-tsc/tests/folding/select-columns-folding.test.js.map +1 -0
  611. package/out-tsc/tests/folding/test-utils.d.ts +73 -0
  612. package/out-tsc/tests/folding/test-utils.d.ts.map +1 -0
  613. package/out-tsc/tests/folding/test-utils.js +98 -0
  614. package/out-tsc/tests/folding/test-utils.js.map +1 -0
  615. package/out-tsc/tests/folding/values-folding.test.d.ts +10 -0
  616. package/out-tsc/tests/folding/values-folding.test.d.ts.map +1 -0
  617. package/out-tsc/tests/folding/values-folding.test.js +102 -0
  618. package/out-tsc/tests/folding/values-folding.test.js.map +1 -0
  619. package/out-tsc/tests/format/ddl/datatype-constraint.test.d.ts +5 -0
  620. package/out-tsc/tests/format/ddl/datatype-constraint.test.d.ts.map +1 -0
  621. package/out-tsc/tests/format/ddl/datatype-constraint.test.js +132 -0
  622. package/out-tsc/tests/format/ddl/datatype-constraint.test.js.map +1 -0
  623. package/out-tsc/tests/format/ddl/index.test.d.ts +5 -0
  624. package/out-tsc/tests/format/ddl/index.test.d.ts.map +1 -0
  625. package/out-tsc/tests/format/ddl/index.test.js +74 -0
  626. package/out-tsc/tests/format/ddl/index.test.js.map +1 -0
  627. package/out-tsc/tests/format/ddl/materialized-view.test.d.ts +5 -0
  628. package/out-tsc/tests/format/ddl/materialized-view.test.d.ts.map +1 -0
  629. package/out-tsc/tests/format/ddl/materialized-view.test.js +92 -0
  630. package/out-tsc/tests/format/ddl/materialized-view.test.js.map +1 -0
  631. package/out-tsc/tests/format/ddl/partition.test.d.ts +5 -0
  632. package/out-tsc/tests/format/ddl/partition.test.d.ts.map +1 -0
  633. package/out-tsc/tests/format/ddl/partition.test.js +109 -0
  634. package/out-tsc/tests/format/ddl/partition.test.js.map +1 -0
  635. package/out-tsc/tests/format/ddl/variable.test.d.ts +5 -0
  636. package/out-tsc/tests/format/ddl/variable.test.d.ts.map +1 -0
  637. package/out-tsc/tests/format/ddl/variable.test.js +58 -0
  638. package/out-tsc/tests/format/ddl/variable.test.js.map +1 -0
  639. package/out-tsc/tests/format/dml/select.test.d.ts +5 -0
  640. package/out-tsc/tests/format/dml/select.test.d.ts.map +1 -0
  641. package/out-tsc/tests/format/dml/select.test.js +114 -0
  642. package/out-tsc/tests/format/dml/select.test.js.map +1 -0
  643. package/out-tsc/tests/format/dml/subquery.test.d.ts +5 -0
  644. package/out-tsc/tests/format/dml/subquery.test.d.ts.map +1 -0
  645. package/out-tsc/tests/format/dml/subquery.test.js +221 -0
  646. package/out-tsc/tests/format/dml/subquery.test.js.map +1 -0
  647. package/out-tsc/tests/format/dql/comment.test.d.ts +7 -0
  648. package/out-tsc/tests/format/dql/comment.test.d.ts.map +1 -0
  649. package/out-tsc/tests/format/dql/comment.test.js +279 -0
  650. package/out-tsc/tests/format/dql/comment.test.js.map +1 -0
  651. package/out-tsc/tests/format/dql/cte.test.d.ts +7 -0
  652. package/out-tsc/tests/format/dql/cte.test.d.ts.map +1 -0
  653. package/out-tsc/tests/format/dql/cte.test.js +31 -0
  654. package/out-tsc/tests/format/dql/cte.test.js.map +1 -0
  655. package/out-tsc/tests/format/dql/dql-detail.test.d.ts +5 -0
  656. package/out-tsc/tests/format/dql/dql-detail.test.d.ts.map +1 -0
  657. package/out-tsc/tests/format/dql/dql-detail.test.js +191 -0
  658. package/out-tsc/tests/format/dql/dql-detail.test.js.map +1 -0
  659. package/out-tsc/tests/format/dql/lateral-view.test.d.ts +7 -0
  660. package/out-tsc/tests/format/dql/lateral-view.test.d.ts.map +1 -0
  661. package/out-tsc/tests/format/dql/lateral-view.test.js +34 -0
  662. package/out-tsc/tests/format/dql/lateral-view.test.js.map +1 -0
  663. package/out-tsc/tests/format/dql/pivot.test.d.ts +7 -0
  664. package/out-tsc/tests/format/dql/pivot.test.d.ts.map +1 -0
  665. package/out-tsc/tests/format/dql/pivot.test.js +56 -0
  666. package/out-tsc/tests/format/dql/pivot.test.js.map +1 -0
  667. package/out-tsc/tests/format/dql/window.test.d.ts +7 -0
  668. package/out-tsc/tests/format/dql/window.test.d.ts.map +1 -0
  669. package/out-tsc/tests/format/dql/window.test.js +89 -0
  670. package/out-tsc/tests/format/dql/window.test.js.map +1 -0
  671. package/out-tsc/tests/format/expression/expression.test.d.ts +5 -0
  672. package/out-tsc/tests/format/expression/expression.test.d.ts.map +1 -0
  673. package/out-tsc/tests/format/expression/expression.test.js +203 -0
  674. package/out-tsc/tests/format/expression/expression.test.js.map +1 -0
  675. package/out-tsc/tests/format/pipe/pipe-operator.test.d.ts +5 -0
  676. package/out-tsc/tests/format/pipe/pipe-operator.test.d.ts.map +1 -0
  677. package/out-tsc/tests/format/pipe/pipe-operator.test.js +290 -0
  678. package/out-tsc/tests/format/pipe/pipe-operator.test.js.map +1 -0
  679. package/out-tsc/tests/format/procedure/compound-statement.test.d.ts +16 -0
  680. package/out-tsc/tests/format/procedure/compound-statement.test.d.ts.map +1 -0
  681. package/out-tsc/tests/format/procedure/compound-statement.test.js +254 -0
  682. package/out-tsc/tests/format/procedure/compound-statement.test.js.map +1 -0
  683. package/out-tsc/tests/format/resource/resource.test.d.ts +5 -0
  684. package/out-tsc/tests/format/resource/resource.test.d.ts.map +1 -0
  685. package/out-tsc/tests/format/resource/resource.test.js +69 -0
  686. package/out-tsc/tests/format/resource/resource.test.js.map +1 -0
  687. package/out-tsc/tests/format/test-utils.d.ts +40 -0
  688. package/out-tsc/tests/format/test-utils.d.ts.map +1 -0
  689. package/out-tsc/tests/format/test-utils.js +53 -0
  690. package/out-tsc/tests/format/test-utils.js.map +1 -0
  691. package/out-tsc/tests/lsp-server.test.d.ts +2 -0
  692. package/out-tsc/tests/lsp-server.test.d.ts.map +1 -0
  693. package/out-tsc/tests/lsp-server.test.js +1525 -0
  694. package/out-tsc/tests/lsp-server.test.js.map +1 -0
  695. package/out-tsc/tests/spark-sql-inputs.test.d.ts +17 -0
  696. package/out-tsc/tests/spark-sql-inputs.test.d.ts.map +1 -0
  697. package/out-tsc/tests/spark-sql-inputs.test.js +570 -0
  698. package/out-tsc/tests/spark-sql-inputs.test.js.map +1 -0
  699. package/out-tsc/tests/validation.test.d.ts +2 -0
  700. package/out-tsc/tests/validation.test.d.ts.map +1 -0
  701. package/out-tsc/tests/validation.test.js +115 -0
  702. package/out-tsc/tests/validation.test.js.map +1 -0
  703. package/out-tsc/typings.d.ts +115 -1
  704. package/out-tsc/typings.d.ts.map +1 -0
  705. package/out-tsc/typings.js +28 -0
  706. package/out-tsc/typings.js.map +1 -1
  707. package/out-tsc/utils.d.ts +1 -0
  708. package/out-tsc/utils.d.ts.map +1 -0
  709. package/out-tsc/utils.js +4 -5
  710. package/out-tsc/utils.js.map +1 -1
  711. package/out-tsc/visitors/completion.visitor.d.ts +85 -0
  712. package/out-tsc/visitors/completion.visitor.d.ts.map +1 -0
  713. package/out-tsc/visitors/completion.visitor.js +379 -0
  714. package/out-tsc/visitors/completion.visitor.js.map +1 -0
  715. package/out-tsc/visitors/lineage.visitor.d.ts +34 -0
  716. package/out-tsc/visitors/lineage.visitor.d.ts.map +1 -0
  717. package/out-tsc/visitors/lineage.visitor.js +181 -0
  718. package/out-tsc/visitors/lineage.visitor.js.map +1 -0
  719. package/out-tsc/visitors/space-replacer-format.visitor.d.ts +1641 -0
  720. package/out-tsc/visitors/space-replacer-format.visitor.d.ts.map +1 -0
  721. package/out-tsc/visitors/space-replacer-format.visitor.js +7529 -0
  722. package/out-tsc/visitors/space-replacer-format.visitor.js.map +1 -0
  723. package/out-tsc/visitors/sparksql-relation.visitor.d.ts +154 -0
  724. package/out-tsc/visitors/sparksql-relation.visitor.d.ts.map +1 -0
  725. package/out-tsc/visitors/sparksql-relation.visitor.js +749 -0
  726. package/out-tsc/visitors/sparksql-relation.visitor.js.map +1 -0
  727. package/package.json +36 -9
  728. package/out-tsc/constant.d.ts +0 -3
  729. package/out-tsc/constant.js +0 -7
  730. package/out-tsc/constant.js.map +0 -1
  731. package/out-tsc/lib/SparkSqlLexer.d.ts +0 -421
  732. package/out-tsc/lib/SparkSqlLexer.js +0 -2750
  733. package/out-tsc/lib/SparkSqlLexer.js.map +0 -1
  734. package/out-tsc/lib/SparkSqlParser.d.ts +0 -6203
  735. package/out-tsc/lib/SparkSqlParser.js +0 -34733
  736. package/out-tsc/lib/SparkSqlParser.js.map +0 -1
  737. package/out-tsc/lib/SparkSqlParserListener.d.ts +0 -1158
  738. package/out-tsc/lib/SparkSqlParserListener.js.map +0 -1
  739. package/out-tsc/lib/SparkSqlParserVisitor.d.ts +0 -773
  740. package/out-tsc/lib/SparkSqlParserVisitor.js.map +0 -1
@@ -15,29 +15,854 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.StatementListener = void 0;
37
+ /* --------------------------------------------------------------------------------------------
38
+ * Copyright (c) Microsoft Corporation. All rights reserved.
39
+ * Licensed under the MIT License. See License.txt in the project root for license information.
40
+ * ------------------------------------------------------------------------------------------ */
41
+ const antlr4ts_1 = require("antlr4ts");
27
42
  const lsp = __importStar(require("vscode-languageserver"));
43
+ const SparkSQLLexer_1 = require("../lib/SparkSQLLexer");
44
+ /**
45
+ * Internal level tags for filtering folding ranges
46
+ * These map to the public FoldingLevel type but are used internally
47
+ */
48
+ var FoldingLevelTag;
49
+ (function (FoldingLevelTag) {
50
+ FoldingLevelTag[FoldingLevelTag["Statement"] = 1] = "Statement";
51
+ FoldingLevelTag[FoldingLevelTag["Query"] = 2] = "Query";
52
+ FoldingLevelTag[FoldingLevelTag["Expression"] = 3] = "Expression";
53
+ FoldingLevelTag[FoldingLevelTag["Other"] = 4] = "Other"; // 其他 (comments, regions, JOIN blocks, column lists)
54
+ })(FoldingLevelTag || (FoldingLevelTag = {}));
55
+ /**
56
+ * StatementListener - 用于代码折叠的语句监听器
57
+ *
58
+ * 折叠范围(按照 SQL 代码编辑器常用折叠规范):
59
+ *
60
+ * 1. Statement 级别(84种 DDL/DML/DQL 语句)- 逐一注册
61
+ * 2. Query 级别 - CTE、子查询
62
+ * 3. 复杂表达式级别 - CASE WHEN、窗口定义等
63
+ * 4. 注释级别 - 多行 block 注释
64
+ *
65
+ * 注意:单行语句不折叠,只对跨多行的代码块进行折叠。
66
+ */
28
67
  class StatementListener {
29
- constructor(document) {
68
+ constructor(document, level = 'all', enableCTEChain = false) {
30
69
  this.document = document;
31
70
  this.ranges = [];
71
+ this.joinRelations = [];
72
+ this.cteDependencies = [];
73
+ this.allCTENames = new Set();
74
+ this.foldingLevel = level;
75
+ this.enableCTEDependencyChain = enableCTEChain;
32
76
  }
33
77
  getRanges() {
78
+ return this.ranges.map(r => r.range);
79
+ }
80
+ /**
81
+ * Get folding ranges with kind classification
82
+ */
83
+ getFoldingRanges() {
84
+ // Scan for block comments before returning
85
+ this.scanBlockComments();
86
+ // Process collected JOIN blocks
87
+ this.processJoinBlocks();
88
+ // Scan for #region/#endregion markers
89
+ this.scanRegionMarkers();
90
+ // Scan for consecutive -- comment blocks
91
+ this.scanLineComments();
92
+ // Process CTE dependency chains
93
+ if (this.enableCTEDependencyChain) {
94
+ this.processCTEDependencyChains();
95
+ }
96
+ // Optimize ranges (deduplication, parent-child optimization)
97
+ this.optimizeRanges();
34
98
  return this.ranges;
35
99
  }
36
- enterStatementForFolding(ctx) {
100
+ /**
101
+ * 通用的 Range 计算逻辑
102
+ * 只保留跨多行的范围,单行没必要折叠
103
+ * 自动去重:相同起止行的范围只保留一个
104
+ * @param levelTag 内部级别标签,用于过滤
105
+ */
106
+ addRange(ctx, kind, levelTag = FoldingLevelTag.Statement) {
107
+ // 根据配置的级别过滤
108
+ if (!this.shouldIncludeRange(levelTag)) {
109
+ return;
110
+ }
37
111
  const startOffset = ctx.start.startIndex;
38
112
  const stopOffset = ctx.stop ? ctx.stop.stopIndex + 1 : startOffset + ctx.text.length;
39
- const range = lsp.Range.create(this.document.positionAt(ctx.start.startIndex), this.document.positionAt(stopOffset));
40
- this.ranges.push(range);
113
+ const range = lsp.Range.create(this.document.positionAt(startOffset), this.document.positionAt(stopOffset));
114
+ if (range.start.line < range.end.line) {
115
+ // 去重:相同起止行的范围只保留一个
116
+ const exists = this.ranges.some(r => r.range.start.line === range.start.line && r.range.end.line === range.end.line);
117
+ if (!exists) {
118
+ this.ranges.push({ range, kind, _levelTag: levelTag });
119
+ }
120
+ }
121
+ }
122
+ /**
123
+ * 判断是否应该包含该级别的折叠范围
124
+ */
125
+ shouldIncludeRange(levelTag) {
126
+ switch (this.foldingLevel) {
127
+ case 'statement':
128
+ return levelTag === FoldingLevelTag.Statement;
129
+ case 'query':
130
+ return levelTag <= FoldingLevelTag.Query;
131
+ case 'expression':
132
+ return levelTag <= FoldingLevelTag.Expression;
133
+ case 'all':
134
+ default:
135
+ return true;
136
+ }
137
+ }
138
+ /**
139
+ * 扫描多行 block 注释并生成折叠范围
140
+ * 只对跨行的注释生成 FoldingRange(kind=Comment)
141
+ *
142
+ * 注意:此方法在 getFoldingRanges() 中自动调用,
143
+ * 如果直接调用 getRanges() 则不会扫描注释(保持向后兼容)。
144
+ */
145
+ scanBlockComments() {
146
+ // 检查是否已经扫描过(避免重复扫描)
147
+ const text = this.document.getText();
148
+ const chars = antlr4ts_1.CharStreams.fromString(text);
149
+ const lexer = new SparkSQLLexer_1.SparkSQLLexer(chars);
150
+ const tokens = new antlr4ts_1.CommonTokenStream(lexer);
151
+ tokens.fill();
152
+ for (const token of tokens.getTokens()) {
153
+ // BRACKETED_COMMENT = /* */ 类型注释
154
+ if (token.type === SparkSQLLexer_1.SparkSQLLexer.BRACKETED_COMMENT) {
155
+ const startLine = token.line - 1; // ANTLR line 是 1-indexed
156
+ const stopLine = token.line - 1 + ((token.text?.split('\n').length || 1) - 1);
157
+ // 只折叠跨行的注释(≥2 行)
158
+ if (startLine < stopLine) {
159
+ // 级别过滤:Other 级别只在 'all' 时包含
160
+ if (!this.shouldIncludeRange(FoldingLevelTag.Other)) {
161
+ continue;
162
+ }
163
+ const range = lsp.Range.create(this.document.positionAt(token.startIndex), this.document.positionAt(token.stopIndex + 1));
164
+ this.ranges.push({
165
+ range,
166
+ kind: lsp.FoldingRangeKind.Comment,
167
+ _levelTag: FoldingLevelTag.Other
168
+ });
169
+ }
170
+ }
171
+ }
172
+ }
173
+ // ==================== Statement 包装 ====================
174
+ enterStatementForFolding(ctx) {
175
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
176
+ }
177
+ // ==================== DQL - 查询语句 ====================
178
+ enterStatementDefault(ctx) {
179
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
180
+ }
181
+ enterDescribeQuery(ctx) {
182
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
183
+ }
184
+ // ==================== DML - 数据操作语句 ====================
185
+ enterDmlStatement(ctx) {
186
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
187
+ }
188
+ // ==================== DDL - Namespace ====================
189
+ enterCreateNamespace(ctx) {
190
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
191
+ }
192
+ enterSetNamespaceProperties(ctx) {
193
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
194
+ }
195
+ enterUnsetNamespaceProperties(ctx) {
196
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
197
+ }
198
+ enterSetNamespaceCollation(ctx) {
199
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
200
+ }
201
+ enterSetNamespaceLocation(ctx) {
202
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
203
+ }
204
+ enterDropNamespace(ctx) {
205
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
206
+ }
207
+ // ==================== DDL - Table ====================
208
+ enterCreateTable(ctx) {
209
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
210
+ }
211
+ enterCreateTableLike(ctx) {
212
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
213
+ }
214
+ enterReplaceTable(ctx) {
215
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
216
+ }
217
+ enterAddTableColumns(ctx) {
218
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
219
+ }
220
+ enterRenameTableColumn(ctx) {
221
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
222
+ }
223
+ enterDropTableColumns(ctx) {
224
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
225
+ }
226
+ enterRenameTable(ctx) {
227
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
228
+ }
229
+ enterSetTableProperties(ctx) {
230
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
231
+ }
232
+ enterUnsetTableProperties(ctx) {
233
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
234
+ }
235
+ enterAlterTableAlterColumn(ctx) {
236
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
237
+ }
238
+ enterHiveChangeColumn(ctx) {
239
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
240
+ }
241
+ enterHiveReplaceColumns(ctx) {
242
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
243
+ }
244
+ enterSetTableSerDe(ctx) {
245
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
246
+ }
247
+ enterAddTablePartition(ctx) {
248
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
249
+ }
250
+ enterRenameTablePartition(ctx) {
251
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
252
+ }
253
+ enterDropTablePartitions(ctx) {
254
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
255
+ }
256
+ enterSetTableLocation(ctx) {
257
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
258
+ }
259
+ enterRecoverPartitions(ctx) {
260
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
261
+ }
262
+ enterAlterClusterBy(ctx) {
263
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
264
+ }
265
+ enterAlterTableCollation(ctx) {
266
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
267
+ }
268
+ enterAddTableConstraint(ctx) {
269
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
270
+ }
271
+ enterDropTableConstraint(ctx) {
272
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
273
+ }
274
+ enterDropTable(ctx) {
275
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
276
+ }
277
+ enterTruncateTable(ctx) {
278
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
279
+ }
280
+ enterRepairTable(ctx) {
281
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
282
+ }
283
+ // ==================== DDL - View ====================
284
+ enterCreateView(ctx) {
285
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
286
+ }
287
+ enterCreateMetricView(ctx) {
288
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
289
+ }
290
+ enterCreateTempViewUsing(ctx) {
291
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
292
+ }
293
+ enterAlterViewQuery(ctx) {
294
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
295
+ }
296
+ enterAlterViewSchemaBinding(ctx) {
297
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
298
+ }
299
+ enterDropView(ctx) {
300
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
301
+ }
302
+ // ==================== DDL - Function ====================
303
+ enterCreateFunction(ctx) {
304
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
305
+ }
306
+ enterCreateUserDefinedFunction(ctx) {
307
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
308
+ }
309
+ enterDropFunction(ctx) {
310
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
311
+ }
312
+ // ==================== DDL - Variable ====================
313
+ enterCreateVariable(ctx) {
314
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
315
+ }
316
+ enterDropVariable(ctx) {
317
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
318
+ }
319
+ // ==================== DDL - Index ====================
320
+ enterCreateIndex(ctx) {
321
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
322
+ }
323
+ enterDropIndex(ctx) {
324
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
325
+ }
326
+ // ==================== DDL - Pipeline ====================
327
+ enterCreatePipelineDataset(ctx) {
328
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
329
+ }
330
+ enterCreatePipelineInsertIntoFlow(ctx) {
331
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
332
+ }
333
+ // ==================== Session/Catalog 操作 ====================
334
+ enterUse(ctx) {
335
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
336
+ }
337
+ enterUseNamespace(ctx) {
338
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
339
+ }
340
+ enterSetCatalog(ctx) {
341
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
342
+ }
343
+ // ==================== SHOW 语句 ====================
344
+ enterShowNamespaces(ctx) {
345
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
346
+ }
347
+ enterShowTables(ctx) {
348
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
349
+ }
350
+ enterShowTableExtended(ctx) {
351
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
352
+ }
353
+ enterShowTblProperties(ctx) {
354
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
355
+ }
356
+ enterShowColumns(ctx) {
357
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
358
+ }
359
+ enterShowViews(ctx) {
360
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
361
+ }
362
+ enterShowPartitions(ctx) {
363
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
364
+ }
365
+ enterShowFunctions(ctx) {
366
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
367
+ }
368
+ enterShowProcedures(ctx) {
369
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
370
+ }
371
+ enterShowCreateTable(ctx) {
372
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
373
+ }
374
+ enterShowCurrentNamespace(ctx) {
375
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
376
+ }
377
+ enterShowCatalogs(ctx) {
378
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
379
+ }
380
+ // ==================== DESCRIBE 语句 ====================
381
+ enterDescribeFunction(ctx) {
382
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
383
+ }
384
+ enterDescribeProcedure(ctx) {
385
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
386
+ }
387
+ enterDescribeNamespace(ctx) {
388
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
389
+ }
390
+ enterDescribeRelation(ctx) {
391
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
392
+ }
393
+ // ==================== ANALYZE 语句 ====================
394
+ enterAnalyze(ctx) {
395
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
396
+ }
397
+ enterAnalyzeTables(ctx) {
398
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
399
+ }
400
+ // ==================== EXPLAIN 语句 ====================
401
+ enterExplain(ctx) {
402
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
403
+ }
404
+ // ==================== COMMENT 语句 ====================
405
+ enterCommentNamespace(ctx) {
406
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
407
+ }
408
+ enterCommentTable(ctx) {
409
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
410
+ }
411
+ // ==================== REFRESH 语句 ====================
412
+ enterRefreshTable(ctx) {
413
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
414
+ }
415
+ enterRefreshFunction(ctx) {
416
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
417
+ }
418
+ enterRefreshResource(ctx) {
419
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
420
+ }
421
+ // ==================== CACHE 语句 ====================
422
+ enterCacheTable(ctx) {
423
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
424
+ }
425
+ enterUncacheTable(ctx) {
426
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
427
+ }
428
+ enterClearCache(ctx) {
429
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
430
+ }
431
+ // ==================== 数据加载 ====================
432
+ enterLoadData(ctx) {
433
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
434
+ }
435
+ // ==================== 资源管理 ====================
436
+ enterManageResource(ctx) {
437
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
438
+ }
439
+ // ==================== 存储过程调用 ====================
440
+ enterCall(ctx) {
441
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
442
+ }
443
+ // ==================== 其他 ====================
444
+ enterVisitExecuteImmediate(ctx) {
445
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
446
+ }
447
+ enterFailNativeCommand(ctx) {
448
+ this.addRange(ctx, undefined, FoldingLevelTag.Statement);
449
+ }
450
+ // ==================== Query 相关 ====================
451
+ /**
452
+ * 监听 query(SELECT 查询,包括子查询、CTE 内部查询)
453
+ */
454
+ enterQuery(ctx) {
455
+ this.addRange(ctx, undefined, FoldingLevelTag.Query);
456
+ }
457
+ /**
458
+ * 监听 WITH 子句整体(CTEs)
459
+ * 使用 kind=Imports 表示 CTE 定义块
460
+ */
461
+ enterCtes(ctx) {
462
+ this.addRange(ctx, lsp.FoldingRangeKind.Imports, FoldingLevelTag.Query);
463
+ }
464
+ /**
465
+ * 监听单个 CTE 定义(namedQuery)
466
+ * 使用 kind=Imports 表示 CTE 定义块
467
+ */
468
+ enterNamedQuery(ctx) {
469
+ // 收集 CTE 依赖信息
470
+ const cteName = ctx.errorCapturingIdentifier()?.text;
471
+ if (cteName) {
472
+ this.allCTENames.add(cteName);
473
+ // 使用 ctx.text 获取 CTE 文本
474
+ const cteText = ctx.text;
475
+ const deps = this.extractCTEDependencies(cteText);
476
+ this.cteDependencies.push({
477
+ name: cteName,
478
+ startLine: ctx.start.line - 1, // ANTLR line is 1-indexed
479
+ endLine: ctx.stop ? ctx.stop.line - 1 : ctx.start.line - 1,
480
+ dependencies: deps
481
+ });
482
+ }
483
+ this.addRange(ctx, lsp.FoldingRangeKind.Imports, FoldingLevelTag.Query);
484
+ }
485
+ /**
486
+ * 监听常规查询规范(SELECT ... FROM ... WHERE ...)
487
+ * 这是实际的 SELECT 查询块,包括主查询和 CTE 内部的查询
488
+ */
489
+ enterRegularQuerySpecification(ctx) {
490
+ this.addRange(ctx, undefined, FoldingLevelTag.Query);
491
+ }
492
+ // ==================== 复杂表达式 ====================
493
+ /**
494
+ * 监听子查询表达式
495
+ */
496
+ enterSubqueryExpression(ctx) {
497
+ this.addRange(ctx, undefined, FoldingLevelTag.Query);
498
+ }
499
+ /**
500
+ * 监听内联表 VALUES
501
+ */
502
+ enterInlineTable(ctx) {
503
+ this.addRange(ctx, undefined, FoldingLevelTag.Query);
504
+ }
505
+ /**
506
+ * 监听集合操作 UNION/INTERSECT/EXCEPT
507
+ */
508
+ enterSetOperation(ctx) {
509
+ this.addRange(ctx, undefined, FoldingLevelTag.Query);
510
+ }
511
+ /**
512
+ * 监听 Searched CASE 表达式
513
+ */
514
+ enterSearchedCase(ctx) {
515
+ this.addRange(ctx, undefined, FoldingLevelTag.Expression);
516
+ }
517
+ /**
518
+ * 监听 Simple CASE 表达式
519
+ */
520
+ enterSimpleCase(ctx) {
521
+ this.addRange(ctx, undefined, FoldingLevelTag.Expression);
522
+ }
523
+ /**
524
+ * 监听窗口定义
525
+ * 只对 ≥3 行的窗口定义生成折叠,避免过度折叠
526
+ */
527
+ enterWindowDef(ctx) {
528
+ // 阈值检查:≥3 行才折叠
529
+ if (ctx.stop && ctx.stop.line - ctx.start.line >= 2) {
530
+ this.addRange(ctx, undefined, FoldingLevelTag.Expression);
531
+ }
532
+ }
533
+ // ==================== 括号相关 ====================
534
+ /**
535
+ * 监听函数调用 function_name(arg1, arg2, ...)
536
+ * 只对 ≥3 行的函数调用生成折叠,避免过度折叠
537
+ */
538
+ enterFunctionCall(ctx) {
539
+ // 阈值检查:≥3 行才折叠(stop.line - start.line >= 2 表示至少跨越 3 行)
540
+ if (ctx.stop && ctx.stop.line - ctx.start.line >= 2) {
541
+ this.addRange(ctx, undefined, FoldingLevelTag.Expression);
542
+ }
543
+ }
544
+ /**
545
+ * 监听括号表达式 (expression)
546
+ * 只对 ≥3 行的括号表达式生成折叠,避免过度折叠
547
+ */
548
+ enterParenthesizedExpression(ctx) {
549
+ // 阈值检查:≥3 行才折叠(stop.line - start.line >= 2 表示至少跨越 3 行)
550
+ if (ctx.stop && ctx.stop.line - ctx.start.line >= 2) {
551
+ this.addRange(ctx, undefined, FoldingLevelTag.Expression);
552
+ }
553
+ }
554
+ /**
555
+ * 监听表元素列表 (col1 INT, col2 STRING, ...)
556
+ * 用于 CREATE TABLE 等 DDL 语句中的列定义
557
+ */
558
+ enterTableElementList(ctx) {
559
+ this.addRange(ctx, undefined, FoldingLevelTag.Expression);
560
+ }
561
+ // ==================== Phase 2: 超越 Databricks ====================
562
+ /**
563
+ * 收集 JOIN 关系节点(在 AST walk 中自动调用)
564
+ */
565
+ enterJoinRelation(ctx) {
566
+ this.joinRelations.push(ctx);
567
+ }
568
+ /**
569
+ * 处理收集到的 JOIN 关系,生成折叠范围
570
+ * 当 2+ 个连续 JOIN 时,折叠整个 JOIN 块
571
+ * 单个 JOIN 不单独折叠(包含在 SELECT 块折叠中)
572
+ */
573
+ processJoinBlocks() {
574
+ // 级别过滤:Other 级别只在 'all' 时包含
575
+ if (!this.shouldIncludeRange(FoldingLevelTag.Other)) {
576
+ return;
577
+ }
578
+ if (this.joinRelations.length < 2) {
579
+ return; // 少于 2 个 JOIN,不生成折叠
580
+ }
581
+ // 按起始位置排序
582
+ this.joinRelations.sort((a, b) => a.start.startIndex - b.start.startIndex);
583
+ // 查找连续的 JOIN 块
584
+ let blockStart = this.joinRelations[0];
585
+ let blockEnd = this.joinRelations[0];
586
+ for (let i = 1; i < this.joinRelations.length; i++) {
587
+ const current = this.joinRelations[i];
588
+ const prev = this.joinRelations[i - 1];
589
+ // 检查是否连续:gap 较小(允许注释和空格)
590
+ const prevStop = prev.stop ? prev.stop.stopIndex : prev.start.startIndex + prev.text.length;
591
+ const gap = current.start.startIndex - prevStop;
592
+ if (gap >= 0 && gap < 500) {
593
+ // 连续 JOIN,扩展块
594
+ blockEnd = current;
595
+ }
596
+ else {
597
+ // 不连续,输出前一个块
598
+ this.addJoinBlockRange(blockStart, blockEnd);
599
+ blockStart = current;
600
+ blockEnd = current;
601
+ }
602
+ }
603
+ // 输出最后一个块
604
+ this.addJoinBlockRange(blockStart, blockEnd);
605
+ }
606
+ /**
607
+ * 添加 JOIN 块折叠范围
608
+ */
609
+ addJoinBlockRange(start, end) {
610
+ const startOffset = start.start.startIndex;
611
+ const stopOffset = end.stop ? end.stop.stopIndex + 1 : start.start.startIndex + start.text.length;
612
+ const range = lsp.Range.create(this.document.positionAt(startOffset), this.document.positionAt(stopOffset));
613
+ // 只折叠跨多行的 JOIN 块
614
+ if (range.start.line < range.end.line) {
615
+ // 去重检查
616
+ const exists = this.ranges.some(r => r.range.start.line === range.start.line && r.range.end.line === range.end.line);
617
+ if (!exists) {
618
+ this.ranges.push({ range, _levelTag: FoldingLevelTag.Other });
619
+ }
620
+ }
621
+ }
622
+ /**
623
+ * 扫描 #region/#endregion 标记并生成折叠范围
624
+ * 支持嵌套 region,未配对的标记忽略
625
+ * 生成 FoldingRange(kind=Region)
626
+ */
627
+ scanRegionMarkers() {
628
+ // 级别过滤:Other 级别只在 'all' 时包含
629
+ if (!this.shouldIncludeRange(FoldingLevelTag.Other)) {
630
+ return;
631
+ }
632
+ const text = this.document.getText();
633
+ const lines = text.split('\n');
634
+ const stack = []; // region 起始行栈
635
+ for (let i = 0; i < lines.length; i++) {
636
+ const line = lines[i].trim().toLowerCase();
637
+ // 检测 #region
638
+ if (line.startsWith('-- #region') || line.startsWith('--#region')) {
639
+ stack.push(i);
640
+ }
641
+ // 检测 #endregion
642
+ if (line.startsWith('-- #endregion') || line.startsWith('--#endregion')) {
643
+ if (stack.length > 0) {
644
+ const startLine = stack.pop();
645
+ // 至少 3 行(至少 1 行内容)才折叠
646
+ if (i - startLine > 1) {
647
+ const range = lsp.Range.create(lsp.Position.create(startLine, 0), lsp.Position.create(i, lines[i].length));
648
+ // 去重检查
649
+ const exists = this.ranges.some(r => r.range.start.line === range.start.line && r.range.end.line === range.end.line);
650
+ if (!exists) {
651
+ this.ranges.push({
652
+ range,
653
+ kind: lsp.FoldingRangeKind.Region,
654
+ _levelTag: FoldingLevelTag.Other
655
+ });
656
+ }
657
+ }
658
+ }
659
+ // 未配对的 #endregion 忽略
660
+ }
661
+ }
662
+ // 未配对的 #region 忽略
663
+ }
664
+ /**
665
+ * 扫描连续多行 -- 注释并生成折叠范围
666
+ * 只对 3+ 行连续注释生成 FoldingRange(kind=Comment)
667
+ */
668
+ scanLineComments() {
669
+ // 级别过滤:Other 级别只在 'all' 时包含
670
+ if (!this.shouldIncludeRange(FoldingLevelTag.Other)) {
671
+ return;
672
+ }
673
+ const text = this.document.getText();
674
+ const lines = text.split('\n');
675
+ let blockStart = -1;
676
+ let blockEnd = -1;
677
+ for (let i = 0; i < lines.length; i++) {
678
+ const line = lines[i].trim();
679
+ const isComment = line.startsWith('--') &&
680
+ !line.startsWith('-- #region') &&
681
+ !line.startsWith('--#region') &&
682
+ !line.startsWith('-- #endregion') &&
683
+ !line.startsWith('--#endregion');
684
+ if (isComment) {
685
+ if (blockStart === -1) {
686
+ blockStart = i;
687
+ }
688
+ blockEnd = i;
689
+ }
690
+ else {
691
+ // 注释块结束
692
+ if (blockStart !== -1 && blockEnd - blockStart >= 2) {
693
+ // 3+ 行注释块,生成折叠范围
694
+ const range = lsp.Range.create(lsp.Position.create(blockStart, 0), lsp.Position.create(blockEnd, lines[blockEnd].length));
695
+ this.ranges.push({
696
+ range,
697
+ kind: lsp.FoldingRangeKind.Comment,
698
+ _levelTag: FoldingLevelTag.Other
699
+ });
700
+ }
701
+ blockStart = -1;
702
+ blockEnd = -1;
703
+ }
704
+ }
705
+ // 处理文件末尾的注释块
706
+ if (blockStart !== -1 && blockEnd - blockStart >= 2) {
707
+ const range = lsp.Range.create(lsp.Position.create(blockStart, 0), lsp.Position.create(blockEnd, lines[blockEnd].length));
708
+ this.ranges.push({
709
+ range,
710
+ kind: lsp.FoldingRangeKind.Comment,
711
+ _levelTag: FoldingLevelTag.Other
712
+ });
713
+ }
714
+ }
715
+ /**
716
+ * 优化折叠范围
717
+ * 1. 去除相同起止行的重复范围
718
+ * 2. 优化父子范围关系(相同起止行保留子范围)
719
+ */
720
+ optimizeRanges() {
721
+ // 按起始行排序,然后按结束行降序
722
+ this.ranges.sort((a, b) => {
723
+ if (a.range.start.line !== b.range.start.line) {
724
+ return a.range.start.line - b.range.start.line;
725
+ }
726
+ return b.range.end.line - a.range.end.line;
727
+ });
728
+ // 去重:相同起止行只保留第一个
729
+ const optimized = [];
730
+ for (const current of this.ranges) {
731
+ const isDuplicate = optimized.some(existing => existing.range.start.line === current.range.start.line && existing.range.end.line === current.range.end.line);
732
+ if (!isDuplicate) {
733
+ optimized.push(current);
734
+ }
735
+ }
736
+ this.ranges = optimized;
737
+ }
738
+ // ==================== Phase 4: CTE 依赖链折叠 ====================
739
+ /**
740
+ * 从 CTE 文本中提取依赖的其他 CTE 名称
741
+ * 通过查找已知的 CTE 名称在文本中的出现来确定依赖关系
742
+ */
743
+ extractCTEDependencies(cteText) {
744
+ const deps = [];
745
+ const lowerText = cteText.toLowerCase();
746
+ for (const cteName of this.allCTENames) {
747
+ // 检查 CTE 名称是否在当前 CTE 的文本中
748
+ // 使用简单的字符串搜索,避免正则表达式特殊字符问题
749
+ const lowerCteName = cteName.toLowerCase();
750
+ const firstIndex = lowerText.indexOf(lowerCteName);
751
+ if (firstIndex === -1) {
752
+ continue;
753
+ }
754
+ // 检查是否出现多次(排除 CTE 自身定义处的出现)
755
+ const secondIndex = lowerText.indexOf(lowerCteName, firstIndex + lowerCteName.length);
756
+ if (secondIndex !== -1) {
757
+ deps.push(cteName);
758
+ }
759
+ }
760
+ return deps;
761
+ }
762
+ /**
763
+ * 处理 CTE 依赖链,生成整体折叠范围
764
+ * 当有多个 CTE 存在依赖关系时,生成覆盖整个 WITH 块的折叠
765
+ */
766
+ processCTEDependencyChains() {
767
+ if (this.cteDependencies.length < 2) {
768
+ return; // 少于 2 个 CTE,不处理
769
+ }
770
+ // 查找有依赖关系的 CTE
771
+ const ctesWithDeps = this.cteDependencies.filter(cte => cte.dependencies.length > 0);
772
+ if (ctesWithDeps.length < 1) {
773
+ return; // 没有依赖关系,不处理
774
+ }
775
+ // 计算整个 WITH 块的范围(从第一个 CTE 到最后一个 CTE)
776
+ const sorted = [...this.cteDependencies].sort((a, b) => a.startLine - b.startLine);
777
+ const startLine = sorted[0].startLine;
778
+ const endLine = sorted[sorted.length - 1].endLine;
779
+ // 只折叠跨多行的 WITH 块
780
+ if (startLine < endLine) {
781
+ const range = lsp.Range.create(lsp.Position.create(startLine, 0), lsp.Position.create(endLine, 0));
782
+ // 去重检查
783
+ const exists = this.ranges.some(r => r.range.start.line === range.start.line && r.range.end.line === range.end.line);
784
+ if (!exists) {
785
+ this.ranges.push({
786
+ range,
787
+ kind: lsp.FoldingRangeKind.Imports,
788
+ _levelTag: FoldingLevelTag.Query
789
+ });
790
+ }
791
+ }
792
+ }
793
+ // ==================== Phase 4: 折叠统计 ====================
794
+ /**
795
+ * 获取折叠统计信息
796
+ */
797
+ getStatistics() {
798
+ const rangesByKind = {};
799
+ const rangesByLevel = {};
800
+ for (const info of this.ranges) {
801
+ const kindKey = info.kind || 'undefined';
802
+ rangesByKind[kindKey] = (rangesByKind[kindKey] || 0) + 1;
803
+ const levelKey = FoldingLevelTag[info._levelTag || FoldingLevelTag.Statement];
804
+ rangesByLevel[levelKey] = (rangesByLevel[levelKey] || 0) + 1;
805
+ }
806
+ const depthStats = this.calculateDepthStats();
807
+ const coverageRatio = this.calculateCoverageRatio();
808
+ return {
809
+ totalRanges: this.ranges.length,
810
+ rangesByKind,
811
+ rangesByLevel,
812
+ maxDepth: depthStats.maxDepth,
813
+ avgDepth: depthStats.avgDepth,
814
+ coverageRatio,
815
+ optimizedCount: 0,
816
+ computeTimeMs: 0
817
+ };
818
+ }
819
+ /**
820
+ * 计算嵌套深度统计
821
+ */
822
+ calculateDepthStats() {
823
+ if (this.ranges.length === 0) {
824
+ return { maxDepth: 0, avgDepth: 0 };
825
+ }
826
+ let maxDepth = 0;
827
+ let totalDepth = 0;
828
+ for (const info of this.ranges) {
829
+ let depth = 1;
830
+ for (const other of this.ranges) {
831
+ if (other === info)
832
+ continue;
833
+ // Check if other contains this range
834
+ if (other.range.start.line <= info.range.start.line &&
835
+ other.range.end.line >= info.range.end.line &&
836
+ (other.range.start.line < info.range.start.line || other.range.end.line > info.range.end.line)) {
837
+ depth++;
838
+ }
839
+ }
840
+ maxDepth = Math.max(maxDepth, depth);
841
+ totalDepth += depth;
842
+ }
843
+ return {
844
+ maxDepth,
845
+ avgDepth: totalDepth / this.ranges.length
846
+ };
847
+ }
848
+ /**
849
+ * 计算折叠覆盖率 (被折叠覆盖的行数 / 总行数)
850
+ */
851
+ calculateCoverageRatio() {
852
+ if (this.ranges.length === 0) {
853
+ return 0;
854
+ }
855
+ const totalLines = this.document.lineCount;
856
+ if (totalLines === 0) {
857
+ return 0;
858
+ }
859
+ const coveredLines = new Set();
860
+ for (const info of this.ranges) {
861
+ for (let line = info.range.start.line; line <= info.range.end.line; line++) {
862
+ coveredLines.add(line);
863
+ }
864
+ }
865
+ return coveredLines.size / totalLines;
41
866
  }
42
867
  }
43
868
  exports.StatementListener = StatementListener;