@gooddata/sdk-maql-language-server 0.0.0-stage → 11.65.0-alpha.10

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 (314) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +118 -2
  3. package/esm/completions/complete.d.ts +12 -0
  4. package/esm/completions/complete.d.ts.map +1 -0
  5. package/esm/completions/complete.js +316 -0
  6. package/esm/completions/descriptions.d.ts +42 -0
  7. package/esm/completions/descriptions.d.ts.map +1 -0
  8. package/esm/completions/descriptions.js +289 -0
  9. package/esm/completions/findContext.d.ts +19 -0
  10. package/esm/completions/findContext.d.ts.map +1 -0
  11. package/esm/completions/findContext.js +171 -0
  12. package/esm/completions/functionDescriptions.d.ts +3 -0
  13. package/esm/completions/functionDescriptions.d.ts.map +1 -0
  14. package/esm/completions/functionDescriptions.js +98 -0
  15. package/esm/completions/sort.d.ts +4 -0
  16. package/esm/completions/sort.d.ts.map +1 -0
  17. package/esm/completions/sort.js +88 -0
  18. package/esm/constants.d.ts +21 -0
  19. package/esm/constants.d.ts.map +1 -0
  20. package/esm/constants.js +22 -0
  21. package/esm/dateElementFormat.d.ts +9 -0
  22. package/esm/dateElementFormat.d.ts.map +1 -0
  23. package/esm/dateElementFormat.js +60 -0
  24. package/esm/decorations.d.ts +46 -0
  25. package/esm/decorations.d.ts.map +1 -0
  26. package/esm/decorations.js +42 -0
  27. package/esm/diagnostics.d.ts +12 -0
  28. package/esm/diagnostics.d.ts.map +1 -0
  29. package/esm/diagnostics.js +259 -0
  30. package/esm/docs/en/docs/create-metrics/maql/aggregation/approximate_count.d.ts +2 -0
  31. package/esm/docs/en/docs/create-metrics/maql/aggregation/approximate_count.d.ts.map +1 -0
  32. package/esm/docs/en/docs/create-metrics/maql/aggregation/approximate_count.js +61 -0
  33. package/esm/docs/en/docs/create-metrics/maql/aggregation/avg.d.ts +2 -0
  34. package/esm/docs/en/docs/create-metrics/maql/aggregation/avg.d.ts.map +1 -0
  35. package/esm/docs/en/docs/create-metrics/maql/aggregation/avg.js +19 -0
  36. package/esm/docs/en/docs/create-metrics/maql/aggregation/count.d.ts +2 -0
  37. package/esm/docs/en/docs/create-metrics/maql/aggregation/count.d.ts.map +1 -0
  38. package/esm/docs/en/docs/create-metrics/maql/aggregation/count.js +72 -0
  39. package/esm/docs/en/docs/create-metrics/maql/aggregation/first.d.ts +2 -0
  40. package/esm/docs/en/docs/create-metrics/maql/aggregation/first.d.ts.map +1 -0
  41. package/esm/docs/en/docs/create-metrics/maql/aggregation/first.js +41 -0
  42. package/esm/docs/en/docs/create-metrics/maql/aggregation/last.d.ts +2 -0
  43. package/esm/docs/en/docs/create-metrics/maql/aggregation/last.d.ts.map +1 -0
  44. package/esm/docs/en/docs/create-metrics/maql/aggregation/last.js +69 -0
  45. package/esm/docs/en/docs/create-metrics/maql/aggregation/max.d.ts +2 -0
  46. package/esm/docs/en/docs/create-metrics/maql/aggregation/max.d.ts.map +1 -0
  47. package/esm/docs/en/docs/create-metrics/maql/aggregation/max.js +61 -0
  48. package/esm/docs/en/docs/create-metrics/maql/aggregation/median.d.ts +2 -0
  49. package/esm/docs/en/docs/create-metrics/maql/aggregation/median.d.ts.map +1 -0
  50. package/esm/docs/en/docs/create-metrics/maql/aggregation/median.js +25 -0
  51. package/esm/docs/en/docs/create-metrics/maql/aggregation/min.d.ts +2 -0
  52. package/esm/docs/en/docs/create-metrics/maql/aggregation/min.d.ts.map +1 -0
  53. package/esm/docs/en/docs/create-metrics/maql/aggregation/min.js +63 -0
  54. package/esm/docs/en/docs/create-metrics/maql/aggregation/sum.d.ts +2 -0
  55. package/esm/docs/en/docs/create-metrics/maql/aggregation/sum.d.ts.map +1 -0
  56. package/esm/docs/en/docs/create-metrics/maql/aggregation/sum.js +20 -0
  57. package/esm/docs/en/docs/create-metrics/maql/conditionals/case.d.ts +2 -0
  58. package/esm/docs/en/docs/create-metrics/maql/conditionals/case.d.ts.map +1 -0
  59. package/esm/docs/en/docs/create-metrics/maql/conditionals/case.js +73 -0
  60. package/esm/docs/en/docs/create-metrics/maql/conditionals/if-then-else.d.ts +2 -0
  61. package/esm/docs/en/docs/create-metrics/maql/conditionals/if-then-else.d.ts.map +1 -0
  62. package/esm/docs/en/docs/create-metrics/maql/conditionals/if-then-else.js +29 -0
  63. package/esm/docs/en/docs/create-metrics/maql/conditionals/ifnull.d.ts +2 -0
  64. package/esm/docs/en/docs/create-metrics/maql/conditionals/ifnull.d.ts.map +1 -0
  65. package/esm/docs/en/docs/create-metrics/maql/conditionals/ifnull.js +96 -0
  66. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-ranking-filters.d.ts +2 -0
  67. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-ranking-filters.d.ts.map +1 -0
  68. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-ranking-filters.js +71 -0
  69. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-the-having-clause.d.ts +2 -0
  70. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-the-having-clause.d.ts.map +1 -0
  71. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-the-having-clause.js +65 -0
  72. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-the-like-clause.d.ts +2 -0
  73. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-the-like-clause.d.ts.map +1 -0
  74. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-the-like-clause.js +36 -0
  75. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-the-where-clause.d.ts +2 -0
  76. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-the-where-clause.d.ts.map +1 -0
  77. package/esm/docs/en/docs/create-metrics/maql/filters/filtering-with-the-where-clause.js +36 -0
  78. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-all-in-all-other-dimensions-except-for-attribute.d.ts +2 -0
  79. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-all-in-all-other-dimensions-except-for-attribute.d.ts.map +1 -0
  80. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-all-in-all-other-dimensions-except-for-attribute.js +21 -0
  81. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-all-in-all-other-dimensions.d.ts +2 -0
  82. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-all-in-all-other-dimensions.d.ts.map +1 -0
  83. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-all-in-all-other-dimensions.js +27 -0
  84. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-all.d.ts +2 -0
  85. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-all.d.ts.map +1 -0
  86. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-all.js +64 -0
  87. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-attribute-all-in-all-other-dimensions.d.ts +2 -0
  88. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-attribute-all-in-all-other-dimensions.d.ts.map +1 -0
  89. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by-attribute-all-in-all-other-dimensions.js +22 -0
  90. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by.d.ts +2 -0
  91. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by.d.ts.map +1 -0
  92. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-attribute-filters/by.js +85 -0
  93. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/with-parent-except.d.ts +2 -0
  94. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/with-parent-except.d.ts.map +1 -0
  95. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/with-parent-except.js +37 -0
  96. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/with-parent-filter.d.ts +2 -0
  97. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/with-parent-filter.d.ts.map +1 -0
  98. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/with-parent-filter.js +42 -0
  99. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/without-parent-except.d.ts +2 -0
  100. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/without-parent-except.d.ts.map +1 -0
  101. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/without-parent-except.js +94 -0
  102. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/without-parent-filter.d.ts +2 -0
  103. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/without-parent-filter.d.ts.map +1 -0
  104. package/esm/docs/en/docs/create-metrics/maql/filters/overriding-parent/without-parent-filter.js +33 -0
  105. package/esm/docs/en/docs/create-metrics/maql/for-each.d.ts +2 -0
  106. package/esm/docs/en/docs/create-metrics/maql/for-each.d.ts.map +1 -0
  107. package/esm/docs/en/docs/create-metrics/maql/for-each.js +17 -0
  108. package/esm/docs/en/docs/create-metrics/maql/logical-operators/and.d.ts +2 -0
  109. package/esm/docs/en/docs/create-metrics/maql/logical-operators/and.d.ts.map +1 -0
  110. package/esm/docs/en/docs/create-metrics/maql/logical-operators/and.js +37 -0
  111. package/esm/docs/en/docs/create-metrics/maql/logical-operators/not.d.ts +2 -0
  112. package/esm/docs/en/docs/create-metrics/maql/logical-operators/not.d.ts.map +1 -0
  113. package/esm/docs/en/docs/create-metrics/maql/logical-operators/not.js +12 -0
  114. package/esm/docs/en/docs/create-metrics/maql/logical-operators/or.d.ts +2 -0
  115. package/esm/docs/en/docs/create-metrics/maql/logical-operators/or.d.ts.map +1 -0
  116. package/esm/docs/en/docs/create-metrics/maql/logical-operators/or.js +22 -0
  117. package/esm/docs/en/docs/create-metrics/maql/maql-and-multidimensionality.d.ts +2 -0
  118. package/esm/docs/en/docs/create-metrics/maql/maql-and-multidimensionality.d.ts.map +1 -0
  119. package/esm/docs/en/docs/create-metrics/maql/maql-and-multidimensionality.js +59 -0
  120. package/esm/docs/en/docs/create-metrics/maql/math/abs.d.ts +2 -0
  121. package/esm/docs/en/docs/create-metrics/maql/math/abs.d.ts.map +1 -0
  122. package/esm/docs/en/docs/create-metrics/maql/math/abs.js +23 -0
  123. package/esm/docs/en/docs/create-metrics/maql/math/arithmetic-operations.d.ts +2 -0
  124. package/esm/docs/en/docs/create-metrics/maql/math/arithmetic-operations.d.ts.map +1 -0
  125. package/esm/docs/en/docs/create-metrics/maql/math/arithmetic-operations.js +29 -0
  126. package/esm/docs/en/docs/create-metrics/maql/math/ceiling.d.ts +2 -0
  127. package/esm/docs/en/docs/create-metrics/maql/math/ceiling.d.ts.map +1 -0
  128. package/esm/docs/en/docs/create-metrics/maql/math/ceiling.js +21 -0
  129. package/esm/docs/en/docs/create-metrics/maql/math/exp.d.ts +2 -0
  130. package/esm/docs/en/docs/create-metrics/maql/math/exp.d.ts.map +1 -0
  131. package/esm/docs/en/docs/create-metrics/maql/math/exp.js +27 -0
  132. package/esm/docs/en/docs/create-metrics/maql/math/floor.d.ts +2 -0
  133. package/esm/docs/en/docs/create-metrics/maql/math/floor.d.ts.map +1 -0
  134. package/esm/docs/en/docs/create-metrics/maql/math/floor.js +21 -0
  135. package/esm/docs/en/docs/create-metrics/maql/math/greatest.d.ts +2 -0
  136. package/esm/docs/en/docs/create-metrics/maql/math/greatest.d.ts.map +1 -0
  137. package/esm/docs/en/docs/create-metrics/maql/math/greatest.js +13 -0
  138. package/esm/docs/en/docs/create-metrics/maql/math/least.d.ts +2 -0
  139. package/esm/docs/en/docs/create-metrics/maql/math/least.d.ts.map +1 -0
  140. package/esm/docs/en/docs/create-metrics/maql/math/least.js +13 -0
  141. package/esm/docs/en/docs/create-metrics/maql/math/ln.d.ts +2 -0
  142. package/esm/docs/en/docs/create-metrics/maql/math/ln.d.ts.map +1 -0
  143. package/esm/docs/en/docs/create-metrics/maql/math/ln.js +33 -0
  144. package/esm/docs/en/docs/create-metrics/maql/math/log.d.ts +2 -0
  145. package/esm/docs/en/docs/create-metrics/maql/math/log.d.ts.map +1 -0
  146. package/esm/docs/en/docs/create-metrics/maql/math/log.js +29 -0
  147. package/esm/docs/en/docs/create-metrics/maql/math/power.d.ts +2 -0
  148. package/esm/docs/en/docs/create-metrics/maql/math/power.d.ts.map +1 -0
  149. package/esm/docs/en/docs/create-metrics/maql/math/power.js +33 -0
  150. package/esm/docs/en/docs/create-metrics/maql/math/round.d.ts +2 -0
  151. package/esm/docs/en/docs/create-metrics/maql/math/round.d.ts.map +1 -0
  152. package/esm/docs/en/docs/create-metrics/maql/math/round.js +34 -0
  153. package/esm/docs/en/docs/create-metrics/maql/math/sign.d.ts +2 -0
  154. package/esm/docs/en/docs/create-metrics/maql/math/sign.d.ts.map +1 -0
  155. package/esm/docs/en/docs/create-metrics/maql/math/sign.js +30 -0
  156. package/esm/docs/en/docs/create-metrics/maql/math/sqrt.d.ts +2 -0
  157. package/esm/docs/en/docs/create-metrics/maql/math/sqrt.d.ts.map +1 -0
  158. package/esm/docs/en/docs/create-metrics/maql/math/sqrt.js +32 -0
  159. package/esm/docs/en/docs/create-metrics/maql/math/trunc.d.ts +2 -0
  160. package/esm/docs/en/docs/create-metrics/maql/math/trunc.d.ts.map +1 -0
  161. package/esm/docs/en/docs/create-metrics/maql/math/trunc.js +36 -0
  162. package/esm/docs/en/docs/create-metrics/maql/ranking/percentile.d.ts +2 -0
  163. package/esm/docs/en/docs/create-metrics/maql/ranking/percentile.d.ts.map +1 -0
  164. package/esm/docs/en/docs/create-metrics/maql/ranking/percentile.js +57 -0
  165. package/esm/docs/en/docs/create-metrics/maql/ranking/rank-variations.d.ts +2 -0
  166. package/esm/docs/en/docs/create-metrics/maql/ranking/rank-variations.d.ts.map +1 -0
  167. package/esm/docs/en/docs/create-metrics/maql/ranking/rank-variations.js +90 -0
  168. package/esm/docs/en/docs/create-metrics/maql/ranking/where-top-or-bottom-in.d.ts +2 -0
  169. package/esm/docs/en/docs/create-metrics/maql/ranking/where-top-or-bottom-in.d.ts.map +1 -0
  170. package/esm/docs/en/docs/create-metrics/maql/ranking/where-top-or-bottom-in.js +53 -0
  171. package/esm/docs/en/docs/create-metrics/maql/ranking/where-top-or-bottom-of.d.ts +2 -0
  172. package/esm/docs/en/docs/create-metrics/maql/ranking/where-top-or-bottom-of.d.ts.map +1 -0
  173. package/esm/docs/en/docs/create-metrics/maql/ranking/where-top-or-bottom-of.js +29 -0
  174. package/esm/docs/en/docs/create-metrics/maql/ranking/within-clause.d.ts +2 -0
  175. package/esm/docs/en/docs/create-metrics/maql/ranking/within-clause.d.ts.map +1 -0
  176. package/esm/docs/en/docs/create-metrics/maql/ranking/within-clause.js +101 -0
  177. package/esm/docs/en/docs/create-metrics/maql/relational-operators.d.ts +2 -0
  178. package/esm/docs/en/docs/create-metrics/maql/relational-operators.d.ts.map +1 -0
  179. package/esm/docs/en/docs/create-metrics/maql/relational-operators.js +50 -0
  180. package/esm/docs/en/docs/create-metrics/maql/runing-totals/rolling-window.d.ts +2 -0
  181. package/esm/docs/en/docs/create-metrics/maql/runing-totals/rolling-window.d.ts.map +1 -0
  182. package/esm/docs/en/docs/create-metrics/maql/runing-totals/rolling-window.js +71 -0
  183. package/esm/docs/en/docs/create-metrics/maql/runing-totals/running-total-statistical-functions.d.ts +2 -0
  184. package/esm/docs/en/docs/create-metrics/maql/runing-totals/running-total-statistical-functions.d.ts.map +1 -0
  185. package/esm/docs/en/docs/create-metrics/maql/runing-totals/running-total-statistical-functions.js +54 -0
  186. package/esm/docs/en/docs/create-metrics/maql/runing-totals/running-totals-for-core-functions.d.ts +2 -0
  187. package/esm/docs/en/docs/create-metrics/maql/runing-totals/running-totals-for-core-functions.d.ts.map +1 -0
  188. package/esm/docs/en/docs/create-metrics/maql/runing-totals/running-totals-for-core-functions.js +37 -0
  189. package/esm/docs/en/docs/create-metrics/maql/statistic/correl.d.ts +2 -0
  190. package/esm/docs/en/docs/create-metrics/maql/statistic/correl.d.ts.map +1 -0
  191. package/esm/docs/en/docs/create-metrics/maql/statistic/correl.js +47 -0
  192. package/esm/docs/en/docs/create-metrics/maql/statistic/covariance-functions.d.ts +2 -0
  193. package/esm/docs/en/docs/create-metrics/maql/statistic/covariance-functions.d.ts.map +1 -0
  194. package/esm/docs/en/docs/create-metrics/maql/statistic/covariance-functions.js +46 -0
  195. package/esm/docs/en/docs/create-metrics/maql/statistic/forecast.d.ts +2 -0
  196. package/esm/docs/en/docs/create-metrics/maql/statistic/forecast.d.ts.map +1 -0
  197. package/esm/docs/en/docs/create-metrics/maql/statistic/forecast.js +74 -0
  198. package/esm/docs/en/docs/create-metrics/maql/statistic/least-squares-functions.d.ts +2 -0
  199. package/esm/docs/en/docs/create-metrics/maql/statistic/least-squares-functions.d.ts.map +1 -0
  200. package/esm/docs/en/docs/create-metrics/maql/statistic/least-squares-functions.js +44 -0
  201. package/esm/docs/en/docs/create-metrics/maql/statistic/standard-deviation-functions.d.ts +2 -0
  202. package/esm/docs/en/docs/create-metrics/maql/statistic/standard-deviation-functions.d.ts.map +1 -0
  203. package/esm/docs/en/docs/create-metrics/maql/statistic/standard-deviation-functions.js +88 -0
  204. package/esm/docs/en/docs/create-metrics/maql/statistic/variance-functions.d.ts +2 -0
  205. package/esm/docs/en/docs/create-metrics/maql/statistic/variance-functions.d.ts.map +1 -0
  206. package/esm/docs/en/docs/create-metrics/maql/statistic/variance-functions.js +54 -0
  207. package/esm/docs/en/docs/create-metrics/maql/time/for-each.d.ts +2 -0
  208. package/esm/docs/en/docs/create-metrics/maql/time/for-each.d.ts.map +1 -0
  209. package/esm/docs/en/docs/create-metrics/maql/time/for-each.js +96 -0
  210. package/esm/docs/en/docs/create-metrics/maql/time/for-next-period.d.ts +2 -0
  211. package/esm/docs/en/docs/create-metrics/maql/time/for-next-period.d.ts.map +1 -0
  212. package/esm/docs/en/docs/create-metrics/maql/time/for-next-period.js +38 -0
  213. package/esm/docs/en/docs/create-metrics/maql/time/for-next.d.ts +2 -0
  214. package/esm/docs/en/docs/create-metrics/maql/time/for-next.d.ts.map +1 -0
  215. package/esm/docs/en/docs/create-metrics/maql/time/for-next.js +27 -0
  216. package/esm/docs/en/docs/create-metrics/maql/time/for-previous-period.d.ts +2 -0
  217. package/esm/docs/en/docs/create-metrics/maql/time/for-previous-period.d.ts.map +1 -0
  218. package/esm/docs/en/docs/create-metrics/maql/time/for-previous-period.js +26 -0
  219. package/esm/docs/en/docs/create-metrics/maql/time/for-previous.d.ts +2 -0
  220. package/esm/docs/en/docs/create-metrics/maql/time/for-previous.d.ts.map +1 -0
  221. package/esm/docs/en/docs/create-metrics/maql/time/for-previous.js +30 -0
  222. package/esm/docs/en/docs/create-metrics/maql/time/functions-for-referring-to-past-time-periods.d.ts +2 -0
  223. package/esm/docs/en/docs/create-metrics/maql/time/functions-for-referring-to-past-time-periods.d.ts.map +1 -0
  224. package/esm/docs/en/docs/create-metrics/maql/time/functions-for-referring-to-past-time-periods.js +36 -0
  225. package/esm/docs/en/docs/create-metrics/maql/time-arithmetics/datetime-add.d.ts +2 -0
  226. package/esm/docs/en/docs/create-metrics/maql/time-arithmetics/datetime-add.d.ts.map +1 -0
  227. package/esm/docs/en/docs/create-metrics/maql/time-arithmetics/datetime-add.js +53 -0
  228. package/esm/docs/en/docs/create-metrics/maql/time-arithmetics/datetime-diff.d.ts +2 -0
  229. package/esm/docs/en/docs/create-metrics/maql/time-arithmetics/datetime-diff.d.ts.map +1 -0
  230. package/esm/docs/en/docs/create-metrics/maql/time-arithmetics/datetime-diff.js +55 -0
  231. package/esm/docs/en/docs/create-metrics/maql/time-macros.d.ts +2 -0
  232. package/esm/docs/en/docs/create-metrics/maql/time-macros.d.ts.map +1 -0
  233. package/esm/docs/en/docs/create-metrics/maql/time-macros.js +79 -0
  234. package/esm/docs/index.d.ts +82 -0
  235. package/esm/docs/index.d.ts.map +1 -0
  236. package/esm/docs/index.js +143 -0
  237. package/esm/findObjects.d.ts +13 -0
  238. package/esm/findObjects.d.ts.map +1 -0
  239. package/esm/findObjects.js +73 -0
  240. package/esm/format.d.ts +4 -0
  241. package/esm/format.d.ts.map +1 -0
  242. package/esm/format.js +569 -0
  243. package/esm/highlight/convert.d.ts +3 -0
  244. package/esm/highlight/convert.d.ts.map +1 -0
  245. package/esm/highlight/convert.js +12 -0
  246. package/esm/highlight/semanticsHighlight.d.ts +47 -0
  247. package/esm/highlight/semanticsHighlight.d.ts.map +1 -0
  248. package/esm/highlight/semanticsHighlight.js +345 -0
  249. package/esm/highlight/utils.d.ts +3 -0
  250. package/esm/highlight/utils.d.ts.map +1 -0
  251. package/esm/highlight/utils.js +14 -0
  252. package/esm/hover.d.ts +23 -0
  253. package/esm/hover.d.ts.map +1 -0
  254. package/esm/hover.js +60 -0
  255. package/esm/index.d.ts +11 -0
  256. package/esm/index.d.ts.map +1 -0
  257. package/esm/index.js +9 -0
  258. package/esm/labelElements.d.ts +22 -0
  259. package/esm/labelElements.d.ts.map +1 -0
  260. package/esm/labelElements.js +224 -0
  261. package/esm/maqlLanguageService.d.ts +56 -0
  262. package/esm/maqlLanguageService.d.ts.map +1 -0
  263. package/esm/maqlLanguageService.js +104 -0
  264. package/esm/maqlObjectTypes.d.ts +17 -0
  265. package/esm/maqlObjectTypes.d.ts.map +1 -0
  266. package/esm/maqlObjectTypes.js +30 -0
  267. package/esm/maqlServer.d.ts +4 -0
  268. package/esm/maqlServer.d.ts.map +1 -0
  269. package/esm/maqlServer.js +78 -0
  270. package/esm/metadata/model.d.ts +162 -0
  271. package/esm/metadata/model.d.ts.map +1 -0
  272. package/esm/metadata/model.js +143 -0
  273. package/esm/metadata/parameters.d.ts +16 -0
  274. package/esm/metadata/parameters.d.ts.map +1 -0
  275. package/esm/metadata/parameters.js +37 -0
  276. package/esm/metadata/types.d.ts +16 -0
  277. package/esm/metadata/types.d.ts.map +1 -0
  278. package/esm/metadata/types.js +2 -0
  279. package/esm/metadataService.d.ts +56 -0
  280. package/esm/metadataService.d.ts.map +1 -0
  281. package/esm/metadataService.js +159 -0
  282. package/esm/node/main.d.ts +2 -0
  283. package/esm/node/main.d.ts.map +1 -0
  284. package/esm/node/main.js +18 -0
  285. package/esm/parameterConstraints.d.ts +5 -0
  286. package/esm/parameterConstraints.d.ts.map +1 -0
  287. package/esm/parameterConstraints.js +197 -0
  288. package/esm/parseMaql.d.ts +43 -0
  289. package/esm/parseMaql.d.ts.map +1 -0
  290. package/esm/parseMaql.js +96 -0
  291. package/esm/renderParameters.d.ts +41 -0
  292. package/esm/renderParameters.d.ts.map +1 -0
  293. package/esm/renderParameters.js +76 -0
  294. package/esm/sdk-maql-language-server.d.ts +496 -0
  295. package/esm/tests/metadata.test.helpers.d.ts +8 -0
  296. package/esm/tests/metadata.test.helpers.d.ts.map +1 -0
  297. package/esm/tests/metadata.test.helpers.js +468 -0
  298. package/esm/tokenRanges.d.ts +36 -0
  299. package/esm/tokenRanges.d.ts.map +1 -0
  300. package/esm/tokenRanges.js +55 -0
  301. package/esm/tsdoc-metadata.json +11 -0
  302. package/esm/types/hierarchy.d.ts +37 -0
  303. package/esm/types/hierarchy.d.ts.map +1 -0
  304. package/esm/types/hierarchy.js +165 -0
  305. package/esm/types/signatures.d.ts +40 -0
  306. package/esm/types/signatures.d.ts.map +1 -0
  307. package/esm/types/signatures.js +141 -0
  308. package/esm/types/typeChecking.d.ts +54 -0
  309. package/esm/types/typeChecking.d.ts.map +1 -0
  310. package/esm/types/typeChecking.js +295 -0
  311. package/esm/types/typeModel.d.ts +18 -0
  312. package/esm/types/typeModel.d.ts.map +1 -0
  313. package/esm/types/typeModel.js +84 -0
  314. package/package.json +83 -3
