From cfa296babdee3e8bcdb3f6a4eb2250bedc6debc4 Mon Sep 17 00:00:00 2001 From: angrykoala Date: Tue, 8 Oct 2024 15:27:54 +0200 Subject: [PATCH 01/10] Remove connection wrapper from vector index --- .changeset/modern-pugs-film.md | 39 +++++ .../ConcreteEntityOperations.ts | 2 - .../src/schema/generation/vector-input.ts | 12 +- .../src/schema/resolvers/query/vector.ts | 10 +- .../factory/Operations/VectorFactory.ts | 19 +-- .../directives/vector/vector-auth.int.test.ts | 143 ++++++++---------- .../vector/vector-filtering.int.test.ts | 63 ++++---- .../vector/vector-pagination.int.test.ts | 36 ++--- .../vector/vector-query.int.test.ts | 98 ++++++------ .../vector/vector-sorting.int.test.ts | 109 ++++++------- packages/graphql/tests/schema/vector.test.ts | 8 +- .../tests/tck/directives/vector/auth.test.ts | 56 +++---- .../tests/tck/directives/vector/match.test.ts | 36 ++--- .../tck/directives/vector/phrase.test.ts | 12 +- .../tests/tck/directives/vector/score.test.ts | 30 ++-- 15 files changed, 307 insertions(+), 366 deletions(-) create mode 100644 .changeset/modern-pugs-film.md diff --git a/.changeset/modern-pugs-film.md b/.changeset/modern-pugs-film.md new file mode 100644 index 0000000000..c60a8abc7d --- /dev/null +++ b/.changeset/modern-pugs-film.md @@ -0,0 +1,39 @@ +--- +"@neo4j/graphql": minor +--- + +Remove connection wrapper on vector queries + +_Previous:_ + +```graphql +query MovieVectorQuery($vector: [Float!]!) { + myVectorQuery(vector: $vector) { + moviesConnection { + edges { + cursor + score + node { + title + } + } + } + } +} +``` + +_Now:_ + +```graphql +query MovieVectorQuery($vector: [Float!]!) { + myVectorQuery(vector: $vector) { + edges { + cursor + score + node { + title + } + } + } +} +``` diff --git a/packages/graphql/src/schema-model/entity/model-adapters/ConcreteEntityOperations.ts b/packages/graphql/src/schema-model/entity/model-adapters/ConcreteEntityOperations.ts index c944d3af22..0526fd316d 100644 --- a/packages/graphql/src/schema-model/entity/model-adapters/ConcreteEntityOperations.ts +++ b/packages/graphql/src/schema-model/entity/model-adapters/ConcreteEntityOperations.ts @@ -40,7 +40,6 @@ type FulltextTypeNames = { }; type VectorTypeNames = { - result: string; connection: string; edge: string; where: string; @@ -107,7 +106,6 @@ export class ConcreteEntityOperations extends ImplementingEntityOperations { const query = /* GraphQL */ ` query($vector: [Float!]) { ${queryName}(vector: $vector) { - ${Person.operations.connection} { - edges { - score - node { - name - } + edges { + score + node { + name } } } @@ -193,16 +192,14 @@ describe("@vector directive - Auth", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Person.operations.connection]: { - edges: [ - { - node: { - name: "this is a name", - }, - score: expect.closeTo(1), + edges: [ + { + node: { + name: "this is a name", }, - ], - }, + score: expect.closeTo(1), + }, + ], }, }); }); @@ -252,12 +249,10 @@ describe("@vector directive - Auth", () => { const query = /* GraphQL */ ` query($vector: [Float!]) { ${queryName}(vector: $vector) { - ${Person.operations.connection} { - edges { - score - node { - name - } + edges { + score + node { + name } } } @@ -273,9 +268,7 @@ describe("@vector directive - Auth", () => { // expect(gqlResult.data?.[queryType] as any[]).toBeArrayOfSize(0); expect(gqlResult.data).toEqual({ [queryName]: { - [Person.operations.connection]: { - edges: [], - }, + edges: [], }, }); }); @@ -329,12 +322,10 @@ describe("@vector directive - Auth", () => { const query = /* GraphQL */ ` query($vector: [Float!]) { ${queryName}(vector: $vector) { - ${Person.operations.connection} { - edges { - score - node { - name - } + edges { + score + node { + name } } } @@ -350,28 +341,26 @@ describe("@vector directive - Auth", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Person.operations.connection]: { - edges: [ - { - node: { - name: "this is a name", - }, - score: expect.closeTo(1), + edges: [ + { + node: { + name: "this is a name", }, - { - node: { - name: "This is a different name", - }, - score: expect.closeTo(0.56), + score: expect.closeTo(1), + }, + { + node: { + name: "This is a different name", }, - { - node: { - name: "Another name", - }, - score: expect.closeTo(0.48), + score: expect.closeTo(0.56), + }, + { + node: { + name: "Another name", }, - ], - }, + score: expect.closeTo(0.48), + }, + ], }, }); }); @@ -425,12 +414,10 @@ describe("@vector directive - Auth", () => { const query = /* GraphQL */ ` query($vector: [Float!]) { ${queryName}(vector: $vector) { - ${Person.operations.connection} { - edges { - score - node { - name - } + edges { + score + node { + name } } } @@ -492,12 +479,10 @@ describe("@vector directive - Auth", () => { const query = /* GraphQL */ ` query($vector: [Float!]) { ${queryName}(vector: $vector, where: { node: { name: "${person2.name}" } }) { - ${Person.operations.connection} { - edges { - score - node { - name - } + edges { + score + node { + name } } } @@ -513,16 +498,14 @@ describe("@vector directive - Auth", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Person.operations.connection]: { - edges: [ - { - node: { - name: "This is a different name", - }, - score: expect.closeTo(1), + edges: [ + { + node: { + name: "This is a different name", }, - ], - }, + score: expect.closeTo(1), + }, + ], }, }); }); @@ -572,12 +555,10 @@ describe("@vector directive - Auth", () => { const query = /* GraphQL */ ` query($vector: [Float!]) { ${queryName}(vector: $vector) { - ${Person.operations.connection} { - edges { - score - node { - name - } + edges { + score + node { + name } } } @@ -643,12 +624,10 @@ describe("@vector directive - Auth", () => { const query = /* GraphQL */ ` query($vector: [Float!]) { ${queryName}(vector: $vector) { - ${Person.operations.connection} { - edges { - score - node { - name - } + edges { + score + node { + name } } } diff --git a/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts index 827fa9aa71..d4c5564770 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts @@ -17,6 +17,7 @@ * limitations under the License. */ +import console from "console"; import { type Driver } from "neo4j-driver"; import { generate } from "randomstring"; import type { Neo4jGraphQL } from "../../../../src/classes"; @@ -147,12 +148,10 @@ describe("@vector directive - filtering", () => { const query = ` query($vector: [Float!]) { ${queryName}(vector: $vector,where: { node: { title_CONTAINS: "Another" } }) { - ${Movie.operations.connection}{ - edges { - score - node { - title - } + edges { + score + node { + title } } } @@ -163,22 +162,20 @@ describe("@vector directive - filtering", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Movie.operations.connection]: { - edges: [ - { - node: { - title: "Another Title: The revenge", - }, - score: expect.closeTo(0.999), + edges: [ + { + node: { + title: "Another Title: The revenge", }, - { - node: { - title: "Another Title", - }, - score: expect.closeTo(0.51), + score: expect.closeTo(0.999), + }, + { + node: { + title: "Another Title", }, - ], - }, + score: expect.closeTo(0.51), + }, + ], }, }); }); @@ -199,12 +196,10 @@ describe("@vector directive - filtering", () => { const query = ` query($vector: [Float!]) { ${queryName}(vector: $vector, where: { score: {min: 0.5, max: 0.99 }}) { - ${Movie.operations.connection}{ - edges { - score - node { - title - } + edges { + score + node { + title } } } @@ -215,16 +210,14 @@ describe("@vector directive - filtering", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Movie.operations.connection]: { - edges: [ - { - node: { - title: "Another Title", - }, - score: expect.closeTo(0.51), + edges: [ + { + node: { + title: "Another Title", }, - ], - }, + score: expect.closeTo(0.51), + }, + ], }, }); }); diff --git a/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts index 04dcd1a713..f5dcd6e3d5 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts @@ -150,12 +150,10 @@ describe("@vector directive - pagination", () => { const query = ` query($vector: [Float!]) { ${queryName}(vector: $vector, first: 2, after: "${cursor}") { - ${Movie.operations.connection}{ - edges { - score - node { - title - } + edges { + score + node { + title } } } @@ -166,22 +164,20 @@ describe("@vector directive - pagination", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Movie.operations.connection]: { - edges: [ - { - node: { - title: "Another Title", - }, - score: expect.closeTo(0.56), + edges: [ + { + node: { + title: "Another Title", }, - { - node: { - title: "Another Title: The revenge", - }, - score: expect.closeTo(0.48), + score: expect.closeTo(0.56), + }, + { + node: { + title: "Another Title: The revenge", }, - ], - }, + score: expect.closeTo(0.48), + }, + ], }, }); }); diff --git a/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts index a642edd4db..a09102bab5 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts @@ -148,12 +148,10 @@ describe("@vector directive - Query", () => { const query = ` query($vector: [Float!]) { ${queryName}(vector: $vector) { - ${Movie.operations.connection}{ - edges { - score - node { - title - } + edges { + score + node { + title } } } @@ -164,22 +162,20 @@ describe("@vector directive - Query", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Movie.operations.connection]: { - edges: [ - { - node: { - title: "Some Title", - }, - score: expect.closeTo(1), + edges: [ + { + node: { + title: "Some Title", }, - { - node: { - title: "Another Title", - }, - score: expect.closeTo(0.56), + score: expect.closeTo(1), + }, + { + node: { + title: "Another Title", }, - ], - }, + score: expect.closeTo(0.56), + }, + ], }, }); }); @@ -200,16 +196,14 @@ describe("@vector directive - Query", () => { const query = ` query($vector: [Float!]) { ${queryName}(vector: $vector) { - ${Movie.operations.connection}{ - edges { - score - node { - title - actorsConnection { - edges { - node { - name - } + edges { + score + node { + title + actorsConnection { + edges { + node { + name } } } @@ -223,34 +217,32 @@ describe("@vector directive - Query", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Movie.operations.connection]: { - edges: [ - { - node: { - title: "Some Title", - actorsConnection: { - edges: [ - { - node: { - name: "Keanu", - }, + edges: [ + { + node: { + title: "Some Title", + actorsConnection: { + edges: [ + { + node: { + name: "Keanu", }, - ], - }, + }, + ], }, - score: expect.closeTo(1), }, - { - node: { - title: "Another Title", - actorsConnection: { - edges: [], - }, + score: expect.closeTo(1), + }, + { + node: { + title: "Another Title", + actorsConnection: { + edges: [], }, - score: expect.closeTo(0.56), }, - ], - }, + score: expect.closeTo(0.56), + }, + ], }, }); }); diff --git a/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts index fb3f09b9cb..9dbe7668ce 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts @@ -17,6 +17,7 @@ * limitations under the License. */ +import console from "console"; import { type Driver } from "neo4j-driver"; import { generate } from "randomstring"; import type { Neo4jGraphQL } from "../../../../src/classes"; @@ -140,12 +141,10 @@ describe("@vector directive - Query", () => { const query = ` query($vector: [Float!]) { ${queryName}(vector: $vector, sort: {score: DESC} ) { - ${Movie.operations.connection}{ - edges { - score - node { - title - } + edges { + score + node { + title } } } @@ -156,22 +155,20 @@ describe("@vector directive - Query", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Movie.operations.connection]: { - edges: [ - { - node: { - title: "Some Title", - }, - score: expect.closeTo(1), + edges: [ + { + node: { + title: "Some Title", }, - { - node: { - title: "Another Title", - }, - score: expect.closeTo(0.56), + score: expect.closeTo(1), + }, + { + node: { + title: "Another Title", }, - ], - }, + score: expect.closeTo(0.56), + }, + ], }, }); }); @@ -192,12 +189,10 @@ describe("@vector directive - Query", () => { const query = ` query($vector: [Float!]) { ${queryName}(vector: $vector, sort: {score: ASC} ) { - ${Movie.operations.connection}{ - edges { - score - node { - title - } + edges { + score + node { + title } } } @@ -208,22 +203,20 @@ describe("@vector directive - Query", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Movie.operations.connection]: { - edges: [ - { - node: { - title: "Another Title", - }, - score: expect.closeTo(0.56), + edges: [ + { + node: { + title: "Another Title", }, - { - node: { - title: "Some Title", - }, - score: expect.closeTo(1), + score: expect.closeTo(0.56), + }, + { + node: { + title: "Some Title", }, - ], - }, + score: expect.closeTo(1), + }, + ], }, }); }); @@ -244,12 +237,10 @@ describe("@vector directive - Query", () => { const query = ` query($vector: [Float!]) { ${queryName}(vector: $vector, sort: {node: {title: ASC}} ) { - ${Movie.operations.connection}{ - edges { - score - node { - title - } + edges { + score + node { + title } } } @@ -260,22 +251,20 @@ describe("@vector directive - Query", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult.data).toEqual({ [queryName]: { - [Movie.operations.connection]: { - edges: [ - { - node: { - title: "Another Title", - }, - score: expect.closeTo(0.56), + edges: [ + { + node: { + title: "Another Title", }, - { - node: { - title: "Some Title", - }, - score: expect.closeTo(1), + score: expect.closeTo(0.56), + }, + { + node: { + title: "Some Title", }, - ], - }, + score: expect.closeTo(1), + }, + ], }, }); }); diff --git a/packages/graphql/tests/schema/vector.test.ts b/packages/graphql/tests/schema/vector.test.ts index 3a131b9b4e..90ac2427b3 100644 --- a/packages/graphql/tests/schema/vector.test.ts +++ b/packages/graphql/tests/schema/vector.test.ts @@ -128,10 +128,6 @@ describe("@vector schema", () => { score: Float! } - type MovieVectorResult { - moviesConnection: MoviesVectorConnection! - } - \\"\\"\\"The input for sorting a Vector query on an index of Movie\\"\\"\\" input MovieVectorSort { node: MovieSort @@ -197,11 +193,11 @@ describe("@vector schema", () => { } type Query { - descriptionQuery(after: String, first: Int, sort: [MovieVectorSort!], vector: [Float!], where: MovieVectorWhere): MovieVectorResult! + descriptionQuery(after: String, first: Int, sort: [MovieVectorSort!], vector: [Float!], where: MovieVectorWhere): MoviesVectorConnection! movies(options: MovieOptions, where: MovieWhere): [Movie!]! moviesAggregate(where: MovieWhere): MovieAggregateSelection! moviesConnection(after: String, first: Int, sort: [MovieSort], where: MovieWhere): MoviesConnection! - titleQuery(after: String, first: Int, sort: [MovieVectorSort!], vector: [Float!], where: MovieVectorWhere): MovieVectorResult! + titleQuery(after: String, first: Int, sort: [MovieVectorSort!], vector: [Float!], where: MovieVectorWhere): MoviesVectorConnection! } \\"\\"\\"An enum for sorting in either ascending or descending order.\\"\\"\\" diff --git a/packages/graphql/tests/tck/directives/vector/auth.test.ts b/packages/graphql/tests/tck/directives/vector/auth.test.ts index 3368ff6b6d..d48d7fa476 100644 --- a/packages/graphql/tests/tck/directives/vector/auth.test.ts +++ b/packages/graphql/tests/tck/directives/vector/auth.test.ts @@ -66,11 +66,9 @@ describe("Cypher -> vector -> Auth", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector) { - moviesConnection { - edges { - node { - title - } + edges { + node { + title } } } @@ -266,11 +264,9 @@ describe("Cypher -> vector -> Auth", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector) { - moviesConnection { - edges { - node { - title - } + edges { + node { + title } } } @@ -468,11 +464,9 @@ describe("Cypher -> vector -> Auth", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector) { - moviesConnection { - edges { - node { - title - } + edges { + node { + title } } } @@ -675,11 +669,9 @@ describe("Cypher -> vector -> Auth", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector) { - moviesConnection { - edges { - node { - title - } + edges { + node { + title } } } @@ -882,11 +874,9 @@ describe("Cypher -> vector -> Auth", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector) { - moviesConnection { - edges { - node { - title - } + edges { + node { + title } } } @@ -1093,11 +1083,9 @@ describe("Cypher -> vector -> Auth", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector) { - moviesConnection { - edges { - node { - title - } + edges { + node { + title } } } @@ -1298,11 +1286,9 @@ describe("Cypher -> vector -> Auth", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector) { - moviesConnection { - edges { - node { - title - } + edges { + node { + title } } } diff --git a/packages/graphql/tests/tck/directives/vector/match.test.ts b/packages/graphql/tests/tck/directives/vector/match.test.ts index 6b584969c7..6de67d1047 100644 --- a/packages/graphql/tests/tck/directives/vector/match.test.ts +++ b/packages/graphql/tests/tck/directives/vector/match.test.ts @@ -57,13 +57,11 @@ describe("Vector index match", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector) { - moviesConnection { - edges { - cursor - score - node { - title - } + edges { + cursor + score + node { + title } } } @@ -231,14 +229,12 @@ describe("Vector index match", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector, where: { node: { released_GT: 2000 } }) { - moviesConnection { - edges { - cursor - score - node { - title - released - } + edges { + cursor + score + node { + title + released } } } @@ -410,12 +406,10 @@ describe("Vector index match", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector, sort: { node: { title: DESC } }) { - moviesConnection { - edges { - score - node { - title - } + edges { + score + node { + title } } } diff --git a/packages/graphql/tests/tck/directives/vector/phrase.test.ts b/packages/graphql/tests/tck/directives/vector/phrase.test.ts index 1a722142b4..b3c2bdf2b0 100644 --- a/packages/graphql/tests/tck/directives/vector/phrase.test.ts +++ b/packages/graphql/tests/tck/directives/vector/phrase.test.ts @@ -66,13 +66,11 @@ describe("phrase input - genAI plugin", () => { const query = /* GraphQL */ ` query MovieVectorQuery($phrase: String!) { ${queryName}(phrase: $phrase) { - moviesConnection { - edges { - cursor - score - node { - title - } + edges { + cursor + score + node { + title } } } diff --git a/packages/graphql/tests/tck/directives/vector/score.test.ts b/packages/graphql/tests/tck/directives/vector/score.test.ts index 9aebd737f7..48fd8143b2 100644 --- a/packages/graphql/tests/tck/directives/vector/score.test.ts +++ b/packages/graphql/tests/tck/directives/vector/score.test.ts @@ -56,13 +56,11 @@ describe("Cypher -> vector -> Score", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector, where: { score: { min: 0.5 } }) { - moviesConnection { - edges { - node { - title - } - score + edges { + node { + title } + score } } } @@ -230,13 +228,11 @@ describe("Cypher -> vector -> Score", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector, sort: { score: ASC }) { - moviesConnection { - edges { - node { - title - } - score + edges { + node { + title } + score } } } @@ -405,13 +401,11 @@ describe("Cypher -> vector -> Score", () => { const query = /* GraphQL */ ` query MovieVectorQuery($vector: [Float!]!) { ${queryName}(vector: $vector, sort: [{ score: ASC }, { node: { title: DESC } }]) { - moviesConnection { - edges { - node { - title - } - score + edges { + node { + title } + score } } } From 43a7bbdf7019eb44381e9a4d6371f85a0b106568 Mon Sep 17 00:00:00 2001 From: angrykoala Date: Tue, 8 Oct 2024 16:42:21 +0200 Subject: [PATCH 02/10] Changes from code review --- .changeset/modern-pugs-film.md | 4 +++- packages/graphql/src/schema/resolvers/query/vector.ts | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.changeset/modern-pugs-film.md b/.changeset/modern-pugs-film.md index c60a8abc7d..f560565c33 100644 --- a/.changeset/modern-pugs-film.md +++ b/.changeset/modern-pugs-film.md @@ -2,7 +2,7 @@ "@neo4j/graphql": minor --- -Remove connection wrapper on vector queries +Remove connection wrapper on vector queries. _Previous:_ @@ -37,3 +37,5 @@ query MovieVectorQuery($vector: [Float!]!) { } } ``` + +Vector index is now a stable feature. diff --git a/packages/graphql/src/schema/resolvers/query/vector.ts b/packages/graphql/src/schema/resolvers/query/vector.ts index 443d717f61..e5513000d7 100644 --- a/packages/graphql/src/schema/resolvers/query/vector.ts +++ b/packages/graphql/src/schema/resolvers/query/vector.ts @@ -78,11 +78,9 @@ export function vectorResolver({ }); return { - // [entityAdapter.operations.rootTypeFieldNames.connection]: { totalCount, edges: connection.edges, pageInfo: connection.pageInfo, - // }, }; }; } From 3c690668e6cab959b6af598c29477dd77f8807cc Mon Sep 17 00:00:00 2001 From: Darrell Warde <8117355+darrellwarde@users.noreply.github.com> Date: Tue, 8 Oct 2024 16:10:07 +0100 Subject: [PATCH 03/10] Deprecate `options` of `assertIndexesAndConstraints` and remove from tests (#5632) * Deprecate `options` of `assertIndexesAndConstraints` and remove from tests * Fix flaky test --- .changeset/afraid-cows-beg.md | 5 ++ packages/graphql/src/classes/Neo4jGraphQL.ts | 3 ++ .../cypher-filtering-list-auth.int.test.ts | 4 +- .../fulltext/fulltext-query.int.test.ts | 49 ++++++++++++++----- .../vector/vector-filtering.int.test.ts | 1 - .../vector/vector-pagination.int.test.ts | 1 - .../vector/vector-query.int.test.ts | 1 - .../vector/vector-sorting.int.test.ts | 1 - .../tests/integration/issues/5378.int.test.ts | 4 +- packages/graphql/tests/utils/tests-helper.ts | 20 ++++++++ 10 files changed, 70 insertions(+), 19 deletions(-) create mode 100644 .changeset/afraid-cows-beg.md diff --git a/.changeset/afraid-cows-beg.md b/.changeset/afraid-cows-beg.md new file mode 100644 index 0000000000..98606fbb36 --- /dev/null +++ b/.changeset/afraid-cows-beg.md @@ -0,0 +1,5 @@ +--- +"@neo4j/graphql": patch +--- + +The `options` argument of `assertIndexesAndConstraints` has been deprecated and the creation of indexes and constraints will no longer be support in the next major version of the library. diff --git a/packages/graphql/src/classes/Neo4jGraphQL.ts b/packages/graphql/src/classes/Neo4jGraphQL.ts index c08c0f0f93..d165e5ceaa 100644 --- a/packages/graphql/src/classes/Neo4jGraphQL.ts +++ b/packages/graphql/src/classes/Neo4jGraphQL.ts @@ -166,6 +166,9 @@ class Neo4jGraphQL { }: { driver?: Driver; sessionConfig?: Neo4jGraphQLSessionConfig; + /** + * @deprecated The ability to create indexes and constraints will be removed in version 6.0.0 + */ options?: AssertIndexesAndConstraintsOptions; } = {}): Promise { if (!(this.executableSchema || this.subgraphSchema)) { diff --git a/packages/graphql/tests/integration/directives/cypher/filtering/cypher-filtering-list-auth.int.test.ts b/packages/graphql/tests/integration/directives/cypher/filtering/cypher-filtering-list-auth.int.test.ts index 83e82037d8..94138cacdb 100644 --- a/packages/graphql/tests/integration/directives/cypher/filtering/cypher-filtering-list-auth.int.test.ts +++ b/packages/graphql/tests/integration/directives/cypher/filtering/cypher-filtering-list-auth.int.test.ts @@ -161,14 +161,14 @@ describe("cypher directive filtering - List Auth", () => { expect(gqlResult.errors).toBeFalsy(); expect(gqlResult?.data).toEqual({ - [Movie.plural]: [ + [Movie.plural]: expect.toIncludeSameMembers([ { custom_field: ["a", "b", "c"], }, { custom_field: ["bbb", "a", "bbb"], }, - ], + ]), }); }); diff --git a/packages/graphql/tests/integration/directives/fulltext/fulltext-query.int.test.ts b/packages/graphql/tests/integration/directives/fulltext/fulltext-query.int.test.ts index eadc41dc65..db01788009 100644 --- a/packages/graphql/tests/integration/directives/fulltext/fulltext-query.int.test.ts +++ b/packages/graphql/tests/integration/directives/fulltext/fulltext-query.int.test.ts @@ -134,11 +134,13 @@ describe("@fulltext directive", () => { neoSchema = await testHelper.initNeo4jGraphQL({ typeDefs, }); + + await testHelper.createFulltextIndex(`${personType.name}Index`, personType.name, ["name"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); await testHelper.executeCypher( @@ -1244,11 +1246,13 @@ describe("@fulltext directive", () => { }, }, }); + + await testHelper.createFulltextIndex(`${personType.name}Index`, personType.name, ["name"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query = ` @@ -1305,11 +1309,13 @@ describe("@fulltext directive", () => { }, }, }); + + await testHelper.createFulltextIndex(`${personType.name}Index`, personType.name, ["name"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query = ` @@ -1366,11 +1372,13 @@ describe("@fulltext directive", () => { }, }, }); + + await testHelper.createFulltextIndex(`${personType.name}Index`, personType.name, ["name"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query = ` @@ -1442,11 +1450,13 @@ describe("@fulltext directive", () => { }, }, }); + + await testHelper.createFulltextIndex(`${personType.name}Index`, personType.name, ["name"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query = ` @@ -1498,11 +1508,13 @@ describe("@fulltext directive", () => { }, }, }); + + await testHelper.createFulltextIndex(`${personType.name}Index`, personType.name, ["name"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query = ` @@ -1557,11 +1569,13 @@ describe("@fulltext directive", () => { }, }, }); + + await testHelper.createFulltextIndex(`${personType.name}Index`, personType.name, ["name"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query = ` @@ -1617,11 +1631,13 @@ describe("@fulltext directive", () => { }, }, }); + + await testHelper.createFulltextIndex(`${personType.name}Index`, personType.name, ["name"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query = ` @@ -1669,11 +1685,13 @@ describe("@fulltext directive", () => { neoSchema = await testHelper.initNeo4jGraphQL({ typeDefs, }); + + await testHelper.createFulltextIndex(`${movieType.name}Index`, movieType.name, ["title", "description"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query = ` @@ -1736,11 +1754,13 @@ describe("@fulltext directive", () => { neoSchema = await testHelper.initNeo4jGraphQL({ typeDefs, }); + + await testHelper.createFulltextIndex(`${personType.name}CustomIndex`, personType.name, ["name"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query = ` @@ -1793,11 +1813,13 @@ describe("@fulltext directive", () => { neoSchema = await testHelper.initNeo4jGraphQL({ typeDefs, }); + + await testHelper.createFulltextIndex(`${movieType.name}Index`, movieType.name, ["title", "description"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query = ` @@ -1862,11 +1884,14 @@ describe("@fulltext directive", () => { neoSchema = await testHelper.initNeo4jGraphQL({ typeDefs, }); + + await testHelper.createFulltextIndex(`${movieType.name}CustomIndex`, movieType.name, ["title"]); + await testHelper.createFulltextIndex(`${movieType.name}CustomIndex2`, movieType.name, ["description"]); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); const query1 = ` diff --git a/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts index 827fa9aa71..41a14c4b92 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts @@ -120,7 +120,6 @@ describe("@vector directive - filtering", () => { await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); }); diff --git a/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts index 04dcd1a713..a46256cbd6 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts @@ -121,7 +121,6 @@ describe("@vector directive - pagination", () => { await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); }); diff --git a/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts index a642edd4db..49d39281e4 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts @@ -121,7 +121,6 @@ describe("@vector directive - Query", () => { await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); }); diff --git a/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts index fb3f09b9cb..1020182e12 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts @@ -113,7 +113,6 @@ describe("@vector directive - Query", () => { await neoSchema.assertIndexesAndConstraints({ driver, sessionConfig: { database: databaseName }, - options: { create: true }, }); }); diff --git a/packages/graphql/tests/integration/issues/5378.int.test.ts b/packages/graphql/tests/integration/issues/5378.int.test.ts index 0dcdf58478..490dc1682c 100644 --- a/packages/graphql/tests/integration/issues/5378.int.test.ts +++ b/packages/graphql/tests/integration/issues/5378.int.test.ts @@ -64,11 +64,13 @@ describe("https://github.com/neo4j/graphql/issues/5378", () => { typeDefs, }); + await testHelper.createFulltextIndex("fulltext_index_space_name_number", Space.name, ["Name", "Number"]); + await testHelper.createUniqueConstraint("unique_constraint_space_id", Space.name, "Id"); + await neoSchema.getSchema(); await neoSchema.assertIndexesAndConstraints({ driver: await testHelper.getDriver(), sessionConfig: { database: databaseName }, - options: { create: true }, }); }); diff --git a/packages/graphql/tests/utils/tests-helper.ts b/packages/graphql/tests/utils/tests-helper.ts index 0643ca37d8..8ee9d2a7db 100644 --- a/packages/graphql/tests/utils/tests-helper.ts +++ b/packages/graphql/tests/utils/tests-helper.ts @@ -208,6 +208,26 @@ export class TestHelper { return new Neo4jDatabaseInfo(rawVersion, edition); } + public async createFulltextIndex(name: string, label: string, properties: string[]): Promise { + const cypher = [ + `CREATE FULLTEXT INDEX ${name}`, + `IF NOT EXISTS FOR (n:${label})`, + `ON EACH [${properties.map((p) => `n.${p}`).join(", ")}]`, + ].join(" "); + + await this.executeCypher(cypher); + } + + public async createUniqueConstraint(name: string, label: string, property: string): Promise { + const cypher = [ + `CREATE CONSTRAINT ${name}`, + `IF NOT EXISTS FOR (n:${label})`, + `REQUIRE n.${property} IS UNIQUE`, + ].join(" "); + + await this.executeCypher(cypher); + } + private async checkConnectivity(driver: neo4j.Driver): Promise { if (process.env.USE_DEFAULT_DB) { return this.checkConnectivityToDefaultDatabase(driver); From c6787087d31bd956eb70a54a1ba5ba51015f0f4d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 21:58:42 +0000 Subject: [PATCH 04/10] chore(deps): update actions/upload-artifact digest to 8448086 --- .github/workflows/performance-tests.yml | 2 +- .github/workflows/reusable-api-library-tests.yml | 2 +- .github/workflows/reusable-federation-tests.yml | 2 +- .../workflows/reusable-integration-tests-on-prem-nightly.yml | 4 ++-- .github/workflows/reusable-integration-tests-on-prem.yml | 4 ++-- .../workflows/reusable-subscriptions-plugin-amqp-e2e-test.yml | 4 ++-- .github/workflows/reusable-unit-tests.yml | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/performance-tests.yml b/.github/workflows/performance-tests.yml index d9afa92314..1a763232ab 100644 --- a/.github/workflows/performance-tests.yml +++ b/.github/workflows/performance-tests.yml @@ -119,7 +119,7 @@ jobs: working-directory: packages/graphql - name: Archive performance test results - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 with: name: performance path: packages/graphql/performance/ diff --git a/.github/workflows/reusable-api-library-tests.yml b/.github/workflows/reusable-api-library-tests.yml index c8e3faf1a7..281b405caf 100644 --- a/.github/workflows/reusable-api-library-tests.yml +++ b/.github/workflows/reusable-api-library-tests.yml @@ -94,7 +94,7 @@ jobs: run: yarn --cwd packages/graphql run test:schema --coverage - if: ${{ !inputs.disable-coverage-archival }} name: Archive coverage report - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 with: name: api-library-coverage-graphql path: packages/graphql/coverage/ diff --git a/.github/workflows/reusable-federation-tests.yml b/.github/workflows/reusable-federation-tests.yml index eaba80d894..903323ad5a 100644 --- a/.github/workflows/reusable-federation-tests.yml +++ b/.github/workflows/reusable-federation-tests.yml @@ -39,7 +39,7 @@ jobs: mkdir prnumber echo "$PULL_REQUEST_NUMBER" > ./prnumber/prnumber - name: Archive PR number - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 with: name: prnumber path: prnumber/ diff --git a/.github/workflows/reusable-integration-tests-on-prem-nightly.yml b/.github/workflows/reusable-integration-tests-on-prem-nightly.yml index 14b61f3ff1..1a4296d8fd 100644 --- a/.github/workflows/reusable-integration-tests-on-prem-nightly.yml +++ b/.github/workflows/reusable-integration-tests-on-prem-nightly.yml @@ -114,7 +114,7 @@ jobs: NEO_URL: neo4j://localhost:7687 - if: ${{ !inputs.disable-coverage-archival && matrix.packages.package == 'graphql' }} name: Archive coverage report - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 with: name: integration-nightly-coverage-${{ matrix.packages.package }}-${{ matrix.graphql-version.coverage_path }}-${{ matrix.packages.coverage_name }}-${{ matrix.node.coverage_name }} path: packages/${{ matrix.packages.package }}/coverage-nightly-${{ matrix.graphql-version.coverage_path }}/ @@ -130,7 +130,7 @@ jobs: steps: - if: ${{ !inputs.disable-coverage-archival }} name: Merge Artifacts - uses: actions/upload-artifact/merge@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact/merge@84480863f228bb9747b473957fcc9e309aa96097 # v4 with: name: integration-nightly-coverage pattern: integration-nightly-coverage-* diff --git a/.github/workflows/reusable-integration-tests-on-prem.yml b/.github/workflows/reusable-integration-tests-on-prem.yml index 753dac8501..6bc0f9f13d 100644 --- a/.github/workflows/reusable-integration-tests-on-prem.yml +++ b/.github/workflows/reusable-integration-tests-on-prem.yml @@ -72,7 +72,7 @@ jobs: NEO_URL: bolt://localhost:7687 - if: ${{ !inputs.disable-coverage-archival && matrix.packages.package == 'graphql' }} name: Archive coverage report - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 with: name: integration-coverage-${{ matrix.packages.package }}-${{ matrix.neo4j-version }}-${{ matrix.graphql-version.coverage_path }}-${{ matrix.packages.coverage_name }} path: packages/${{ matrix.packages.package }}/coverage-${{ matrix.neo4j-version }}-${{ matrix.graphql-version.coverage_path }}/ @@ -83,7 +83,7 @@ jobs: steps: - if: ${{ !inputs.disable-coverage-archival }} name: Merge Artifacts - uses: actions/upload-artifact/merge@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact/merge@84480863f228bb9747b473957fcc9e309aa96097 # v4 with: name: integration-coverage pattern: integration-coverage-* diff --git a/.github/workflows/reusable-subscriptions-plugin-amqp-e2e-test.yml b/.github/workflows/reusable-subscriptions-plugin-amqp-e2e-test.yml index 1dcf96f140..d746169e1f 100644 --- a/.github/workflows/reusable-subscriptions-plugin-amqp-e2e-test.yml +++ b/.github/workflows/reusable-subscriptions-plugin-amqp-e2e-test.yml @@ -56,7 +56,7 @@ jobs: RABBITMQ_USER: guest RABBITMQ_PASSWORD: guest - name: Archive coverage report - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 with: name: e2e-coverage-graphql-amqp-subscriptions-engine-${{ matrix.graphql-version }}-${{ matrix.neo4j-version }} path: packages/graphql-amqp-subscriptions-engine/coverage/ @@ -66,7 +66,7 @@ jobs: needs: e2e-tests steps: - name: Merge Artifacts - uses: actions/upload-artifact/merge@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact/merge@84480863f228bb9747b473957fcc9e309aa96097 # v4 with: name: e2e-coverage-graphql-amqp-subscriptions-engine pattern: e2e-coverage-graphql-amqp-subscriptions-engine-* diff --git a/.github/workflows/reusable-unit-tests.yml b/.github/workflows/reusable-unit-tests.yml index 4e3fd8e34b..c4bf465a18 100644 --- a/.github/workflows/reusable-unit-tests.yml +++ b/.github/workflows/reusable-unit-tests.yml @@ -34,7 +34,7 @@ jobs: working-directory: packages/${{ matrix.package }} - if: ${{ !inputs.disable-coverage-archival && matrix.package == 'graphql' }} name: Archive coverage report - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 + uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 with: name: unit-coverage-${{ matrix.package }} path: packages/${{ matrix.package }}/coverage/ From 8e4f3b131d51f878d8b7e34908887742072eb0b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 22:05:28 +0000 Subject: [PATCH 05/10] chore(deps): update github/codeql-action digest to c36620d --- .github/workflows/reusable-codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-codeql-analysis.yml b/.github/workflows/reusable-codeql-analysis.yml index 88533bf2fe..75d14452d5 100644 --- a/.github/workflows/reusable-codeql-analysis.yml +++ b/.github/workflows/reusable-codeql-analysis.yml @@ -14,9 +14,9 @@ jobs: with: node-version: lts/* - name: Initialize CodeQL - uses: github/codeql-action/init@6db8d6351fd0be61f9ed8ebd12ccd35dcec51fea # v3 + uses: github/codeql-action/init@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3 with: config-file: ./.github/codeql/codeql-config.yml languages: javascript - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@6db8d6351fd0be61f9ed8ebd12ccd35dcec51fea # v3 + uses: github/codeql-action/analyze@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3 From e63cfcb15acdedeaebceebcb91ec2717634f1d26 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 22:13:16 +0000 Subject: [PATCH 06/10] chore(deps): update dependency @types/node to v20.16.11 --- .../package.json | 2 +- packages/graphql/package.json | 2 +- packages/introspector/package.json | 2 +- packages/ogm/package.json | 2 +- yarn.lock | 16 ++++++++-------- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/graphql-amqp-subscriptions-engine/package.json b/packages/graphql-amqp-subscriptions-engine/package.json index 47b669044d..4ab17c5ef6 100644 --- a/packages/graphql-amqp-subscriptions-engine/package.json +++ b/packages/graphql-amqp-subscriptions-engine/package.json @@ -40,7 +40,7 @@ "@types/cors": "2.8.17", "@types/debug": "4.1.12", "@types/jest": "29.5.13", - "@types/node": "20.16.10", + "@types/node": "20.16.11", "camelcase": "6.3.0", "graphql-ws": "5.16.0", "jest": "29.7.0", diff --git a/packages/graphql/package.json b/packages/graphql/package.json index 9f56c927fe..ade18bff08 100644 --- a/packages/graphql/package.json +++ b/packages/graphql/package.json @@ -47,7 +47,7 @@ "@types/is-uuid": "1.0.2", "@types/jest": "29.5.13", "@types/jsonwebtoken": "9.0.7", - "@types/node": "20.16.10", + "@types/node": "20.16.11", "@types/pluralize": "0.0.33", "@types/randomstring": "1.3.0", "@types/semver": "7.5.8", diff --git a/packages/introspector/package.json b/packages/introspector/package.json index 4071924503..9036927b2f 100644 --- a/packages/introspector/package.json +++ b/packages/introspector/package.json @@ -36,7 +36,7 @@ "devDependencies": { "@neo4j/graphql": "^5.3.4", "@types/jest": "29.5.13", - "@types/node": "20.16.10", + "@types/node": "20.16.11", "@types/pluralize": "0.0.33", "jest": "29.7.0", "ts-jest": "29.2.5", diff --git a/packages/ogm/package.json b/packages/ogm/package.json index 2109fe585e..809644a423 100644 --- a/packages/ogm/package.json +++ b/packages/ogm/package.json @@ -45,7 +45,7 @@ }, "devDependencies": { "@types/jest": "29.5.13", - "@types/node": "20.16.10", + "@types/node": "20.16.11", "camelcase": "6.3.0", "jest": "29.7.0", "jsonwebtoken": "9.0.2", diff --git a/yarn.lock b/yarn.lock index ba7b01aa88..a62fcf5ad7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2797,7 +2797,7 @@ __metadata: "@types/cors": "npm:2.8.17" "@types/debug": "npm:4.1.12" "@types/jest": "npm:29.5.13" - "@types/node": "npm:20.16.10" + "@types/node": "npm:20.16.11" amqplib: "npm:0.10.4" body-parser: "npm:^1.20.2" camelcase: "npm:6.3.0" @@ -2826,7 +2826,7 @@ __metadata: "@graphql-tools/merge": "npm:^9.0.0" "@neo4j/graphql": "npm:^5.7.1" "@types/jest": "npm:29.5.13" - "@types/node": "npm:20.16.10" + "@types/node": "npm:20.16.11" camelcase: "npm:6.3.0" jest: "npm:29.7.0" jsonwebtoken: "npm:9.0.2" @@ -2864,7 +2864,7 @@ __metadata: "@types/is-uuid": "npm:1.0.2" "@types/jest": "npm:29.5.13" "@types/jsonwebtoken": "npm:9.0.7" - "@types/node": "npm:20.16.10" + "@types/node": "npm:20.16.11" "@types/pluralize": "npm:0.0.33" "@types/randomstring": "npm:1.3.0" "@types/semver": "npm:7.5.8" @@ -2911,7 +2911,7 @@ __metadata: dependencies: "@neo4j/graphql": "npm:^5.3.4" "@types/jest": "npm:29.5.13" - "@types/node": "npm:20.16.10" + "@types/node": "npm:20.16.11" "@types/pluralize": "npm:0.0.33" camelcase: "npm:^6.3.0" debug: "npm:^4.3.4" @@ -4660,12 +4660,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:20.16.10": - version: 20.16.10 - resolution: "@types/node@npm:20.16.10" +"@types/node@npm:20.16.11": + version: 20.16.11 + resolution: "@types/node@npm:20.16.11" dependencies: undici-types: "npm:~6.19.2" - checksum: 10c0/c0c0c7ecb083ec638c2118e54b5242bb4c39a75608cbac9475cf15aaceb64b8bc997a87a0798e700a81d61651c8a7750ae0455be0f0996ada6e8b2bb818d90c5 + checksum: 10c0/bba43f447c3c80548513954dae174e18132e9149d572c09df4a282772960d33e229d05680fb5364997c03489c22fe377d1dbcd018a3d4ff1cfbcfcdaa594a9c3 languageName: node linkType: hard From 8d10def869a0e27f86b48bb6c2303767b150896a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 00:16:26 +0000 Subject: [PATCH 07/10] fix(deps): update dependency express to v4.21.1 --- yarn.lock | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index a62fcf5ad7..685596f8d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7691,7 +7691,14 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.6.0, cookie@npm:^0.6.0": +"cookie@npm:0.7.1": + version: 0.7.1 + resolution: "cookie@npm:0.7.1" + checksum: 10c0/5de60c67a410e7c8dc8a46a4b72eb0fe925871d057c9a5d2c0e8145c4270a4f81076de83410c4d397179744b478e33cd80ccbcc457abf40a9409ad27dcd21dde + languageName: node + linkType: hard + +"cookie@npm:^0.6.0": version: 0.6.0 resolution: "cookie@npm:0.6.0" checksum: 10c0/f2318b31af7a31b4ddb4a678d024514df5e705f9be5909a192d7f116cfb6d45cbacf96a473fa733faa95050e7cff26e7832bb3ef94751592f1387b71c8956686 @@ -9995,15 +10002,15 @@ __metadata: linkType: hard "express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.2": - version: 4.21.0 - resolution: "express@npm:4.21.0" + version: 4.21.1 + resolution: "express@npm:4.21.1" dependencies: accepts: "npm:~1.3.8" array-flatten: "npm:1.1.1" body-parser: "npm:1.20.3" content-disposition: "npm:0.5.4" content-type: "npm:~1.0.4" - cookie: "npm:0.6.0" + cookie: "npm:0.7.1" cookie-signature: "npm:1.0.6" debug: "npm:2.6.9" depd: "npm:2.0.0" @@ -10029,7 +10036,7 @@ __metadata: type-is: "npm:~1.6.18" utils-merge: "npm:1.0.1" vary: "npm:~1.1.2" - checksum: 10c0/4cf7ca328f3fdeb720f30ccb2ea7708bfa7d345f9cc460b64a82bf1b2c91e5b5852ba15a9a11b2a165d6089acf83457fc477dc904d59cd71ed34c7a91762c6cc + checksum: 10c0/0c287867e5f6129d3def1edd9b63103a53c40d4dc8628839d4b6827e35eb8f0de5a4656f9d85f4457eba584f9871ebb2ad26c750b36bd75d9bbb8bcebdc4892c languageName: node linkType: hard From 5c1be004d82b3739fca6ef83311a64a4363f62f0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 00:46:06 +0000 Subject: [PATCH 08/10] fix(deps): update dependency @graphql-codegen/typescript to v4.1.0 --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 685596f8d8..7e988b5d6e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1868,23 +1868,23 @@ __metadata: linkType: hard "@graphql-codegen/typescript@npm:^4.0.0": - version: 4.0.9 - resolution: "@graphql-codegen/typescript@npm:4.0.9" + version: 4.1.0 + resolution: "@graphql-codegen/typescript@npm:4.1.0" dependencies: "@graphql-codegen/plugin-helpers": "npm:^5.0.4" "@graphql-codegen/schema-ast": "npm:^4.0.2" - "@graphql-codegen/visitor-plugin-common": "npm:5.3.1" + "@graphql-codegen/visitor-plugin-common": "npm:5.4.0" auto-bind: "npm:~4.0.0" tslib: "npm:~2.6.0" peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 10c0/37a209ac6f1e84551805028dddb7be42e9b5ec5d7d411678b845f2c5b6b4bc242330666f993962f4d59dc207b9d1585c568f7c908364c0410531fd6860e4dfbd + checksum: 10c0/0d4d2bb98cbe469ec8c71aa7b582cc6964663258df0eaa16650f468824405346da24884e98807029b2c8078cf6c6b0952059c1f8e0a5d92a994fd9cf4979f9c9 languageName: node linkType: hard -"@graphql-codegen/visitor-plugin-common@npm:5.3.1": - version: 5.3.1 - resolution: "@graphql-codegen/visitor-plugin-common@npm:5.3.1" +"@graphql-codegen/visitor-plugin-common@npm:5.4.0": + version: 5.4.0 + resolution: "@graphql-codegen/visitor-plugin-common@npm:5.4.0" dependencies: "@graphql-codegen/plugin-helpers": "npm:^5.0.4" "@graphql-tools/optimize": "npm:^2.0.0" @@ -1898,7 +1898,7 @@ __metadata: tslib: "npm:~2.6.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 10c0/c6d642445149ef9adb473e0a47019a2008e4e1b69a700d7ff6b2e4d2ba3f3118a4296f6d370fd1c45c84f91dd3580cea63db896a47bd102a0dd7b28bb409a0e6 + checksum: 10c0/3c9fb5306f697757a148f2c189d16f56e0f10b436be084a85b180c9ecf9c5e35257828c4c34cd02b5eb0c075682dbdb932e13d69f451a34fbc1c6a782e27ed9d languageName: node linkType: hard From ed6601aa757a8343ff27878745491053ff0ac299 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 03:58:05 +0000 Subject: [PATCH 09/10] chore(deps): update actions/upload-artifact digest to 604373d --- .github/workflows/performance-tests.yml | 2 +- .github/workflows/reusable-api-library-tests.yml | 2 +- .github/workflows/reusable-federation-tests.yml | 2 +- .../workflows/reusable-integration-tests-on-prem-nightly.yml | 4 ++-- .github/workflows/reusable-integration-tests-on-prem.yml | 4 ++-- .../workflows/reusable-subscriptions-plugin-amqp-e2e-test.yml | 4 ++-- .github/workflows/reusable-unit-tests.yml | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/performance-tests.yml b/.github/workflows/performance-tests.yml index 1a763232ab..4fa15dc2e7 100644 --- a/.github/workflows/performance-tests.yml +++ b/.github/workflows/performance-tests.yml @@ -119,7 +119,7 @@ jobs: working-directory: packages/graphql - name: Archive performance test results - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 + uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4 with: name: performance path: packages/graphql/performance/ diff --git a/.github/workflows/reusable-api-library-tests.yml b/.github/workflows/reusable-api-library-tests.yml index 281b405caf..6d562df21b 100644 --- a/.github/workflows/reusable-api-library-tests.yml +++ b/.github/workflows/reusable-api-library-tests.yml @@ -94,7 +94,7 @@ jobs: run: yarn --cwd packages/graphql run test:schema --coverage - if: ${{ !inputs.disable-coverage-archival }} name: Archive coverage report - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 + uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4 with: name: api-library-coverage-graphql path: packages/graphql/coverage/ diff --git a/.github/workflows/reusable-federation-tests.yml b/.github/workflows/reusable-federation-tests.yml index 903323ad5a..757877f536 100644 --- a/.github/workflows/reusable-federation-tests.yml +++ b/.github/workflows/reusable-federation-tests.yml @@ -39,7 +39,7 @@ jobs: mkdir prnumber echo "$PULL_REQUEST_NUMBER" > ./prnumber/prnumber - name: Archive PR number - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 + uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4 with: name: prnumber path: prnumber/ diff --git a/.github/workflows/reusable-integration-tests-on-prem-nightly.yml b/.github/workflows/reusable-integration-tests-on-prem-nightly.yml index 1a4296d8fd..4d39b53ea3 100644 --- a/.github/workflows/reusable-integration-tests-on-prem-nightly.yml +++ b/.github/workflows/reusable-integration-tests-on-prem-nightly.yml @@ -114,7 +114,7 @@ jobs: NEO_URL: neo4j://localhost:7687 - if: ${{ !inputs.disable-coverage-archival && matrix.packages.package == 'graphql' }} name: Archive coverage report - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 + uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4 with: name: integration-nightly-coverage-${{ matrix.packages.package }}-${{ matrix.graphql-version.coverage_path }}-${{ matrix.packages.coverage_name }}-${{ matrix.node.coverage_name }} path: packages/${{ matrix.packages.package }}/coverage-nightly-${{ matrix.graphql-version.coverage_path }}/ @@ -130,7 +130,7 @@ jobs: steps: - if: ${{ !inputs.disable-coverage-archival }} name: Merge Artifacts - uses: actions/upload-artifact/merge@84480863f228bb9747b473957fcc9e309aa96097 # v4 + uses: actions/upload-artifact/merge@604373da6381bf24206979c74d06a550515601b9 # v4 with: name: integration-nightly-coverage pattern: integration-nightly-coverage-* diff --git a/.github/workflows/reusable-integration-tests-on-prem.yml b/.github/workflows/reusable-integration-tests-on-prem.yml index 6bc0f9f13d..80fde7bf73 100644 --- a/.github/workflows/reusable-integration-tests-on-prem.yml +++ b/.github/workflows/reusable-integration-tests-on-prem.yml @@ -72,7 +72,7 @@ jobs: NEO_URL: bolt://localhost:7687 - if: ${{ !inputs.disable-coverage-archival && matrix.packages.package == 'graphql' }} name: Archive coverage report - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 + uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4 with: name: integration-coverage-${{ matrix.packages.package }}-${{ matrix.neo4j-version }}-${{ matrix.graphql-version.coverage_path }}-${{ matrix.packages.coverage_name }} path: packages/${{ matrix.packages.package }}/coverage-${{ matrix.neo4j-version }}-${{ matrix.graphql-version.coverage_path }}/ @@ -83,7 +83,7 @@ jobs: steps: - if: ${{ !inputs.disable-coverage-archival }} name: Merge Artifacts - uses: actions/upload-artifact/merge@84480863f228bb9747b473957fcc9e309aa96097 # v4 + uses: actions/upload-artifact/merge@604373da6381bf24206979c74d06a550515601b9 # v4 with: name: integration-coverage pattern: integration-coverage-* diff --git a/.github/workflows/reusable-subscriptions-plugin-amqp-e2e-test.yml b/.github/workflows/reusable-subscriptions-plugin-amqp-e2e-test.yml index d746169e1f..b0d9526224 100644 --- a/.github/workflows/reusable-subscriptions-plugin-amqp-e2e-test.yml +++ b/.github/workflows/reusable-subscriptions-plugin-amqp-e2e-test.yml @@ -56,7 +56,7 @@ jobs: RABBITMQ_USER: guest RABBITMQ_PASSWORD: guest - name: Archive coverage report - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 + uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4 with: name: e2e-coverage-graphql-amqp-subscriptions-engine-${{ matrix.graphql-version }}-${{ matrix.neo4j-version }} path: packages/graphql-amqp-subscriptions-engine/coverage/ @@ -66,7 +66,7 @@ jobs: needs: e2e-tests steps: - name: Merge Artifacts - uses: actions/upload-artifact/merge@84480863f228bb9747b473957fcc9e309aa96097 # v4 + uses: actions/upload-artifact/merge@604373da6381bf24206979c74d06a550515601b9 # v4 with: name: e2e-coverage-graphql-amqp-subscriptions-engine pattern: e2e-coverage-graphql-amqp-subscriptions-engine-* diff --git a/.github/workflows/reusable-unit-tests.yml b/.github/workflows/reusable-unit-tests.yml index c4bf465a18..a638ecc6b9 100644 --- a/.github/workflows/reusable-unit-tests.yml +++ b/.github/workflows/reusable-unit-tests.yml @@ -34,7 +34,7 @@ jobs: working-directory: packages/${{ matrix.package }} - if: ${{ !inputs.disable-coverage-archival && matrix.package == 'graphql' }} name: Archive coverage report - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4 + uses: actions/upload-artifact@604373da6381bf24206979c74d06a550515601b9 # v4 with: name: unit-coverage-${{ matrix.package }} path: packages/${{ matrix.package }}/coverage/ From 2921e0c81c1c56a94ece61fc7e515559073eb4af Mon Sep 17 00:00:00 2001 From: Neo4j Team GraphQL Date: Wed, 9 Oct 2024 04:03:49 +0000 Subject: [PATCH 10/10] Version Packages --- .changeset/afraid-cows-beg.md | 5 ----- .changeset/fair-eagles-shave.md | 5 ----- .changeset/lucky-icons-marry.md | 5 ----- .changeset/olive-phones-speak.md | 5 ----- .../package.json | 2 +- packages/graphql/CHANGELOG.md | 14 ++++++++++++++ packages/graphql/package.json | 2 +- packages/ogm/CHANGELOG.md | 7 +++++++ packages/ogm/package.json | 4 ++-- yarn.lock | 6 +++--- 10 files changed, 28 insertions(+), 27 deletions(-) delete mode 100644 .changeset/afraid-cows-beg.md delete mode 100644 .changeset/fair-eagles-shave.md delete mode 100644 .changeset/lucky-icons-marry.md delete mode 100644 .changeset/olive-phones-speak.md diff --git a/.changeset/afraid-cows-beg.md b/.changeset/afraid-cows-beg.md deleted file mode 100644 index 98606fbb36..0000000000 --- a/.changeset/afraid-cows-beg.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@neo4j/graphql": patch ---- - -The `options` argument of `assertIndexesAndConstraints` has been deprecated and the creation of indexes and constraints will no longer be support in the next major version of the library. diff --git a/.changeset/fair-eagles-shave.md b/.changeset/fair-eagles-shave.md deleted file mode 100644 index e3331c6762..0000000000 --- a/.changeset/fair-eagles-shave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@neo4j/graphql": patch ---- - -Fix delete operations inside updates for unions diff --git a/.changeset/lucky-icons-marry.md b/.changeset/lucky-icons-marry.md deleted file mode 100644 index fda31a306b..0000000000 --- a/.changeset/lucky-icons-marry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@neo4j/graphql": patch ---- - -Fix cardinality validation on nested unions diff --git a/.changeset/olive-phones-speak.md b/.changeset/olive-phones-speak.md deleted file mode 100644 index 7cfe01dba8..0000000000 --- a/.changeset/olive-phones-speak.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@neo4j/graphql": minor ---- - -Add cypher filtering on lists of scalars diff --git a/packages/apollo-federation-subgraph-compatibility/package.json b/packages/apollo-federation-subgraph-compatibility/package.json index bdd6b064c4..a2742ffb7c 100644 --- a/packages/apollo-federation-subgraph-compatibility/package.json +++ b/packages/apollo-federation-subgraph-compatibility/package.json @@ -10,7 +10,7 @@ "dependencies": { "@apollo/server": "^4.7.0", "@graphql-tools/wrap": "^10.0.0", - "@neo4j/graphql": "^5.7.1", + "@neo4j/graphql": "^5.8.0", "graphql": "16.9.0", "graphql-tag": "^2.12.6", "neo4j-driver": "^5.8.0" diff --git a/packages/graphql/CHANGELOG.md b/packages/graphql/CHANGELOG.md index 36e133e30a..572587b0d9 100644 --- a/packages/graphql/CHANGELOG.md +++ b/packages/graphql/CHANGELOG.md @@ -1,5 +1,19 @@ # @neo4j/graphql +## 5.8.0 + +### Minor Changes + +- [#5619](https://github.com/neo4j/graphql/pull/5619) [`142bc0a`](https://github.com/neo4j/graphql/commit/142bc0af7c36e0190d42710d3d4f0f480602672f) Thanks [@mjfwebb](https://github.com/mjfwebb)! - Add cypher filtering on lists of scalars + +### Patch Changes + +- [#5632](https://github.com/neo4j/graphql/pull/5632) [`3c69066`](https://github.com/neo4j/graphql/commit/3c690668e6cab959b6af598c29477dd77f8807cc) Thanks [@darrellwarde](https://github.com/darrellwarde)! - The `options` argument of `assertIndexesAndConstraints` has been deprecated and the creation of indexes and constraints will no longer be support in the next major version of the library. + +- [#5606](https://github.com/neo4j/graphql/pull/5606) [`e4ac1d8`](https://github.com/neo4j/graphql/commit/e4ac1d86009f520eacce26f83585e3fb57cb01ac) Thanks [@angrykoala](https://github.com/angrykoala)! - Fix delete operations inside updates for unions + +- [#5616](https://github.com/neo4j/graphql/pull/5616) [`b7552f8`](https://github.com/neo4j/graphql/commit/b7552f8151d22ae3e4b4e04f4d168128600ebfa8) Thanks [@angrykoala](https://github.com/angrykoala)! - Fix cardinality validation on nested unions + ## 5.7.1 ### Patch Changes diff --git a/packages/graphql/package.json b/packages/graphql/package.json index ade18bff08..7b5c152019 100644 --- a/packages/graphql/package.json +++ b/packages/graphql/package.json @@ -1,6 +1,6 @@ { "name": "@neo4j/graphql", - "version": "5.7.1", + "version": "5.8.0", "description": "A GraphQL to Cypher query execution layer for Neo4j and JavaScript GraphQL implementations", "keywords": [ "neo4j", diff --git a/packages/ogm/CHANGELOG.md b/packages/ogm/CHANGELOG.md index d9593fa744..f1043119a5 100644 --- a/packages/ogm/CHANGELOG.md +++ b/packages/ogm/CHANGELOG.md @@ -1,5 +1,12 @@ # @neo4j/graphql-ogm +## 5.8.0 + +### Patch Changes + +- Updated dependencies [[`3c69066`](https://github.com/neo4j/graphql/commit/3c690668e6cab959b6af598c29477dd77f8807cc), [`e4ac1d8`](https://github.com/neo4j/graphql/commit/e4ac1d86009f520eacce26f83585e3fb57cb01ac), [`b7552f8`](https://github.com/neo4j/graphql/commit/b7552f8151d22ae3e4b4e04f4d168128600ebfa8), [`142bc0a`](https://github.com/neo4j/graphql/commit/142bc0af7c36e0190d42710d3d4f0f480602672f)]: + - @neo4j/graphql@5.8.0 + ## 5.7.1 ### Patch Changes diff --git a/packages/ogm/package.json b/packages/ogm/package.json index 809644a423..fcd7b7ea48 100644 --- a/packages/ogm/package.json +++ b/packages/ogm/package.json @@ -1,6 +1,6 @@ { "name": "@neo4j/graphql-ogm", - "version": "5.7.1", + "version": "5.8.0", "description": "GraphQL powered OGM for Neo4j and Javascript applications", "keywords": [ "neo4j", @@ -36,7 +36,7 @@ "@graphql-codegen/plugin-helpers": "^5.0.0", "@graphql-codegen/typescript": "^4.0.0", "@graphql-tools/merge": "^9.0.0", - "@neo4j/graphql": "^5.7.1", + "@neo4j/graphql": "^5.8.0", "prettier": "^2.7.1" }, "peerDependencies": { diff --git a/yarn.lock b/yarn.lock index 7e988b5d6e..d6a9f78dd8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2824,7 +2824,7 @@ __metadata: "@graphql-codegen/plugin-helpers": "npm:^5.0.0" "@graphql-codegen/typescript": "npm:^4.0.0" "@graphql-tools/merge": "npm:^9.0.0" - "@neo4j/graphql": "npm:^5.7.1" + "@neo4j/graphql": "npm:^5.8.0" "@types/jest": "npm:29.5.13" "@types/node": "npm:20.16.11" camelcase: "npm:6.3.0" @@ -2848,7 +2848,7 @@ __metadata: languageName: node linkType: soft -"@neo4j/graphql@npm:^5.0.0, @neo4j/graphql@npm:^5.3.4, @neo4j/graphql@npm:^5.4.0, @neo4j/graphql@npm:^5.7.1, @neo4j/graphql@workspace:packages/graphql": +"@neo4j/graphql@npm:^5.0.0, @neo4j/graphql@npm:^5.3.4, @neo4j/graphql@npm:^5.4.0, @neo4j/graphql@npm:^5.8.0, @neo4j/graphql@workspace:packages/graphql": version: 0.0.0-use.local resolution: "@neo4j/graphql@workspace:packages/graphql" dependencies: @@ -5712,7 +5712,7 @@ __metadata: "@apollo/federation-subgraph-compatibility": "npm:2.2.0" "@apollo/server": "npm:^4.7.0" "@graphql-tools/wrap": "npm:^10.0.0" - "@neo4j/graphql": "npm:^5.7.1" + "@neo4j/graphql": "npm:^5.8.0" fork-ts-checker-webpack-plugin: "npm:9.0.2" graphql: "npm:16.9.0" graphql-tag: "npm:^2.12.6"