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
@@ -3,8 +3,14 @@
3
3
  */
4
4
  /**
5
5
  * An "empty" graph object to server only as a reference.
6
+ *
7
+ * Holds in-memory collections of vertices and edges so that GraphBinary
8
+ * Graph (0x10) deserialization can return a usable data container.
6
9
  */
7
10
  export declare class Graph {
11
+ readonly vertices: Map<any, Vertex>;
12
+ readonly edges: Map<any, Edge>;
13
+ constructor();
8
14
  toString(): string;
9
15
  }
10
16
  declare class Element<TLabel extends string = string, TId = any> {
@@ -20,14 +26,15 @@ declare class Element<TLabel extends string = string, TId = any> {
20
26
  export declare class Vertex<TLabel extends string = string, TProperties extends Record<string, any> = Record<string, any>, TId = number, TVertexProperties = {
21
27
  [P in keyof TProperties]: P extends string ? VertexProperties<P, TProperties[P]> : never;
22
28
  }> extends Element<TLabel, TId> {
23
- constructor(id: TId, label: TLabel, properties?: Property[] | null);
29
+ readonly labels: Set<string>;
30
+ constructor(id: TId, label: TLabel | string[], properties?: Property[] | null, labels?: string[]);
24
31
  toString(): string;
25
32
  }
26
33
  export declare class Edge<TOutVertex extends Vertex = Vertex, TLabel extends string = string, TInVertex extends Vertex = Vertex, TProperties extends Record<string, any> = Record<string, any>, TId = number> extends Element<TLabel, TId> {
27
34
  readonly outV: TOutVertex;
28
- readonly label: TLabel;
29
35
  readonly inV: TInVertex;
30
- constructor(id: TId, outV: TOutVertex, label: TLabel, inV: TInVertex, properties?: Property[] | null);
36
+ readonly labels: Set<string>;
37
+ constructor(id: TId, outV: TOutVertex, label: TLabel | string[], inV: TInVertex, properties?: Property[] | null, labels?: string[]);
31
38
  toString(): string;
32
39
  }
33
40
  export declare class VertexProperty<TLabel extends string = string, TValue = any, TProperties extends Record<string, any> | null | undefined = Record<string, any>, TId = any> extends Element<TLabel, TId> {
@@ -44,6 +51,100 @@ export declare class Property<T = any> {
44
51
  toString(): string;
45
52
  equals(other: any): boolean;
46
53
  }
54
+ /**
55
+ * A tree data structure with a tree-shaped public API.
56
+ *
57
+ * Children are kept in a private, ordered array of {key, value} entries (not a
58
+ * native {@link Map}, whose reference-identity keys would break value-equality).
59
+ * Access is only through the read API; lookups use {@link treeKeysEqual}, which
60
+ * compares keys by value and treats null/undefined as a distinct key.
61
+ */
62
+ export declare class Tree {
63
+ #private;
64
+ constructor(...rootValues: any[]);
65
+ /**
66
+ * Locates the entry whose key is structurally equal to the given key.
67
+ * @returns the matching entry, or undefined if none exists.
68
+ */
69
+ private _findEntry;
70
+ /**
71
+ * Returns the keys at the root of this tree.
72
+ */
73
+ rootNodes(): any[];
74
+ /**
75
+ * Returns the child subtree for the given key.
76
+ * @throws {Error} if no child exists for the given key.
77
+ */
78
+ childAt(key: any): Tree;
79
+ /**
80
+ * Returns true if the given key is an immediate child of this tree.
81
+ */
82
+ hasChild(key: any): boolean;
83
+ /**
84
+ * Returns true if the given value appears as a key anywhere in this tree (recursive).
85
+ */
86
+ contains(value: any): boolean;
87
+ /**
88
+ * Recursively searches the tree for the first subtree rooted at key.
89
+ * @returns the matching subtree, or undefined if absent.
90
+ */
91
+ findSubtree(key: any): Tree | undefined;
92
+ /**
93
+ * Returns the existing child for key, or inserts and returns a new empty Tree if absent.
94
+ */
95
+ getOrCreateChild(key: any): Tree;
96
+ /**
97
+ * Returns true if this tree has no children. An empty tree is considered a leaf.
98
+ */
99
+ isLeaf(): boolean;
100
+ /**
101
+ * Returns the total number of nodes (keys) in the tree, counted recursively.
102
+ */
103
+ nodeCount(): number;
104
+ /**
105
+ * Returns the keys at the given depth. Depth 0 returns the root keys.
106
+ * Negative depths or depths beyond the tree's height return an empty array.
107
+ */
108
+ getNodesAtDepth(depth: number): any[];
109
+ /**
110
+ * Returns the trees at the given depth. Depth 0 returns a singleton list containing this tree.
111
+ * Negative depths or depths beyond the tree's height return an empty array.
112
+ */
113
+ getTreesAtDepth(depth: number): Tree[];
114
+ /**
115
+ * Returns all keys whose subtrees are leaves.
116
+ */
117
+ getLeafNodes(): any[];
118
+ private _collectLeafKeys;
119
+ /**
120
+ * Returns single-key trees representing each leaf key in this tree, preserving the original
121
+ * key-to-empty-subtree mapping.
122
+ */
123
+ getLeafTrees(): Tree[];
124
+ private _collectLeafTrees;
125
+ /**
126
+ * Recursively merges other into this tree. For overlapping keys, child subtrees are merged in turn.
127
+ * For keys present only in other, the corresponding subtree reference is adopted directly.
128
+ */
129
+ addTree(other: Tree): void;
130
+ /**
131
+ * Splits this tree into one tree per root key. If the tree has a single root, returns a singleton list
132
+ * containing this tree.
133
+ */
134
+ splitParents(): Tree[];
135
+ /**
136
+ * Produces a formatted string representation of the tree structure using a |-- ASCII style,
137
+ * Uses a |-- ASCII style with a 3-space indent per level and no trailing newline.
138
+ */
139
+ prettyPrint(): string;
140
+ private _prettyPrint;
141
+ /**
142
+ * Structural recursive equality. Order across siblings is irrelevant; two trees are equal if they have the
143
+ * same set of keys and each key's subtree is recursively equal.
144
+ */
145
+ equals(other: any): boolean;
146
+ toString(): string;
147
+ }
47
148
  /**
48
149
  * Represents a walk through a graph as defined by a traversal.
49
150
  */
@@ -54,4 +155,22 @@ export declare class Path {
54
155
  toString(): string;
55
156
  equals(other: any): any;
56
157
  }
158
+ /**
159
+ * Represents a composite Provider Defined Type (PDT).
160
+ */
161
+ export declare class CompositePDT {
162
+ readonly name: string;
163
+ readonly fields: Readonly<Record<string, any>>;
164
+ constructor(name: string, fields?: Record<string, any>);
165
+ toString(): string;
166
+ }
167
+ /**
168
+ * Represents a primitive Provider Defined Type (PDT).
169
+ */
170
+ export declare class PrimitivePDT {
171
+ readonly name: string;
172
+ readonly value: string;
173
+ constructor(name: string, value: string);
174
+ toString(): string;
175
+ }
57
176
  export {};
@@ -54,7 +54,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
54
54
  return (mod && mod.__esModule) ? mod : { "default": mod };
55
55
  };
56
56
  Object.defineProperty(exports, "__esModule", { value: true });
57
- exports.graphBinaryWriter = exports.graphBinaryReader = exports.anySerializer = exports.numberSerializationStrategy = exports.enumSerializer = exports.unspecifiedNullSerializer = exports.markerSerializer = exports.booleanSerializer = exports.shortSerializer = exports.binarySerializer = exports.byteSerializer = exports.bigIntegerSerializer = exports.vertexPropertySerializer = exports.vertexSerializer = exports.propertySerializer = exports.pathSerializer = exports.edgeSerializer = exports.uuidSerializer = exports.setSerializer = exports.mapSerializer = exports.listSerializer = exports.floatSerializer = exports.doubleSerializer = exports.dateTimeSerializer = exports.stringSerializer = exports.longSerializer = exports.intSerializer = exports.serializers = exports.DataType = void 0;
57
+ exports.graphBinaryWriter = exports.graphBinaryReader = exports.anySerializer = exports.numberSerializationStrategy = exports.treeSerializer = exports.primitivePDTSerializer = exports.compositePDTSerializer = exports.enumSerializer = exports.unspecifiedNullSerializer = exports.markerSerializer = exports.booleanSerializer = exports.shortSerializer = exports.binarySerializer = exports.byteSerializer = exports.bigIntegerSerializer = exports.graphSerializer = exports.vertexPropertySerializer = exports.vertexSerializer = exports.propertySerializer = exports.pathSerializer = exports.edgeSerializer = exports.uuidSerializer = exports.setSerializer = exports.mapSerializer = exports.listSerializer = exports.floatSerializer = exports.doubleSerializer = exports.dateTimeSerializer = exports.stringSerializer = exports.longSerializer = exports.intSerializer = exports.serializers = exports.DataType = void 0;
58
+ exports.createPreciseReader = createPreciseReader;
58
59
  /**
59
60
  * GraphBinary 4.0 support implementation.
60
61
  *
@@ -68,7 +69,6 @@ exports.graphBinaryWriter = exports.graphBinaryReader = exports.anySerializer =
68
69
  * TODO: it has the following open topics:
69
70
  * Core Data Types support:
70
71
  * - [] 0x22: BigDecimal
71
- * - [] 0x2b: Tree
72
72
  * Extended Types support:
73
73
  * - [] 0x80: Char
74
74
  * - [] 0x81: Duration
@@ -90,9 +90,11 @@ const SetSerializer_js_1 = __importDefault(require("./internals/SetSerializer.cj
90
90
  const UuidSerializer_js_1 = __importDefault(require("./internals/UuidSerializer.cjs"));
91
91
  const EdgeSerializer_js_1 = __importDefault(require("./internals/EdgeSerializer.cjs"));
92
92
  const PathSerializer_js_1 = __importDefault(require("./internals/PathSerializer.cjs"));
93
+ const TreeSerializer_js_1 = __importDefault(require("./internals/TreeSerializer.cjs"));
93
94
  const PropertySerializer_js_1 = __importDefault(require("./internals/PropertySerializer.cjs"));
94
95
  const VertexSerializer_js_1 = __importDefault(require("./internals/VertexSerializer.cjs"));
95
96
  const VertexPropertySerializer_js_1 = __importDefault(require("./internals/VertexPropertySerializer.cjs"));
97
+ const GraphSerializer_js_1 = __importDefault(require("./internals/GraphSerializer.cjs"));
96
98
  const BigIntegerSerializer_js_1 = __importDefault(require("./internals/BigIntegerSerializer.cjs"));
97
99
  const ByteSerializer_js_1 = __importDefault(require("./internals/ByteSerializer.cjs"));
98
100
  const BinarySerializer_js_1 = __importDefault(require("./internals/BinarySerializer.cjs"));
@@ -102,47 +104,74 @@ const MarkerSerializer_js_1 = __importDefault(require("./internals/MarkerSeriali
102
104
  const UnspecifiedNullSerializer_js_1 = __importDefault(require("./internals/UnspecifiedNullSerializer.cjs"));
103
105
  const EnumSerializer_js_1 = __importDefault(require("./internals/EnumSerializer.cjs"));
104
106
  const StubSerializer_js_1 = __importDefault(require("./internals/StubSerializer.cjs"));
107
+ const CompositePDTSerializer_js_1 = __importDefault(require("./internals/CompositePDTSerializer.cjs"));
108
+ const PrimitivePDTSerializer_js_1 = __importDefault(require("./internals/PrimitivePDTSerializer.cjs"));
105
109
  const NumberSerializationStrategy_js_1 = __importDefault(require("./internals/NumberSerializationStrategy.cjs"));
106
110
  const AnySerializer_js_1 = __importDefault(require("./internals/AnySerializer.cjs"));
107
111
  const GraphBinaryReader_js_1 = __importDefault(require("./internals/GraphBinaryReader.cjs"));
108
112
  const GraphBinaryWriter_js_1 = __importDefault(require("./internals/GraphBinaryWriter.cjs"));
109
- const ioc = {};
110
- ioc.DataType = DataType_js_1.default;
111
- ioc.utils = utils;
112
- ioc.serializers = {};
113
- ioc.intSerializer = new IntSerializer_js_1.default(ioc);
114
- ioc.longSerializer = new LongSerializer_js_1.default(ioc);
115
- ioc.stringSerializer = new StringSerializer_js_1.default(ioc, ioc.DataType.STRING);
116
- ioc.dateTimeSerializer = new DateTimeSerializer_js_1.default(ioc);
117
- ioc.doubleSerializer = new DoubleSerializer_js_1.default(ioc);
118
- ioc.floatSerializer = new FloatSerializer_js_1.default(ioc);
119
- ioc.listSerializer = new ArraySerializer_js_1.default(ioc, ioc.DataType.LIST);
120
- ioc.mapSerializer = new MapSerializer_js_1.default(ioc);
121
- ioc.setSerializer = new SetSerializer_js_1.default(ioc, ioc.DataType.SET);
122
- ioc.uuidSerializer = new UuidSerializer_js_1.default(ioc);
123
- ioc.edgeSerializer = new EdgeSerializer_js_1.default(ioc);
124
- ioc.pathSerializer = new PathSerializer_js_1.default(ioc);
125
- ioc.propertySerializer = new PropertySerializer_js_1.default(ioc);
126
- ioc.vertexSerializer = new VertexSerializer_js_1.default(ioc);
127
- ioc.vertexPropertySerializer = new VertexPropertySerializer_js_1.default(ioc);
128
- ioc.bigIntegerSerializer = new BigIntegerSerializer_js_1.default(ioc);
129
- ioc.byteSerializer = new ByteSerializer_js_1.default(ioc);
130
- ioc.binarySerializer = new BinarySerializer_js_1.default(ioc);
131
- ioc.shortSerializer = new ShortSerializer_js_1.default(ioc);
132
- ioc.booleanSerializer = new BooleanSerializer_js_1.default(ioc);
133
- ioc.markerSerializer = new MarkerSerializer_js_1.default(ioc);
134
- ioc.unspecifiedNullSerializer = new UnspecifiedNullSerializer_js_1.default(ioc);
135
- ioc.enumSerializer = new EnumSerializer_js_1.default(ioc);
136
- // Register stub serializers for unimplemented v4 types
137
- new StubSerializer_js_1.default(ioc, ioc.DataType.TREE, 'Tree');
138
- new StubSerializer_js_1.default(ioc, ioc.DataType.GRAPH, 'Graph');
139
- new StubSerializer_js_1.default(ioc, ioc.DataType.COMPOSITEPDT, 'CompositePDT');
140
- new StubSerializer_js_1.default(ioc, ioc.DataType.PRIMITIVEPDT, 'PrimitivePDT');
141
- ioc.numberSerializationStrategy = new NumberSerializationStrategy_js_1.default(ioc);
142
- ioc.anySerializer = new AnySerializer_js_1.default(ioc);
143
- ioc.graphBinaryReader = new GraphBinaryReader_js_1.default(ioc);
144
- ioc.graphBinaryWriter = new GraphBinaryWriter_js_1.default(ioc);
113
+ const utils_js_1 = require("../../../utils.cjs");
114
+ function createIoc(anySerializerOptions) {
115
+ const ioc = {};
116
+ ioc.DataType = DataType_js_1.default;
117
+ ioc.utils = utils;
118
+ ioc.serializers = {};
119
+ ioc.intSerializer = new IntSerializer_js_1.default(ioc);
120
+ ioc.longSerializer = new LongSerializer_js_1.default(ioc);
121
+ ioc.stringSerializer = new StringSerializer_js_1.default(ioc, ioc.DataType.STRING);
122
+ ioc.dateTimeSerializer = new DateTimeSerializer_js_1.default(ioc);
123
+ ioc.doubleSerializer = new DoubleSerializer_js_1.default(ioc);
124
+ ioc.floatSerializer = new FloatSerializer_js_1.default(ioc);
125
+ ioc.listSerializer = new ArraySerializer_js_1.default(ioc, ioc.DataType.LIST);
126
+ ioc.mapSerializer = new MapSerializer_js_1.default(ioc);
127
+ ioc.setSerializer = new SetSerializer_js_1.default(ioc, ioc.DataType.SET);
128
+ ioc.uuidSerializer = new UuidSerializer_js_1.default(ioc);
129
+ ioc.edgeSerializer = new EdgeSerializer_js_1.default(ioc);
130
+ ioc.pathSerializer = new PathSerializer_js_1.default(ioc);
131
+ ioc.propertySerializer = new PropertySerializer_js_1.default(ioc);
132
+ ioc.vertexSerializer = new VertexSerializer_js_1.default(ioc);
133
+ ioc.vertexPropertySerializer = new VertexPropertySerializer_js_1.default(ioc);
134
+ ioc.graphSerializer = new GraphSerializer_js_1.default(ioc);
135
+ ioc.bigIntegerSerializer = new BigIntegerSerializer_js_1.default(ioc);
136
+ ioc.byteSerializer = new ByteSerializer_js_1.default(ioc);
137
+ ioc.binarySerializer = new BinarySerializer_js_1.default(ioc);
138
+ ioc.shortSerializer = new ShortSerializer_js_1.default(ioc);
139
+ ioc.booleanSerializer = new BooleanSerializer_js_1.default(ioc);
140
+ ioc.markerSerializer = new MarkerSerializer_js_1.default(ioc);
141
+ ioc.unspecifiedNullSerializer = new UnspecifiedNullSerializer_js_1.default(ioc);
142
+ ioc.enumSerializer = new EnumSerializer_js_1.default(ioc);
143
+ ioc.compositePDTSerializer = new CompositePDTSerializer_js_1.default(ioc);
144
+ ioc.primitivePDTSerializer = new PrimitivePDTSerializer_js_1.default(ioc);
145
+ ioc.treeSerializer = new TreeSerializer_js_1.default(ioc);
146
+ ioc.pdtRegistry = null;
147
+ ioc.numberSerializationStrategy = new NumberSerializationStrategy_js_1.default(ioc);
148
+ ioc.anySerializer = new AnySerializer_js_1.default(ioc, anySerializerOptions);
149
+ ioc.graphBinaryReader = new GraphBinaryReader_js_1.default(ioc);
150
+ ioc.graphBinaryWriter = new GraphBinaryWriter_js_1.default(ioc);
151
+ return ioc;
152
+ }
153
+ function createPreciseReader() {
154
+ const wrapperMap = new Map([
155
+ [DataType_js_1.default.INT, utils_js_1.Int],
156
+ [DataType_js_1.default.LONG, utils_js_1.Long],
157
+ [DataType_js_1.default.FLOAT, utils_js_1.Float],
158
+ [DataType_js_1.default.DOUBLE, utils_js_1.Double],
159
+ [DataType_js_1.default.SHORT, utils_js_1.Short],
160
+ [DataType_js_1.default.BYTE, utils_js_1.Byte],
161
+ ]);
162
+ const preciseIoc = createIoc({
163
+ postDeserialize(result, typeCode) {
164
+ const Wrapper = wrapperMap.get(typeCode);
165
+ if (Wrapper && result !== null && result !== undefined) {
166
+ return new Wrapper(result);
167
+ }
168
+ return result;
169
+ },
170
+ });
171
+ return preciseIoc.graphBinaryReader;
172
+ }
173
+ const ioc = createIoc();
145
174
  var DataType_js_2 = require("./internals/DataType.cjs");
146
175
  Object.defineProperty(exports, "DataType", { enumerable: true, get: function () { return __importDefault(DataType_js_2).default; } });
147
- exports.serializers = ioc.serializers, exports.intSerializer = ioc.intSerializer, exports.longSerializer = ioc.longSerializer, exports.stringSerializer = ioc.stringSerializer, exports.dateTimeSerializer = ioc.dateTimeSerializer, exports.doubleSerializer = ioc.doubleSerializer, exports.floatSerializer = ioc.floatSerializer, exports.listSerializer = ioc.listSerializer, exports.mapSerializer = ioc.mapSerializer, exports.setSerializer = ioc.setSerializer, exports.uuidSerializer = ioc.uuidSerializer, exports.edgeSerializer = ioc.edgeSerializer, exports.pathSerializer = ioc.pathSerializer, exports.propertySerializer = ioc.propertySerializer, exports.vertexSerializer = ioc.vertexSerializer, exports.vertexPropertySerializer = ioc.vertexPropertySerializer, exports.bigIntegerSerializer = ioc.bigIntegerSerializer, exports.byteSerializer = ioc.byteSerializer, exports.binarySerializer = ioc.binarySerializer, exports.shortSerializer = ioc.shortSerializer, exports.booleanSerializer = ioc.booleanSerializer, exports.markerSerializer = ioc.markerSerializer, exports.unspecifiedNullSerializer = ioc.unspecifiedNullSerializer, exports.enumSerializer = ioc.enumSerializer, exports.numberSerializationStrategy = ioc.numberSerializationStrategy, exports.anySerializer = ioc.anySerializer, exports.graphBinaryReader = ioc.graphBinaryReader, exports.graphBinaryWriter = ioc.graphBinaryWriter;
176
+ exports.serializers = ioc.serializers, exports.intSerializer = ioc.intSerializer, exports.longSerializer = ioc.longSerializer, exports.stringSerializer = ioc.stringSerializer, exports.dateTimeSerializer = ioc.dateTimeSerializer, exports.doubleSerializer = ioc.doubleSerializer, exports.floatSerializer = ioc.floatSerializer, exports.listSerializer = ioc.listSerializer, exports.mapSerializer = ioc.mapSerializer, exports.setSerializer = ioc.setSerializer, exports.uuidSerializer = ioc.uuidSerializer, exports.edgeSerializer = ioc.edgeSerializer, exports.pathSerializer = ioc.pathSerializer, exports.propertySerializer = ioc.propertySerializer, exports.vertexSerializer = ioc.vertexSerializer, exports.vertexPropertySerializer = ioc.vertexPropertySerializer, exports.graphSerializer = ioc.graphSerializer, exports.bigIntegerSerializer = ioc.bigIntegerSerializer, exports.byteSerializer = ioc.byteSerializer, exports.binarySerializer = ioc.binarySerializer, exports.shortSerializer = ioc.shortSerializer, exports.booleanSerializer = ioc.booleanSerializer, exports.markerSerializer = ioc.markerSerializer, exports.unspecifiedNullSerializer = ioc.unspecifiedNullSerializer, exports.enumSerializer = ioc.enumSerializer, exports.compositePDTSerializer = ioc.compositePDTSerializer, exports.primitivePDTSerializer = ioc.primitivePDTSerializer, exports.treeSerializer = ioc.treeSerializer, exports.numberSerializationStrategy = ioc.numberSerializationStrategy, exports.anySerializer = ioc.anySerializer, exports.graphBinaryReader = ioc.graphBinaryReader, exports.graphBinaryWriter = ioc.graphBinaryWriter;
148
177
  exports.default = ioc;
@@ -1,3 +1,4 @@
1
+ export function createPreciseReader(): GraphBinaryReader;
1
2
  export { default as DataType } from "./internals/DataType.cjs";
2
3
  export const serializers: {};
3
4
  export const intSerializer: IntSerializer;
@@ -15,6 +16,7 @@ export const pathSerializer: PathSerializer;
15
16
  export const propertySerializer: PropertySerializer;
16
17
  export const vertexSerializer: VertexSerializer;
17
18
  export const vertexPropertySerializer: VertexPropertySerializer;
19
+ export const graphSerializer: GraphSerializer;
18
20
  export const bigIntegerSerializer: BigIntegerSerializer;
19
21
  export const byteSerializer: ByteSerializer;
20
22
  export const binarySerializer: BinarySerializer;
@@ -23,11 +25,15 @@ export const booleanSerializer: BooleanSerializer;
23
25
  export const markerSerializer: MarkerSerializer;
24
26
  export const unspecifiedNullSerializer: UnspecifiedNullSerializer;
25
27
  export const enumSerializer: EnumSerializer;
28
+ export const compositePDTSerializer: CompositePDTSerializer;
29
+ export const primitivePDTSerializer: PrimitivePDTSerializer;
30
+ export const treeSerializer: TreeSerializer;
26
31
  export const numberSerializationStrategy: NumberSerializationStrategy;
27
32
  export const anySerializer: AnySerializer;
28
33
  export const graphBinaryReader: GraphBinaryReader;
29
34
  export const graphBinaryWriter: GraphBinaryWriter;
30
35
  export default ioc;
36
+ import GraphBinaryReader from './internals/GraphBinaryReader.cjs';
31
37
  import IntSerializer from './internals/IntSerializer.cjs';
32
38
  import LongSerializer from './internals/LongSerializer.cjs';
33
39
  import StringSerializer from './internals/StringSerializer.cjs';
@@ -43,6 +49,7 @@ import PathSerializer from './internals/PathSerializer.cjs';
43
49
  import PropertySerializer from './internals/PropertySerializer.cjs';
44
50
  import VertexSerializer from './internals/VertexSerializer.cjs';
45
51
  import VertexPropertySerializer from './internals/VertexPropertySerializer.cjs';
52
+ import GraphSerializer from './internals/GraphSerializer.cjs';
46
53
  import BigIntegerSerializer from './internals/BigIntegerSerializer.cjs';
47
54
  import ByteSerializer from './internals/ByteSerializer.cjs';
48
55
  import BinarySerializer from './internals/BinarySerializer.cjs';
@@ -51,9 +58,11 @@ import BooleanSerializer from './internals/BooleanSerializer.cjs';
51
58
  import MarkerSerializer from './internals/MarkerSerializer.cjs';
52
59
  import UnspecifiedNullSerializer from './internals/UnspecifiedNullSerializer.cjs';
53
60
  import EnumSerializer from './internals/EnumSerializer.cjs';
61
+ import CompositePDTSerializer from './internals/CompositePDTSerializer.cjs';
62
+ import PrimitivePDTSerializer from './internals/PrimitivePDTSerializer.cjs';
63
+ import TreeSerializer from './internals/TreeSerializer.cjs';
54
64
  import NumberSerializationStrategy from './internals/NumberSerializationStrategy.cjs';
55
65
  import AnySerializer from './internals/AnySerializer.cjs';
56
- import GraphBinaryReader from './internals/GraphBinaryReader.cjs';
57
66
  import GraphBinaryWriter from './internals/GraphBinaryWriter.cjs';
58
67
  declare namespace ioc {
59
68
  export { DataType };
@@ -74,6 +83,7 @@ declare namespace ioc {
74
83
  export let propertySerializer: PropertySerializer;
75
84
  export let vertexSerializer: VertexSerializer;
76
85
  export let vertexPropertySerializer: VertexPropertySerializer;
86
+ export let graphSerializer: GraphSerializer;
77
87
  export let bigIntegerSerializer: BigIntegerSerializer;
78
88
  export let byteSerializer: ByteSerializer;
79
89
  export let binarySerializer: BinarySerializer;
@@ -82,6 +92,10 @@ declare namespace ioc {
82
92
  export let markerSerializer: MarkerSerializer;
83
93
  export let unspecifiedNullSerializer: UnspecifiedNullSerializer;
84
94
  export let enumSerializer: EnumSerializer;
95
+ export let compositePDTSerializer: CompositePDTSerializer;
96
+ export let primitivePDTSerializer: PrimitivePDTSerializer;
97
+ export let treeSerializer: TreeSerializer;
98
+ export let pdtRegistry: any;
85
99
  export let numberSerializationStrategy: NumberSerializationStrategy;
86
100
  export let anySerializer: AnySerializer;
87
101
  export let graphBinaryReader: GraphBinaryReader;
@@ -21,10 +21,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
21
21
  /**
22
22
  * @author Igor Ostapenko
23
23
  */
24
- const buffer_1 = require("node:buffer");
25
24
  class AnySerializer {
26
- constructor(ioc) {
25
+ constructor(ioc, { postDeserialize } = {}) {
27
26
  this.ioc = ioc;
27
+ this._postDeserialize = postDeserialize || null;
28
28
  // specifically ordered, the first canBeUsedFor=true wins
29
29
  this.serializers = [
30
30
  ioc.unspecifiedNullSerializer,
@@ -39,9 +39,13 @@ class AnySerializer {
39
39
  ioc.propertySerializer,
40
40
  ioc.vertexSerializer,
41
41
  ioc.vertexPropertySerializer,
42
+ ioc.graphSerializer,
42
43
  ioc.enumSerializer,
43
44
  ioc.stringSerializer,
44
45
  ioc.binarySerializer,
46
+ ioc.primitivePDTSerializer,
47
+ ioc.compositePDTSerializer,
48
+ ioc.treeSerializer,
45
49
  ioc.mapSerializer,
46
50
  ];
47
51
  }
@@ -56,25 +60,38 @@ class AnySerializer {
56
60
  serialize(item, fullyQualifiedFormat = true) {
57
61
  return this.getSerializerCanBeUsedFor(item).serialize(item, fullyQualifiedFormat);
58
62
  }
59
- deserialize(buffer) {
60
- // obviously, fullyQualifiedFormat always is true
63
+ /**
64
+ * Async deserialization from a StreamReader.
65
+ * Reads type_code + value_flag, then dispatches to the appropriate serializer's deserializeValue().
66
+ * @param {StreamReader} reader
67
+ * @returns {Promise<any>}
68
+ */
69
+ async deserialize(reader) {
70
+ const pos = reader.position;
71
+ const type_code = await reader.readUInt8();
72
+ const serializer = this.ioc.serializers[type_code];
73
+ if (!serializer) {
74
+ throw new Error(`AnySerializer: unknown {type_code}=0x${type_code.toString(16)} at position ${pos}`);
75
+ }
76
+ const value_flag = await reader.readUInt8();
77
+ if (value_flag === 0x01) {
78
+ return null;
79
+ }
80
+ if (value_flag !== 0x00 && value_flag !== 0x02) {
81
+ throw new Error(`AnySerializer: unexpected {value_flag}=0x${value_flag.toString(16)} at position ${pos}`);
82
+ }
83
+ let result;
61
84
  try {
62
- if (buffer === undefined || buffer === null || !(buffer instanceof buffer_1.Buffer)) {
63
- throw new Error('buffer is missing');
64
- }
65
- if (buffer.length < 1) {
66
- throw new Error('buffer is empty');
67
- }
68
- const type_code = buffer.readUInt8();
69
- const serializer = this.ioc.serializers[type_code];
70
- if (!serializer) {
71
- throw new Error('unknown {type_code}');
72
- }
73
- return serializer.deserialize(buffer);
85
+ result = await serializer.deserializeValue(reader, value_flag, type_code);
74
86
  }
75
87
  catch (err) {
76
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, err });
88
+ err.message = `${serializer.constructor.name}.deserializeValue() at position ${pos}: ${err.message}`;
89
+ throw err;
90
+ }
91
+ if (this._postDeserialize) {
92
+ return this._postDeserialize(result, type_code);
77
93
  }
94
+ return result;
78
95
  }
79
96
  }
80
97
  exports.default = AnySerializer;
@@ -1,8 +1,18 @@
1
+ /**
2
+ * @author Igor Ostapenko
3
+ */
1
4
  export default class AnySerializer {
2
- constructor(ioc: any);
5
+ constructor(ioc: any, { postDeserialize }?: {});
3
6
  ioc: any;
7
+ _postDeserialize: any;
4
8
  serializers: any[];
5
9
  getSerializerCanBeUsedFor(item: any): any;
6
10
  serialize(item: any, fullyQualifiedFormat?: boolean): any;
7
- deserialize(buffer: any, ...args: any[]): any;
11
+ /**
12
+ * Async deserialization from a StreamReader.
13
+ * Reads type_code + value_flag, then dispatches to the appropriate serializer's deserializeValue().
14
+ * @param {StreamReader} reader
15
+ * @returns {Promise<any>}
16
+ */
17
+ deserialize(reader: StreamReader): Promise<any>;
8
18
  }
@@ -57,83 +57,52 @@ class ArraySerializer {
57
57
  }
58
58
  return buffer_1.Buffer.concat(bufs);
59
59
  }
60
- deserialize(buffer, fullyQualifiedFormat = true) {
61
- let len = 0;
62
- let cursor = buffer;
63
- let isBulked = false;
64
- try {
65
- if (buffer === undefined || buffer === null || !(buffer instanceof buffer_1.Buffer)) {
66
- throw new Error('buffer is missing');
67
- }
68
- if (buffer.length < 1) {
69
- throw new Error('buffer is empty');
70
- }
71
- if (fullyQualifiedFormat) {
72
- const type_code = cursor.readUInt8();
73
- len++;
74
- if (type_code !== this.ID) {
75
- throw new Error('unexpected {type_code}');
76
- }
77
- cursor = cursor.slice(1);
78
- if (cursor.length < 1) {
79
- throw new Error('{value_flag} is missing');
80
- }
81
- const value_flag = cursor.readUInt8();
82
- len++;
83
- if (value_flag === 1) {
84
- return { v: null, len };
85
- }
86
- if (value_flag !== 0 && value_flag !== 2) {
87
- throw new Error('unexpected {value_flag}');
88
- }
89
- isBulked = value_flag === 2;
90
- cursor = cursor.slice(1);
91
- }
92
- let length, length_len;
93
- try {
94
- ({ v: length, len: length_len } = this.ioc.intSerializer.deserialize(cursor, false));
95
- len += length_len;
96
- }
97
- catch (err) {
98
- err.message = '{length}: ' + err.message;
99
- throw err;
100
- }
101
- if (length < 0) {
102
- throw new Error('{length} is less than zero');
103
- }
104
- cursor = cursor.slice(length_len);
105
- const v = [];
106
- for (let i = 0; i < length; i++) {
107
- let value, value_len;
108
- try {
109
- ({ v: value, len: value_len } = this.ioc.anySerializer.deserialize(cursor));
110
- len += value_len;
111
- }
112
- catch (err) {
113
- err.message = `{item_${i}}: ` + err.message;
114
- throw err;
115
- }
116
- cursor = cursor.slice(value_len);
117
- if (isBulked) {
118
- if (cursor.length < 8) {
119
- throw new Error(`{item_${i}}: bulk count is missing`);
120
- }
121
- const bulkCount = cursor.readBigInt64BE();
122
- len += 8;
123
- cursor = cursor.slice(8);
124
- for (let j = 0n; j < bulkCount; j++) {
125
- v.push(value);
126
- }
127
- }
128
- else {
60
+ /**
61
+ * Async deserialization of array value bytes from a StreamReader.
62
+ * @param {StreamReader} reader
63
+ * @param {number} valueFlag - 0x00 for normal, 0x02 for bulked
64
+ * @param {number} typeCode
65
+ * @returns {Promise<Array>}
66
+ */
67
+ async deserializeValue(reader, valueFlag, typeCode) {
68
+ const isBulked = valueFlag === 0x02;
69
+ const length = await this.ioc.intSerializer.deserializeBare(reader);
70
+ if (length < 0) {
71
+ throw new Error(`ArraySerializer: {length}=${length} is less than zero`);
72
+ }
73
+ const v = [];
74
+ for (let i = 0; i < length; i++) {
75
+ const value = await this.ioc.anySerializer.deserialize(reader);
76
+ if (isBulked) {
77
+ const bulkCount = await reader.readBigInt64BE();
78
+ for (let j = 0n; j < bulkCount; j++) {
129
79
  v.push(value);
130
80
  }
131
81
  }
132
- return { v, len };
82
+ else {
83
+ v.push(value);
84
+ }
85
+ }
86
+ return v;
87
+ }
88
+ /**
89
+ * Async fully-qualified deserialization from a StreamReader.
90
+ * @param {StreamReader} reader
91
+ * @returns {Promise<Array|null>}
92
+ */
93
+ async deserialize(reader) {
94
+ const type_code = await reader.readUInt8();
95
+ if (type_code !== this.ID) {
96
+ throw new Error(`ArraySerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
97
+ }
98
+ const value_flag = await reader.readUInt8();
99
+ if (value_flag === 0x01) {
100
+ return null;
133
101
  }
134
- catch (err) {
135
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, cursor, err });
102
+ if (value_flag !== 0x00 && value_flag !== 0x02) {
103
+ throw new Error(`ArraySerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
136
104
  }
105
+ return this.deserializeValue(reader, value_flag, type_code);
137
106
  }
138
107
  }
139
108
  exports.default = ArraySerializer;
@@ -4,12 +4,19 @@ export default class ArraySerializer {
4
4
  ID: any;
5
5
  canBeUsedFor(value: any): value is any[];
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: any[];
12
- len: number;
13
- };
7
+ /**
8
+ * Async deserialization of array value bytes from a StreamReader.
9
+ * @param {StreamReader} reader
10
+ * @param {number} valueFlag - 0x00 for normal, 0x02 for bulked
11
+ * @param {number} typeCode
12
+ * @returns {Promise<Array>}
13
+ */
14
+ deserializeValue(reader: StreamReader, valueFlag: number, typeCode: number): Promise<any[]>;
15
+ /**
16
+ * Async fully-qualified deserialization from a StreamReader.
17
+ * @param {StreamReader} reader
18
+ * @returns {Promise<Array|null>}
19
+ */
20
+ deserialize(reader: StreamReader): Promise<any[] | null>;
14
21
  }
15
22
  import { Buffer } from 'buffer';