@ductape/sdk 0.0.4-v59 → 0.0.4-v60
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/dist/agents/agents.service.d.ts +8 -2
- package/dist/agents/agents.service.js +5 -0
- package/dist/agents/agents.service.js.map +1 -1
- package/dist/agents/types/agents.types.d.ts +2 -0
- package/dist/agents/types/agents.types.js.map +1 -1
- package/dist/agents/vector-store-adapter.js +5 -5
- package/dist/agents/vector-store-adapter.js.map +1 -1
- package/dist/api/services/appApi.service.d.ts +3 -3
- package/dist/api/services/appApi.service.js.map +1 -1
- package/dist/api/services/productsApi.service.d.ts +1 -1
- package/dist/api/services/productsApi.service.js +20 -13
- package/dist/api/services/productsApi.service.js.map +1 -1
- package/dist/api/services/secretsApi.service.d.ts +12 -0
- package/dist/api/services/secretsApi.service.js +30 -2
- package/dist/api/services/secretsApi.service.js.map +1 -1
- package/dist/api/services/workspaceApi.service.d.ts +8 -0
- package/dist/api/services/workspaceApi.service.js +20 -0
- package/dist/api/services/workspaceApi.service.js.map +1 -1
- package/dist/api/urls.d.ts +2 -0
- package/dist/api/urls.js +10 -15
- package/dist/api/urls.js.map +1 -1
- package/dist/api/utils/auth.utils.d.ts +1 -3
- package/dist/api/utils/auth.utils.js.map +1 -1
- package/dist/apps/utils/oauth-manager.js +27 -3
- package/dist/apps/utils/oauth-manager.js.map +1 -1
- package/dist/brokers/brokers.service.d.ts +8 -0
- package/dist/brokers/brokers.service.js +50 -4
- package/dist/brokers/brokers.service.js.map +1 -1
- package/dist/brokers/types/index.d.ts +26 -0
- package/dist/brokers/utils/providers/kafka.service.d.ts +7 -0
- package/dist/brokers/utils/providers/kafka.service.js +102 -23
- package/dist/brokers/utils/providers/kafka.service.js.map +1 -1
- package/dist/brokers/utils/providers/rabbitmq.service.d.ts +2 -1
- package/dist/brokers/utils/providers/rabbitmq.service.js +99 -15
- package/dist/brokers/utils/providers/rabbitmq.service.js.map +1 -1
- package/dist/database/adapters/cassandra.adapter.d.ts +1 -0
- package/dist/database/adapters/cassandra.adapter.js +100 -44
- package/dist/database/adapters/cassandra.adapter.js.map +1 -1
- package/dist/database/adapters/dynamodb.adapter.d.ts +1 -0
- package/dist/database/adapters/dynamodb.adapter.js +89 -20
- package/dist/database/adapters/dynamodb.adapter.js.map +1 -1
- package/dist/database/adapters/mongodb.adapter.d.ts +1 -0
- package/dist/database/adapters/mongodb.adapter.js +123 -45
- package/dist/database/adapters/mongodb.adapter.js.map +1 -1
- package/dist/database/adapters/mysql.adapter.d.ts +1 -0
- package/dist/database/adapters/mysql.adapter.js +125 -48
- package/dist/database/adapters/mysql.adapter.js.map +1 -1
- package/dist/database/adapters/postgresql.adapter.d.ts +5 -0
- package/dist/database/adapters/postgresql.adapter.js +151 -50
- package/dist/database/adapters/postgresql.adapter.js.map +1 -1
- package/dist/database/databases.service.d.ts +15 -1
- package/dist/database/databases.service.js +143 -2
- package/dist/database/databases.service.js.map +1 -1
- package/dist/database/operators/aggregation-builder.d.ts +11 -8
- package/dist/database/operators/aggregation-builder.js +184 -89
- package/dist/database/operators/aggregation-builder.js.map +1 -1
- package/dist/database/operators/query-builder.d.ts +23 -19
- package/dist/database/operators/query-builder.js +77 -45
- package/dist/database/operators/query-builder.js.map +1 -1
- package/dist/database/types/aggregation.interface.d.ts +21 -15
- package/dist/database/types/query.interface.d.ts +27 -21
- package/dist/database/types/write.interface.d.ts +20 -12
- package/dist/graph/adapters/arangodb.adapter.js +61 -22
- package/dist/graph/adapters/arangodb.adapter.js.map +1 -1
- package/dist/graph/adapters/memgraph.adapter.js +22 -16
- package/dist/graph/adapters/memgraph.adapter.js.map +1 -1
- package/dist/graph/adapters/neo4j.adapter.js +51 -21
- package/dist/graph/adapters/neo4j.adapter.js.map +1 -1
- package/dist/graph/adapters/neptune.adapter.js +32 -16
- package/dist/graph/adapters/neptune.adapter.js.map +1 -1
- package/dist/graph/graphs.service.d.ts +24 -2
- package/dist/graph/graphs.service.js +238 -28
- package/dist/graph/graphs.service.js.map +1 -1
- package/dist/graph/types/connection.interface.d.ts +8 -0
- package/dist/graph/types/query.interface.d.ts +21 -14
- package/dist/index.d.ts +367 -20
- package/dist/index.js +510 -48
- package/dist/index.js.map +1 -1
- package/dist/inputs/inputs.service.d.ts +1 -1
- package/dist/notifications/notifications.service.d.ts +7 -2
- package/dist/notifications/notifications.service.js +2 -0
- package/dist/notifications/notifications.service.js.map +1 -1
- package/dist/processor/services/processor.service.d.ts +5 -1
- package/dist/processor/services/processor.service.js +35 -2
- package/dist/processor/services/processor.service.js.map +1 -1
- package/dist/products/services/products.service.d.ts +76 -2
- package/dist/products/services/products.service.js +984 -27
- package/dist/products/services/products.service.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productAgent.validator.js +52 -4
- package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productGraph.validator.js +2 -0
- package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +1 -7
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productVector.validator.js +4 -4
- package/dist/products/validators/joi-validators/create.productVector.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.productGraph.validator.js +2 -0
- package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +1 -1
- package/dist/resilience/fallback.service.d.ts +4 -1
- package/dist/resilience/fallback.service.js +8 -10
- package/dist/resilience/fallback.service.js.map +1 -1
- package/dist/resilience/healthcheck.service.d.ts +6 -1
- package/dist/resilience/healthcheck.service.js +9 -0
- package/dist/resilience/healthcheck.service.js.map +1 -1
- package/dist/resilience/quota.service.d.ts +4 -1
- package/dist/resilience/quota.service.js +2 -0
- package/dist/resilience/quota.service.js.map +1 -1
- package/dist/resilience/resilience.service.d.ts +4 -1
- package/dist/resilience/resilience.service.js.map +1 -1
- package/dist/secrets/secrets.service.d.ts +11 -1
- package/dist/secrets/secrets.service.js +109 -10
- package/dist/secrets/secrets.service.js.map +1 -1
- package/dist/storage/storage.service.d.ts +4 -1
- package/dist/storage/storage.service.js +6 -1
- package/dist/storage/storage.service.js.map +1 -1
- package/dist/test/index.js +1 -3
- package/dist/test/index.js.map +1 -1
- package/dist/test/test.broker.kafka.d.ts +1 -0
- package/dist/test/test.broker.kafka.js +172 -0
- package/dist/test/test.broker.kafka.js.map +1 -0
- package/dist/test/test.broker.nats.d.ts +1 -0
- package/dist/test/test.broker.nats.js +193 -0
- package/dist/test/test.broker.nats.js.map +1 -0
- package/dist/test/test.broker.pubsub.d.ts +1 -0
- package/dist/test/test.broker.pubsub.js +171 -0
- package/dist/test/test.broker.pubsub.js.map +1 -0
- package/dist/test/test.broker.rabbitmq.d.ts +1 -0
- package/dist/test/test.broker.rabbitmq.js +164 -0
- package/dist/test/test.broker.rabbitmq.js.map +1 -0
- package/dist/test/test.broker.redis.d.ts +1 -0
- package/dist/test/test.broker.redis.js +168 -0
- package/dist/test/test.broker.redis.js.map +1 -0
- package/dist/test/test.broker.sqs.d.ts +1 -0
- package/dist/test/test.broker.sqs.js +158 -0
- package/dist/test/test.broker.sqs.js.map +1 -0
- package/dist/test/test.caches.d.ts +1 -0
- package/dist/test/test.caches.js +231 -0
- package/dist/test/test.caches.js.map +1 -0
- package/dist/test/test.database.dynamo.d.ts +1 -0
- package/dist/test/test.database.dynamo.js +265 -0
- package/dist/test/test.database.dynamo.js.map +1 -0
- package/dist/test/test.database.js +2 -2
- package/dist/test/test.database.js.map +1 -1
- package/dist/test/test.database.mongo.d.ts +1 -0
- package/dist/test/test.database.mongo.js +371 -0
- package/dist/test/test.database.mongo.js.map +1 -0
- package/dist/test/test.database.mysql.d.ts +1 -0
- package/dist/test/test.database.mysql.js +415 -0
- package/dist/test/test.database.mysql.js.map +1 -0
- package/dist/test/test.database.postgres.d.ts +1 -0
- package/dist/test/test.database.postgres.js +412 -0
- package/dist/test/test.database.postgres.js.map +1 -0
- package/dist/test/test.email.brevo.d.ts +1 -0
- package/dist/test/test.email.brevo.js +326 -0
- package/dist/test/test.email.brevo.js.map +1 -0
- package/dist/test/test.email.mailgun.d.ts +1 -0
- package/dist/test/test.email.mailgun.js +352 -0
- package/dist/test/test.email.mailgun.js.map +1 -0
- package/dist/test/test.email.postmark.d.ts +1 -0
- package/dist/test/test.email.postmark.js +316 -0
- package/dist/test/test.email.postmark.js.map +1 -0
- package/dist/test/test.email.sendgrid.d.ts +1 -0
- package/dist/test/test.email.sendgrid.js +365 -0
- package/dist/test/test.email.sendgrid.js.map +1 -0
- package/dist/test/test.email.smtp.d.ts +1 -0
- package/dist/test/test.email.smtp.js +323 -0
- package/dist/test/test.email.smtp.js.map +1 -0
- package/dist/test/test.graph.arangodb.d.ts +1 -0
- package/dist/test/test.graph.arangodb.js +358 -0
- package/dist/test/test.graph.arangodb.js.map +1 -0
- package/dist/test/test.graph.memgraph.d.ts +1 -0
- package/dist/test/test.graph.memgraph.js +320 -0
- package/dist/test/test.graph.memgraph.js.map +1 -0
- package/dist/test/test.graph.neo4j.d.ts +1 -0
- package/dist/test/test.graph.neo4j.js +218 -0
- package/dist/test/test.graph.neo4j.js.map +1 -0
- package/dist/test/test.graph.neptune.d.ts +1 -0
- package/dist/test/test.graph.neptune.js +331 -0
- package/dist/test/test.graph.neptune.js.map +1 -0
- package/dist/test/test.notifications.d.ts +1 -0
- package/dist/test/test.notifications.js +198 -0
- package/dist/test/test.notifications.js.map +1 -0
- package/dist/test/test.push.expo.d.ts +1 -0
- package/dist/test/test.push.expo.js +442 -0
- package/dist/test/test.push.expo.js.map +1 -0
- package/dist/test/test.push.firebase.d.ts +1 -0
- package/dist/test/test.push.firebase.js +409 -0
- package/dist/test/test.push.firebase.js.map +1 -0
- package/dist/test/test.session.d.ts +1 -0
- package/dist/test/test.session.js +299 -0
- package/dist/test/test.session.js.map +1 -0
- package/dist/test/test.sms.nexmo.d.ts +1 -0
- package/dist/test/test.sms.nexmo.js +278 -0
- package/dist/test/test.sms.nexmo.js.map +1 -0
- package/dist/test/test.sms.twilio.d.ts +1 -0
- package/dist/test/test.sms.twilio.js +275 -0
- package/dist/test/test.sms.twilio.js.map +1 -0
- package/dist/test/test.storage.js +169 -299
- package/dist/test/test.storage.js.map +1 -1
- package/dist/test/test.vector.pinecone.d.ts +1 -0
- package/dist/test/test.vector.pinecone.js +238 -0
- package/dist/test/test.vector.pinecone.js.map +1 -0
- package/dist/test/test.vector.qdrant.d.ts +1 -0
- package/dist/test/test.vector.qdrant.js +307 -0
- package/dist/test/test.vector.qdrant.js.map +1 -0
- package/dist/test/test.vector.weaviate.d.ts +1 -0
- package/dist/test/test.vector.weaviate.js +325 -0
- package/dist/test/test.vector.weaviate.js.map +1 -0
- package/dist/types/appBuilder.types.d.ts +6 -2
- package/dist/types/enums.d.ts +2 -0
- package/dist/types/enums.js +2 -0
- package/dist/types/enums.js.map +1 -1
- package/dist/types/index.types.d.ts +2 -4
- package/dist/types/index.types.js +0 -1
- package/dist/types/index.types.js.map +1 -1
- package/dist/types/processor.types.d.ts +18 -0
- package/dist/types/productsBuilder.types.d.ts +19 -15
- package/dist/types/productsBuilder.types.js.map +1 -1
- package/dist/types/requests.types.d.ts +2 -0
- package/dist/utils/index.js +23 -4
- package/dist/utils/index.js.map +1 -1
- package/dist/vector/adapters/base.adapter.d.ts +1 -1
- package/dist/vector/adapters/memory.adapter.d.ts +1 -1
- package/dist/vector/adapters/memory.adapter.js +1 -1
- package/dist/vector/adapters/memory.adapter.js.map +1 -1
- package/dist/vector/adapters/pinecone.adapter.d.ts +1 -1
- package/dist/vector/adapters/pinecone.adapter.js +1 -1
- package/dist/vector/adapters/pinecone.adapter.js.map +1 -1
- package/dist/vector/adapters/qdrant.adapter.d.ts +1 -1
- package/dist/vector/adapters/qdrant.adapter.js +1 -1
- package/dist/vector/adapters/qdrant.adapter.js.map +1 -1
- package/dist/vector/adapters/weaviate.adapter.d.ts +1 -1
- package/dist/vector/adapters/weaviate.adapter.js +1 -1
- package/dist/vector/adapters/weaviate.adapter.js.map +1 -1
- package/dist/vector/index.d.ts +2 -2
- package/dist/vector/index.js +2 -2
- package/dist/vector/utils/vector-error.js +0 -1
- package/dist/vector/utils/vector-error.js.map +1 -1
- package/dist/vector/vector-database.service.d.ts +9 -6
- package/dist/vector/vector-database.service.js +7 -6
- package/dist/vector/vector-database.service.js.map +1 -1
- package/dist/vector/vector.service.d.ts +3 -3
- package/dist/vector/vector.service.js +12 -9
- package/dist/vector/vector.service.js.map +1 -1
- package/dist/workflows/workflow-executor.d.ts +4 -1
- package/dist/workflows/workflow-executor.js +10 -2
- package/dist/workflows/workflow-executor.js.map +1 -1
- package/dist/workflows/workflows.service.d.ts +8 -2
- package/dist/workflows/workflows.service.js +66 -41
- package/dist/workflows/workflows.service.js.map +1 -1
- package/package.json +29 -4
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const index_1 = __importDefault(require("./index"));
|
|
7
|
+
/**
|
|
8
|
+
* Memgraph Graph Database Tests
|
|
9
|
+
*
|
|
10
|
+
* Comprehensive tests for Memgraph graph database operations:
|
|
11
|
+
* - Graph database creation/registration
|
|
12
|
+
* - Connection management
|
|
13
|
+
* - Node operations (create, find, update, delete)
|
|
14
|
+
* - Relationship operations (create, find, delete)
|
|
15
|
+
* - Graph traversal and neighborhood queries
|
|
16
|
+
* - Cypher queries (Memgraph is Cypher-compatible)
|
|
17
|
+
* - Transactions
|
|
18
|
+
* - Statistics
|
|
19
|
+
* - Memgraph-specific features (in-memory performance, streaming)
|
|
20
|
+
*/
|
|
21
|
+
const { graphs } = index_1.default;
|
|
22
|
+
// Start timing
|
|
23
|
+
const startTime = performance.now();
|
|
24
|
+
console.log(`[${new Date().toISOString()}] Starting Memgraph graph database operations...`);
|
|
25
|
+
async function runMemgraphTests() {
|
|
26
|
+
try {
|
|
27
|
+
// ==================== CREATE GRAPH DATABASE ====================
|
|
28
|
+
console.log('\n--- Creating Graph Database Configuration ---');
|
|
29
|
+
const createStart = performance.now();
|
|
30
|
+
// Create/register a Memgraph graph database configuration
|
|
31
|
+
await graphs.create({
|
|
32
|
+
name: 'Memgraph Enterprise Graph',
|
|
33
|
+
tag: 'memgraph-db',
|
|
34
|
+
type: 'memgraph',
|
|
35
|
+
description: 'In-memory graph database for high-performance operations',
|
|
36
|
+
envs: [
|
|
37
|
+
{
|
|
38
|
+
slug: 'prd',
|
|
39
|
+
connection_url: process.env.MEMGRAPH_URI || 'bolt://localhost:7687',
|
|
40
|
+
username: process.env.MEMGRAPH_USER || 'memgraph',
|
|
41
|
+
password: process.env.MEMGRAPH_PASSWORD || 'password',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
slug: 'dev',
|
|
45
|
+
connection_url: process.env.MEMGRAPH_DEV_URI || 'bolt://localhost:7688',
|
|
46
|
+
username: process.env.MEMGRAPH_USER || 'memgraph',
|
|
47
|
+
password: process.env.MEMGRAPH_PASSWORD || 'password',
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
}, 'ductape:rematch');
|
|
51
|
+
console.log(`[TIMING] Create graph config: ${(performance.now() - createStart).toFixed(2)}ms`);
|
|
52
|
+
console.log('Graph database configuration created successfully');
|
|
53
|
+
// ==================== CONNECT ====================
|
|
54
|
+
console.log('\n--- Connecting to Memgraph ---');
|
|
55
|
+
const connectStart = performance.now();
|
|
56
|
+
const connection = await graphs.connect({
|
|
57
|
+
env: 'prd',
|
|
58
|
+
product: 'ductape:rematch',
|
|
59
|
+
graph: 'memgraph-db',
|
|
60
|
+
});
|
|
61
|
+
console.log(`[TIMING] Connect: ${(performance.now() - connectStart).toFixed(2)}ms`);
|
|
62
|
+
console.log('Memgraph connection established:', connection);
|
|
63
|
+
// ==================== NODE OPERATIONS ====================
|
|
64
|
+
console.log('\n--- Creating Nodes ---');
|
|
65
|
+
// Create Person nodes
|
|
66
|
+
const createNodeStart = performance.now();
|
|
67
|
+
const alice = await graphs.createNode({
|
|
68
|
+
labels: ['Person'],
|
|
69
|
+
properties: {
|
|
70
|
+
name: 'Alice',
|
|
71
|
+
email: 'alice@example.com',
|
|
72
|
+
age: 28,
|
|
73
|
+
department: 'Engineering',
|
|
74
|
+
created_at: new Date().toISOString(),
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
console.log(`[TIMING] Create node (Alice): ${(performance.now() - createNodeStart).toFixed(2)}ms`);
|
|
78
|
+
console.log('Created Alice:', JSON.stringify(alice, null, 2));
|
|
79
|
+
const bobStart = performance.now();
|
|
80
|
+
const bob = await graphs.createNode({
|
|
81
|
+
labels: ['Person'],
|
|
82
|
+
properties: {
|
|
83
|
+
name: 'Bob',
|
|
84
|
+
email: 'bob@example.com',
|
|
85
|
+
age: 32,
|
|
86
|
+
department: 'Marketing',
|
|
87
|
+
created_at: new Date().toISOString(),
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
console.log(`[TIMING] Create node (Bob): ${(performance.now() - bobStart).toFixed(2)}ms`);
|
|
91
|
+
console.log('Created Bob:', JSON.stringify(bob, null, 2));
|
|
92
|
+
// Create Company node
|
|
93
|
+
const companyStart = performance.now();
|
|
94
|
+
const techCorp = await graphs.createNode({
|
|
95
|
+
labels: ['Company'],
|
|
96
|
+
properties: {
|
|
97
|
+
name: 'TechCorp',
|
|
98
|
+
industry: 'Technology',
|
|
99
|
+
employees: 500,
|
|
100
|
+
founded: 2010,
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
console.log(`[TIMING] Create node (TechCorp): ${(performance.now() - companyStart).toFixed(2)}ms`);
|
|
104
|
+
console.log('Created TechCorp:', JSON.stringify(techCorp, null, 2));
|
|
105
|
+
// Create Project node
|
|
106
|
+
const projectStart = performance.now();
|
|
107
|
+
const projectX = await graphs.createNode({
|
|
108
|
+
labels: ['Project'],
|
|
109
|
+
properties: {
|
|
110
|
+
name: 'Project X',
|
|
111
|
+
status: 'active',
|
|
112
|
+
budget: 100000,
|
|
113
|
+
start_date: '2024-01-01',
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
console.log(`[TIMING] Create node (Project X): ${(performance.now() - projectStart).toFixed(2)}ms`);
|
|
117
|
+
console.log('Created Project X:', JSON.stringify(projectX, null, 2));
|
|
118
|
+
// ==================== RELATIONSHIP OPERATIONS ====================
|
|
119
|
+
console.log('\n--- Creating Relationships ---');
|
|
120
|
+
// Create FRIENDS_WITH relationship
|
|
121
|
+
const friendshipStart = performance.now();
|
|
122
|
+
const friendship = await graphs.createRelationship({
|
|
123
|
+
type: 'FRIENDS_WITH',
|
|
124
|
+
startNodeId: alice.node.id,
|
|
125
|
+
endNodeId: bob.node.id,
|
|
126
|
+
properties: {
|
|
127
|
+
since: new Date().toISOString(),
|
|
128
|
+
strength: 'strong',
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
console.log(`[TIMING] Create FRIENDS_WITH: ${(performance.now() - friendshipStart).toFixed(2)}ms`);
|
|
132
|
+
console.log('Created friendship:', JSON.stringify(friendship, null, 2));
|
|
133
|
+
// Create WORKS_AT relationships
|
|
134
|
+
const worksAtStart = performance.now();
|
|
135
|
+
const aliceWorksAt = await graphs.createRelationship({
|
|
136
|
+
type: 'WORKS_AT',
|
|
137
|
+
startNodeId: alice.node.id,
|
|
138
|
+
endNodeId: techCorp.node.id,
|
|
139
|
+
properties: {
|
|
140
|
+
role: 'Senior Engineer',
|
|
141
|
+
since: '2020-01-15',
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
console.log(`[TIMING] Create WORKS_AT (Alice): ${(performance.now() - worksAtStart).toFixed(2)}ms`);
|
|
145
|
+
const bobWorksAtStart = performance.now();
|
|
146
|
+
const bobWorksAt = await graphs.createRelationship({
|
|
147
|
+
type: 'WORKS_AT',
|
|
148
|
+
startNodeId: bob.node.id,
|
|
149
|
+
endNodeId: techCorp.node.id,
|
|
150
|
+
properties: {
|
|
151
|
+
role: 'Marketing Manager',
|
|
152
|
+
since: '2019-06-01',
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
console.log(`[TIMING] Create WORKS_AT (Bob): ${(performance.now() - bobWorksAtStart).toFixed(2)}ms`);
|
|
156
|
+
// Create WORKS_ON relationships
|
|
157
|
+
const worksOnStart = performance.now();
|
|
158
|
+
await graphs.createRelationship({
|
|
159
|
+
type: 'WORKS_ON',
|
|
160
|
+
startNodeId: alice.node.id,
|
|
161
|
+
endNodeId: projectX.node.id,
|
|
162
|
+
properties: {
|
|
163
|
+
role: 'Lead Developer',
|
|
164
|
+
allocation: 0.8,
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
console.log(`[TIMING] Create WORKS_ON: ${(performance.now() - worksOnStart).toFixed(2)}ms`);
|
|
168
|
+
// ==================== QUERY OPERATIONS ====================
|
|
169
|
+
console.log('\n--- Finding Nodes ---');
|
|
170
|
+
// Find all Person nodes
|
|
171
|
+
const findStart = performance.now();
|
|
172
|
+
const persons = await graphs.findNodes({
|
|
173
|
+
labels: ['Person'],
|
|
174
|
+
limit: 10,
|
|
175
|
+
});
|
|
176
|
+
console.log(`[TIMING] Find nodes: ${(performance.now() - findStart).toFixed(2)}ms`);
|
|
177
|
+
console.log('Found persons:', JSON.stringify(persons, null, 2));
|
|
178
|
+
// Find nodes with properties filter
|
|
179
|
+
const findWithPropsStart = performance.now();
|
|
180
|
+
const engineers = await graphs.findNodes({
|
|
181
|
+
labels: ['Person'],
|
|
182
|
+
properties: { department: 'Engineering' },
|
|
183
|
+
limit: 10,
|
|
184
|
+
});
|
|
185
|
+
console.log(`[TIMING] Find nodes with props: ${(performance.now() - findWithPropsStart).toFixed(2)}ms`);
|
|
186
|
+
console.log('Found engineers:', JSON.stringify(engineers, null, 2));
|
|
187
|
+
console.log('\n--- Finding Relationships ---');
|
|
188
|
+
// Find all relationships
|
|
189
|
+
const findRelStart = performance.now();
|
|
190
|
+
const allRels = await graphs.findRelationships({
|
|
191
|
+
types: ['WORKS_AT'],
|
|
192
|
+
limit: 10,
|
|
193
|
+
});
|
|
194
|
+
console.log(`[TIMING] Find relationships: ${(performance.now() - findRelStart).toFixed(2)}ms`);
|
|
195
|
+
console.log('Found WORKS_AT relationships:', JSON.stringify(allRels, null, 2));
|
|
196
|
+
// ==================== TRAVERSAL OPERATIONS ====================
|
|
197
|
+
console.log('\n--- Graph Traversal ---');
|
|
198
|
+
// Traverse from Alice
|
|
199
|
+
const traverseStart = performance.now();
|
|
200
|
+
const traversalResult = await graphs.traverse({
|
|
201
|
+
startNodeId: alice.node.id,
|
|
202
|
+
direction: 'outgoing',
|
|
203
|
+
maxDepth: 3,
|
|
204
|
+
relationshipTypes: ['WORKS_AT', 'WORKS_ON', 'FRIENDS_WITH'],
|
|
205
|
+
});
|
|
206
|
+
console.log(`[TIMING] Traverse: ${(performance.now() - traverseStart).toFixed(2)}ms`);
|
|
207
|
+
console.log('Traversal result:', JSON.stringify(traversalResult, null, 2));
|
|
208
|
+
// Get neighborhood
|
|
209
|
+
console.log('\n--- Get Neighborhood ---');
|
|
210
|
+
const neighborStart = performance.now();
|
|
211
|
+
const neighborhood = await graphs.getNeighborhood({
|
|
212
|
+
nodeId: alice.node.id,
|
|
213
|
+
depth: 2,
|
|
214
|
+
});
|
|
215
|
+
console.log(`[TIMING] Get neighborhood: ${(performance.now() - neighborStart).toFixed(2)}ms`);
|
|
216
|
+
console.log('Neighborhood:', JSON.stringify(neighborhood, null, 2));
|
|
217
|
+
// ==================== COUNTING ====================
|
|
218
|
+
console.log('\n--- Counting ---');
|
|
219
|
+
const countStart = performance.now();
|
|
220
|
+
const nodeCount = await graphs.countNodes(['Person']);
|
|
221
|
+
console.log(`[TIMING] Count nodes: ${(performance.now() - countStart).toFixed(2)}ms`);
|
|
222
|
+
console.log('Person count:', nodeCount);
|
|
223
|
+
const relCountStart = performance.now();
|
|
224
|
+
const relCount = await graphs.countRelationships(['WORKS_AT']);
|
|
225
|
+
console.log(`[TIMING] Count relationships: ${(performance.now() - relCountStart).toFixed(2)}ms`);
|
|
226
|
+
console.log('WORKS_AT count:', relCount);
|
|
227
|
+
// ==================== STATISTICS ====================
|
|
228
|
+
console.log('\n--- Graph Statistics ---');
|
|
229
|
+
const statsStart = performance.now();
|
|
230
|
+
const stats = await graphs.getStatistics();
|
|
231
|
+
console.log(`[TIMING] Get statistics: ${(performance.now() - statsStart).toFixed(2)}ms`);
|
|
232
|
+
console.log('Graph statistics:', JSON.stringify(stats, null, 2));
|
|
233
|
+
// ==================== UPDATE OPERATIONS ====================
|
|
234
|
+
console.log('\n--- Updating Node ---');
|
|
235
|
+
const updateStart = performance.now();
|
|
236
|
+
const updatedAlice = await graphs.updateNode({
|
|
237
|
+
id: alice.node.id,
|
|
238
|
+
properties: {
|
|
239
|
+
age: 29,
|
|
240
|
+
title: 'Staff Engineer',
|
|
241
|
+
updated_at: new Date().toISOString(),
|
|
242
|
+
},
|
|
243
|
+
});
|
|
244
|
+
console.log(`[TIMING] Update node: ${(performance.now() - updateStart).toFixed(2)}ms`);
|
|
245
|
+
console.log('Updated Alice:', JSON.stringify(updatedAlice, null, 2));
|
|
246
|
+
// ==================== RAW CYPHER QUERIES ====================
|
|
247
|
+
console.log('\n--- Raw Cypher Query ---');
|
|
248
|
+
// Memgraph uses Cypher query language (compatible with Neo4j)
|
|
249
|
+
const queryStart = performance.now();
|
|
250
|
+
const queryResult = await graphs.query('MATCH (p:Person)-[:WORKS_AT]->(c:Company) WHERE c.name = $companyName RETURN p.name AS employee, p.department AS dept', { companyName: 'TechCorp' });
|
|
251
|
+
console.log(`[TIMING] Raw query: ${(performance.now() - queryStart).toFixed(2)}ms`);
|
|
252
|
+
console.log('Query result:', JSON.stringify(queryResult, null, 2));
|
|
253
|
+
// Path finding query
|
|
254
|
+
console.log('\n--- Path Finding Query ---');
|
|
255
|
+
const pathStart = performance.now();
|
|
256
|
+
const pathResult = await graphs.query('MATCH path = (a:Person {name: $name1})-[*1..3]-(b:Person {name: $name2}) RETURN path', { name1: 'Alice', name2: 'Bob' });
|
|
257
|
+
console.log(`[TIMING] Path query: ${(performance.now() - pathStart).toFixed(2)}ms`);
|
|
258
|
+
console.log('Path result:', JSON.stringify(pathResult, null, 2));
|
|
259
|
+
// ==================== TRANSACTIONS ====================
|
|
260
|
+
console.log('\n--- Transaction Test ---');
|
|
261
|
+
const txStart = performance.now();
|
|
262
|
+
try {
|
|
263
|
+
const txResult = await graphs.executeTransaction(async (tx) => {
|
|
264
|
+
const charlie = await graphs.createNode({
|
|
265
|
+
labels: ['Person'],
|
|
266
|
+
properties: {
|
|
267
|
+
name: 'Charlie',
|
|
268
|
+
email: 'charlie@example.com',
|
|
269
|
+
age: 25,
|
|
270
|
+
department: 'Sales',
|
|
271
|
+
},
|
|
272
|
+
}, tx);
|
|
273
|
+
await graphs.createRelationship({
|
|
274
|
+
type: 'FRIENDS_WITH',
|
|
275
|
+
startNodeId: charlie.node.id,
|
|
276
|
+
endNodeId: alice.node.id,
|
|
277
|
+
properties: {
|
|
278
|
+
since: new Date().toISOString(),
|
|
279
|
+
},
|
|
280
|
+
}, tx);
|
|
281
|
+
await graphs.createRelationship({
|
|
282
|
+
type: 'WORKS_AT',
|
|
283
|
+
startNodeId: charlie.node.id,
|
|
284
|
+
endNodeId: techCorp.node.id,
|
|
285
|
+
properties: {
|
|
286
|
+
role: 'Sales Rep',
|
|
287
|
+
since: '2024-01-01',
|
|
288
|
+
},
|
|
289
|
+
}, tx);
|
|
290
|
+
return charlie;
|
|
291
|
+
});
|
|
292
|
+
console.log(`[TIMING] Transaction: ${(performance.now() - txStart).toFixed(2)}ms`);
|
|
293
|
+
console.log('Transaction result:', JSON.stringify(txResult, null, 2));
|
|
294
|
+
// Clean up Charlie
|
|
295
|
+
await graphs.deleteNode({ id: txResult.node.id, detachRelationships: true });
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
console.log('Transaction test skipped or failed:', error);
|
|
299
|
+
}
|
|
300
|
+
// ==================== CLEANUP ====================
|
|
301
|
+
console.log('\n--- Cleanup ---');
|
|
302
|
+
const cleanupStart = performance.now();
|
|
303
|
+
// Delete relationships first (or use detachRelationships)
|
|
304
|
+
await graphs.deleteNode({ id: projectX.node.id, detachRelationships: true });
|
|
305
|
+
await graphs.deleteNode({ id: techCorp.node.id, detachRelationships: true });
|
|
306
|
+
await graphs.deleteNode({ id: alice.node.id, detachRelationships: true });
|
|
307
|
+
await graphs.deleteNode({ id: bob.node.id, detachRelationships: true });
|
|
308
|
+
console.log(`[TIMING] Cleanup: ${(performance.now() - cleanupStart).toFixed(2)}ms`);
|
|
309
|
+
console.log('Test nodes deleted.');
|
|
310
|
+
// ==================== SUMMARY ====================
|
|
311
|
+
const totalTime = performance.now() - startTime;
|
|
312
|
+
console.log(`\n[TIMING SUMMARY]`);
|
|
313
|
+
console.log(` Total time: ${totalTime.toFixed(2)}ms`);
|
|
314
|
+
}
|
|
315
|
+
catch (err) {
|
|
316
|
+
console.error('Error in Memgraph operations:', err);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
runMemgraphTests();
|
|
320
|
+
//# sourceMappingURL=test.graph.memgraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.graph.memgraph.js","sourceRoot":"","sources":["../../src/test/test.graph.memgraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const index_1 = __importDefault(require("./index"));
|
|
7
|
+
/**
|
|
8
|
+
* Neo4j Graph Database Tests
|
|
9
|
+
*
|
|
10
|
+
* Comprehensive tests for Neo4j graph database operations:
|
|
11
|
+
* - Graph database creation/registration
|
|
12
|
+
* - Connection management
|
|
13
|
+
* - Node operations (create, find, update, delete)
|
|
14
|
+
* - Relationship operations (create, find, delete)
|
|
15
|
+
* - Graph traversal and neighborhood queries
|
|
16
|
+
* - Cypher queries
|
|
17
|
+
* - Transactions
|
|
18
|
+
* - Statistics
|
|
19
|
+
*/
|
|
20
|
+
const { graphs } = index_1.default;
|
|
21
|
+
// Start timing
|
|
22
|
+
const startTime = performance.now();
|
|
23
|
+
console.log(`[${new Date().toISOString()}] Starting Neo4j graph database operations...`);
|
|
24
|
+
async function runNeo4jTests() {
|
|
25
|
+
try {
|
|
26
|
+
// ==================== CREATE GRAPH DATABASE ====================
|
|
27
|
+
console.log('\n--- Creating Graph Database Configuration ---');
|
|
28
|
+
const createStart = performance.now();
|
|
29
|
+
// Create/register a Neo4j graph database configuration
|
|
30
|
+
await graphs.create({
|
|
31
|
+
name: 'Neo4j Social Graph',
|
|
32
|
+
tag: 'neo4j-graph',
|
|
33
|
+
type: 'neo4j',
|
|
34
|
+
description: 'Social network graph for testing Neo4j operations',
|
|
35
|
+
envs: [
|
|
36
|
+
{
|
|
37
|
+
slug: 'prd',
|
|
38
|
+
connection_url: process.env.NEO4J_URI || 'bolt://localhost:7687',
|
|
39
|
+
username: process.env.NEO4J_USER || 'neo4j',
|
|
40
|
+
password: process.env.NEO4J_PASSWORD || 'password',
|
|
41
|
+
database: process.env.NEO4J_DATABASE || 'neo4j',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
slug: 'dev',
|
|
45
|
+
connection_url: process.env.NEO4J_DEV_URI || 'bolt://localhost:7688',
|
|
46
|
+
username: process.env.NEO4J_USER || 'neo4j',
|
|
47
|
+
password: process.env.NEO4J_PASSWORD || 'password',
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
}, 'ductape:rematch');
|
|
51
|
+
console.log(`[TIMING] Create graph config: ${(performance.now() - createStart).toFixed(2)}ms`);
|
|
52
|
+
console.log('Graph database configuration created successfully');
|
|
53
|
+
// ==================== CONNECT ====================
|
|
54
|
+
console.log('\n--- Connecting to Neo4j ---');
|
|
55
|
+
const connectStart = performance.now();
|
|
56
|
+
const connection = await graphs.connect({
|
|
57
|
+
env: 'prd',
|
|
58
|
+
product: 'ductape:rematch',
|
|
59
|
+
graph: 'neo4j-graph',
|
|
60
|
+
});
|
|
61
|
+
console.log(`[TIMING] Connect: ${(performance.now() - connectStart).toFixed(2)}ms`);
|
|
62
|
+
console.log('Graph connection established:', connection);
|
|
63
|
+
// Test creating nodes
|
|
64
|
+
console.log('\n--- Creating Nodes ---');
|
|
65
|
+
const createNodeStart = performance.now();
|
|
66
|
+
const alice = await graphs.createNode({
|
|
67
|
+
labels: ['Person'],
|
|
68
|
+
properties: {
|
|
69
|
+
name: 'Alice',
|
|
70
|
+
email: 'alice@example.com',
|
|
71
|
+
age: 28,
|
|
72
|
+
created_at: new Date().toISOString(),
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
console.log(`[TIMING] Create node (Alice): ${(performance.now() - createNodeStart).toFixed(2)}ms`);
|
|
76
|
+
console.log('Created Alice:', JSON.stringify(alice, null, 2));
|
|
77
|
+
const bobStart = performance.now();
|
|
78
|
+
const bob = await graphs.createNode({
|
|
79
|
+
labels: ['Person'],
|
|
80
|
+
properties: {
|
|
81
|
+
name: 'Bob',
|
|
82
|
+
email: 'bob@example.com',
|
|
83
|
+
age: 32,
|
|
84
|
+
created_at: new Date().toISOString(),
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
console.log(`[TIMING] Create node (Bob): ${(performance.now() - bobStart).toFixed(2)}ms`);
|
|
88
|
+
console.log('Created Bob:', JSON.stringify(bob, null, 2));
|
|
89
|
+
// Test creating relationships
|
|
90
|
+
console.log('\n--- Creating Relationships ---');
|
|
91
|
+
const relStart = performance.now();
|
|
92
|
+
const friendship = await graphs.createRelationship({
|
|
93
|
+
type: 'FRIENDS_WITH',
|
|
94
|
+
startNodeId: alice.node.id,
|
|
95
|
+
endNodeId: bob.node.id,
|
|
96
|
+
properties: {
|
|
97
|
+
since: new Date().toISOString(),
|
|
98
|
+
strength: 'strong',
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
console.log(`[TIMING] Create relationship: ${(performance.now() - relStart).toFixed(2)}ms`);
|
|
102
|
+
console.log('Created friendship:', JSON.stringify(friendship, null, 2));
|
|
103
|
+
// Test finding nodes
|
|
104
|
+
console.log('\n--- Finding Nodes ---');
|
|
105
|
+
const findStart = performance.now();
|
|
106
|
+
const persons = await graphs.findNodes({
|
|
107
|
+
labels: ['Person'],
|
|
108
|
+
limit: 10,
|
|
109
|
+
});
|
|
110
|
+
console.log(`[TIMING] Find nodes: ${(performance.now() - findStart).toFixed(2)}ms`);
|
|
111
|
+
console.log('Found persons:', JSON.stringify(persons, null, 2));
|
|
112
|
+
// Test finding relationships
|
|
113
|
+
console.log('\n--- Finding Relationships ---');
|
|
114
|
+
const findRelStart = performance.now();
|
|
115
|
+
const friendships = await graphs.findRelationships({
|
|
116
|
+
types: ['FRIENDS_WITH'],
|
|
117
|
+
limit: 10,
|
|
118
|
+
});
|
|
119
|
+
console.log(`[TIMING] Find relationships: ${(performance.now() - findRelStart).toFixed(2)}ms`);
|
|
120
|
+
console.log('Found friendships:', JSON.stringify(friendships, null, 2));
|
|
121
|
+
// Test traversal
|
|
122
|
+
console.log('\n--- Graph Traversal ---');
|
|
123
|
+
const traverseStart = performance.now();
|
|
124
|
+
const traversalResult = await graphs.traverse({
|
|
125
|
+
startNodeId: alice.node.id,
|
|
126
|
+
direction: 'outgoing',
|
|
127
|
+
maxDepth: 2,
|
|
128
|
+
relationshipTypes: ['FRIENDS_WITH'],
|
|
129
|
+
});
|
|
130
|
+
console.log(`[TIMING] Traverse: ${(performance.now() - traverseStart).toFixed(2)}ms`);
|
|
131
|
+
console.log('Traversal result:', JSON.stringify(traversalResult, null, 2));
|
|
132
|
+
// Test neighborhood
|
|
133
|
+
console.log('\n--- Get Neighborhood ---');
|
|
134
|
+
const neighborStart = performance.now();
|
|
135
|
+
const neighborhood = await graphs.getNeighborhood({
|
|
136
|
+
nodeId: alice.node.id,
|
|
137
|
+
depth: 1,
|
|
138
|
+
});
|
|
139
|
+
console.log(`[TIMING] Get neighborhood: ${(performance.now() - neighborStart).toFixed(2)}ms`);
|
|
140
|
+
console.log('Neighborhood:', JSON.stringify(neighborhood, null, 2));
|
|
141
|
+
// Test counting
|
|
142
|
+
console.log('\n--- Counting ---');
|
|
143
|
+
const countStart = performance.now();
|
|
144
|
+
const nodeCount = await graphs.countNodes(['Person']);
|
|
145
|
+
console.log(`[TIMING] Count nodes: ${(performance.now() - countStart).toFixed(2)}ms`);
|
|
146
|
+
console.log('Person count:', nodeCount);
|
|
147
|
+
const relCountStart = performance.now();
|
|
148
|
+
const relCount = await graphs.countRelationships(['FRIENDS_WITH']);
|
|
149
|
+
console.log(`[TIMING] Count relationships: ${(performance.now() - relCountStart).toFixed(2)}ms`);
|
|
150
|
+
console.log('Friendship count:', relCount);
|
|
151
|
+
// Test statistics
|
|
152
|
+
console.log('\n--- Graph Statistics ---');
|
|
153
|
+
const statsStart = performance.now();
|
|
154
|
+
const stats = await graphs.getStatistics();
|
|
155
|
+
console.log(`[TIMING] Get statistics: ${(performance.now() - statsStart).toFixed(2)}ms`);
|
|
156
|
+
console.log('Graph statistics:', JSON.stringify(stats, null, 2));
|
|
157
|
+
// Test updating a node
|
|
158
|
+
console.log('\n--- Updating Node ---');
|
|
159
|
+
const updateStart = performance.now();
|
|
160
|
+
const updatedAlice = await graphs.updateNode({
|
|
161
|
+
id: alice.node.id,
|
|
162
|
+
properties: {
|
|
163
|
+
age: 29,
|
|
164
|
+
updated_at: new Date().toISOString(),
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
console.log(`[TIMING] Update node: ${(performance.now() - updateStart).toFixed(2)}ms`);
|
|
168
|
+
console.log('Updated Alice:', JSON.stringify(updatedAlice, null, 2));
|
|
169
|
+
// Test raw query
|
|
170
|
+
console.log('\n--- Raw Query ---');
|
|
171
|
+
const queryStart = performance.now();
|
|
172
|
+
const queryResult = await graphs.query('MATCH (p:Person) WHERE p.name = $name RETURN p', { name: 'Alice' });
|
|
173
|
+
console.log(`[TIMING] Raw query: ${(performance.now() - queryStart).toFixed(2)}ms`);
|
|
174
|
+
console.log('Query result:', JSON.stringify(queryResult, null, 2));
|
|
175
|
+
// Test transactions
|
|
176
|
+
console.log('\n--- Transaction Test ---');
|
|
177
|
+
const txStart = performance.now();
|
|
178
|
+
try {
|
|
179
|
+
const txResult = await graphs.executeTransaction(async (tx) => {
|
|
180
|
+
const charlie = await graphs.createNode({
|
|
181
|
+
labels: ['Person'],
|
|
182
|
+
properties: {
|
|
183
|
+
name: 'Charlie',
|
|
184
|
+
email: 'charlie@example.com',
|
|
185
|
+
age: 25,
|
|
186
|
+
},
|
|
187
|
+
}, tx);
|
|
188
|
+
await graphs.createRelationship({
|
|
189
|
+
type: 'FRIENDS_WITH',
|
|
190
|
+
startNodeId: charlie.node.id,
|
|
191
|
+
endNodeId: alice.node.id,
|
|
192
|
+
}, tx);
|
|
193
|
+
return charlie;
|
|
194
|
+
});
|
|
195
|
+
console.log(`[TIMING] Transaction: ${(performance.now() - txStart).toFixed(2)}ms`);
|
|
196
|
+
console.log('Transaction result:', JSON.stringify(txResult, null, 2));
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
console.log('Transaction test skipped or failed:', error);
|
|
200
|
+
}
|
|
201
|
+
// Cleanup - delete test nodes
|
|
202
|
+
console.log('\n--- Cleanup ---');
|
|
203
|
+
const cleanupStart = performance.now();
|
|
204
|
+
await graphs.deleteNode({ id: alice.node.id, detachRelationships: true });
|
|
205
|
+
await graphs.deleteNode({ id: bob.node.id, detachRelationships: true });
|
|
206
|
+
console.log(`[TIMING] Cleanup: ${(performance.now() - cleanupStart).toFixed(2)}ms`);
|
|
207
|
+
console.log('Test nodes deleted.');
|
|
208
|
+
// ==================== SUMMARY ====================
|
|
209
|
+
const totalTime = performance.now() - startTime;
|
|
210
|
+
console.log(`\n[TIMING SUMMARY]`);
|
|
211
|
+
console.log(` Total time: ${totalTime.toFixed(2)}ms`);
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
console.error('Error in Neo4j operations:', err);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
runNeo4jTests();
|
|
218
|
+
//# sourceMappingURL=test.graph.neo4j.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.graph.neo4j.js","sourceRoot":"","sources":["../../src/test/test.graph.neo4j.ts"],"names":[],"mappings":";;;;;AAAA,oDAA8B;AAE9B;;;;;;;;;;;;GAYG;AAEH,MAAM,EAAE,MAAM,EAAE,GAAG,eAAO,CAAC;AAE3B,eAAe;AACf,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AACpC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,+CAA+C,CAAC,CAAC;AAEzF,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC;QACH,kEAAkE;QAElE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEtC,uDAAuD;QACvD,MAAM,MAAM,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,oBAAoB;YAC1B,GAAG,EAAE,aAAa;YAClB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,mDAAmD;YAChE,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,KAAK;oBACX,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,uBAAuB;oBAChE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO;oBAC3C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,UAAU;oBAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO;iBAChD;gBACD;oBACE,IAAI,EAAE,KAAK;oBACX,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,uBAAuB;oBACpE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO;oBAC3C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,UAAU;iBACnD;aACF;SACF,EAAE,iBAAiB,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAEjE,oDAAoD;QAEpD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEvC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YACtC,GAAG,EAAE,KAAK;YACV,OAAO,EAAE,iBAAiB;YAC1B,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,UAAU,CAAC,CAAC;QAEzD,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAE1C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;YACpC,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,UAAU,EAAE;gBACV,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,mBAAmB;gBAC1B,GAAG,EAAE,EAAE;gBACP,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;YAClC,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,UAAU,EAAE;gBACV,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,iBAAiB;gBACxB,GAAG,EAAE,EAAE;gBACP,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1D,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEnC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC;YACjD,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YAC1B,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YACtB,UAAU,EAAE;gBACV,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC/B,QAAQ,EAAE,QAAQ;aACnB;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAExE,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC;YACrC,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhE,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEvC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC;YACjD,KAAK,EAAE,CAAC,cAAc,CAAC;YACvB,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAExE,iBAAiB;QACjB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAExC,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YAC5C,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YAC1B,SAAS,EAAE,UAAU;YACrB,QAAQ,EAAE,CAAC;YACX,iBAAiB,EAAE,CAAC,cAAc,CAAC;SACpC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3E,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAExC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YAChD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YACrB,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpE,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAErC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAExC,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAE3C,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAErC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjE,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEtC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;YAC3C,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YACjB,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE;gBACP,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAErE,iBAAiB;QACjB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAErC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,CACpC,gDAAgD,EAChD,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnE,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBAC5D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;oBACtC,MAAM,EAAE,CAAC,QAAQ,CAAC;oBAClB,UAAU,EAAE;wBACV,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,qBAAqB;wBAC5B,GAAG,EAAE,EAAE;qBACR;iBACF,EAAE,EAAE,CAAC,CAAC;gBAEP,MAAM,MAAM,CAAC,kBAAkB,CAAC;oBAC9B,IAAI,EAAE,cAAc;oBACpB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC5B,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;iBACzB,EAAE,EAAE,CAAC,CAAC;gBAEP,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEvC,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAEnC,oDAAoD;QAEpD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|