@neo4j-cypher/query-tools 2.0.0-next.21 → 2.0.0-next.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/cjs/package.json +3 -2
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.d.ts +33 -0
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.js +93 -0
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.js.map +1 -0
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.test.d.ts +1 -0
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.test.js +127 -0
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.test.js.map +1 -0
- package/dist/cjs/src/index.d.ts +4 -1
- package/dist/cjs/src/index.js +21 -1
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/metadataPoller.js +1 -4
- package/dist/cjs/src/metadataPoller.js.map +1 -1
- package/dist/cjs/src/neo4jConnection.d.ts +9 -2
- package/dist/cjs/src/neo4jConnection.js +44 -23
- package/dist/cjs/src/neo4jConnection.js.map +1 -1
- package/dist/cjs/src/queries/version.d.ts +0 -3
- package/dist/cjs/src/queries/version.js +4 -28
- package/dist/cjs/src/queries/version.js.map +1 -1
- package/dist/cjs/src/result-transformers/graph-result-transformer.d.ts +36 -0
- package/dist/cjs/src/result-transformers/graph-result-transformer.js +37 -0
- package/dist/cjs/src/result-transformers/graph-result-transformer.js.map +1 -0
- package/dist/cjs/src/schemaPoller.d.ts +1 -0
- package/dist/cjs/src/schemaPoller.js +31 -2
- package/dist/cjs/src/schemaPoller.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/package.json +3 -2
- package/dist/esm/src/cypher-execution/extract-unique-nodes-and-relationships.d.ts +33 -0
- package/dist/esm/src/cypher-execution/extract-unique-nodes-and-relationships.js +89 -0
- package/dist/esm/src/cypher-execution/extract-unique-nodes-and-relationships.js.map +1 -0
- package/dist/esm/src/cypher-execution/extract-unique-nodes-and-relationships.test.d.ts +1 -0
- package/dist/esm/src/cypher-execution/extract-unique-nodes-and-relationships.test.js +125 -0
- package/dist/esm/src/cypher-execution/extract-unique-nodes-and-relationships.test.js.map +1 -0
- package/dist/esm/src/index.d.ts +4 -1
- package/dist/esm/src/index.js +4 -1
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/metadataPoller.js +2 -5
- package/dist/esm/src/metadataPoller.js.map +1 -1
- package/dist/esm/src/neo4jConnection.d.ts +9 -2
- package/dist/esm/src/neo4jConnection.js +44 -23
- package/dist/esm/src/neo4jConnection.js.map +1 -1
- package/dist/esm/src/queries/version.d.ts +0 -3
- package/dist/esm/src/queries/version.js +4 -27
- package/dist/esm/src/queries/version.js.map +1 -1
- package/dist/esm/src/result-transformers/graph-result-transformer.d.ts +36 -0
- package/dist/esm/src/result-transformers/graph-result-transformer.js +34 -0
- package/dist/esm/src/result-transformers/graph-result-transformer.js.map +1 -0
- package/dist/esm/src/schemaPoller.d.ts +1 -0
- package/dist/esm/src/schemaPoller.js +32 -3
- package/dist/esm/src/schemaPoller.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/src/cypher-execution/extract-unique-nodes-and-relationships.test.ts +235 -0
- package/src/cypher-execution/extract-unique-nodes-and-relationships.ts +127 -0
- package/src/index.ts +7 -1
- package/src/metadataPoller.ts +2 -6
- package/src/neo4jConnection.ts +67 -29
- package/src/queries/version.ts +5 -32
- package/src/result-transformers/graph-result-transformer.ts +57 -0
- package/src/schemaPoller.ts +45 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @neo4j-cypher/query-tools
|
|
2
2
|
|
|
3
|
+
## 2.0.0-next.23
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 045424b: Fixes execution of queries that need to be ran in implicit transactions
|
|
8
|
+
- Updated dependencies [c065d85]
|
|
9
|
+
- @neo4j-cypher/language-support@2.0.0-next.23
|
|
10
|
+
|
|
11
|
+
## 2.0.0-next.22
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- c4f27c9: Adds server-version to connection in dbSchema
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- Updated dependencies [ed65ef3]
|
|
20
|
+
- Updated dependencies [7538cfd]
|
|
21
|
+
- Updated dependencies [039d1c5]
|
|
22
|
+
- Updated dependencies [1ef063e]
|
|
23
|
+
- Updated dependencies [a38255f]
|
|
24
|
+
- @neo4j-cypher/language-support@2.0.0-next.22
|
|
25
|
+
|
|
3
26
|
## 2.0.0-next.21
|
|
4
27
|
|
|
5
28
|
### Patch Changes
|
package/dist/cjs/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "",
|
|
4
4
|
"author": "Neo4j Inc.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
|
-
"version": "2.0.0-next.
|
|
6
|
+
"version": "2.0.0-next.23",
|
|
7
7
|
"main": "./dist/cjs/src/index.js",
|
|
8
8
|
"module": "./dist/esm/src/index.js",
|
|
9
9
|
"exports": {
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"build-esm": "tsc --module esnext --outDir dist/esm",
|
|
35
35
|
"build-commonjs": "tsc --module commonjs --outDir dist/cjs",
|
|
36
36
|
"dev": "concurrently 'npm:build-esm -- --watch' 'npm:build-commonjs -- --watch'",
|
|
37
|
-
"clean": "rm -rf {dist,tsconfig.tsbuildinfo}"
|
|
37
|
+
"clean": "rm -rf {dist,tsconfig.tsbuildinfo}",
|
|
38
|
+
"test": "vitest"
|
|
38
39
|
}
|
|
39
40
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Integer, Node, Record, RecordShape, Relationship } from 'neo4j-driver';
|
|
2
|
+
import { CypherProperty } from '../data-types/cypher-data-types';
|
|
3
|
+
export type Properties = RecordShape<string, CypherProperty>;
|
|
4
|
+
/**
|
|
5
|
+
* Result type containing deduplicated nodes and relationships extracted from Neo4j records.
|
|
6
|
+
*/
|
|
7
|
+
export type DeduplicatedNodesAndRels = {
|
|
8
|
+
/** Array of unique nodes found in the records */
|
|
9
|
+
nodes: Node<Integer, Properties, string>[];
|
|
10
|
+
/** Array of unique relationships found in the records */
|
|
11
|
+
relationships: Relationship<Integer, Properties, string>[];
|
|
12
|
+
/** Whether the max node limit was reached during extraction */
|
|
13
|
+
limitHit: boolean;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Extracts and deduplicates nodes and relationships from Neo4j query records.
|
|
17
|
+
*
|
|
18
|
+
* This function processes Neo4j records to find all nodes and relationships,
|
|
19
|
+
* removing duplicates based on their element IDs. It can handle various data
|
|
20
|
+
* structures including individual nodes/relationships, paths, arrays, and
|
|
21
|
+
* nested objects.
|
|
22
|
+
*
|
|
23
|
+
* @param records - Array of Neo4j records to process
|
|
24
|
+
* @param options - Configuration options for extraction
|
|
25
|
+
* @param options.nodeLimit - Maximum number of unique nodes to extract (optional)
|
|
26
|
+
* @param options.keepDanglingRels - Whether to keep relationships whose start/end nodes are missing (default: false)
|
|
27
|
+
*
|
|
28
|
+
* @returns The {@link DeduplicatedNodesAndRels} containing unique nodes and relationships
|
|
29
|
+
*/
|
|
30
|
+
export declare const extractUniqueNodesAndRels: (records: Record[], { nodeLimit, keepDanglingRels, }?: {
|
|
31
|
+
nodeLimit?: number;
|
|
32
|
+
keepDanglingRels?: boolean;
|
|
33
|
+
}) => DeduplicatedNodesAndRels;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractUniqueNodesAndRels = void 0;
|
|
4
|
+
const neo4j_driver_1 = require("neo4j-driver");
|
|
5
|
+
/**
|
|
6
|
+
* Extracts and deduplicates nodes and relationships from Neo4j query records.
|
|
7
|
+
*
|
|
8
|
+
* This function processes Neo4j records to find all nodes and relationships,
|
|
9
|
+
* removing duplicates based on their element IDs. It can handle various data
|
|
10
|
+
* structures including individual nodes/relationships, paths, arrays, and
|
|
11
|
+
* nested objects.
|
|
12
|
+
*
|
|
13
|
+
* @param records - Array of Neo4j records to process
|
|
14
|
+
* @param options - Configuration options for extraction
|
|
15
|
+
* @param options.nodeLimit - Maximum number of unique nodes to extract (optional)
|
|
16
|
+
* @param options.keepDanglingRels - Whether to keep relationships whose start/end nodes are missing (default: false)
|
|
17
|
+
*
|
|
18
|
+
* @returns The {@link DeduplicatedNodesAndRels} containing unique nodes and relationships
|
|
19
|
+
*/
|
|
20
|
+
const extractUniqueNodesAndRels = (records, { nodeLimit, keepDanglingRels = false, } = {}) => {
|
|
21
|
+
let limitHit = false;
|
|
22
|
+
const items = new Set();
|
|
23
|
+
for (const record of records) {
|
|
24
|
+
for (const key of record.keys) {
|
|
25
|
+
items.add(record.get(key));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const paths = [];
|
|
29
|
+
const nodeMap = new Map();
|
|
30
|
+
function addNode(n) {
|
|
31
|
+
if (!limitHit) {
|
|
32
|
+
const id = n.elementId.toString();
|
|
33
|
+
if (!nodeMap.has(id)) {
|
|
34
|
+
nodeMap.set(id, n);
|
|
35
|
+
}
|
|
36
|
+
if (typeof nodeLimit === 'number' && nodeMap.size === nodeLimit) {
|
|
37
|
+
limitHit = true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const relMap = new Map();
|
|
42
|
+
function addRel(r) {
|
|
43
|
+
const id = r.elementId.toString();
|
|
44
|
+
if (!relMap.has(id)) {
|
|
45
|
+
relMap.set(id, r);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const findAllEntities = (item) => {
|
|
49
|
+
if (typeof item !== 'object' || !item) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if ((0, neo4j_driver_1.isRelationship)(item)) {
|
|
53
|
+
addRel(item);
|
|
54
|
+
}
|
|
55
|
+
else if ((0, neo4j_driver_1.isNode)(item)) {
|
|
56
|
+
addNode(item);
|
|
57
|
+
}
|
|
58
|
+
else if ((0, neo4j_driver_1.isPath)(item)) {
|
|
59
|
+
paths.push(item);
|
|
60
|
+
}
|
|
61
|
+
else if (Array.isArray(item)) {
|
|
62
|
+
item.forEach(findAllEntities);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
Object.values(item).forEach(findAllEntities);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
findAllEntities(Array.from(items));
|
|
69
|
+
for (const path of paths) {
|
|
70
|
+
addNode(path.start);
|
|
71
|
+
addNode(path.end);
|
|
72
|
+
for (const segment of path.segments) {
|
|
73
|
+
addNode(segment.start);
|
|
74
|
+
addNode(segment.end);
|
|
75
|
+
addRel(segment.relationship);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const nodes = Array.from(nodeMap.values());
|
|
79
|
+
const relationships = Array.from(relMap.values()).filter((item) => {
|
|
80
|
+
if (keepDanglingRels) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
// We'd get dangling relationships from
|
|
84
|
+
// match ()-[a:ACTED_IN]->() return a;
|
|
85
|
+
// or from hitting the node limit
|
|
86
|
+
const start = item.startNodeElementId.toString();
|
|
87
|
+
const end = item.endNodeElementId.toString();
|
|
88
|
+
return nodeMap.has(start) && nodeMap.has(end);
|
|
89
|
+
});
|
|
90
|
+
return { nodes, relationships, limitHit };
|
|
91
|
+
};
|
|
92
|
+
exports.extractUniqueNodesAndRels = extractUniqueNodesAndRels;
|
|
93
|
+
//# sourceMappingURL=extract-unique-nodes-and-relationships.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-unique-nodes-and-relationships.js","sourceRoot":"","sources":["../../../../src/cypher-execution/extract-unique-nodes-and-relationships.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const neo4j_driver_1 = require("neo4j-driver");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const extract_unique_nodes_and_relationships_1 = require("./extract-unique-nodes-and-relationships");
|
|
6
|
+
(0, vitest_1.describe)('extractNodesAndRels', () => {
|
|
7
|
+
(0, vitest_1.test)('should map bolt records with a path to nodes and relationships', () => {
|
|
8
|
+
const startNode = new neo4j_driver_1.Node(1, ['Person'], {
|
|
9
|
+
prop1: 'prop1',
|
|
10
|
+
}, 'node1');
|
|
11
|
+
const endNode = new neo4j_driver_1.Node(2, ['Movie'], {
|
|
12
|
+
prop2: 'prop2',
|
|
13
|
+
}, 'node2');
|
|
14
|
+
const relationship = new neo4j_driver_1.Relationship(3, 1, 2, 'ACTED_IN', {}, 'rel1', 'node1', 'node2');
|
|
15
|
+
const pathSegment = new neo4j_driver_1.PathSegment(startNode, relationship, endNode);
|
|
16
|
+
const path = new neo4j_driver_1.Path(startNode, endNode, [pathSegment]);
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
18
|
+
const boltRecord = {
|
|
19
|
+
keys: ['p'],
|
|
20
|
+
get: () => path,
|
|
21
|
+
};
|
|
22
|
+
const { nodes, relationships } = (0, extract_unique_nodes_and_relationships_1.extractUniqueNodesAndRels)([boltRecord]);
|
|
23
|
+
const [graphNodeStart] = nodes.filter((node) => node.elementId.toString() === 'node1');
|
|
24
|
+
const [graphNodeEnd] = nodes.filter((node) => node.elementId.toString() === 'node2');
|
|
25
|
+
const [firstRel] = relationships;
|
|
26
|
+
if (graphNodeStart === undefined ||
|
|
27
|
+
graphNodeEnd === undefined ||
|
|
28
|
+
firstRel === undefined) {
|
|
29
|
+
throw new Error('Error in test data, got undefined');
|
|
30
|
+
}
|
|
31
|
+
(0, vitest_1.expect)(nodes.length).toBe(2);
|
|
32
|
+
(0, vitest_1.expect)(graphNodeStart.labels).toEqual(['Person']);
|
|
33
|
+
(0, vitest_1.expect)(graphNodeStart.properties).toEqual({ prop1: 'prop1' });
|
|
34
|
+
(0, vitest_1.expect)(graphNodeEnd.labels).toEqual(['Movie']);
|
|
35
|
+
(0, vitest_1.expect)(graphNodeEnd.properties).toEqual({ prop2: 'prop2' });
|
|
36
|
+
(0, vitest_1.expect)(relationships.length).toBe(1);
|
|
37
|
+
(0, vitest_1.expect)(firstRel.elementId.toString()).toEqual('rel1');
|
|
38
|
+
(0, vitest_1.expect)(firstRel.startNodeElementId.toString()).toEqual('node1');
|
|
39
|
+
(0, vitest_1.expect)(firstRel.endNodeElementId.toString()).toEqual('node2');
|
|
40
|
+
(0, vitest_1.expect)(firstRel.type).toEqual('ACTED_IN');
|
|
41
|
+
(0, vitest_1.expect)(firstRel.properties).toEqual({});
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.test)('should deduplicate bolt records based on node id and filter out dangling relationships', () => {
|
|
44
|
+
const node1 = new neo4j_driver_1.Node(1, ['Person'], {
|
|
45
|
+
prop1: 'prop1',
|
|
46
|
+
}, 'node1');
|
|
47
|
+
const node2 = new neo4j_driver_1.Node(1, ['Person'], {
|
|
48
|
+
prop1: 'prop1',
|
|
49
|
+
}, 'node1');
|
|
50
|
+
const relationship = new neo4j_driver_1.Relationship(2, 1, 34, 'ACTED_IN', {}, 'rel1', 'node1', 'node34');
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
52
|
+
const boltRecord = {
|
|
53
|
+
keys: ['n'],
|
|
54
|
+
get: () => [node1, node2, relationship],
|
|
55
|
+
};
|
|
56
|
+
const { nodes, relationships, limitHit } = (0, extract_unique_nodes_and_relationships_1.extractUniqueNodesAndRels)([
|
|
57
|
+
boltRecord,
|
|
58
|
+
]);
|
|
59
|
+
(0, vitest_1.expect)(limitHit).toBe(false);
|
|
60
|
+
(0, vitest_1.expect)(nodes.length).toBe(1);
|
|
61
|
+
(0, vitest_1.expect)(relationships.length).toBe(0);
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.test)('should respect the max nodes limit and filter out dangling relations', () => {
|
|
64
|
+
const startNode = new neo4j_driver_1.Node(1, ['Person'], {
|
|
65
|
+
prop1: 'prop1',
|
|
66
|
+
}, 'node1');
|
|
67
|
+
const endNode = new neo4j_driver_1.Node(2, ['Movie'], {
|
|
68
|
+
prop2: 'prop2',
|
|
69
|
+
}, 'node2');
|
|
70
|
+
const relationship = new neo4j_driver_1.Relationship(3, 1, 2, 'ACTED_IN', {}, 'rel1', 'node1', 'node2');
|
|
71
|
+
const pathSegment = new neo4j_driver_1.PathSegment(startNode, relationship, endNode);
|
|
72
|
+
const path = new neo4j_driver_1.Path(startNode, endNode, [pathSegment]);
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
74
|
+
const boltRecord = {
|
|
75
|
+
keys: ['p'],
|
|
76
|
+
get: () => path,
|
|
77
|
+
};
|
|
78
|
+
const { nodes, relationships, limitHit } = (0, extract_unique_nodes_and_relationships_1.extractUniqueNodesAndRels)([boltRecord], { nodeLimit: 1 });
|
|
79
|
+
(0, vitest_1.expect)(limitHit).toBe(true);
|
|
80
|
+
(0, vitest_1.expect)(nodes.length).toBe(1);
|
|
81
|
+
const [graphNodeStart] = nodes;
|
|
82
|
+
(0, vitest_1.expect)(graphNodeStart).toBeDefined();
|
|
83
|
+
if (graphNodeStart === undefined) {
|
|
84
|
+
throw new Error('Error in test data, got undefined');
|
|
85
|
+
}
|
|
86
|
+
(0, vitest_1.expect)(graphNodeStart.labels).toEqual(['Person']);
|
|
87
|
+
(0, vitest_1.expect)(graphNodeStart.properties).toEqual({ prop1: 'prop1' });
|
|
88
|
+
(0, vitest_1.expect)(relationships.length).toBe(0);
|
|
89
|
+
});
|
|
90
|
+
(0, vitest_1.test)('should respect the max nodes limit and not filter out dangling relations when asked to keep them', () => {
|
|
91
|
+
const startNode = new neo4j_driver_1.Node(1, ['Person'], {
|
|
92
|
+
prop1: 'prop1',
|
|
93
|
+
}, 'node1');
|
|
94
|
+
const endNode = new neo4j_driver_1.Node(2, ['Movie'], {
|
|
95
|
+
prop2: 'prop2',
|
|
96
|
+
}, 'node2');
|
|
97
|
+
const relationship = new neo4j_driver_1.Relationship(3, 1, 2, 'ACTED_IN', {}, 'rel1', 'node1', 'node2');
|
|
98
|
+
const pathSegment = new neo4j_driver_1.PathSegment(startNode, relationship, endNode);
|
|
99
|
+
const path = new neo4j_driver_1.Path(startNode, endNode, [pathSegment]);
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
101
|
+
const boltRecord = {
|
|
102
|
+
keys: ['p'],
|
|
103
|
+
get: () => path,
|
|
104
|
+
};
|
|
105
|
+
const { nodes, relationships, limitHit } = (0, extract_unique_nodes_and_relationships_1.extractUniqueNodesAndRels)([boltRecord], {
|
|
106
|
+
nodeLimit: 1,
|
|
107
|
+
keepDanglingRels: true,
|
|
108
|
+
});
|
|
109
|
+
(0, vitest_1.expect)(limitHit).toBe(true);
|
|
110
|
+
(0, vitest_1.expect)(nodes.length).toBe(1);
|
|
111
|
+
const [graphNodeStart] = nodes;
|
|
112
|
+
(0, vitest_1.expect)(graphNodeStart).toBeDefined();
|
|
113
|
+
if (graphNodeStart === undefined) {
|
|
114
|
+
throw new Error('Error in test data, got undefined');
|
|
115
|
+
}
|
|
116
|
+
(0, vitest_1.expect)(graphNodeStart.labels).toEqual(['Person']);
|
|
117
|
+
(0, vitest_1.expect)(graphNodeStart.properties).toEqual({ prop1: 'prop1' });
|
|
118
|
+
(0, vitest_1.expect)(relationships.length).toBe(1);
|
|
119
|
+
});
|
|
120
|
+
(0, vitest_1.test)('should handle empty results', () => {
|
|
121
|
+
const { nodes, relationships, limitHit } = (0, extract_unique_nodes_and_relationships_1.extractUniqueNodesAndRels)([]);
|
|
122
|
+
(0, vitest_1.expect)(limitHit).toBe(false);
|
|
123
|
+
(0, vitest_1.expect)(nodes.length).toBe(0);
|
|
124
|
+
(0, vitest_1.expect)(relationships.length).toBe(0);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=extract-unique-nodes-and-relationships.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-unique-nodes-and-relationships.test.js","sourceRoot":"","sources":["../../../../src/cypher-execution/extract-unique-nodes-and-relationships.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/src/index.d.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
export { FRIENDLY_ERROR_MESSAGES } from './connectionErrorHandler';
|
|
2
2
|
export type { ConnectionError } from './connectionErrorHandler';
|
|
3
|
+
export * from './cypher-execution/extract-unique-nodes-and-relationships';
|
|
3
4
|
export { deserializeTypeAnnotations, serializeTypeAnnotations, } from './cypher-execution/query-result';
|
|
4
5
|
export type { Neo4jType } from './cypher-execution/query-result';
|
|
5
|
-
export { getCypherTypeName } from './data-transforms/cypher-type-names';
|
|
6
|
+
export { getCypherTypeName, getPropertyTypeDisplayName, } from './data-transforms/cypher-type-names';
|
|
6
7
|
export type { CypherDataTypeName } from './data-transforms/cypher-type-names';
|
|
7
8
|
export { cypherDataToString } from './data-transforms/record-to-string';
|
|
8
9
|
export type { CypherProperty } from './data-types/cypher-data-types';
|
|
9
10
|
export type { ConnectedMetadataPoller as CypherMetadataPoller, DisconnectedMetadataPoller as EmptyMetadataPoller, MetadataPoller, } from './metadataPoller';
|
|
10
11
|
export type { Neo4jConnection, QueryResultWithLimit } from './neo4jConnection';
|
|
11
12
|
export type { Database } from './queries/databases';
|
|
13
|
+
export { graphResultTransformer } from './result-transformers/graph-result-transformer';
|
|
12
14
|
export { Neo4jSchemaPoller } from './schemaPoller';
|
|
13
15
|
export type { ConnnectionResult } from './schemaPoller';
|
|
14
16
|
export type { CypherDataType } from './types/cypher-data-types';
|
|
17
|
+
export { getVersion } from './queries/version';
|
package/dist/cjs/src/index.js
CHANGED
|
@@ -1,15 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Neo4jSchemaPoller = exports.cypherDataToString = exports.getCypherTypeName = exports.serializeTypeAnnotations = exports.deserializeTypeAnnotations = exports.FRIENDLY_ERROR_MESSAGES = void 0;
|
|
17
|
+
exports.getVersion = exports.Neo4jSchemaPoller = exports.graphResultTransformer = exports.cypherDataToString = exports.getPropertyTypeDisplayName = exports.getCypherTypeName = exports.serializeTypeAnnotations = exports.deserializeTypeAnnotations = exports.FRIENDLY_ERROR_MESSAGES = void 0;
|
|
4
18
|
var connectionErrorHandler_1 = require("./connectionErrorHandler");
|
|
5
19
|
Object.defineProperty(exports, "FRIENDLY_ERROR_MESSAGES", { enumerable: true, get: function () { return connectionErrorHandler_1.FRIENDLY_ERROR_MESSAGES; } });
|
|
20
|
+
__exportStar(require("./cypher-execution/extract-unique-nodes-and-relationships"), exports);
|
|
6
21
|
var query_result_1 = require("./cypher-execution/query-result");
|
|
7
22
|
Object.defineProperty(exports, "deserializeTypeAnnotations", { enumerable: true, get: function () { return query_result_1.deserializeTypeAnnotations; } });
|
|
8
23
|
Object.defineProperty(exports, "serializeTypeAnnotations", { enumerable: true, get: function () { return query_result_1.serializeTypeAnnotations; } });
|
|
9
24
|
var cypher_type_names_1 = require("./data-transforms/cypher-type-names");
|
|
10
25
|
Object.defineProperty(exports, "getCypherTypeName", { enumerable: true, get: function () { return cypher_type_names_1.getCypherTypeName; } });
|
|
26
|
+
Object.defineProperty(exports, "getPropertyTypeDisplayName", { enumerable: true, get: function () { return cypher_type_names_1.getPropertyTypeDisplayName; } });
|
|
11
27
|
var record_to_string_1 = require("./data-transforms/record-to-string");
|
|
12
28
|
Object.defineProperty(exports, "cypherDataToString", { enumerable: true, get: function () { return record_to_string_1.cypherDataToString; } });
|
|
29
|
+
var graph_result_transformer_1 = require("./result-transformers/graph-result-transformer");
|
|
30
|
+
Object.defineProperty(exports, "graphResultTransformer", { enumerable: true, get: function () { return graph_result_transformer_1.graphResultTransformer; } });
|
|
13
31
|
var schemaPoller_1 = require("./schemaPoller");
|
|
14
32
|
Object.defineProperty(exports, "Neo4jSchemaPoller", { enumerable: true, get: function () { return schemaPoller_1.Neo4jSchemaPoller; } });
|
|
33
|
+
var version_1 = require("./queries/version");
|
|
34
|
+
Object.defineProperty(exports, "getVersion", { enumerable: true, get: function () { return version_1.getVersion; } });
|
|
15
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mEAAmE;AAA1D,iIAAA,uBAAuB,OAAA;AAEhC,4FAA0E;AAC1E,gEAGyC;AAFvC,0HAAA,0BAA0B,OAAA;AAC1B,wHAAA,wBAAwB,OAAA;AAG1B,yEAG6C;AAF3C,sHAAA,iBAAiB,OAAA;AACjB,+HAAA,0BAA0B,OAAA;AAG5B,uEAAwE;AAA/D,sHAAA,kBAAkB,OAAA;AAS3B,2FAAwF;AAA/E,kIAAA,sBAAsB,OAAA;AAC/B,+CAAmD;AAA1C,iHAAA,iBAAiB,OAAA;AAG1B,6CAA+C;AAAtC,qGAAA,UAAU,OAAA"}
|
|
@@ -78,7 +78,6 @@ class ConnectedMetadataPoller extends MetadataPoller {
|
|
|
78
78
|
super();
|
|
79
79
|
this.connection = connection;
|
|
80
80
|
this.events = events;
|
|
81
|
-
const supportsCypherAnnotation = language_support_1._internalFeatureFlags.cypher25 || serverCypherVersions?.includes('25');
|
|
82
81
|
this.dbSchema.parameters = parameters;
|
|
83
82
|
this.databases = new QueryPoller({
|
|
84
83
|
connection,
|
|
@@ -126,9 +125,7 @@ class ConnectedMetadataPoller extends MetadataPoller {
|
|
|
126
125
|
}
|
|
127
126
|
},
|
|
128
127
|
});
|
|
129
|
-
const versions =
|
|
130
|
-
? language_support_1.allCypherVersions
|
|
131
|
-
: [undefined];
|
|
128
|
+
const versions = serverCypherVersions?.includes('25') ? language_support_1.allCypherVersions : [undefined];
|
|
132
129
|
versions.forEach((cypherVersion) => {
|
|
133
130
|
const effectiveCypherVersion = cypherVersion ?? 'CYPHER 5';
|
|
134
131
|
this.procedures[effectiveCypherVersion] = new QueryPoller({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadataPoller.js","sourceRoot":"","sources":["../../../src/metadataPoller.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"metadataPoller.js","sourceRoot":"","sources":["../../../src/metadataPoller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Driver, QueryResult } from 'neo4j-driver';
|
|
1
|
+
import { Driver, ManagedTransaction, QueryResult, RecordShape, Session } from 'neo4j-driver';
|
|
2
2
|
import { Database } from './queries/databases.js';
|
|
3
3
|
import { ExecuteQueryArgs, QueryType } from './types/sdkTypes';
|
|
4
4
|
type SdkQueryArgs = {
|
|
@@ -10,6 +10,7 @@ type RunCypherQueryArgs = {
|
|
|
10
10
|
parameters: Record<string, unknown>;
|
|
11
11
|
database?: string;
|
|
12
12
|
abortSignal?: AbortSignal;
|
|
13
|
+
implicitTransaction?: boolean;
|
|
13
14
|
};
|
|
14
15
|
export type QueryResultWithLimit = QueryResult & {
|
|
15
16
|
recordLimitHit: boolean;
|
|
@@ -20,8 +21,14 @@ export declare class Neo4jConnection {
|
|
|
20
21
|
databases: Database[];
|
|
21
22
|
driver: Driver;
|
|
22
23
|
currentDb: string | undefined;
|
|
24
|
+
serverVersion: string | undefined;
|
|
23
25
|
constructor(connectedUser: string, protocolVersion: string, databases: Database[], driver: Driver, database?: string);
|
|
24
|
-
|
|
26
|
+
evalQuery(session: Session, query: string, parameters: Record<string, unknown>, metadata: object, tx?: ManagedTransaction): Promise<{
|
|
27
|
+
records: import("neo4j-driver").Record<RecordShape, PropertyKey, RecordShape<PropertyKey, number>>[];
|
|
28
|
+
summary: import("neo4j-driver").ResultSummary<import("neo4j-driver").Integer>;
|
|
29
|
+
recordLimitHit: boolean;
|
|
30
|
+
}>;
|
|
31
|
+
runCypherQuery({ query, parameters, database, abortSignal, implicitTransaction, }: RunCypherQueryArgs): Promise<QueryResultWithLimit>;
|
|
25
32
|
runSdkQuery<T>({ query, queryConfig }: ExecuteQueryArgs<T>, { queryType, abortSignal }: SdkQueryArgs): Promise<T>;
|
|
26
33
|
healthcheck(): Promise<boolean>;
|
|
27
34
|
dispose(): void;
|
|
@@ -22,14 +22,40 @@ class Neo4jConnection {
|
|
|
22
22
|
databases;
|
|
23
23
|
driver;
|
|
24
24
|
currentDb;
|
|
25
|
+
serverVersion;
|
|
25
26
|
constructor(connectedUser, protocolVersion, databases, driver, database) {
|
|
26
27
|
this.connectedUser = connectedUser;
|
|
27
28
|
this.protocolVersion = protocolVersion;
|
|
28
29
|
this.databases = databases;
|
|
29
30
|
this.driver = driver;
|
|
30
31
|
this.currentDb = resolveInitialDatabase(databases, database);
|
|
32
|
+
this.serverVersion = undefined;
|
|
31
33
|
}
|
|
32
|
-
async
|
|
34
|
+
async evalQuery(session, query, parameters, metadata, tx) {
|
|
35
|
+
let result;
|
|
36
|
+
if (!tx) {
|
|
37
|
+
result = session.run(query, parameters, {
|
|
38
|
+
metadata,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
result = tx.run(query, parameters);
|
|
43
|
+
}
|
|
44
|
+
const records = [];
|
|
45
|
+
let recordLimitHit = false;
|
|
46
|
+
for await (const record of result) {
|
|
47
|
+
if (records.length < RECORD_LIMIT) {
|
|
48
|
+
records.push(record);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
recordLimitHit = true;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const summary = await result.summary();
|
|
56
|
+
return { records, summary, recordLimitHit };
|
|
57
|
+
}
|
|
58
|
+
async runCypherQuery({ query, parameters, database, abortSignal, implicitTransaction = false, }) {
|
|
33
59
|
// we'd like to use the drivers `executeQuery` method, but it doesn't support transaction metadata or cancelations yet
|
|
34
60
|
const session = this.driver.session({
|
|
35
61
|
database: database ?? this.currentDb,
|
|
@@ -39,29 +65,24 @@ class Neo4jConnection {
|
|
|
39
65
|
void session.close();
|
|
40
66
|
});
|
|
41
67
|
}
|
|
68
|
+
const metadata = {
|
|
69
|
+
...METADATA_BASE,
|
|
70
|
+
type: 'user-direct',
|
|
71
|
+
};
|
|
42
72
|
try {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const summary = await result.summary();
|
|
57
|
-
return { records, summary, recordLimitHit };
|
|
58
|
-
}, {
|
|
59
|
-
metadata: {
|
|
60
|
-
...METADATA_BASE,
|
|
61
|
-
type: 'user-direct',
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
return result;
|
|
73
|
+
let result;
|
|
74
|
+
if (implicitTransaction) {
|
|
75
|
+
result = this.evalQuery(session, query, parameters, metadata);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
result = session.executeWrite(async (tx) => {
|
|
79
|
+
const result = this.evalQuery(session, query, parameters, metadata, tx);
|
|
80
|
+
return result;
|
|
81
|
+
}, {
|
|
82
|
+
metadata,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return await result;
|
|
65
86
|
}
|
|
66
87
|
finally {
|
|
67
88
|
await session.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neo4jConnection.js","sourceRoot":"","sources":["../../../src/neo4jConnection.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"neo4jConnection.js","sourceRoot":"","sources":["../../../src/neo4jConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,3 @@ import { ExecuteQueryArgs } from '../types/sdkTypes';
|
|
|
5
5
|
export declare function getVersion(): ExecuteQueryArgs<{
|
|
6
6
|
serverVersion: string | undefined;
|
|
7
7
|
}>;
|
|
8
|
-
export declare function getCypherVersions(): ExecuteQueryArgs<{
|
|
9
|
-
serverCypherVersions: string[] | undefined;
|
|
10
|
-
}>;
|