xq-lsp 1.0.0 → 1.3.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 (598) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +119 -12
  3. package/builtins/builtins-array.xq +34 -9
  4. package/builtins/builtins-fn.xq +492 -101
  5. package/builtins/builtins-map.xq +6 -2
  6. package/builtins/builtins-math.xq +1 -1
  7. package/builtins/builtins-xs.xq +63 -0
  8. package/demo/index.html +151 -0
  9. package/demo/main.ts +307 -0
  10. package/demo/package-lock.json +1301 -0
  11. package/demo/package.json +20 -0
  12. package/demo/vite.config.ts +15 -0
  13. package/dist/analyzer.d.ts +28 -0
  14. package/dist/analyzer.js +128 -40
  15. package/dist/ast-nodes.d.ts +90 -0
  16. package/dist/ast-nodes.js +305 -0
  17. package/dist/builtins.js +3 -0
  18. package/dist/completion-core.d.ts +17 -0
  19. package/dist/completion-core.js +113 -0
  20. package/dist/completion.d.ts +3 -8
  21. package/dist/completion.js +10 -150
  22. package/dist/config.d.ts +13 -0
  23. package/dist/config.js +81 -0
  24. package/dist/context-item-diagnostics.d.ts +19 -0
  25. package/dist/context-item-diagnostics.js +133 -0
  26. package/dist/definition.d.ts +4 -0
  27. package/dist/definition.js +67 -0
  28. package/dist/features.d.ts +1 -2
  29. package/dist/features.js +81 -112
  30. package/dist/functioncall-diagnostics.d.ts +12 -0
  31. package/dist/functioncall-diagnostics.js +87 -0
  32. package/dist/hover-core.d.ts +39 -0
  33. package/dist/hover-core.js +87 -0
  34. package/dist/namespace-diagnostics.d.ts +33 -0
  35. package/dist/namespace-diagnostics.js +108 -0
  36. package/dist/qt4-worker.d.ts +18 -0
  37. package/dist/qt4-worker.js +46 -0
  38. package/dist/runtimes.d.ts +2 -0
  39. package/dist/runtimes.js +67 -0
  40. package/dist/server.js +254 -50
  41. package/dist/test-utils.d.ts +3 -0
  42. package/dist/test-utils.js +16 -0
  43. package/dist/typechecker.d.ts +7 -0
  44. package/dist/typechecker.js +388 -0
  45. package/dist/types.d.ts +30 -6
  46. package/dist/types.js +6 -0
  47. package/dist/unused-diagnostics.d.ts +19 -0
  48. package/dist/unused-diagnostics.js +202 -0
  49. package/firebase.json +12 -0
  50. package/package.json +34 -27
  51. package/release-please-config.json +16 -0
  52. package/scripts/generate-existdb.ts +890 -0
  53. package/src/analyzer.test.ts +163 -0
  54. package/src/analyzer.ts +139 -41
  55. package/src/ast-nodes.ts +348 -0
  56. package/src/builtins.test.ts +32 -0
  57. package/src/builtins.ts +3 -0
  58. package/src/completion-core.ts +139 -0
  59. package/src/completion.test.ts +152 -0
  60. package/src/completion.ts +11 -173
  61. package/src/config.ts +90 -0
  62. package/src/context-item-diagnostics.test.ts +182 -0
  63. package/src/context-item-diagnostics.ts +143 -0
  64. package/src/definition.ts +82 -0
  65. package/src/features.test.ts +110 -0
  66. package/src/features.ts +87 -128
  67. package/src/functioncall-diagnostics.test.ts +169 -0
  68. package/src/functioncall-diagnostics.ts +110 -0
  69. package/src/hover-core.ts +114 -0
  70. package/src/lsp-config.test.ts +183 -0
  71. package/src/namespace-diagnostics.test.ts +162 -0
  72. package/src/namespace-diagnostics.ts +133 -0
  73. package/src/qt4-diagnostic.test.ts +271 -0
  74. package/src/qt4-snaps/app-CatalogCheck.snap +1 -0
  75. package/src/qt4-snaps/app-Demos.snap +18 -0
  76. package/src/qt4-snaps/app-Duplicates.snap +1 -0
  77. package/src/qt4-snaps/app-FunctxFn.snap +162 -0
  78. package/src/qt4-snaps/app-FunctxFunctx.snap +714 -0
  79. package/src/qt4-snaps/app-UseCaseCompoundValues.snap +1 -0
  80. package/src/qt4-snaps/app-UseCaseJSON.snap +1 -0
  81. package/src/qt4-snaps/app-UseCaseNLP.snap +1 -0
  82. package/src/qt4-snaps/app-UseCaseNS.snap +1 -0
  83. package/src/qt4-snaps/app-UseCaseR.snap +1 -0
  84. package/src/qt4-snaps/app-UseCaseR31.snap +1 -0
  85. package/src/qt4-snaps/app-UseCaseSEQ.snap +1 -0
  86. package/src/qt4-snaps/app-UseCaseSGML.snap +1 -0
  87. package/src/qt4-snaps/app-UseCaseSTRING.snap +1 -0
  88. package/src/qt4-snaps/app-UseCaseTREE.snap +1 -0
  89. package/src/qt4-snaps/app-UseCaseXMP.snap +1 -0
  90. package/src/qt4-snaps/app-Walmsley.snap +1 -0
  91. package/src/qt4-snaps/app-XMark.snap +10 -0
  92. package/src/qt4-snaps/array-append.snap +1 -0
  93. package/src/qt4-snaps/array-filter.snap +10 -0
  94. package/src/qt4-snaps/array-flatten.snap +1 -0
  95. package/src/qt4-snaps/array-fold-left.snap +1 -0
  96. package/src/qt4-snaps/array-fold-right.snap +1 -0
  97. package/src/qt4-snaps/array-for-each-pair.snap +1 -0
  98. package/src/qt4-snaps/array-for-each.snap +1 -0
  99. package/src/qt4-snaps/array-get.snap +1 -0
  100. package/src/qt4-snaps/array-head.snap +1 -0
  101. package/src/qt4-snaps/array-insert-before.snap +1 -0
  102. package/src/qt4-snaps/array-join.snap +1 -0
  103. package/src/qt4-snaps/array-put.snap +1 -0
  104. package/src/qt4-snaps/array-remove.snap +1 -0
  105. package/src/qt4-snaps/array-reverse.snap +1 -0
  106. package/src/qt4-snaps/array-size.snap +1 -0
  107. package/src/qt4-snaps/array-sort.snap +1 -0
  108. package/src/qt4-snaps/array-subarray.snap +1 -0
  109. package/src/qt4-snaps/array-tail.snap +1 -0
  110. package/src/qt4-snaps/bin-and.snap +1 -0
  111. package/src/qt4-snaps/bin-bin.snap +1 -0
  112. package/src/qt4-snaps/bin-decode-string.snap +1 -0
  113. package/src/qt4-snaps/bin-encode-string.snap +1 -0
  114. package/src/qt4-snaps/bin-find.snap +1 -0
  115. package/src/qt4-snaps/bin-from-octets.snap +1 -0
  116. package/src/qt4-snaps/bin-hex.snap +1 -0
  117. package/src/qt4-snaps/bin-insert-before.snap +1 -0
  118. package/src/qt4-snaps/bin-join.snap +1 -0
  119. package/src/qt4-snaps/bin-length.snap +1 -0
  120. package/src/qt4-snaps/bin-not.snap +1 -0
  121. package/src/qt4-snaps/bin-octal.snap +1 -0
  122. package/src/qt4-snaps/bin-or.snap +1 -0
  123. package/src/qt4-snaps/bin-pack-double.snap +1 -0
  124. package/src/qt4-snaps/bin-pack-float.snap +1 -0
  125. package/src/qt4-snaps/bin-pack-integer.snap +1 -0
  126. package/src/qt4-snaps/bin-pad-left.snap +1 -0
  127. package/src/qt4-snaps/bin-pad-right.snap +1 -0
  128. package/src/qt4-snaps/bin-part.snap +1 -0
  129. package/src/qt4-snaps/bin-shift.snap +1 -0
  130. package/src/qt4-snaps/bin-to-octets.snap +1 -0
  131. package/src/qt4-snaps/bin-unpack-double.snap +1 -0
  132. package/src/qt4-snaps/bin-unpack-float.snap +1 -0
  133. package/src/qt4-snaps/bin-unpack-integer.snap +1 -0
  134. package/src/qt4-snaps/bin-unpack-unsigned-integer.snap +1 -0
  135. package/src/qt4-snaps/bin-xor.snap +1 -0
  136. package/src/qt4-snaps/file-file.snap +1 -0
  137. package/src/qt4-snaps/fn-QName.snap +1 -0
  138. package/src/qt4-snaps/fn-abs.snap +1 -0
  139. package/src/qt4-snaps/fn-adjust-date-to-timezone.snap +1 -0
  140. package/src/qt4-snaps/fn-adjust-dateTime-to-timezone.snap +1 -0
  141. package/src/qt4-snaps/fn-adjust-time-to-timezone.snap +1 -0
  142. package/src/qt4-snaps/fn-analyze-string.snap +1 -0
  143. package/src/qt4-snaps/fn-apply.snap +1 -0
  144. package/src/qt4-snaps/fn-available-environment-variables.snap +1 -0
  145. package/src/qt4-snaps/fn-avg.snap +1 -0
  146. package/src/qt4-snaps/fn-base-uri.snap +1 -0
  147. package/src/qt4-snaps/fn-boolean.snap +1 -0
  148. package/src/qt4-snaps/fn-ceiling.snap +1 -0
  149. package/src/qt4-snaps/fn-codepoint-equal.snap +1 -0
  150. package/src/qt4-snaps/fn-codepoints-to-string.snap +1 -0
  151. package/src/qt4-snaps/fn-collation-key.snap +1 -0
  152. package/src/qt4-snaps/fn-collection.snap +1 -0
  153. package/src/qt4-snaps/fn-compare.snap +1 -0
  154. package/src/qt4-snaps/fn-concat.snap +1 -0
  155. package/src/qt4-snaps/fn-contains-token.snap +1 -0
  156. package/src/qt4-snaps/fn-contains.snap +1 -0
  157. package/src/qt4-snaps/fn-count.snap +1 -0
  158. package/src/qt4-snaps/fn-current-date.snap +1 -0
  159. package/src/qt4-snaps/fn-current-dateTime.snap +1 -0
  160. package/src/qt4-snaps/fn-current-time.snap +1 -0
  161. package/src/qt4-snaps/fn-data.snap +8 -0
  162. package/src/qt4-snaps/fn-dateTime.snap +1 -0
  163. package/src/qt4-snaps/fn-day-from-date.snap +1 -0
  164. package/src/qt4-snaps/fn-day-from-dateTime.snap +1 -0
  165. package/src/qt4-snaps/fn-days-from-duration.snap +1 -0
  166. package/src/qt4-snaps/fn-deep-equal.snap +1 -0
  167. package/src/qt4-snaps/fn-default-collation.snap +1 -0
  168. package/src/qt4-snaps/fn-default-language.snap +1 -0
  169. package/src/qt4-snaps/fn-distinct-values.snap +1 -0
  170. package/src/qt4-snaps/fn-doc-available.snap +1 -0
  171. package/src/qt4-snaps/fn-doc.snap +1 -0
  172. package/src/qt4-snaps/fn-document-uri.snap +8 -0
  173. package/src/qt4-snaps/fn-element-with-id.snap +1 -0
  174. package/src/qt4-snaps/fn-empty.snap +1 -0
  175. package/src/qt4-snaps/fn-encode-for-uri.snap +1 -0
  176. package/src/qt4-snaps/fn-ends-with.snap +1 -0
  177. package/src/qt4-snaps/fn-environment-variable.snap +1 -0
  178. package/src/qt4-snaps/fn-error.snap +128 -0
  179. package/src/qt4-snaps/fn-escape-html-uri.snap +1 -0
  180. package/src/qt4-snaps/fn-exactly-one.snap +1 -0
  181. package/src/qt4-snaps/fn-exists.snap +1 -0
  182. package/src/qt4-snaps/fn-false.snap +1 -0
  183. package/src/qt4-snaps/fn-filter.snap +10 -0
  184. package/src/qt4-snaps/fn-floor.snap +1 -0
  185. package/src/qt4-snaps/fn-fold-left.snap +1 -0
  186. package/src/qt4-snaps/fn-fold-right.snap +1 -0
  187. package/src/qt4-snaps/fn-for-each-pair.snap +10 -0
  188. package/src/qt4-snaps/fn-for-each.snap +10 -0
  189. package/src/qt4-snaps/fn-format-date.snap +26 -0
  190. package/src/qt4-snaps/fn-format-dateTime.snap +1 -0
  191. package/src/qt4-snaps/fn-format-integer.snap +1 -0
  192. package/src/qt4-snaps/fn-format-number.snap +38 -0
  193. package/src/qt4-snaps/fn-format-time.snap +1 -0
  194. package/src/qt4-snaps/fn-function-arity.snap +1 -0
  195. package/src/qt4-snaps/fn-function-lookup.snap +1 -0
  196. package/src/qt4-snaps/fn-function-name.snap +1 -0
  197. package/src/qt4-snaps/fn-generate-id.snap +18 -0
  198. package/src/qt4-snaps/fn-has-children.snap +26 -0
  199. package/src/qt4-snaps/fn-head.snap +1 -0
  200. package/src/qt4-snaps/fn-hours-from-dateTime.snap +1 -0
  201. package/src/qt4-snaps/fn-hours-from-duration.snap +1 -0
  202. package/src/qt4-snaps/fn-hours-from-time.snap +1 -0
  203. package/src/qt4-snaps/fn-id.snap +10 -0
  204. package/src/qt4-snaps/fn-idref.snap +10 -0
  205. package/src/qt4-snaps/fn-implicit-timezone.snap +1 -0
  206. package/src/qt4-snaps/fn-in-scope-prefixes.snap +26 -0
  207. package/src/qt4-snaps/fn-index-of.snap +1 -0
  208. package/src/qt4-snaps/fn-innermost.snap +58 -0
  209. package/src/qt4-snaps/fn-insert-before.snap +1 -0
  210. package/src/qt4-snaps/fn-iri-to-uri.snap +1 -0
  211. package/src/qt4-snaps/fn-json-doc.snap +1 -0
  212. package/src/qt4-snaps/fn-json-to-xml.snap +1 -0
  213. package/src/qt4-snaps/fn-lang.snap +10 -0
  214. package/src/qt4-snaps/fn-last.snap +1 -0
  215. package/src/qt4-snaps/fn-load-xquery-module.snap +1 -0
  216. package/src/qt4-snaps/fn-local-name-from-QName.snap +1 -0
  217. package/src/qt4-snaps/fn-local-name.snap +10 -0
  218. package/src/qt4-snaps/fn-lower-case.snap +1 -0
  219. package/src/qt4-snaps/fn-matches.re.snap +1 -0
  220. package/src/qt4-snaps/fn-matches.snap +1 -0
  221. package/src/qt4-snaps/fn-max.snap +1 -0
  222. package/src/qt4-snaps/fn-min.snap +1 -0
  223. package/src/qt4-snaps/fn-minutes-from-dateTime.snap +1 -0
  224. package/src/qt4-snaps/fn-minutes-from-duration.snap +1 -0
  225. package/src/qt4-snaps/fn-minutes-from-time.snap +1 -0
  226. package/src/qt4-snaps/fn-month-from-date.snap +1 -0
  227. package/src/qt4-snaps/fn-month-from-dateTime.snap +1 -0
  228. package/src/qt4-snaps/fn-months-from-duration.snap +1 -0
  229. package/src/qt4-snaps/fn-name.snap +10 -0
  230. package/src/qt4-snaps/fn-namespace-uri-for-prefix.snap +1 -0
  231. package/src/qt4-snaps/fn-namespace-uri-from-QName.snap +1 -0
  232. package/src/qt4-snaps/fn-namespace-uri.snap +1 -0
  233. package/src/qt4-snaps/fn-nilled.snap +16 -0
  234. package/src/qt4-snaps/fn-node-name.snap +32 -0
  235. package/src/qt4-snaps/fn-normalize-space.snap +1 -0
  236. package/src/qt4-snaps/fn-normalize-unicode.snap +26 -0
  237. package/src/qt4-snaps/fn-not.snap +1 -0
  238. package/src/qt4-snaps/fn-number.snap +1 -0
  239. package/src/qt4-snaps/fn-one-or-more.snap +1 -0
  240. package/src/qt4-snaps/fn-outermost.snap +58 -0
  241. package/src/qt4-snaps/fn-parse-ietf-date.snap +1 -0
  242. package/src/qt4-snaps/fn-parse-json.snap +1 -0
  243. package/src/qt4-snaps/fn-parse-xml-fragment.snap +1 -0
  244. package/src/qt4-snaps/fn-parse-xml.snap +1 -0
  245. package/src/qt4-snaps/fn-path.snap +26 -0
  246. package/src/qt4-snaps/fn-position.snap +1 -0
  247. package/src/qt4-snaps/fn-prefix-from-QName.snap +1 -0
  248. package/src/qt4-snaps/fn-random-number-generator.snap +1 -0
  249. package/src/qt4-snaps/fn-remove.snap +1 -0
  250. package/src/qt4-snaps/fn-replace.snap +330 -0
  251. package/src/qt4-snaps/fn-resolve-QName.snap +1 -0
  252. package/src/qt4-snaps/fn-resolve-uri.snap +1 -0
  253. package/src/qt4-snaps/fn-reverse.snap +1 -0
  254. package/src/qt4-snaps/fn-root.snap +10 -0
  255. package/src/qt4-snaps/fn-round-half-to-even.snap +1 -0
  256. package/src/qt4-snaps/fn-round.snap +8 -0
  257. package/src/qt4-snaps/fn-seconds-from-dateTime.snap +1 -0
  258. package/src/qt4-snaps/fn-seconds-from-duration.snap +1 -0
  259. package/src/qt4-snaps/fn-seconds-from-time.snap +1 -0
  260. package/src/qt4-snaps/fn-serialize.snap +50 -0
  261. package/src/qt4-snaps/fn-sort.snap +1 -0
  262. package/src/qt4-snaps/fn-starts-with.snap +1 -0
  263. package/src/qt4-snaps/fn-static-base-uri.snap +1 -0
  264. package/src/qt4-snaps/fn-string-join.snap +8 -0
  265. package/src/qt4-snaps/fn-string-length.snap +1 -0
  266. package/src/qt4-snaps/fn-string-to-codepoints.snap +1 -0
  267. package/src/qt4-snaps/fn-string.snap +10 -0
  268. package/src/qt4-snaps/fn-subsequence.snap +1 -0
  269. package/src/qt4-snaps/fn-substring-after.snap +1 -0
  270. package/src/qt4-snaps/fn-substring-before.snap +1 -0
  271. package/src/qt4-snaps/fn-substring.snap +1 -0
  272. package/src/qt4-snaps/fn-sum.snap +1 -0
  273. package/src/qt4-snaps/fn-tail.snap +1 -0
  274. package/src/qt4-snaps/fn-timezone-from-date.snap +1 -0
  275. package/src/qt4-snaps/fn-timezone-from-dateTime.snap +1 -0
  276. package/src/qt4-snaps/fn-timezone-from-time.snap +1 -0
  277. package/src/qt4-snaps/fn-tokenize.snap +16 -0
  278. package/src/qt4-snaps/fn-trace.snap +8 -0
  279. package/src/qt4-snaps/fn-transform.snap +1 -0
  280. package/src/qt4-snaps/fn-translate.snap +1 -0
  281. package/src/qt4-snaps/fn-true.snap +1 -0
  282. package/src/qt4-snaps/fn-unordered.snap +1 -0
  283. package/src/qt4-snaps/fn-unparsed-text-available.snap +1 -0
  284. package/src/qt4-snaps/fn-unparsed-text-lines.snap +1 -0
  285. package/src/qt4-snaps/fn-unparsed-text.snap +1 -0
  286. package/src/qt4-snaps/fn-upper-case.snap +1 -0
  287. package/src/qt4-snaps/fn-uri-collection.snap +1 -0
  288. package/src/qt4-snaps/fn-xml-to-json.snap +1 -0
  289. package/src/qt4-snaps/fn-year-from-date.snap +1 -0
  290. package/src/qt4-snaps/fn-year-from-dateTime.snap +1 -0
  291. package/src/qt4-snaps/fn-years-from-duration.snap +1 -0
  292. package/src/qt4-snaps/fn-zero-or-one.snap +1 -0
  293. package/src/qt4-snaps/map-contains.snap +1 -0
  294. package/src/qt4-snaps/map-entry.snap +1 -0
  295. package/src/qt4-snaps/map-find.snap +1 -0
  296. package/src/qt4-snaps/map-for-each.snap +1 -0
  297. package/src/qt4-snaps/map-get.snap +1 -0
  298. package/src/qt4-snaps/map-keys.snap +1 -0
  299. package/src/qt4-snaps/map-merge.snap +1 -0
  300. package/src/qt4-snaps/map-put.snap +1 -0
  301. package/src/qt4-snaps/map-remove.snap +1 -0
  302. package/src/qt4-snaps/map-size.snap +1 -0
  303. package/src/qt4-snaps/math-math-acos.snap +1 -0
  304. package/src/qt4-snaps/math-math-asin.snap +1 -0
  305. package/src/qt4-snaps/math-math-atan.snap +1 -0
  306. package/src/qt4-snaps/math-math-atan2.snap +1 -0
  307. package/src/qt4-snaps/math-math-cos.snap +1 -0
  308. package/src/qt4-snaps/math-math-exp.snap +1 -0
  309. package/src/qt4-snaps/math-math-exp10.snap +1 -0
  310. package/src/qt4-snaps/math-math-log.snap +1 -0
  311. package/src/qt4-snaps/math-math-log10.snap +1 -0
  312. package/src/qt4-snaps/math-math-pi.snap +1 -0
  313. package/src/qt4-snaps/math-math-pow.snap +1 -0
  314. package/src/qt4-snaps/math-math-sin.snap +1 -0
  315. package/src/qt4-snaps/math-math-sqrt.snap +1 -0
  316. package/src/qt4-snaps/math-math-tan.snap +1 -0
  317. package/src/qt4-snaps/misc-AnnexE.snap +1 -0
  318. package/src/qt4-snaps/misc-AppendixA4.snap +1 -0
  319. package/src/qt4-snaps/misc-CombinedErrorCodes.snap +350 -0
  320. package/src/qt4-snaps/misc-ErrorsAndOptimization.snap +1 -0
  321. package/src/qt4-snaps/misc-HigherOrderFunctions.snap +32 -0
  322. package/src/qt4-snaps/misc-JsonTestSuite.snap +1 -0
  323. package/src/qt4-snaps/misc-StaticContext.snap +8 -0
  324. package/src/qt4-snaps/misc-Surrogates.snap +34 -0
  325. package/src/qt4-snaps/misc-UCACollation.snap +1 -0
  326. package/src/qt4-snaps/misc-XMLEdition.snap +22 -0
  327. package/src/qt4-snaps/op-QName-equal.snap +1 -0
  328. package/src/qt4-snaps/op-add-dayTimeDuration-to-date.snap +1 -0
  329. package/src/qt4-snaps/op-add-dayTimeDuration-to-dateTime.snap +1 -0
  330. package/src/qt4-snaps/op-add-dayTimeDuration-to-time.snap +1 -0
  331. package/src/qt4-snaps/op-add-dayTimeDurations.snap +1 -0
  332. package/src/qt4-snaps/op-add-yearMonthDuration-to-date.snap +1 -0
  333. package/src/qt4-snaps/op-add-yearMonthDuration-to-dateTime.snap +1 -0
  334. package/src/qt4-snaps/op-add-yearMonthDurations.snap +1 -0
  335. package/src/qt4-snaps/op-anyURI-equal.snap +1 -0
  336. package/src/qt4-snaps/op-anyURI-greater-than.snap +1 -0
  337. package/src/qt4-snaps/op-anyURI-less-than.snap +1 -0
  338. package/src/qt4-snaps/op-bang.snap +1 -0
  339. package/src/qt4-snaps/op-base64Binary-equal.snap +1 -0
  340. package/src/qt4-snaps/op-base64Binary-greater-than.snap +1 -0
  341. package/src/qt4-snaps/op-base64Binary-less-than.snap +1 -0
  342. package/src/qt4-snaps/op-boolean-equal.snap +1 -0
  343. package/src/qt4-snaps/op-boolean-greater-than.snap +1 -0
  344. package/src/qt4-snaps/op-boolean-less-than.snap +1 -0
  345. package/src/qt4-snaps/op-concat.snap +1 -0
  346. package/src/qt4-snaps/op-concatenate.snap +1 -0
  347. package/src/qt4-snaps/op-date-equal.snap +1 -0
  348. package/src/qt4-snaps/op-date-greater-than.snap +1 -0
  349. package/src/qt4-snaps/op-date-less-than.snap +1 -0
  350. package/src/qt4-snaps/op-dateTime-equal.snap +1 -0
  351. package/src/qt4-snaps/op-dateTime-greater-than.snap +1 -0
  352. package/src/qt4-snaps/op-dateTime-less-than.snap +1 -0
  353. package/src/qt4-snaps/op-dayTimeDuration-greater-than.snap +1 -0
  354. package/src/qt4-snaps/op-dayTimeDuration-less-than.snap +1 -0
  355. package/src/qt4-snaps/op-divide-dayTimeDuration-by-dayTimeDuration.snap +1 -0
  356. package/src/qt4-snaps/op-divide-dayTimeDuration.snap +1 -0
  357. package/src/qt4-snaps/op-divide-yearMonthDuration-by-yearMonthDuration.snap +1 -0
  358. package/src/qt4-snaps/op-divide-yearMonthDuration.snap +1 -0
  359. package/src/qt4-snaps/op-duration-equal.snap +1 -0
  360. package/src/qt4-snaps/op-except.snap +1 -0
  361. package/src/qt4-snaps/op-gDay-equal.snap +1 -0
  362. package/src/qt4-snaps/op-gMonth-equal.snap +1 -0
  363. package/src/qt4-snaps/op-gMonthDay-equal.snap +1 -0
  364. package/src/qt4-snaps/op-gYear-equal.snap +1 -0
  365. package/src/qt4-snaps/op-gYearMonth-equal.snap +1 -0
  366. package/src/qt4-snaps/op-hexBinary-equal.snap +1 -0
  367. package/src/qt4-snaps/op-hexBinary-greater-than.snap +1 -0
  368. package/src/qt4-snaps/op-hexBinary-less-than.snap +1 -0
  369. package/src/qt4-snaps/op-intersect.snap +1 -0
  370. package/src/qt4-snaps/op-is-same-node.snap +1 -0
  371. package/src/qt4-snaps/op-multiply-dayTimeDuration.snap +1 -0
  372. package/src/qt4-snaps/op-multiply-yearMonthDuration.snap +1 -0
  373. package/src/qt4-snaps/op-node-after.snap +1 -0
  374. package/src/qt4-snaps/op-node-before.snap +1 -0
  375. package/src/qt4-snaps/op-numeric-add.snap +1 -0
  376. package/src/qt4-snaps/op-numeric-divide.snap +1 -0
  377. package/src/qt4-snaps/op-numeric-equal.snap +1 -0
  378. package/src/qt4-snaps/op-numeric-greater-than.snap +1 -0
  379. package/src/qt4-snaps/op-numeric-integer-divide.snap +1 -0
  380. package/src/qt4-snaps/op-numeric-less-than.snap +1 -0
  381. package/src/qt4-snaps/op-numeric-mod.snap +1 -0
  382. package/src/qt4-snaps/op-numeric-multiply.snap +1 -0
  383. package/src/qt4-snaps/op-numeric-subtract.snap +1 -0
  384. package/src/qt4-snaps/op-numeric-unary-minus.snap +1 -0
  385. package/src/qt4-snaps/op-numeric-unary-plus.snap +1 -0
  386. package/src/qt4-snaps/op-same-key.snap +1 -0
  387. package/src/qt4-snaps/op-string-equal.snap +1 -0
  388. package/src/qt4-snaps/op-string-greater-than.snap +1 -0
  389. package/src/qt4-snaps/op-string-less-than.snap +1 -0
  390. package/src/qt4-snaps/op-subtract-dateTimes.snap +1 -0
  391. package/src/qt4-snaps/op-subtract-dates.snap +1 -0
  392. package/src/qt4-snaps/op-subtract-dayTimeDuration-from-date.snap +1 -0
  393. package/src/qt4-snaps/op-subtract-dayTimeDuration-from-dateTime.snap +1 -0
  394. package/src/qt4-snaps/op-subtract-dayTimeDuration-from-time.snap +1 -0
  395. package/src/qt4-snaps/op-subtract-dayTimeDurations.snap +1 -0
  396. package/src/qt4-snaps/op-subtract-times.snap +1 -0
  397. package/src/qt4-snaps/op-subtract-yearMonthDuration-from-date.snap +1 -0
  398. package/src/qt4-snaps/op-subtract-yearMonthDuration-from-dateTime.snap +1 -0
  399. package/src/qt4-snaps/op-subtract-yearMonthDurations.snap +1 -0
  400. package/src/qt4-snaps/op-time-equal.snap +1 -0
  401. package/src/qt4-snaps/op-time-greater-than.snap +1 -0
  402. package/src/qt4-snaps/op-time-less-than.snap +1 -0
  403. package/src/qt4-snaps/op-to.snap +1 -0
  404. package/src/qt4-snaps/op-union.snap +1 -0
  405. package/src/qt4-snaps/op-yearMonthDuration-greater-than.snap +1 -0
  406. package/src/qt4-snaps/op-yearMonthDuration-less-than.snap +1 -0
  407. package/src/qt4-snaps/prod-AllowingEmpty.snap +1 -0
  408. package/src/qt4-snaps/prod-Annotation.snap +146 -0
  409. package/src/qt4-snaps/prod-ArrayType.snap +1 -0
  410. package/src/qt4-snaps/prod-ArrowExpr.snap +1 -0
  411. package/src/qt4-snaps/prod-AxisStep.abbr.snap +1 -0
  412. package/src/qt4-snaps/prod-AxisStep.ancestor-or-self.snap +1 -0
  413. package/src/qt4-snaps/prod-AxisStep.ancestor.snap +1 -0
  414. package/src/qt4-snaps/prod-AxisStep.following-sibling.snap +1 -0
  415. package/src/qt4-snaps/prod-AxisStep.following.snap +1 -0
  416. package/src/qt4-snaps/prod-AxisStep.preceding-sibling.snap +1 -0
  417. package/src/qt4-snaps/prod-AxisStep.preceding.snap +1 -0
  418. package/src/qt4-snaps/prod-AxisStep.snap +114 -0
  419. package/src/qt4-snaps/prod-AxisStep.unabbr.snap +1 -0
  420. package/src/qt4-snaps/prod-BaseURIDecl.snap +20 -0
  421. package/src/qt4-snaps/prod-BoundarySpaceDecl.snap +14 -0
  422. package/src/qt4-snaps/prod-CastExpr.derived.snap +1 -0
  423. package/src/qt4-snaps/prod-CastExpr.snap +218 -0
  424. package/src/qt4-snaps/prod-CastableExpr.snap +56 -0
  425. package/src/qt4-snaps/prod-Comment.snap +1 -0
  426. package/src/qt4-snaps/prod-CompAttrConstructor.snap +14 -0
  427. package/src/qt4-snaps/prod-CompCommentConstructor.snap +8 -0
  428. package/src/qt4-snaps/prod-CompDocConstructor.snap +1 -0
  429. package/src/qt4-snaps/prod-CompElemConstructor.snap +1 -0
  430. package/src/qt4-snaps/prod-CompNamespaceConstructor.snap +1 -0
  431. package/src/qt4-snaps/prod-CompPIConstructor.snap +1 -0
  432. package/src/qt4-snaps/prod-CompTextConstructor.snap +8 -0
  433. package/src/qt4-snaps/prod-ConstructionDecl.snap +14 -0
  434. package/src/qt4-snaps/prod-ContextItemDecl.snap +20 -0
  435. package/src/qt4-snaps/prod-ContextItemExpr.snap +1 -0
  436. package/src/qt4-snaps/prod-CopyNamespacesDecl.snap +14 -0
  437. package/src/qt4-snaps/prod-CountClause.snap +1 -0
  438. package/src/qt4-snaps/prod-CurlyArrayConstructor.snap +1 -0
  439. package/src/qt4-snaps/prod-DecimalFormatDecl.snap +92 -0
  440. package/src/qt4-snaps/prod-DefaultCollationDecl.snap +32 -0
  441. package/src/qt4-snaps/prod-DefaultNamespaceDecl.snap +92 -0
  442. package/src/qt4-snaps/prod-DirAttributeList.snap +58 -0
  443. package/src/qt4-snaps/prod-DirElemConstructor.snap +62 -0
  444. package/src/qt4-snaps/prod-DirElemContent.namespace.snap +176 -0
  445. package/src/qt4-snaps/prod-DirElemContent.snap +14 -0
  446. package/src/qt4-snaps/prod-DirElemContent.whitespace.snap +178 -0
  447. package/src/qt4-snaps/prod-DirectConstructor.snap +56 -0
  448. package/src/qt4-snaps/prod-EQName.snap +48 -0
  449. package/src/qt4-snaps/prod-EmptyOrderDecl.snap +14 -0
  450. package/src/qt4-snaps/prod-ExtensionExpr.snap +50 -0
  451. package/src/qt4-snaps/prod-ForClause.snap +158 -0
  452. package/src/qt4-snaps/prod-FunctionCall.snap +102 -0
  453. package/src/qt4-snaps/prod-FunctionDecl.snap +256 -0
  454. package/src/qt4-snaps/prod-GeneralComp.eq.snap +1 -0
  455. package/src/qt4-snaps/prod-GeneralComp.ge.snap +1 -0
  456. package/src/qt4-snaps/prod-GeneralComp.gt.snap +1 -0
  457. package/src/qt4-snaps/prod-GeneralComp.le.snap +1 -0
  458. package/src/qt4-snaps/prod-GeneralComp.lt.snap +1 -0
  459. package/src/qt4-snaps/prod-GeneralComp.ne.snap +1 -0
  460. package/src/qt4-snaps/prod-GroupByClause.snap +8 -0
  461. package/src/qt4-snaps/prod-IfExpr.snap +1 -0
  462. package/src/qt4-snaps/prod-InlineFunctionExpr.snap +14 -0
  463. package/src/qt4-snaps/prod-InstanceofExpr.snap +38 -0
  464. package/src/qt4-snaps/prod-LetClause.snap +40 -0
  465. package/src/qt4-snaps/prod-Literal.snap +68 -0
  466. package/src/qt4-snaps/prod-Lookup.snap +1 -0
  467. package/src/qt4-snaps/prod-MapConstructor.snap +1 -0
  468. package/src/qt4-snaps/prod-MapType.snap +8 -0
  469. package/src/qt4-snaps/prod-ModuleImport.snap +224 -0
  470. package/src/qt4-snaps/prod-NameTest.snap +164 -0
  471. package/src/qt4-snaps/prod-NamedFunctionRef.snap +1 -0
  472. package/src/qt4-snaps/prod-NamespaceDecl.snap +80 -0
  473. package/src/qt4-snaps/prod-NodeTest.snap +50 -0
  474. package/src/qt4-snaps/prod-OptionDecl.serialization.snap +14 -0
  475. package/src/qt4-snaps/prod-OptionDecl.snap +20 -0
  476. package/src/qt4-snaps/prod-OrExpr.snap +1 -0
  477. package/src/qt4-snaps/prod-OrderByClause.snap +20 -0
  478. package/src/qt4-snaps/prod-OrderingModeDecl.snap +14 -0
  479. package/src/qt4-snaps/prod-ParenthesizedExpr.snap +1 -0
  480. package/src/qt4-snaps/prod-PathExpr.snap +34 -0
  481. package/src/qt4-snaps/prod-PositionalVar.snap +26 -0
  482. package/src/qt4-snaps/prod-Predicate.snap +14 -0
  483. package/src/qt4-snaps/prod-QuantifiedExpr.snap +164 -0
  484. package/src/qt4-snaps/prod-ReturnClause.snap +8 -0
  485. package/src/qt4-snaps/prod-SequenceType.snap +1 -0
  486. package/src/qt4-snaps/prod-SquareArrayConstructor.snap +1 -0
  487. package/src/qt4-snaps/prod-StepExpr.snap +1 -0
  488. package/src/qt4-snaps/prod-StringConstructor.snap +26 -0
  489. package/src/qt4-snaps/prod-SwitchExpr.snap +1 -0
  490. package/src/qt4-snaps/prod-TreatExpr.snap +14 -0
  491. package/src/qt4-snaps/prod-TryCatchExpr.snap +38 -0
  492. package/src/qt4-snaps/prod-TypeswitchExpr.snap +50 -0
  493. package/src/qt4-snaps/prod-UnaryLookup.snap +1 -0
  494. package/src/qt4-snaps/prod-UnorderedExpr.snap +14 -0
  495. package/src/qt4-snaps/prod-ValueComp.snap +1 -0
  496. package/src/qt4-snaps/prod-VarDecl.external.snap +82 -0
  497. package/src/qt4-snaps/prod-VarDecl.snap +146 -0
  498. package/src/qt4-snaps/prod-VarDefaultValue.snap +8 -0
  499. package/src/qt4-snaps/prod-VersionDecl.snap +68 -0
  500. package/src/qt4-snaps/prod-WhereClause.snap +26 -0
  501. package/src/qt4-snaps/prod-WindowClause.snap +98 -0
  502. package/src/qt4-snaps/ser-method-adaptive.snap +1 -0
  503. package/src/qt4-snaps/ser-method-html.snap +1 -0
  504. package/src/qt4-snaps/ser-method-xml.snap +1 -0
  505. package/src/qt4-snaps/upd-AdditionalTyping.snap +1 -0
  506. package/src/qt4-snaps/upd-AddressBookUpdates.snap +1 -0
  507. package/src/qt4-snaps/upd-AttrDataModelErrs.snap +1 -0
  508. package/src/qt4-snaps/upd-CommaExpression.snap +1 -0
  509. package/src/qt4-snaps/upd-Compatibility.snap +1 -0
  510. package/src/qt4-snaps/upd-ConditionalExpression.snap +1 -0
  511. package/src/qt4-snaps/upd-DeleteExpressions.snap +1 -0
  512. package/src/qt4-snaps/upd-FLWORExpression.snap +1 -0
  513. package/src/qt4-snaps/upd-FullAxis.snap +1 -0
  514. package/src/qt4-snaps/upd-FunctionCall.snap +1 -0
  515. package/src/qt4-snaps/upd-FunctionDeclaration.snap +114 -0
  516. package/src/qt4-snaps/upd-InsertExpressions.snap +1 -0
  517. package/src/qt4-snaps/upd-MinOther.snap +1 -0
  518. package/src/qt4-snaps/upd-NSBindingConflictErrs.snap +1 -0
  519. package/src/qt4-snaps/upd-NamespacesUpdates.snap +1 -0
  520. package/src/qt4-snaps/upd-NilUpdates.snap +10 -0
  521. package/src/qt4-snaps/upd-OtherExpressions.snap +1 -0
  522. package/src/qt4-snaps/upd-ParenthesizedExpressions.snap +1 -0
  523. package/src/qt4-snaps/upd-PartsUpdates.snap +1 -0
  524. package/src/qt4-snaps/upd-RelationalDataUpdates.snap +1 -0
  525. package/src/qt4-snaps/upd-RenameExpressions.snap +1 -0
  526. package/src/qt4-snaps/upd-ReplaceNode.snap +1 -0
  527. package/src/qt4-snaps/upd-ReplaceValue.snap +1 -0
  528. package/src/qt4-snaps/upd-RevalidationDeclarationLax.snap +1 -0
  529. package/src/qt4-snaps/upd-RevalidationDeclarationLaxUnsupported.snap +1 -0
  530. package/src/qt4-snaps/upd-RevalidationDeclarationSkip.snap +10 -0
  531. package/src/qt4-snaps/upd-RevalidationDeclarationSkipUnsupported.snap +1 -0
  532. package/src/qt4-snaps/upd-RevalidationDeclarationStrict.snap +1 -0
  533. package/src/qt4-snaps/upd-RevalidationDeclarationStrictUnsupported.snap +1 -0
  534. package/src/qt4-snaps/upd-RevalidationDeclarationStrictandSkip.snap +1 -0
  535. package/src/qt4-snaps/upd-SoapUpdates.snap +1 -0
  536. package/src/qt4-snaps/upd-TransformExpressions.snap +1 -0
  537. package/src/qt4-snaps/upd-TypeswitchExpression.snap +1 -0
  538. package/src/qt4-snaps/upd-VariableDeclaration.snap +1 -0
  539. package/src/qt4-snaps/upd-applyUpdates.snap +1 -0
  540. package/src/qt4-snaps/upd-fnput-document.snap +1 -0
  541. package/src/qt4-snaps/upd-mergeUpdates.snap +1 -0
  542. package/src/qt4-snaps/upd-propagateNamespace.snap +1 -0
  543. package/src/qt4-snaps/upd-setToUntyped.snap +1 -0
  544. package/src/qt4-snaps/xs-anyAtomicType.snap +1 -0
  545. package/src/qt4-snaps/xs-anySimpleType.snap +8 -0
  546. package/src/qt4-snaps/xs-anyURI.snap +34 -0
  547. package/src/qt4-snaps/xs-base64Binary.snap +1 -0
  548. package/src/qt4-snaps/xs-dateTimeStamp.snap +1 -0
  549. package/src/qt4-snaps/xs-double.snap +1 -0
  550. package/src/qt4-snaps/xs-error.snap +10 -0
  551. package/src/qt4-snaps/xs-float.snap +1 -0
  552. package/src/qt4-snaps/xs-hexBinary.snap +1 -0
  553. package/src/qt4-snaps/xs-normalizedString.snap +1 -0
  554. package/src/qt4-snaps/xs-notation.snap +1 -0
  555. package/src/qt4-snaps/xs-numeric.snap +1 -0
  556. package/src/qt4-snaps/xs-token.snap +1 -0
  557. package/src/qt4-worker.ts +63 -0
  558. package/src/runtimes/existdb/cache.xq +83 -0
  559. package/src/runtimes/existdb/compression.xq +198 -0
  560. package/src/runtimes/existdb/console.xq +24 -0
  561. package/src/runtimes/existdb/contentextraction.xq +31 -0
  562. package/src/runtimes/existdb/counter.xq +30 -0
  563. package/src/runtimes/existdb/crypto.xq +97 -0
  564. package/src/runtimes/existdb/datetime.xq +91 -0
  565. package/src/runtimes/existdb/file.xq +129 -0
  566. package/src/runtimes/existdb/ft.xq +325 -0
  567. package/src/runtimes/existdb/httpclient.xq +118 -0
  568. package/src/runtimes/existdb/image.xq +65 -0
  569. package/src/runtimes/existdb/inspect.xq +49 -0
  570. package/src/runtimes/existdb/kwic.xq +24 -0
  571. package/src/runtimes/existdb/mail.xq +124 -0
  572. package/src/runtimes/existdb/ngram.xq +57 -0
  573. package/src/runtimes/existdb/process.xq +8 -0
  574. package/src/runtimes/existdb/range.xq +171 -0
  575. package/src/runtimes/existdb/repo.xq +125 -0
  576. package/src/runtimes/existdb/request.xq +242 -0
  577. package/src/runtimes/existdb/response.xq +50 -0
  578. package/src/runtimes/existdb/scheduler.xq +35 -0
  579. package/src/runtimes/existdb/session.xq +111 -0
  580. package/src/runtimes/existdb/sm.xq +497 -0
  581. package/src/runtimes/existdb/sort.xq +59 -0
  582. package/src/runtimes/existdb/system.xq +267 -0
  583. package/src/runtimes/existdb/transform.xq +88 -0
  584. package/src/runtimes/existdb/util.xq +860 -0
  585. package/src/runtimes/existdb/validation.xq +83 -0
  586. package/src/runtimes/existdb/xmldb.xq +482 -0
  587. package/src/runtimes/existdb/xmldiff.xq +22 -0
  588. package/src/runtimes/fonto/fonto.xq +164 -0
  589. package/src/runtimes.test.ts +152 -0
  590. package/src/runtimes.ts +70 -0
  591. package/src/server.ts +352 -122
  592. package/src/test-utils.ts +17 -0
  593. package/src/typechecker.test.ts +548 -0
  594. package/src/typechecker.ts +416 -0
  595. package/src/types.ts +41 -7
  596. package/src/unused-diagnostics.test.ts +174 -0
  597. package/src/unused-diagnostics.ts +232 -0
  598. package/tsconfig.json +3 -3
