gremlin 4.0.0-beta.2 → 4.0.0-beta.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.
Files changed (261) hide show
  1. package/build/cjs/driver/auth.cjs +11 -4
  2. package/build/cjs/driver/auth.d.cts +1 -1
  3. package/build/cjs/driver/client.cjs +82 -38
  4. package/build/cjs/driver/client.d.cts +30 -27
  5. package/build/cjs/driver/connection.cjs +173 -60
  6. package/build/cjs/driver/connection.d.cts +69 -26
  7. package/build/cjs/driver/dispatcher.browser.cjs +57 -0
  8. package/build/cjs/driver/dispatcher.browser.d.cts +35 -0
  9. package/build/cjs/driver/dispatcher.cjs +101 -0
  10. package/build/cjs/driver/dispatcher.d.cts +48 -0
  11. package/build/cjs/driver/driver-remote-connection.cjs +27 -15
  12. package/build/cjs/driver/driver-remote-connection.d.cts +10 -4
  13. package/build/cjs/driver/http-request.cjs +64 -0
  14. package/build/cjs/driver/http-request.d.cts +28 -0
  15. package/build/cjs/driver/logger.cjs +45 -0
  16. package/build/cjs/driver/logger.d.cts +29 -0
  17. package/build/cjs/driver/remote-connection.cjs +5 -8
  18. package/build/cjs/driver/remote-connection.d.cts +6 -21
  19. package/build/cjs/driver/request-message.cjs +110 -21
  20. package/build/cjs/driver/request-message.d.cts +38 -8
  21. package/build/cjs/driver/response-error.cjs +3 -3
  22. package/build/cjs/driver/response-error.d.cts +2 -2
  23. package/build/cjs/index.cjs +21 -0
  24. package/build/cjs/index.d.cts +47 -0
  25. package/build/cjs/language/grammar/GremlinLexer.cjs +1669 -1615
  26. package/build/cjs/language/grammar/GremlinLexer.d.cts +325 -316
  27. package/build/cjs/language/grammar/GremlinListener.cjs +322 -8
  28. package/build/cjs/language/grammar/GremlinListener.d.cts +351 -10
  29. package/build/cjs/language/grammar/GremlinParser.cjs +8700 -5798
  30. package/build/cjs/language/grammar/GremlinParser.d.cts +998 -619
  31. package/build/cjs/language/translator/AnonymizedTranslateVisitor.cjs +9 -0
  32. package/build/cjs/language/translator/AnonymizedTranslateVisitor.d.cts +3 -0
  33. package/build/cjs/language/translator/DotNetTranslateVisitor.cjs +113 -4
  34. package/build/cjs/language/translator/DotNetTranslateVisitor.d.cts +13 -2
  35. package/build/cjs/language/translator/GoTranslateVisitor.cjs +82 -0
  36. package/build/cjs/language/translator/GoTranslateVisitor.d.cts +9 -0
  37. package/build/cjs/language/translator/GroovyTranslateVisitor.cjs +23 -0
  38. package/build/cjs/language/translator/GroovyTranslateVisitor.d.cts +3 -0
  39. package/build/cjs/language/translator/JavaTranslateVisitor.cjs +23 -0
  40. package/build/cjs/language/translator/JavaTranslateVisitor.d.cts +3 -0
  41. package/build/cjs/language/translator/JavascriptTranslateVisitor.cjs +11 -0
  42. package/build/cjs/language/translator/JavascriptTranslateVisitor.d.cts +3 -0
  43. package/build/cjs/language/translator/PythonTranslateVisitor.cjs +39 -3
  44. package/build/cjs/language/translator/PythonTranslateVisitor.d.cts +3 -0
  45. package/build/cjs/language/translator/TranslateVisitor.cjs +9 -0
  46. package/build/cjs/language/translator/TranslateVisitor.d.cts +3 -0
  47. package/build/cjs/process/anonymous-traversal.cjs +5 -1
  48. package/build/cjs/process/graph-traversal.cjs +139 -8
  49. package/build/cjs/process/graph-traversal.d.cts +84 -3
  50. package/build/cjs/process/gremlin-lang.cjs +119 -7
  51. package/build/cjs/process/gremlin-lang.d.cts +6 -1
  52. package/build/cjs/process/gvalue.cjs +42 -0
  53. package/build/cjs/process/gvalue.d.cts +7 -0
  54. package/build/cjs/process/transaction.cjs +125 -23
  55. package/build/cjs/process/transaction.d.cts +50 -14
  56. package/build/cjs/process/traversal.cjs +105 -48
  57. package/build/cjs/process/traversal.d.cts +36 -10
  58. package/build/cjs/structure/PDTRegistry.cjs +116 -0
  59. package/build/cjs/structure/PDTRegistry.d.cts +34 -0
  60. package/build/cjs/structure/graph.cjs +351 -8
  61. package/build/cjs/structure/graph.d.cts +122 -3
  62. package/build/cjs/structure/io/binary/GraphBinary.cjs +68 -39
  63. package/build/cjs/structure/io/binary/GraphBinary.d.cts +15 -1
  64. package/build/cjs/structure/io/binary/internals/AnySerializer.cjs +34 -17
  65. package/build/cjs/structure/io/binary/internals/AnySerializer.d.cts +12 -2
  66. package/build/cjs/structure/io/binary/internals/ArraySerializer.cjs +41 -72
  67. package/build/cjs/structure/io/binary/internals/ArraySerializer.d.cts +14 -7
  68. package/build/cjs/structure/io/binary/internals/BigIntegerSerializer.cjs +34 -54
  69. package/build/cjs/structure/io/binary/internals/BigIntegerSerializer.d.cts +12 -7
  70. package/build/cjs/structure/io/binary/internals/BinarySerializer.cjs +31 -51
  71. package/build/cjs/structure/io/binary/internals/BinarySerializer.d.cts +12 -4
  72. package/build/cjs/structure/io/binary/internals/BooleanSerializer.cjs +28 -42
  73. package/build/cjs/structure/io/binary/internals/BooleanSerializer.d.cts +12 -4
  74. package/build/cjs/structure/io/binary/internals/ByteSerializer.cjs +24 -38
  75. package/build/cjs/structure/io/binary/internals/ByteSerializer.d.cts +12 -4
  76. package/build/cjs/structure/io/binary/internals/CompositePDTSerializer.cjs +81 -0
  77. package/build/cjs/structure/io/binary/internals/CompositePDTSerializer.d.cts +10 -0
  78. package/build/cjs/structure/io/binary/internals/DateTimeSerializer.cjs +52 -69
  79. package/build/cjs/structure/io/binary/internals/DateTimeSerializer.d.cts +12 -7
  80. package/build/cjs/structure/io/binary/internals/DoubleSerializer.cjs +24 -38
  81. package/build/cjs/structure/io/binary/internals/DoubleSerializer.d.cts +12 -4
  82. package/build/cjs/structure/io/binary/internals/EdgeSerializer.cjs +69 -124
  83. package/build/cjs/structure/io/binary/internals/EdgeSerializer.d.cts +14 -12
  84. package/build/cjs/structure/io/binary/internals/EnumSerializer.cjs +47 -59
  85. package/build/cjs/structure/io/binary/internals/EnumSerializer.d.cts +19 -4
  86. package/build/cjs/structure/io/binary/internals/FloatSerializer.cjs +24 -38
  87. package/build/cjs/structure/io/binary/internals/FloatSerializer.d.cts +12 -4
  88. package/build/cjs/structure/io/binary/internals/GraphBinaryReader.cjs +111 -37
  89. package/build/cjs/structure/io/binary/internals/GraphBinaryReader.d.cts +26 -2
  90. package/build/cjs/structure/io/binary/internals/GraphBinaryWriter.cjs +6 -6
  91. package/build/cjs/structure/io/binary/internals/GraphSerializer.cjs +184 -0
  92. package/build/cjs/structure/io/binary/internals/GraphSerializer.d.cts +22 -0
  93. package/build/cjs/structure/io/binary/internals/IntSerializer.cjs +33 -38
  94. package/build/cjs/structure/io/binary/internals/IntSerializer.d.cts +19 -4
  95. package/build/cjs/structure/io/binary/internals/LongSerializer.cjs +29 -42
  96. package/build/cjs/structure/io/binary/internals/LongSerializer.d.cts +13 -4
  97. package/build/cjs/structure/io/binary/internals/MapSerializer.cjs +36 -70
  98. package/build/cjs/structure/io/binary/internals/MapSerializer.d.cts +14 -7
  99. package/build/cjs/structure/io/binary/internals/MarkerSerializer.cjs +30 -33
  100. package/build/cjs/structure/io/binary/internals/MarkerSerializer.d.cts +13 -4
  101. package/build/cjs/structure/io/binary/internals/NumberSerializationStrategy.cjs +28 -2
  102. package/build/cjs/structure/io/binary/internals/NumberSerializationStrategy.d.cts +0 -3
  103. package/build/cjs/structure/io/binary/internals/PathSerializer.cjs +30 -55
  104. package/build/cjs/structure/io/binary/internals/PathSerializer.d.cts +14 -7
  105. package/build/cjs/structure/io/binary/internals/PrimitivePDTSerializer.cjs +80 -0
  106. package/build/cjs/structure/io/binary/internals/PrimitivePDTSerializer.d.cts +10 -0
  107. package/build/cjs/structure/io/binary/internals/PropertySerializer.cjs +32 -69
  108. package/build/cjs/structure/io/binary/internals/PropertySerializer.d.cts +14 -7
  109. package/build/cjs/structure/io/binary/internals/SetSerializer.cjs +39 -73
  110. package/build/cjs/structure/io/binary/internals/SetSerializer.d.cts +14 -7
  111. package/build/cjs/structure/io/binary/internals/ShortSerializer.cjs +24 -38
  112. package/build/cjs/structure/io/binary/internals/ShortSerializer.d.cts +12 -4
  113. package/build/cjs/structure/io/binary/internals/StreamReader.cjs +184 -0
  114. package/build/cjs/structure/io/binary/internals/StreamReader.d.cts +69 -0
  115. package/build/cjs/structure/io/binary/internals/StringSerializer.cjs +34 -53
  116. package/build/cjs/structure/io/binary/internals/StringSerializer.d.cts +14 -4
  117. package/build/cjs/structure/io/binary/internals/StubSerializer.cjs +2 -1
  118. package/build/cjs/structure/io/binary/internals/StubSerializer.d.cts +1 -1
  119. package/build/cjs/structure/io/binary/internals/TreeSerializer.cjs +139 -0
  120. package/build/cjs/structure/io/binary/internals/TreeSerializer.d.cts +54 -0
  121. package/build/cjs/structure/io/binary/internals/UnspecifiedNullSerializer.cjs +8 -31
  122. package/build/cjs/structure/io/binary/internals/UnspecifiedNullSerializer.d.cts +6 -4
  123. package/build/cjs/structure/io/binary/internals/UuidSerializer.cjs +33 -49
  124. package/build/cjs/structure/io/binary/internals/UuidSerializer.d.cts +12 -7
  125. package/build/cjs/structure/io/binary/internals/VertexPropertySerializer.cjs +37 -95
  126. package/build/cjs/structure/io/binary/internals/VertexPropertySerializer.d.cts +14 -7
  127. package/build/cjs/structure/io/binary/internals/VertexSerializer.cjs +41 -68
  128. package/build/cjs/structure/io/binary/internals/VertexSerializer.d.cts +14 -9
  129. package/build/cjs/utils.cjs +157 -40
  130. package/build/cjs/utils.d.cts +62 -4
  131. package/build/esm/driver/auth.d.ts +1 -1
  132. package/build/esm/driver/auth.js +11 -4
  133. package/build/esm/driver/client.d.ts +30 -27
  134. package/build/esm/driver/client.js +82 -38
  135. package/build/esm/driver/connection.d.ts +69 -26
  136. package/build/esm/driver/connection.js +172 -60
  137. package/build/esm/driver/dispatcher.browser.d.ts +35 -0
  138. package/build/esm/driver/dispatcher.browser.js +53 -0
  139. package/build/esm/driver/dispatcher.d.ts +48 -0
  140. package/build/esm/driver/dispatcher.js +94 -0
  141. package/build/esm/driver/driver-remote-connection.d.ts +10 -4
  142. package/build/esm/driver/driver-remote-connection.js +27 -15
  143. package/build/esm/driver/http-request.d.ts +28 -0
  144. package/build/esm/driver/http-request.js +60 -0
  145. package/build/esm/driver/logger.d.ts +29 -0
  146. package/build/esm/driver/logger.js +42 -0
  147. package/build/esm/driver/remote-connection.d.ts +6 -21
  148. package/build/esm/driver/remote-connection.js +5 -8
  149. package/build/esm/driver/request-message.d.ts +38 -8
  150. package/build/esm/driver/request-message.js +107 -21
  151. package/build/esm/driver/response-error.d.ts +2 -2
  152. package/build/esm/driver/response-error.js +3 -3
  153. package/build/esm/index.d.ts +47 -0
  154. package/build/esm/index.js +21 -0
  155. package/build/esm/language/grammar/GremlinLexer.d.ts +325 -316
  156. package/build/esm/language/grammar/GremlinLexer.js +1669 -1615
  157. package/build/esm/language/grammar/GremlinListener.d.ts +351 -10
  158. package/build/esm/language/grammar/GremlinListener.js +322 -8
  159. package/build/esm/language/grammar/GremlinParser.d.ts +998 -619
  160. package/build/esm/language/grammar/GremlinParser.js +8646 -5778
  161. package/build/esm/language/translator/AnonymizedTranslateVisitor.d.ts +3 -0
  162. package/build/esm/language/translator/AnonymizedTranslateVisitor.js +9 -0
  163. package/build/esm/language/translator/DotNetTranslateVisitor.d.ts +13 -2
  164. package/build/esm/language/translator/DotNetTranslateVisitor.js +113 -4
  165. package/build/esm/language/translator/GoTranslateVisitor.d.ts +9 -0
  166. package/build/esm/language/translator/GoTranslateVisitor.js +82 -0
  167. package/build/esm/language/translator/GroovyTranslateVisitor.d.ts +3 -0
  168. package/build/esm/language/translator/GroovyTranslateVisitor.js +23 -0
  169. package/build/esm/language/translator/JavaTranslateVisitor.d.ts +3 -0
  170. package/build/esm/language/translator/JavaTranslateVisitor.js +23 -0
  171. package/build/esm/language/translator/JavascriptTranslateVisitor.d.ts +3 -0
  172. package/build/esm/language/translator/JavascriptTranslateVisitor.js +11 -0
  173. package/build/esm/language/translator/PythonTranslateVisitor.d.ts +3 -0
  174. package/build/esm/language/translator/PythonTranslateVisitor.js +39 -3
  175. package/build/esm/language/translator/TranslateVisitor.d.ts +3 -0
  176. package/build/esm/language/translator/TranslateVisitor.js +9 -0
  177. package/build/esm/process/anonymous-traversal.js +5 -1
  178. package/build/esm/process/graph-traversal.d.ts +84 -3
  179. package/build/esm/process/graph-traversal.js +139 -8
  180. package/build/esm/process/gremlin-lang.d.ts +6 -1
  181. package/build/esm/process/gremlin-lang.js +121 -9
  182. package/build/esm/process/gvalue.d.ts +7 -0
  183. package/build/esm/process/gvalue.js +38 -0
  184. package/build/esm/process/transaction.d.ts +50 -14
  185. package/build/esm/process/transaction.js +122 -23
  186. package/build/esm/process/traversal.d.ts +36 -10
  187. package/build/esm/process/traversal.js +104 -47
  188. package/build/esm/structure/PDTRegistry.d.ts +34 -0
  189. package/build/esm/structure/PDTRegistry.js +112 -0
  190. package/build/esm/structure/graph.d.ts +122 -3
  191. package/build/esm/structure/graph.js +347 -7
  192. package/build/esm/structure/io/binary/GraphBinary.d.ts +15 -1
  193. package/build/esm/structure/io/binary/GraphBinary.js +66 -38
  194. package/build/esm/structure/io/binary/internals/AnySerializer.d.ts +12 -2
  195. package/build/esm/structure/io/binary/internals/AnySerializer.js +34 -17
  196. package/build/esm/structure/io/binary/internals/ArraySerializer.d.ts +14 -7
  197. package/build/esm/structure/io/binary/internals/ArraySerializer.js +41 -72
  198. package/build/esm/structure/io/binary/internals/BigIntegerSerializer.d.ts +12 -7
  199. package/build/esm/structure/io/binary/internals/BigIntegerSerializer.js +34 -54
  200. package/build/esm/structure/io/binary/internals/BinarySerializer.d.ts +12 -4
  201. package/build/esm/structure/io/binary/internals/BinarySerializer.js +31 -51
  202. package/build/esm/structure/io/binary/internals/BooleanSerializer.d.ts +12 -4
  203. package/build/esm/structure/io/binary/internals/BooleanSerializer.js +28 -42
  204. package/build/esm/structure/io/binary/internals/ByteSerializer.d.ts +12 -4
  205. package/build/esm/structure/io/binary/internals/ByteSerializer.js +24 -38
  206. package/build/esm/structure/io/binary/internals/CompositePDTSerializer.d.ts +10 -0
  207. package/build/esm/structure/io/binary/internals/CompositePDTSerializer.js +78 -0
  208. package/build/esm/structure/io/binary/internals/DateTimeSerializer.d.ts +12 -7
  209. package/build/esm/structure/io/binary/internals/DateTimeSerializer.js +52 -69
  210. package/build/esm/structure/io/binary/internals/DoubleSerializer.d.ts +12 -4
  211. package/build/esm/structure/io/binary/internals/DoubleSerializer.js +24 -38
  212. package/build/esm/structure/io/binary/internals/EdgeSerializer.d.ts +14 -12
  213. package/build/esm/structure/io/binary/internals/EdgeSerializer.js +69 -124
  214. package/build/esm/structure/io/binary/internals/EnumSerializer.d.ts +19 -4
  215. package/build/esm/structure/io/binary/internals/EnumSerializer.js +47 -59
  216. package/build/esm/structure/io/binary/internals/FloatSerializer.d.ts +12 -4
  217. package/build/esm/structure/io/binary/internals/FloatSerializer.js +24 -38
  218. package/build/esm/structure/io/binary/internals/GraphBinaryReader.d.ts +26 -2
  219. package/build/esm/structure/io/binary/internals/GraphBinaryReader.js +108 -37
  220. package/build/esm/structure/io/binary/internals/GraphBinaryWriter.js +6 -6
  221. package/build/esm/structure/io/binary/internals/GraphSerializer.d.ts +22 -0
  222. package/build/esm/structure/io/binary/internals/GraphSerializer.js +181 -0
  223. package/build/esm/structure/io/binary/internals/IntSerializer.d.ts +19 -4
  224. package/build/esm/structure/io/binary/internals/IntSerializer.js +33 -38
  225. package/build/esm/structure/io/binary/internals/LongSerializer.d.ts +13 -4
  226. package/build/esm/structure/io/binary/internals/LongSerializer.js +29 -42
  227. package/build/esm/structure/io/binary/internals/MapSerializer.d.ts +14 -7
  228. package/build/esm/structure/io/binary/internals/MapSerializer.js +36 -70
  229. package/build/esm/structure/io/binary/internals/MarkerSerializer.d.ts +13 -4
  230. package/build/esm/structure/io/binary/internals/MarkerSerializer.js +29 -33
  231. package/build/esm/structure/io/binary/internals/NumberSerializationStrategy.d.ts +0 -3
  232. package/build/esm/structure/io/binary/internals/NumberSerializationStrategy.js +28 -2
  233. package/build/esm/structure/io/binary/internals/PathSerializer.d.ts +14 -7
  234. package/build/esm/structure/io/binary/internals/PathSerializer.js +30 -55
  235. package/build/esm/structure/io/binary/internals/PrimitivePDTSerializer.d.ts +10 -0
  236. package/build/esm/structure/io/binary/internals/PrimitivePDTSerializer.js +77 -0
  237. package/build/esm/structure/io/binary/internals/PropertySerializer.d.ts +14 -7
  238. package/build/esm/structure/io/binary/internals/PropertySerializer.js +32 -69
  239. package/build/esm/structure/io/binary/internals/SetSerializer.d.ts +14 -7
  240. package/build/esm/structure/io/binary/internals/SetSerializer.js +39 -73
  241. package/build/esm/structure/io/binary/internals/ShortSerializer.d.ts +12 -4
  242. package/build/esm/structure/io/binary/internals/ShortSerializer.js +24 -38
  243. package/build/esm/structure/io/binary/internals/StreamReader.d.ts +69 -0
  244. package/build/esm/structure/io/binary/internals/StreamReader.js +181 -0
  245. package/build/esm/structure/io/binary/internals/StringSerializer.d.ts +14 -4
  246. package/build/esm/structure/io/binary/internals/StringSerializer.js +34 -53
  247. package/build/esm/structure/io/binary/internals/StubSerializer.d.ts +1 -1
  248. package/build/esm/structure/io/binary/internals/StubSerializer.js +2 -1
  249. package/build/esm/structure/io/binary/internals/TreeSerializer.d.ts +54 -0
  250. package/build/esm/structure/io/binary/internals/TreeSerializer.js +136 -0
  251. package/build/esm/structure/io/binary/internals/UnspecifiedNullSerializer.d.ts +6 -4
  252. package/build/esm/structure/io/binary/internals/UnspecifiedNullSerializer.js +8 -31
  253. package/build/esm/structure/io/binary/internals/UuidSerializer.d.ts +12 -7
  254. package/build/esm/structure/io/binary/internals/UuidSerializer.js +33 -49
  255. package/build/esm/structure/io/binary/internals/VertexPropertySerializer.d.ts +14 -7
  256. package/build/esm/structure/io/binary/internals/VertexPropertySerializer.js +37 -95
  257. package/build/esm/structure/io/binary/internals/VertexSerializer.d.ts +14 -9
  258. package/build/esm/structure/io/binary/internals/VertexSerializer.js +41 -68
  259. package/build/esm/utils.d.ts +62 -4
  260. package/build/esm/utils.js +145 -6
  261. package/package.json +27 -18
