gremlin 3.7.5 → 3.8.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.
Files changed (88) hide show
  1. package/README.md +1 -1
  2. package/doc/AnonymousTraversalSource.html +82 -20
  3. package/doc/Authenticator.html +2 -2
  4. package/doc/Bytecode.html +2 -2
  5. package/doc/CardinalityValue.html +6 -6
  6. package/doc/Client.html +2 -2
  7. package/doc/Connection.html +5 -5
  8. package/doc/DriverRemoteConnection.html +2 -2
  9. package/doc/EdgeLabelVerificationStrategy.html +3 -17
  10. package/doc/Graph.html +2 -2
  11. package/doc/GraphSON2Reader.html +2 -2
  12. package/doc/GraphSON2Writer.html +2 -2
  13. package/doc/GraphSON3Reader.html +2 -2
  14. package/doc/GraphSON3Writer.html +2 -2
  15. package/doc/GraphTraversal.html +667 -333
  16. package/doc/GraphTraversalSource.html +23 -174
  17. package/doc/HaltedTraverserStrategy.html +2 -2
  18. package/doc/MatchAlgorithmStrategy.html +3 -3
  19. package/doc/P.html +147 -2
  20. package/doc/PartitionStrategy.html +3 -3
  21. package/doc/Path.html +3 -3
  22. package/doc/PlainTextSaslAuthenticator.html +2 -2
  23. package/doc/ProductiveByStrategy.html +7 -37
  24. package/doc/RemoteConnection.html +2 -2
  25. package/doc/RemoteStrategy.html +2 -2
  26. package/doc/RemoteTraversal.html +2 -2
  27. package/doc/ReservedKeysVerificationStrategy.html +3 -21
  28. package/doc/ResponseError.html +2 -2
  29. package/doc/ResultSet.html +2 -2
  30. package/doc/SaslAuthenticator.html +2 -2
  31. package/doc/SaslMechanismBase.html +2 -2
  32. package/doc/SaslMechanismPlain.html +2 -2
  33. package/doc/SeedStrategy.html +3 -3
  34. package/doc/SubgraphStrategy.html +3 -3
  35. package/doc/TextP.html +12 -12
  36. package/doc/Transaction.html +2 -2
  37. package/doc/Translator.html +2 -2
  38. package/doc/TraversalStrategies.html +2 -2
  39. package/doc/TraversalStrategy.html +2 -2
  40. package/doc/TypeSerializer.html +2 -2
  41. package/doc/driver_auth_authenticator.js.html +2 -2
  42. package/doc/driver_auth_mechanisms_sasl-mechanism-base.js.html +2 -2
  43. package/doc/driver_auth_mechanisms_sasl-mechanism-plain.js.html +2 -2
  44. package/doc/driver_auth_plain-text-sasl-authenticator.js.html +2 -2
  45. package/doc/driver_auth_sasl-authenticator.js.html +2 -2
  46. package/doc/driver_client.js.html +2 -2
  47. package/doc/driver_connection.js.html +9 -6
  48. package/doc/driver_driver-remote-connection.js.html +2 -2
  49. package/doc/driver_remote-connection.js.html +2 -2
  50. package/doc/driver_response-error.js.html +2 -2
  51. package/doc/driver_result-set.js.html +2 -2
  52. package/doc/global.html +91 -3
  53. package/doc/index.html +3 -3
  54. package/doc/module.exports.html +2 -2
  55. package/doc/process_anonymous-traversal.js.html +28 -18
  56. package/doc/process_bytecode.js.html +2 -2
  57. package/doc/process_graph-traversal.js.html +35 -34
  58. package/doc/process_transaction.js.html +2 -2
  59. package/doc/process_translator.js.html +2 -2
  60. package/doc/process_traversal-strategy.js.html +95 -33
  61. package/doc/process_traversal.js.html +21 -4
  62. package/doc/structure_graph.js.html +11 -21
  63. package/doc/structure_io_binary_internals_DataType.js.html +3 -2
  64. package/doc/structure_io_binary_internals_GraphBinaryReader.js.html +2 -2
  65. package/doc/structure_io_binary_internals_GraphBinaryWriter.js.html +2 -2
  66. package/doc/structure_io_graph-serializer.js.html +5 -3
  67. package/doc/structure_io_type-serializers.js.html +70 -8
  68. package/doc/utils.js.html +3 -3
  69. package/docker-compose.yml +2 -1
  70. package/lib/driver/connection.js +7 -4
  71. package/lib/process/anonymous-traversal.js +26 -16
  72. package/lib/process/graph-traversal.js +33 -32
  73. package/lib/process/traversal-strategy.js +93 -31
  74. package/lib/process/traversal.js +19 -2
  75. package/lib/structure/graph.js +9 -19
  76. package/lib/structure/io/binary/GraphBinary.js +3 -2
  77. package/lib/structure/io/binary/internals/AnySerializer.js +3 -0
  78. package/lib/structure/io/binary/internals/ClassSerializer.js +60 -0
  79. package/lib/structure/io/binary/internals/DataType.js +1 -0
  80. package/lib/structure/io/binary/internals/EnumSerializer.js +1 -0
  81. package/lib/structure/io/binary/internals/NumberSerializationStrategy.js +6 -1
  82. package/lib/structure/io/binary/internals/OffsetDateTimeSerializer.js +151 -0
  83. package/lib/structure/io/binary/internals/SetSerializer.js +134 -0
  84. package/lib/structure/io/binary/internals/TraversalStrategySerializer.js +1 -6
  85. package/lib/structure/io/graph-serializer.js +3 -1
  86. package/lib/structure/io/type-serializers.js +68 -6
  87. package/lib/utils.js +1 -1
  88. package/package.json +10 -6
