@neo4j/graph-schema-utils 1.0.0-next.2 → 1.0.0-next.21
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 +52 -1
- package/dist/formatters/index.js +2 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/formatters/json/extensions.js +439 -0
- package/dist/formatters/json/extensions.js.map +1 -0
- package/dist/formatters/json/index.js +4 -0
- package/dist/formatters/json/index.js.map +1 -0
- package/dist/formatters/json/types.js +37 -0
- package/dist/formatters/json/types.js.map +1 -0
- package/dist/formatters/llm-prompt/index.js +102 -0
- package/dist/formatters/llm-prompt/index.js.map +1 -0
- package/dist/formatters/llm-prompt/types.js.map +1 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/model/index.js +165 -148
- package/dist/model/index.js.map +1 -1
- package/dist/types/formatters/index.d.ts +1 -0
- package/dist/types/formatters/json/extensions.d.ts +9 -0
- package/dist/types/formatters/json/index.d.ts +3 -0
- package/dist/types/formatters/json/types.d.ts +150 -0
- package/dist/types/formatters/llm-prompt/index.d.ts +3 -0
- package/dist/types/formatters/llm-prompt/types.d.ts +5 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/model/index.d.ts +131 -0
- package/dist/types/version.d.ts +2 -0
- package/dist/validation.js +3 -1
- package/dist/validation.js.map +1 -1
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +14 -7
- package/dist/index.d.ts +0 -3
- package/dist/model/index.d.ts +0 -179
- package/dist/types.js.map +0 -1
- /package/dist/{types.js → formatters/llm-prompt/types.js} +0 -0
- /package/dist/{validation.d.ts → types/validation.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -8,10 +8,61 @@ npm install @neo4j/graph-schema-utils
|
|
|
8
8
|
|
|
9
9
|
## Use
|
|
10
10
|
|
|
11
|
+
### Validate
|
|
12
|
+
|
|
13
|
+
This function is needed to perform a validation on a graph schema. The validateSchema function compares the output against the JSON schema.
|
|
14
|
+
|
|
11
15
|
```js
|
|
12
16
|
import { validateSchema } from "@neo4j/graph-schema-utils";
|
|
13
17
|
|
|
14
|
-
validateSchema(
|
|
18
|
+
validateSchema(jsonSchema, graphSchema);
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Model
|
|
22
|
+
|
|
23
|
+
You can also create a schema model programatically.
|
|
24
|
+
Example:
|
|
25
|
+
|
|
26
|
+
```js
|
|
27
|
+
import { model } from "@neo4j/graph-schema-utils";
|
|
28
|
+
|
|
29
|
+
const labels = [
|
|
30
|
+
new model.NodeLabel("l1", "Person"),
|
|
31
|
+
new model.NodeLabel("l1", "Movie"),
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const relationshipTypes = [new model.RelationshipType("rt1", "ACTED_IN")];
|
|
35
|
+
|
|
36
|
+
const properties = [
|
|
37
|
+
new model.Property("name", new model.PropertyBaseType("string"), true),
|
|
38
|
+
new model.Property("title", new model.PropertyBaseType("string"), true),
|
|
39
|
+
new model.Property(
|
|
40
|
+
"roles",
|
|
41
|
+
new model.PropertyArrayType(new model.PropertyBaseType("string")),
|
|
42
|
+
false
|
|
43
|
+
),
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
const nodeObjectTypes = [
|
|
47
|
+
new model.NodeObjectType("n1", [labels[0]], [properties[0]]), // (:Person {name}) node type
|
|
48
|
+
new model.NodeObjectType("n2", [labels[1]], [properties[1]]), // (:Movie {title}) node type
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const relationshipObjectTypes = [
|
|
52
|
+
// (:Person {name})-[:ACTED_IN {roles}]->(:Movie {title})
|
|
53
|
+
new model.RelationshipObjectType(
|
|
54
|
+
"r1",
|
|
55
|
+
relationshipTypes[0],
|
|
56
|
+
nodeObjectTypes[0],
|
|
57
|
+
nodeObjectTypes[1],
|
|
58
|
+
[properties[2]]
|
|
59
|
+
),
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const graphSchema = new model.GraphSchema(
|
|
63
|
+
nodeObjectTypes,
|
|
64
|
+
relationshipObjectTypes
|
|
65
|
+
);
|
|
15
66
|
```
|
|
16
67
|
|
|
17
68
|
# Develop / Contribute
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
import { GraphSchema, LookupIndex, NodeLabel, NodeLabelConstraint, NodeLabelIndex, NodeObjectType, Property, PrimitiveArrayPropertyType, PrimitivePropertyType, RelationshipObjectType, RelationshipType, RelationshipTypeConstraint, RelationshipTypeIndex, isLookupIndex, isNodeLabelConstraint, isNodeLabelIndex, isRelationshipTypeConstraint, isRelationshipTypeIndex, isPrimitivePropertyType, isPrimitiveArrayPropertyType, isVectorPropertyType, VectorElementType, VectorPropertyType, } from "../../model/index.js";
|
|
2
|
+
import { isLookupIndexJsonStruct, isNodeLabelConstraintJsonStruct, isNodeLabelIndexJsonStruct, isPrimitiveArrayPropertyTypeJsonStruct, isPrimitivePropertyTypeJsonStruct, isRelationshipTypeConstraintJsonStruct, isRelationshipTypeIndexJsonStruct, isVectorPropertyTypeJsonStruct, } from "./types.js";
|
|
3
|
+
export const VERSION = "0.0.1";
|
|
4
|
+
export function toJson(schema, space = undefined) {
|
|
5
|
+
const out = toJsonStruct(schema);
|
|
6
|
+
return JSON.stringify(out, null, space);
|
|
7
|
+
}
|
|
8
|
+
export function toJsonStruct(schema) {
|
|
9
|
+
const labels = schema.nodeLabels
|
|
10
|
+
.sort((a, b) => (a.$id < b.$id ? -1 : 1))
|
|
11
|
+
.map(nodeLabel.extract);
|
|
12
|
+
const relationshipTypes = schema.relationshipTypes
|
|
13
|
+
.sort((a, b) => (a.$id < b.$id ? -1 : 1))
|
|
14
|
+
.map(relationshipType.extract);
|
|
15
|
+
const nodeObjectTypes = schema.nodeObjectTypes.map(nodeObjectType.extract);
|
|
16
|
+
const relationshipObjectTypes = schema.relationshipObjectTypes.map(relationshipObjectType.extract);
|
|
17
|
+
const constraints = schema.constraints.map((constraint) => {
|
|
18
|
+
if (isNodeLabelConstraint(constraint)) {
|
|
19
|
+
return nodeLabelConstraint.extract(constraint);
|
|
20
|
+
}
|
|
21
|
+
else if (isRelationshipTypeConstraint(constraint)) {
|
|
22
|
+
return relationshipConstraint.extract(constraint);
|
|
23
|
+
}
|
|
24
|
+
throw new Error(`Unknown constraint type ${constraint}`);
|
|
25
|
+
});
|
|
26
|
+
const indexes = schema.indexes.map((index) => {
|
|
27
|
+
if (isNodeLabelIndex(index)) {
|
|
28
|
+
return nodeLabelIndex.extract(index);
|
|
29
|
+
}
|
|
30
|
+
else if (isRelationshipTypeIndex(index)) {
|
|
31
|
+
return relationshipTypeIndex.extract(index);
|
|
32
|
+
}
|
|
33
|
+
else if (isLookupIndex(index)) {
|
|
34
|
+
return lookupIndex.extract(index);
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Unknown index type ${index}`);
|
|
37
|
+
});
|
|
38
|
+
const out = {
|
|
39
|
+
graphSchemaRepresentation: {
|
|
40
|
+
version: VERSION,
|
|
41
|
+
graphSchema: {
|
|
42
|
+
nodeLabels: labels,
|
|
43
|
+
relationshipTypes,
|
|
44
|
+
nodeObjectTypes,
|
|
45
|
+
relationshipObjectTypes,
|
|
46
|
+
constraints,
|
|
47
|
+
indexes,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
return out;
|
|
52
|
+
}
|
|
53
|
+
export function fromJson(schema) {
|
|
54
|
+
const schemaJson = JSON.parse(schema);
|
|
55
|
+
return fromJsonStruct(schemaJson);
|
|
56
|
+
}
|
|
57
|
+
export function hasDuplicateNodeLabelIds(schema) {
|
|
58
|
+
const ids = new Set();
|
|
59
|
+
for (const nodeLabel of schema.nodeLabels) {
|
|
60
|
+
if (ids.has(nodeLabel.$id)) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
ids.add(nodeLabel.$id);
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
export function hasDuplicateNodeObjectTypeIds(schema) {
|
|
68
|
+
const ids = new Set();
|
|
69
|
+
for (const nodeObjectType of schema.nodeObjectTypes) {
|
|
70
|
+
if (ids.has(nodeObjectType.$id)) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
ids.add(nodeObjectType.$id);
|
|
74
|
+
}
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
export function fromJsonStruct(schemaJson) {
|
|
78
|
+
const { graphSchema } = schemaJson.graphSchemaRepresentation;
|
|
79
|
+
if (hasDuplicateNodeLabelIds(graphSchema)) {
|
|
80
|
+
throw new Error("Duplicate node label IDs found in schema");
|
|
81
|
+
}
|
|
82
|
+
const labels = graphSchema.nodeLabels.map(nodeLabel.create);
|
|
83
|
+
const relationshipTypes = graphSchema.relationshipTypes.map(relationshipType.create);
|
|
84
|
+
if (hasDuplicateNodeObjectTypeIds(graphSchema)) {
|
|
85
|
+
throw new Error("Duplicate node object type IDs found in schema");
|
|
86
|
+
}
|
|
87
|
+
const nodeObjectTypes = graphSchema.nodeObjectTypes.map((nodeObjectTypeJson) => nodeObjectType.create(nodeObjectTypeJson, (ref) => {
|
|
88
|
+
const found = labels.find((label) => label.$id === ref.slice(1));
|
|
89
|
+
if (!found) {
|
|
90
|
+
throw new Error(`Not all label references are defined`);
|
|
91
|
+
}
|
|
92
|
+
return found;
|
|
93
|
+
}));
|
|
94
|
+
const relationshipObjectTypes = graphSchema.relationshipObjectTypes.map((relationshipObjectTypeJson) => relationshipObjectType.create(relationshipObjectTypeJson, (ref) => {
|
|
95
|
+
const found = relationshipTypes.find((relType) => relType.$id === ref.slice(1));
|
|
96
|
+
if (!found) {
|
|
97
|
+
throw new Error(`Not all relationship type references are defined`);
|
|
98
|
+
}
|
|
99
|
+
return found;
|
|
100
|
+
}, (ref, fieldName) => {
|
|
101
|
+
const found = nodeObjectTypes.find((nodeObjectType) => nodeObjectType.$id === ref.slice(1));
|
|
102
|
+
if (!found) {
|
|
103
|
+
throw new Error(`Not all node object type references in ${fieldName} are defined`);
|
|
104
|
+
}
|
|
105
|
+
return found;
|
|
106
|
+
}));
|
|
107
|
+
const constraints = graphSchema.constraints.map((constraintJson) => {
|
|
108
|
+
if (isNodeLabelConstraintJsonStruct(constraintJson)) {
|
|
109
|
+
return nodeLabelConstraint.create(constraintJson, (ref) => {
|
|
110
|
+
const found = labels.find((label) => label.$id === ref.slice(1));
|
|
111
|
+
if (!found) {
|
|
112
|
+
throw new Error(`Not all label references are defined`);
|
|
113
|
+
}
|
|
114
|
+
return found;
|
|
115
|
+
}, (propertyRef, labelRef) => {
|
|
116
|
+
const label = labels.find((label) => label.$id === labelRef.slice(1));
|
|
117
|
+
const labelProperties = label ? label.properties : [];
|
|
118
|
+
const found = labelProperties.find((p) => p.$id === propertyRef.slice(1));
|
|
119
|
+
if (!found) {
|
|
120
|
+
throw new Error(`Not all constraint property references are defined`);
|
|
121
|
+
}
|
|
122
|
+
return found;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
else if (isRelationshipTypeConstraintJsonStruct(constraintJson)) {
|
|
126
|
+
return relationshipConstraint.create(constraintJson, (ref) => {
|
|
127
|
+
const found = relationshipTypes.find((relType) => relType.$id === ref.slice(1));
|
|
128
|
+
if (!found) {
|
|
129
|
+
throw new Error(`Not all relationship type references are defined`);
|
|
130
|
+
}
|
|
131
|
+
return found;
|
|
132
|
+
}, (propertyRef, relationshipTypeRef) => {
|
|
133
|
+
const relType = relationshipTypes.find((relType) => relType.$id === relationshipTypeRef.slice(1));
|
|
134
|
+
const relTypeProperties = relType ? relType.properties : [];
|
|
135
|
+
const found = relTypeProperties.find((p) => p.$id === propertyRef.slice(1));
|
|
136
|
+
if (!found) {
|
|
137
|
+
throw new Error(`Not all constraint property references are defined`);
|
|
138
|
+
}
|
|
139
|
+
return found;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
throw new Error(`Unknown constraint type ${constraintJson}`);
|
|
143
|
+
});
|
|
144
|
+
const indexes = graphSchema.indexes.map((indexJson) => {
|
|
145
|
+
if (isNodeLabelIndexJsonStruct(indexJson)) {
|
|
146
|
+
return nodeLabelIndex.create(indexJson, (ref) => {
|
|
147
|
+
const found = labels.find((label) => label.$id === ref.slice(1));
|
|
148
|
+
if (!found) {
|
|
149
|
+
throw new Error(`Not all label references are defined`);
|
|
150
|
+
}
|
|
151
|
+
return found;
|
|
152
|
+
}, (propertyRef, labelRef) => {
|
|
153
|
+
const label = labels.find((label) => label.$id === labelRef.slice(1));
|
|
154
|
+
const labelProperties = label ? label.properties : [];
|
|
155
|
+
const found = labelProperties.find((p) => p.$id === propertyRef.slice(1));
|
|
156
|
+
if (!found) {
|
|
157
|
+
throw new Error(`Not all index property references are defined`);
|
|
158
|
+
}
|
|
159
|
+
return found;
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
else if (isRelationshipTypeIndexJsonStruct(indexJson)) {
|
|
163
|
+
return relationshipTypeIndex.create(indexJson, (ref) => {
|
|
164
|
+
const found = relationshipTypes.find((relType) => relType.$id === ref.slice(1));
|
|
165
|
+
if (!found) {
|
|
166
|
+
throw new Error(`Not all relationship type references are defined`);
|
|
167
|
+
}
|
|
168
|
+
return found;
|
|
169
|
+
}, (propertyRef, relTypeRef) => {
|
|
170
|
+
const relType = relationshipTypes.find((relType) => relType.$id === relTypeRef.slice(1));
|
|
171
|
+
const relTypeProperties = relType ? relType.properties : [];
|
|
172
|
+
const found = relTypeProperties.find((p) => p.$id === propertyRef.slice(1));
|
|
173
|
+
if (!found) {
|
|
174
|
+
throw new Error(`Not all index property references are defined`);
|
|
175
|
+
}
|
|
176
|
+
return found;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
else if (isLookupIndexJsonStruct(indexJson)) {
|
|
180
|
+
return lookupIndex.create(indexJson);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
throw new Error(`Unknown index type ${indexJson}`);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
return new GraphSchema(nodeObjectTypes, relationshipObjectTypes, constraints, indexes);
|
|
187
|
+
}
|
|
188
|
+
const nodeLabel = {
|
|
189
|
+
extract: (node) => ({
|
|
190
|
+
$id: node.$id,
|
|
191
|
+
token: node.token,
|
|
192
|
+
properties: node.properties.map(property.extract),
|
|
193
|
+
}),
|
|
194
|
+
create: (node) => new NodeLabel(node.$id, node.token, node.properties.map(property.create)),
|
|
195
|
+
toRef: (node) => {
|
|
196
|
+
if (!node || !node.$id) {
|
|
197
|
+
throw new Error(`Not all labels are defined`);
|
|
198
|
+
}
|
|
199
|
+
return { $ref: `#${node.$id}` };
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
const relationshipType = {
|
|
203
|
+
extract: (relType) => ({
|
|
204
|
+
$id: relType.$id,
|
|
205
|
+
token: relType.token,
|
|
206
|
+
properties: relType.properties.map(property.extract),
|
|
207
|
+
}),
|
|
208
|
+
create: (relType) => new RelationshipType(relType.$id, relType.token, relType.properties.map(property.create)),
|
|
209
|
+
toRef: (relType) => {
|
|
210
|
+
if (!relType || !relType.$id) {
|
|
211
|
+
throw new Error(`RelationshipObjectType.type is not defined`);
|
|
212
|
+
}
|
|
213
|
+
return { $ref: `#${relType.$id}` };
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
const nodeLabelConstraint = {
|
|
217
|
+
extract: (constraint) => ({
|
|
218
|
+
$id: constraint.$id,
|
|
219
|
+
name: constraint.name,
|
|
220
|
+
constraintType: constraint.constraintType,
|
|
221
|
+
entityType: constraint.entityType,
|
|
222
|
+
nodeLabel: nodeLabel.toRef(constraint.nodeLabel),
|
|
223
|
+
properties: constraint.properties.map(property.toRef),
|
|
224
|
+
}),
|
|
225
|
+
create: (constraint, nodeLabelLookup, propertyLookup) => {
|
|
226
|
+
return new NodeLabelConstraint(constraint.$id, constraint.name, constraint.constraintType, nodeLabelLookup(constraint.nodeLabel.$ref), constraint.properties.map((p) => propertyLookup(p.$ref, constraint.nodeLabel.$ref)));
|
|
227
|
+
},
|
|
228
|
+
toRef: (constraint) => {
|
|
229
|
+
if (!constraint || !constraint.$id) {
|
|
230
|
+
throw new Error(`Constraint is not defined`);
|
|
231
|
+
}
|
|
232
|
+
return { $ref: `#${constraint.$id}` };
|
|
233
|
+
},
|
|
234
|
+
};
|
|
235
|
+
const relationshipConstraint = {
|
|
236
|
+
extract: (constraint) => ({
|
|
237
|
+
$id: constraint.$id,
|
|
238
|
+
name: constraint.name,
|
|
239
|
+
constraintType: constraint.constraintType,
|
|
240
|
+
entityType: constraint.entityType,
|
|
241
|
+
relationshipType: relationshipType.toRef(constraint.relationshipType),
|
|
242
|
+
properties: constraint.properties.map(property.toRef),
|
|
243
|
+
}),
|
|
244
|
+
create: (constraint, relationshipTypeLookup, propertyLookup) => {
|
|
245
|
+
return new RelationshipTypeConstraint(constraint.$id, constraint.name, constraint.constraintType, relationshipTypeLookup(constraint.relationshipType.$ref), constraint.properties.map((p) => propertyLookup(p.$ref, constraint.relationshipType.$ref)));
|
|
246
|
+
},
|
|
247
|
+
toRef: (constraint) => {
|
|
248
|
+
if (!constraint || !constraint.$id) {
|
|
249
|
+
throw new Error(`Constraint is not defined`);
|
|
250
|
+
}
|
|
251
|
+
return { $ref: `#${constraint.$id}` };
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
const lookupIndex = {
|
|
255
|
+
extract: (index) => ({
|
|
256
|
+
$id: index.$id,
|
|
257
|
+
name: index.name,
|
|
258
|
+
indexType: index.indexType,
|
|
259
|
+
entityType: index.entityType,
|
|
260
|
+
}),
|
|
261
|
+
create: (index) => {
|
|
262
|
+
return new LookupIndex(index.$id, index.name, index.entityType);
|
|
263
|
+
},
|
|
264
|
+
toRef: (index) => {
|
|
265
|
+
if (!index || !index.$id) {
|
|
266
|
+
throw new Error(`Index is not defined`);
|
|
267
|
+
}
|
|
268
|
+
return { $ref: `#${index.$id}` };
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
const nodeLabelIndex = {
|
|
272
|
+
extract: (index) => ({
|
|
273
|
+
$id: index.$id,
|
|
274
|
+
name: index.name,
|
|
275
|
+
indexType: index.indexType,
|
|
276
|
+
entityType: index.entityType,
|
|
277
|
+
nodeLabel: nodeLabel.toRef(index.nodeLabel),
|
|
278
|
+
properties: index.properties.map(property.toRef),
|
|
279
|
+
}),
|
|
280
|
+
create: (index, nodeLabelLookup, propertyLookup) => {
|
|
281
|
+
return new NodeLabelIndex(index.$id, index.name, index.indexType, nodeLabelLookup(index.nodeLabel.$ref), index.properties.map((p) => propertyLookup(p.$ref, index.nodeLabel.$ref)));
|
|
282
|
+
},
|
|
283
|
+
toRef: (index) => {
|
|
284
|
+
if (!index || !index.$id) {
|
|
285
|
+
throw new Error(`Index is not defined`);
|
|
286
|
+
}
|
|
287
|
+
return { $ref: `#${index.$id}` };
|
|
288
|
+
},
|
|
289
|
+
};
|
|
290
|
+
const relationshipTypeIndex = {
|
|
291
|
+
extract: (index) => ({
|
|
292
|
+
$id: index.$id,
|
|
293
|
+
name: index.name,
|
|
294
|
+
indexType: index.indexType,
|
|
295
|
+
entityType: index.entityType,
|
|
296
|
+
relationshipType: relationshipType.toRef(index.relationshipType),
|
|
297
|
+
properties: index.properties.map(property.toRef),
|
|
298
|
+
}),
|
|
299
|
+
create: (index, relationshipTypeLookup, propertyLookup) => {
|
|
300
|
+
return new RelationshipTypeIndex(index.$id, index.name, index.indexType, relationshipTypeLookup(index.relationshipType.$ref), index.properties.map((p) => propertyLookup(p.$ref, index.relationshipType.$ref)));
|
|
301
|
+
},
|
|
302
|
+
toRef: (index) => {
|
|
303
|
+
if (!index || !index.$id) {
|
|
304
|
+
throw new Error(`Index is not defined`);
|
|
305
|
+
}
|
|
306
|
+
return { $ref: `#${index.$id}` };
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
const property = {
|
|
310
|
+
extract: (property) => ({
|
|
311
|
+
$id: property.$id,
|
|
312
|
+
token: property.token,
|
|
313
|
+
type: propertyType.extract(property.type),
|
|
314
|
+
nullable: property.nullable,
|
|
315
|
+
}),
|
|
316
|
+
create: (property) => new Property(property.$id, property.token, propertyType.create(property.type), property.nullable),
|
|
317
|
+
toRef: (property) => {
|
|
318
|
+
if (!property || !property.$id) {
|
|
319
|
+
throw new Error(`Property is not defined`);
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
$ref: `#${property.$id}`,
|
|
323
|
+
};
|
|
324
|
+
},
|
|
325
|
+
};
|
|
326
|
+
const propertyType = {
|
|
327
|
+
extract: (pt) => {
|
|
328
|
+
if (Array.isArray(pt)) {
|
|
329
|
+
return pt.map((p) => {
|
|
330
|
+
if (isPrimitivePropertyType(p)) {
|
|
331
|
+
return propertyBaseType.extract(p);
|
|
332
|
+
}
|
|
333
|
+
else if (isPrimitiveArrayPropertyType(p)) {
|
|
334
|
+
return propertyArrayType.extract(p);
|
|
335
|
+
}
|
|
336
|
+
else if (isVectorPropertyType(p)) {
|
|
337
|
+
return propertyVectorType.extract(p);
|
|
338
|
+
}
|
|
339
|
+
throw Error(`Unknown property type in list ${p}`);
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
if (isPrimitivePropertyType(pt)) {
|
|
343
|
+
return propertyBaseType.extract(pt);
|
|
344
|
+
}
|
|
345
|
+
else if (isPrimitiveArrayPropertyType(pt)) {
|
|
346
|
+
return propertyArrayType.extract(pt);
|
|
347
|
+
}
|
|
348
|
+
else if (isVectorPropertyType(pt)) {
|
|
349
|
+
return propertyVectorType.extract(pt);
|
|
350
|
+
}
|
|
351
|
+
throw new Error(`Unknown property type ${pt}`);
|
|
352
|
+
},
|
|
353
|
+
create: (propertyTypeJson) => {
|
|
354
|
+
if (Array.isArray(propertyTypeJson)) {
|
|
355
|
+
return propertyTypeJson.map((pt) => {
|
|
356
|
+
if (isPrimitivePropertyTypeJsonStruct(pt)) {
|
|
357
|
+
return propertyBaseType.create(pt);
|
|
358
|
+
}
|
|
359
|
+
else if (isPrimitiveArrayPropertyTypeJsonStruct(pt)) {
|
|
360
|
+
return propertyArrayType.create(pt.items.type);
|
|
361
|
+
}
|
|
362
|
+
throw new Error(`Unknown property type in list ${pt}`);
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
if (isPrimitiveArrayPropertyTypeJsonStruct(propertyTypeJson)) {
|
|
366
|
+
return propertyArrayType.create(propertyTypeJson.items.type);
|
|
367
|
+
}
|
|
368
|
+
if (isVectorPropertyTypeJsonStruct(propertyTypeJson)) {
|
|
369
|
+
return propertyVectorType.create(propertyTypeJson.items.type, propertyTypeJson.dimension);
|
|
370
|
+
}
|
|
371
|
+
return propertyBaseType.create(propertyTypeJson);
|
|
372
|
+
},
|
|
373
|
+
};
|
|
374
|
+
const propertyBaseType = {
|
|
375
|
+
extract: (propertyBaseType) => ({
|
|
376
|
+
type: propertyBaseType.type,
|
|
377
|
+
}),
|
|
378
|
+
create: (btype) => new PrimitivePropertyType(btype.type),
|
|
379
|
+
};
|
|
380
|
+
const propertyArrayType = {
|
|
381
|
+
extract: (propertyArrayType) => ({
|
|
382
|
+
type: "array",
|
|
383
|
+
items: propertyBaseType.extract(propertyArrayType.items),
|
|
384
|
+
}),
|
|
385
|
+
create: (type) => new PrimitiveArrayPropertyType(propertyBaseType.create({ type })),
|
|
386
|
+
};
|
|
387
|
+
const propertyVectorElementType = {
|
|
388
|
+
extract: (propertyVectorElementType) => ({
|
|
389
|
+
type: propertyVectorElementType.type,
|
|
390
|
+
}),
|
|
391
|
+
create: (btype) => new VectorElementType(btype.type),
|
|
392
|
+
};
|
|
393
|
+
const propertyVectorType = {
|
|
394
|
+
extract: (propertyVectorType) => {
|
|
395
|
+
const result = {
|
|
396
|
+
type: "vector",
|
|
397
|
+
items: propertyVectorElementType.extract(propertyVectorType.items),
|
|
398
|
+
};
|
|
399
|
+
if (typeof propertyVectorType.dimension === "number") {
|
|
400
|
+
result.dimension = propertyVectorType.dimension;
|
|
401
|
+
}
|
|
402
|
+
return result;
|
|
403
|
+
},
|
|
404
|
+
create: (type, dimension) => {
|
|
405
|
+
return new VectorPropertyType(propertyVectorElementType.create({ type }), dimension);
|
|
406
|
+
},
|
|
407
|
+
};
|
|
408
|
+
const nodeObjectType = {
|
|
409
|
+
extract: (nodeObjectType) => ({
|
|
410
|
+
$id: nodeObjectType.$id,
|
|
411
|
+
labels: nodeObjectType.labels.map(nodeLabel.toRef),
|
|
412
|
+
}),
|
|
413
|
+
create: (nodeObjectType, labelLookup) => {
|
|
414
|
+
return new NodeObjectType(nodeObjectType.$id, nodeObjectType.labels.map(({ $ref }) => labelLookup($ref)));
|
|
415
|
+
},
|
|
416
|
+
toRef: (nodeObjectType) => {
|
|
417
|
+
if (!nodeObjectType || !nodeObjectType.$id) {
|
|
418
|
+
throw new Error(`NodeObjectType is not defined`);
|
|
419
|
+
}
|
|
420
|
+
return {
|
|
421
|
+
$ref: `#${nodeObjectType.$id}`,
|
|
422
|
+
};
|
|
423
|
+
},
|
|
424
|
+
};
|
|
425
|
+
const relationshipObjectType = {
|
|
426
|
+
extract: (relationshipObjectType) => ({
|
|
427
|
+
$id: relationshipObjectType.$id,
|
|
428
|
+
type: relationshipType.toRef(relationshipObjectType.type),
|
|
429
|
+
from: nodeObjectType.toRef(relationshipObjectType.from),
|
|
430
|
+
to: nodeObjectType.toRef(relationshipObjectType.to),
|
|
431
|
+
}),
|
|
432
|
+
create: (relationshipObjectType, relTypeLookup, nodeObjectTypeLookup) => {
|
|
433
|
+
return new RelationshipObjectType(relationshipObjectType.$id, relTypeLookup(relationshipObjectType.type.$ref), nodeObjectTypeLookup(relationshipObjectType.from.$ref, "from"), nodeObjectTypeLookup(relationshipObjectType.to.$ref, "to"));
|
|
434
|
+
},
|
|
435
|
+
toRef: (relationshipObjectType) => ({
|
|
436
|
+
$ref: `#${relationshipObjectType.$id}`,
|
|
437
|
+
}),
|
|
438
|
+
};
|
|
439
|
+
//# sourceMappingURL=extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../src/formatters/json/extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatters/json/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EACL,MAAM,EACN,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,OAAO,GACR,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PRIMITIVE_TYPE_OPTIONS, VECTOR_TYPE_OPTIONS, } from "../../model/index.js";
|
|
2
|
+
export const isPrimitivePropertyTypeJsonStruct = (propertyType) => {
|
|
3
|
+
return (typeof propertyType === "object" &&
|
|
4
|
+
"type" in propertyType &&
|
|
5
|
+
PRIMITIVE_TYPE_OPTIONS.some((p) => propertyType.type === p));
|
|
6
|
+
};
|
|
7
|
+
export const isPrimitiveArrayPropertyTypeJsonStruct = (propertyType) => {
|
|
8
|
+
return (typeof propertyType === "object" &&
|
|
9
|
+
"type" in propertyType &&
|
|
10
|
+
propertyType.type === "array" &&
|
|
11
|
+
propertyType.items !== undefined);
|
|
12
|
+
};
|
|
13
|
+
export const isVectorPropertyTypeJsonStruct = (propertyType) => {
|
|
14
|
+
return (typeof propertyType === "object" &&
|
|
15
|
+
propertyType.type === "vector" &&
|
|
16
|
+
propertyType.items !== undefined &&
|
|
17
|
+
typeof propertyType.items.type === "string" &&
|
|
18
|
+
VECTOR_TYPE_OPTIONS.some((p) => propertyType.items.type === p) &&
|
|
19
|
+
(propertyType.dimension === undefined || typeof propertyType.dimension === "number"));
|
|
20
|
+
};
|
|
21
|
+
export const isNodeLabelConstraintJsonStruct = (constraint) => {
|
|
22
|
+
return constraint.entityType === "node" && constraint.nodeLabel !== undefined;
|
|
23
|
+
};
|
|
24
|
+
export const isRelationshipTypeConstraintJsonStruct = (constraint) => {
|
|
25
|
+
return (constraint.entityType === "relationship" &&
|
|
26
|
+
constraint.relationshipType !== undefined);
|
|
27
|
+
};
|
|
28
|
+
export const isNodeLabelIndexJsonStruct = (index) => {
|
|
29
|
+
return index.nodeLabel !== undefined && index.indexType !== "lookup";
|
|
30
|
+
};
|
|
31
|
+
export const isRelationshipTypeIndexJsonStruct = (index) => {
|
|
32
|
+
return index.relationshipType !== undefined && index.indexType !== "lookup";
|
|
33
|
+
};
|
|
34
|
+
export const isLookupIndexJsonStruct = (index) => {
|
|
35
|
+
return index.indexType === "lookup";
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/formatters/json/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,sBAAsB,EACE,mBAAmB,GAC5C,MAAM,sBAAsB,CAAC;AA2H9B,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC/C,YAAoC,EACa,EAAE;IACnD,OAAO,CACL,OAAO,YAAY,KAAK,QAAQ;QAChC,MAAM,IAAI,YAAY;QACtB,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,CAAC,CAC5D,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CACpD,YAAoC,EACkB,EAAE;IACxD,OAAO,CACL,OAAO,YAAY,KAAK,QAAQ;QAChC,MAAM,IAAI,YAAY;QACtB,YAAY,CAAC,IAAI,KAAK,OAAO;QAC7B,YAAY,CAAC,KAAK,KAAK,SAAS,CACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,YAAoC,EACU,EAAE;IAChD,OAAO,CACL,OAAO,YAAY,KAAK,QAAQ;QAChC,YAAY,CAAC,IAAI,KAAK,QAAQ;QAC9B,YAAY,CAAC,KAAK,KAAK,SAAS;QAChC,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC3C,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;QAC9D,CAAC,YAAY,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,YAAY,CAAC,SAAS,KAAK,QAAQ,CAAC,CACrF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,UAAgC,EACa,EAAE;IAC/C,OAAO,UAAU,CAAC,UAAU,KAAK,MAAM,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CACpD,UAAgC,EACoB,EAAE;IACtD,OAAO,CACL,UAAU,CAAC,UAAU,KAAK,cAAc;QACxC,UAAU,CAAC,gBAAgB,KAAK,SAAS,CAC1C,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,KAAsB,EACa,EAAE;IACrC,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC/C,KAAsB,EACoB,EAAE;IAC5C,OAAO,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,KAAsB,EACU,EAAE;IAClC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC;AACtC,CAAC,CAAC"}
|