@@ -63,77 +63,60 @@ class DateTimeSerializer {
63
63
  bufs.push(v);
64
64
  return buffer_1.Buffer.concat(bufs);
65
65
  }
66
- deserialize(buffer, fullyQualifiedFormat = true) {
67
- let len = 0;
68
- let cursor = buffer;
69
- try {
70
- if (buffer === undefined || buffer === null || !(buffer instanceof buffer_1.Buffer)) {
71
- throw new Error('buffer is missing');
72
- }
73
- if (buffer.length < 1) {
74
- throw new Error('buffer is empty');
75
- }
76
- if (fullyQualifiedFormat) {
77
- const type_code = cursor.readUInt8();
78
- len++;
79
- if (type_code !== this.ID) {
80
- throw new Error('unexpected {type_code}');
81
- }
82
- cursor = cursor.slice(1);
83
- if (cursor.length < 1) {
84
- throw new Error('{value_flag} is missing');
85
- }
86
- const value_flag = cursor.readUInt8();
87
- len++;
88
- if (value_flag === 1) {
89
- return { v: null, len };
90
- }
91
- if (value_flag !== 0) {
92
- throw new Error('unexpected {value_flag}');
93
- }
94
- cursor = cursor.slice(1);
95
- }
96
- if (cursor.length < 18) {
97
- throw new Error('unexpected {value} length');
98
- }
99
- len += 18;
100
- let offset = 0;
101
- // Read year (Int32BE)
102
- const year = cursor.readInt32BE(offset);
103
- offset += 4;
104
- // Read month (UInt8, 1-based)
105
- const month = cursor.readUInt8(offset);
106
- offset += 1;
107
- // Read day (UInt8, 1-based)
108
- const day = cursor.readUInt8(offset);
109
- offset += 1;
110
- // Read nanoseconds since midnight (BigInt64BE)
111
- const nanos = cursor.readBigInt64BE(offset);
112
- offset += 8;
113
- // Read UTC offset in seconds (Int32BE) - JS Date cannot represent non-zero offsets
114
- const utcOffset = cursor.readInt32BE(offset);
115
- offset += 4;
116
- // Convert nanos to time components
117
- const hours = Number(nanos / 3600000000000n);
118
- const remainingNanos = nanos % 3600000000000n;
119
- const minutes = Number(remainingNanos / 60000000000n);
120
- const remainingNanos2 = remainingNanos % 60000000000n;
121
- const seconds = Number(remainingNanos2 / 1000000000n);
122
- const millis = Number((remainingNanos2 % 1000000000n) / 1000000n);
123
- const v = new Date(Date.UTC(year, month - 1, day, hours, minutes, seconds, millis));
124
- // Date.UTC treats years 0-99 as 1900-1999, correct it
125
- if (year >= 0 && year <= 99) {
126
- v.setUTCFullYear(year);
127
- }
128
- // Adjust for non-zero UTC offset (JS Date is always UTC internally)
129
- if (utcOffset !== 0) {
130
- v.setTime(v.getTime() - utcOffset * 1000);
131
- }
132
- return { v, len };
66
+ /**
67
+ * @param {StreamReader} reader
68
+ * @param {number} valueFlag
69
+ * @param {number} typeCode
70
+ * @returns {Promise<Date>}
71
+ */
72
+ async deserializeValue(reader, valueFlag, typeCode) {
73
+ // 18 bytes: year(4) + month(1) + day(1) + nanos(8) + utcOffset(4)
74
+ const buf = await reader.readBytes(18);
75
+ let offset = 0;
76
+ const year = buf.readInt32BE(offset);
77
+ offset += 4;
78
+ const month = buf.readUInt8(offset);
79
+ offset += 1;
80
+ const day = buf.readUInt8(offset);
81
+ offset += 1;
82
+ const nanos = buf.readBigInt64BE(offset);
83
+ offset += 8;
84
+ const utcOffset = buf.readInt32BE(offset);
85
+ // Convert nanos to time components
86
+ const hours = Number(nanos / 3600000000000n);
87
+ const remainingNanos = nanos % 3600000000000n;
88
+ const minutes = Number(remainingNanos / 60000000000n);
89
+ const remainingNanos2 = remainingNanos % 60000000000n;
90
+ const seconds = Number(remainingNanos2 / 1000000000n);
91
+ const millis = Number((remainingNanos2 % 1000000000n) / 1000000n);
92
+ const v = new Date(Date.UTC(year, month - 1, day, hours, minutes, seconds, millis));
93
+ // Date.UTC treats years 0-99 as 1900-1999, correct it
94
+ if (year >= 0 && year <= 99) {
95
+ v.setUTCFullYear(year);
96
+ }
97
+ // Adjust for non-zero UTC offset (JS Date is always UTC internally)
98
+ if (utcOffset !== 0) {
99
+ v.setTime(v.getTime() - utcOffset * 1000);
100
+ }
101
+ return v;
102
+ }
103
+ /**
104
+ * @param {StreamReader} reader
105
+ * @returns {Promise<Date|null>}
106
+ */
107
+ async deserialize(reader) {
108
+ const type_code = await reader.readUInt8();
109
+ if (type_code !== this.ID) {
110
+ throw new Error(`DateTimeSerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
111
+ }
112
+ const value_flag = await reader.readUInt8();
113
+ if (value_flag === 0x01) {
114
+ return null;
133
115
  }
134
- catch (err) {
135
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, cursor, err });
116
+ if (value_flag !== 0x00) {
117
+ throw new Error(`DateTimeSerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
136
118
  }
119
+ return this.deserializeValue(reader, value_flag, type_code);
137
120
  }
138
121
  }
139
122
  exports.default = DateTimeSerializer;
@@ -4,12 +4,17 @@ export default class DateTimeSerializer {
4
4
  ID: any;
5
5
  canBeUsedFor(value: any): value is Date;
6
6
  serialize(item: any, fullyQualifiedFormat?: boolean): Buffer<ArrayBuffer>;
7
- deserialize(buffer: any, fullyQualifiedFormat?: boolean, ...args: any[]): {
8
- v: null;
9
- len: number;
10
- } | {
11
- v: Date;
12
- len: number;
13
- };
7
+ /**
8
+ * @param {StreamReader} reader
9
+ * @param {number} valueFlag
10
+ * @param {number} typeCode
11
+ * @returns {Promise<Date>}
12
+ */
13
+ deserializeValue(reader: StreamReader, valueFlag: number, typeCode: number): Promise<Date>;
14
+ /**
15
+ * @param {StreamReader} reader
16
+ * @returns {Promise<Date|null>}
17
+ */
18
+ deserialize(reader: StreamReader): Promise<Date | null>;
14
19
  }
15
20
  import { Buffer } from 'buffer';
@@ -46,46 +46,32 @@ class DoubleSerializer {
46
46
  bufs.push(v);
47
47
  return buffer_1.Buffer.concat(bufs);
48
48
  }
49
- deserialize(buffer, fullyQualifiedFormat = true) {
50
- let len = 0;
51
- let cursor = buffer;
52
- try {
53
- if (buffer === undefined || buffer === null || !(buffer instanceof buffer_1.Buffer)) {
54
- throw new Error('buffer is missing');
55
- }
56
- if (buffer.length < 1) {
57
- throw new Error('buffer is empty');
58
- }
59
- if (fullyQualifiedFormat) {
60
- const type_code = cursor.readUInt8();
61
- len++;
62
- if (type_code !== this.ioc.DataType.DOUBLE) {
63
- throw new Error('unexpected {type_code}');
64
- }
65
- cursor = cursor.slice(1);
66
- if (cursor.length < 1) {
67
- throw new Error('{value_flag} is missing');
68
- }
69
- const value_flag = cursor.readUInt8();
70
- len++;
71
- if (value_flag === 1) {
72
- return { v: null, len };
73
- }
74
- if (value_flag !== 0) {
75
- throw new Error('unexpected {value_flag}');
76
- }
77
- cursor = cursor.slice(1);
78
- }
79
- if (cursor.length < 8) {
80
- throw new Error('unexpected {value} length');
81
- }
82
- len += 8;
83
- const v = cursor.readDoubleBE();
84
- return { v, len };
49
+ /**
50
+ * @param {StreamReader} reader
51
+ * @param {number} valueFlag
52
+ * @param {number} typeCode
53
+ * @returns {Promise<number>}
54
+ */
55
+ async deserializeValue(reader, valueFlag, typeCode) {
56
+ return await reader.readDoubleBE();
57
+ }
58
+ /**
59
+ * @param {StreamReader} reader
60
+ * @returns {Promise<number|null>}
61
+ */
62
+ async deserialize(reader) {
63
+ const type_code = await reader.readUInt8();
64
+ if (type_code !== this.ioc.DataType.DOUBLE) {
65
+ throw new Error(`DoubleSerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
66
+ }
67
+ const value_flag = await reader.readUInt8();
68
+ if (value_flag === 0x01) {
69
+ return null;
85
70
  }
86
- catch (err) {
87
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, cursor, err });
71
+ if (value_flag !== 0x00) {
72
+ throw new Error(`DoubleSerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
88
73
  }
74
+ return this.deserializeValue(reader, value_flag, type_code);
89
75
  }
90
76
  }
91
77
  exports.default = DoubleSerializer;
@@ -3,9 +3,17 @@ export default class DoubleSerializer {
3
3
  ioc: any;
4
4
  canBeUsedFor(value: any): boolean;
5
5
  serialize(item: any, fullyQualifiedFormat?: boolean): Buffer<ArrayBuffer>;
6
- deserialize(buffer: any, fullyQualifiedFormat?: boolean, ...args: any[]): {
7
- v: any;
8
- len: number;
9
- };
6
+ /**
7
+ * @param {StreamReader} reader
8
+ * @param {number} valueFlag
9
+ * @param {number} typeCode
10
+ * @returns {Promise<number>}
11
+ */
12
+ deserializeValue(reader: StreamReader, valueFlag: number, typeCode: number): Promise<number>;
13
+ /**
14
+ * @param {StreamReader} reader
15
+ * @returns {Promise<number|null>}
16
+ */
17
+ deserialize(reader: StreamReader): Promise<number | null>;
10
18
  }
11
19
  import { Buffer } from 'buffer';
@@ -53,21 +53,37 @@ class EdgeSerializer {
53
53
  // {id}
54
54
  bufs.push(this.ioc.anySerializer.serialize(item.id));
55
55
  // {label}
56
- const labels = Array.isArray(item.label) ? item.label : item.label ? [item.label] : [];
56
+ const labels = item.labels instanceof Set
57
+ ? Array.from(item.labels)
58
+ : Array.isArray(item.label)
59
+ ? item.label
60
+ : item.label
61
+ ? [item.label]
62
+ : [];
57
63
  bufs.push(this.ioc.listSerializer.serialize(labels, false));
58
64
  // {inVId}
59
65
  const inVId = item.inV && item.inV.id;
60
66
  bufs.push(this.ioc.anySerializer.serialize(inVId));
61
67
  // {inVLabel}
62
- const inVLabel = item.inV && item.inV.label;
63
- const inVLabels = Array.isArray(inVLabel) ? inVLabel : inVLabel ? [inVLabel] : [];
68
+ const inVLabels = item.inV && item.inV.labels instanceof Set
69
+ ? Array.from(item.inV.labels)
70
+ : item.inV && Array.isArray(item.inV.label)
71
+ ? item.inV.label
72
+ : item.inV && item.inV.label
73
+ ? [item.inV.label]
74
+ : [];
64
75
  bufs.push(this.ioc.listSerializer.serialize(inVLabels, false));
65
76
  // {outVId}
66
77
  const outVId = item.outV && item.outV.id;
67
78
  bufs.push(this.ioc.anySerializer.serialize(outVId));
68
79
  // {outVLabel}
69
- const outVLabel = item.outV && item.outV.label;
70
- const outVLabels = Array.isArray(outVLabel) ? outVLabel : outVLabel ? [outVLabel] : [];
80
+ const outVLabels = item.outV && item.outV.labels instanceof Set
81
+ ? Array.from(item.outV.labels)
82
+ : item.outV && Array.isArray(item.outV.label)
83
+ ? item.outV.label
84
+ : item.outV && item.outV.label
85
+ ? [item.outV.label]
86
+ : [];
71
87
  bufs.push(this.ioc.listSerializer.serialize(outVLabels, false));
72
88
  // {parent}
73
89
  bufs.push(this.ioc.unspecifiedNullSerializer.serialize(null));
@@ -75,127 +91,56 @@ class EdgeSerializer {
75
91
  bufs.push(this.ioc.listSerializer.serialize([], true));
76
92
  return buffer_1.Buffer.concat(bufs);
77
93
  }
78
- deserialize(buffer, fullyQualifiedFormat = true) {
79
- let len = 0;
80
- let cursor = buffer;
81
- try {
82
- if (buffer === undefined || buffer === null || !(buffer instanceof buffer_1.Buffer)) {
83
- throw new Error('buffer is missing');
84
- }
85
- if (buffer.length < 1) {
86
- throw new Error('buffer is empty');
87
- }
88
- if (fullyQualifiedFormat) {
89
- const type_code = cursor.readUInt8();
90
- len++;
91
- if (type_code !== this.ioc.DataType.EDGE) {
92
- throw new Error('unexpected {type_code}');
93
- }
94
- cursor = cursor.slice(1);
95
- if (cursor.length < 1) {
96
- throw new Error('{value_flag} is missing');
97
- }
98
- const value_flag = cursor.readUInt8();
99
- len++;
100
- if (value_flag === 1) {
101
- return { v: null, len };
102
- }
103
- if (value_flag !== 0) {
104
- throw new Error('unexpected {value_flag}');
105
- }
106
- cursor = cursor.slice(1);
107
- }
108
- let id, id_len;
109
- try {
110
- ({ v: id, len: id_len } = this.ioc.anySerializer.deserialize(cursor));
111
- len += id_len;
112
- }
113
- catch (err) {
114
- err.message = '{id}: ' + err.message;
115
- throw err;
116
- }
117
- cursor = cursor.slice(id_len);
118
- let label, label_len;
119
- try {
120
- ({ v: label, len: label_len } = this.ioc.listSerializer.deserialize(cursor, false));
121
- label = Array.isArray(label) && label.length > 0 ? label[0] : label;
122
- len += label_len;
123
- }
124
- catch (err) {
125
- err.message = '{label}: ' + err.message;
126
- throw err;
127
- }
128
- cursor = cursor.slice(label_len);
129
- let inVId, inVId_len;
130
- try {
131
- ({ v: inVId, len: inVId_len } = this.ioc.anySerializer.deserialize(cursor));
132
- len += inVId_len;
133
- }
134
- catch (err) {
135
- err.message = '{inVId}: ' + err.message;
136
- throw err;
137
- }
138
- cursor = cursor.slice(inVId_len);
139
- let inVLabel, inVLabel_len;
140
- try {
141
- ({ v: inVLabel, len: inVLabel_len } = this.ioc.listSerializer.deserialize(cursor, false));
142
- inVLabel = Array.isArray(inVLabel) && inVLabel.length > 0 ? inVLabel[0] : inVLabel;
143
- len += inVLabel_len;
144
- }
145
- catch (err) {
146
- err.message = '{inVLabel}: ' + err.message;
147
- throw err;
148
- }
149
- cursor = cursor.slice(inVLabel_len);
150
- let outVId, outVId_len;
151
- try {
152
- ({ v: outVId, len: outVId_len } = this.ioc.anySerializer.deserialize(cursor));
153
- len += outVId_len;
154
- }
155
- catch (err) {
156
- err.message = '{outVId}: ' + err.message;
157
- throw err;
158
- }
159
- cursor = cursor.slice(outVId_len);
160
- let outVLabel, outVLabel_len;
161
- try {
162
- ({ v: outVLabel, len: outVLabel_len } = this.ioc.listSerializer.deserialize(cursor, false));
163
- outVLabel = Array.isArray(outVLabel) && outVLabel.length > 0 ? outVLabel[0] : outVLabel;
164
- len += outVLabel_len;
165
- }
166
- catch (err) {
167
- err.message = '{outVLabel}: ' + err.message;
168
- throw err;
169
- }
170
- cursor = cursor.slice(outVLabel_len);
171
- let parent_len;
172
- try {
173
- ({ len: parent_len } = this.ioc.anySerializer.deserialize(cursor));
174
- len += parent_len;
175
- }
176
- catch (err) {
177
- err.message = '{parent}: ' + err.message;
178
- throw err;
179
- }
180
- cursor = cursor.slice(parent_len);
181
- let properties, properties_len;
182
- try {
183
- ({ v: properties, len: properties_len } = this.ioc.anySerializer.deserialize(cursor));
184
- len += properties_len;
185
- }
186
- catch (err) {
187
- err.message = '{properties}: ' + err.message;
188
- throw err;
189
- }
190
- cursor = cursor.slice(properties_len);
191
- // null properties are deserialized into empty lists
192
- const edge_props = properties ? properties : [];
193
- const v = new graph_js_1.Edge(id, new graph_js_1.Vertex(outVId, outVLabel, null), label, new graph_js_1.Vertex(inVId, inVLabel, null), edge_props);
194
- return { v, len };
94
+ /**
95
+ * Async deserialization of edge value bytes from a StreamReader.
96
+ * @param {StreamReader} reader
97
+ * @param {number} valueFlag
98
+ * @param {number} typeCode
99
+ * @returns {Promise<Edge>}
100
+ */
101
+ async deserializeValue(reader, valueFlag, typeCode) {
102
+ // {id} fully qualified
103
+ const id = await this.ioc.anySerializer.deserialize(reader);
104
+ // {label} bare list - full multi-label list
105
+ const labelList = await this.ioc.listSerializer.deserializeValue(reader, 0x00, this.ioc.DataType.LIST);
106
+ const labels = Array.isArray(labelList) ? labelList : labelList ? [labelList] : [];
107
+ const label = labels.length > 0 ? labels[0] : 'edge';
108
+ // {inVId} fully qualified
109
+ const inVId = await this.ioc.anySerializer.deserialize(reader);
110
+ // {inVLabel} bare list - full multi-label list
111
+ const inVLabelList = await this.ioc.listSerializer.deserializeValue(reader, 0x00, this.ioc.DataType.LIST);
112
+ const inVLabels = Array.isArray(inVLabelList) ? inVLabelList : inVLabelList ? [inVLabelList] : [];
113
+ const inVLabel = inVLabels.length > 0 ? inVLabels[0] : 'vertex';
114
+ // {outVId} fully qualified
115
+ const outVId = await this.ioc.anySerializer.deserialize(reader);
116
+ // {outVLabel} bare list - full multi-label list
117
+ const outVLabelList = await this.ioc.listSerializer.deserializeValue(reader, 0x00, this.ioc.DataType.LIST);
118
+ const outVLabels = Array.isArray(outVLabelList) ? outVLabelList : outVLabelList ? [outVLabelList] : [];
119
+ const outVLabel = outVLabels.length > 0 ? outVLabels[0] : 'vertex';
120
+ // {parent} fully qualified (always null in current TinkerPop)
121
+ await this.ioc.anySerializer.deserialize(reader);
122
+ // {properties} fully qualified
123
+ const properties = await this.ioc.anySerializer.deserialize(reader);
124
+ return new graph_js_1.Edge(id, new graph_js_1.Vertex(outVId, outVLabel, null, outVLabels), label, new graph_js_1.Vertex(inVId, inVLabel, null, inVLabels), properties || [], labels);
125
+ }
126
+ /**
127
+ * Async fully-qualified deserialization from a StreamReader.
128
+ * @param {StreamReader} reader
129
+ * @returns {Promise<Edge|null>}
130
+ */
131
+ async deserialize(reader) {
132
+ const type_code = await reader.readUInt8();
133
+ if (type_code !== this.ioc.DataType.EDGE) {
134
+ throw new Error(`EdgeSerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
135
+ }
136
+ const value_flag = await reader.readUInt8();
137
+ if (value_flag === 0x01) {
138
+ return null;
195
139
  }
196
- catch (err) {
197
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, cursor, err });
140
+ if (value_flag !== 0x00) {
141
+ throw new Error(`EdgeSerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
198
142
  }
143
+ return this.deserializeValue(reader, value_flag, type_code);
199
144
  }
200
145
  }
201
146
  exports.default = EdgeSerializer;
@@ -3,18 +3,20 @@ export default class EdgeSerializer {
3
3
  ioc: any;
4
4
  canBeUsedFor(value: any): value is Edge<any, any, any, any, any>;
5
5
  serialize(item: any, fullyQualifiedFormat?: boolean): Buffer<ArrayBuffer>;
6
- deserialize(buffer: any, fullyQualifiedFormat?: boolean, ...args: any[]): {
7
- v: null;
8
- len: number;
9
- } | {
10
- v: Edge<Vertex<any, Record<string, any>, any, {
11
- [x: string]: [import("../../../graph.cjs").VertexProperty<string, any, Record<string, any>, any>, ...import("../../../graph.cjs").VertexProperty<string, any, Record<string, any>, any>[]];
12
- }>, any, Vertex<any, Record<string, any>, any, {
13
- [x: string]: [import("../../../graph.cjs").VertexProperty<string, any, Record<string, any>, any>, ...import("../../../graph.cjs").VertexProperty<string, any, Record<string, any>, any>[]];
14
- }>, Record<string, any>, any>;
15
- len: number;
16
- };
6
+ /**
7
+ * Async deserialization of edge value bytes from a StreamReader.
8
+ * @param {StreamReader} reader
9
+ * @param {number} valueFlag
10
+ * @param {number} typeCode
11
+ * @returns {Promise<Edge>}
12
+ */
13
+ deserializeValue(reader: StreamReader, valueFlag: number, typeCode: number): Promise<Edge>;
14
+ /**
15
+ * Async fully-qualified deserialization from a StreamReader.
16
+ * @param {StreamReader} reader
17
+ * @returns {Promise<Edge|null>}
18
+ */
19
+ deserialize(reader: StreamReader): Promise<Edge | null>;
17
20
  }
18
21
  import { Edge } from '../../../graph.cjs';
19
22
  import { Buffer } from 'buffer';
20
- import { Vertex } from '../../../graph.cjs';
@@ -61,67 +61,55 @@ class EnumSerializer {
61
61
  bufs.push(this.ioc.stringSerializer.serialize(item.elementName, true));
62
62
  return buffer_1.Buffer.concat(bufs);
63
63
  }
64
- deserialize(buffer, fullyQualifiedFormat = true) {
65
- let len = 0;
66
- let cursor = buffer;
67
- try {
68
- if (buffer === undefined || buffer === null || !(buffer instanceof buffer_1.Buffer)) {
69
- throw new Error('buffer is missing');
70
- }
71
- if (buffer.length < 1) {
72
- throw new Error('buffer is empty');
73
- }
74
- let typeName;
75
- if (fullyQualifiedFormat) {
76
- const type_code = cursor.readUInt8();
77
- len++;
78
- if (type_code === this.ioc.DataType.DIRECTION) {
79
- typeName = 'Direction';
80
- }
81
- else if (type_code === this.ioc.DataType.MERGE) {
82
- typeName = 'Merge';
83
- }
84
- else if (type_code === this.ioc.DataType.T) {
85
- typeName = 'T';
86
- }
87
- else {
88
- throw new Error(`unexpected {type_code}=${type_code}`);
89
- }
90
- cursor = cursor.slice(1);
91
- if (cursor.length < 1) {
92
- throw new Error('{value_flag} is missing');
93
- }
94
- const value_flag = cursor.readUInt8();
95
- len++;
96
- if (value_flag === 1) {
97
- return { v: null, len };
98
- }
99
- if (value_flag !== 0) {
100
- throw new Error('unexpected {value_flag}');
101
- }
102
- cursor = cursor.slice(1);
103
- }
104
- let elementName, elementName_len;
105
- try {
106
- ({ v: elementName, len: elementName_len } = this.ioc.stringSerializer.deserialize(cursor, true));
107
- len += elementName_len;
108
- }
109
- catch (err) {
110
- err.message = 'elementName: ' + err.message;
111
- throw err;
112
- }
113
- let v;
114
- if (typeName) {
115
- v = this.types[typeName].enum[elementName];
116
- }
117
- else {
118
- v = new traversal_js_1.EnumValue(undefined, elementName);
119
- }
120
- return { v, len };
64
+ /**
65
+ * Resolve the type_code (already read by AnySerializer) to a typeName.
66
+ * Called by AnySerializer before dispatching.
67
+ */
68
+ _typeNameForCode(type_code) {
69
+ if (type_code === this.ioc.DataType.DIRECTION) {
70
+ return 'Direction';
71
+ }
72
+ if (type_code === this.ioc.DataType.MERGE) {
73
+ return 'Merge';
74
+ }
75
+ if (type_code === this.ioc.DataType.T) {
76
+ return 'T';
77
+ }
78
+ return undefined;
79
+ }
80
+ /**
81
+ * @param {StreamReader} reader
82
+ * @param {number} valueFlag - already consumed by AnySerializer
83
+ * @param {number} typeCode - the type_code byte already read by AnySerializer
84
+ * @returns {Promise<EnumValue>}
85
+ */
86
+ async deserializeValue(reader, valueFlag, typeCode) {
87
+ const typeName = this._typeNameForCode(typeCode);
88
+ // elementName is a fully-qualified String (type_code + value_flag + length + text)
89
+ const elementName = await this.ioc.stringSerializer.deserialize(reader);
90
+ if (typeName) {
91
+ return this.types[typeName].enum[elementName];
92
+ }
93
+ return new traversal_js_1.EnumValue(undefined, elementName);
94
+ }
95
+ /**
96
+ * Async fully-qualified deserialization from a StreamReader.
97
+ * @param {StreamReader} reader
98
+ * @returns {Promise<EnumValue|null>}
99
+ */
100
+ async deserialize(reader) {
101
+ const type_code = await reader.readUInt8();
102
+ if (!this._typeNameForCode(type_code)) {
103
+ throw new Error(`EnumSerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
104
+ }
105
+ const value_flag = await reader.readUInt8();
106
+ if (value_flag === 0x01) {
107
+ return null;
121
108
  }
122
- catch (err) {
123
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, cursor, err });
109
+ if (value_flag !== 0x00) {
110
+ throw new Error(`EnumSerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
124
111
  }
112
+ return this.deserializeValue(reader, value_flag, type_code);
125
113
  }
126
114
  }
127
115
  exports.default = EnumSerializer;