@@ -74,9 +74,11 @@ class Graph {
74
74
  }
75
75
 
76
76
  class Element {
77
- constructor(id, label) {
77
+ // properties are stored as list of property objects
78
+ constructor(id, label, properties = []) {
78
79
  this.id = id;
79
80
  this.label = label;
81
+ this.properties = properties != null ? properties : [];
80
82
  }
81
83
 
82
84
  /**
@@ -90,9 +92,8 @@ class Element {
90
92
  }
91
93
 
92
94
  class Vertex extends Element {
93
- constructor(id, label, properties) {
94
- super(id, label);
95
- this.properties = properties;
95
+ constructor(id, label, properties = []) {
96
+ super(id, label, properties);
96
97
  }
97
98
 
98
99
  toString() {
@@ -101,20 +102,10 @@ class Vertex extends Element {
101
102
  }
102
103
 
103
104
  class Edge extends Element {
104
- constructor(id, outV, label, inV, properties) {
105
- super(id, label);
105
+ constructor(id, outV, label, inV, properties = []) {
106
+ super(id, label, properties);
106
107
  this.outV = outV;
107
108
  this.inV = inV;
108
- this.properties = {};
109
- if (properties) {
110
- if (Array.isArray(properties)) {
111
- // Handle array of Property objects
112
- properties.forEach((prop) => (this.properties[prop.key] = prop.value));
113
- } else {
114
- // Handle object format as before
115
- Object.keys(properties).forEach((k) => (this.properties[k] = properties[k].value));
116
- }
117
- }
118
109
  }
119
110
 
120
111
  toString() {
@@ -126,11 +117,10 @@ class Edge extends Element {
126
117
  }
127
118
 
128
119
  class VertexProperty extends Element {
129
- constructor(id, label, value, properties) {
130
- super(id, label);
120
+ constructor(id, label, value, properties = []) {
121
+ super(id, label, properties);
131
122
  this.value = value;
132
123
  this.key = this.label;
133
- this.properties = properties;
134
124
  }
135
125
 
136
126
  toString() {
@@ -228,13 +218,13 @@ module.exports = {
228
218
  </div>
229
219
 
230
220
  <nav>
231
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
221
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#deserializeProperties">deserializeProperties</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
232
222
  </nav>
233
223
 
234
224
  <br class="clear">
235
225
 
236
226
  <footer>
237
- Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 10:18:37 GMT-0800 (Pacific Standard Time)
227
+ Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 15:09:27 GMT-0800 (Pacific Standard Time)
238
228
  </footer>
239
229
 
240
230
  <script> prettyPrint(); </script>
@@ -103,6 +103,7 @@ const DataType = {
103
103
  TRAVERSALMETRICS: 0x2d,
104
104
  MERGE: 0x2e,
105
105
  DT: 0x2f,
106
+ GTYPE: 0x30,
106
107
 
107
108
  CHAR: 0x80,
108
109
  DURATION: 0x81,
@@ -135,13 +136,13 @@ module.exports = DataType;
135
136
  </div>
136
137
 
137
138
  <nav>
138
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
139
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#deserializeProperties">deserializeProperties</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
139
140
  </nav>
140
141
 
141
142
  <br class="clear">
142
143
 
143
144
  <footer>
144
- Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 10:18:37 GMT-0800 (Pacific Standard Time)
145
+ Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 15:09:27 GMT-0800 (Pacific Standard Time)
145
146
  </footer>
146
147
 
147
148
  <script> prettyPrint(); </script>
@@ -118,13 +118,13 @@ module.exports = class GraphBinaryReader {
118
118
  </div>
119
119
 
120
120
  <nav>
121
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
121
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#deserializeProperties">deserializeProperties</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
122
122
  </nav>
123
123
 
124
124
  <br class="clear">
125
125
 
126
126
  <footer>
127
- Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 10:18:37 GMT-0800 (Pacific Standard Time)
127
+ Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 15:09:27 GMT-0800 (Pacific Standard Time)
128
128
  </footer>
129
129
 
130
130
  <script> prettyPrint(); </script>
@@ -121,13 +121,13 @@ module.exports = class GraphBinaryWriter {
121
121
  </div>
122
122
 
123
123
  <nav>
124
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
124
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#deserializeProperties">deserializeProperties</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
125
125
  </nav>
126
126
 
127
127
  <br class="clear">
128
128
 
129
129
  <footer>
130
- Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 10:18:37 GMT-0800 (Pacific Standard Time)
130
+ Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 15:09:27 GMT-0800 (Pacific Standard Time)
131
131
  </footer>
132
132
 
133
133
  <script> prettyPrint(); </script>
@@ -281,6 +281,7 @@ const graphSON2Deserializers = {
281
281
  'g:Float': typeSerializers.NumberSerializer,
282
282
  'g:Double': typeSerializers.NumberSerializer,
283
283
  'g:Date': typeSerializers.DateSerializer,
284
+ 'gx:OffsetDateTime': typeSerializers.OffsetDateTimeSerializer,
284
285
  'g:Direction': typeSerializers.DirectionSerializer,
285
286
  'g:Vertex': typeSerializers.VertexSerializer,
286
287
  'g:Edge': typeSerializers.EdgeSerializer,
@@ -300,12 +301,13 @@ const graphSON3Deserializers = Object.assign({}, graphSON2Deserializers, {
300
301
 
301
302
  const graphSON2Serializers = [
302
303
  typeSerializers.NumberSerializer,
303
- typeSerializers.DateSerializer,
304
+ typeSerializers.OffsetDateTimeSerializer,
304
305
  typeSerializers.BytecodeSerializer,
305
306
  typeSerializers.TraverserSerializer,
306
307
  typeSerializers.TraversalStrategySerializer,
307
308
  typeSerializers.PSerializer,
308
309
  typeSerializers.TextPSerializer,
310
+ typeSerializers.ClassSerializer,
309
311
  typeSerializers.LambdaSerializer,
310
312
  typeSerializers.EnumSerializer,
311
313
  typeSerializers.VertexSerializer,
@@ -337,13 +339,13 @@ module.exports = {
337
339
  </div>
338
340
 
339
341
  <nav>
340
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
342
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#deserializeProperties">deserializeProperties</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
341
343
  </nav>
342
344
 
343
345
  <br class="clear">
344
346
 
345
347
  <footer>
346
- Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 10:18:37 GMT-0800 (Pacific Standard Time)
348
+ Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 15:09:27 GMT-0800 (Pacific Standard Time)
347
349
  </footer>
348
350
 
349
351
  <script> prettyPrint(); </script>
@@ -115,10 +115,18 @@ class NumberSerializer extends TypeSerializer {
115
115
  }
116
116
 
117
117
  class DateSerializer extends TypeSerializer {
118
+ // only deserialize g:Date objects
119
+ deserialize(obj) {
120
+ return new Date(obj[valueKey]);
121
+ }
122
+ }
123
+
124
+ class OffsetDateTimeSerializer extends TypeSerializer {
125
+ // Date objects are serialized as OffsetDateTime by default
118
126
  serialize(item) {
119
127
  return {
120
- [typeKey]: 'g:Date',
121
- [valueKey]: item.getTime(),
128
+ [typeKey]: 'gx:OffsetDateTime',
129
+ [valueKey]: item.toISOString(),
122
130
  };
123
131
  }
124
132
 
@@ -131,6 +139,24 @@ class DateSerializer extends TypeSerializer {
131
139
  }
132
140
  }
133
141
 
142
+ class ClassSerializer extends TypeSerializer {
143
+ serialize(item) {
144
+ return {
145
+ [typeKey]: 'g:Class',
146
+ [valueKey]: new item().fqcn,
147
+ };
148
+ }
149
+
150
+ canBeUsedFor(value) {
151
+ return (
152
+ typeof value === 'function' &amp;&amp;
153
+ !!value.prototype &amp;&amp;
154
+ !!value.prototype.constructor.name &amp;&amp;
155
+ new value() instanceof ts.TraversalStrategy
156
+ );
157
+ }
158
+ }
159
+
134
160
  class LongSerializer extends TypeSerializer {
135
161
  serialize(item) {
136
162
  return {
@@ -304,7 +330,7 @@ class TraversalStrategySerializer extends TypeSerializer {
304
330
 
305
331
  return {
306
332
  [typeKey]: 'g:' + item.constructor.name,
307
- [valueKey]: conf,
333
+ [valueKey]: { ['fqcn']: item.fqcn, ['conf']: conf },
308
334
  };
309
335
  }
310
336
 
@@ -313,10 +339,29 @@ class TraversalStrategySerializer extends TypeSerializer {
313
339
  }
314
340
  }
315
341
 
342
+ /**
343
+ * Helper function to deserialize properties into arrays of VertexProperty or Property according to graphSONV3.
344
+ */
345
+ function deserializeProperties(value, reader) {
346
+ let properties = [];
347
+ if ('properties' in value) {
348
+ const props = reader.read(value['properties']);
349
+ if (props !== null &amp;&amp; props !== undefined) {
350
+ properties = Object.entries(props).flatMap(([key, values]) => {
351
+ if (Array.isArray(values) &amp;&amp; values.length > 0 &amp;&amp; values[0] instanceof g.VertexProperty) {
352
+ return values; // Flatten VertexProperty arrays
353
+ }
354
+ return values instanceof g.Property ? values : new g.Property(key, values); // create Property object when needed
355
+ });
356
+ }
357
+ }
358
+ return properties;
359
+ }
360
+
316
361
  class VertexSerializer extends TypeSerializer {
317
362
  deserialize(obj) {
318
363
  const value = obj[valueKey];
319
- return new g.Vertex(this.reader.read(value['id']), value['label'], this.reader.read(value['properties']));
364
+ return new g.Vertex(this.reader.read(value['id']), value['label'], deserializeProperties(value, this.reader));
320
365
  }
321
366
 
322
367
  /** @param {Vertex} item */
@@ -342,7 +387,7 @@ class VertexPropertySerializer extends TypeSerializer {
342
387
  this.reader.read(value['id']),
343
388
  value['label'],
344
389
  this.reader.read(value['value']),
345
- this.reader.read(value['properties']),
390
+ deserializeProperties(value, this.reader),
346
391
  );
347
392
  }
348
393
  }
@@ -362,7 +407,7 @@ class EdgeSerializer extends TypeSerializer {
362
407
  new g.Vertex(this.reader.read(value['outV']), this.reader.read(value['outVLabel'])),
363
408
  value['label'],
364
409
  new g.Vertex(this.reader.read(value['inV']), this.reader.read(value['inVLabel'])),
365
- this.reader.read(value['properties']),
410
+ deserializeProperties(value, this.reader),
366
411
  );
367
412
  }
