xq-lsp 1.0.0 → 1.2.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 +54 -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 +31 -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
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
module namespace fonto = "http://www.fontoxml.com/functions";
|
|
2
|
+
|
|
3
|
+
(:~
|
|
4
|
+
: Returns the common ancestor node of the current editor selection.
|
|
5
|
+
: @see https://documentation.fontoxml.com/latest/fonto-selection-common-ancestor-bc3ca1b4b8ef
|
|
6
|
+
:)
|
|
7
|
+
declare function fonto:selection-common-ancestor() as node()? external;
|
|
8
|
+
|
|
9
|
+
(:~
|
|
10
|
+
: Returns true if both edges of the global selection are within the given node or its descendants.
|
|
11
|
+
: @param $node The node to test.
|
|
12
|
+
: @see https://documentation.fontoxml.com/latest/fonto-selection-in-node-85e16ee4b6be
|
|
13
|
+
:)
|
|
14
|
+
declare function fonto:selection-in-node($node as node()) as xs:boolean external;
|
|
15
|
+
|
|
16
|
+
(:~
|
|
17
|
+
: Serializes a node as JsonML. Returns xs:string for text nodes, array() for other node types.
|
|
18
|
+
: @param $node The node to serialize.
|
|
19
|
+
: @see https://documentation.fontoxml.com/latest/fonto-serialize-as-jsonml-a1d656f6c5ca
|
|
20
|
+
:)
|
|
21
|
+
declare function fonto:serialize-as-jsonml($node as node()) as item() external;
|
|
22
|
+
|
|
23
|
+
(:~
|
|
24
|
+
: Returns the current hierarchy node ID, as set via the currentHierarchyNodeId option on evaluateXPath.
|
|
25
|
+
: May return the empty sequence in Hooks or mutations where all hierarchy nodes are considered current.
|
|
26
|
+
: @see https://documentation.fontoxml.com/latest/fonto-current-hierarchy-node-id-e69ed148e068
|
|
27
|
+
:)
|
|
28
|
+
declare function fonto:current-hierarchy-node-id() as xs:string? external;
|
|
29
|
+
|
|
30
|
+
(:~
|
|
31
|
+
: Returns the column index of a table cell. Returns the empty sequence if the node is not a cell.
|
|
32
|
+
: @param $node The table cell node.
|
|
33
|
+
: @see https://documentation.fontoxml.com/latest/fonto-get-column-index-ec839ee74c89
|
|
34
|
+
:)
|
|
35
|
+
declare function fonto:get-column-index($node as node()) as xs:integer? external;
|
|
36
|
+
|
|
37
|
+
(:~
|
|
38
|
+
: Returns true when the review route is open, false otherwise.
|
|
39
|
+
: @see https://documentation.fontoxml.com/latest/fonto-is-on-review-route-e29d1a0ba87f
|
|
40
|
+
:)
|
|
41
|
+
declare function fonto:is-on-review-route() as xs:boolean external;
|
|
42
|
+
|
|
43
|
+
(:~
|
|
44
|
+
: Returns true if the application is on the editor route and suggestion mode is active, false otherwise.
|
|
45
|
+
: @see https://documentation.fontoxml.com/latest/fonto-is-in-suggestion-mode-8aac7e957513
|
|
46
|
+
:)
|
|
47
|
+
declare function fonto:is-in-suggestion-mode() as xs:boolean external;
|
|
48
|
+
|
|
49
|
+
(:~
|
|
50
|
+
: Returns true if the given node is configured as removed.
|
|
51
|
+
: @param $node The node to check.
|
|
52
|
+
: @see https://documentation.fontoxml.com/latest/fonto-is-removed-a1bfbc4d67e7
|
|
53
|
+
:)
|
|
54
|
+
declare function fonto:is-removed($node as node()) as xs:boolean external;
|
|
55
|
+
|
|
56
|
+
(:~
|
|
57
|
+
: Returns true if the given node has the given DITA class, using the schema.
|
|
58
|
+
: @param $node The node to test.
|
|
59
|
+
: @param $ditaclass The DITA class string, e.g. "topic/p".
|
|
60
|
+
: @see https://documentation.fontoxml.com/latest/fonto-dita-class-9dd8240eb51f
|
|
61
|
+
:)
|
|
62
|
+
declare function fonto:dita-class($node as node(), $ditaclass as xs:string) as xs:boolean external;
|
|
63
|
+
|
|
64
|
+
(:~
|
|
65
|
+
: Returns the markup label of the given node, as configured via the markupLabel property in configureProperties.
|
|
66
|
+
: @param $node The node whose markup label to retrieve.
|
|
67
|
+
: @see https://documentation.fontoxml.com/latest/fonto-markup-label-94d77791388a
|
|
68
|
+
:)
|
|
69
|
+
declare function fonto:markup-label($node as node()) as xs:string external;
|
|
70
|
+
|
|
71
|
+
(:~
|
|
72
|
+
: Returns true if the given node is visualized as a block (e.g. configured as frame, structure, or block).
|
|
73
|
+
: Cannot be used in family configuration for the same node. Use fonto:in-inline-layout to check
|
|
74
|
+
: the expected layout context instead.
|
|
75
|
+
: @param $node The node to check.
|
|
76
|
+
: @see https://documentation.fontoxml.com/latest/fonto-block-layout-63c8bd99d28a
|
|
77
|
+
:)
|
|
78
|
+
declare function fonto:block-layout($node as node()) as xs:boolean external;
|
|
79
|
+
|
|
80
|
+
(:~
|
|
81
|
+
: Returns true if the given node should be rendered as inline, as determined by its parent's family.
|
|
82
|
+
: @param $node The node to check.
|
|
83
|
+
: @see https://documentation.fontoxml.com/latest/fonto-in-inline-layout-4073a50b4330
|
|
84
|
+
:)
|
|
85
|
+
declare function fonto:in-inline-layout($node as node()) as xs:boolean external;
|
|
86
|
+
|
|
87
|
+
(:~
|
|
88
|
+
: Returns a plain-text representation of the node's content, ignoring removed and detached descendants.
|
|
89
|
+
: Inserts newlines at block/inline boundaries and for break elements.
|
|
90
|
+
: @param $node The node to extract text from.
|
|
91
|
+
: @see https://documentation.fontoxml.com/latest/fonto-curated-text-in-node-4623872061c2
|
|
92
|
+
:)
|
|
93
|
+
declare function fonto:curated-text-in-node($node as node()) as xs:string? external;
|
|
94
|
+
|
|
95
|
+
(:~
|
|
96
|
+
: Returns a plain-text representation of the node's content with options (e.g. dfcs for bidi text).
|
|
97
|
+
: @param $node The node to extract text from.
|
|
98
|
+
: @param $options Options map (see CuratedTextOptions).
|
|
99
|
+
: @see https://documentation.fontoxml.com/latest/fonto-curated-text-in-node-4623872061c2
|
|
100
|
+
:)
|
|
101
|
+
declare function fonto:curated-text-in-node($node as node(), $options as map(*)) as xs:string? external;
|
|
102
|
+
|
|
103
|
+
(:~
|
|
104
|
+
: Returns a plain-text representation of a document range, ignoring removed and detached descendants.
|
|
105
|
+
: Returns the empty sequence for invalid or empty ranges.
|
|
106
|
+
: @param $startContainer The node containing the start of the range.
|
|
107
|
+
: @param $startOffset The offset within the start container.
|
|
108
|
+
: @param $endContainer The node containing the end of the range.
|
|
109
|
+
: @param $endOffset The offset within the end container.
|
|
110
|
+
: @see https://documentation.fontoxml.com/latest/fonto-curated-text-in-range-33986dbff804
|
|
111
|
+
:)
|
|
112
|
+
declare function fonto:curated-text-in-range(
|
|
113
|
+
$startContainer as node(),
|
|
114
|
+
$startOffset as xs:numeric,
|
|
115
|
+
$endContainer as node(),
|
|
116
|
+
$endOffset as xs:numeric
|
|
117
|
+
) as xs:string? external;
|
|
118
|
+
|
|
119
|
+
(:~
|
|
120
|
+
: Returns a plain-text representation of a document range with options (e.g. dfcs for bidi text).
|
|
121
|
+
: Returns the empty sequence for invalid or empty ranges.
|
|
122
|
+
: @param $startContainer The node containing the start of the range.
|
|
123
|
+
: @param $startOffset The offset within the start container.
|
|
124
|
+
: @param $endContainer The node containing the end of the range.
|
|
125
|
+
: @param $endOffset The offset within the end container.
|
|
126
|
+
: @param $options Options map (see CuratedTextOptions).
|
|
127
|
+
: @see https://documentation.fontoxml.com/latest/fonto-curated-text-in-range-33986dbff804
|
|
128
|
+
:)
|
|
129
|
+
declare function fonto:curated-text-in-range(
|
|
130
|
+
$startContainer as node(),
|
|
131
|
+
$startOffset as xs:numeric,
|
|
132
|
+
$endContainer as node(),
|
|
133
|
+
$endOffset as xs:numeric,
|
|
134
|
+
$options as map(*)
|
|
135
|
+
) as xs:string? external;
|
|
136
|
+
|
|
137
|
+
(:~
|
|
138
|
+
: Returns true if the document with the given remote document id is loaded.
|
|
139
|
+
: @param $remoteDocumentId The remote document id to check.
|
|
140
|
+
: @see https://documentation.fontoxml.com/latest/fonto-is-document-loaded-b22eba5424ed
|
|
141
|
+
:)
|
|
142
|
+
declare function fonto:is-document-loaded($remoteDocumentId as xs:string) as xs:boolean external;
|
|
143
|
+
|
|
144
|
+
(:~
|
|
145
|
+
: Returns true if the document with the given remote document id is in error state.
|
|
146
|
+
: @param $remoteDocumentId The remote document id to check.
|
|
147
|
+
: @see https://documentation.fontoxml.com/latest/fonto-is-document-errored-2b43985649f9
|
|
148
|
+
:)
|
|
149
|
+
declare function fonto:is-document-errored($remoteDocumentId as xs:string) as xs:boolean external;
|
|
150
|
+
|
|
151
|
+
(:~
|
|
152
|
+
: Returns the document node for the given remote document id if it is loaded, otherwise the empty sequence.
|
|
153
|
+
: @param $remoteDocumentId The remote document id.
|
|
154
|
+
: @see https://documentation.fontoxml.com/latest/fonto-document-fb5c19e1ad6d
|
|
155
|
+
:)
|
|
156
|
+
declare function fonto:document($remoteDocumentId as xs:string?) as node()? external;
|
|
157
|
+
|
|
158
|
+
(:~
|
|
159
|
+
: Returns a state map for the given remote document id (matching RemoteDocumentStateProperties),
|
|
160
|
+
: or the empty sequence if the document is not loaded.
|
|
161
|
+
: @param $remoteDocumentId The remote document id.
|
|
162
|
+
: @see https://documentation.fontoxml.com/latest/fonto-remote-document-state-03df124b223a
|
|
163
|
+
:)
|
|
164
|
+
declare function fonto:remote-document-state($remoteDocumentId as xs:string) as map(*)? external;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { test, describe } from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import * as fs from "node:fs";
|
|
4
|
+
import * as path from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { analyze } from "./analyzer.ts";
|
|
7
|
+
import { getCompletions } from "./completion.ts";
|
|
8
|
+
import { formatQName } from "./types.ts";
|
|
9
|
+
import { getRuntimeAnalyses } from "./runtimes.ts";
|
|
10
|
+
|
|
11
|
+
const runtimesDir = path.join(path.dirname(fileURLToPath(import.meta.url)), "runtimes");
|
|
12
|
+
|
|
13
|
+
describe("runtime defs: fonto", () => {
|
|
14
|
+
const fontoPath = path.join(runtimesDir, "fonto", "fonto.xq");
|
|
15
|
+
const fonto = analyze(fs.readFileSync(fontoPath, "utf-8"), "builtin:fonto");
|
|
16
|
+
|
|
17
|
+
test("fonto:selection-common-ancestor is present", () => {
|
|
18
|
+
assert.ok(
|
|
19
|
+
fonto.functions.map((f) => formatQName(f.qname)).includes("fonto:selection-common-ancestor"),
|
|
20
|
+
"fonto:selection-common-ancestor not found",
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test("fonto:dita-class has arity 2", () => {
|
|
25
|
+
const fn = fonto.functions.find((f) => formatQName(f.qname) === "fonto:dita-class");
|
|
26
|
+
assert.ok(fn, "fonto:dita-class not found");
|
|
27
|
+
assert.equal(fn.arity, 2);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test("functions have @see doc links", () => {
|
|
31
|
+
const raw = fs.readFileSync(fontoPath, "utf-8");
|
|
32
|
+
assert.ok(raw.includes("@see https://documentation.fontoxml.com"), "expected @see links");
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe("runtime defs: completions", () => {
|
|
37
|
+
function buildImported(libs: string[]) {
|
|
38
|
+
const byNamespace = new Map(
|
|
39
|
+
getRuntimeAnalyses(libs)
|
|
40
|
+
.filter((a) => a.moduleNamespaceUri)
|
|
41
|
+
.map((a) => [a.moduleNamespaceUri!, a]),
|
|
42
|
+
);
|
|
43
|
+
return (analysis: ReturnType<typeof analyze>) => {
|
|
44
|
+
const imported = new Map<string, ReturnType<typeof analyze>>();
|
|
45
|
+
for (const imp of analysis.imports) {
|
|
46
|
+
if (!imp.atPath) {
|
|
47
|
+
const a = byNamespace.get(imp.namespaceUri);
|
|
48
|
+
if (a) imported.set(imp.namespaceUri, a);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return imported;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
test("fonto functions appear when namespace is imported", () => {
|
|
56
|
+
const src = `import module namespace fonto="http://www.fontoxml.com/functions"; fonto:`;
|
|
57
|
+
const analysis = analyze(src, "file:///main.xq");
|
|
58
|
+
const imported = buildImported(["fonto"])(analysis);
|
|
59
|
+
const labels = getCompletions({ textBeforeCursor: "fonto:", cursorOffset: 6 }, analysis, imported).map(
|
|
60
|
+
(i) => i.label,
|
|
61
|
+
);
|
|
62
|
+
assert.ok(labels.includes("selection-common-ancestor"), `expected fonto functions, got ${labels}`);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
test("fonto functions absent without import", () => {
|
|
66
|
+
const src = `let $x := 1 return $x`;
|
|
67
|
+
const analysis = analyze(src, "file:///main.xq");
|
|
68
|
+
const imported = buildImported(["fonto"])(analysis);
|
|
69
|
+
const labels = getCompletions({ textBeforeCursor: "fonto:", cursorOffset: 6 }, analysis, imported).map(
|
|
70
|
+
(i) => i.label,
|
|
71
|
+
);
|
|
72
|
+
assert.ok(!labels.includes("selection-common-ancestor"), `fonto functions should not appear without import`);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
describe("runtime defs: existdb smoketest", () => {
|
|
77
|
+
const existdbDir = path.join(runtimesDir, "existdb");
|
|
78
|
+
const xqFiles = fs.readdirSync(existdbDir).filter((f) => f.endsWith(".xq"));
|
|
79
|
+
|
|
80
|
+
test("all .xq files parse without throwing", () => {
|
|
81
|
+
const errors: string[] = [];
|
|
82
|
+
for (const file of xqFiles) {
|
|
83
|
+
const src = fs.readFileSync(path.join(existdbDir, file), "utf-8");
|
|
84
|
+
try {
|
|
85
|
+
analyze(src, `builtin:existdb/${file}`);
|
|
86
|
+
} catch (e) {
|
|
87
|
+
errors.push(`${file}: ${e}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
assert.deepEqual(errors, [], `parse errors in existdb files`);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
test("all .xq files export at least one function", () => {
|
|
94
|
+
const empty: string[] = [];
|
|
95
|
+
for (const file of xqFiles) {
|
|
96
|
+
const src = fs.readFileSync(path.join(existdbDir, file), "utf-8");
|
|
97
|
+
const analysis = analyze(src, `builtin:existdb/${file}`);
|
|
98
|
+
if (analysis.functions.length === 0) empty.push(file);
|
|
99
|
+
}
|
|
100
|
+
assert.deepEqual(empty, [], `existdb files with no functions`);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
test("request:get-parameter has arity 2 and typed params", () => {
|
|
104
|
+
const src = fs.readFileSync(path.join(existdbDir, "request.xq"), "utf-8");
|
|
105
|
+
const analysis = analyze(src, "builtin:existdb/request.xq");
|
|
106
|
+
const fn = analysis.functions.find(
|
|
107
|
+
(f) => formatQName(f.qname) === "request:get-parameter" && f.arity === 2,
|
|
108
|
+
);
|
|
109
|
+
assert.ok(fn, "request:get-parameter#2 not found");
|
|
110
|
+
assert.equal(fn.params[0].name, "name");
|
|
111
|
+
assert.equal(fn.params[0].type, "xs:string");
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
test("sm:create-account has arity 3", () => {
|
|
115
|
+
const src = fs.readFileSync(path.join(existdbDir, "sm.xq"), "utf-8");
|
|
116
|
+
const analysis = analyze(src, "builtin:existdb/sm.xq");
|
|
117
|
+
const fn = analysis.functions.find(
|
|
118
|
+
(f) => formatQName(f.qname) === "sm:create-account" && f.arity === 3,
|
|
119
|
+
);
|
|
120
|
+
assert.ok(fn, "sm:create-account#3 not found");
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
test("cache:put has arity 3 with typed params", () => {
|
|
124
|
+
const src = fs.readFileSync(path.join(existdbDir, "cache.xq"), "utf-8");
|
|
125
|
+
const analysis = analyze(src, "builtin:existdb/cache.xq");
|
|
126
|
+
const fn = analysis.functions.find(
|
|
127
|
+
(f) => formatQName(f.qname) === "cache:put" && f.arity === 3,
|
|
128
|
+
);
|
|
129
|
+
assert.ok(fn, "cache:put#3 not found");
|
|
130
|
+
assert.equal(fn.params[0].name, "cache-name");
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
test("request functions appear in completions when namespace is imported", () => {
|
|
134
|
+
const src = `import module namespace request="http://exist-db.org/xquery/request"; request:`;
|
|
135
|
+
const analysis = analyze(src, "file:///main.xq");
|
|
136
|
+
const byNamespace = new Map(
|
|
137
|
+
getRuntimeAnalyses(["existdb"])
|
|
138
|
+
.filter((a) => a.moduleNamespaceUri)
|
|
139
|
+
.map((a) => [a.moduleNamespaceUri!, a]),
|
|
140
|
+
);
|
|
141
|
+
const imported = new Map<string, ReturnType<typeof analyze>>();
|
|
142
|
+
for (const imp of analysis.imports) {
|
|
143
|
+
const a = byNamespace.get(imp.namespaceUri);
|
|
144
|
+
if (a) imported.set(imp.namespaceUri, a);
|
|
145
|
+
}
|
|
146
|
+
const labels = getCompletions({ textBeforeCursor: "request:", cursorOffset: 8 }, analysis, imported).map(
|
|
147
|
+
(i) => i.label,
|
|
148
|
+
);
|
|
149
|
+
assert.ok(labels.includes("get-parameter"), `expected request functions, got ${labels.slice(0, 5)}`);
|
|
150
|
+
assert.ok(labels.includes("get-header"), `expected get-header in completions`);
|
|
151
|
+
});
|
|
152
|
+
});
|
package/src/runtimes.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
import { analyze } from "./analyzer.ts";
|
|
5
|
+
import type { FileAnalysis } from "./types.ts";
|
|
6
|
+
|
|
7
|
+
const runtimesDir = path.join(path.dirname(fileURLToPath(import.meta.url)), "runtimes");
|
|
8
|
+
|
|
9
|
+
const RUNTIME_FILES: Record<string, string[]> = {
|
|
10
|
+
fonto: [path.join(runtimesDir, "fonto", "fonto.xq")],
|
|
11
|
+
existdb: [
|
|
12
|
+
path.join(runtimesDir, "existdb", "cache.xq"),
|
|
13
|
+
path.join(runtimesDir, "existdb", "compression.xq"),
|
|
14
|
+
path.join(runtimesDir, "existdb", "console.xq"),
|
|
15
|
+
path.join(runtimesDir, "existdb", "contentextraction.xq"),
|
|
16
|
+
path.join(runtimesDir, "existdb", "counter.xq"),
|
|
17
|
+
path.join(runtimesDir, "existdb", "crypto.xq"),
|
|
18
|
+
path.join(runtimesDir, "existdb", "datetime.xq"),
|
|
19
|
+
path.join(runtimesDir, "existdb", "file.xq"),
|
|
20
|
+
path.join(runtimesDir, "existdb", "ft.xq"),
|
|
21
|
+
path.join(runtimesDir, "existdb", "httpclient.xq"),
|
|
22
|
+
path.join(runtimesDir, "existdb", "image.xq"),
|
|
23
|
+
path.join(runtimesDir, "existdb", "inspect.xq"),
|
|
24
|
+
path.join(runtimesDir, "existdb", "kwic.xq"),
|
|
25
|
+
path.join(runtimesDir, "existdb", "mail.xq"),
|
|
26
|
+
path.join(runtimesDir, "existdb", "ngram.xq"),
|
|
27
|
+
path.join(runtimesDir, "existdb", "process.xq"),
|
|
28
|
+
path.join(runtimesDir, "existdb", "range.xq"),
|
|
29
|
+
path.join(runtimesDir, "existdb", "repo.xq"),
|
|
30
|
+
path.join(runtimesDir, "existdb", "request.xq"),
|
|
31
|
+
path.join(runtimesDir, "existdb", "response.xq"),
|
|
32
|
+
path.join(runtimesDir, "existdb", "scheduler.xq"),
|
|
33
|
+
path.join(runtimesDir, "existdb", "session.xq"),
|
|
34
|
+
path.join(runtimesDir, "existdb", "sm.xq"),
|
|
35
|
+
path.join(runtimesDir, "existdb", "sort.xq"),
|
|
36
|
+
path.join(runtimesDir, "existdb", "system.xq"),
|
|
37
|
+
path.join(runtimesDir, "existdb", "transform.xq"),
|
|
38
|
+
path.join(runtimesDir, "existdb", "util.xq"),
|
|
39
|
+
path.join(runtimesDir, "existdb", "validation.xq"),
|
|
40
|
+
path.join(runtimesDir, "existdb", "xmldb.xq"),
|
|
41
|
+
path.join(runtimesDir, "existdb", "xmldiff.xq"),
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const runtimeAnalysisCache = new Map<string, FileAnalysis>();
|
|
46
|
+
|
|
47
|
+
export function getRuntimeAnalyses(runtimes: string[]): FileAnalysis[] {
|
|
48
|
+
const results: FileAnalysis[] = [];
|
|
49
|
+
for (const runtime of runtimes) {
|
|
50
|
+
const filePaths = RUNTIME_FILES[runtime];
|
|
51
|
+
if (!filePaths) continue;
|
|
52
|
+
for (const filePath of filePaths) {
|
|
53
|
+
const cacheKey = filePath;
|
|
54
|
+
const cached = runtimeAnalysisCache.get(cacheKey);
|
|
55
|
+
if (cached) {
|
|
56
|
+
results.push(cached);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const text = fs.readFileSync(filePath, "utf-8");
|
|
61
|
+
const analysis = analyze(text, `builtin:${runtime}`);
|
|
62
|
+
runtimeAnalysisCache.set(cacheKey, analysis);
|
|
63
|
+
results.push(analysis);
|
|
64
|
+
} catch {
|
|
65
|
+
// ignore missing or unreadable runtime files
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return results;
|
|
70
|
+
}
|