grafio-mongo 1.0.0 → 1.1.0
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/README.md +1 -1
- package/dist/MongoGraphFactory.d.ts +1 -0
- package/dist/MongoGraphFactory.js +20 -3
- package/dist/MongoStorageProvider.d.ts +3 -3
- package/dist/MongoStorageProvider.js +37 -5
- package/dist/index.d.ts +6 -0
- package/dist/index.js +8 -1
- package/package.json +11 -5
- package/dist/MongoGraphFactory.d.ts.map +0 -1
- package/dist/MongoGraphFactory.js.map +0 -1
- package/dist/MongoStorageProvider.d.ts.map +0 -1
- package/dist/MongoStorageProvider.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/jest.config.js +0 -27
- package/src/MongoGraphFactory.ts +0 -93
- package/src/MongoStorageProvider.ts +0 -719
- package/src/index.ts +0 -4
- package/tests/EducationGraph.mongo.test.ts +0 -33
- package/tests/SocialGraph.mongo.test.ts +0 -30
- package/tests/graph/Graph.clear.mongo.test.ts +0 -24
- package/tests/graph/Graph.edge.mongo.test.ts +0 -24
- package/tests/graph/Graph.fromJSON.mongo.test.ts +0 -24
- package/tests/graph/Graph.index.mongo.test.ts +0 -24
- package/tests/graph/Graph.isDAG.mongo.test.ts +0 -24
- package/tests/graph/Graph.node.mongo.test.ts +0 -24
- package/tests/graph/Graph.properties.mongo.test.ts +0 -24
- package/tests/graph/Graph.serialization.mongo.test.ts +0 -24
- package/tests/graph/Graph.topologicalSort.mongo.test.ts +0 -24
- package/tests/graph/Graph.transaction.mongo.test.ts +0 -24
- package/tests/graph/Graph.traverse.mongo.test.ts +0 -24
- package/tests/graph/GraphToMermaid.mongo.test.ts +0 -24
- package/tests/storage/MongoGraphFactory.test.ts +0 -102
- package/tsconfig.json +0 -21
- package/tsconfig.perf.json +0 -18
- package/tsconfig.prod.json +0 -11
package/README.md
CHANGED
|
@@ -157,7 +157,7 @@ try {
|
|
|
157
157
|
|
|
158
158
|
## Graph Operations
|
|
159
159
|
|
|
160
|
-
All graph operations from grafio are available when using MongoDB storage. See the [grafio documentation](https://github.com/
|
|
160
|
+
All graph operations from grafio are available when using MongoDB storage. See the [grafio documentation](https://github.com/satyajugran/grafio) for the complete API reference.
|
|
161
161
|
|
|
162
162
|
### Example Operations
|
|
163
163
|
|
|
@@ -15,19 +15,36 @@ class MongoGraphFactory {
|
|
|
15
15
|
await probe.ensureIndexes();
|
|
16
16
|
}
|
|
17
17
|
forGraph(graphId = 'default') {
|
|
18
|
-
const
|
|
18
|
+
const mongoProvider = new MongoStorageProvider_1.MongoStorageProvider(this._db, { ...this._opts, graphId });
|
|
19
|
+
const provider = this._wrapWithCacheIfEnabled(mongoProvider, graphId);
|
|
19
20
|
return new grafio_1.Graph(provider);
|
|
20
21
|
}
|
|
21
22
|
async fromGraphData(data, graphId = 'default') {
|
|
22
|
-
const
|
|
23
|
-
const
|
|
23
|
+
const mongoProvider = new MongoStorageProvider_1.MongoStorageProvider(this._db, { ...this._opts, graphId });
|
|
24
|
+
const provider = this._wrapWithCacheIfEnabled(mongoProvider, graphId);
|
|
24
25
|
const filteredData = {
|
|
25
26
|
graphId,
|
|
26
27
|
nodes: data.graphId === undefined || data.graphId === graphId ? data.nodes : [],
|
|
27
28
|
edges: data.graphId === undefined || data.graphId === graphId ? data.edges : [],
|
|
28
29
|
};
|
|
30
|
+
const graph = new grafio_1.Graph(provider);
|
|
29
31
|
await grafio_1.Graph.importJSON(filteredData, provider);
|
|
30
32
|
return graph;
|
|
31
33
|
}
|
|
34
|
+
_wrapWithCacheIfEnabled(mongoProvider, graphId) {
|
|
35
|
+
if (!grafio_1.GraphManager.isInitialized()) {
|
|
36
|
+
return mongoProvider;
|
|
37
|
+
}
|
|
38
|
+
const manager = grafio_1.GraphManager.getInstance();
|
|
39
|
+
const cacheManager = manager.getCacheManager();
|
|
40
|
+
if (!cacheManager) {
|
|
41
|
+
return mongoProvider;
|
|
42
|
+
}
|
|
43
|
+
const cacheConfig = manager.getConfig()?.cache;
|
|
44
|
+
if (!cacheConfig) {
|
|
45
|
+
return mongoProvider;
|
|
46
|
+
}
|
|
47
|
+
return new grafio_1.CachedStorageProvider(mongoProvider, graphId, cacheManager, cacheConfig);
|
|
48
|
+
}
|
|
32
49
|
}
|
|
33
50
|
exports.MongoGraphFactory = MongoGraphFactory;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Db } from 'mongodb';
|
|
2
|
-
import { IStorageProvider, NodeData, ITransactionHandle, EdgeData, GraphData } from 'grafio';
|
|
2
|
+
import { IStorageProvider, IOrderBy, NodeData, ITransactionHandle, EdgeData, GraphData } from 'grafio';
|
|
3
3
|
export interface MongoStorageProviderOptions {
|
|
4
4
|
graphId?: string;
|
|
5
5
|
nodesCollection?: string;
|
|
@@ -19,7 +19,7 @@ export declare class MongoStorageProvider implements IStorageProvider {
|
|
|
19
19
|
deleteNode(id: string, transaction?: ITransactionHandle): Promise<void>;
|
|
20
20
|
hasNode(id: string, transaction?: ITransactionHandle): Promise<boolean>;
|
|
21
21
|
getNode(id: string, transaction?: ITransactionHandle): Promise<NodeData | undefined>;
|
|
22
|
-
getAllNodes(limit?: number, transaction?: ITransactionHandle): Promise<NodeData[]>;
|
|
22
|
+
getAllNodes(limit?: number, orderBy?: IOrderBy, transaction?: ITransactionHandle): Promise<NodeData[]>;
|
|
23
23
|
getNodesByType(type: string, transaction?: ITransactionHandle): Promise<NodeData[]>;
|
|
24
24
|
getNodesByProperty(key: string, value: unknown, nodeType?: string, transaction?: ITransactionHandle): Promise<NodeData[]>;
|
|
25
25
|
getEdgesByProperty(key: string, value: unknown, edgeType?: string, transaction?: ITransactionHandle): Promise<EdgeData[]>;
|
|
@@ -27,7 +27,7 @@ export declare class MongoStorageProvider implements IStorageProvider {
|
|
|
27
27
|
deleteEdge(id: string, transaction?: ITransactionHandle): Promise<void>;
|
|
28
28
|
hasEdge(id: string, transaction?: ITransactionHandle): Promise<boolean>;
|
|
29
29
|
getEdge(id: string, transaction?: ITransactionHandle): Promise<EdgeData | undefined>;
|
|
30
|
-
getAllEdges(transaction?: ITransactionHandle): Promise<EdgeData[]>;
|
|
30
|
+
getAllEdges(limit?: number, orderBy?: IOrderBy, transaction?: ITransactionHandle): Promise<EdgeData[]>;
|
|
31
31
|
getEdgesByType(type: string, transaction?: ITransactionHandle): Promise<EdgeData[]>;
|
|
32
32
|
getEdgesBySource(nodeId: string, type?: string, transaction?: ITransactionHandle): Promise<EdgeData[]>;
|
|
33
33
|
getEdgesByTarget(nodeId: string, type?: string, transaction?: ITransactionHandle): Promise<EdgeData[]>;
|
|
@@ -39,12 +39,21 @@ class MongoStorageProvider {
|
|
|
39
39
|
]);
|
|
40
40
|
}
|
|
41
41
|
async insertNode(node, transaction) {
|
|
42
|
+
const now = Date.now();
|
|
43
|
+
if (node.createdOn === undefined) {
|
|
44
|
+
node.createdOn = now;
|
|
45
|
+
}
|
|
46
|
+
if (node.updatedOn === undefined) {
|
|
47
|
+
node.updatedOn = now;
|
|
48
|
+
}
|
|
42
49
|
const session = transaction?.context;
|
|
43
50
|
try {
|
|
44
51
|
await this._nodes.insertOne({
|
|
45
52
|
id: node.id,
|
|
46
53
|
graphId: this._graphId,
|
|
47
54
|
type: node.type,
|
|
55
|
+
createdOn: node.createdOn,
|
|
56
|
+
updatedOn: node.updatedOn,
|
|
48
57
|
properties: node.properties,
|
|
49
58
|
}, { session });
|
|
50
59
|
}
|
|
@@ -68,10 +77,12 @@ class MongoStorageProvider {
|
|
|
68
77
|
const doc = await this._nodes.findOne({ graphId: this._graphId, id }, { session });
|
|
69
78
|
return doc ? this._docToNode(doc) : undefined;
|
|
70
79
|
}
|
|
71
|
-
async getAllNodes(limit, transaction) {
|
|
80
|
+
async getAllNodes(limit, orderBy, transaction) {
|
|
72
81
|
const session = transaction?.context;
|
|
73
82
|
const nodes = [];
|
|
74
83
|
const cursor = this._nodes.find({ graphId: this._graphId }, { session }).batchSize(this._batchSize);
|
|
84
|
+
if (orderBy)
|
|
85
|
+
cursor.sort(orderBy.field, orderBy.direction);
|
|
75
86
|
if (limit)
|
|
76
87
|
cursor.limit(limit);
|
|
77
88
|
for await (const doc of cursor) {
|
|
@@ -109,6 +120,13 @@ class MongoStorageProvider {
|
|
|
109
120
|
return docs.map(d => this._docToEdge(d));
|
|
110
121
|
}
|
|
111
122
|
async insertEdge(edge, transaction) {
|
|
123
|
+
const now = Date.now();
|
|
124
|
+
if (edge.createdOn === undefined) {
|
|
125
|
+
edge.createdOn = now;
|
|
126
|
+
}
|
|
127
|
+
if (edge.updatedOn === undefined) {
|
|
128
|
+
edge.updatedOn = now;
|
|
129
|
+
}
|
|
112
130
|
const session = transaction?.context;
|
|
113
131
|
try {
|
|
114
132
|
await this._edges.insertOne({
|
|
@@ -117,6 +135,8 @@ class MongoStorageProvider {
|
|
|
117
135
|
sourceId: edge.sourceId,
|
|
118
136
|
targetId: edge.targetId,
|
|
119
137
|
type: edge.type,
|
|
138
|
+
createdOn: edge.createdOn,
|
|
139
|
+
updatedOn: edge.updatedOn,
|
|
120
140
|
properties: edge.properties,
|
|
121
141
|
}, { session });
|
|
122
142
|
}
|
|
@@ -140,10 +160,14 @@ class MongoStorageProvider {
|
|
|
140
160
|
const doc = await this._edges.findOne({ graphId: this._graphId, id }, { session });
|
|
141
161
|
return doc ? this._docToEdge(doc) : undefined;
|
|
142
162
|
}
|
|
143
|
-
async getAllEdges(transaction) {
|
|
163
|
+
async getAllEdges(limit, orderBy, transaction) {
|
|
144
164
|
const session = transaction?.context;
|
|
145
165
|
const edges = [];
|
|
146
166
|
const cursor = this._edges.find({ graphId: this._graphId }, { session }).batchSize(this._batchSize);
|
|
167
|
+
if (orderBy)
|
|
168
|
+
cursor.sort(orderBy.field, orderBy.direction);
|
|
169
|
+
if (limit)
|
|
170
|
+
cursor.limit(limit);
|
|
147
171
|
for await (const doc of cursor) {
|
|
148
172
|
edges.push(this._docToEdge(doc));
|
|
149
173
|
}
|
|
@@ -236,6 +260,8 @@ class MongoStorageProvider {
|
|
|
236
260
|
id: n.id,
|
|
237
261
|
graphId: this._graphId,
|
|
238
262
|
type: n.type,
|
|
263
|
+
createdOn: n.createdOn ?? Date.now(),
|
|
264
|
+
updatedOn: n.updatedOn ?? Date.now(),
|
|
239
265
|
properties: n.properties,
|
|
240
266
|
}));
|
|
241
267
|
for (let i = 0; i < nodeDocs.length; i += this._batchSize) {
|
|
@@ -249,6 +275,8 @@ class MongoStorageProvider {
|
|
|
249
275
|
sourceId: e.sourceId,
|
|
250
276
|
targetId: e.targetId,
|
|
251
277
|
type: e.type,
|
|
278
|
+
createdOn: e.createdOn ?? Date.now(),
|
|
279
|
+
updatedOn: e.updatedOn ?? Date.now(),
|
|
252
280
|
properties: e.properties,
|
|
253
281
|
}));
|
|
254
282
|
for (let i = 0; i < edgeDocs.length; i += this._batchSize) {
|
|
@@ -296,7 +324,7 @@ class MongoStorageProvider {
|
|
|
296
324
|
}
|
|
297
325
|
const session = transaction?.context;
|
|
298
326
|
const collection = target === 'node' ? this._nodes : this._edges;
|
|
299
|
-
const result = await collection.updateOne({ graphId: this._graphId, id, [`properties.${key}`]: { $exists: false } }, { $set: { [`properties.${key}`]: value } }, { session });
|
|
327
|
+
const result = await collection.updateOne({ graphId: this._graphId, id, [`properties.${key}`]: { $exists: false } }, { $set: { [`properties.${key}`]: value, updatedOn: Date.now() } }, { session });
|
|
300
328
|
if (result.matchedCount === 0) {
|
|
301
329
|
const record = target === 'node' ? await this.getNode(id, transaction) : await this.getEdge(id, transaction);
|
|
302
330
|
if (!record) {
|
|
@@ -311,7 +339,7 @@ class MongoStorageProvider {
|
|
|
311
339
|
}
|
|
312
340
|
const session = transaction?.context;
|
|
313
341
|
const collection = target === 'node' ? this._nodes : this._edges;
|
|
314
|
-
const result = await collection.updateOne({ graphId: this._graphId, id, [`properties.${key}`]: { $exists: true } }, { $set: { [`properties.${key}`]: value } }, { session });
|
|
342
|
+
const result = await collection.updateOne({ graphId: this._graphId, id, [`properties.${key}`]: { $exists: true } }, { $set: { [`properties.${key}`]: value, updatedOn: Date.now() } }, { session });
|
|
315
343
|
if (result.matchedCount === 0) {
|
|
316
344
|
const record = target === 'node' ? await this.getNode(id, transaction) : await this.getEdge(id, transaction);
|
|
317
345
|
if (!record) {
|
|
@@ -332,7 +360,7 @@ class MongoStorageProvider {
|
|
|
332
360
|
throw new errors_1.EdgeNotFoundError(id);
|
|
333
361
|
}
|
|
334
362
|
}
|
|
335
|
-
await collection.updateOne({ graphId: this._graphId, id }, { $unset: { [`properties.${key}`]: '' } }, { session });
|
|
363
|
+
await collection.updateOne({ graphId: this._graphId, id }, { $unset: { [`properties.${key}`]: '' }, $set: { updatedOn: Date.now() } }, { session });
|
|
336
364
|
}
|
|
337
365
|
async clearProperties(target, id, transaction) {
|
|
338
366
|
const session = transaction?.context;
|
|
@@ -398,6 +426,8 @@ class MongoStorageProvider {
|
|
|
398
426
|
return {
|
|
399
427
|
id: doc.id,
|
|
400
428
|
type: doc.type,
|
|
429
|
+
createdOn: doc.createdOn,
|
|
430
|
+
updatedOn: doc.updatedOn,
|
|
401
431
|
properties: doc.properties,
|
|
402
432
|
};
|
|
403
433
|
}
|
|
@@ -407,6 +437,8 @@ class MongoStorageProvider {
|
|
|
407
437
|
sourceId: doc.sourceId,
|
|
408
438
|
targetId: doc.targetId,
|
|
409
439
|
type: doc.type,
|
|
440
|
+
createdOn: doc.createdOn,
|
|
441
|
+
updatedOn: doc.updatedOn,
|
|
410
442
|
properties: doc.properties,
|
|
411
443
|
};
|
|
412
444
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
export { MongoStorageProvider } from './MongoStorageProvider';
|
|
2
2
|
export type { MongoStorageProviderOptions } from './MongoStorageProvider';
|
|
3
3
|
export { MongoGraphFactory } from './MongoGraphFactory';
|
|
4
|
+
export { GraphManager } from 'grafio';
|
|
5
|
+
export type { GraphManagerConfig, CacheConfig, CacheStats } from 'grafio';
|
|
6
|
+
export { CachedStorageProvider, CacheManager } from 'grafio';
|
|
7
|
+
export type { EvictionStrategy, PreloadStrategy, CacheStoreType } from 'grafio';
|
|
8
|
+
export { InMemoryCache } from 'grafio';
|
|
9
|
+
export type { ICacheProvider } from 'grafio';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MongoGraphFactory = exports.MongoStorageProvider = void 0;
|
|
3
|
+
exports.InMemoryCache = exports.CacheManager = exports.CachedStorageProvider = exports.GraphManager = exports.MongoGraphFactory = exports.MongoStorageProvider = void 0;
|
|
4
4
|
var MongoStorageProvider_1 = require("./MongoStorageProvider");
|
|
5
5
|
Object.defineProperty(exports, "MongoStorageProvider", { enumerable: true, get: function () { return MongoStorageProvider_1.MongoStorageProvider; } });
|
|
6
6
|
var MongoGraphFactory_1 = require("./MongoGraphFactory");
|
|
7
7
|
Object.defineProperty(exports, "MongoGraphFactory", { enumerable: true, get: function () { return MongoGraphFactory_1.MongoGraphFactory; } });
|
|
8
|
+
var grafio_1 = require("grafio");
|
|
9
|
+
Object.defineProperty(exports, "GraphManager", { enumerable: true, get: function () { return grafio_1.GraphManager; } });
|
|
10
|
+
var grafio_2 = require("grafio");
|
|
11
|
+
Object.defineProperty(exports, "CachedStorageProvider", { enumerable: true, get: function () { return grafio_2.CachedStorageProvider; } });
|
|
12
|
+
Object.defineProperty(exports, "CacheManager", { enumerable: true, get: function () { return grafio_2.CacheManager; } });
|
|
13
|
+
var grafio_3 = require("grafio");
|
|
14
|
+
Object.defineProperty(exports, "InMemoryCache", { enumerable: true, get: function () { return grafio_3.InMemoryCache; } });
|
package/package.json
CHANGED
|
@@ -1,24 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "grafio-mongo",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "MongoDB storage backend for grafio",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "tsc",
|
|
9
|
-
"build:prod": "tsc -p tsconfig.prod.json",
|
|
9
|
+
"build:prod": "npm run clean && tsc -p tsconfig.prod.json",
|
|
10
|
+
"clean": "rimraf dist",
|
|
10
11
|
"test": "jest",
|
|
11
|
-
"test:coverage": "jest --coverage --coverageReporters=text-summary --coverageReporters=html"
|
|
12
|
+
"test:coverage": "jest --coverage --coverageReporters=text-summary --coverageReporters=html",
|
|
13
|
+
"perf": "ts-node --project tsconfig.perf.json tests/perf/entryPoint.ts",
|
|
14
|
+
"perf:gc": "cross-env TS_NODE_PROJECT=tsconfig.perf.json node --expose-gc -r ts-node/register tests/perf/entryPoint.ts"
|
|
15
|
+
|
|
12
16
|
},
|
|
13
17
|
"peerDependencies": {
|
|
14
|
-
"grafio": ">=
|
|
18
|
+
"grafio": ">=6.1.0",
|
|
15
19
|
"mongodb": ">=5.0.0"
|
|
16
20
|
},
|
|
17
21
|
"devDependencies": {
|
|
18
22
|
"@types/jest": "^29.5.0",
|
|
19
23
|
"@types/node": "^25.6.0",
|
|
20
|
-
"grafio": "^
|
|
24
|
+
"grafio": "^6.1.0",
|
|
25
|
+
"cross-env": "^10.1.0",
|
|
21
26
|
"jest": "^29.5.0",
|
|
27
|
+
"rimraf": "^5.0.0",
|
|
22
28
|
"mongodb": "^7.2.0",
|
|
23
29
|
"mongodb-memory-server": "^11.1.0",
|
|
24
30
|
"ts-jest": "^29.1.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MongoGraphFactory.d.ts","sourceRoot":"","sources":["../src/MongoGraphFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEzD;;GAEG;AACH,KAAK,wBAAwB,GAAG,IAAI,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IAEjD;;;;;OAKG;gBACS,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE,wBAA6B;IAKvD;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,GAAE,MAAkB,GAAG,KAAK;IAK5C;;;;;;;OAOG;IACG,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,MAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;CAgBlF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MongoGraphFactory.js","sourceRoot":"","sources":["../src/MongoGraphFactory.ts"],"names":[],"mappings":";;;AACA,iEAGgC;AAChC,mCAAyD;AAOzD;;;;;;;;;;;;;;;GAeG;AACH,MAAa,iBAAiB;IACX,GAAG,CAAK;IACR,KAAK,CAA2B;IAEjD;;;;;OAKG;IACH,YAAY,EAAM,EAAE,OAAiC,EAAE;QACrD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,KAAK,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACxF,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAkB,SAAS;QAClC,MAAM,QAAQ,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAChF,OAAO,IAAI,cAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,aAAa,CAAC,IAAe,EAAE,UAAkB,SAAS;QAC9D,MAAM,QAAQ,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,IAAI,cAAK,CAAC,QAAQ,CAAC,CAAC;QAElC,qEAAqE;QACrE,oFAAoF;QACpF,+EAA+E;QAC/E,MAAM,YAAY,GAAc;YAC9B,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC/E,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;SAChF,CAAC;QAEF,MAAM,cAAK,CAAC,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAhED,8CAgEC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MongoStorageProvider.d.ts","sourceRoot":"","sources":["../src/MongoStorageProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MongoStorageProvider.js","sourceRoot":"","sources":["../src/MongoStorageProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAE7B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
|
package/jest.config.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/** @type {import('ts-jest').JestConfigWithTsJest} */
|
|
2
|
-
module.exports = {
|
|
3
|
-
preset: 'ts-jest',
|
|
4
|
-
testEnvironment: 'node',
|
|
5
|
-
roots: ['<rootDir>/tests'],
|
|
6
|
-
testMatch: ['**/*.test.ts'],
|
|
7
|
-
moduleFileExtensions: ['ts', 'js', 'json'],
|
|
8
|
-
collectCoverageFrom: ['src/**/*.ts'],
|
|
9
|
-
coveragePathIgnorePatterns: ['/node_modules/', '/dist/'],
|
|
10
|
-
coverageThreshold: {
|
|
11
|
-
global: {
|
|
12
|
-
branches: 80,
|
|
13
|
-
functions: 80,
|
|
14
|
-
lines: 80,
|
|
15
|
-
statements: 80
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
testTimeout: 60000,
|
|
19
|
-
maxWorkers: 1,
|
|
20
|
-
coverageReporters: [
|
|
21
|
-
"lcov",
|
|
22
|
-
"json-summary"
|
|
23
|
-
],
|
|
24
|
-
transform: {
|
|
25
|
-
'^.+\\.tsx?$': ['ts-jest', { tsconfig: { resolveJsonModule: true } }],
|
|
26
|
-
},
|
|
27
|
-
};
|
package/src/MongoGraphFactory.ts
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import type { Db } from 'mongodb';
|
|
2
|
-
import {
|
|
3
|
-
MongoStorageProvider,
|
|
4
|
-
type MongoStorageProviderOptions,
|
|
5
|
-
} from './MongoStorageProvider';
|
|
6
|
-
import { Graph, GraphData, IGraphFactory } from 'grafio';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Factory options for MongoGraphFactory — omits graphId since that is set per-call.
|
|
10
|
-
*/
|
|
11
|
-
type MongoGraphFactoryOptions = Omit<MongoStorageProviderOptions, 'graphId'>;
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* MongoDB-backed factory for `Graph` instances.
|
|
15
|
-
*
|
|
16
|
-
* Holds the long-lived `Db` connection reference. `forGraph(graphId)` returns a
|
|
17
|
-
* lightweight `Graph` scoped to the given partition — no new I/O resources are
|
|
18
|
-
* created on each call (Collection handles are stateless).
|
|
19
|
-
*
|
|
20
|
-
* Call `ensureIndexes()` once at application startup before any graph operations.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* const factory = new MongoGraphFactory(db);
|
|
24
|
-
* await factory.ensureIndexes();
|
|
25
|
-
*
|
|
26
|
-
* const graph = factory.forGraph('user-123');
|
|
27
|
-
* await graph.addNode('Person', { name: 'Alice' });
|
|
28
|
-
*/
|
|
29
|
-
export class MongoGraphFactory implements IGraphFactory {
|
|
30
|
-
private readonly _db: Db;
|
|
31
|
-
private readonly _opts: MongoGraphFactoryOptions;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* @param db - An already-connected Mongo `Db` instance. The factory does not
|
|
35
|
-
* manage the connection lifecycle — that is the consumer's responsibility.
|
|
36
|
-
* @param opts - Optional collection name overrides (no graphId here — that is
|
|
37
|
-
* set per-call in `forGraph`).
|
|
38
|
-
*/
|
|
39
|
-
constructor(db: Db, opts: MongoGraphFactoryOptions = {}) {
|
|
40
|
-
this._db = db;
|
|
41
|
-
this._opts = opts;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Creates all required MongoDB indexes.
|
|
46
|
-
*
|
|
47
|
-
* Call ONCE at application startup before any graph operations.
|
|
48
|
-
* Safe to call multiple times (MongoDB's `createIndex` is idempotent).
|
|
49
|
-
*/
|
|
50
|
-
async ensureIndexes(): Promise<void> {
|
|
51
|
-
const probe = new MongoStorageProvider(this._db, { ...this._opts, graphId: 'default' });
|
|
52
|
-
await probe.ensureIndexes();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Returns a `Graph` instance scoped to the given `graphId`.
|
|
57
|
-
*
|
|
58
|
-
* Cheap to call — creates only stateless `Collection` references, no I/O.
|
|
59
|
-
* Each returned `Graph` operates on its own isolated partition of the same
|
|
60
|
-
* MongoDB collections.
|
|
61
|
-
*
|
|
62
|
-
* @param graphId - Defaults to `"default"` when omitted.
|
|
63
|
-
*/
|
|
64
|
-
forGraph(graphId: string = 'default'): Graph {
|
|
65
|
-
const provider = new MongoStorageProvider(this._db, { ...this._opts, graphId });
|
|
66
|
-
return new Graph(provider);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Creates a Graph instance and imports the given graph data into it.
|
|
71
|
-
* Convenience method that combines forGraph() + importJSON().
|
|
72
|
-
*
|
|
73
|
-
* @param data - The GraphData to import
|
|
74
|
-
* @param graphId - Graph partition ID (defaults to 'default')
|
|
75
|
-
* @returns A Graph instance with the imported data
|
|
76
|
-
*/
|
|
77
|
-
async fromGraphData(data: GraphData, graphId: string = 'default'): Promise<Graph> {
|
|
78
|
-
const provider = new MongoStorageProvider(this._db, { ...this._opts, graphId });
|
|
79
|
-
const graph = new Graph(provider);
|
|
80
|
-
|
|
81
|
-
// Filter data to only import nodes/edges that belong to this graphId
|
|
82
|
-
// If data.graphId is set and doesn't match, skip (data is from different partition)
|
|
83
|
-
// If data.graphId is not set, import all (backward compatible for legacy data)
|
|
84
|
-
const filteredData: GraphData = {
|
|
85
|
-
graphId,
|
|
86
|
-
nodes: data.graphId === undefined || data.graphId === graphId ? data.nodes : [],
|
|
87
|
-
edges: data.graphId === undefined || data.graphId === graphId ? data.edges : [],
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
await Graph.importJSON(filteredData, provider);
|
|
91
|
-
return graph;
|
|
92
|
-
}
|
|
93
|
-
}
|