368
413
 
@@ -502,12 +547,29 @@ class SetSerializer extends ArraySerializer {
502
547
  constructor() {
503
548
  super('g:Set');
504
549
  }
550
+
551
+ deserialize(obj) {
552
+ return new Set(super.deserialize(obj));
553
+ }
554
+
555
+ serialize(item) {
556
+ return {
557
+ [typeKey]: this.typeKey,
558
+ [valueKey]: [...item].map((x) => this.writer.adaptObject(x)),
559
+ };
560
+ }
561
+
562
+ canBeUsedFor(value) {
563
+ return value instanceof Set;
564
+ }
505
565
  }
506
566
 
507
567
  module.exports = {
508
568
  BulkSetSerializer,
509
569
  BytecodeSerializer,
570
+ ClassSerializer,
510
571
  DateSerializer,
572
+ OffsetDateTimeSerializer,
511
573
  DirectionSerializer,
512
574
  EdgeSerializer,
513
575
  EnumSerializer,
@@ -540,13 +602,13 @@ module.exports = {
540
602
  </div>
541
603
 
542
604
  <nav>
543
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
605
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#deserializeProperties">deserializeProperties</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
544
606
  </nav>
545
607
 
546
608
  <br class="clear">
547
609
 
548
610
  <footer>
549
- Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 10:18:37 GMT-0800 (Pacific Standard Time)
611
+ Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 15:09:27 GMT-0800 (Pacific Standard Time)
550
612
  </footer>
551
613
 
552
614
  <script> prettyPrint(); </script>
package/doc/utils.js.html CHANGED
@@ -53,7 +53,7 @@
53
53
 
54
54
  const uuid = require('uuid');
55
55
 
56
- const gremlinVersion = '3.7.5'; // DO NOT MODIFY - Configured automatically by Maven Replacer Plugin
56
+ const gremlinVersion = '3.8.0'; // DO NOT MODIFY - Configured automatically by Maven Replacer Plugin
57
57
 
58
58
  exports.toLong = function toLong(value) {
59
59
  return new Long(value);
@@ -166,13 +166,13 @@ module.exports.DeferredPromise = DeferredPromise;
166
166
  </div>
167
167
 
168
168
  <nav>
169
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
169
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="AnonymousTraversalSource.html">AnonymousTraversalSource</a></li><li><a href="Authenticator.html">Authenticator</a></li><li><a href="Bytecode.html">Bytecode</a></li><li><a href="CardinalityValue.html">CardinalityValue</a></li><li><a href="Client.html">Client</a></li><li><a href="Connection.html">Connection</a></li><li><a href="DriverRemoteConnection.html">DriverRemoteConnection</a></li><li><a href="EdgeLabelVerificationStrategy.html">EdgeLabelVerificationStrategy</a></li><li><a href="Graph.html">Graph</a></li><li><a href="GraphSON2Reader.html">GraphSON2Reader</a></li><li><a href="GraphSON2Writer.html">GraphSON2Writer</a></li><li><a href="GraphSON3Reader.html">GraphSON3Reader</a></li><li><a href="GraphSON3Writer.html">GraphSON3Writer</a></li><li><a href="GraphTraversal.html">GraphTraversal</a></li><li><a href="GraphTraversalSource.html">GraphTraversalSource</a></li><li><a href="HaltedTraverserStrategy.html">HaltedTraverserStrategy</a></li><li><a href="MatchAlgorithmStrategy.html">MatchAlgorithmStrategy</a></li><li><a href="module.exports.html">exports</a></li><li><a href="P.html">P</a></li><li><a href="PartitionStrategy.html">PartitionStrategy</a></li><li><a href="Path.html">Path</a></li><li><a href="PlainTextSaslAuthenticator.html">PlainTextSaslAuthenticator</a></li><li><a href="ProductiveByStrategy.html">ProductiveByStrategy</a></li><li><a href="RemoteConnection.html">RemoteConnection</a></li><li><a href="RemoteStrategy.html">RemoteStrategy</a></li><li><a href="RemoteTraversal.html">RemoteTraversal</a></li><li><a href="ReservedKeysVerificationStrategy.html">ReservedKeysVerificationStrategy</a></li><li><a href="ResponseError.html">ResponseError</a></li><li><a href="ResultSet.html">ResultSet</a></li><li><a href="SaslAuthenticator.html">SaslAuthenticator</a></li><li><a href="SaslMechanismBase.html">SaslMechanismBase</a></li><li><a href="SaslMechanismPlain.html">SaslMechanismPlain</a></li><li><a href="SeedStrategy.html">SeedStrategy</a></li><li><a href="SubgraphStrategy.html">SubgraphStrategy</a></li><li><a href="TextP.html">TextP</a></li><li><a href="Transaction.html">Transaction</a></li><li><a href="Translator.html">Translator</a></li><li><a href="TraversalStrategies.html">TraversalStrategies</a></li><li><a href="TraversalStrategy.html">TraversalStrategy</a></li><li><a href="TypeSerializer.html">TypeSerializer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#DataType">DataType</a></li><li><a href="global.html#deserializeProperties">deserializeProperties</a></li><li><a href="global.html#statics">statics</a></li><li><a href="global.html#toArrayBuffer">toArrayBuffer</a></li></ul>
170
170
  </nav>
171
171
 
172
172
  <br class="clear">
173
173
 
174
174
  <footer>
175
- Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 10:18:37 GMT-0800 (Pacific Standard Time)
175
+ Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Mon Nov 17 2025 15:09:27 GMT-0800 (Pacific Standard Time)
176
176
  </footer>
177
177
 
178
178
  <script> prettyPrint(); </script>
@@ -43,7 +43,7 @@ services:
43
43
 
44
44
  gremlin-js-integration-tests:
45
45
  container_name: gremlin-js-integration-tests
46
- image: node:20
46
+ image: node:${NODE_VERSION:-20}
47
47
  volumes:
48
48
  - .:/js_app
49
49
  - ../../../../../gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features:/gremlin-test
@@ -58,6 +58,7 @@ services:
58
58
  depends_on:
59
59
  gremlin-server-test-js:
60
60
  condition: service_healthy
61
+
61
62
  gremlin-socket-server:
62
63
  container_name: gremlin-socket-server-js
63
64
  image: tinkerpop/gremlin-socket-server:${GREMLIN_SERVER}
@@ -39,7 +39,7 @@ const responseStatusCode = {
39
39
  authenticationChallenge: 407,
40
40
  };
41
41
 
42
- const defaultMimeType = 'application/vnd.gremlin-v3.0+json';
42
+ const defaultMimeType = 'application/vnd.graphbinary-v1.0';
43
43
  const graphSON2MimeType = 'application/vnd.gremlin-v2.0+json';
44
44
  const graphBinaryMimeType = 'application/vnd.graphbinary-v1.0';
45
45
 
@@ -135,9 +135,12 @@ class Connection extends EventEmitter {
135
135
  'perMessageDeflate',
136
136
  ]);
137
137
  // Check if any `ws` specific options are provided and are non-null / non-undefined
138
- const hasWsSpecificOptions = Object.entries(this.options).some(
139
- ([key, value]) => wsSpecificOptions.has(key) && ![null, undefined].includes(value),
140
- );
138
+ const hasWsSpecificOptions =
139
+ Object.entries(this.options).some(
140
+ ([key, value]) => wsSpecificOptions.has(key) && ![null, undefined].includes(value),
141
+ ) ||
142
+ this._enableCompression || // we need to check the presence of this variable and pass this into ws
143
+ this._enableUserAgentOnConnect; // global websocket will send "node" as user agent by default which doesn't comply with Gremlin
141
144
  // Only use the global websocket if we don't have any unsupported options
142
145
  const useGlobalWebSocket = !hasWsSpecificOptions && globalThis.WebSocket;
143
146
  const WebSocket = useGlobalWebSocket || (await import('ws')).default;
@@ -20,8 +20,11 @@
20
20
  'use strict';
21
21
 
22
22
  const graphTraversalModule = require('./graph-traversal');
23
+ const remote = require('../driver/remote-connection');
23
24
  const TraversalStrategies = require('./traversal-strategy').TraversalStrategies;
24
25
  const GraphTraversalSource = graphTraversalModule.GraphTraversalSource;
26
+ const GraphTraversal = graphTraversalModule.GraphTraversal;
27
+ const Bytecode = require('./bytecode');
25
28
  const Graph = require('../structure/graph').Graph;
26
29
 
27
30
  /**
@@ -33,44 +36,51 @@ class AnonymousTraversalSource {
33
36
  /**
34
37
  * Creates a new instance of {@code AnonymousTraversalSource}.
35
38
  * @param {Function} [traversalSourceClass] Optional {@code GraphTraversalSource} constructor.
39
+ * @param {Function} [traversalClass] Optional {@code GraphTraversal} constructor.
36
40
  */
37
- constructor(traversalSourceClass) {
41
+ constructor(traversalSourceClass, traversalClass) {
38
42
  this.traversalSourceClass = traversalSourceClass;
43
+ this.traversalClass = traversalClass;
39
44
  }
40
45
 
41
46
  /**
42
47
  * Constructs an {@code AnonymousTraversalSource} which will then be configured to spawn a
43
48
  * {@link GraphTraversalSource}.
44
49
  * @param {Function} [traversalSourceClass] Optional {@code GraphTraversalSource} constructor.
50
+ * @param {Function} [traversalClass] Optional {@code GraphTraversalSource} constructor.
45
51
  * @returns {AnonymousTraversalSource}.
46
52
  */
47
- static traversal(traversalSourceClass) {
48
- return new AnonymousTraversalSource(traversalSourceClass || GraphTraversalSource);
53
+ static traversal(traversalSourceClass, traversalClass) {
54
+ return new AnonymousTraversalSource(traversalSourceClass || GraphTraversalSource, traversalClass || GraphTraversal);
49
55
  }
50
56
 
51
57
  /**
52
58
  * Creates a {@link GraphTraversalSource} binding a {@link RemoteConnection} to a remote {@link Graph} instances as its
53
59
  * reference so that traversals spawned from it will execute over that reference.
54
- * @param {RemoteConnection} remoteConnection
60
+ * @param {RemoteConnection} connection
55
61
  * @return {GraphTraversalSource}
56
62
  */
57
- withRemote(remoteConnection) {
58
- return this.withGraph(new Graph()).withRemote(remoteConnection);
63
+ with_(connection) {
64
+ const traversalStrategies = new TraversalStrategies();
65
+ traversalStrategies.addStrategy(new remote.RemoteStrategy(connection));
66
+ return new this.traversalSourceClass(
67
+ new Graph(),
68
+ traversalStrategies,
69
+ new Bytecode(),
70
+ this.traversalSourceClass,
71
+ this.traversalClass,
72
+ );
59
73
  }
60
74
 
61
75
  /**
62
- * Creates the specified {@link GraphTraversalSource} binding an embedded {@link Graph} as its reference such that
63
- * traversals spawned from it will execute over that reference. As there are no "embedded Graph" instances in
64
- * gremlin-javascript as there on the JVM, the {@link GraphTraversalSource} can only ever be constructed as "empty"
65
- * with a {@link Graph} instance (which is only a reference to a graph and is not capable of holding data). As a
66
- * result, the {@link GraphTraversalSource} will do nothing unless a "remote" is then assigned to it later.
67
- * @param {Graph} graph
76
+ * Creates a {@link GraphTraversalSource} binding a {@link RemoteConnection} to a remote {@link Graph} instances as its
77
+ * reference so that traversals spawned from it will execute over that reference.
78
+ * @param {RemoteConnection} remoteConnection
68
79
  * @return {GraphTraversalSource}
69
- * @deprecated As of release 3.4.9, prefer {@link withRemote} until some form of "embedded graph" becomes available
70
- * at which point there will be support for {@code withEmbedded} which is part of the canonical Java API.
80
+ * @deprecated As of release 3.8.0, prefer {@link with_}.
71
81
  */
72
- withGraph(graph) {
73
- return new this.traversalSourceClass(graph, new TraversalStrategies());
82
+ withRemote(remoteConnection) {
83
+ return this.with_(remoteConnection);
74
84
  }
75
85
  }
76
86