This repository was archived by the owner on Jul 8, 2025. It is now read-only.
[pull] develop from eXist-db:develop#383
Open
pull[bot] wants to merge 1768 commits into
Open
Conversation
Three follow-ups to Juri's review comments:
- XHTML5Writer: add a class-level javadoc clarifying that the
class contributes only the HTML5 void-element + inline-element
sets and points readers at `XHTMLWriter.writeDoctype` (the new
home of the DOCTYPE emission logic that previously lived here).
Addresses Juri's "Where is the doctype written now?" and
"What is an XHTML5Writer anyway?" questions on
XHTML5Writer.java:126.
- IndentingXMLWriter: extract `parseSuppressionName` helper from
the inline suppress-indentation parsing block, dropping nesting
from five levels to one and addressing the
"Too many levels of indentation. I would invert if-conditions
together with returning early. Maybe extracting it into a method
would help as well." comment at line 194.
- XMLWriter: insert space after `if`/`else if` for the six
PR-introduced offenders in `writeChars`, addressing the
"formatting : `if (`" comment at line 737.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ecks A user-defined function declared as element() that returned the result of a persistent intersect (e.g. ($root/x, $root/y) intersect ($root/y, $root/z)) failed with err:XPTY0004 "expected type: element(); got: node()" even though every item in the result was in fact an element. NodeSet.intersection and NodeSet.except both return an AVLTreeNodeSet, which inherited AbstractNodeSet.getItemType()'s unconditional Type.NODE. FunctionCall's return-type check (FunctionCall.java:216) then called SequenceType.checkType(result.getItemType()) which compared Type.NODE against the declared Type.ELEMENT and rejected the result. The matching union path was unaffected because NodeSet.union returns a NewArrayNodeSet, which extends AbstractArrayNodeSet and tracks itemType per add(). This commit gives AVLTreeNodeSet the same per-add itemType tracking, mirroring AbstractArrayNodeSet.checkItemType: ANY_TYPE is refined to the first added item's type, identical adds are no-ops, and conflicting adds fall back to Type.NODE. getItemType() now reports the tracked type, exposing element() (or whatever common supertype the items share) to sequence-level type checks. The fix also corrects the analogous except() case, which had the same latent bug but had not been reported. Closes #4255 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… eXist webapp context Form bodies larger than 200,000 bytes posted to any servlet under /exist were rejected with HTTP 400 "Unable to parse form content" with no documented way to raise the limit. The historical workaround (setting the per-Request attribute "org.eclipse.jetty.server.Request.maxFormContentSize" in jetty.xml) was removed in Jetty 12; the only recognised path in modern Jetty is ServletContextHandler.setMaxFormContentSize, which was never wired into eXist's context XML and so silently defaulted to 200 KB. Add a <Set name="maxFormContentSize"> call to both the embedded (/exist) and standalone (/) WebAppContext XML files, sourcing the limit from a new jetty.http.maxFormContentSize property with a backward-compatible default of 200000. Operators can now raise the limit at startup with -Djetty.http.maxFormContentSize=<bytes>. The companion knob maxFormKeys (default 1000) is also exposed via jetty.http.maxFormKeys for parity with the upstream Jetty default parameter set; in earlier Jetty versions this was a separate limit that has tripped a handful of REST/RESTXQ-heavy deployments. A new test JettyMaxFormContentSizeTest parses each shipped context XML through Jetty's XmlConfiguration (the same path Jetty itself uses at startup) and verifies both the default value and that the override property is honoured. Closes #4087 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The 180s forkedProcessTimeoutInSeconds caps and the failsafe DeadlockIT/RemoveCollectionIT excludes were dragged into the serialization-compliance commit cb3fee3 by an old rebase from PR #6186, which has since been closed without merging. Develop does not carry these settings, so this PR has been tripping a fork timeout that develop is immune to: Surefire's default is no fork timeout, and the v6346 unit-test fork runs ~3.5 minutes wall-clock on CI runners against the 180s cap (1856 tests, several 80-100s storage tests). Revert the orphan pom.xml hunks back to develop's text. No serialization-test or production code is touched. The PR's other content is unchanged. Fixes the "Failed to execute goal ... maven-surefire-plugin ... There was a timeout in the fork" failure @line-o reported in the 2026-05-31 review of PR #6346. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
A FLWOR whose for clause filtered with a not(@attr) predicate, then traversed the preceding:: or following:: axis, returned wrong results when the source was a persistent (stored) document but worked correctly in-memory. The bug no longer reproduces on develop -- verified 2026-05-30 against HEAD b990cd6; downstream work on the persistent-axis evaluator or not()-predicate handling appears to have incidentally fixed it. Per @duncdrum's review prompt on the issue (favouring regression tests even when no fix commit is paired), this pins the reproducer so the in-mem/persistent asymmetry cannot return silently. The XQSuite is adapted verbatim from the report on the issue. Eight test functions cover the cross-product: - preceding:: + following:: - with-predicate + without-predicate - persistent (doc()) + in-memory (document{}) input All eight must return "true,true" -- both bar elements (outer + inner) have a preceding and a following <foo/>. With the original bug present, only the persistent + with-predicate variants returned the wrong value. Closes #3684 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Prior to this commit, XQSuite caught errors from %test:tearDown functions in test:call-func-with-annotation and emitted a <system-err> element, but the outer ($result, $tearDown)[1] selector then discarded that element. Consumers of the suite XML (CI, IDE Run-as-test panels, JUnit-shaped reporters) saw no trace of the tearDown failure -- the %test:setUp counterpart was already surfaced via the testsuite text content but the tearDown path was a silent dead end. The fix: 1. Compute the tearDown result before constructing the <testsuite>, so its <system-err/> can be folded in alongside the test results. 2. When tearDown threw, append a <system-err>tearDown error: ... </system-err> child to the <testsuite> and bump the errors count by one. The element name matches the JUnit convention so existing consumers handle it naturally. 3. On the setUp-failure path (which already short-circuits the test run), append the same "tearDown error: ..." text to the existing error message and count the tearDown error toward the errors attribute too. 4. Clean tearDowns continue to produce no marker -- the output is byte-identical to before the fix, so passing test files are unchanged. The fix is verified by three new JUnit cases in XQSuiteTearDownErrorTest: - cleanTearDownProducesNoMarker -- backwards-compatible - throwingTearDownIsSurfaced -- new visibility, errors=1 - throwingSetUpAndTearDownBothSurfaced -- both paths combined Each stores a small module to /db/test-6422, invokes test:suite(inspect:module-functions(...)) against it, serializes the result, and asserts on the XML. Without the xqsuite.xql change the latter two cases fail with the bug's signature (errors="0" and no mention of the tearDown error string); with the change they all pass. Reviewers: the chosen output shape (<system-err>tearDown error: ... </system-err>) is the most JUnit-idiomatic of the options I considered (others were a synthetic <testcase name="tearDown"> with an <error/> child, or a custom <tearDownError/> element). Happy to adjust if the project prefers a different shape -- the issue discussion left the wire format open. Closes #6422 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…nt-size [bugfix] Expose jetty.http.maxFormContentSize and maxFormKeys for the eXist webapp context
…ter-not [test] Pin preceding/following axis after not() filter for #3684
[feature] W3C XSLT/XQuery Serialization 3.1 compliance: XML/HTML/XHTML/JSON/text/adaptive
…turn [bugfix] Track item type in AVLTreeNodeSet for correct return-type checks
…value checks
Per F&O 3.1 section 2.4 (option parameter conventions) plus section 17.5.3:
* Wrong-typed option values now raise XPTY0004 (was: FOJS0005 for 'escape',
silently accepted for others).
* 'duplicates' values are checked against the permitted set {reject,
use-first, retain}; non-permitted values raise FOJS0005.
* 'validate' + 'duplicates: retain' is rejected as an incompatible
combination (FOJS0005).
* Unknown option keys on fn:json-to-xml raise FOJS0005.
* Empty-sequence option values trigger XPTY0004 (cardinality 0).
* 'fallback' arity is validated against the declared function signature.
Behavior under recognized, valid options is unchanged. Implementing the
'validate', 'escape', and 'fallback' semantics themselves is out of scope
and tracked in the parent triage report.
Targets ~11 fn-json-to-xml XQTS HEAD failures
(json-to-xml-error-018/019/020/021/022/023/024/025/026/040/041).
Refs F&O 3.1: https://www.w3.org/TR/xpath-functions-31/#options
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per F&O 3.1 section 2.4, option values undergo function-call-style coercion:
nodes are atomized to xs:untypedAtomic before the type check, which is
then cast to the declared type. Calling .atomize() on the item picks up
both element() and attribute() values that the previous strict-type
check was wrongly rejecting with XPTY0004.
Closes fn-parse-json-946 (XQTS HEAD) which uses
map { 'duplicates': <foo>reject</foo> }.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Commit e3a2da8 introduced a single PERMITTED_DUPLICATES set {reject, use-first, retain} that was applied to both fn:parse-json and fn:json-to-xml. That regressed fn:parse-json calls using "use-last" (the XQSuite test arr:parse-json-duplicates use-last case) with FOJS0005 "value not permitted". Per F&O 3.1 the permitted values differ: * §17.4.1 fn:parse-json: "reject", "use-first", "use-last" https://www.w3.org/TR/xpath-functions-31/#func-parse-json * §17.5.1 fn:json-to-xml: "reject", "use-first", "retain" https://www.w3.org/TR/xpath-functions-31/#func-json-to-xml Both share "reject" and "use-first"; parse-json adds "use-last" (preserve last value), json-to-xml adds "retain" (keep duplicates in the XML output, incompatible with validate=true). Splits PERMITTED_DUPLICATES into per-function sets selected by the existing isJsonToXml flag. fn:json-doc shares fn:parse-json's option semantics (§17.4.4) and so picks up the parse-json permitted set, which is correct. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the per-element-type validation required by F&O 3.1 §17.4.2 (XML Representation of JSON) and §17.5.4 (fn:xml-to-json): - Reject non-whitespace text node children of <map>/<array> elements (whitespace, comments and PIs are still ignored per spec). - Reject element children of leaf-type elements (<string>, <number>, <boolean>, <null>). - Reject no-namespace attributes other than 'key', 'escaped-key', 'escaped'; reject any attribute in the xpath-functions namespace (the schema's anyAttribute namespace="##other"). - Require 'escaped' and 'escaped-key' to hold a valid xs:boolean value. - Reject element names outside the six allowed local names at start-tag rather than only at end-tag. Per W3C bug 29917 / qt3tests xml-to-json-065, 'escaped' is tolerated on non-string elements (treated as a no-op); only the lexical value is enforced. Foreign-namespace attributes remain ignored, matching the schema rule. Closes the over-permissive-validation sub-cluster of fn-xml-to-json FOJS0006 failures identified in the 2026-05-10 triage report (predecessor PR #6342 closed the walk-from-doc-root sub-cluster). XQTS HEAD fn-xml-to-json: +10 newly passing, 0 regressions on xml-to-json-{033, 040, 042, 043, 044, 062, 063, 069, 081, 082}. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Addresses line-o's review comments on PR #6350 (lines 267, 288, 329). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Addresses reinhapa's review on PR #6350. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…sal path PR #6342 (merged after this branch was first proposed) rewrote fn:xml-to-json's element-input traversal from StAX to a DOM walk (walk-from-doc-root antipattern fix) so the function now operates on the input subtree directly. The structural-validation logic this PR added in commit 3000e1b was wired into the StAX path, which is no longer the primary entry for element inputs after #6342, so 10 XQTS xml-to-json cases that expect FOJS0006 began passing through to a successful JSON serialisation again after the rebase onto develop. Port the validation rules into the DOM path via three new helpers: - validateDomAttributes: rejects attributes in the xpath-functions namespace and no-namespace attributes outside the {key, escaped-key, escaped} allow-list; validates that escaped / escaped-key carry a valid xs:boolean lexical value - validateContainerChildren: rejects non-whitespace text children of map / array - validateNoElementChildren: rejects element children of leaf JSON elements (string, number, boolean, null) Wired into writeJsonElement (attributes), writeJsonMap / writeJsonArray (container children), and the four leaf writers. writeJsonBoolean's signature picks up XPathException to match. Tests touched by this commit (all assert FOJS0006, all now pass on develop): xml-to-json-text-child-of-array xml-to-json-text-child-of-map xml-to-json-element-child-of-{boolean,null,number,string} xml-to-json-attribute-in-json-namespace xml-to-json-disallowed-no-ns-attribute xml-to-json-invalid-escaped-{value,key-value} The StAX-path validation methods (validateStartElement, validateTextInContext, validateAttributes, isJsonElementName, isLeafElementName) and the dead nodeValueToJsonViaStream entry are now unreachable; leaving them for a follow-up [refactor] commit so this commit stays focused on the regression fix. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Bumps [commons-daemon:commons-daemon](https://github.com/apache/commons-daemon) from 1.5.1 to 1.6.0. - [Changelog](https://github.com/apache/commons-daemon/blob/rel/commons-daemon-1.6.0/RELEASE-NOTES.txt) - [Commits](apache/commons-daemon@commons-daemon-1.5.1...rel/commons-daemon-1.6.0) --- updated-dependencies: - dependency-name: commons-daemon:commons-daemon dependency-version: 1.6.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
[bugfix] Surface %test:tearDown errors in xqsuite output
Switch all 59 POMs to ${revision} with flatten-maven-plugin resolving
it in deployed artifacts. Replace activeByDefault on installer/stress/
benchmarks with explicit umbrella profiles: local-build (default),
release-build (installer + Central Portal publishing via
central-publishing-maven-plugin), perf-tests (stress + benchmarks).
Add release-preflight enforcer and GPG signing to release-build.
Migrate macOS notarization from deprecated altool to notarytool+staple;
fix CI activation guard on mac-dmg-on-mac.
close #3394
close #4519
see #6176
Replaces mvn release:prepare/perform with two GitHub Actions workflows: ci-release-prepare (workflow_dispatch) updates CITATION.cff, commits, and pushes an annotated eXist-X.Y.Z tag; ci-release (tag-triggered) runs parallel platform jobs for Maven Central deploy, signed+notarized macOS DMG, and Authenticode-signed Windows installer, converging on a GitHub Release. Updates exist-versioning-release.md to document the new procedure. Closes #5597 #4217
The general-purpose value sequences checked only direct reference equality
(item == values[i]) and did not recurse into items that are themselves
containers, unlike MapType.containsReference and ArrayType.containsReference
which both do `value == item || value.containsReference(item)`. Affected:
ValueSequence, ArrayListValueSequence, OrderedValueSequence,
PreorderedValueSequence, and SubSequence. (NodeSets hold only nodes and
RangeSequence only integers, so neither can nest a map/array; both are
unaffected.)
As a result, a value nested inside a map (or array) held by such a sequence
was invisible to the variable-cleanup guard: when a let/function scope pops,
XQueryContext.popLocalVariables -> VariableImpl.destroy ->
<sequence>.destroy -> <value>.destroy(context, contextSequence) skips closing
a value only if `contextSequence.containsReference(value)`. For a file-backed
binary returned nested in a map inside a sequence, that guard returned false,
so the binary's file channel was closed while still referenced through the
returned map. A later read then failed with "Underlying channel has been
closed", surfaced (e.g.) as "error while obtaining length of binary value"
from xmldb:store.
This is exactly the path the Roaster / existdb-openapi multipart upload
tripped: request:get-uploaded-file-data, carried as $request?body?file?data
(Roaster's form-data binary shape: map { name, data, size }), failed at
xmldb:store. Reproduced with the real Roaster body:parse and reduced to the
test cases below.
Fix: make each general-purpose sequence's containsReference recurse into
container items, mirroring MapType/ArrayType.
Tests:
- ContainsReferenceNestedTest (unit): directly asserts ValueSequence,
ArrayListValueSequence and SubSequence detect an item nested in a map
(fails without the fix). OrderedValueSequence/PreorderedValueSequence take
the identical one-line fix (their OrderSpec construction is not exercised
directly).
- binary-nested-in-map.xqm (XQSuite, file module): a file:read-binary value
returned nested in a map inside a sequence and escaping a function, then
read; fails with "Underlying channel has been closed" before the fix. The
inner one-iteration FLWOR is load-bearing -- it wraps the map in a
ValueSequence; a bare map { ... } goes through MapType.containsReference,
which already recurses, and would not exercise the bug.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…erface helper Per review feedback on PR #6507: replace the withMapNesting(...) lambda indirection with straightforward, inlined per-test setup. More verbose and slightly duplicated, but easier to follow at a glance. No change to coverage: each test still builds map { "data": $nested } in a fresh context, wraps it in the sequence type under test, and asserts the nested item is detected while a sibling item is not. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bumps [org.expath.packaging:pkg-java](https://github.com/expath/expath-pkg-java) from 2.0.1 to 2.1.1. - [Commits](expath/expath-pkg-java@pkg-2.0.1...pkg-2.1.1) --- updated-dependencies: - dependency-name: org.expath.packaging:pkg-java dependency-version: 2.1.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Per review feedback on PR #6507: the fixture setup (create the test directory and write the .env fixture) now lives in a %test:setUp function, symmetric with the existing %test:tearDown, instead of inline in the test body. helper:get-test-directory embeds a fresh uuid on every call, so the directory is computed once in a module variable ($bnm:directory) shared by setUp and the test, rather than recomputed per function (which would land the fixture and the read in different directories). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bumps the actions group with 1 update: [actions/cache](https://github.com/actions/cache). Updates `actions/cache` from 5 to 6 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](actions/cache@v5...v6) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions ... Signed-off-by: dependabot[bot] <support@github.com>
…ckaging-pkg-java-2.1.1 Bump org.expath.packaging:pkg-java from 2.0.1 to 2.1.1
…ons-6d1c06d137
XSD 1.1 validation and catalog fixes.
[refactor] Revise HttpClient creation and caching.
[bugfix] Update JnlpJarFiles
Bumps the lucene group with 6 updates: | Package | From | To | | --- | --- | --- | | org.apache.lucene:lucene-core | `10.4.0` | `10.5.0` | | org.apache.lucene:lucene-analysis-common | `10.4.0` | `10.5.0` | | org.apache.lucene:lucene-analysis-icu | `10.4.0` | `10.5.0` | | org.apache.lucene:lucene-facet | `10.4.0` | `10.5.0` | | org.apache.lucene:lucene-queries | `10.4.0` | `10.5.0` | | org.apache.lucene:lucene-queryparser | `10.4.0` | `10.5.0` | Updates `org.apache.lucene:lucene-core` from 10.4.0 to 10.5.0 Updates `org.apache.lucene:lucene-analysis-common` from 10.4.0 to 10.5.0 Updates `org.apache.lucene:lucene-analysis-icu` from 10.4.0 to 10.5.0 Updates `org.apache.lucene:lucene-facet` from 10.4.0 to 10.5.0 Updates `org.apache.lucene:lucene-queries` from 10.4.0 to 10.5.0 Updates `org.apache.lucene:lucene-queryparser` from 10.4.0 to 10.5.0 Updates `org.apache.lucene:lucene-analysis-common` from 10.4.0 to 10.5.0 Updates `org.apache.lucene:lucene-analysis-icu` from 10.4.0 to 10.5.0 Updates `org.apache.lucene:lucene-facet` from 10.4.0 to 10.5.0 Updates `org.apache.lucene:lucene-queries` from 10.4.0 to 10.5.0 Updates `org.apache.lucene:lucene-queryparser` from 10.4.0 to 10.5.0 --- updated-dependencies: - dependency-name: org.apache.lucene:lucene-core dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene - dependency-name: org.apache.lucene:lucene-analysis-common dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene - dependency-name: org.apache.lucene:lucene-analysis-icu dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene - dependency-name: org.apache.lucene:lucene-facet dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene - dependency-name: org.apache.lucene:lucene-queries dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene - dependency-name: org.apache.lucene:lucene-queryparser dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene - dependency-name: org.apache.lucene:lucene-analysis-common dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene - dependency-name: org.apache.lucene:lucene-analysis-icu dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene - dependency-name: org.apache.lucene:lucene-facet dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene - dependency-name: org.apache.lucene:lucene-queries dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene - dependency-name: org.apache.lucene:lucene-queryparser dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: lucene ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [org.wiremock:wiremock-standalone](https://github.com/wiremock/wiremock) from 3.9.1 to 3.13.2. - [Release notes](https://github.com/wiremock/wiremock/releases) - [Commits](wiremock/wiremock@3.9.1...3.13.2) --- updated-dependencies: - dependency-name: org.wiremock:wiremock-standalone dependency-version: 3.13.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
…wiremock-standalone-3.13.2 Bump org.wiremock:wiremock-standalone from 3.9.1 to 3.13.2
…6001 Bump the lucene group with 6 updates
[ignore] remove unused dependency plex from distribution
Signed-off-by: Patrick Reinhart <patrick@reini.net>
…tructor PMD/Codacy UnnecessaryConstructor: the explicit empty no-arg constructor is redundant -- the compiler generates the default constructor JMH needs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ThoADnh6VvDt5w8kz7d2d3
[feature] Adds new xmldb-api security services
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.1)
Can you help keep this open source service alive? 💖 Please sponsor : )