gremlin 3.5.2 → 3.5.3
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/.eslintrc.js +154 -0
- package/.prettierrc.js +29 -0
- package/Gruntfile.js +15 -16
- package/doc/AnonymousTraversalSource.html +4 -4
- package/doc/Authenticator.html +1 -1
- package/doc/Bytecode.html +6 -6
- package/doc/Client.html +137 -63
- package/doc/Connection.html +88 -4
- package/doc/DriverRemoteConnection.html +10 -10
- package/doc/EdgeLabelVerificationStrategy.html +1 -1
- package/doc/Graph.html +1 -1
- package/doc/GraphSON2Reader.html +3 -3
- package/doc/GraphSON2Writer.html +2 -2
- package/doc/GraphSON3Reader.html +2 -2
- package/doc/GraphSON3Writer.html +2 -2
- package/doc/GraphTraversal.html +106 -106
- package/doc/GraphTraversalSource.html +18 -18
- package/doc/HaltedTraverserStrategy.html +2 -2
- package/doc/MatchAlgorithmStrategy.html +2 -2
- package/doc/P.html +12 -12
- package/doc/PartitionStrategy.html +2 -2
- package/doc/Path.html +1 -1
- package/doc/PlainTextSaslAuthenticator.html +1 -1
- package/doc/ProductiveByStrategy.html +1 -1
- package/doc/RemoteConnection.html +9 -9
- package/doc/RemoteStrategy.html +3 -3
- package/doc/RemoteTraversal.html +2 -2
- package/doc/ReservedKeysVerificationStrategy.html +2 -2
- package/doc/ResponseError.html +1 -1
- package/doc/ResultSet.html +6 -6
- package/doc/SaslAuthenticator.html +1 -1
- package/doc/SaslMechanismBase.html +1 -1
- package/doc/SaslMechanismPlain.html +5 -5
- package/doc/SeedStrategy.html +2 -2
- package/doc/SubgraphStrategy.html +2 -2
- package/doc/TextP.html +9 -9
- package/doc/Transaction.html +5 -5
- package/doc/Translator.html +1 -1
- package/doc/TraversalStrategies.html +4 -4
- package/doc/TraversalStrategy.html +2 -2
- package/doc/TypeSerializer.html +1 -1
- package/doc/driver_auth_authenticator.js.html +3 -3
- package/doc/driver_auth_mechanisms_sasl-mechanism-base.js.html +2 -2
- package/doc/driver_auth_mechanisms_sasl-mechanism-plain.js.html +25 -16
- package/doc/driver_auth_plain-text-sasl-authenticator.js.html +6 -6
- package/doc/driver_auth_sasl-authenticator.js.html +2 -2
- package/doc/driver_client.js.html +69 -23
- package/doc/driver_connection.js.html +107 -88
- package/doc/driver_driver-remote-connection.js.html +11 -10
- package/doc/driver_remote-connection.js.html +3 -4
- package/doc/driver_response-error.js.html +4 -3
- package/doc/driver_result-set.js.html +3 -3
- package/doc/global.html +199 -2
- package/doc/index.html +1 -1
- package/doc/process_anonymous-traversal.js.html +3 -3
- package/doc/process_bytecode.js.html +10 -8
- package/doc/process_graph-traversal.js.html +193 -142
- package/doc/process_transaction.js.html +15 -8
- package/doc/process_translator.js.html +13 -10
- package/doc/process_traversal-strategy.js.html +59 -53
- package/doc/process_traversal.js.html +100 -107
- package/doc/structure_graph.js.html +6 -6
- package/doc/structure_io_graph-serializer.js.html +64 -17
- package/doc/structure_io_type-serializers.js.html +85 -88
- package/index.js +5 -5
- package/lib/driver/auth/authenticator.js +2 -2
- package/lib/driver/auth/mechanisms/sasl-mechanism-base.js +1 -1
- package/lib/driver/auth/mechanisms/sasl-mechanism-plain.js +24 -15
- package/lib/driver/auth/plain-text-sasl-authenticator.js +5 -5
- package/lib/driver/auth/sasl-authenticator.js +1 -1
- package/lib/driver/client.js +68 -22
- package/lib/driver/connection.js +106 -87
- package/lib/driver/driver-remote-connection.js +10 -9
- package/lib/driver/remote-connection.js +2 -3
- package/lib/driver/response-error.js +2 -2
- package/lib/driver/result-set.js +1 -2
- package/lib/process/anonymous-traversal.js +1 -2
- package/lib/process/bytecode.js +9 -7
- package/lib/process/graph-traversal.js +191 -141
- package/lib/process/transaction.js +13 -7
- package/lib/process/translator.js +11 -9
- package/lib/process/traversal-strategy.js +57 -52
- package/lib/process/traversal.js +99 -106
- package/lib/structure/graph.js +5 -5
- package/lib/structure/io/graph-serializer.js +62 -16
- package/lib/structure/io/type-serializers.js +84 -87
- package/lib/utils.js +15 -10
- package/package.json +10 -5
|
@@ -53,38 +53,36 @@ class NumberSerializer extends TypeSerializer {
|
|
|
53
53
|
if (isNaN(item)) {
|
|
54
54
|
return {
|
|
55
55
|
[typeKey]: 'g:Double',
|
|
56
|
-
[valueKey]: 'NaN'
|
|
56
|
+
[valueKey]: 'NaN',
|
|
57
57
|
};
|
|
58
58
|
} else if (item === Number.POSITIVE_INFINITY) {
|
|
59
59
|
return {
|
|
60
60
|
[typeKey]: 'g:Double',
|
|
61
|
-
[valueKey]: 'Infinity'
|
|
61
|
+
[valueKey]: 'Infinity',
|
|
62
62
|
};
|
|
63
63
|
} else if (item === Number.NEGATIVE_INFINITY) {
|
|
64
64
|
return {
|
|
65
65
|
[typeKey]: 'g:Double',
|
|
66
|
-
[valueKey]: '-Infinity'
|
|
66
|
+
[valueKey]: '-Infinity',
|
|
67
67
|
};
|
|
68
|
-
} else {
|
|
69
|
-
return item;
|
|
70
68
|
}
|
|
69
|
+
return item;
|
|
71
70
|
}
|
|
72
71
|
|
|
73
72
|
deserialize(obj) {
|
|
74
|
-
|
|
73
|
+
const val = obj[valueKey];
|
|
75
74
|
if (val === 'NaN') {
|
|
76
75
|
return NaN;
|
|
77
76
|
} else if (val === 'Infinity') {
|
|
78
77
|
return Number.POSITIVE_INFINITY;
|
|
79
78
|
} else if (val === '-Infinity') {
|
|
80
79
|
return Number.NEGATIVE_INFINITY;
|
|
81
|
-
} else {
|
|
82
|
-
return parseFloat(val);
|
|
83
80
|
}
|
|
81
|
+
return parseFloat(val);
|
|
84
82
|
}
|
|
85
83
|
|
|
86
84
|
canBeUsedFor(value) {
|
|
87
|
-
return
|
|
85
|
+
return typeof value === 'number';
|
|
88
86
|
}
|
|
89
87
|
}
|
|
90
88
|
|
|
@@ -92,7 +90,7 @@ class DateSerializer extends TypeSerializer {
|
|
|
92
90
|
serialize(item) {
|
|
93
91
|
return {
|
|
94
92
|
[typeKey]: 'g:Date',
|
|
95
|
-
[valueKey]: item.getTime()
|
|
93
|
+
[valueKey]: item.getTime(),
|
|
96
94
|
};
|
|
97
95
|
}
|
|
98
96
|
|
|
@@ -101,7 +99,7 @@ class DateSerializer extends TypeSerializer {
|
|
|
101
99
|
}
|
|
102
100
|
|
|
103
101
|
canBeUsedFor(value) {
|
|
104
|
-
return
|
|
102
|
+
return value instanceof Date;
|
|
105
103
|
}
|
|
106
104
|
}
|
|
107
105
|
|
|
@@ -109,12 +107,12 @@ class LongSerializer extends TypeSerializer {
|
|
|
109
107
|
serialize(item) {
|
|
110
108
|
return {
|
|
111
109
|
[typeKey]: 'g:Int64',
|
|
112
|
-
[valueKey]: item.value
|
|
110
|
+
[valueKey]: item.value,
|
|
113
111
|
};
|
|
114
112
|
}
|
|
115
113
|
|
|
116
114
|
canBeUsedFor(value) {
|
|
117
|
-
return
|
|
115
|
+
return value instanceof utils.Long;
|
|
118
116
|
}
|
|
119
117
|
}
|
|
120
118
|
|
|
@@ -126,7 +124,7 @@ class BytecodeSerializer extends TypeSerializer {
|
|
|
126
124
|
}
|
|
127
125
|
const result = {};
|
|
128
126
|
result[typeKey] = 'g:Bytecode';
|
|
129
|
-
const resultValue = result[valueKey] = {};
|
|
127
|
+
const resultValue = (result[valueKey] = {});
|
|
130
128
|
const sources = this._serializeInstructions(bytecode.sourceInstructions);
|
|
131
129
|
if (sources) {
|
|
132
130
|
resultValue['source'] = sources;
|
|
@@ -145,13 +143,13 @@ class BytecodeSerializer extends TypeSerializer {
|
|
|
145
143
|
const result = new Array(instructions.length);
|
|
146
144
|
result[0] = instructions[0];
|
|
147
145
|
for (let i = 0; i < instructions.length; i++) {
|
|
148
|
-
result[i] = instructions[i].map(item => this.writer.adaptObject(item));
|
|
146
|
+
result[i] = instructions[i].map((item) => this.writer.adaptObject(item));
|
|
149
147
|
}
|
|
150
148
|
return result;
|
|
151
149
|
}
|
|
152
150
|
|
|
153
151
|
canBeUsedFor(value) {
|
|
154
|
-
return
|
|
152
|
+
return value instanceof Bytecode || value instanceof t.Traversal;
|
|
155
153
|
}
|
|
156
154
|
}
|
|
157
155
|
|
|
@@ -160,20 +158,19 @@ class PSerializer extends TypeSerializer {
|
|
|
160
158
|
serialize(item) {
|
|
161
159
|
const result = {};
|
|
162
160
|
result[typeKey] = 'g:P';
|
|
163
|
-
const resultValue = result[valueKey] = {
|
|
164
|
-
|
|
165
|
-
};
|
|
161
|
+
const resultValue = (result[valueKey] = {
|
|
162
|
+
predicate: item.operator,
|
|
163
|
+
});
|
|
166
164
|
if (item.other === undefined || item.other === null) {
|
|
167
165
|
resultValue['value'] = this.writer.adaptObject(item.value);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
resultValue['value'] = [ this.writer.adaptObject(item.value), this.writer.adaptObject(item.other) ];
|
|
166
|
+
} else {
|
|
167
|
+
resultValue['value'] = [this.writer.adaptObject(item.value), this.writer.adaptObject(item.other)];
|
|
171
168
|
}
|
|
172
169
|
return result;
|
|
173
170
|
}
|
|
174
171
|
|
|
175
172
|
canBeUsedFor(value) {
|
|
176
|
-
return
|
|
173
|
+
return value instanceof t.P;
|
|
177
174
|
}
|
|
178
175
|
}
|
|
179
176
|
|
|
@@ -182,20 +179,19 @@ class TextPSerializer extends TypeSerializer {
|
|
|
182
179
|
serialize(item) {
|
|
183
180
|
const result = {};
|
|
184
181
|
result[typeKey] = 'g:TextP';
|
|
185
|
-
const resultValue = result[valueKey] = {
|
|
186
|
-
|
|
187
|
-
};
|
|
182
|
+
const resultValue = (result[valueKey] = {
|
|
183
|
+
predicate: item.operator,
|
|
184
|
+
});
|
|
188
185
|
if (item.other === undefined || item.other === null) {
|
|
189
186
|
resultValue['value'] = this.writer.adaptObject(item.value);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
resultValue['value'] = [ this.writer.adaptObject(item.value), this.writer.adaptObject(item.other) ];
|
|
187
|
+
} else {
|
|
188
|
+
resultValue['value'] = [this.writer.adaptObject(item.value), this.writer.adaptObject(item.other)];
|
|
193
189
|
}
|
|
194
190
|
return result;
|
|
195
191
|
}
|
|
196
192
|
|
|
197
193
|
canBeUsedFor(value) {
|
|
198
|
-
return
|
|
194
|
+
return value instanceof t.TextP;
|
|
199
195
|
}
|
|
200
196
|
}
|
|
201
197
|
|
|
@@ -205,27 +201,30 @@ class LambdaSerializer extends TypeSerializer {
|
|
|
205
201
|
const lambdaDef = item();
|
|
206
202
|
|
|
207
203
|
// check if the language is specified otherwise assume gremlin-groovy.
|
|
208
|
-
const returnIsString = typeof
|
|
204
|
+
const returnIsString = typeof lambdaDef === 'string';
|
|
209
205
|
const script = returnIsString ? lambdaDef : lambdaDef[0];
|
|
210
|
-
const lang = returnIsString ?
|
|
206
|
+
const lang = returnIsString ? 'gremlin-groovy' : lambdaDef[1];
|
|
211
207
|
|
|
212
208
|
// detect argument count
|
|
213
|
-
const argCount =
|
|
214
|
-
|
|
215
|
-
|
|
209
|
+
const argCount =
|
|
210
|
+
lang === 'gremlin-groovy' && script.includes('->')
|
|
211
|
+
? script.substring(0, script.indexOf('->')).includes(',')
|
|
212
|
+
? 2
|
|
213
|
+
: 1
|
|
214
|
+
: -1;
|
|
216
215
|
|
|
217
216
|
return {
|
|
218
217
|
[typeKey]: 'g:Lambda',
|
|
219
218
|
[valueKey]: {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
219
|
+
arguments: argCount,
|
|
220
|
+
language: lang,
|
|
221
|
+
script: script,
|
|
222
|
+
},
|
|
224
223
|
};
|
|
225
224
|
}
|
|
226
225
|
|
|
227
226
|
canBeUsedFor(value) {
|
|
228
|
-
return
|
|
227
|
+
return typeof value === 'function';
|
|
229
228
|
}
|
|
230
229
|
}
|
|
231
230
|
|
|
@@ -234,7 +233,7 @@ class EnumSerializer extends TypeSerializer {
|
|
|
234
233
|
serialize(item) {
|
|
235
234
|
return {
|
|
236
235
|
[typeKey]: 'g:' + item.typeName,
|
|
237
|
-
[valueKey]: item.elementName
|
|
236
|
+
[valueKey]: item.elementName,
|
|
238
237
|
};
|
|
239
238
|
}
|
|
240
239
|
|
|
@@ -249,9 +248,9 @@ class TraverserSerializer extends TypeSerializer {
|
|
|
249
248
|
return {
|
|
250
249
|
[typeKey]: 'g:Traverser',
|
|
251
250
|
[valueKey]: {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
}
|
|
251
|
+
value: this.writer.adaptObject(item.object),
|
|
252
|
+
bulk: this.writer.adaptObject(item.bulk),
|
|
253
|
+
},
|
|
255
254
|
};
|
|
256
255
|
}
|
|
257
256
|
|
|
@@ -261,7 +260,7 @@ class TraverserSerializer extends TypeSerializer {
|
|
|
261
260
|
}
|
|
262
261
|
|
|
263
262
|
canBeUsedFor(value) {
|
|
264
|
-
return
|
|
263
|
+
return value instanceof t.Traverser;
|
|
265
264
|
}
|
|
266
265
|
}
|
|
267
266
|
|
|
@@ -269,7 +268,7 @@ class TraversalStrategySerializer extends TypeSerializer {
|
|
|
269
268
|
/** @param {TraversalStrategy} item */
|
|
270
269
|
serialize(item) {
|
|
271
270
|
const conf = {};
|
|
272
|
-
for (
|
|
271
|
+
for (const k in item.configuration) {
|
|
273
272
|
if (item.configuration.hasOwnProperty(k)) {
|
|
274
273
|
conf[k] = this.writer.adaptObject(item.configuration[k]);
|
|
275
274
|
}
|
|
@@ -277,12 +276,12 @@ class TraversalStrategySerializer extends TypeSerializer {
|
|
|
277
276
|
|
|
278
277
|
return {
|
|
279
278
|
[typeKey]: 'g:' + item.constructor.name,
|
|
280
|
-
[valueKey]: conf
|
|
279
|
+
[valueKey]: conf,
|
|
281
280
|
};
|
|
282
281
|
}
|
|
283
282
|
|
|
284
283
|
canBeUsedFor(value) {
|
|
285
|
-
return
|
|
284
|
+
return value instanceof ts.TraversalStrategy;
|
|
286
285
|
}
|
|
287
286
|
}
|
|
288
287
|
|
|
@@ -297,14 +296,14 @@ class VertexSerializer extends TypeSerializer {
|
|
|
297
296
|
return {
|
|
298
297
|
[typeKey]: 'g:Vertex',
|
|
299
298
|
[valueKey]: {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
}
|
|
299
|
+
id: this.writer.adaptObject(item.id),
|
|
300
|
+
label: item.label,
|
|
301
|
+
},
|
|
303
302
|
};
|
|
304
303
|
}
|
|
305
304
|
|
|
306
305
|
canBeUsedFor(value) {
|
|
307
|
-
return
|
|
306
|
+
return value instanceof g.Vertex;
|
|
308
307
|
}
|
|
309
308
|
}
|
|
310
309
|
|
|
@@ -315,7 +314,7 @@ class VertexPropertySerializer extends TypeSerializer {
|
|
|
315
314
|
this.reader.read(value['id']),
|
|
316
315
|
value['label'],
|
|
317
316
|
this.reader.read(value['value']),
|
|
318
|
-
this.reader.read(value['properties'])
|
|
317
|
+
this.reader.read(value['properties']),
|
|
319
318
|
);
|
|
320
319
|
}
|
|
321
320
|
}
|
|
@@ -323,9 +322,7 @@ class VertexPropertySerializer extends TypeSerializer {
|
|
|
323
322
|
class PropertySerializer extends TypeSerializer {
|
|
324
323
|
deserialize(obj) {
|
|
325
324
|
const value = obj[valueKey];
|
|
326
|
-
return new g.Property(
|
|
327
|
-
value['key'],
|
|
328
|
-
this.reader.read(value['value']));
|
|
325
|
+
return new g.Property(value['key'], this.reader.read(value['value']));
|
|
329
326
|
}
|
|
330
327
|
}
|
|
331
328
|
|
|
@@ -337,7 +334,7 @@ class EdgeSerializer extends TypeSerializer {
|
|
|
337
334
|
new g.Vertex(this.reader.read(value['outV']), this.reader.read(value['outVLabel'])),
|
|
338
335
|
value['label'],
|
|
339
336
|
new g.Vertex(this.reader.read(value['inV']), this.reader.read(value['inVLabel'])),
|
|
340
|
-
this.reader.read(value['properties'])
|
|
337
|
+
this.reader.read(value['properties']),
|
|
341
338
|
);
|
|
342
339
|
}
|
|
343
340
|
|
|
@@ -346,25 +343,25 @@ class EdgeSerializer extends TypeSerializer {
|
|
|
346
343
|
return {
|
|
347
344
|
[typeKey]: 'g:Edge',
|
|
348
345
|
[valueKey]: {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
}
|
|
346
|
+
id: this.writer.adaptObject(item.id),
|
|
347
|
+
label: item.label,
|
|
348
|
+
outV: this.writer.adaptObject(item.outV.id),
|
|
349
|
+
outVLabel: item.outV.label,
|
|
350
|
+
inV: this.writer.adaptObject(item.inV.id),
|
|
351
|
+
inVLabel: item.inV.label,
|
|
352
|
+
},
|
|
356
353
|
};
|
|
357
354
|
}
|
|
358
355
|
|
|
359
356
|
canBeUsedFor(value) {
|
|
360
|
-
return
|
|
357
|
+
return value instanceof g.Edge;
|
|
361
358
|
}
|
|
362
359
|
}
|
|
363
360
|
|
|
364
361
|
class PathSerializer extends TypeSerializer {
|
|
365
362
|
deserialize(obj) {
|
|
366
363
|
const value = obj[valueKey];
|
|
367
|
-
const objects = value['objects'].map(o => this.reader.read(o));
|
|
364
|
+
const objects = value['objects'].map((o) => this.reader.read(o));
|
|
368
365
|
return new g.Path(this.reader.read(value['labels']), objects);
|
|
369
366
|
}
|
|
370
367
|
}
|
|
@@ -383,9 +380,9 @@ class TSerializer extends TypeSerializer {
|
|
|
383
380
|
}
|
|
384
381
|
|
|
385
382
|
class DirectionSerializer extends TypeSerializer {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
383
|
+
deserialize(obj) {
|
|
384
|
+
return t.direction[obj[valueKey].toLowerCase()];
|
|
385
|
+
}
|
|
389
386
|
}
|
|
390
387
|
|
|
391
388
|
class ArraySerializer extends TypeSerializer {
|
|
@@ -399,14 +396,14 @@ class ArraySerializer extends TypeSerializer {
|
|
|
399
396
|
if (!Array.isArray(value)) {
|
|
400
397
|
throw new Error('Expected Array, obtained: ' + value);
|
|
401
398
|
}
|
|
402
|
-
return value.map(x => this.reader.read(x));
|
|
399
|
+
return value.map((x) => this.reader.read(x));
|
|
403
400
|
}
|
|
404
401
|
|
|
405
402
|
/** @param {Array} item */
|
|
406
403
|
serialize(item) {
|
|
407
404
|
return {
|
|
408
405
|
[typeKey]: this.typeKey,
|
|
409
|
-
[valueKey]: item.map(x => this.writer.adaptObject(x))
|
|
406
|
+
[valueKey]: item.map((x) => this.writer.adaptObject(x)),
|
|
410
407
|
};
|
|
411
408
|
}
|
|
412
409
|
|
|
@@ -417,22 +414,22 @@ class ArraySerializer extends TypeSerializer {
|
|
|
417
414
|
|
|
418
415
|
class BulkSetSerializer extends TypeSerializer {
|
|
419
416
|
deserialize(obj) {
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
417
|
+
const value = obj[valueKey];
|
|
418
|
+
if (!Array.isArray(value)) {
|
|
419
|
+
throw new Error('Expected Array, obtained: ' + value);
|
|
420
|
+
}
|
|
424
421
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
422
|
+
// coerce the BulkSet to List. if the bulk exceeds the int space then we can't coerce to List anyway,
|
|
423
|
+
// so this query will be trouble. we'd need a legit BulkSet implementation here in js. this current
|
|
424
|
+
// implementation is here to replicate the previous functionality that existed on the server side in
|
|
425
|
+
// previous versions.
|
|
426
|
+
let result = [];
|
|
427
|
+
for (let ix = 0, iy = value.length; ix < iy; ix += 2) {
|
|
428
|
+
const pair = value.slice(ix, ix + 2);
|
|
429
|
+
result = result.concat(Array(this.reader.read(pair[1])).fill(this.reader.read(pair[0])));
|
|
430
|
+
}
|
|
434
431
|
|
|
435
|
-
|
|
432
|
+
return result;
|
|
436
433
|
}
|
|
437
434
|
}
|
|
438
435
|
|
|
@@ -458,7 +455,7 @@ class MapSerializer extends TypeSerializer {
|
|
|
458
455
|
});
|
|
459
456
|
return {
|
|
460
457
|
[typeKey]: 'g:Map',
|
|
461
|
-
[valueKey]: arr
|
|
458
|
+
[valueKey]: arr,
|
|
462
459
|
};
|
|
463
460
|
}
|
|
464
461
|
|
|
@@ -503,5 +500,5 @@ module.exports = {
|
|
|
503
500
|
typeKey,
|
|
504
501
|
valueKey,
|
|
505
502
|
VertexPropertySerializer,
|
|
506
|
-
VertexSerializer
|
|
503
|
+
VertexSerializer,
|
|
507
504
|
};
|
package/lib/utils.js
CHANGED
|
@@ -29,12 +29,12 @@ exports.toLong = function toLong(value) {
|
|
|
29
29
|
return new Long(value);
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
const Long = exports.Long = function Long(value) {
|
|
32
|
+
const Long = (exports.Long = function Long(value) {
|
|
33
33
|
if (typeof value !== 'string' && typeof value !== 'number') {
|
|
34
34
|
throw new TypeError('The value must be a string or a number');
|
|
35
35
|
}
|
|
36
36
|
this.value = value.toString();
|
|
37
|
-
};
|
|
37
|
+
});
|
|
38
38
|
|
|
39
39
|
exports.getUuid = function getUuid() {
|
|
40
40
|
const buffer = crypto.randomBytes(16);
|
|
@@ -48,11 +48,16 @@ exports.getUuid = function getUuid() {
|
|
|
48
48
|
buffer[8] |= 0x80;
|
|
49
49
|
const hex = buffer.toString('hex');
|
|
50
50
|
return (
|
|
51
|
-
hex.substr(0, 8) +
|
|
52
|
-
|
|
53
|
-
hex.substr(
|
|
54
|
-
|
|
55
|
-
hex.substr(
|
|
51
|
+
hex.substr(0, 8) +
|
|
52
|
+
'-' +
|
|
53
|
+
hex.substr(8, 4) +
|
|
54
|
+
'-' +
|
|
55
|
+
hex.substr(12, 4) +
|
|
56
|
+
'-' +
|
|
57
|
+
hex.substr(16, 4) +
|
|
58
|
+
'-' +
|
|
59
|
+
hex.substr(20, 12)
|
|
60
|
+
);
|
|
56
61
|
};
|
|
57
62
|
|
|
58
63
|
exports.emptyArray = Object.freeze([]);
|
|
@@ -62,15 +67,15 @@ class ImmutableMap extends Map {
|
|
|
62
67
|
super(iterable);
|
|
63
68
|
}
|
|
64
69
|
|
|
65
|
-
set(){
|
|
70
|
+
set() {
|
|
66
71
|
return this;
|
|
67
72
|
}
|
|
68
73
|
|
|
69
|
-
['delete'](){
|
|
74
|
+
['delete']() {
|
|
70
75
|
return false;
|
|
71
76
|
}
|
|
72
77
|
|
|
73
|
-
clear() {
|
|
78
|
+
clear() {}
|
|
74
79
|
}
|
|
75
80
|
|
|
76
81
|
exports.ImmutableMap = ImmutableMap;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gremlin",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.3",
|
|
4
4
|
"description": "JavaScript Gremlin Language Variant",
|
|
5
5
|
"author": "Apache TinkerPop team",
|
|
6
6
|
"keywords": [
|
|
@@ -18,12 +18,16 @@
|
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"chai": "~4.1.2",
|
|
21
|
+
"colors": "1.4.0",
|
|
21
22
|
"cucumber": "~4.2.1",
|
|
22
|
-
"
|
|
23
|
+
"eslint": "^7.32.0",
|
|
24
|
+
"eslint-config-prettier": "^8.5.0",
|
|
25
|
+
"eslint-plugin-prettier": "^4.0.0",
|
|
26
|
+
"grunt": "^1.4.1",
|
|
23
27
|
"grunt-cli": "~1.3.2",
|
|
24
28
|
"grunt-jsdoc": "~2.4.1",
|
|
25
|
-
"mocha": "
|
|
26
|
-
"
|
|
29
|
+
"mocha": "^9.2.2",
|
|
30
|
+
"prettier": "^2.5.1"
|
|
27
31
|
},
|
|
28
32
|
"repository": {
|
|
29
33
|
"type": "git",
|
|
@@ -36,7 +40,8 @@
|
|
|
36
40
|
"scripts": {
|
|
37
41
|
"test": "./node_modules/mocha/bin/mocha test/unit test/integration -t 5000",
|
|
38
42
|
"features": "./node_modules/.bin/cucumber-js --require test/cucumber ../../../../../gremlin-test/features/",
|
|
39
|
-
"unit-test": "./node_modules/mocha/bin/mocha test/unit"
|
|
43
|
+
"unit-test": "./node_modules/mocha/bin/mocha test/unit",
|
|
44
|
+
"lint": "eslint --ext .js ."
|
|
40
45
|
},
|
|
41
46
|
"engines": {
|
|
42
47
|
"node": ">=10"
|