package/CHANGELOG.md ADDED
@@ -0,0 +1,61 @@
1
+ # Changelog
2
+
3
+ ## [1.3.0](https://github.com/DrRataplan/xq-lsp/compare/lsp-v1.2.0...lsp-v1.3.0) (2026-05-28)
4
+
5
+
6
+ ### Features
7
+
8
+ * **vscode:** publish to Open VSX Registry for Cursor support ([2928578](https://github.com/DrRataplan/xq-lsp/commit/292857837fea055faff9e50bb074e12f2526bcf1))
9
+
10
+ ## [1.2.0](https://github.com/DrRataplan/xq-lsp/compare/lsp-v1.1.0...lsp-v1.2.0) (2026-05-27)
11
+
12
+
13
+ ### Features
14
+
15
+ * add eXist-db function library with 30 namespaces ([6c58fb6](https://github.com/DrRataplan/xq-lsp/commit/6c58fb6f550f6a7f419d77c0e8b5d8a286840a6e))
16
+ * add XPDY0002 context-item diagnostic to playground linter ([b0384ac](https://github.com/DrRataplan/xq-lsp/commit/b0384ac287e99a7b22d59999f947e6bbb84798a2))
17
+ * config-defined prefix map and namespace prefix discovery ([#29](https://github.com/DrRataplan/xq-lsp/issues/29)) ([9f985cd](https://github.com/DrRataplan/xq-lsp/commit/9f985cd1065f92ea5956fa487208ded04f4a6328))
18
+ * detect XPDY0002 no-context-item errors in function and variable declarations ([f1a26d7](https://github.com/DrRataplan/xq-lsp/commit/f1a26d712506b9c62f5ff3e5e3ac4b680c6f6f07))
19
+ * functioncall diagnostics (XPST0017 for undeclared and wrong-arity calls) ([4089454](https://github.com/DrRataplan/xq-lsp/commit/4089454b8264e4e89f578d80c36911a979544cec))
20
+ * generate eXist-db function library from Java sources ([01d804f](https://github.com/DrRataplan/xq-lsp/commit/01d804fb4969122a6ba62f9d5ecb6f5228554e27))
21
+ * run functioncall diagnostics in the playground ([b38b7af](https://github.com/DrRataplan/xq-lsp/commit/b38b7af85796a2da711ea2ffab9b791b7f098783))
22
+ * warn about unused %private functions and variables ([dcd8586](https://github.com/DrRataplan/xq-lsp/commit/dcd8586dbbd229d3d82af979ce18a2dd603cacc3))
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * add fn:serialize to builtins to eliminate XPST0017 false positives ([5fd0efd](https://github.com/DrRataplan/xq-lsp/commit/5fd0efd577936449539fc0594a25373aa3afbbb2))
28
+ * add missing XQ3.0/3.1 built-in fn declarations to eliminate false-positive XPST0017 diagnostics ([5ca5086](https://github.com/DrRataplan/xq-lsp/commit/5ca5086758f1904fe5a50f5f337679ec58a53a0e))
29
+ * allow xs:anyURI to promote to xs:string in function calls ([b39f429](https://github.com/DrRataplan/xq-lsp/commit/b39f42936299369b69aa6e86abbc3ba98f5af6c5))
30
+ * check xs: constructors, NamedFunctionRef, and arrow arity for XPST0017 ([d2f070d](https://github.com/DrRataplan/xq-lsp/commit/d2f070d3794dc4039912f3a32e1c3b7eb543eb1a))
31
+ * collect inline xmlns: namespace declarations from element constructors ([08514ac](https://github.com/DrRataplan/xq-lsp/commit/08514acfffe0a473e4d0f4f30a791a5aecc9a83b))
32
+ * collect inline xmlns: namespace declarations from element constructors ([a662da3](https://github.com/DrRataplan/xq-lsp/commit/a662da32a1c5c4e76a93abd1b34c4ee07986717d))
33
+ * don't flag node→atomic as XPTY0004 in function call args (atomization applies) ([ce7af5c](https://github.com/DrRataplan/xq-lsp/commit/ce7af5c453e80deafa4f9e091258dca8c7d2e639))
34
+ * eliminate XQST0081 false positives from QT4 environment namespaces ([8e96f92](https://github.com/DrRataplan/xq-lsp/commit/8e96f9219488a15d213ae27a696b41b76e52915c))
35
+ * hover now resolves function overload by arity ([#25](https://github.com/DrRataplan/xq-lsp/issues/25)) ([5b82368](https://github.com/DrRataplan/xq-lsp/commit/5b82368503bfaba0b83a649519c9543743d3f0f8))
36
+ * infer UNKNOWN for partial function applications in type checker ([8b3f543](https://github.com/DrRataplan/xq-lsp/commit/8b3f543194f1c6ad22aabc56ea444d54a8b05095))
37
+ * reduce XPTY0004 false positives in type checker ([f1f7b9e](https://github.com/DrRataplan/xq-lsp/commit/f1f7b9e461e54d64cee9f63c150e31c3c71f150e))
38
+ * scope-aware type checking for function params and bindings ([#24](https://github.com/DrRataplan/xq-lsp/issues/24)) ([6bfd4e6](https://github.com/DrRataplan/xq-lsp/commit/6bfd4e6ec6c2e2a6e537a93e658e9ade2086c89a))
39
+ * suppress atomic-to-atomic XPTY0004 checks (implicit conversions) ([f7f8ff3](https://github.com/DrRataplan/xq-lsp/commit/f7f8ff32f24057059c463c2a93a30c6028283549))
40
+
41
+ ## [1.1.0](https://github.com/DrRataplan/xq-lsp/compare/lsp-v1.0.1...lsp-v1.1.0) (2026-05-20)
42
+
43
+
44
+ ### Features
45
+
46
+ * add Fonto runtime definitions ([#5](https://github.com/DrRataplan/xq-lsp/issues/5)) ([e0af427](https://github.com/DrRataplan/xq-lsp/commit/e0af427641e4cb64374d7befcaa13c19c33dba6f))
47
+ * add hover tooltips and config panel to playground ([#18](https://github.com/DrRataplan/xq-lsp/issues/18)) ([d9210ab](https://github.com/DrRataplan/xq-lsp/commit/d9210ab851578994167b53e17755124c1e5c7bbc))
48
+ * diagnose undeclared namespace prefixes and offer auto-import code actions ([#12](https://github.com/DrRataplan/xq-lsp/issues/12)) ([0439bbe](https://github.com/DrRataplan/xq-lsp/commit/0439bbe065eaca6aab63c7d178190602f27ae456))
49
+ * type-check call-site arguments and unify symbol identity as QName ([#10](https://github.com/DrRataplan/xq-lsp/issues/10)) ([50d9fa1](https://github.com/DrRataplan/xq-lsp/commit/50d9fa15a929c14de0a3f843b7afed469ce5948b))
50
+
51
+
52
+ ### Bug Fixes
53
+
54
+ * allow numeric type promotion for xs:double and xs:float params ([#17](https://github.com/DrRataplan/xq-lsp/issues/17)) ([33a129c](https://github.com/DrRataplan/xq-lsp/commit/33a129cd7d8d51b559afb05256069be2c8d98c2a))
55
+
56
+ ## [1.0.1](https://github.com/DrRataplan/xq-lsp/compare/lsp-v1.0.0...lsp-v1.0.1) (2026-05-19)
57
+
58
+ ### Bug Fixes
59
+
60
+ - **publish:** make the extension publishable ([31bd687](https://github.com/DrRataplan/xq-lsp/commit/31bd687f33f454b7151d9136f4623259e9eabb1d))
61
+ - **vscode:** add README explaining inner workings ([c278b6c](https://github.com/DrRataplan/xq-lsp/commit/c278b6c7fa16e217c6f19d563dfaa87502f1ed7b))
package/README.md CHANGED
@@ -9,12 +9,107 @@ Language Server Protocol implementation for XQuery, providing autocompletion, ho
9
9
  - **Signature help** — active parameter hints inside function calls
10
10
  - **Go to definition** — jump to function or variable declarations, including across imported files
11
11
  - **Document symbols** — file outline of all declared functions and variables
12
- - **Diagnostics** — syntax errors as you type
12
+ - **Diagnostics** — syntax errors, undeclared namespace prefixes, type mismatches, and unused symbols
13
13
 
14
- Imports written as `import module namespace prefix="uri" at "./other-file.xq"` are followed automatically; symbols from imported files are included in completions.
14
+ ## Configuration
15
+
16
+ ### Summary: Fonto development
17
+
18
+ Place an `lsp-config.xq` file in the Fonto root folder (the one that holds the manifest.json) with the following content:
19
+
20
+ ```xquery
21
+ map {
22
+ 'lib': 'fonto',
23
+ 'glob': 'packages/**/*.xqm',
24
+ 'import': map {
25
+ 'generateLocationHints': false()
26
+ }
27
+ }
28
+ ```
29
+
30
+ ### General configuration
31
+
32
+ Place an `lsp-config.xq` file in your project root to enable glob-based import resolution. The server walks up from the current file's directory to find it.
33
+
34
+ The file contains an XPath 3.1 map expression with a `glob` key:
35
+
36
+ ```xquery
37
+ map {"glob": "src/**/*.xq"}
38
+ ```
39
+
40
+ Multiple patterns are written as an XPath sequence:
41
+
42
+ ```xquery
43
+ map {"glob": ("src/**/*.xq", "lib/**/*.xq")}
44
+ ```
45
+
46
+ The server expands the globs, analyzes each matched file, and indexes library modules by their declared namespace URI. Imports written without an `at` clause are then resolved by matching the namespace URI:
47
+
48
+ ```xquery
49
+ (: no "at" path needed — the server finds the file via the glob index :)
50
+ import module namespace util="http://example.com/util";
51
+ ```
52
+
53
+ Imports written as `import module namespace prefix="uri" at "./other-file.xq"` are followed
54
+ automatically; symbols from imported files are included in completions.
15
55
 
16
56
  For files with syntax errors (common while editing), the server falls back to regex-based extraction so completions keep working.
17
57
 
58
+ ### Runtime built-ins
59
+
60
+ Use the `lib` key to load built-in definitions for a specific runtime:
61
+
62
+ | Value | Runtime |
63
+ | --------- | ------------------------------------------------------------------- |
64
+ | `"fonto"` | [Fonto XML editor](https://www.fontoxml.com/) — `fonto:*` functions |
65
+
66
+ ```xquery
67
+ map {"glob": "src/**/*.xq", "lib": "fonto"}
68
+ ```
69
+
70
+ Then import the namespace in your XQuery files as usual — the server resolves completions, hover, and go-to-definition against the bundled definitions:
71
+
72
+ ```xquery
73
+ import module namespace fonto="http://www.fontoxml.com/functions";
74
+ ```
75
+
76
+ Multiple libs use an XPath sequence:
77
+
78
+ ```xquery
79
+ map {"glob": "src/**/*.xq", "lib": ("fonto", "other")}
80
+ ```
81
+
82
+ ### Location hints
83
+
84
+ Some runtimes do not like location hints (`import namespace prefix="uri" at "Location hint";`), turn
85
+ them off to prevent them from being generated:
86
+
87
+ ```xquery
88
+ map {
89
+ 'import': map {
90
+ 'generateLocationHints': false()
91
+ }
92
+ }
93
+ ```
94
+
95
+ ## Roadmap
96
+
97
+ - **Completion of keywords** — like `function`, `declare` and `ancestor-or-self`, which saves you
98
+ some keystrokes
99
+ - **Context-depending completion** — which prevent syntactical errors
100
+ - **Treesitter parser** — should improve performance and scalability for huge files
101
+ - **XQuery 4** — the parser already supports this. Just make it work
102
+ - **Arity checks** — report when one calls `fn:document('too', 'many', 'arguments')`
103
+ - **Register or discover known prefix/namespace combinations** — if you have the `tei` namespace
104
+ declared in another file, you might mean that when you type `tei:TEI` in another file
105
+ - **Context items** — doing `declare function xx () { bla };` is an error: there is no context
106
+ item. Check if there is a context item available when you use the context item expression (`.`) or
107
+ a step expression.
108
+ - **Unused functions and variables** — no one likes those. Except when prefixed with `_`, then they
109
+ make sense
110
+ - More of the (static) errors in the spec at [The spec at section F Error
111
+ Conditions](https://www.w3.org/TR/xquery-31/#id-errors), whichever are easy to implement
112
+
18
113
  ## Emacs
19
114
 
20
115
  ### With eglot (built-in since Emacs 29)
@@ -39,15 +134,15 @@ Open any `.xq` file and eglot starts the server automatically. Run `M-x eglot` t
39
134
 
40
135
  **Key bindings:**
41
136
 
42
- | Action | Key |
43
- |---|---|
44
- | Completion | `C-M-i` |
45
- | Hover / docs | `C-c C-d` |
46
- | Signature help | automatic in minibuffer |
47
- | Go to definition | `M-.` |
48
- | Go back | `M-,` |
49
- | Document symbols | `M-x imenu` |
50
- | Diagnostics | `M-x flymake-show-buffer-diagnostics` |
137
+ | Action | Key |
138
+ | ---------------- | ------------------------------------- |
139
+ | Completion | `C-M-i` |
140
+ | Hover / docs | `C-c C-d` |
141
+ | Signature help | automatic in minibuffer |
142
+ | Go to definition | `M-.` |
143
+ | Go back | `M-,` |
144
+ | Document symbols | `M-x imenu` |
145
+ | Diagnostics | `M-x flymake-show-buffer-diagnostics` |
51
146
 
52
147
  ### With lsp-mode
53
148
 
@@ -69,12 +164,24 @@ Open any `.xq` file and eglot starts the server automatically. Run `M-x eglot` t
69
164
 
70
165
  A minimal VS Code extension lives in [`editors/vscode/`](./editors/vscode/).
71
166
 
167
+ ### Install from marketplace
168
+
169
+ Launch VS Code Quick Open (Ctrl+P or Cmd+P), paste the following command, and press enter.
170
+
171
+ ```
172
+ ext install elliat.xquery-lsp-vscode
173
+ ```
174
+
175
+ ### Install by hand
176
+
72
177
  ```sh
73
178
  cd editors/vscode
74
179
  npm install
75
180
  ```
76
181
 
77
- Open the `editors/vscode` folder in VS Code and press `F5` to launch a development host with the extension active. To install it permanently, package it with [`vsce`](https://github.com/microsoft/vscode-vsce):
182
+ Open the `editors/vscode` folder in VS Code and press `F5` to launch a development host with the
183
+ extension active. To install it permanently, package it with
184
+ [`vsce`](https://github.com/microsoft/vscode-vsce):
78
185
 
79
186
  ```sh
80
187
  npx vsce package
@@ -1,4 +1,4 @@
1
- module namespace array="http://www.w3.org/2005/xpath-functions/array";
1
+ module namespace array = "http://www.w3.org/2005/xpath-functions/array";
2
2
 
3
3
  (:~
4
4
  : Returns the number of members in an array.
@@ -39,6 +39,7 @@ declare function array:append($array as array(*), $appendage as item()*) as arra
39
39
  : @return The subarray from $start to the end
40
40
  :)
41
41
  declare function array:subarray($array as array(*), $start as xs:integer) as array(*) external;
42
+
42
43
  (:~
43
44
  : Returns a subarray of a given length starting at a given position.
44
45
  : @param $array The array
@@ -63,7 +64,11 @@ declare function array:remove($array as array(*), $positions as xs:integer*) as
63
64
  : @param $member The value to insert
64
65
  : @return A new array with the member inserted
65
66
  :)
66
- declare function array:insert-before($array as array(*), $position as xs:integer, $member as item()*) as array(*) external;
67
+ declare function array:insert-before(
68
+ $array as array(*),
69
+ $position as xs:integer,
70
+ $member as item()*
71
+ ) as array(*) external;
67
72
 
68
73
  (:~
69
74
  : Returns the first member of an array.
@@ -99,7 +104,7 @@ declare function array:join($arrays as array(*)*) as array(*) external;
99
104
  : @param $action Function to apply to each member
100
105
  : @return A new array of results
101
106
  :)
102
- declare function array:for-each($array as array(*), $action as function(item()*) as item()*) as array(*) external;
107
+ declare function array:for-each($array as array(*), $action as function (item()*) as item()*) as array(*) external;
103
108
 
104
109
  (:~
105
110
  : Returns an array of members for which a predicate returns true.
@@ -107,7 +112,7 @@ declare function array:for-each($array as array(*), $action as function(item()*)
107
112
  : @param $function Predicate function
108
113
  : @return A new array of matching members
109
114
  :)
110
- declare function array:filter($array as array(*), $function as function(item()*) as xs:boolean) as array(*) external;
115
+ declare function array:filter($array as array(*), $function as function (item()*) as xs:boolean) as array(*) external;
111
116
 
112
117
  (:~
113
118
  : Reduces an array to a single value by applying a function from the left.
@@ -116,7 +121,11 @@ declare function array:filter($array as array(*), $function as function(item()*)
116
121
  : @param $f Combining function
117
122
  : @return The accumulated result
118
123
  :)
119
- declare function array:fold-left($array as array(*), $zero as item()*, $f as function(item()*, item()*) as item()*) as item()* external;
124
+ declare function array:fold-left(
125
+ $array as array(*),
126
+ $zero as item()*,
127
+ $f as function (item()*, item()*) as item()*
128
+ ) as item()* external;
120
129
 
121
130
  (:~
122
131
  : Reduces an array to a single value by applying a function from the right.
@@ -125,7 +134,11 @@ declare function array:fold-left($array as array(*), $zero as item()*, $f as fun
125
134
  : @param $f Combining function
126
135
  : @return The accumulated result
127
136
  :)
128
- declare function array:fold-right($array as array(*), $zero as item()*, $f as function(item()*, item()*) as item()*) as item()* external;
137
+ declare function array:fold-right(
138
+ $array as array(*),
139
+ $zero as item()*,
140
+ $f as function (item()*, item()*) as item()*
141
+ ) as item()* external;
129
142
 
130
143
  (:~
131
144
  : Applies a function pairwise to members of two arrays.
@@ -134,7 +147,11 @@ declare function array:fold-right($array as array(*), $zero as item()*, $f as fu
134
147
  : @param $f Function to apply to each pair
135
148
  : @return A new array of results
136
149
  :)
137
- declare function array:for-each-pair($array1 as array(*), $array2 as array(*), $f as function(item()*, item()*) as item()*) as array(*) external;
150
+ declare function array:for-each-pair(
151
+ $array1 as array(*),
152
+ $array2 as array(*),
153
+ $f as function (item()*, item()*) as item()*
154
+ ) as array(*) external;
138
155
 
139
156
  (:~
140
157
  : Sorts the members of an array.
@@ -142,15 +159,23 @@ declare function array:for-each-pair($array1 as array(*), $array2 as array(*), $
142
159
  : @return A new sorted array
143
160
  :)
144
161
  declare function array:sort($array as array(*)) as array(*) external;
145
- (:~ @param $array Array @param $collation Collation URI or empty :)
162
+
163
+ (:~
164
+ : @param $array Array @param $collation Collation URI or empty
165
+ :)
146
166
  declare function array:sort($array as array(*), $collation as xs:string?) as array(*) external;
167
+
147
168
  (:~
148
169
  : @param $array Array
149
170
  : @param $collation Collation URI or empty
150
171
  : @param $key Function to extract the sort key from each member
151
172
  : @return A new sorted array
152
173
  :)
153
- declare function array:sort($array as array(*), $collation as xs:string?, $key as function(item()*) as xs:anyAtomicType*) as array(*) external;
174
+ declare function array:sort(
175
+ $array as array(*),
176
+ $collation as xs:string?,
177
+ $key as function (item()*) as xs:anyAtomicType*
178
+ ) as array(*) external;
154
179
 
155
180
  (:~
156
181
  : Flattens nested arrays into a sequence of atomic values and non-array items.