@@ -0,0 +1,224 @@
1
+ // (C) 2021-2026 GoodData Corporation
2
+ import { AbstractAstVisitor, positionInRange, } from "@gooddata/maql-antlr4ts";
3
+ import { isTigerType, tigerIdTypeToObjectType } from "@gooddata/sdk-backend-tiger";
4
+ import { normalizeMaqlObjectType } from "./maqlObjectTypes.js";
5
+ import { AntlrRange, isMaqlObject, isMaqlString, } from "./tokenRanges.js";
6
+ /**
7
+ * Uses a visitor to make a depth-first tree-walk of a MAQL parse tree to find a correct "LabelContext"
8
+ * for a given caret offset
9
+ */
10
+ export function findLabelContext(metric, position) {
11
+ const visitor = new LabelContextFinder(position);
12
+ const ast = metric.ast;
13
+ visitor.visit(ast);
14
+ return visitor.caretLabelContext ?? new LabelContext();
15
+ }
16
+ export function labelElementsFinder(metric) {
17
+ const visitor = new LabelElementsFinder();
18
+ visitor.visit(metric.ast);
19
+ return visitor.pairs;
20
+ }
21
+ export class LabelContext {
22
+ labels = [];
23
+ strings = [];
24
+ timeMacros = [];
25
+ get operands() {
26
+ return [...this.labels, ...this.strings, ...this.timeMacros];
27
+ }
28
+ isEmpty() {
29
+ return this.operands.length === 0;
30
+ }
31
+ addString(text, range) {
32
+ this.strings.push({
33
+ string: text,
34
+ range: range,
35
+ });
36
+ return this;
37
+ }
38
+ addLabel(maqlType, id, range, _space) {
39
+ // MAQL spells a computed attribute `computed_attribute`; the Tiger type is what the
40
+ // elements query and the catalog lookups understand.
41
+ const type = normalizeMaqlObjectType(maqlType);
42
+ if (!isTigerType(type)) {
43
+ return this; // `type "${type}" of the object {${type}${id}${space ? `/${space}` : ""}} is not valid`
44
+ }
45
+ // A computed attribute buckets rows into string values like a label does, so its values are
46
+ // listed and validated the same way. Its ref carries the computedAttribute type, which the
47
+ // elements query uses to address it (it has no labels of its own).
48
+ if (type === "attribute" || type === "label" || type === "computedAttribute") {
49
+ this.labels.push({
50
+ actualType: type,
51
+ tigerType: type,
52
+ id: id,
53
+ ref: {
54
+ type: tigerIdTypeToObjectType[type],
55
+ identifier: id,
56
+ },
57
+ range: range,
58
+ });
59
+ }
60
+ return this;
61
+ }
62
+ addTimeMacro(transformationFunction, granularity, range) {
63
+ this.timeMacros.push({
64
+ transformationFunction: transformationFunction,
65
+ granularity: granularity,
66
+ range: range,
67
+ });
68
+ return this;
69
+ }
70
+ add(other) {
71
+ other.labels.forEach((label) => this.labels.push(label));
72
+ other.timeMacros.forEach((timeMacro) => this.timeMacros.push(timeMacro));
73
+ other.strings.forEach((str) => this.strings.push(str));
74
+ return this;
75
+ }
76
+ toString() {
77
+ return ("# LabelContext:\n## labels:\n" +
78
+ this.labels.map((label) => `${label.tigerType}/${label.id}`).join("\n") +
79
+ "\n## strings:\n" +
80
+ this.strings.map((string) => string.string).join("\n"));
81
+ }
82
+ }
83
+ class LabelContextMarker extends AbstractAstVisitor {
84
+ defaultResult() {
85
+ return new LabelContext();
86
+ }
87
+ aggregateResult(aggregate, nextResult) {
88
+ return aggregate.add(nextResult);
89
+ }
90
+ visitFunctionNode(node) {
91
+ const lc = new LabelContext();
92
+ if (node.range === undefined)
93
+ return lc;
94
+ const name = node.name.toUpperCase();
95
+ const range = AntlrRange.fromAstRange(node.range);
96
+ if (node.type === "time macro") {
97
+ // assume that the first argument of time macro is always granularity
98
+ const granularity = node.content[0]?.value;
99
+ if (granularity) {
100
+ lc.addTimeMacro(name, granularity, range);
101
+ }
102
+ }
103
+ else if (node.type === "function") {
104
+ // special case for MIN and MAX functions
105
+ // to remove this special case we would need "source" information in function definition
106
+ if (name === "MAX" || name === "MIN") {
107
+ // ignore second argument of MIN/MAX function, as it is just a "witness attribute"
108
+ const [expr, _witness] = node.content;
109
+ if (expr) {
110
+ lc.add(this.visit(expr));
111
+ }
112
+ }
113
+ }
114
+ else {
115
+ this.visitChildren(node);
116
+ }
117
+ return lc;
118
+ }
119
+ visitIdentifierNode(node) {
120
+ const lc = new LabelContext();
121
+ if (node.range === undefined)
122
+ return lc;
123
+ const range = AntlrRange.fromAstRange(node.range);
124
+ lc.addLabel(node.objectType, node.id, range, node.space);
125
+ return lc;
126
+ }
127
+ visitStringLiteralNode(node) {
128
+ const lc = new LabelContext();
129
+ if (node.range === undefined)
130
+ return lc;
131
+ const range = AntlrRange.fromAstRange(node.range);
132
+ return lc.addString(node.value, range);
133
+ }
134
+ }
135
+ /**
136
+ * Finds a label context relevant to provided caret position
137
+ */
138
+ class LabelContextFinder extends LabelContextMarker {
139
+ caretPosition;
140
+ caretLabelContext;
141
+ continueTraversal = true;
142
+ constructor(caretPosition) {
143
+ super();
144
+ this.caretPosition = caretPosition;
145
+ }
146
+ visit(node) {
147
+ const lc = super.visit(node);
148
+ if (this.continueTraversal &&
149
+ node.contextRange &&
150
+ positionInRange(this.caretPosition, node.contextRange)) {
151
+ this.caretLabelContext = lc;
152
+ }
153
+ return lc;
154
+ }
155
+ visitOperatorNode(node) {
156
+ // postorder AST traversal
157
+ const lc = super.visitOperatorNode(node);
158
+ // if the caret is in the operands of the following operators, use their label context and look no further
159
+ // idea: it may make sense to add "label context" to type information and unify this with findContext
160
+ switch (node.type) {
161
+ case "=":
162
+ case "<>":
163
+ case ">=":
164
+ case "<=":
165
+ case "<":
166
+ case ">":
167
+ case "like":
168
+ case "ilike":
169
+ case "not like":
170
+ case "not ilike":
171
+ case "between":
172
+ case "not between":
173
+ case "in":
174
+ case "not in":
175
+ if (this.continueTraversal &&
176
+ node.contextRange &&
177
+ positionInRange(this.caretPosition, node.contextRange)) {
178
+ this.continueTraversal = false;
179
+ this.caretLabelContext = lc;
180
+ }
181
+ }
182
+ // the result of filter expression is a boolean value, therefore inner label context is discarded
183
+ return this.defaultResult();
184
+ }
185
+ }
186
+ /**
187
+ * Traverses the AST to collect all instances of strings in relation to labels. This can then be used to validate
188
+ * label elements.
189
+ */
190
+ class LabelElementsFinder extends LabelContextMarker {
191
+ pairs = [];
192
+ visitOperatorNode(node) {
193
+ const operandContexts = node.content.map((operand) => this.visit(operand).operands);
194
+ if (node.type !== "like" && node.type !== "not like") {
195
+ this.addOperands(operandContexts);
196
+ }
197
+ return this.defaultResult();
198
+ }
199
+ addOperands(operandContexts) {
200
+ if (operandContexts.length <= 1) {
201
+ return;
202
+ }
203
+ const head = operandContexts[0];
204
+ const tail = operandContexts.slice(1);
205
+ for (const headOp of head) {
206
+ for (const ops of tail) {
207
+ for (const op of ops) {
208
+ this.pushPair(headOp, op);
209
+ }
210
+ }
211
+ }
212
+ this.addOperands(tail);
213
+ }
214
+ pushPair(left, right) {
215
+ if (isMaqlObject(left)) {
216
+ if (isMaqlString(right)) {
217
+ this.pairs.push([left, right]);
218
+ }
219
+ }
220
+ else if (isMaqlObject(right)) {
221
+ this.pushPair(right, left);
222
+ }
223
+ }
224
+ }
@@ -0,0 +1,56 @@
1
+ import { type CompletionItem, type CompletionList, type Diagnostic, type FormattingOptions, type InitializeResult, type SemanticTokens, type TextEdit } from "vscode-languageserver";
2
+ import { type Position, type Range, type TextDocument } from "vscode-languageserver-textdocument";
3
+ import { type IDecoration } from "./decorations.js";
4
+ import { type Locale } from "./docs/index.js";
5
+ import { type HighlightToken } from "./highlight/semanticsHighlight.js";
6
+ import { type HoverWithData } from "./hover.js";
7
+ import { type IMetadataInterface } from "./metadata/types.js";
8
+ /**
9
+ * @internal
10
+ */
11
+ export interface ILanguageService {
12
+ initialize(): InitializeResult;
13
+ doValidation(textDocument: TextDocument): Promise<Diagnostic[]>;
14
+ doCompletion(textDocument: TextDocument, position: Position): Promise<CompletionList>;
15
+ doCompletionResolve(item: CompletionItem): Promise<CompletionItem>;
16
+ doHighlightTokens(textDocument: TextDocument): Promise<HighlightToken[]>;
17
+ doSemanticTokens(textDocument: TextDocument): Promise<SemanticTokens>;
18
+ doDecoration(textDocument: TextDocument): Promise<IDecoration[]>;
19
+ doFormat(textDocument: TextDocument, options: FormattingOptions): Promise<TextEdit[]>;
20
+ doFormatRange(textDocument: TextDocument, range: Range, options: FormattingOptions): Promise<TextEdit[]>;
21
+ }
22
+ /**
23
+ * MAQL Language Service class
24
+ * A service to manage the capabilities of the MAQL language server
25
+ * Can be supplied by Metadata API credentials to automatically
26
+ * retrieve typed ldmObjects from the Logical Data Model (LDM)
27
+ *
28
+ * @internal
29
+ */
30
+ export declare class MaqlLanguageService implements ILanguageService {
31
+ constructor(locale?: Locale, metadataService?: IMetadataInterface);
32
+ private _locale;
33
+ get locale(): Locale;
34
+ set locale(locale: string);
35
+ private metadataService?;
36
+ private ldmObjects;
37
+ private labelElementsFunc?;
38
+ private docs;
39
+ private isValidLocale;
40
+ private setMetadataServiceMethods;
41
+ /**
42
+ * A method to get information about the capabilities of the service
43
+ */
44
+ initialize(): InitializeResult;
45
+ doCompletion(textDocument: TextDocument, position: Position): Promise<CompletionList>;
46
+ doCompletionResolve(item: CompletionItem): Promise<CompletionItem>;
47
+ doHighlightTokens(textDocument: TextDocument): Promise<HighlightToken[]>;
48
+ doSemanticTokens(textDocument: TextDocument): Promise<SemanticTokens>;
49
+ doValidation(textDocument: TextDocument): Promise<Diagnostic[]>;
50
+ doDecoration(textDocument: TextDocument): Promise<IDecoration[]>;
51
+ doHover(textDocument: TextDocument, position: Position): Promise<HoverWithData | null>;
52
+ doFormat(textDocument: TextDocument, options: FormattingOptions): Promise<TextEdit[]>;
53
+ doFormatRange(textDocument: TextDocument, range: Range, options: FormattingOptions): Promise<TextEdit[]>;
54
+ private handleMetadataServiceError;
55
+ }
56
+ //# sourceMappingURL=maqlLanguageService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maqlLanguageService.d.ts","sourceRoot":"","sources":["../src/maqlLanguageService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ // (C) 2021-2026 GoodData Corporation
2
+ import { TextDocumentSyncKind, } from "vscode-languageserver";
3
+ import { complete, resolve } from "./completions/complete.js";
4
+ import { decorate } from "./decorations.js";
5
+ import { validate } from "./diagnostics.js";
6
+ import { docsIndex, locales } from "./docs/index.js";
7
+ import { format, formatRange } from "./format.js";
8
+ import { convertToSemanticTokens } from "./highlight/convert.js";
9
+ import { semanticTokensLegend, semanticsFull } from "./highlight/semanticsHighlight.js";
10
+ import { hover } from "./hover.js";
11
+ /**
12
+ * MAQL Language Service class
13
+ * A service to manage the capabilities of the MAQL language server
14
+ * Can be supplied by Metadata API credentials to automatically
15
+ * retrieve typed ldmObjects from the Logical Data Model (LDM)
16
+ *
17
+ * @internal
18
+ */
19
+ export class MaqlLanguageService {
20
+ constructor(locale = "en-us", metadataService) {
21
+ this._locale = locale;
22
+ this.metadataService = metadataService;
23
+ this.setMetadataServiceMethods();
24
+ }
25
+ _locale;
26
+ get locale() {
27
+ return this._locale;
28
+ }
29
+ set locale(locale) {
30
+ const lowercaseLocale = locale.toLowerCase();
31
+ if (this.isValidLocale(lowercaseLocale)) {
32
+ this._locale = lowercaseLocale;
33
+ }
34
+ }
35
+ metadataService;
36
+ ldmObjects = Promise.resolve();
37
+ labelElementsFunc;
38
+ docs = docsIndex;
39
+ isValidLocale(locale) {
40
+ return locales.includes(locale);
41
+ }
42
+ setMetadataServiceMethods() {
43
+ if (this.metadataService) {
44
+ this.ldmObjects = this.metadataService
45
+ .getLdmObjects()
46
+ .catch((reason) => this.handleMetadataServiceError(reason));
47
+ this.labelElementsFunc = this.metadataService
48
+ .getLabelElementsFunction()
49
+ .catch((reason) => this.handleMetadataServiceError(reason));
50
+ }
51
+ }
52
+ /**
53
+ * A method to get information about the capabilities of the service
54
+ */
55
+ initialize() {
56
+ return {
57
+ capabilities: {
58
+ textDocumentSync: TextDocumentSyncKind.Full,
59
+ completionProvider: {
60
+ resolveProvider: true,
61
+ triggerCharacters: [" ", "(", "/", "{"],
62
+ },
63
+ semanticTokensProvider: {
64
+ legend: semanticTokensLegend,
65
+ full: true,
66
+ range: false,
67
+ },
68
+ hoverProvider: true,
69
+ documentFormattingProvider: true,
70
+ documentRangeFormattingProvider: true,
71
+ },
72
+ };
73
+ }
74
+ async doCompletion(textDocument, position) {
75
+ return complete(textDocument.getText(), textDocument.offsetAt(position), (await this.ldmObjects) || undefined, (await this.labelElementsFunc) || undefined);
76
+ }
77
+ async doCompletionResolve(item) {
78
+ return resolve(item, (resolveTag) => Promise.resolve(this.docs[this._locale][resolveTag]));
79
+ }
80
+ doHighlightTokens(textDocument) {
81
+ return Promise.resolve(semanticsFull(textDocument.getText()));
82
+ }
83
+ async doSemanticTokens(textDocument) {
84
+ return convertToSemanticTokens(await this.doHighlightTokens(textDocument));
85
+ }
86
+ async doValidation(textDocument) {
87
+ return validate(textDocument.getText(), (await this.ldmObjects) || undefined, (await this.labelElementsFunc) || undefined);
88
+ }
89
+ async doDecoration(textDocument) {
90
+ return decorate(textDocument.getText(), (await this.ldmObjects) || undefined);
91
+ }
92
+ async doHover(textDocument, position) {
93
+ return hover(textDocument.getText(), position, (await this.ldmObjects) || undefined);
94
+ }
95
+ doFormat(textDocument, options) {
96
+ return Promise.resolve(format(textDocument.getText(), options));
97
+ }
98
+ doFormatRange(textDocument, range, options) {
99
+ return Promise.resolve(formatRange(textDocument.getText(), range, options));
100
+ }
101
+ handleMetadataServiceError(_reason) {
102
+ // TODO: log failures (dependent on environment - web/node)
103
+ }
104
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Translates an object type as written in MAQL into the Tiger entity type it denotes. Types that
3
+ * are spelled identically on both sides are returned unchanged, so this is safe to apply to any
4
+ * `{type/id}` token before looking the type up.
5
+ *
6
+ * Keep the MAQL spelling for anything user-facing (diagnostics quote what the author wrote).
7
+ *
8
+ * @internal
9
+ */
10
+ export declare function normalizeMaqlObjectType(maqlObjectType: string): string;
11
+ /**
12
+ * Translates a Tiger entity type into the way MAQL spells it. Use it whenever a `{type/id}`
13
+ * reference is written back into MAQL text - a catalog object carries the Tiger type, which the
14
+ * parser would reject for computed attributes.
15
+ */
16
+ export declare function toMaqlObjectType(tigerType: string): string;
17
+ //# sourceMappingURL=maqlObjectTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maqlObjectTypes.d.ts","sourceRoot":"","sources":["../src/maqlObjectTypes.ts"],"names":[],"mappings":"AAeA;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D"}
@@ -0,0 +1,30 @@
1
+ // (C) 2026 GoodData Corporation
2
+ /**
3
+ * MAQL spells the computed-attribute object type with an underscore (`{computed_attribute/id}`),
4
+ * while the Tiger entity type it maps onto is camelCase (`computedAttribute`). Every other MAQL
5
+ * object type is spelled the same on both sides, so this is the only bridge the two need.
6
+ */
7
+ const MAQL_OBJECT_TYPE_TO_TIGER_TYPE = {
8
+ computed_attribute: "computedAttribute",
9
+ };
10
+ const TIGER_TYPE_TO_MAQL_OBJECT_TYPE = Object.fromEntries(Object.entries(MAQL_OBJECT_TYPE_TO_TIGER_TYPE).map(([maqlType, tigerType]) => [tigerType, maqlType]));
11
+ /**
12
+ * Translates an object type as written in MAQL into the Tiger entity type it denotes. Types that
13
+ * are spelled identically on both sides are returned unchanged, so this is safe to apply to any
14
+ * `{type/id}` token before looking the type up.
15
+ *
16
+ * Keep the MAQL spelling for anything user-facing (diagnostics quote what the author wrote).
17
+ *
18
+ * @internal
19
+ */
20
+ export function normalizeMaqlObjectType(maqlObjectType) {
21
+ return MAQL_OBJECT_TYPE_TO_TIGER_TYPE[maqlObjectType] ?? maqlObjectType;
22
+ }
23
+ /**
24
+ * Translates a Tiger entity type into the way MAQL spells it. Use it whenever a `{type/id}`
25
+ * reference is written back into MAQL text - a catalog object carries the Tiger type, which the
26
+ * parser would reject for computed attributes.
27
+ */
28
+ export function toMaqlObjectType(tigerType) {
29
+ return TIGER_TYPE_TO_MAQL_OBJECT_TYPE[tigerType] ?? tigerType;
30
+ }
@@ -0,0 +1,4 @@
1
+ import { type Connection } from "vscode-languageserver";
2
+ import { type IMetadataInterface } from "./metadata/types.js";
3
+ export declare function startServer(connection: Connection, metadataService?: IMetadataInterface): void;
4
+ //# sourceMappingURL=maqlServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maqlServer.d.ts","sourceRoot":"","sources":["../src/maqlServer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,uBAAuB,CAAC;AAIvE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,kBAAkB,QAuFvF"}
@@ -0,0 +1,78 @@
1
+ // (C) 2021-2026 GoodData Corporation
2
+ import { TextDocuments } from "vscode-languageserver";
3
+ import { TextDocument } from "vscode-languageserver-textdocument";
4
+ import { MaqlLanguageService } from "./maqlLanguageService.js";
5
+ export function startServer(connection, metadataService) {
6
+ const languageService = new MaqlLanguageService("en-us", metadataService);
7
+ const documents = new TextDocuments(TextDocument);
8
+ documents.listen(connection);
9
+ connection.onInitialize((params) => {
10
+ connection.tracer.log("initialize");
11
+ if (params.locale) {
12
+ languageService.locale = params.locale;
13
+ }
14
+ return languageService.initialize();
15
+ });
16
+ connection.onInitialized(() => { });
17
+ documents.onDidOpen(() => { });
18
+ documents.onDidClose(() => { });
19
+ documents.onDidChangeContent((params) => {
20
+ languageService
21
+ .doValidation(params.document)
22
+ .then((diagnostics) => {
23
+ connection.tracer.log(`validateTextDocument uri=${params.document.uri}`);
24
+ void connection.sendDiagnostics({
25
+ uri: params.document.uri,
26
+ diagnostics: diagnostics,
27
+ });
28
+ })
29
+ .catch((reason) => {
30
+ connection.console.error(`FAILED validateTextDocument uri=${params.document.uri} ${reason}`);
31
+ // clear diagnostics, because no diagnostics is better than false diagnostics
32
+ void connection.sendDiagnostics({
33
+ uri: params.document.uri,
34
+ diagnostics: [],
35
+ });
36
+ });
37
+ });
38
+ documents.onDidSave(() => { });
39
+ connection.onCompletion((params) => {
40
+ const document = documents.get(params.textDocument.uri);
41
+ if (!document) {
42
+ return null;
43
+ }
44
+ return languageService.doCompletion(document, params.position);
45
+ });
46
+ connection.onCompletionResolve((item) => languageService.doCompletionResolve(item));
47
+ connection.languages.semanticTokens.on(async (params) => {
48
+ const document = documents.get(params.textDocument.uri);
49
+ if (!document) {
50
+ return {
51
+ data: [],
52
+ };
53
+ }
54
+ return await languageService.doSemanticTokens(document);
55
+ });
56
+ connection.onHover((params) => {
57
+ const document = documents.get(params.textDocument.uri);
58
+ if (!document) {
59
+ return null;
60
+ }
61
+ return languageService.doHover(document, params.position);
62
+ });
63
+ connection.onDocumentFormatting((params) => {
64
+ const document = documents.get(params.textDocument.uri);
65
+ if (!document) {
66
+ return null;
67
+ }
68
+ return languageService.doFormat(document, params.options);
69
+ });
70
+ connection.onDocumentRangeFormatting((params) => {
71
+ const document = documents.get(params.textDocument.uri);
72
+ if (!document) {
73
+ return null;
74
+ }
75
+ return languageService.doFormatRange(document, params.range, params.options);
76
+ });
77
+ connection.listen();
78
+ }