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.
- package/CHANGELOG.md +61 -0
- package/README.md +119 -12
- package/builtins/builtins-array.xq +34 -9
- package/builtins/builtins-fn.xq +492 -101
- package/builtins/builtins-map.xq +6 -2
- package/builtins/builtins-math.xq +1 -1
- package/builtins/builtins-xs.xq +63 -0
- package/demo/index.html +151 -0
- package/demo/main.ts +307 -0
- package/demo/package-lock.json +1301 -0
- package/demo/package.json +20 -0
- package/demo/vite.config.ts +15 -0
- package/dist/analyzer.d.ts +28 -0
- package/dist/analyzer.js +128 -40
- package/dist/ast-nodes.d.ts +90 -0
- package/dist/ast-nodes.js +305 -0
- package/dist/builtins.js +3 -0
- package/dist/completion-core.d.ts +17 -0
- package/dist/completion-core.js +113 -0
- package/dist/completion.d.ts +3 -8
- package/dist/completion.js +10 -150
- package/dist/config.d.ts +13 -0
- package/dist/config.js +81 -0
- package/dist/context-item-diagnostics.d.ts +19 -0
- package/dist/context-item-diagnostics.js +133 -0
- package/dist/definition.d.ts +4 -0
- package/dist/definition.js +67 -0
- package/dist/features.d.ts +1 -2
- package/dist/features.js +81 -112
- package/dist/functioncall-diagnostics.d.ts +12 -0
- package/dist/functioncall-diagnostics.js +87 -0
- package/dist/hover-core.d.ts +39 -0
- package/dist/hover-core.js +87 -0
- package/dist/namespace-diagnostics.d.ts +33 -0
- package/dist/namespace-diagnostics.js +108 -0
- package/dist/qt4-worker.d.ts +18 -0
- package/dist/qt4-worker.js +46 -0
- package/dist/runtimes.d.ts +2 -0
- package/dist/runtimes.js +67 -0
- package/dist/server.js +254 -50
- package/dist/test-utils.d.ts +3 -0
- package/dist/test-utils.js +16 -0
- package/dist/typechecker.d.ts +7 -0
- package/dist/typechecker.js +388 -0
- package/dist/types.d.ts +30 -6
- package/dist/types.js +6 -0
- package/dist/unused-diagnostics.d.ts +19 -0
- package/dist/unused-diagnostics.js +202 -0
- package/firebase.json +12 -0
- package/package.json +34 -27
- package/release-please-config.json +16 -0
- package/scripts/generate-existdb.ts +890 -0
- package/src/analyzer.test.ts +163 -0
- package/src/analyzer.ts +139 -41
- package/src/ast-nodes.ts +348 -0
- package/src/builtins.test.ts +32 -0
- package/src/builtins.ts +3 -0
- package/src/completion-core.ts +139 -0
- package/src/completion.test.ts +152 -0
- package/src/completion.ts +11 -173
- package/src/config.ts +90 -0
- package/src/context-item-diagnostics.test.ts +182 -0
- package/src/context-item-diagnostics.ts +143 -0
- package/src/definition.ts +82 -0
- package/src/features.test.ts +110 -0
- package/src/features.ts +87 -128
- package/src/functioncall-diagnostics.test.ts +169 -0
- package/src/functioncall-diagnostics.ts +110 -0
- package/src/hover-core.ts +114 -0
- package/src/lsp-config.test.ts +183 -0
- package/src/namespace-diagnostics.test.ts +162 -0
- package/src/namespace-diagnostics.ts +133 -0
- package/src/qt4-diagnostic.test.ts +271 -0
- package/src/qt4-snaps/app-CatalogCheck.snap +1 -0
- package/src/qt4-snaps/app-Demos.snap +18 -0
- package/src/qt4-snaps/app-Duplicates.snap +1 -0
- package/src/qt4-snaps/app-FunctxFn.snap +162 -0
- package/src/qt4-snaps/app-FunctxFunctx.snap +714 -0
- package/src/qt4-snaps/app-UseCaseCompoundValues.snap +1 -0
- package/src/qt4-snaps/app-UseCaseJSON.snap +1 -0
- package/src/qt4-snaps/app-UseCaseNLP.snap +1 -0
- package/src/qt4-snaps/app-UseCaseNS.snap +1 -0
- package/src/qt4-snaps/app-UseCaseR.snap +1 -0
- package/src/qt4-snaps/app-UseCaseR31.snap +1 -0
- package/src/qt4-snaps/app-UseCaseSEQ.snap +1 -0
- package/src/qt4-snaps/app-UseCaseSGML.snap +1 -0
- package/src/qt4-snaps/app-UseCaseSTRING.snap +1 -0
- package/src/qt4-snaps/app-UseCaseTREE.snap +1 -0
- package/src/qt4-snaps/app-UseCaseXMP.snap +1 -0
- package/src/qt4-snaps/app-Walmsley.snap +1 -0
- package/src/qt4-snaps/app-XMark.snap +10 -0
- package/src/qt4-snaps/array-append.snap +1 -0
- package/src/qt4-snaps/array-filter.snap +10 -0
- package/src/qt4-snaps/array-flatten.snap +1 -0
- package/src/qt4-snaps/array-fold-left.snap +1 -0
- package/src/qt4-snaps/array-fold-right.snap +1 -0
- package/src/qt4-snaps/array-for-each-pair.snap +1 -0
- package/src/qt4-snaps/array-for-each.snap +1 -0
- package/src/qt4-snaps/array-get.snap +1 -0
- package/src/qt4-snaps/array-head.snap +1 -0
- package/src/qt4-snaps/array-insert-before.snap +1 -0
- package/src/qt4-snaps/array-join.snap +1 -0
- package/src/qt4-snaps/array-put.snap +1 -0
- package/src/qt4-snaps/array-remove.snap +1 -0
- package/src/qt4-snaps/array-reverse.snap +1 -0
- package/src/qt4-snaps/array-size.snap +1 -0
- package/src/qt4-snaps/array-sort.snap +1 -0
- package/src/qt4-snaps/array-subarray.snap +1 -0
- package/src/qt4-snaps/array-tail.snap +1 -0
- package/src/qt4-snaps/bin-and.snap +1 -0
- package/src/qt4-snaps/bin-bin.snap +1 -0
- package/src/qt4-snaps/bin-decode-string.snap +1 -0
- package/src/qt4-snaps/bin-encode-string.snap +1 -0
- package/src/qt4-snaps/bin-find.snap +1 -0
- package/src/qt4-snaps/bin-from-octets.snap +1 -0
- package/src/qt4-snaps/bin-hex.snap +1 -0
- package/src/qt4-snaps/bin-insert-before.snap +1 -0
- package/src/qt4-snaps/bin-join.snap +1 -0
- package/src/qt4-snaps/bin-length.snap +1 -0
- package/src/qt4-snaps/bin-not.snap +1 -0
- package/src/qt4-snaps/bin-octal.snap +1 -0
- package/src/qt4-snaps/bin-or.snap +1 -0
- package/src/qt4-snaps/bin-pack-double.snap +1 -0
- package/src/qt4-snaps/bin-pack-float.snap +1 -0
- package/src/qt4-snaps/bin-pack-integer.snap +1 -0
- package/src/qt4-snaps/bin-pad-left.snap +1 -0
- package/src/qt4-snaps/bin-pad-right.snap +1 -0
- package/src/qt4-snaps/bin-part.snap +1 -0
- package/src/qt4-snaps/bin-shift.snap +1 -0
- package/src/qt4-snaps/bin-to-octets.snap +1 -0
- package/src/qt4-snaps/bin-unpack-double.snap +1 -0
- package/src/qt4-snaps/bin-unpack-float.snap +1 -0
- package/src/qt4-snaps/bin-unpack-integer.snap +1 -0
- package/src/qt4-snaps/bin-unpack-unsigned-integer.snap +1 -0
- package/src/qt4-snaps/bin-xor.snap +1 -0
- package/src/qt4-snaps/file-file.snap +1 -0
- package/src/qt4-snaps/fn-QName.snap +1 -0
- package/src/qt4-snaps/fn-abs.snap +1 -0
- package/src/qt4-snaps/fn-adjust-date-to-timezone.snap +1 -0
- package/src/qt4-snaps/fn-adjust-dateTime-to-timezone.snap +1 -0
- package/src/qt4-snaps/fn-adjust-time-to-timezone.snap +1 -0
- package/src/qt4-snaps/fn-analyze-string.snap +1 -0
- package/src/qt4-snaps/fn-apply.snap +1 -0
- package/src/qt4-snaps/fn-available-environment-variables.snap +1 -0
- package/src/qt4-snaps/fn-avg.snap +1 -0
- package/src/qt4-snaps/fn-base-uri.snap +1 -0
- package/src/qt4-snaps/fn-boolean.snap +1 -0
- package/src/qt4-snaps/fn-ceiling.snap +1 -0
- package/src/qt4-snaps/fn-codepoint-equal.snap +1 -0
- package/src/qt4-snaps/fn-codepoints-to-string.snap +1 -0
- package/src/qt4-snaps/fn-collation-key.snap +1 -0
- package/src/qt4-snaps/fn-collection.snap +1 -0
- package/src/qt4-snaps/fn-compare.snap +1 -0
- package/src/qt4-snaps/fn-concat.snap +1 -0
- package/src/qt4-snaps/fn-contains-token.snap +1 -0
- package/src/qt4-snaps/fn-contains.snap +1 -0
- package/src/qt4-snaps/fn-count.snap +1 -0
- package/src/qt4-snaps/fn-current-date.snap +1 -0
- package/src/qt4-snaps/fn-current-dateTime.snap +1 -0
- package/src/qt4-snaps/fn-current-time.snap +1 -0
- package/src/qt4-snaps/fn-data.snap +8 -0
- package/src/qt4-snaps/fn-dateTime.snap +1 -0
- package/src/qt4-snaps/fn-day-from-date.snap +1 -0
- package/src/qt4-snaps/fn-day-from-dateTime.snap +1 -0
- package/src/qt4-snaps/fn-days-from-duration.snap +1 -0
- package/src/qt4-snaps/fn-deep-equal.snap +1 -0
- package/src/qt4-snaps/fn-default-collation.snap +1 -0
- package/src/qt4-snaps/fn-default-language.snap +1 -0
- package/src/qt4-snaps/fn-distinct-values.snap +1 -0
- package/src/qt4-snaps/fn-doc-available.snap +1 -0
- package/src/qt4-snaps/fn-doc.snap +1 -0
- package/src/qt4-snaps/fn-document-uri.snap +8 -0
- package/src/qt4-snaps/fn-element-with-id.snap +1 -0
- package/src/qt4-snaps/fn-empty.snap +1 -0
- package/src/qt4-snaps/fn-encode-for-uri.snap +1 -0
- package/src/qt4-snaps/fn-ends-with.snap +1 -0
- package/src/qt4-snaps/fn-environment-variable.snap +1 -0
- package/src/qt4-snaps/fn-error.snap +128 -0
- package/src/qt4-snaps/fn-escape-html-uri.snap +1 -0
- package/src/qt4-snaps/fn-exactly-one.snap +1 -0
- package/src/qt4-snaps/fn-exists.snap +1 -0
- package/src/qt4-snaps/fn-false.snap +1 -0
- package/src/qt4-snaps/fn-filter.snap +10 -0
- package/src/qt4-snaps/fn-floor.snap +1 -0
- package/src/qt4-snaps/fn-fold-left.snap +1 -0
- package/src/qt4-snaps/fn-fold-right.snap +1 -0
- package/src/qt4-snaps/fn-for-each-pair.snap +10 -0
- package/src/qt4-snaps/fn-for-each.snap +10 -0
- package/src/qt4-snaps/fn-format-date.snap +26 -0
- package/src/qt4-snaps/fn-format-dateTime.snap +1 -0
- package/src/qt4-snaps/fn-format-integer.snap +1 -0
- package/src/qt4-snaps/fn-format-number.snap +38 -0
- package/src/qt4-snaps/fn-format-time.snap +1 -0
- package/src/qt4-snaps/fn-function-arity.snap +1 -0
- package/src/qt4-snaps/fn-function-lookup.snap +1 -0
- package/src/qt4-snaps/fn-function-name.snap +1 -0
- package/src/qt4-snaps/fn-generate-id.snap +18 -0
- package/src/qt4-snaps/fn-has-children.snap +26 -0
- package/src/qt4-snaps/fn-head.snap +1 -0
- package/src/qt4-snaps/fn-hours-from-dateTime.snap +1 -0
- package/src/qt4-snaps/fn-hours-from-duration.snap +1 -0
- package/src/qt4-snaps/fn-hours-from-time.snap +1 -0
- package/src/qt4-snaps/fn-id.snap +10 -0
- package/src/qt4-snaps/fn-idref.snap +10 -0
- package/src/qt4-snaps/fn-implicit-timezone.snap +1 -0
- package/src/qt4-snaps/fn-in-scope-prefixes.snap +26 -0
- package/src/qt4-snaps/fn-index-of.snap +1 -0
- package/src/qt4-snaps/fn-innermost.snap +58 -0
- package/src/qt4-snaps/fn-insert-before.snap +1 -0
- package/src/qt4-snaps/fn-iri-to-uri.snap +1 -0
- package/src/qt4-snaps/fn-json-doc.snap +1 -0
- package/src/qt4-snaps/fn-json-to-xml.snap +1 -0
- package/src/qt4-snaps/fn-lang.snap +10 -0
- package/src/qt4-snaps/fn-last.snap +1 -0
- package/src/qt4-snaps/fn-load-xquery-module.snap +1 -0
- package/src/qt4-snaps/fn-local-name-from-QName.snap +1 -0
- package/src/qt4-snaps/fn-local-name.snap +10 -0
- package/src/qt4-snaps/fn-lower-case.snap +1 -0
- package/src/qt4-snaps/fn-matches.re.snap +1 -0
- package/src/qt4-snaps/fn-matches.snap +1 -0
- package/src/qt4-snaps/fn-max.snap +1 -0
- package/src/qt4-snaps/fn-min.snap +1 -0
- package/src/qt4-snaps/fn-minutes-from-dateTime.snap +1 -0
- package/src/qt4-snaps/fn-minutes-from-duration.snap +1 -0
- package/src/qt4-snaps/fn-minutes-from-time.snap +1 -0
- package/src/qt4-snaps/fn-month-from-date.snap +1 -0
- package/src/qt4-snaps/fn-month-from-dateTime.snap +1 -0
- package/src/qt4-snaps/fn-months-from-duration.snap +1 -0
- package/src/qt4-snaps/fn-name.snap +10 -0
- package/src/qt4-snaps/fn-namespace-uri-for-prefix.snap +1 -0
- package/src/qt4-snaps/fn-namespace-uri-from-QName.snap +1 -0
- package/src/qt4-snaps/fn-namespace-uri.snap +1 -0
- package/src/qt4-snaps/fn-nilled.snap +16 -0
- package/src/qt4-snaps/fn-node-name.snap +32 -0
- package/src/qt4-snaps/fn-normalize-space.snap +1 -0
- package/src/qt4-snaps/fn-normalize-unicode.snap +26 -0
- package/src/qt4-snaps/fn-not.snap +1 -0
- package/src/qt4-snaps/fn-number.snap +1 -0
- package/src/qt4-snaps/fn-one-or-more.snap +1 -0
- package/src/qt4-snaps/fn-outermost.snap +58 -0
- package/src/qt4-snaps/fn-parse-ietf-date.snap +1 -0
- package/src/qt4-snaps/fn-parse-json.snap +1 -0
- package/src/qt4-snaps/fn-parse-xml-fragment.snap +1 -0
- package/src/qt4-snaps/fn-parse-xml.snap +1 -0
- package/src/qt4-snaps/fn-path.snap +26 -0
- package/src/qt4-snaps/fn-position.snap +1 -0
- package/src/qt4-snaps/fn-prefix-from-QName.snap +1 -0
- package/src/qt4-snaps/fn-random-number-generator.snap +1 -0
- package/src/qt4-snaps/fn-remove.snap +1 -0
- package/src/qt4-snaps/fn-replace.snap +330 -0
- package/src/qt4-snaps/fn-resolve-QName.snap +1 -0
- package/src/qt4-snaps/fn-resolve-uri.snap +1 -0
- package/src/qt4-snaps/fn-reverse.snap +1 -0
- package/src/qt4-snaps/fn-root.snap +10 -0
- package/src/qt4-snaps/fn-round-half-to-even.snap +1 -0
- package/src/qt4-snaps/fn-round.snap +8 -0
- package/src/qt4-snaps/fn-seconds-from-dateTime.snap +1 -0
- package/src/qt4-snaps/fn-seconds-from-duration.snap +1 -0
- package/src/qt4-snaps/fn-seconds-from-time.snap +1 -0
- package/src/qt4-snaps/fn-serialize.snap +50 -0
- package/src/qt4-snaps/fn-sort.snap +1 -0
- package/src/qt4-snaps/fn-starts-with.snap +1 -0
- package/src/qt4-snaps/fn-static-base-uri.snap +1 -0
- package/src/qt4-snaps/fn-string-join.snap +8 -0
- package/src/qt4-snaps/fn-string-length.snap +1 -0
- package/src/qt4-snaps/fn-string-to-codepoints.snap +1 -0
- package/src/qt4-snaps/fn-string.snap +10 -0
- package/src/qt4-snaps/fn-subsequence.snap +1 -0
- package/src/qt4-snaps/fn-substring-after.snap +1 -0
- package/src/qt4-snaps/fn-substring-before.snap +1 -0
- package/src/qt4-snaps/fn-substring.snap +1 -0
- package/src/qt4-snaps/fn-sum.snap +1 -0
- package/src/qt4-snaps/fn-tail.snap +1 -0
- package/src/qt4-snaps/fn-timezone-from-date.snap +1 -0
- package/src/qt4-snaps/fn-timezone-from-dateTime.snap +1 -0
- package/src/qt4-snaps/fn-timezone-from-time.snap +1 -0
- package/src/qt4-snaps/fn-tokenize.snap +16 -0
- package/src/qt4-snaps/fn-trace.snap +8 -0
- package/src/qt4-snaps/fn-transform.snap +1 -0
- package/src/qt4-snaps/fn-translate.snap +1 -0
- package/src/qt4-snaps/fn-true.snap +1 -0
- package/src/qt4-snaps/fn-unordered.snap +1 -0
- package/src/qt4-snaps/fn-unparsed-text-available.snap +1 -0
- package/src/qt4-snaps/fn-unparsed-text-lines.snap +1 -0
- package/src/qt4-snaps/fn-unparsed-text.snap +1 -0
- package/src/qt4-snaps/fn-upper-case.snap +1 -0
- package/src/qt4-snaps/fn-uri-collection.snap +1 -0
- package/src/qt4-snaps/fn-xml-to-json.snap +1 -0
- package/src/qt4-snaps/fn-year-from-date.snap +1 -0
- package/src/qt4-snaps/fn-year-from-dateTime.snap +1 -0
- package/src/qt4-snaps/fn-years-from-duration.snap +1 -0
- package/src/qt4-snaps/fn-zero-or-one.snap +1 -0
- package/src/qt4-snaps/map-contains.snap +1 -0
- package/src/qt4-snaps/map-entry.snap +1 -0
- package/src/qt4-snaps/map-find.snap +1 -0
- package/src/qt4-snaps/map-for-each.snap +1 -0
- package/src/qt4-snaps/map-get.snap +1 -0
- package/src/qt4-snaps/map-keys.snap +1 -0
- package/src/qt4-snaps/map-merge.snap +1 -0
- package/src/qt4-snaps/map-put.snap +1 -0
- package/src/qt4-snaps/map-remove.snap +1 -0
- package/src/qt4-snaps/map-size.snap +1 -0
- package/src/qt4-snaps/math-math-acos.snap +1 -0
- package/src/qt4-snaps/math-math-asin.snap +1 -0
- package/src/qt4-snaps/math-math-atan.snap +1 -0
- package/src/qt4-snaps/math-math-atan2.snap +1 -0
- package/src/qt4-snaps/math-math-cos.snap +1 -0
- package/src/qt4-snaps/math-math-exp.snap +1 -0
- package/src/qt4-snaps/math-math-exp10.snap +1 -0
- package/src/qt4-snaps/math-math-log.snap +1 -0
- package/src/qt4-snaps/math-math-log10.snap +1 -0
- package/src/qt4-snaps/math-math-pi.snap +1 -0
- package/src/qt4-snaps/math-math-pow.snap +1 -0
- package/src/qt4-snaps/math-math-sin.snap +1 -0
- package/src/qt4-snaps/math-math-sqrt.snap +1 -0
- package/src/qt4-snaps/math-math-tan.snap +1 -0
- package/src/qt4-snaps/misc-AnnexE.snap +1 -0
- package/src/qt4-snaps/misc-AppendixA4.snap +1 -0
- package/src/qt4-snaps/misc-CombinedErrorCodes.snap +350 -0
- package/src/qt4-snaps/misc-ErrorsAndOptimization.snap +1 -0
- package/src/qt4-snaps/misc-HigherOrderFunctions.snap +32 -0
- package/src/qt4-snaps/misc-JsonTestSuite.snap +1 -0
- package/src/qt4-snaps/misc-StaticContext.snap +8 -0
- package/src/qt4-snaps/misc-Surrogates.snap +34 -0
- package/src/qt4-snaps/misc-UCACollation.snap +1 -0
- package/src/qt4-snaps/misc-XMLEdition.snap +22 -0
- package/src/qt4-snaps/op-QName-equal.snap +1 -0
- package/src/qt4-snaps/op-add-dayTimeDuration-to-date.snap +1 -0
- package/src/qt4-snaps/op-add-dayTimeDuration-to-dateTime.snap +1 -0
- package/src/qt4-snaps/op-add-dayTimeDuration-to-time.snap +1 -0
- package/src/qt4-snaps/op-add-dayTimeDurations.snap +1 -0
- package/src/qt4-snaps/op-add-yearMonthDuration-to-date.snap +1 -0
- package/src/qt4-snaps/op-add-yearMonthDuration-to-dateTime.snap +1 -0
- package/src/qt4-snaps/op-add-yearMonthDurations.snap +1 -0
- package/src/qt4-snaps/op-anyURI-equal.snap +1 -0
- package/src/qt4-snaps/op-anyURI-greater-than.snap +1 -0
- package/src/qt4-snaps/op-anyURI-less-than.snap +1 -0
- package/src/qt4-snaps/op-bang.snap +1 -0
- package/src/qt4-snaps/op-base64Binary-equal.snap +1 -0
- package/src/qt4-snaps/op-base64Binary-greater-than.snap +1 -0
- package/src/qt4-snaps/op-base64Binary-less-than.snap +1 -0
- package/src/qt4-snaps/op-boolean-equal.snap +1 -0
- package/src/qt4-snaps/op-boolean-greater-than.snap +1 -0
- package/src/qt4-snaps/op-boolean-less-than.snap +1 -0
- package/src/qt4-snaps/op-concat.snap +1 -0
- package/src/qt4-snaps/op-concatenate.snap +1 -0
- package/src/qt4-snaps/op-date-equal.snap +1 -0
- package/src/qt4-snaps/op-date-greater-than.snap +1 -0
- package/src/qt4-snaps/op-date-less-than.snap +1 -0
- package/src/qt4-snaps/op-dateTime-equal.snap +1 -0
- package/src/qt4-snaps/op-dateTime-greater-than.snap +1 -0
- package/src/qt4-snaps/op-dateTime-less-than.snap +1 -0
- package/src/qt4-snaps/op-dayTimeDuration-greater-than.snap +1 -0
- package/src/qt4-snaps/op-dayTimeDuration-less-than.snap +1 -0
- package/src/qt4-snaps/op-divide-dayTimeDuration-by-dayTimeDuration.snap +1 -0
- package/src/qt4-snaps/op-divide-dayTimeDuration.snap +1 -0
- package/src/qt4-snaps/op-divide-yearMonthDuration-by-yearMonthDuration.snap +1 -0
- package/src/qt4-snaps/op-divide-yearMonthDuration.snap +1 -0
- package/src/qt4-snaps/op-duration-equal.snap +1 -0
- package/src/qt4-snaps/op-except.snap +1 -0
- package/src/qt4-snaps/op-gDay-equal.snap +1 -0
- package/src/qt4-snaps/op-gMonth-equal.snap +1 -0
- package/src/qt4-snaps/op-gMonthDay-equal.snap +1 -0
- package/src/qt4-snaps/op-gYear-equal.snap +1 -0
- package/src/qt4-snaps/op-gYearMonth-equal.snap +1 -0
- package/src/qt4-snaps/op-hexBinary-equal.snap +1 -0
- package/src/qt4-snaps/op-hexBinary-greater-than.snap +1 -0
- package/src/qt4-snaps/op-hexBinary-less-than.snap +1 -0
- package/src/qt4-snaps/op-intersect.snap +1 -0
- package/src/qt4-snaps/op-is-same-node.snap +1 -0
- package/src/qt4-snaps/op-multiply-dayTimeDuration.snap +1 -0
- package/src/qt4-snaps/op-multiply-yearMonthDuration.snap +1 -0
- package/src/qt4-snaps/op-node-after.snap +1 -0
- package/src/qt4-snaps/op-node-before.snap +1 -0
- package/src/qt4-snaps/op-numeric-add.snap +1 -0
- package/src/qt4-snaps/op-numeric-divide.snap +1 -0
- package/src/qt4-snaps/op-numeric-equal.snap +1 -0
- package/src/qt4-snaps/op-numeric-greater-than.snap +1 -0
- package/src/qt4-snaps/op-numeric-integer-divide.snap +1 -0
- package/src/qt4-snaps/op-numeric-less-than.snap +1 -0
- package/src/qt4-snaps/op-numeric-mod.snap +1 -0
- package/src/qt4-snaps/op-numeric-multiply.snap +1 -0
- package/src/qt4-snaps/op-numeric-subtract.snap +1 -0
- package/src/qt4-snaps/op-numeric-unary-minus.snap +1 -0
- package/src/qt4-snaps/op-numeric-unary-plus.snap +1 -0
- package/src/qt4-snaps/op-same-key.snap +1 -0
- package/src/qt4-snaps/op-string-equal.snap +1 -0
- package/src/qt4-snaps/op-string-greater-than.snap +1 -0
- package/src/qt4-snaps/op-string-less-than.snap +1 -0
- package/src/qt4-snaps/op-subtract-dateTimes.snap +1 -0
- package/src/qt4-snaps/op-subtract-dates.snap +1 -0
- package/src/qt4-snaps/op-subtract-dayTimeDuration-from-date.snap +1 -0
- package/src/qt4-snaps/op-subtract-dayTimeDuration-from-dateTime.snap +1 -0
- package/src/qt4-snaps/op-subtract-dayTimeDuration-from-time.snap +1 -0
- package/src/qt4-snaps/op-subtract-dayTimeDurations.snap +1 -0
- package/src/qt4-snaps/op-subtract-times.snap +1 -0
- package/src/qt4-snaps/op-subtract-yearMonthDuration-from-date.snap +1 -0
- package/src/qt4-snaps/op-subtract-yearMonthDuration-from-dateTime.snap +1 -0
- package/src/qt4-snaps/op-subtract-yearMonthDurations.snap +1 -0
- package/src/qt4-snaps/op-time-equal.snap +1 -0
- package/src/qt4-snaps/op-time-greater-than.snap +1 -0
- package/src/qt4-snaps/op-time-less-than.snap +1 -0
- package/src/qt4-snaps/op-to.snap +1 -0
- package/src/qt4-snaps/op-union.snap +1 -0
- package/src/qt4-snaps/op-yearMonthDuration-greater-than.snap +1 -0
- package/src/qt4-snaps/op-yearMonthDuration-less-than.snap +1 -0
- package/src/qt4-snaps/prod-AllowingEmpty.snap +1 -0
- package/src/qt4-snaps/prod-Annotation.snap +146 -0
- package/src/qt4-snaps/prod-ArrayType.snap +1 -0
- package/src/qt4-snaps/prod-ArrowExpr.snap +1 -0
- package/src/qt4-snaps/prod-AxisStep.abbr.snap +1 -0
- package/src/qt4-snaps/prod-AxisStep.ancestor-or-self.snap +1 -0
- package/src/qt4-snaps/prod-AxisStep.ancestor.snap +1 -0
- package/src/qt4-snaps/prod-AxisStep.following-sibling.snap +1 -0
- package/src/qt4-snaps/prod-AxisStep.following.snap +1 -0
- package/src/qt4-snaps/prod-AxisStep.preceding-sibling.snap +1 -0
- package/src/qt4-snaps/prod-AxisStep.preceding.snap +1 -0
- package/src/qt4-snaps/prod-AxisStep.snap +114 -0
- package/src/qt4-snaps/prod-AxisStep.unabbr.snap +1 -0
- package/src/qt4-snaps/prod-BaseURIDecl.snap +20 -0
- package/src/qt4-snaps/prod-BoundarySpaceDecl.snap +14 -0
- package/src/qt4-snaps/prod-CastExpr.derived.snap +1 -0
- package/src/qt4-snaps/prod-CastExpr.snap +218 -0
- package/src/qt4-snaps/prod-CastableExpr.snap +56 -0
- package/src/qt4-snaps/prod-Comment.snap +1 -0
- package/src/qt4-snaps/prod-CompAttrConstructor.snap +14 -0
- package/src/qt4-snaps/prod-CompCommentConstructor.snap +8 -0
- package/src/qt4-snaps/prod-CompDocConstructor.snap +1 -0
- package/src/qt4-snaps/prod-CompElemConstructor.snap +1 -0
- package/src/qt4-snaps/prod-CompNamespaceConstructor.snap +1 -0
- package/src/qt4-snaps/prod-CompPIConstructor.snap +1 -0
- package/src/qt4-snaps/prod-CompTextConstructor.snap +8 -0
- package/src/qt4-snaps/prod-ConstructionDecl.snap +14 -0
- package/src/qt4-snaps/prod-ContextItemDecl.snap +20 -0
- package/src/qt4-snaps/prod-ContextItemExpr.snap +1 -0
- package/src/qt4-snaps/prod-CopyNamespacesDecl.snap +14 -0
- package/src/qt4-snaps/prod-CountClause.snap +1 -0
- package/src/qt4-snaps/prod-CurlyArrayConstructor.snap +1 -0
- package/src/qt4-snaps/prod-DecimalFormatDecl.snap +92 -0
- package/src/qt4-snaps/prod-DefaultCollationDecl.snap +32 -0
- package/src/qt4-snaps/prod-DefaultNamespaceDecl.snap +92 -0
- package/src/qt4-snaps/prod-DirAttributeList.snap +58 -0
- package/src/qt4-snaps/prod-DirElemConstructor.snap +62 -0
- package/src/qt4-snaps/prod-DirElemContent.namespace.snap +176 -0
- package/src/qt4-snaps/prod-DirElemContent.snap +14 -0
- package/src/qt4-snaps/prod-DirElemContent.whitespace.snap +178 -0
- package/src/qt4-snaps/prod-DirectConstructor.snap +56 -0
- package/src/qt4-snaps/prod-EQName.snap +48 -0
- package/src/qt4-snaps/prod-EmptyOrderDecl.snap +14 -0
- package/src/qt4-snaps/prod-ExtensionExpr.snap +50 -0
- package/src/qt4-snaps/prod-ForClause.snap +158 -0
- package/src/qt4-snaps/prod-FunctionCall.snap +102 -0
- package/src/qt4-snaps/prod-FunctionDecl.snap +256 -0
- package/src/qt4-snaps/prod-GeneralComp.eq.snap +1 -0
- package/src/qt4-snaps/prod-GeneralComp.ge.snap +1 -0
- package/src/qt4-snaps/prod-GeneralComp.gt.snap +1 -0
- package/src/qt4-snaps/prod-GeneralComp.le.snap +1 -0
- package/src/qt4-snaps/prod-GeneralComp.lt.snap +1 -0
- package/src/qt4-snaps/prod-GeneralComp.ne.snap +1 -0
- package/src/qt4-snaps/prod-GroupByClause.snap +8 -0
- package/src/qt4-snaps/prod-IfExpr.snap +1 -0
- package/src/qt4-snaps/prod-InlineFunctionExpr.snap +14 -0
- package/src/qt4-snaps/prod-InstanceofExpr.snap +38 -0
- package/src/qt4-snaps/prod-LetClause.snap +40 -0
- package/src/qt4-snaps/prod-Literal.snap +68 -0
- package/src/qt4-snaps/prod-Lookup.snap +1 -0
- package/src/qt4-snaps/prod-MapConstructor.snap +1 -0
- package/src/qt4-snaps/prod-MapType.snap +8 -0
- package/src/qt4-snaps/prod-ModuleImport.snap +224 -0
- package/src/qt4-snaps/prod-NameTest.snap +164 -0
- package/src/qt4-snaps/prod-NamedFunctionRef.snap +1 -0
- package/src/qt4-snaps/prod-NamespaceDecl.snap +80 -0
- package/src/qt4-snaps/prod-NodeTest.snap +50 -0
- package/src/qt4-snaps/prod-OptionDecl.serialization.snap +14 -0
- package/src/qt4-snaps/prod-OptionDecl.snap +20 -0
- package/src/qt4-snaps/prod-OrExpr.snap +1 -0
- package/src/qt4-snaps/prod-OrderByClause.snap +20 -0
- package/src/qt4-snaps/prod-OrderingModeDecl.snap +14 -0
- package/src/qt4-snaps/prod-ParenthesizedExpr.snap +1 -0
- package/src/qt4-snaps/prod-PathExpr.snap +34 -0
- package/src/qt4-snaps/prod-PositionalVar.snap +26 -0
- package/src/qt4-snaps/prod-Predicate.snap +14 -0
- package/src/qt4-snaps/prod-QuantifiedExpr.snap +164 -0
- package/src/qt4-snaps/prod-ReturnClause.snap +8 -0
- package/src/qt4-snaps/prod-SequenceType.snap +1 -0
- package/src/qt4-snaps/prod-SquareArrayConstructor.snap +1 -0
- package/src/qt4-snaps/prod-StepExpr.snap +1 -0
- package/src/qt4-snaps/prod-StringConstructor.snap +26 -0
- package/src/qt4-snaps/prod-SwitchExpr.snap +1 -0
- package/src/qt4-snaps/prod-TreatExpr.snap +14 -0
- package/src/qt4-snaps/prod-TryCatchExpr.snap +38 -0
- package/src/qt4-snaps/prod-TypeswitchExpr.snap +50 -0
- package/src/qt4-snaps/prod-UnaryLookup.snap +1 -0
- package/src/qt4-snaps/prod-UnorderedExpr.snap +14 -0
- package/src/qt4-snaps/prod-ValueComp.snap +1 -0
- package/src/qt4-snaps/prod-VarDecl.external.snap +82 -0
- package/src/qt4-snaps/prod-VarDecl.snap +146 -0
- package/src/qt4-snaps/prod-VarDefaultValue.snap +8 -0
- package/src/qt4-snaps/prod-VersionDecl.snap +68 -0
- package/src/qt4-snaps/prod-WhereClause.snap +26 -0
- package/src/qt4-snaps/prod-WindowClause.snap +98 -0
- package/src/qt4-snaps/ser-method-adaptive.snap +1 -0
- package/src/qt4-snaps/ser-method-html.snap +1 -0
- package/src/qt4-snaps/ser-method-xml.snap +1 -0
- package/src/qt4-snaps/upd-AdditionalTyping.snap +1 -0
- package/src/qt4-snaps/upd-AddressBookUpdates.snap +1 -0
- package/src/qt4-snaps/upd-AttrDataModelErrs.snap +1 -0
- package/src/qt4-snaps/upd-CommaExpression.snap +1 -0
- package/src/qt4-snaps/upd-Compatibility.snap +1 -0
- package/src/qt4-snaps/upd-ConditionalExpression.snap +1 -0
- package/src/qt4-snaps/upd-DeleteExpressions.snap +1 -0
- package/src/qt4-snaps/upd-FLWORExpression.snap +1 -0
- package/src/qt4-snaps/upd-FullAxis.snap +1 -0
- package/src/qt4-snaps/upd-FunctionCall.snap +1 -0
- package/src/qt4-snaps/upd-FunctionDeclaration.snap +114 -0
- package/src/qt4-snaps/upd-InsertExpressions.snap +1 -0
- package/src/qt4-snaps/upd-MinOther.snap +1 -0
- package/src/qt4-snaps/upd-NSBindingConflictErrs.snap +1 -0
- package/src/qt4-snaps/upd-NamespacesUpdates.snap +1 -0
- package/src/qt4-snaps/upd-NilUpdates.snap +10 -0
- package/src/qt4-snaps/upd-OtherExpressions.snap +1 -0
- package/src/qt4-snaps/upd-ParenthesizedExpressions.snap +1 -0
- package/src/qt4-snaps/upd-PartsUpdates.snap +1 -0
- package/src/qt4-snaps/upd-RelationalDataUpdates.snap +1 -0
- package/src/qt4-snaps/upd-RenameExpressions.snap +1 -0
- package/src/qt4-snaps/upd-ReplaceNode.snap +1 -0
- package/src/qt4-snaps/upd-ReplaceValue.snap +1 -0
- package/src/qt4-snaps/upd-RevalidationDeclarationLax.snap +1 -0
- package/src/qt4-snaps/upd-RevalidationDeclarationLaxUnsupported.snap +1 -0
- package/src/qt4-snaps/upd-RevalidationDeclarationSkip.snap +10 -0
- package/src/qt4-snaps/upd-RevalidationDeclarationSkipUnsupported.snap +1 -0
- package/src/qt4-snaps/upd-RevalidationDeclarationStrict.snap +1 -0
- package/src/qt4-snaps/upd-RevalidationDeclarationStrictUnsupported.snap +1 -0
- package/src/qt4-snaps/upd-RevalidationDeclarationStrictandSkip.snap +1 -0
- package/src/qt4-snaps/upd-SoapUpdates.snap +1 -0
- package/src/qt4-snaps/upd-TransformExpressions.snap +1 -0
- package/src/qt4-snaps/upd-TypeswitchExpression.snap +1 -0
- package/src/qt4-snaps/upd-VariableDeclaration.snap +1 -0
- package/src/qt4-snaps/upd-applyUpdates.snap +1 -0
- package/src/qt4-snaps/upd-fnput-document.snap +1 -0
- package/src/qt4-snaps/upd-mergeUpdates.snap +1 -0
- package/src/qt4-snaps/upd-propagateNamespace.snap +1 -0
- package/src/qt4-snaps/upd-setToUntyped.snap +1 -0
- package/src/qt4-snaps/xs-anyAtomicType.snap +1 -0
- package/src/qt4-snaps/xs-anySimpleType.snap +8 -0
- package/src/qt4-snaps/xs-anyURI.snap +34 -0
- package/src/qt4-snaps/xs-base64Binary.snap +1 -0
- package/src/qt4-snaps/xs-dateTimeStamp.snap +1 -0
- package/src/qt4-snaps/xs-double.snap +1 -0
- package/src/qt4-snaps/xs-error.snap +10 -0
- package/src/qt4-snaps/xs-float.snap +1 -0
- package/src/qt4-snaps/xs-hexBinary.snap +1 -0
- package/src/qt4-snaps/xs-normalizedString.snap +1 -0
- package/src/qt4-snaps/xs-notation.snap +1 -0
- package/src/qt4-snaps/xs-numeric.snap +1 -0
- package/src/qt4-snaps/xs-token.snap +1 -0
- package/src/qt4-worker.ts +63 -0
- package/src/runtimes/existdb/cache.xq +83 -0
- package/src/runtimes/existdb/compression.xq +198 -0
- package/src/runtimes/existdb/console.xq +24 -0
- package/src/runtimes/existdb/contentextraction.xq +31 -0
- package/src/runtimes/existdb/counter.xq +30 -0
- package/src/runtimes/existdb/crypto.xq +97 -0
- package/src/runtimes/existdb/datetime.xq +91 -0
- package/src/runtimes/existdb/file.xq +129 -0
- package/src/runtimes/existdb/ft.xq +325 -0
- package/src/runtimes/existdb/httpclient.xq +118 -0
- package/src/runtimes/existdb/image.xq +65 -0
- package/src/runtimes/existdb/inspect.xq +49 -0
- package/src/runtimes/existdb/kwic.xq +24 -0
- package/src/runtimes/existdb/mail.xq +124 -0
- package/src/runtimes/existdb/ngram.xq +57 -0
- package/src/runtimes/existdb/process.xq +8 -0
- package/src/runtimes/existdb/range.xq +171 -0
- package/src/runtimes/existdb/repo.xq +125 -0
- package/src/runtimes/existdb/request.xq +242 -0
- package/src/runtimes/existdb/response.xq +50 -0
- package/src/runtimes/existdb/scheduler.xq +35 -0
- package/src/runtimes/existdb/session.xq +111 -0
- package/src/runtimes/existdb/sm.xq +497 -0
- package/src/runtimes/existdb/sort.xq +59 -0
- package/src/runtimes/existdb/system.xq +267 -0
- package/src/runtimes/existdb/transform.xq +88 -0
- package/src/runtimes/existdb/util.xq +860 -0
- package/src/runtimes/existdb/validation.xq +83 -0
- package/src/runtimes/existdb/xmldb.xq +482 -0
- package/src/runtimes/existdb/xmldiff.xq +22 -0
- package/src/runtimes/fonto/fonto.xq +164 -0
- package/src/runtimes.test.ts +152 -0
- package/src/runtimes.ts +70 -0
- package/src/server.ts +352 -122
- package/src/test-utils.ts +17 -0
- package/src/typechecker.test.ts +548 -0
- package/src/typechecker.ts +416 -0
- package/src/types.ts +41 -7
- package/src/unused-diagnostics.test.ts +174 -0
- package/src/unused-diagnostics.ts +232 -0
- 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
|
|
12
|
+
- **Diagnostics** — syntax errors, undeclared namespace prefixes, type mismatches, and unused symbols
|
|
13
13
|
|
|
14
|
-
|
|
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
|
|
43
|
-
|
|
44
|
-
| Completion
|
|
45
|
-
| Hover / docs
|
|
46
|
-
| Signature help
|
|
47
|
-
| Go to definition | `M-.`
|
|
48
|
-
| Go back
|
|
49
|
-
| Document symbols | `M-x imenu`
|
|
50
|
-
| 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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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.
|