grafeo-ogm 2.1.0 → 2.2.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/CHANGELOG.md +71 -0
- package/README.md +49 -0
- package/dist/cjs/compilers/mutation.compiler.d.ts.map +1 -1
- package/dist/cjs/compilers/mutation.compiler.js +23 -23
- package/dist/cjs/compilers/mutation.compiler.js.map +1 -1
- package/dist/cjs/compilers/where.compiler.d.ts +83 -6
- package/dist/cjs/compilers/where.compiler.d.ts.map +1 -1
- package/dist/cjs/compilers/where.compiler.js +156 -76
- package/dist/cjs/compilers/where.compiler.js.map +1 -1
- package/dist/cjs/execution/executor.d.ts +11 -1
- package/dist/cjs/execution/executor.d.ts.map +1 -1
- package/dist/cjs/execution/executor.js +6 -3
- package/dist/cjs/execution/executor.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/model.d.ts +38 -1
- package/dist/cjs/model.d.ts.map +1 -1
- package/dist/cjs/model.js +120 -2
- package/dist/cjs/model.js.map +1 -1
- package/dist/cjs/ogm.d.ts.map +1 -1
- package/dist/cjs/ogm.js +1 -0
- package/dist/cjs/ogm.js.map +1 -1
- package/dist/cjs/policy/explain.d.ts +59 -0
- package/dist/cjs/policy/explain.d.ts.map +1 -0
- package/dist/cjs/policy/explain.js +175 -0
- package/dist/cjs/policy/explain.js.map +1 -0
- package/dist/cjs/policy/resolver.d.ts +26 -2
- package/dist/cjs/policy/resolver.d.ts.map +1 -1
- package/dist/cjs/policy/resolver.js +103 -33
- package/dist/cjs/policy/resolver.js.map +1 -1
- package/dist/cjs/policy/types.d.ts +87 -0
- package/dist/cjs/policy/types.d.ts.map +1 -1
- package/dist/cjs/utils/write-coercion.d.ts +20 -19
- package/dist/cjs/utils/write-coercion.d.ts.map +1 -1
- package/dist/cjs/utils/write-coercion.js +120 -50
- package/dist/cjs/utils/write-coercion.js.map +1 -1
- package/dist/esm/compilers/mutation.compiler.d.ts.map +1 -1
- package/dist/esm/compilers/mutation.compiler.js +24 -24
- package/dist/esm/compilers/mutation.compiler.js.map +1 -1
- package/dist/esm/compilers/where.compiler.d.ts +83 -6
- package/dist/esm/compilers/where.compiler.d.ts.map +1 -1
- package/dist/esm/compilers/where.compiler.js +156 -77
- package/dist/esm/compilers/where.compiler.js.map +1 -1
- package/dist/esm/execution/executor.d.ts +11 -1
- package/dist/esm/execution/executor.d.ts.map +1 -1
- package/dist/esm/execution/executor.js +6 -3
- package/dist/esm/execution/executor.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model.d.ts +38 -1
- package/dist/esm/model.d.ts.map +1 -1
- package/dist/esm/model.js +121 -3
- package/dist/esm/model.js.map +1 -1
- package/dist/esm/ogm.d.ts.map +1 -1
- package/dist/esm/ogm.js +1 -0
- package/dist/esm/ogm.js.map +1 -1
- package/dist/esm/policy/explain.d.ts +59 -0
- package/dist/esm/policy/explain.d.ts.map +1 -0
- package/dist/esm/policy/explain.js +169 -0
- package/dist/esm/policy/explain.js.map +1 -0
- package/dist/esm/policy/resolver.d.ts +26 -2
- package/dist/esm/policy/resolver.d.ts.map +1 -1
- package/dist/esm/policy/resolver.js +102 -33
- package/dist/esm/policy/resolver.js.map +1 -1
- package/dist/esm/policy/types.d.ts +87 -0
- package/dist/esm/policy/types.d.ts.map +1 -1
- package/dist/esm/utils/write-coercion.d.ts +20 -19
- package/dist/esm/utils/write-coercion.d.ts.map +1 -1
- package/dist/esm/utils/write-coercion.js +118 -48
- package/dist/esm/utils/write-coercion.js.map +1 -1
- package/package.json +1 -1
|
@@ -22,33 +22,34 @@ import type { PropertyDefinition } from '../schema/types';
|
|
|
22
22
|
export declare function coerceWriteValue(value: unknown, propDef: PropertyDefinition | undefined): unknown;
|
|
23
23
|
/**
|
|
24
24
|
* Wrap a write RHS expression (`$param`, or an UNWIND item reference) in
|
|
25
|
-
* the field's
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
25
|
+
* the field's Cypher constructor — temporal (`datetime()`, ...) for
|
|
26
|
+
* ISO-string inputs, `point()` for plain point maps — so the stored
|
|
27
|
+
* property is the native type the schema declares. Reads convert native
|
|
28
|
+
* values to plain JS (ResultMapper); this is the write half of the same
|
|
29
|
+
* round-trip symmetry issue #5 fixed for integers.
|
|
29
30
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
31
|
+
* Driver-native values (temporal instances, Point instances) bind raw.
|
|
32
|
+
* List fields wrap element-wise via a list comprehension, following the
|
|
33
|
+
* constructor's element rule (see WriteConstructor.arrayMode).
|
|
33
34
|
*/
|
|
34
|
-
export declare function
|
|
35
|
+
export declare function wrapWriteExpr(expr: string, value: unknown, propDef: PropertyDefinition | undefined): string;
|
|
35
36
|
/**
|
|
36
|
-
*
|
|
37
|
+
* Constructor wrapping for UNWIND item references (`item.prop`,
|
|
37
38
|
* `connItem.edge.prop`), where ONE Cypher expression serves EVERY item in
|
|
38
39
|
* the batch: the wrap decision must hold for all items' values for the
|
|
39
|
-
* key. A
|
|
40
|
-
* cannot be correct for both
|
|
40
|
+
* key. A column mixing constructor inputs with driver-native values
|
|
41
|
+
* throws — a single expression cannot be correct for both.
|
|
41
42
|
*/
|
|
42
|
-
export declare function
|
|
43
|
+
export declare function wrapListItemExpr(expr: string, values: unknown[], propDef: PropertyDefinition | undefined): string;
|
|
43
44
|
/**
|
|
44
|
-
* Wrap a WHERE parameter reference for a
|
|
45
|
-
* stored
|
|
46
|
-
* cross-type comparison — Neo4j evaluates it to NULL and silently
|
|
47
|
-
* the row. `suffix` is the operator suffix (`''` for plain
|
|
48
|
-
* only comparison-shaped operators wrap, and `_IN`/`_NOT_IN`
|
|
49
|
-
* list param element-wise.
|
|
45
|
+
* Wrap a WHERE parameter reference for a constructor-typed field. With
|
|
46
|
+
* properties stored natively, comparing them to a raw string/map param is
|
|
47
|
+
* a cross-type comparison — Neo4j evaluates it to NULL and silently
|
|
48
|
+
* drops the row. `suffix` is the operator suffix (`''` for plain
|
|
49
|
+
* equality); only comparison-shaped operators wrap, and `_IN`/`_NOT_IN`
|
|
50
|
+
* wrap their list param element-wise.
|
|
50
51
|
*/
|
|
51
|
-
export declare function
|
|
52
|
+
export declare function wrapWhereParam(paramRef: string, value: unknown, propDef: PropertyDefinition | undefined, suffix: string): string;
|
|
52
53
|
/**
|
|
53
54
|
* Materialize a parsed `@default` into a driver-ready bound value. The
|
|
54
55
|
* parser stores every default as a string (`'true'`, `'5'`, `'WELCOME'`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-coercion.d.ts","sourceRoot":"","sources":["../../../src/utils/write-coercion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"write-coercion.d.ts","sourceRoot":"","sources":["../../../src/utils/write-coercion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAkI1D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,OAAO,CAWT;AAqCD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,MAAM,CAWR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EAAE,EACjB,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,MAAM,CAwBR;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,MAAM,EAAE,MAAM,GACb,MAAM,CAYR;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAc7E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { int, isInt } from 'neo4j-driver';
|
|
1
|
+
import { int, isInt, isPoint } from 'neo4j-driver';
|
|
2
2
|
import { OGMError } from '../errors';
|
|
3
3
|
/**
|
|
4
4
|
* GraphQL scalar types whose Neo4j storage type is INTEGER (Long).
|
|
@@ -20,14 +20,22 @@ const TEMPORAL_CONSTRUCTORS = {
|
|
|
20
20
|
LocalTime: 'localtime',
|
|
21
21
|
Duration: 'duration',
|
|
22
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* Spatial scalar types → Cypher's `point()` constructor. Reads flatten a
|
|
25
|
+
* native Point into a plain `{ x, y[, z], srid }` object (ResultMapper),
|
|
26
|
+
* and `point()` accepts exactly that map back — `srid` key included — so
|
|
27
|
+
* wrapping makes the read → write round-trip exact. Without the wrapper
|
|
28
|
+
* the plain object is bound as a map property value, which Neo4j rejects
|
|
29
|
+
* at runtime ("Property values can only be of primitive types...").
|
|
30
|
+
*/
|
|
31
|
+
const POINT_SCALAR_TYPES = new Set(['Point', 'CartesianPoint']);
|
|
23
32
|
/**
|
|
24
33
|
* Where-operator suffixes whose parameter is compared against the field
|
|
25
|
-
* value (`''` = plain equality) and therefore needs the same
|
|
26
|
-
*
|
|
27
|
-
* `
|
|
28
|
-
* strings by definition.
|
|
34
|
+
* value (`''` = plain equality) and therefore needs the same constructor
|
|
35
|
+
* treatment as writes. String operators (`_CONTAINS`, `_STARTS_WITH`,
|
|
36
|
+
* `_MATCHES`, ...) are excluded — their params are strings by definition.
|
|
29
37
|
*/
|
|
30
|
-
const
|
|
38
|
+
const COMPARABLE_SUFFIXES = new Set([
|
|
31
39
|
'',
|
|
32
40
|
'_NOT',
|
|
33
41
|
'_GT',
|
|
@@ -37,6 +45,56 @@ const TEMPORAL_COMPARABLE_SUFFIXES = new Set([
|
|
|
37
45
|
'_IN',
|
|
38
46
|
'_NOT_IN',
|
|
39
47
|
]);
|
|
48
|
+
function isTemporalStringInput(value) {
|
|
49
|
+
return typeof value === 'string';
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A plain object shaped like `point()` input: cartesian (`x`/`y`) or
|
|
53
|
+
* geographic (`longitude`/`latitude`), optionally with `z`/`height` and
|
|
54
|
+
* `srid`/`crs`. Driver Point instances are NOT inputs — they pack
|
|
55
|
+
* natively and `point()` would reject them.
|
|
56
|
+
*/
|
|
57
|
+
function isPointWriteInput(value) {
|
|
58
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
59
|
+
return false;
|
|
60
|
+
if (isPoint(value) || isInt(value))
|
|
61
|
+
return false;
|
|
62
|
+
const candidate = value;
|
|
63
|
+
const cartesian = typeof candidate.x === 'number' && typeof candidate.y === 'number';
|
|
64
|
+
const geographic = typeof candidate.longitude === 'number' &&
|
|
65
|
+
typeof candidate.latitude === 'number';
|
|
66
|
+
return cartesian || geographic;
|
|
67
|
+
}
|
|
68
|
+
function resolveWriteConstructor(propDef) {
|
|
69
|
+
const temporal = TEMPORAL_CONSTRUCTORS[propDef.type];
|
|
70
|
+
if (temporal !== undefined)
|
|
71
|
+
return { fn: temporal, wraps: isTemporalStringInput, arrayMode: 'any' };
|
|
72
|
+
if (POINT_SCALAR_TYPES.has(propDef.type))
|
|
73
|
+
return { fn: 'point', wraps: isPointWriteInput, arrayMode: 'all' };
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Decide whether a list of element values should be wrapped element-wise.
|
|
78
|
+
* `'any'` mode wraps as soon as one element is constructor input; `'all'`
|
|
79
|
+
* mode requires uniformity and throws on a mix, because the constructor
|
|
80
|
+
* cannot be applied to the already-native elements.
|
|
81
|
+
*/
|
|
82
|
+
function decideElementsWrap(elements, ctor, propDef) {
|
|
83
|
+
const defined = elements.filter((el) => el !== null && el !== undefined);
|
|
84
|
+
if (defined.length === 0)
|
|
85
|
+
return false;
|
|
86
|
+
const matches = defined.filter((el) => ctor.wraps(el)).length;
|
|
87
|
+
if (matches === 0)
|
|
88
|
+
return false;
|
|
89
|
+
if (ctor.arrayMode === 'any')
|
|
90
|
+
return true;
|
|
91
|
+
if (matches !== defined.length)
|
|
92
|
+
throw new OGMError(`Mixed input representations for ${propDef.type} field "${propDef.name}": ` +
|
|
93
|
+
`some values are plain ${ctor.fn}() inputs, others are driver-native values. ` +
|
|
94
|
+
`${ctor.fn}() cannot be applied to an already-native value, so every value ` +
|
|
95
|
+
`must use the same representation.`);
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
40
98
|
/**
|
|
41
99
|
* Coerce a JS write value bound for an `Int`/`BigInt`-typed schema field
|
|
42
100
|
* into a Neo4j Integer so the stored property is a Long, not a Double.
|
|
@@ -101,83 +159,95 @@ function coerceIntegerElement(value, propDef) {
|
|
|
101
159
|
}
|
|
102
160
|
/**
|
|
103
161
|
* Wrap a write RHS expression (`$param`, or an UNWIND item reference) in
|
|
104
|
-
* the field's
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
162
|
+
* the field's Cypher constructor — temporal (`datetime()`, ...) for
|
|
163
|
+
* ISO-string inputs, `point()` for plain point maps — so the stored
|
|
164
|
+
* property is the native type the schema declares. Reads convert native
|
|
165
|
+
* values to plain JS (ResultMapper); this is the write half of the same
|
|
166
|
+
* round-trip symmetry issue #5 fixed for integers.
|
|
108
167
|
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
168
|
+
* Driver-native values (temporal instances, Point instances) bind raw.
|
|
169
|
+
* List fields wrap element-wise via a list comprehension, following the
|
|
170
|
+
* constructor's element rule (see WriteConstructor.arrayMode).
|
|
112
171
|
*/
|
|
113
|
-
export function
|
|
172
|
+
export function wrapWriteExpr(expr, value, propDef) {
|
|
114
173
|
if (propDef === undefined)
|
|
115
174
|
return expr;
|
|
116
|
-
const ctor =
|
|
175
|
+
const ctor = resolveWriteConstructor(propDef);
|
|
117
176
|
if (ctor === undefined)
|
|
118
177
|
return expr;
|
|
119
178
|
if (propDef.isArray) {
|
|
120
|
-
if (!Array.isArray(value)
|
|
179
|
+
if (!Array.isArray(value))
|
|
180
|
+
return expr;
|
|
181
|
+
if (!decideElementsWrap(value, ctor, propDef))
|
|
121
182
|
return expr;
|
|
122
|
-
return `[wc_t IN ${expr} | ${ctor}(wc_t)]`;
|
|
183
|
+
return `[wc_t IN ${expr} | ${ctor.fn}(wc_t)]`;
|
|
123
184
|
}
|
|
124
|
-
if (
|
|
185
|
+
if (!ctor.wraps(value))
|
|
125
186
|
return expr;
|
|
126
|
-
return `${ctor}(${expr})`;
|
|
187
|
+
return `${ctor.fn}(${expr})`;
|
|
127
188
|
}
|
|
128
189
|
/**
|
|
129
|
-
*
|
|
190
|
+
* Constructor wrapping for UNWIND item references (`item.prop`,
|
|
130
191
|
* `connItem.edge.prop`), where ONE Cypher expression serves EVERY item in
|
|
131
192
|
* the batch: the wrap decision must hold for all items' values for the
|
|
132
|
-
* key. A
|
|
133
|
-
* cannot be correct for both
|
|
193
|
+
* key. A column mixing constructor inputs with driver-native values
|
|
194
|
+
* throws — a single expression cannot be correct for both.
|
|
134
195
|
*/
|
|
135
|
-
export function
|
|
196
|
+
export function wrapListItemExpr(expr, values, propDef) {
|
|
136
197
|
if (propDef === undefined)
|
|
137
198
|
return expr;
|
|
138
|
-
const ctor =
|
|
199
|
+
const ctor = resolveWriteConstructor(propDef);
|
|
139
200
|
if (ctor === undefined)
|
|
140
201
|
return expr;
|
|
202
|
+
if (propDef.isArray) {
|
|
203
|
+
const flattened = values
|
|
204
|
+
.filter((v) => Array.isArray(v))
|
|
205
|
+
.flat();
|
|
206
|
+
if (flattened.length === 0)
|
|
207
|
+
return expr;
|
|
208
|
+
if (!decideElementsWrap(flattened, ctor, propDef))
|
|
209
|
+
return expr;
|
|
210
|
+
return `[wc_t IN ${expr} | ${ctor.fn}(wc_t)]`;
|
|
211
|
+
}
|
|
141
212
|
const defined = values.filter((v) => v !== null && v !== undefined);
|
|
142
213
|
if (defined.length === 0)
|
|
143
214
|
return expr;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return anyString ? `[wc_t IN ${expr} | ${ctor}(wc_t)]` : expr;
|
|
147
|
-
}
|
|
148
|
-
const stringCount = defined.filter((v) => typeof v === 'string').length;
|
|
149
|
-
if (stringCount === 0)
|
|
215
|
+
const matches = defined.filter((v) => ctor.wraps(v)).length;
|
|
216
|
+
if (matches === 0)
|
|
150
217
|
return expr;
|
|
151
|
-
if (
|
|
152
|
-
throw new OGMError(`Mixed input types for ${propDef.type} field "${propDef.name}": some items pass
|
|
153
|
-
`
|
|
154
|
-
`per field, so every item must use the same
|
|
155
|
-
|
|
218
|
+
if (matches !== defined.length)
|
|
219
|
+
throw new OGMError(`Mixed input types for ${propDef.type} field "${propDef.name}": some items pass ` +
|
|
220
|
+
`plain ${ctor.fn}() inputs, others pass driver-native values. Batched writes ` +
|
|
221
|
+
`share one Cypher expression per field, so every item must use the same ` +
|
|
222
|
+
`representation.`);
|
|
223
|
+
return `${ctor.fn}(${expr})`;
|
|
156
224
|
}
|
|
157
225
|
/**
|
|
158
|
-
* Wrap a WHERE parameter reference for a
|
|
159
|
-
* stored
|
|
160
|
-
* cross-type comparison — Neo4j evaluates it to NULL and silently
|
|
161
|
-
* the row. `suffix` is the operator suffix (`''` for plain
|
|
162
|
-
* only comparison-shaped operators wrap, and `_IN`/`_NOT_IN`
|
|
163
|
-
* list param element-wise.
|
|
226
|
+
* Wrap a WHERE parameter reference for a constructor-typed field. With
|
|
227
|
+
* properties stored natively, comparing them to a raw string/map param is
|
|
228
|
+
* a cross-type comparison — Neo4j evaluates it to NULL and silently
|
|
229
|
+
* drops the row. `suffix` is the operator suffix (`''` for plain
|
|
230
|
+
* equality); only comparison-shaped operators wrap, and `_IN`/`_NOT_IN`
|
|
231
|
+
* wrap their list param element-wise.
|
|
164
232
|
*/
|
|
165
|
-
export function
|
|
233
|
+
export function wrapWhereParam(paramRef, value, propDef, suffix) {
|
|
166
234
|
if (propDef === undefined)
|
|
167
235
|
return paramRef;
|
|
168
|
-
const ctor =
|
|
236
|
+
const ctor = resolveWriteConstructor(propDef);
|
|
169
237
|
if (ctor === undefined)
|
|
170
238
|
return paramRef;
|
|
171
|
-
if (!
|
|
239
|
+
if (!COMPARABLE_SUFFIXES.has(suffix))
|
|
172
240
|
return paramRef;
|
|
173
241
|
if (suffix === '_IN' || suffix === '_NOT_IN') {
|
|
174
|
-
if (!Array.isArray(value)
|
|
242
|
+
if (!Array.isArray(value))
|
|
243
|
+
return paramRef;
|
|
244
|
+
if (!decideElementsWrap(value, ctor, propDef))
|
|
175
245
|
return paramRef;
|
|
176
|
-
return `[wc_t IN ${paramRef} | ${ctor}(wc_t)]`;
|
|
246
|
+
return `[wc_t IN ${paramRef} | ${ctor.fn}(wc_t)]`;
|
|
177
247
|
}
|
|
178
|
-
if (
|
|
248
|
+
if (!ctor.wraps(value))
|
|
179
249
|
return paramRef;
|
|
180
|
-
return `${ctor}(${paramRef})`;
|
|
250
|
+
return `${ctor.fn}(${paramRef})`;
|
|
181
251
|
}
|
|
182
252
|
/**
|
|
183
253
|
* Materialize a parsed `@default` into a driver-ready bound value. The
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-coercion.js","sourceRoot":"","sources":["../../../src/utils/write-coercion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"write-coercion.js","sourceRoot":"","sources":["../../../src/utils/write-coercion.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "grafeo-ogm",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Type-safe Neo4j ORM / OGM for TypeScript. Define your graph in GraphQL SDL, get fully typed Prisma-like CRUD, optimized Cypher, and zero-config code generation. Community successor to @neo4j/graphql-ogm.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Alejandro Guzman",
|