From 38ac2629f94f3ece41aaa8b9f70b9b2093d29a12 Mon Sep 17 00:00:00 2001 From: Jessica Wright <49636617+AlexicaWright@users.noreply.github.com> Date: Mon, 27 May 2024 11:11:01 +0200 Subject: [PATCH 01/20] bump dev to 5.21 (#205) --- antora.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/antora.yml b/antora.yml index e070e4e..2451ef0 100644 --- a/antora.yml +++ b/antora.yml @@ -6,10 +6,10 @@ nav: - modules/ROOT/content-nav.adoc asciidoc: attributes: - neo4j-version: '5.20' - neo4j-version-exact: '5.20.0' - neo4j-buildnumber: '5.20' - java-driver-version: '5.20.0' + neo4j-version: '5.21' + neo4j-version-exact: '5.21.0' + neo4j-buildnumber: '5.21' + java-driver-version: '5.21.0' neo4j-documentation-branch: 'dev' page-origin-private: false neo4j-javadocs-base-uri: "https://neo4j.com/docs/java-reference/5/javadocs" From 175f8f4814bf98378cb37a6ef1fdd91919f442f1 Mon Sep 17 00:00:00 2001 From: Lidia Zuin <102308961+lidiazuin@users.noreply.github.com> Date: Mon, 10 Jun 2024 12:49:52 +0200 Subject: [PATCH 02/20] Replacing underscores with hyphens for crawlability (#206) --- modules/ROOT/content-nav.adoc | 6 +++--- modules/ROOT/images/README.md | 16 ++++++++-------- .../{jconsole_beans.png => jconsole-beans.png} | Bin ...{jconsole_beans1.png => jconsole-beans1.png} | Bin ...console_connect.png => jconsole-connect.png} | Bin ...nsole_connect1.png => jconsole-connect1.png} | Bin ...mple.svg => traversal-framework-example.svg} | 0 ...ph.png => traversal-order-example-graph.png} | Bin modules/ROOT/pages/jmx-metrics.adoc | 4 ++-- ...c => bidirectional-traversal-framework.adoc} | 2 +- .../ROOT/pages/traversal-framework/index.adoc | 8 ++++---- ...le.adoc => traversal-framework-example.adoc} | 4 ++-- ...i.adoc => traversal-framework-java-api.adoc} | 2 +- 13 files changed, 21 insertions(+), 21 deletions(-) rename modules/ROOT/images/{jconsole_beans.png => jconsole-beans.png} (100%) rename modules/ROOT/images/{jconsole_beans1.png => jconsole-beans1.png} (100%) rename modules/ROOT/images/{jconsole_connect.png => jconsole-connect.png} (100%) rename modules/ROOT/images/{jconsole_connect1.png => jconsole-connect1.png} (100%) rename modules/ROOT/images/{traversal_framework_example.svg => traversal-framework-example.svg} (100%) rename modules/ROOT/images/{traversal_order_example_graph.png => traversal-order-example-graph.png} (100%) rename modules/ROOT/pages/traversal-framework/{bidirectional_traversal_framework.adoc => bidirectional-traversal-framework.adoc} (99%) rename modules/ROOT/pages/traversal-framework/{traversal_framework_example.adoc => traversal-framework-example.adoc} (97%) rename modules/ROOT/pages/traversal-framework/{traversal_framework_java_api.adoc => traversal-framework-java-api.adoc} (99%) diff --git a/modules/ROOT/content-nav.adoc b/modules/ROOT/content-nav.adoc index c87629d..16c8b51 100644 --- a/modules/ROOT/content-nav.adoc +++ b/modules/ROOT/content-nav.adoc @@ -30,9 +30,9 @@ ** xref:java-embedded/query-parameters.adoc[] * xref:traversal-framework/index.adoc[] -** xref:traversal-framework/traversal_framework_java_api.adoc[] -** xref:traversal-framework/bidirectional_traversal_framework.adoc[] -** xref:traversal-framework/traversal_framework_example.adoc[] +** xref:traversal-framework/traversal-framework-java-api.adoc[] +** xref:traversal-framework/bidirectional-traversal-framework.adoc[] +** xref:traversal-framework/traversal-framework-example.adoc[] * xref:transaction-management.adoc[] diff --git a/modules/ROOT/images/README.md b/modules/ROOT/images/README.md index 3026dd5..14cffc8 100644 --- a/modules/ROOT/images/README.md +++ b/modules/ROOT/images/README.md @@ -25,24 +25,24 @@ Images. ![](hello-world.png) -`jconsole_beans.png` +`jconsole-beans.png` -![](jconsole_beans.png) +![](jconsole-beans.png) -`jconsole_beans1.png` +`jconsole-beans1.png` -![](jconsole_beans.png) +![](jconsole-beans.png) -`jconsole_connect.png` +`jconsole-connect.png` -![](jconsole_beans.png) +![](jconsole-beans.png) -`jconsole_connect1.png` +`jconsole-connect1.png` -![](jconsole_connect1.png) +![](jconsole-connect1.png) `play.png` diff --git a/modules/ROOT/images/jconsole_beans.png b/modules/ROOT/images/jconsole-beans.png similarity index 100% rename from modules/ROOT/images/jconsole_beans.png rename to modules/ROOT/images/jconsole-beans.png diff --git a/modules/ROOT/images/jconsole_beans1.png b/modules/ROOT/images/jconsole-beans1.png similarity index 100% rename from modules/ROOT/images/jconsole_beans1.png rename to modules/ROOT/images/jconsole-beans1.png diff --git a/modules/ROOT/images/jconsole_connect.png b/modules/ROOT/images/jconsole-connect.png similarity index 100% rename from modules/ROOT/images/jconsole_connect.png rename to modules/ROOT/images/jconsole-connect.png diff --git a/modules/ROOT/images/jconsole_connect1.png b/modules/ROOT/images/jconsole-connect1.png similarity index 100% rename from modules/ROOT/images/jconsole_connect1.png rename to modules/ROOT/images/jconsole-connect1.png diff --git a/modules/ROOT/images/traversal_framework_example.svg b/modules/ROOT/images/traversal-framework-example.svg similarity index 100% rename from modules/ROOT/images/traversal_framework_example.svg rename to modules/ROOT/images/traversal-framework-example.svg diff --git a/modules/ROOT/images/traversal_order_example_graph.png b/modules/ROOT/images/traversal-order-example-graph.png similarity index 100% rename from modules/ROOT/images/traversal_order_example_graph.png rename to modules/ROOT/images/traversal-order-example-graph.png diff --git a/modules/ROOT/pages/jmx-metrics.adoc b/modules/ROOT/pages/jmx-metrics.adoc index e9b2c07..fd877d8 100644 --- a/modules/ROOT/pages/jmx-metrics.adoc +++ b/modules/ROOT/pages/jmx-metrics.adoc @@ -172,7 +172,7 @@ $JAVA_HOME/bin/jconsole Connect to the process running your Neo4j database instance: .Connecting JConsole to the Neo4j Java process -image::jconsole_connect1.png[alt="Connecting with JConsole", width=300] +image::jconsole-connect1.png[alt="Connecting with JConsole", width=300] [NOTE] ==== @@ -187,5 +187,5 @@ Under that, you have access to all the monitoring information exposed by Neo4j. For opening JMX to remote monitoring access, please see <> and link:https://docs.oracle.com/en/java/javase/11/management/monitoring-and-management-using-jmx-technology.html#GUID-805517EC-2D33-4D61-81D8-4D0FA770D1B8[the JMX documention^]. .Neo4j MBeans view -image::jconsole_beans1.png[alt="Neo4j MBeans view", width=600] +image::jconsole-beans1.png[alt="Neo4j MBeans view", width=600] diff --git a/modules/ROOT/pages/traversal-framework/bidirectional_traversal_framework.adoc b/modules/ROOT/pages/traversal-framework/bidirectional-traversal-framework.adoc similarity index 99% rename from modules/ROOT/pages/traversal-framework/bidirectional_traversal_framework.adoc rename to modules/ROOT/pages/traversal-framework/bidirectional-traversal-framework.adoc index e656923..ac6df24 100644 --- a/modules/ROOT/pages/traversal-framework/bidirectional_traversal_framework.adoc +++ b/modules/ROOT/pages/traversal-framework/bidirectional-traversal-framework.adoc @@ -22,7 +22,7 @@ In the accepted path `(1)-[:A]->(2)-[:A]->(3)-[:B]->(4)-[:B]->(5)`, the traverse ==== The `Uniqueness` is shared between both traversals, which means that there will be no results if the `Uniqueness` is set to `Uniqueness.NODE_GLOBAL` (which is the default) as both traversals need to reach the same node to cause a collision. Therefore, when using `BidirectionalTraversalDescription`, always set the `Uniqueness` manually. -For more information on the available options, see xref:traversal-framework/traversal_framework_java_api.adoc#traversal-java-api-uniqueness[`Uniqueness` options]. +For more information on the available options, see xref:traversal-framework/traversal-framework-java-api.adoc#traversal-java-api-uniqueness[`Uniqueness` options]. ==== == Defining the bidirectional traverser diff --git a/modules/ROOT/pages/traversal-framework/index.adoc b/modules/ROOT/pages/traversal-framework/index.adoc index 7e00dc1..50e6810 100644 --- a/modules/ROOT/pages/traversal-framework/index.adoc +++ b/modules/ROOT/pages/traversal-framework/index.adoc @@ -29,7 +29,7 @@ image::graphdb-traversal-description.svg[role="middle"] The Traversal Framework can be used xref:java-embedded/traversal.adoc[embedded in Java applications]. It can also be used when extending Neo4j with a xref:/extending-neo4j/procedures.adoc[User-defined Procedure]. -For an example, see xref:traversal-framework/traversal_framework_example.adoc#traversal-in-a-procedure-example[User-defined procedure with a Traversal Framework]. +For an example, see xref:traversal-framework/traversal-framework-example.adoc#traversal-in-a-procedure-example[User-defined procedure with a Traversal Framework]. [[traversal-vs-cypher]] == Traversal Framework vs Cypher @@ -41,11 +41,11 @@ Some of the advantages of using the Traversal Framework over Cypher include: * The Traversal Framework allows the use of any desired Java library to help in the evaluation of the traversal. * It allows customized pruning during the traversal of a path, which could potentially improve the performance of a traversal. -See xref:/traversal-framework/traversal_framework_java_api.adoc#traversal-java-api-evaluator[Evaluator] for more information. +See xref:/traversal-framework/traversal-framework-java-api.adoc#traversal-java-api-evaluator[Evaluator] for more information. * With Cypher, it is not possible to specify the order in which paths are expanded (e.g. depth-first). -However, with the Traversal Framework, it is possible to specify the xref:/traversal-framework/traversal_framework_java_api.adoc#traversal-java-api-branchselector[order of paths traversed]. +However, with the Traversal Framework, it is possible to specify the xref:/traversal-framework/traversal-framework-java-api.adoc#traversal-java-api-branchselector[order of paths traversed]. * With Cypher, relationships are only traversed when `RELATIONSHIP_GLOBAL` uniqueness is specified. -By using the Traversal Framework, it is possible to specify the xref:/traversal-framework/traversal_framework_java_api.adoc#traversal-java-api-uniqueness[uniqueness constraints on the path traversed]. +By using the Traversal Framework, it is possible to specify the xref:/traversal-framework/traversal-framework-java-api.adoc#traversal-java-api-uniqueness[uniqueness constraints on the path traversed]. [WARNING] ==== diff --git a/modules/ROOT/pages/traversal-framework/traversal_framework_example.adoc b/modules/ROOT/pages/traversal-framework/traversal-framework-example.adoc similarity index 97% rename from modules/ROOT/pages/traversal-framework/traversal_framework_example.adoc rename to modules/ROOT/pages/traversal-framework/traversal-framework-example.adoc index 2d452af..d5b1355 100644 --- a/modules/ROOT/pages/traversal-framework/traversal_framework_example.adoc +++ b/modules/ROOT/pages/traversal-framework/traversal-framework-example.adoc @@ -8,7 +8,7 @@ The following are some examples of how you can use the Traversal Framework. The source code for the examples can be found in link:https://github.com/neo4j/neo4j-documentation/blob/dev/embedded-examples/src/main/java/org/neo4j/examples/TraversalExample.java[`TraversalExample.java`^]. -image::traversal_framework_example.svg[role="middle"] +image::traversal-framework-example.svg[role="middle"] This graph illustrates a small group of friends with the definition of `RelationshipType`: @@ -119,7 +119,7 @@ This gives the following output: (0)-[KNOWS,0]->(2)<-[KNOWS,2]-(3)<-[KNOWS,3]-(4)<-[KNOWS,4]-(1) ---- -For other useful evaluators, see xref:traversal-framework/traversal_framework_java_api.adoc#traversal-java-api-evaluator[Using Evaluators]. +For other useful evaluators, see xref:traversal-framework/traversal-framework-java-api.adoc#traversal-java-api-evaluator[Using Evaluators]. The `Traverser` also has a `nodes()` method, which returns an `Iterable` of all the nodes in the paths: diff --git a/modules/ROOT/pages/traversal-framework/traversal_framework_java_api.adoc b/modules/ROOT/pages/traversal-framework/traversal-framework-java-api.adoc similarity index 99% rename from modules/ROOT/pages/traversal-framework/traversal_framework_java_api.adoc rename to modules/ROOT/pages/traversal-framework/traversal-framework-java-api.adoc index a60c2f1..45d51b9 100644 --- a/modules/ROOT/pages/traversal-framework/traversal_framework_java_api.adoc +++ b/modules/ROOT/pages/traversal-framework/traversal-framework-java-api.adoc @@ -230,7 +230,7 @@ Keep in mind that breadth-first traversals have a higher memory overhead than de The following example shows the result of `BranchOrderingPolicy` without any extra filter: -image::traversal_order_example_graph.png[align="center", role="middle", width=200] +image::traversal-order-example-graph.png[align="center", role="middle", width=200] [cols="1,1"] |=== From 2fb4d8d99eef349b700c3dc1502bc0a195c1eb31 Mon Sep 17 00:00:00 2001 From: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> Date: Fri, 28 Jun 2024 12:43:21 +0200 Subject: [PATCH 03/20] Bump Neo4j version to 5.22 and driver v to 5.23 (#208) --- antora.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/antora.yml b/antora.yml index 2451ef0..b17e379 100644 --- a/antora.yml +++ b/antora.yml @@ -6,10 +6,10 @@ nav: - modules/ROOT/content-nav.adoc asciidoc: attributes: - neo4j-version: '5.21' - neo4j-version-exact: '5.21.0' - neo4j-buildnumber: '5.21' - java-driver-version: '5.21.0' + neo4j-version: '5.22' + neo4j-version-exact: '5.22.0' + neo4j-buildnumber: '5.22' + java-driver-version: '5.23.0' neo4j-documentation-branch: 'dev' page-origin-private: false neo4j-javadocs-base-uri: "https://neo4j.com/docs/java-reference/5/javadocs" From be4952bd16ebdd6d37462e78d9f7a7165892b6e9 Mon Sep 17 00:00:00 2001 From: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> Date: Tue, 23 Jul 2024 16:40:41 +0200 Subject: [PATCH 04/20] Update `dev` to 5.23 (#213) --- antora.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/antora.yml b/antora.yml index b17e379..eb34407 100644 --- a/antora.yml +++ b/antora.yml @@ -6,10 +6,10 @@ nav: - modules/ROOT/content-nav.adoc asciidoc: attributes: - neo4j-version: '5.22' - neo4j-version-exact: '5.22.0' - neo4j-buildnumber: '5.22' - java-driver-version: '5.23.0' + neo4j-version: '5.23' + neo4j-version-exact: '5.23.0' + neo4j-buildnumber: '5.23' + java-driver-version: '5.24.0' neo4j-documentation-branch: 'dev' page-origin-private: false neo4j-javadocs-base-uri: "https://neo4j.com/docs/java-reference/5/javadocs" From c8d6fb516594c310563ca78b3f90510c75600fd1 Mon Sep 17 00:00:00 2001 From: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> Date: Thu, 22 Aug 2024 17:00:07 +0200 Subject: [PATCH 05/20] Bump version number to 5.24 (#215) --- antora.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/antora.yml b/antora.yml index eb34407..501c0fe 100644 --- a/antora.yml +++ b/antora.yml @@ -6,9 +6,9 @@ nav: - modules/ROOT/content-nav.adoc asciidoc: attributes: - neo4j-version: '5.23' - neo4j-version-exact: '5.23.0' - neo4j-buildnumber: '5.23' + neo4j-version: '5.24' + neo4j-version-exact: '5.24.0' + neo4j-buildnumber: '5.24' java-driver-version: '5.24.0' neo4j-documentation-branch: 'dev' page-origin-private: false From 936bfd48aa74fab1bb72bcfdab0350c087e182ad Mon Sep 17 00:00:00 2001 From: Reneta Popova Date: Thu, 26 Sep 2024 13:44:13 +0100 Subject: [PATCH 06/20] Update preview version to 5.25 (#220) --- antora.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/antora.yml b/antora.yml index 501c0fe..f125dae 100644 --- a/antora.yml +++ b/antora.yml @@ -6,10 +6,10 @@ nav: - modules/ROOT/content-nav.adoc asciidoc: attributes: - neo4j-version: '5.24' - neo4j-version-exact: '5.24.0' - neo4j-buildnumber: '5.24' - java-driver-version: '5.24.0' + neo4j-version: '5.25' + neo4j-version-exact: '5.25.0' + neo4j-buildnumber: '5.25' + java-driver-version: '5.25.0' neo4j-documentation-branch: 'dev' page-origin-private: false neo4j-javadocs-base-uri: "https://neo4j.com/docs/java-reference/5/javadocs" From 0394a3cb69f53caea6cec087ff1043bc10ac11b5 Mon Sep 17 00:00:00 2001 From: Love Kristofer Leifland Date: Thu, 31 Oct 2024 11:13:36 +0100 Subject: [PATCH 07/20] Add documentation for user procedure memory resource tracking --- .../pages/extending-neo4j/procedures.adoc | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/modules/ROOT/pages/extending-neo4j/procedures.adoc b/modules/ROOT/pages/extending-neo4j/procedures.adoc index 8344cca..22b8a62 100644 --- a/modules/ROOT/pages/extending-neo4j/procedures.adoc +++ b/modules/ROOT/pages/extending-neo4j/procedures.adoc @@ -190,9 +190,86 @@ The classes that can be injected are: * `Transaction` //* `SecurityContext` //* `ProcedureTransaction` +//* `ProcedureMemory` Candidate for public API but not stable yet All of the above classes are considered safe and future-proof and do not compromise the security of the database. Several unsupported (restricted) classes can also be injected and can be changed with little or no notice. Procedures written to use these restricted APIs are not loaded by default, and you need to use the `dbms.security.procedures.unrestricted` to load unsafe procedures. Read more about this config setting in link:{neo4j-docs-base-uri}/operations-manual/{page-version}/security/securing-extensions[Operations Manual -> Securing extensions]. +[[memory-resource-tracking]] +== Memory Resource Tracking + +[NOTE] +==== +The memory resource tracking API for the procedure framework is available for preview. +Future versions of Neo4j might contain breaking changes to this API. +==== + +If your procedure or function allocates significant amounts of heap memory, you can register allocations to count towards the configured transaction limits, see link:{neo4j-docs-base-uri}/operations-manual/{page-version}/performance/memory-configuration/#memory-configuration-limit-transaction-memory[Operations Manual -> Limit transaction memory usage] for more information. +This allows you to avoid `OutOfMemory` errors that cause database restarts. +Memory allocations also show up in query profiles. + +To do this you need to inject `org.neo4j.procedure.memory.ProcedureMemory` as a field in your procedure/function class. +`ProcedureMemory` has various methods to allow you to register allocations. +For example (see javadocs for a full reference): + +* `ProcedureMemoryTracker newTracker()` creates a new memory resource tracker that is bound to the current transaction. +* `HeapEstimator heapEstimator()` estimates the heap size of classes and instances. +* `HeapTrackingCollectionFactory collections()` lets you create collections that have built-in memory tracking of their internal structure. + +It's usually difficult and time-consuming to implement memory resource tracking. +These are a few considerations and caveats that are worth keeping in mind: + +- Limit the scope of the memory management. + Focus only on parts that can grow significantly in memory and ignore minor underestimation. +- Beware of overestimation by registering allocations of the same instance multiple times. + You can add reference counting or other mechanisms to avoid overestimation if that is a concern. +- It's common not to know the size of an instance before it has been allocated, which may lead you to register allocations after they have already been made. + The memory tracker implementation tries to prevent this by always pre-registering a certain amount of memory in the internal memory pools. +- It's cumbersome in Java to know when an instance has been garbage-collected. + Typically, you register the release of memory at the point when it's possible for that memory to be garbage-collected. + To account for this, memory trackers may internally choose not to register the release of memory instantaneously. +- Testing memory resource tracking can be difficult. + One approach is to use a third-party library, like JAMM (Java Agent for Memory Measurements), and assert that the estimates are close enough for some given input. + + +.A basic example of memory resource tracking in user defined procedures. +[source, java] +---- +package org.example; + +import org.neo4j.procedure.Context; +import org.neo4j.procedure.Name; +import org.neo4j.procedure.Procedure; +import org.neo4j.procedure.memory.ProcedureMemory; + +import java.util.Arrays; +import java.util.stream.Stream; + +public class MyProcedures { + + @Context + public ProcedureMemory memory; + + record Output(Long value) {} + + @Procedure("org.example.memoryHungryRange") + public Stream memoryHungryRange(@Name("size") int size) { + final var tracker = memory.newTracker(); + + // Register the allocation of the long array below + tracker.allocateHeap(memory.heapEstimator().sizeOfLongArray(size)); + // The actual allocation + final var result = new long[size]; + + for (int i = 0; i < size; i++) result[i] = i; + + return Arrays.stream(result) + .mapToObj(Output::new) + // Release all registered allocations when the stream is closed + .onClose(tracker::close); + } +} + +---- From 7c2a7bbf6a61936ea13f24415381824a1c9ebc68 Mon Sep 17 00:00:00 2001 From: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> Date: Thu, 31 Oct 2024 14:55:26 +0100 Subject: [PATCH 08/20] Bump the Neo4j v.n. to 5.25 and the Java driver to 5.26.1 (#227) --- antora.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/antora.yml b/antora.yml index f125dae..800b91d 100644 --- a/antora.yml +++ b/antora.yml @@ -6,10 +6,10 @@ nav: - modules/ROOT/content-nav.adoc asciidoc: attributes: - neo4j-version: '5.25' - neo4j-version-exact: '5.25.0' - neo4j-buildnumber: '5.25' - java-driver-version: '5.25.0' + neo4j-version: '5.26' + neo4j-version-exact: '5.26.0' + neo4j-buildnumber: '5.26' + java-driver-version: '5.26.1' neo4j-documentation-branch: 'dev' page-origin-private: false neo4j-javadocs-base-uri: "https://neo4j.com/docs/java-reference/5/javadocs" From 4c1c2043ab02d5a8a644c09e99c754a359e027bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 19:22:52 +0000 Subject: [PATCH 09/20] Bump express in the dev-dependencies group across 1 directory (#224) Bumps the dev-dependencies group with 1 update in the / directory: [express](https://github.com/expressjs/express). Updates `express` from 4.19.1 to 4.21.1 - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/4.21.1/History.md) - [Commits](https://github.com/expressjs/express/compare/4.19.1...4.21.1) --- updated-dependencies: - dependency-name: express dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 217 +++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 120 insertions(+), 99 deletions(-) diff --git a/package-lock.json b/package-lock.json index 096a361..1a1df6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@neo4j-documentation/remote-include": "^1.0.0" }, "devDependencies": { - "express": "^4.19.1", + "express": "^4.21.1", "nodemon": "^3.1.0" } }, @@ -469,9 +469,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -482,7 +482,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -751,9 +751,9 @@ } }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "engines": { "node": ">= 0.6" @@ -886,9 +886,9 @@ "dev": true }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "engines": { "node": ">= 0.8" @@ -953,37 +953,37 @@ } }, "node_modules/express": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.1.tgz", - "integrity": "sha512-K4w1/Bp7y8iSiVObmCrtq8Cs79XjJc/RU2YYkZQ7wpUu5ZyZ7MtPHkqoMz4pf+mgXfNvo2qft8D9OnrH2ABk9w==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -1037,13 +1037,13 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -1700,10 +1700,13 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/methods": { "version": "1.1.2", @@ -1786,7 +1789,7 @@ "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/multi-progress": { @@ -1898,10 +1901,13 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2022,9 +2028,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "node_modules/pend": { @@ -2205,12 +2211,12 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -2400,9 +2406,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -2423,6 +2429,15 @@ "node": ">= 0.8.0" } }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2430,15 +2445,15 @@ "dev": true }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -3415,9 +3430,9 @@ "dev": true }, "body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "requires": { "bytes": "3.1.2", @@ -3428,7 +3443,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -3627,9 +3642,9 @@ } }, "cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true }, "cookie-signature": { @@ -3725,9 +3740,9 @@ "dev": true }, "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true }, "end-of-stream": { @@ -3774,37 +3789,37 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, "express": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.1.tgz", - "integrity": "sha512-K4w1/Bp7y8iSiVObmCrtq8Cs79XjJc/RU2YYkZQ7wpUu5ZyZ7MtPHkqoMz4pf+mgXfNvo2qft8D9OnrH2ABk9w==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -3849,13 +3864,13 @@ } }, "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -4350,9 +4365,9 @@ "dev": true }, "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true }, "methods": { @@ -4409,7 +4424,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "multi-progress": { @@ -4488,9 +4503,9 @@ } }, "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true }, "object-keys": { @@ -4590,9 +4605,9 @@ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "pend": { @@ -4747,12 +4762,12 @@ } }, "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "requires": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" } }, "queue": { @@ -4883,9 +4898,9 @@ } }, "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "requires": { "debug": "2.6.9", @@ -4903,6 +4918,12 @@ "statuses": "2.0.1" }, "dependencies": { + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -4912,15 +4933,15 @@ } }, "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "requires": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" } }, "set-function-length": { diff --git a/package.json b/package.json index 1775cb8..8572ac6 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@neo4j-documentation/remote-include": "^1.0.0" }, "devDependencies": { - "express": "^4.19.1", + "express": "^4.21.1", "nodemon": "^3.1.0" } } From b2b815670e1e90587da59cc2c6ca0a9c4b970b47 Mon Sep 17 00:00:00 2001 From: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> Date: Tue, 5 Nov 2024 15:30:34 +0100 Subject: [PATCH 10/20] Fix the code example (#228) --- .../traversal-framework/traversal-framework-java-api.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/ROOT/pages/traversal-framework/traversal-framework-java-api.adoc b/modules/ROOT/pages/traversal-framework/traversal-framework-java-api.adoc index 45d51b9..8007edc 100644 --- a/modules/ROOT/pages/traversal-framework/traversal-framework-java-api.adoc +++ b/modules/ROOT/pages/traversal-framework/traversal-framework-java-api.adoc @@ -357,20 +357,20 @@ class MaxWeightPathExpander implements PathExpander } @Override - public Iterable expand( Path path, BranchState branchState ) + public ResourceIterable expand( Path path, BranchState branchState ) { if (path.lastRelationship() != null) { branchState.setState( branchState.getState() + (double) path.lastRelationship().getProperty( "weight" ) ); } - Iterable relationships = path.endNode().getRelationships( Direction.OUTGOING ); + ResourceIterable relationships = path.endNode().getRelationships( Direction.OUTGOING ); ArrayList filtered = new ArrayList<>(); for ( Relationship relationship : relationships ) { if ( branchState.getState() + (double) relationship.getProperty( "weight" ) <= maxWeight ) { filtered.add(relationship); } } - return filtered; + return Iterables.asResourceIterable(filtered); } @Override From 3ff47319e4ddb91312493d53a3e3cfed43bb575f Mon Sep 17 00:00:00 2001 From: Reneta Popova Date: Wed, 6 Nov 2024 11:01:42 +0000 Subject: [PATCH 11/20] Update setup.adoc (#222) (#230) gradle "compile" deprecated in version 7.x - replaced by "implementation." Correcting. Co-authored-by: Q | Andrew Righter <153233436+q-at-cyberdelia@users.noreply.github.com> --- modules/ROOT/pages/java-embedded/setup.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ROOT/pages/java-embedded/setup.adoc b/modules/ROOT/pages/java-embedded/setup.adoc index 81a955e..6c586fa 100644 --- a/modules/ROOT/pages/java-embedded/setup.adoc +++ b/modules/ROOT/pages/java-embedded/setup.adoc @@ -102,7 +102,7 @@ repositories { mavenCentral() } dependencies { - compile "org.neo4j:neo4j:$\{neo4jVersion}" + implementation "org.neo4j:neo4j:$\{neo4jVersion}" } ---- @@ -327,4 +327,4 @@ Note that the listed dependencies do not contain the implementation, but pull it For information regarding licensing, see the link:https://neo4j.com/licensing[Licensing Guide^]. -Javadocs can be downloaded in JAR files from Maven Central or read in link:{neo4j-javadocs-base-uri}/[Neo4j Javadocs^]. \ No newline at end of file +Javadocs can be downloaded in JAR files from Maven Central or read in link:{neo4j-javadocs-base-uri}/[Neo4j Javadocs^]. From 9b43a1083ca520337a322d38a57616bc55c27853 Mon Sep 17 00:00:00 2001 From: Jack Waudby Date: Mon, 11 Nov 2024 10:51:45 +0000 Subject: [PATCH 12/20] Introduce DatabaseSeedProvider and deprecated SeedProvider --- .../pages/extending-neo4j/project-setup.adoc | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/modules/ROOT/pages/extending-neo4j/project-setup.adoc b/modules/ROOT/pages/extending-neo4j/project-setup.adoc index 919991b..930dac5 100644 --- a/modules/ROOT/pages/extending-neo4j/project-setup.adoc +++ b/modules/ROOT/pages/extending-neo4j/project-setup.adoc @@ -156,6 +156,59 @@ Include this dependency to build against the Neo4j-provided API: === Implement Java class +==== `DatabaseSeedProvider` label:new[Introduced in 5.26] + +The `DatabaseSeedProvider` was introduced in 5.26 in favour of `SeedProvider` which is now deprecated. + +[source, java] +---- +import com.neo4j.dbms.seeding.DatabaseSeedProvider; + +public class CustomDatabaseSeedProvider implements DatabaseSeedProvider { + + @Override + public boolean matches(String uri) { + // Return true if uri is supported by this + // provider. + } + + @Override + public InputStream stream( + String uri, + Map options) throws IOException { + // This method should obtain an input stream in an + // implementation specific way. + } + + @Override + public void inject(Dependencies dependencies) { + // This method should provide implementation + // specific dependencies to the provider. + } + + public static class CustomDependencies implements Dependencies { + @Override + public T resolveDependency(Class type) { + // This method should resolve dependencies + // required by the provider. + } + } +} +---- + +To implement the custom database seed provider, you must implement three methods on the top-level `DatabaseSeedProvider` interface. +One method to match the URIs it can manage, one to stream backups or dumps from the given URI, and one to inject dependencies in the provider. +Additionally you must implement one method on the nested `Dependencies` interface, to resolve any dependencies required by your seed provider implementation. + +Typically, the match method uses the URI scheme (the part specified before the first colon) to determine whether it can support the given URI or not. +For example, `file`, `http`, `https` etc. + +The stream method should implement a scheme-specific way to obtain an input stream for the backup or dump. + +Implementation specific seed configuration can be passed through from options specified in the `CREATE DATABASE` command using `seedConfig`. + +==== `SeedProvider` label:deprecated[Deprecated in 5.26] + [source, java] ---- import com.neo4j.dbms.seeding.ParsedSeedProviderConfig; From bd78e3278f612ead3eabb4988842bd500c5dc6be Mon Sep 17 00:00:00 2001 From: Jack Waudby <33488812+jackwaudby@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:59:33 +0000 Subject: [PATCH 13/20] Update modules/ROOT/pages/extending-neo4j/project-setup.adoc Co-authored-by: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> --- modules/ROOT/pages/extending-neo4j/project-setup.adoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/extending-neo4j/project-setup.adoc b/modules/ROOT/pages/extending-neo4j/project-setup.adoc index 930dac5..f7b5f38 100644 --- a/modules/ROOT/pages/extending-neo4j/project-setup.adoc +++ b/modules/ROOT/pages/extending-neo4j/project-setup.adoc @@ -156,7 +156,8 @@ Include this dependency to build against the Neo4j-provided API: === Implement Java class -==== `DatabaseSeedProvider` label:new[Introduced in 5.26] +[role=label--new-5.26] +==== `DatabaseSeedProvider` The `DatabaseSeedProvider` was introduced in 5.26 in favour of `SeedProvider` which is now deprecated. From ba315641b1b1ad27a2651a0c3a4862670697a743 Mon Sep 17 00:00:00 2001 From: Jack Waudby <33488812+jackwaudby@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:59:43 +0000 Subject: [PATCH 14/20] Update modules/ROOT/pages/extending-neo4j/project-setup.adoc Co-authored-by: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> --- modules/ROOT/pages/extending-neo4j/project-setup.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ROOT/pages/extending-neo4j/project-setup.adoc b/modules/ROOT/pages/extending-neo4j/project-setup.adoc index f7b5f38..584096f 100644 --- a/modules/ROOT/pages/extending-neo4j/project-setup.adoc +++ b/modules/ROOT/pages/extending-neo4j/project-setup.adoc @@ -199,7 +199,7 @@ public class CustomDatabaseSeedProvider implements DatabaseSeedProvider { To implement the custom database seed provider, you must implement three methods on the top-level `DatabaseSeedProvider` interface. One method to match the URIs it can manage, one to stream backups or dumps from the given URI, and one to inject dependencies in the provider. -Additionally you must implement one method on the nested `Dependencies` interface, to resolve any dependencies required by your seed provider implementation. +Additionally, you must implement a method on the nested `Dependencies` interface to resolve any dependencies required by your seed provider implementation. Typically, the match method uses the URI scheme (the part specified before the first colon) to determine whether it can support the given URI or not. For example, `file`, `http`, `https` etc. From e989cd2e4aab7d00a4c3b2f552840e69af28a871 Mon Sep 17 00:00:00 2001 From: Jack Waudby <33488812+jackwaudby@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:59:50 +0000 Subject: [PATCH 15/20] Update modules/ROOT/pages/extending-neo4j/project-setup.adoc Co-authored-by: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> --- modules/ROOT/pages/extending-neo4j/project-setup.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ROOT/pages/extending-neo4j/project-setup.adoc b/modules/ROOT/pages/extending-neo4j/project-setup.adoc index 584096f..fb9b294 100644 --- a/modules/ROOT/pages/extending-neo4j/project-setup.adoc +++ b/modules/ROOT/pages/extending-neo4j/project-setup.adoc @@ -159,7 +159,7 @@ Include this dependency to build against the Neo4j-provided API: [role=label--new-5.26] ==== `DatabaseSeedProvider` -The `DatabaseSeedProvider` was introduced in 5.26 in favour of `SeedProvider` which is now deprecated. +In Neo4j 5.26, the `DatabaseSeedProvider` was introduced to replace the now-deprecated `SeedProvider`. [source, java] ---- From e0c55a430fe3e27b5b42794144ffcc381ab86f10 Mon Sep 17 00:00:00 2001 From: Jack Waudby <33488812+jackwaudby@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:00:12 +0000 Subject: [PATCH 16/20] Update modules/ROOT/pages/extending-neo4j/project-setup.adoc Co-authored-by: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> --- modules/ROOT/pages/extending-neo4j/project-setup.adoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/extending-neo4j/project-setup.adoc b/modules/ROOT/pages/extending-neo4j/project-setup.adoc index fb9b294..a2f7d8c 100644 --- a/modules/ROOT/pages/extending-neo4j/project-setup.adoc +++ b/modules/ROOT/pages/extending-neo4j/project-setup.adoc @@ -208,7 +208,8 @@ The stream method should implement a scheme-specific way to obtain an input stre Implementation specific seed configuration can be passed through from options specified in the `CREATE DATABASE` command using `seedConfig`. -==== `SeedProvider` label:deprecated[Deprecated in 5.26] +[role=label--deprecated-5.26] +==== `SeedProvider` [source, java] ---- From 1c1f7da5adef921ea8a5a005957949c7a36f79ae Mon Sep 17 00:00:00 2001 From: Jack Waudby <33488812+jackwaudby@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:00:51 +0000 Subject: [PATCH 17/20] Update modules/ROOT/pages/extending-neo4j/project-setup.adoc Co-authored-by: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> --- modules/ROOT/pages/extending-neo4j/project-setup.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ROOT/pages/extending-neo4j/project-setup.adoc b/modules/ROOT/pages/extending-neo4j/project-setup.adoc index a2f7d8c..016e82e 100644 --- a/modules/ROOT/pages/extending-neo4j/project-setup.adoc +++ b/modules/ROOT/pages/extending-neo4j/project-setup.adoc @@ -206,7 +206,7 @@ For example, `file`, `http`, `https` etc. The stream method should implement a scheme-specific way to obtain an input stream for the backup or dump. -Implementation specific seed configuration can be passed through from options specified in the `CREATE DATABASE` command using `seedConfig`. +Implementation-specific seed configuration can be passed through from options specified in the `CREATE DATABASE` command using `seedConfig`. [role=label--deprecated-5.26] ==== `SeedProvider` From c471558ba235968bde7bb65b6d3b9d579e074013 Mon Sep 17 00:00:00 2001 From: Jack Waudby <33488812+jackwaudby@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:00:58 +0000 Subject: [PATCH 18/20] Update modules/ROOT/pages/extending-neo4j/project-setup.adoc Co-authored-by: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> --- modules/ROOT/pages/extending-neo4j/project-setup.adoc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/extending-neo4j/project-setup.adoc b/modules/ROOT/pages/extending-neo4j/project-setup.adoc index 016e82e..2107647 100644 --- a/modules/ROOT/pages/extending-neo4j/project-setup.adoc +++ b/modules/ROOT/pages/extending-neo4j/project-setup.adoc @@ -198,7 +198,10 @@ public class CustomDatabaseSeedProvider implements DatabaseSeedProvider { ---- To implement the custom database seed provider, you must implement three methods on the top-level `DatabaseSeedProvider` interface. -One method to match the URIs it can manage, one to stream backups or dumps from the given URI, and one to inject dependencies in the provider. +* A method to match the URIs that the provider can manage. +* A method to stream backups or dumps from a specified URI. +* A method to inject dependencies in the provider. + Additionally, you must implement a method on the nested `Dependencies` interface to resolve any dependencies required by your seed provider implementation. Typically, the match method uses the URI scheme (the part specified before the first colon) to determine whether it can support the given URI or not. From 87a96913841bb95589f02c22d38e01e257a4d21d Mon Sep 17 00:00:00 2001 From: Jack Waudby <33488812+jackwaudby@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:01:03 +0000 Subject: [PATCH 19/20] Update modules/ROOT/pages/extending-neo4j/project-setup.adoc Co-authored-by: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> --- modules/ROOT/pages/extending-neo4j/project-setup.adoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/extending-neo4j/project-setup.adoc b/modules/ROOT/pages/extending-neo4j/project-setup.adoc index 2107647..87746ea 100644 --- a/modules/ROOT/pages/extending-neo4j/project-setup.adoc +++ b/modules/ROOT/pages/extending-neo4j/project-setup.adoc @@ -197,7 +197,8 @@ public class CustomDatabaseSeedProvider implements DatabaseSeedProvider { } ---- -To implement the custom database seed provider, you must implement three methods on the top-level `DatabaseSeedProvider` interface. +To implement the custom database seed provider, you must define three methods on the top-level `DatabaseSeedProvider` interface: + * A method to match the URIs that the provider can manage. * A method to stream backups or dumps from a specified URI. * A method to inject dependencies in the provider. From 72a66e7b882f423453bf0ef08d75377e55104bdf Mon Sep 17 00:00:00 2001 From: NataliaIvakina <82437520+NataliaIvakina@users.noreply.github.com> Date: Fri, 22 Nov 2024 14:40:02 +0100 Subject: [PATCH 20/20] Update driver version (#234) --- antora.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/antora.yml b/antora.yml index 800b91d..ea5cb2b 100644 --- a/antora.yml +++ b/antora.yml @@ -9,7 +9,7 @@ asciidoc: neo4j-version: '5.26' neo4j-version-exact: '5.26.0' neo4j-buildnumber: '5.26' - java-driver-version: '5.26.1' + java-driver-version: '5.26.3' neo4j-documentation-branch: 'dev' page-origin-private: false neo4j-javadocs-base-uri: "https://neo4j.com/docs/java-reference/5/javadocs"