@neo4j-cypher/query-tools 2.0.0-next.37 → 2.0.0-next.38
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 +12 -0
- package/dist/cjs/index.cjs +1848 -0
- package/dist/cjs/index.cjs.map +7 -0
- package/dist/esm/package.json +9 -8
- package/dist/esm/src/connectionErrorHandler.d.ts +1 -0
- package/dist/esm/src/connectionErrorHandler.js.map +1 -1
- package/dist/esm/src/cypher-execution/extract-unique-nodes-and-relationships.d.ts +1 -1
- package/dist/esm/src/cypher-execution/extract-unique-nodes-and-relationships.test.js +0 -4
- package/dist/esm/src/cypher-execution/extract-unique-nodes-and-relationships.test.js.map +1 -1
- package/dist/esm/src/cypher-execution/query-result.js +2 -9
- package/dist/esm/src/cypher-execution/query-result.js.map +1 -1
- package/dist/esm/src/data-transforms/record-to-string.js +1 -2
- package/dist/esm/src/data-transforms/record-to-string.js.map +1 -1
- package/dist/esm/src/integration-tests/pollingIntegrationTests.test.js.map +1 -1
- package/dist/esm/src/integration-tests/setupTestContainer.d.ts +1 -1
- package/dist/esm/src/integration-tests/setupTestContainer.js +1 -1
- package/dist/esm/src/integration-tests/setupTestContainer.js.map +1 -1
- package/dist/esm/src/metadataPoller.d.ts +4 -4
- package/dist/esm/src/metadataPoller.js +1 -1
- package/dist/esm/src/metadataPoller.js.map +1 -1
- package/dist/esm/src/neo4jConnection.d.ts +4 -4
- package/dist/esm/src/neo4jConnection.js +2 -2
- package/dist/esm/src/neo4jConnection.js.map +1 -1
- package/dist/esm/src/queries/dataSummary.d.ts +1 -1
- package/dist/esm/src/queries/dataSummary.js.map +1 -1
- package/dist/esm/src/queries/databases.d.ts +1 -1
- package/dist/esm/src/queries/databases.js +0 -3
- package/dist/esm/src/queries/databases.js.map +1 -1
- package/dist/esm/src/queries/functions.d.ts +1 -1
- package/dist/esm/src/queries/functions.js +1 -2
- package/dist/esm/src/queries/functions.js.map +1 -1
- package/dist/esm/src/queries/graphSchema.d.ts +1 -1
- package/dist/esm/src/queries/graphSchema.js +1 -1
- package/dist/esm/src/queries/graphSchema.js.map +1 -1
- package/dist/esm/src/queries/procedures.d.ts +1 -1
- package/dist/esm/src/queries/procedures.js +1 -2
- package/dist/esm/src/queries/procedures.js.map +1 -1
- package/dist/esm/src/queries/version.d.ts +1 -1
- package/dist/esm/src/result-transformers/graph-result-transformer.d.ts +2 -2
- package/dist/esm/src/result-transformers/graph-result-transformer.js +2 -2
- package/dist/esm/src/result-transformers/graph-result-transformer.js.map +1 -1
- package/dist/esm/src/schemaPoller.d.ts +3 -3
- package/dist/esm/src/schemaPoller.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/types/src/connectionErrorHandler.d.ts +1 -0
- package/dist/types/src/cypher-execution/extract-unique-nodes-and-relationships.d.ts +1 -1
- package/dist/types/src/integration-tests/setupTestContainer.d.ts +1 -1
- package/dist/types/src/metadataPoller.d.ts +4 -4
- package/dist/types/src/neo4jConnection.d.ts +4 -4
- package/dist/types/src/queries/dataSummary.d.ts +1 -1
- package/dist/types/src/queries/databases.d.ts +1 -1
- package/dist/types/src/queries/functions.d.ts +1 -1
- package/dist/types/src/queries/graphSchema.d.ts +1 -1
- package/dist/types/src/queries/procedures.d.ts +1 -1
- package/dist/types/src/queries/version.d.ts +1 -1
- package/dist/types/src/result-transformers/graph-result-transformer.d.ts +2 -2
- package/dist/types/src/schemaPoller.d.ts +3 -3
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -9
- package/src/connectionErrorHandler.ts +5 -2
- package/src/cypher-execution/extract-unique-nodes-and-relationships.test.ts +0 -4
- package/src/cypher-execution/extract-unique-nodes-and-relationships.ts +1 -1
- package/src/cypher-execution/query-result.ts +1 -13
- package/src/data-transforms/record-to-string.ts +2 -3
- package/src/integration-tests/pollingIntegrationTests.test.ts +6 -5
- package/src/integration-tests/setupTestContainer.ts +3 -2
- package/src/metadataPoller.ts +14 -10
- package/src/neo4jConnection.ts +6 -6
- package/src/queries/dataSummary.ts +4 -4
- package/src/queries/databases.ts +2 -4
- package/src/queries/functions.ts +6 -3
- package/src/queries/graphSchema.ts +7 -6
- package/src/queries/procedures.ts +6 -3
- package/src/queries/version.ts +1 -1
- package/src/result-transformers/graph-result-transformer.ts +4 -10
- package/src/schemaPoller.ts +4 -3
- package/tsconfig.json +4 -4
- package/tsconfig.node.json +1 -2
- package/dist/cjs/package.json +0 -46
- package/dist/cjs/src/connectionErrorHandler.d.ts +0 -10
- package/dist/cjs/src/connectionErrorHandler.js +0 -40
- package/dist/cjs/src/connectionErrorHandler.js.map +0 -1
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.d.ts +0 -33
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.js +0 -93
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.js.map +0 -1
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.test.d.ts +0 -1
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.test.js +0 -129
- package/dist/cjs/src/cypher-execution/extract-unique-nodes-and-relationships.test.js.map +0 -1
- package/dist/cjs/src/cypher-execution/query-result.d.ts +0 -11
- package/dist/cjs/src/cypher-execution/query-result.js +0 -239
- package/dist/cjs/src/cypher-execution/query-result.js.map +0 -1
- package/dist/cjs/src/data-transforms/clean-type.d.ts +0 -6
- package/dist/cjs/src/data-transforms/clean-type.js +0 -16
- package/dist/cjs/src/data-transforms/clean-type.js.map +0 -1
- package/dist/cjs/src/data-transforms/cypher-type-names.d.ts +0 -6
- package/dist/cjs/src/data-transforms/cypher-type-names.js +0 -91
- package/dist/cjs/src/data-transforms/cypher-type-names.js.map +0 -1
- package/dist/cjs/src/data-transforms/format-float.d.ts +0 -1
- package/dist/cjs/src/data-transforms/format-float.js +0 -14
- package/dist/cjs/src/data-transforms/format-float.js.map +0 -1
- package/dist/cjs/src/data-transforms/record-to-string.d.ts +0 -8
- package/dist/cjs/src/data-transforms/record-to-string.js +0 -185
- package/dist/cjs/src/data-transforms/record-to-string.js.map +0 -1
- package/dist/cjs/src/index.d.ts +0 -17
- package/dist/cjs/src/index.js +0 -33
- package/dist/cjs/src/index.js.map +0 -1
- package/dist/cjs/src/integration-tests/pollingIntegrationTests.test.d.ts +0 -1
- package/dist/cjs/src/integration-tests/pollingIntegrationTests.test.js +0 -42
- package/dist/cjs/src/integration-tests/pollingIntegrationTests.test.js.map +0 -1
- package/dist/cjs/src/integration-tests/setupTestContainer.d.ts +0 -10
- package/dist/cjs/src/integration-tests/setupTestContainer.js +0 -23
- package/dist/cjs/src/integration-tests/setupTestContainer.js.map +0 -1
- package/dist/cjs/src/metadataPoller.d.ts +0 -34
- package/dist/cjs/src/metadataPoller.js +0 -214
- package/dist/cjs/src/metadataPoller.js.map +0 -1
- package/dist/cjs/src/neo4jConnection.d.ts +0 -36
- package/dist/cjs/src/neo4jConnection.js +0 -128
- package/dist/cjs/src/neo4jConnection.js.map +0 -1
- package/dist/cjs/src/queries/dataSummary.d.ts +0 -7
- package/dist/cjs/src/queries/dataSummary.js +0 -33
- package/dist/cjs/src/queries/dataSummary.js.map +0 -1
- package/dist/cjs/src/queries/databases.d.ts +0 -28
- package/dist/cjs/src/queries/databases.js +0 -112
- package/dist/cjs/src/queries/databases.js.map +0 -1
- package/dist/cjs/src/queries/functions.d.ts +0 -14
- package/dist/cjs/src/queries/functions.js +0 -87
- package/dist/cjs/src/queries/functions.js.map +0 -1
- package/dist/cjs/src/queries/graphSchema.d.ts +0 -28
- package/dist/cjs/src/queries/graphSchema.js +0 -88
- package/dist/cjs/src/queries/graphSchema.js.map +0 -1
- package/dist/cjs/src/queries/procedures.d.ts +0 -14
- package/dist/cjs/src/queries/procedures.js +0 -105
- package/dist/cjs/src/queries/procedures.js.map +0 -1
- package/dist/cjs/src/queries/roles.d.ts +0 -11
- package/dist/cjs/src/queries/roles.js +0 -24
- package/dist/cjs/src/queries/roles.js.map +0 -1
- package/dist/cjs/src/queries/users.d.ts +0 -15
- package/dist/cjs/src/queries/users.js +0 -24
- package/dist/cjs/src/queries/users.js.map +0 -1
- package/dist/cjs/src/queries/version.d.ts +0 -7
- package/dist/cjs/src/queries/version.js +0 -32
- package/dist/cjs/src/queries/version.js.map +0 -1
- package/dist/cjs/src/result-transformers/graph-result-transformer.d.ts +0 -37
- package/dist/cjs/src/result-transformers/graph-result-transformer.js +0 -37
- package/dist/cjs/src/result-transformers/graph-result-transformer.js.map +0 -1
- package/dist/cjs/src/schemaPoller.d.ts +0 -45
- package/dist/cjs/src/schemaPoller.js +0 -199
- package/dist/cjs/src/schemaPoller.js.map +0 -1
- package/dist/cjs/src/types/cypher-data-types.d.ts +0 -41
- package/dist/cjs/src/types/cypher-data-types.js +0 -47
- package/dist/cjs/src/types/cypher-data-types.js.map +0 -1
- package/dist/cjs/src/types/sdkTypes.d.ts +0 -18
- package/dist/cjs/src/types/sdkTypes.js +0 -11
- package/dist/cjs/src/types/sdkTypes.js.map +0 -1
- package/dist/cjs/tsconfig.tsbuildinfo +0 -1
- package/dist/cjs/vitest.config.d.mts +0 -2
- package/dist/cjs/vitest.config.mjs +0 -10
- package/dist/cjs/vitest.config.mjs.map +0 -1
|
@@ -1,93 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,129 +0,0 @@
|
|
|
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_js_1 = require("./extract-unique-nodes-and-relationships.js");
|
|
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_js_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_js_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_js_1.extractUniqueNodesAndRels)([boltRecord], {
|
|
79
|
-
nodeLimit: 1,
|
|
80
|
-
});
|
|
81
|
-
(0, vitest_1.expect)(limitHit).toBe(true);
|
|
82
|
-
(0, vitest_1.expect)(nodes.length).toBe(1);
|
|
83
|
-
const [graphNodeStart] = nodes;
|
|
84
|
-
(0, vitest_1.expect)(graphNodeStart).toBeDefined();
|
|
85
|
-
if (graphNodeStart === undefined) {
|
|
86
|
-
throw new Error('Error in test data, got undefined');
|
|
87
|
-
}
|
|
88
|
-
(0, vitest_1.expect)(graphNodeStart.labels).toEqual(['Person']);
|
|
89
|
-
(0, vitest_1.expect)(graphNodeStart.properties).toEqual({ prop1: 'prop1' });
|
|
90
|
-
(0, vitest_1.expect)(relationships.length).toBe(0);
|
|
91
|
-
});
|
|
92
|
-
(0, vitest_1.test)('should respect the max nodes limit and not filter out dangling relations when asked to keep them', () => {
|
|
93
|
-
const startNode = new neo4j_driver_1.Node(1, ['Person'], {
|
|
94
|
-
prop1: 'prop1',
|
|
95
|
-
}, 'node1');
|
|
96
|
-
const endNode = new neo4j_driver_1.Node(2, ['Movie'], {
|
|
97
|
-
prop2: 'prop2',
|
|
98
|
-
}, 'node2');
|
|
99
|
-
const relationship = new neo4j_driver_1.Relationship(3, 1, 2, 'ACTED_IN', {}, 'rel1', 'node1', 'node2');
|
|
100
|
-
const pathSegment = new neo4j_driver_1.PathSegment(startNode, relationship, endNode);
|
|
101
|
-
const path = new neo4j_driver_1.Path(startNode, endNode, [pathSegment]);
|
|
102
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
103
|
-
const boltRecord = {
|
|
104
|
-
keys: ['p'],
|
|
105
|
-
get: () => path,
|
|
106
|
-
};
|
|
107
|
-
const { nodes, relationships, limitHit } = (0, extract_unique_nodes_and_relationships_js_1.extractUniqueNodesAndRels)([boltRecord], {
|
|
108
|
-
nodeLimit: 1,
|
|
109
|
-
keepDanglingRels: true,
|
|
110
|
-
});
|
|
111
|
-
(0, vitest_1.expect)(limitHit).toBe(true);
|
|
112
|
-
(0, vitest_1.expect)(nodes.length).toBe(1);
|
|
113
|
-
const [graphNodeStart] = nodes;
|
|
114
|
-
(0, vitest_1.expect)(graphNodeStart).toBeDefined();
|
|
115
|
-
if (graphNodeStart === undefined) {
|
|
116
|
-
throw new Error('Error in test data, got undefined');
|
|
117
|
-
}
|
|
118
|
-
(0, vitest_1.expect)(graphNodeStart.labels).toEqual(['Person']);
|
|
119
|
-
(0, vitest_1.expect)(graphNodeStart.properties).toEqual({ prop1: 'prop1' });
|
|
120
|
-
(0, vitest_1.expect)(relationships.length).toBe(1);
|
|
121
|
-
});
|
|
122
|
-
(0, vitest_1.test)('should handle empty results', () => {
|
|
123
|
-
const { nodes, relationships, limitHit } = (0, extract_unique_nodes_and_relationships_js_1.extractUniqueNodesAndRels)([]);
|
|
124
|
-
(0, vitest_1.expect)(limitHit).toBe(false);
|
|
125
|
-
(0, vitest_1.expect)(nodes.length).toBe(0);
|
|
126
|
-
(0, vitest_1.expect)(relationships.length).toBe(0);
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
//# sourceMappingURL=extract-unique-nodes-and-relationships.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { QueryResult, Record as Neo4jRecord } from 'neo4j-driver';
|
|
2
|
-
import { types } from 'neo4j-driver';
|
|
3
|
-
export declare const RESERVED_TYPE_PROPERTY_NAME = "transport-class";
|
|
4
|
-
export declare const ESCAPE_CHAR = "_";
|
|
5
|
-
export type Neo4jType = typeof types.Record | typeof types.Result | typeof types.ResultSummary | typeof types.Node | typeof types.PathSegment | typeof types.Path | typeof types.Relationship | typeof types.Point | typeof types.Date | typeof types.DateTime | typeof types.Duration | typeof types.LocalDateTime | typeof types.LocalTime | typeof types.Time | typeof types.Integer | typeof types.Vector | Record<string, unknown> | Neo4jType[] | undefined | null;
|
|
6
|
-
export declare function addAnnotationProp(obj: Record<string, unknown>, type: string | unknown, prop?: string): Record<string, unknown>;
|
|
7
|
-
export declare function deleteAnnotationProp(obj: Record<string, unknown>): void;
|
|
8
|
-
export declare function serializeTypeAnnotations(item: QueryResult | Neo4jRecord): Record<string, unknown>;
|
|
9
|
-
export declare function serializeTypeAnnotations(item: Neo4jType): Record<string, unknown> | null | undefined | unknown[];
|
|
10
|
-
export declare function deserializeTypeAnnotations(rawItem: Record<string, unknown>): QueryResult | Neo4jRecord;
|
|
11
|
-
export declare function deserializeTypeAnnotations(rawItem: any): any;
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ESCAPE_CHAR = exports.RESERVED_TYPE_PROPERTY_NAME = void 0;
|
|
4
|
-
exports.addAnnotationProp = addAnnotationProp;
|
|
5
|
-
exports.deleteAnnotationProp = deleteAnnotationProp;
|
|
6
|
-
exports.serializeTypeAnnotations = serializeTypeAnnotations;
|
|
7
|
-
exports.deserializeTypeAnnotations = deserializeTypeAnnotations;
|
|
8
|
-
const neo4j_driver_1 = require("neo4j-driver");
|
|
9
|
-
exports.RESERVED_TYPE_PROPERTY_NAME = 'transport-class';
|
|
10
|
-
exports.ESCAPE_CHAR = '_';
|
|
11
|
-
function addAnnotationProp(obj,
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
|
|
13
|
-
type, prop = exports.RESERVED_TYPE_PROPERTY_NAME) {
|
|
14
|
-
// The shallow copy is needed because the object type returned by the driver is not extensible.
|
|
15
|
-
let objShallowCopy = Object.entries(obj).reduce((newObj, [key, value]) => {
|
|
16
|
-
newObj[key] = value;
|
|
17
|
-
return newObj;
|
|
18
|
-
}, {});
|
|
19
|
-
// Recursively escape the reserved property if it already exists.
|
|
20
|
-
if (Object.prototype.hasOwnProperty.call(objShallowCopy, prop)) {
|
|
21
|
-
objShallowCopy = addAnnotationProp(objShallowCopy, objShallowCopy[prop], exports.ESCAPE_CHAR + prop);
|
|
22
|
-
delete objShallowCopy[prop];
|
|
23
|
-
}
|
|
24
|
-
objShallowCopy[prop] = type;
|
|
25
|
-
return objShallowCopy;
|
|
26
|
-
}
|
|
27
|
-
function deleteAnnotationProp(obj) {
|
|
28
|
-
let escapedProp = exports.RESERVED_TYPE_PROPERTY_NAME;
|
|
29
|
-
while (Object.prototype.hasOwnProperty.call(obj, escapedProp)) {
|
|
30
|
-
// On the first loop since `escapedProp` is not actually escaped, this
|
|
31
|
-
// line does nothing. In the next loops we only want to replace the
|
|
32
|
-
// first instance of the escape char.
|
|
33
|
-
obj[escapedProp.replace(exports.ESCAPE_CHAR, '')] = obj[escapedProp];
|
|
34
|
-
delete obj[escapedProp];
|
|
35
|
-
escapedProp = exports.ESCAPE_CHAR + escapedProp;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
function copyAndAnnotate(obj) {
|
|
39
|
-
return Object.keys(obj).reduce((newObj, key) => {
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
41
|
-
// @ts-ignore TypeScript complains about not being able to use `key` to
|
|
42
|
-
// index `obj`, but we know that `key` exists in `obj` since it's coming
|
|
43
|
-
// from Object.keys.
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
45
|
-
const value = obj[key];
|
|
46
|
-
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
47
|
-
newObj[key] = serializeTypeAnnotations(value);
|
|
48
|
-
return newObj;
|
|
49
|
-
}, {});
|
|
50
|
-
}
|
|
51
|
-
function serializeTypeAnnotations(item) {
|
|
52
|
-
if (Array.isArray(item)) {
|
|
53
|
-
return item.map((i) => serializeTypeAnnotations(i));
|
|
54
|
-
}
|
|
55
|
-
if (item === null || item === undefined) {
|
|
56
|
-
return item;
|
|
57
|
-
}
|
|
58
|
-
if (item instanceof neo4j_driver_1.types.Record) {
|
|
59
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
60
|
-
// @ts-ignore There are two versions of the type for Record coming from the
|
|
61
|
-
// driver.
|
|
62
|
-
const tmp = copyAndAnnotate(item);
|
|
63
|
-
return addAnnotationProp(tmp, 'Record');
|
|
64
|
-
}
|
|
65
|
-
if (item instanceof neo4j_driver_1.types.ResultSummary) {
|
|
66
|
-
const tmp = copyAndAnnotate(item);
|
|
67
|
-
return addAnnotationProp(tmp, 'ResultSummary');
|
|
68
|
-
}
|
|
69
|
-
if (item instanceof neo4j_driver_1.types.Node) {
|
|
70
|
-
const tmp = copyAndAnnotate(item);
|
|
71
|
-
return addAnnotationProp(tmp, 'Node');
|
|
72
|
-
}
|
|
73
|
-
if (item instanceof neo4j_driver_1.types.PathSegment) {
|
|
74
|
-
const tmp = copyAndAnnotate(item);
|
|
75
|
-
return addAnnotationProp(tmp, 'PathSegment');
|
|
76
|
-
}
|
|
77
|
-
if (item instanceof neo4j_driver_1.types.Path) {
|
|
78
|
-
const tmp = copyAndAnnotate(item);
|
|
79
|
-
return addAnnotationProp(tmp, 'Path');
|
|
80
|
-
}
|
|
81
|
-
if (item instanceof neo4j_driver_1.types.Relationship) {
|
|
82
|
-
const tmp = copyAndAnnotate(item);
|
|
83
|
-
return addAnnotationProp(tmp, 'Relationship');
|
|
84
|
-
}
|
|
85
|
-
if (item instanceof neo4j_driver_1.types.Point) {
|
|
86
|
-
const tmp = copyAndAnnotate(item);
|
|
87
|
-
return addAnnotationProp(tmp, 'Point');
|
|
88
|
-
}
|
|
89
|
-
if (item instanceof neo4j_driver_1.types.Date) {
|
|
90
|
-
const tmp = copyAndAnnotate(item);
|
|
91
|
-
return addAnnotationProp(tmp, 'Date');
|
|
92
|
-
}
|
|
93
|
-
if (item instanceof neo4j_driver_1.types.DateTime) {
|
|
94
|
-
const tmp = copyAndAnnotate(item);
|
|
95
|
-
return addAnnotationProp(tmp, 'DateTime');
|
|
96
|
-
}
|
|
97
|
-
if (item instanceof neo4j_driver_1.types.Duration) {
|
|
98
|
-
const tmp = copyAndAnnotate(item);
|
|
99
|
-
return addAnnotationProp(tmp, 'Duration');
|
|
100
|
-
}
|
|
101
|
-
if (item instanceof neo4j_driver_1.types.LocalDateTime) {
|
|
102
|
-
const tmp = copyAndAnnotate(item);
|
|
103
|
-
return addAnnotationProp(tmp, 'LocalDateTime');
|
|
104
|
-
}
|
|
105
|
-
if (item instanceof neo4j_driver_1.types.LocalTime) {
|
|
106
|
-
const tmp = copyAndAnnotate(item);
|
|
107
|
-
return addAnnotationProp(tmp, 'LocalTime');
|
|
108
|
-
}
|
|
109
|
-
if (item instanceof neo4j_driver_1.types.Time) {
|
|
110
|
-
const tmp = copyAndAnnotate(item);
|
|
111
|
-
return addAnnotationProp(tmp, 'Time');
|
|
112
|
-
}
|
|
113
|
-
if ((0, neo4j_driver_1.isInt)(item)) {
|
|
114
|
-
const tmp = { ...item };
|
|
115
|
-
return addAnnotationProp(tmp, 'Integer');
|
|
116
|
-
}
|
|
117
|
-
if ((0, neo4j_driver_1.isVector)(item)) {
|
|
118
|
-
const typedArray = item.asTypedArray();
|
|
119
|
-
const values = typedArray instanceof BigInt64Array
|
|
120
|
-
? Array.from(typedArray, (v) => v.toString())
|
|
121
|
-
: Array.from(typedArray);
|
|
122
|
-
return addAnnotationProp({
|
|
123
|
-
_type: item.getType(),
|
|
124
|
-
_values: values,
|
|
125
|
-
}, 'Vector');
|
|
126
|
-
}
|
|
127
|
-
if (typeof item === 'object') {
|
|
128
|
-
const tmp = copyAndAnnotate(item);
|
|
129
|
-
return addAnnotationProp(tmp, 'Object');
|
|
130
|
-
}
|
|
131
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
132
|
-
// @ts-ignore this type isn't inferred correctly
|
|
133
|
-
return item;
|
|
134
|
-
}
|
|
135
|
-
function deserializeTypeAnnotations(rawItem) {
|
|
136
|
-
if (Array.isArray(rawItem)) {
|
|
137
|
-
const mapped = rawItem.map((i) => deserializeTypeAnnotations(i));
|
|
138
|
-
return mapped;
|
|
139
|
-
}
|
|
140
|
-
if (rawItem === null ||
|
|
141
|
-
rawItem === undefined ||
|
|
142
|
-
typeof rawItem === 'boolean' ||
|
|
143
|
-
typeof rawItem === 'string' ||
|
|
144
|
-
!Object.prototype.hasOwnProperty.call(rawItem, exports.RESERVED_TYPE_PROPERTY_NAME)) {
|
|
145
|
-
return rawItem;
|
|
146
|
-
}
|
|
147
|
-
const item = { ...rawItem };
|
|
148
|
-
const className = item[exports.RESERVED_TYPE_PROPERTY_NAME];
|
|
149
|
-
deleteAnnotationProp(item);
|
|
150
|
-
switch (className) {
|
|
151
|
-
case 'Record':
|
|
152
|
-
return new neo4j_driver_1.types.Record(deserializeTypeAnnotations(item.keys), deserializeTypeAnnotations(item._fields), deserializeTypeAnnotations(item._fieldLookup));
|
|
153
|
-
case 'ResultSummary': {
|
|
154
|
-
const metadata = {
|
|
155
|
-
...item,
|
|
156
|
-
type: item.queryType,
|
|
157
|
-
db: item.database.name,
|
|
158
|
-
result_available_after: deserializeTypeAnnotations(item.resultAvailableAfter),
|
|
159
|
-
result_consumed_after: deserializeTypeAnnotations(item.resultConsumedAfter),
|
|
160
|
-
profile: item.profile === false ? null : item.profile,
|
|
161
|
-
plan: item.plan === false ? null : item.plan,
|
|
162
|
-
stream_summary: { have_records_streamed: true },
|
|
163
|
-
server: {
|
|
164
|
-
...item.server,
|
|
165
|
-
version: item.server.agent,
|
|
166
|
-
},
|
|
167
|
-
};
|
|
168
|
-
return new neo4j_driver_1.types.ResultSummary(deserializeTypeAnnotations(item.query.text), deserializeTypeAnnotations(item.query.parameters), deserializeTypeAnnotations(metadata), deserializeTypeAnnotations(item.server.protocolVersion));
|
|
169
|
-
}
|
|
170
|
-
case 'Node':
|
|
171
|
-
return new neo4j_driver_1.types.Node(deserializeTypeAnnotations(item.identity), item.labels, deserializeTypeAnnotations(item.properties), item.elementId);
|
|
172
|
-
case 'Relationship':
|
|
173
|
-
return new neo4j_driver_1.types.Relationship(deserializeTypeAnnotations(item.identity), deserializeTypeAnnotations(item.start), deserializeTypeAnnotations(item.end), item.type, deserializeTypeAnnotations(item.properties), item.elementId, item.startNodeElementId, item.endNodeElementId);
|
|
174
|
-
case 'PathSegment':
|
|
175
|
-
return new neo4j_driver_1.types.PathSegment(deserializeTypeAnnotations(item.start), deserializeTypeAnnotations(item.relationship), deserializeTypeAnnotations(item.end));
|
|
176
|
-
case 'Path': {
|
|
177
|
-
const { segments } = item;
|
|
178
|
-
return new neo4j_driver_1.types.Path(deserializeTypeAnnotations(item.start), deserializeTypeAnnotations(item.end), (Array.isArray(segments) ? segments : []).map((x) => deserializeTypeAnnotations(x)));
|
|
179
|
-
}
|
|
180
|
-
case 'Point':
|
|
181
|
-
return new neo4j_driver_1.types.Point(deserializeTypeAnnotations(item.srid), deserializeTypeAnnotations(item.x), deserializeTypeAnnotations(item.y), deserializeTypeAnnotations(item.z));
|
|
182
|
-
case 'Date':
|
|
183
|
-
return new neo4j_driver_1.types.Date(deserializeTypeAnnotations(item.year), deserializeTypeAnnotations(item.month), deserializeTypeAnnotations(item.day));
|
|
184
|
-
case 'DateTime':
|
|
185
|
-
return new neo4j_driver_1.types.DateTime(deserializeTypeAnnotations(item.year), deserializeTypeAnnotations(item.month), deserializeTypeAnnotations(item.day), deserializeTypeAnnotations(item.hour), deserializeTypeAnnotations(item.minute), deserializeTypeAnnotations(item.second), deserializeTypeAnnotations(item.nanosecond), deserializeTypeAnnotations(item.timeZoneOffsetSeconds), deserializeTypeAnnotations(item.timeZoneId));
|
|
186
|
-
case 'Duration':
|
|
187
|
-
return new neo4j_driver_1.types.Duration(deserializeTypeAnnotations(item.months), deserializeTypeAnnotations(item.days), deserializeTypeAnnotations(item.seconds), deserializeTypeAnnotations(item.nanoseconds));
|
|
188
|
-
case 'LocalDateTime':
|
|
189
|
-
return new neo4j_driver_1.types.LocalDateTime(deserializeTypeAnnotations(item.year), deserializeTypeAnnotations(item.month), deserializeTypeAnnotations(item.day), deserializeTypeAnnotations(item.hour), deserializeTypeAnnotations(item.minute), deserializeTypeAnnotations(item.second), deserializeTypeAnnotations(item.nanosecond));
|
|
190
|
-
case 'LocalTime':
|
|
191
|
-
return new neo4j_driver_1.types.LocalTime(deserializeTypeAnnotations(item.hour), deserializeTypeAnnotations(item.minute), deserializeTypeAnnotations(item.second), deserializeTypeAnnotations(item.nanosecond));
|
|
192
|
-
case 'Time':
|
|
193
|
-
return new neo4j_driver_1.types.Time(deserializeTypeAnnotations(item.hour), deserializeTypeAnnotations(item.minute), deserializeTypeAnnotations(item.second), deserializeTypeAnnotations(item.nanosecond), deserializeTypeAnnotations(item.timeZoneOffsetSeconds));
|
|
194
|
-
case 'Integer':
|
|
195
|
-
return (0, neo4j_driver_1.int)(item);
|
|
196
|
-
case 'Vector': {
|
|
197
|
-
// Reconstruct the appropriate TypedArray from serialized values
|
|
198
|
-
const type = item._type;
|
|
199
|
-
const values = item._values;
|
|
200
|
-
let typedArray;
|
|
201
|
-
switch (type) {
|
|
202
|
-
case 'INT8':
|
|
203
|
-
typedArray = new Int8Array(values);
|
|
204
|
-
break;
|
|
205
|
-
case 'INT16':
|
|
206
|
-
typedArray = new Int16Array(values);
|
|
207
|
-
break;
|
|
208
|
-
case 'INT32':
|
|
209
|
-
typedArray = new Int32Array(values);
|
|
210
|
-
break;
|
|
211
|
-
case 'INT64':
|
|
212
|
-
// For INT64, values are stored as strings to avoid BigInt serialization issues
|
|
213
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
214
|
-
typedArray = new BigInt64Array(values.map((v) => BigInt(v)));
|
|
215
|
-
break;
|
|
216
|
-
case 'FLOAT32':
|
|
217
|
-
typedArray = new Float32Array(values);
|
|
218
|
-
break;
|
|
219
|
-
case 'FLOAT64':
|
|
220
|
-
typedArray = new Float64Array(values);
|
|
221
|
-
break;
|
|
222
|
-
default:
|
|
223
|
-
// TODO test and veriy
|
|
224
|
-
// fallback to plain object handling to avoid crashing
|
|
225
|
-
// if someone were to add a new vector type, we don't want to crash the entire application
|
|
226
|
-
return item;
|
|
227
|
-
}
|
|
228
|
-
return new neo4j_driver_1.Vector(typedArray);
|
|
229
|
-
}
|
|
230
|
-
case 'Object':
|
|
231
|
-
return Object.keys(item).reduce((newObj, key) => {
|
|
232
|
-
newObj[key] = deserializeTypeAnnotations(item[key]);
|
|
233
|
-
return newObj;
|
|
234
|
-
}, {});
|
|
235
|
-
default:
|
|
236
|
-
return item;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
//# sourceMappingURL=query-result.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-result.js","sourceRoot":"","sources":["../../../../src/cypher-execution/query-result.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cleanType = cleanType;
|
|
4
|
-
exports.cleanTypeDescription = cleanTypeDescription;
|
|
5
|
-
function cleanType(type) {
|
|
6
|
-
let resultType = type;
|
|
7
|
-
if (resultType.startsWith('LIST? OF ')) {
|
|
8
|
-
resultType = resultType.replace('LIST? OF ', 'LIST<');
|
|
9
|
-
resultType += '>';
|
|
10
|
-
}
|
|
11
|
-
return resultType.replace(/\?/g, '');
|
|
12
|
-
}
|
|
13
|
-
function cleanTypeDescription(arg) {
|
|
14
|
-
return { ...arg, type: cleanType(arg.type) };
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=clean-type.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clean-type.js","sourceRoot":"","sources":["../../../../src/data-transforms/clean-type.ts"],"names":[],"mappings":";;AAAA,8BAQC;AAED,oDAEC;AAZD,SAAgB,SAAS,CAAC,IAAY;IACpC,IAAI,UAAU,GAAG,IAAI,CAAC;IAEtB,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACtD,UAAU,IAAI,GAAG,CAAC;IACpB,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,oBAAoB,CAA6B,GAAM;IACrE,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { CypherDataType, CypherProperty } from '../types/cypher-data-types.js';
|
|
2
|
-
type CypherPropertyName = 'Float' | 'null' | 'String' | 'Bigint' | 'Boolean' | `List${string}` | 'LocalTime' | 'Time' | 'Date' | 'LocalDateTime' | 'DateTime' | 'Integer' | 'Duration' | 'Point' | 'ByteArray' | 'Vector' | 'Unknown';
|
|
3
|
-
export declare const getPropertyTypeDisplayName: (val?: CypherProperty) => CypherPropertyName;
|
|
4
|
-
export type CypherDataTypeName = CypherPropertyName | 'Node' | 'Relationship' | 'Path' | 'Map' | 'Vector';
|
|
5
|
-
export declare function getCypherTypeName(val?: CypherDataType): CypherDataTypeName;
|
|
6
|
-
export {};
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPropertyTypeDisplayName = void 0;
|
|
4
|
-
exports.getCypherTypeName = getCypherTypeName;
|
|
5
|
-
const neo4j_driver_1 = require("neo4j-driver");
|
|
6
|
-
const cypher_data_types_js_1 = require("../types/cypher-data-types.js");
|
|
7
|
-
const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
8
|
-
const getPropertyTypeDisplayName = (val) => {
|
|
9
|
-
const jsType = typeof val;
|
|
10
|
-
if (jsType === 'number') {
|
|
11
|
-
return 'Float';
|
|
12
|
-
}
|
|
13
|
-
if (val === null || val === undefined) {
|
|
14
|
-
/* There's no concept of undefined in cypher, null serves both purposes */
|
|
15
|
-
return 'null';
|
|
16
|
-
}
|
|
17
|
-
// Need to duplicate this `typeof` for typescripts type inference to understand
|
|
18
|
-
if (typeof val !== 'object') {
|
|
19
|
-
const capitalized = capitalize(jsType);
|
|
20
|
-
switch (capitalized) {
|
|
21
|
-
case 'String':
|
|
22
|
-
case 'Bigint':
|
|
23
|
-
case 'Boolean':
|
|
24
|
-
return capitalized;
|
|
25
|
-
default:
|
|
26
|
-
return 'Unknown';
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (val instanceof Array) {
|
|
30
|
-
const [firstVal] = val;
|
|
31
|
-
if (firstVal !== undefined) {
|
|
32
|
-
// Lists in properties are only allowed to contain a single type so all items are the same type
|
|
33
|
-
return `List<${(0, exports.getPropertyTypeDisplayName)(firstVal)}>(${val.length})`;
|
|
34
|
-
}
|
|
35
|
-
return `List(${val.length})`;
|
|
36
|
-
}
|
|
37
|
-
if ((0, neo4j_driver_1.isLocalTime)(val)) {
|
|
38
|
-
return 'LocalTime';
|
|
39
|
-
}
|
|
40
|
-
if ((0, neo4j_driver_1.isTime)(val)) {
|
|
41
|
-
return 'Time';
|
|
42
|
-
}
|
|
43
|
-
if ((0, neo4j_driver_1.isDate)(val)) {
|
|
44
|
-
return 'Date';
|
|
45
|
-
}
|
|
46
|
-
if ((0, neo4j_driver_1.isLocalDateTime)(val)) {
|
|
47
|
-
return 'LocalDateTime';
|
|
48
|
-
}
|
|
49
|
-
if ((0, neo4j_driver_1.isDateTime)(val)) {
|
|
50
|
-
return 'DateTime';
|
|
51
|
-
}
|
|
52
|
-
if ((0, neo4j_driver_1.isInt)(val)) {
|
|
53
|
-
return 'Integer';
|
|
54
|
-
}
|
|
55
|
-
if ((0, neo4j_driver_1.isDuration)(val)) {
|
|
56
|
-
return 'Duration';
|
|
57
|
-
}
|
|
58
|
-
if ((0, neo4j_driver_1.isPoint)(val)) {
|
|
59
|
-
return 'Point';
|
|
60
|
-
}
|
|
61
|
-
if ((0, cypher_data_types_js_1.isInt8Array)(val)) {
|
|
62
|
-
return 'ByteArray';
|
|
63
|
-
}
|
|
64
|
-
if ((0, neo4j_driver_1.isVector)(val)) {
|
|
65
|
-
return 'Vector';
|
|
66
|
-
}
|
|
67
|
-
return 'Unknown';
|
|
68
|
-
};
|
|
69
|
-
exports.getPropertyTypeDisplayName = getPropertyTypeDisplayName;
|
|
70
|
-
function getCypherTypeName(val) {
|
|
71
|
-
if (Array.isArray(val)) {
|
|
72
|
-
return 'List';
|
|
73
|
-
}
|
|
74
|
-
if ((0, cypher_data_types_js_1.isCypherBasicPropertyType)(val)) {
|
|
75
|
-
return (0, exports.getPropertyTypeDisplayName)(val);
|
|
76
|
-
}
|
|
77
|
-
if ((0, neo4j_driver_1.isNode)(val)) {
|
|
78
|
-
return 'Node';
|
|
79
|
-
}
|
|
80
|
-
if ((0, neo4j_driver_1.isRelationship)(val)) {
|
|
81
|
-
return 'Relationship';
|
|
82
|
-
}
|
|
83
|
-
if ((0, neo4j_driver_1.isPath)(val)) {
|
|
84
|
-
return 'Path';
|
|
85
|
-
}
|
|
86
|
-
if ((0, neo4j_driver_1.isVector)(val)) {
|
|
87
|
-
return 'Vector';
|
|
88
|
-
}
|
|
89
|
-
return 'Map';
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=cypher-type-names.js.map
|