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
@@ -52,58 +52,38 @@ export default class BinarySerializer {
52
52
  bufs.push(item);
53
53
  return Buffer.concat(bufs);
54
54
  }
55
- deserialize(buffer, fullyQualifiedFormat = true) {
56
- let len = 0;
57
- let cursor = buffer;
58
- try {
59
- if (buffer === undefined || buffer === null || !(buffer instanceof Buffer)) {
60
- throw new Error('buffer is missing');
61
- }
62
- if (buffer.length < 1) {
63
- throw new Error('buffer is empty');
64
- }
65
- if (fullyQualifiedFormat) {
66
- const type_code = cursor.readUInt8();
67
- len++;
68
- if (type_code !== this.ioc.DataType.BINARY) {
69
- throw new Error('unexpected {type_code}');
70
- }
71
- cursor = cursor.slice(1);
72
- if (cursor.length < 1) {
73
- throw new Error('{value_flag} is missing');
74
- }
75
- const value_flag = cursor.readUInt8();
76
- len++;
77
- if (value_flag === 1) {
78
- return { v: null, len };
79
- }
80
- if (value_flag !== 0) {
81
- throw new Error('unexpected {value_flag}');
82
- }
83
- cursor = cursor.slice(1);
84
- }
85
- let length, length_len;
86
- try {
87
- ({ v: length, len: length_len } = this.ioc.intSerializer.deserialize(cursor, false));
88
- len += length_len;
89
- }
90
- catch (err) {
91
- err.message = '{length}: ' + err.message;
92
- throw err;
93
- }
94
- if (length < 0) {
95
- throw new Error('{length} is less than zero');
96
- }
97
- cursor = cursor.slice(length_len);
98
- if (cursor.length < length) {
99
- throw new Error(`{value}: unexpected actual {value} length=${cursor.length} when {length}=${length}`);
100
- }
101
- const v = cursor.slice(0, length);
102
- len += length;
103
- return { v, len };
55
+ /**
56
+ * @param {StreamReader} reader
57
+ * @param {number} valueFlag
58
+ * @param {number} typeCode
59
+ * @returns {Promise<Buffer>}
60
+ */
61
+ async deserializeValue(reader, valueFlag, typeCode) {
62
+ const length = await this.ioc.intSerializer.deserializeBare(reader);
63
+ if (length < 0) {
64
+ throw new Error(`BinarySerializer: {length}=${length} is less than zero`);
65
+ }
66
+ if (length === 0) {
67
+ return Buffer.alloc(0);
68
+ }
69
+ return reader.readBytes(length);
70
+ }
71
+ /**
72
+ * @param {StreamReader} reader
73
+ * @returns {Promise<Buffer|null>}
74
+ */
75
+ async deserialize(reader) {
76
+ const type_code = await reader.readUInt8();
77
+ if (type_code !== this.ioc.DataType.BINARY) {
78
+ throw new Error(`BinarySerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
79
+ }
80
+ const value_flag = await reader.readUInt8();
81
+ if (value_flag === 0x01) {
82
+ return null;
104
83
  }
105
- catch (err) {
106
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, cursor, err });
84
+ if (value_flag !== 0x00) {
85
+ throw new Error(`BinarySerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
107
86
  }
87
+ return this.deserializeValue(reader, value_flag, type_code);
108
88
  }
109
89
  }
@@ -3,9 +3,17 @@ export default class BooleanSerializer {
3
3
  ioc: any;
4
4
  canBeUsedFor(value: any): value is 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<boolean>}
11
+ */
12
+ deserializeValue(reader: StreamReader, valueFlag: number, typeCode: number): Promise<boolean>;
13
+ /**
14
+ * @param {StreamReader} reader
15
+ * @returns {Promise<boolean|null>}
16
+ */
17
+ deserialize(reader: StreamReader): Promise<boolean | null>;
10
18
  }
11
19
  import { Buffer } from 'buffer';
@@ -42,49 +42,35 @@ export default class BooleanSerializer {
42
42
  bufs.push(Buffer.from([item ? 0x01 : 0x00]));
43
43
  return Buffer.concat(bufs);
44
44
  }
45
- deserialize(buffer, fullyQualifiedFormat = true) {
46
- let len = 0;
47
- let cursor = buffer;
48
- try {
49
- if (buffer === undefined || buffer === null || !(buffer instanceof Buffer)) {
50
- throw new Error('buffer is missing');
51
- }
52
- if (buffer.length < 1) {
53
- throw new Error('buffer is empty');
54
- }
55
- if (fullyQualifiedFormat) {
56
- const type_code = cursor.readUInt8();
57
- len++;
58
- if (type_code !== this.ioc.DataType.BOOLEAN) {
59
- throw new Error('unexpected {type_code}');
60
- }
61
- cursor = cursor.slice(1);
62
- if (cursor.length < 1) {
63
- throw new Error('{value_flag} is missing');
64
- }
65
- const value_flag = cursor.readUInt8();
66
- len++;
67
- if (value_flag === 1) {
68
- return { v: null, len };
69
- }
70
- if (value_flag !== 0) {
71
- throw new Error('unexpected {value_flag}');
72
- }
73
- cursor = cursor.slice(1);
74
- }
75
- if (cursor.length < 1) {
76
- throw new Error('unexpected {value} length');
77
- }
78
- len += 1;
79
- let v = cursor.readUInt8();
80
- if (v !== 0x00 && v !== 0x01) {
81
- throw new Error(`unexpected boolean byte=${v}`);
82
- }
83
- v = v === 0x01;
84
- return { v, len };
45
+ /**
46
+ * @param {StreamReader} reader
47
+ * @param {number} valueFlag
48
+ * @param {number} typeCode
49
+ * @returns {Promise<boolean>}
50
+ */
51
+ async deserializeValue(reader, valueFlag, typeCode) {
52
+ const v = await reader.readUInt8();
53
+ if (v !== 0x00 && v !== 0x01) {
54
+ throw new Error(`BooleanSerializer: unexpected boolean byte=0x${v.toString(16)}`);
55
+ }
56
+ return v === 0x01;
57
+ }
58
+ /**
59
+ * @param {StreamReader} reader
60
+ * @returns {Promise<boolean|null>}
61
+ */
62
+ async deserialize(reader) {
63
+ const type_code = await reader.readUInt8();
64
+ if (type_code !== this.ioc.DataType.BOOLEAN) {
65
+ throw new Error(`BooleanSerializer: 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(`BooleanSerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
88
73
  }
74
+ return this.deserializeValue(reader, value_flag, type_code);
89
75
  }
90
76
  }
@@ -2,9 +2,17 @@ export default class ByteSerializer {
2
2
  constructor(ioc: any);
3
3
  ioc: any;
4
4
  serialize(item: any, fullyQualifiedFormat?: boolean): Buffer<ArrayBuffer>;
5
- deserialize(buffer: any, fullyQualifiedFormat?: boolean, ...args: any[]): {
6
- v: any;
7
- len: number;
8
- };
5
+ /**
6
+ * @param {StreamReader} reader
7
+ * @param {number} valueFlag
8
+ * @param {number} typeCode
9
+ * @returns {Promise<number>}
10
+ */
11
+ deserializeValue(reader: StreamReader, valueFlag: number, typeCode: number): Promise<number>;
12
+ /**
13
+ * @param {StreamReader} reader
14
+ * @returns {Promise<number|null>}
15
+ */
16
+ deserialize(reader: StreamReader): Promise<number | null>;
9
17
  }
10
18
  import { Buffer } from 'buffer';
@@ -41,45 +41,31 @@ export default class ByteSerializer {
41
41
  bufs.push(v);
42
42
  return Buffer.concat(bufs);
43
43
  }
44
- deserialize(buffer, fullyQualifiedFormat = true) {
45
- let len = 0;
46
- let cursor = buffer;
47
- try {
48
- if (buffer === undefined || buffer === null || !(buffer instanceof Buffer)) {
49
- throw new Error('buffer is missing');
50
- }
51
- if (buffer.length < 1) {
52
- throw new Error('buffer is empty');
53
- }
54
- if (fullyQualifiedFormat) {
55
- const type_code = cursor.readUInt8();
56
- len++;
57
- if (type_code !== this.ioc.DataType.BYTE) {
58
- throw new Error('unexpected {type_code}');
59
- }
60
- cursor = cursor.slice(1);
61
- if (cursor.length < 1) {
62
- throw new Error('{value_flag} is missing');
63
- }
64
- const value_flag = cursor.readUInt8();
65
- len++;
66
- if (value_flag === 1) {
67
- return { v: null, len };
68
- }
69
- if (value_flag !== 0) {
70
- throw new Error('unexpected {value_flag}');
71
- }
72
- cursor = cursor.slice(1);
73
- }
74
- if (cursor.length < 1) {
75
- throw new Error('unexpected {value} length');
76
- }
77
- len += 1;
78
- const v = cursor.readInt8();
79
- return { v, len };
44
+ /**
45
+ * @param {StreamReader} reader
46
+ * @param {number} valueFlag
47
+ * @param {number} typeCode
48
+ * @returns {Promise<number>}
49
+ */
50
+ async deserializeValue(reader, valueFlag, typeCode) {
51
+ return await reader.readByte();
52
+ }
53
+ /**
54
+ * @param {StreamReader} reader
55
+ * @returns {Promise<number|null>}
56
+ */
57
+ async deserialize(reader) {
58
+ const type_code = await reader.readUInt8();
59
+ if (type_code !== this.ioc.DataType.BYTE) {
60
+ throw new Error(`ByteSerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
61
+ }
62
+ const value_flag = await reader.readUInt8();
63
+ if (value_flag === 0x01) {
64
+ return null;
80
65
  }
81
- catch (err) {
82
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, cursor, err });
66
+ if (value_flag !== 0x00) {
67
+ throw new Error(`ByteSerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
83
68
  }
69
+ return this.deserializeValue(reader, value_flag, type_code);
84
70
  }
85
71
  }
@@ -0,0 +1,10 @@
1
+ export default class CompositePDTSerializer {
2
+ constructor(ioc: any);
3
+ ioc: any;
4
+ canBeUsedFor(value: any): value is CompositePDT;
5
+ serialize(item: any, fullyQualifiedFormat?: boolean): Buffer<ArrayBuffer>;
6
+ deserializeValue(reader: any, valueFlag: any, typeCode: any): Promise<any>;
7
+ deserialize(reader: any): Promise<any>;
8
+ }
9
+ import { CompositePDT } from '../../../graph.js';
10
+ import { Buffer } from 'buffer';
@@ -0,0 +1,78 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ import { Buffer } from 'buffer';
20
+ import { CompositePDT } from '../../../graph.js';
21
+ export default class CompositePDTSerializer {
22
+ constructor(ioc) {
23
+ this.ioc = ioc;
24
+ this.ioc.serializers[ioc.DataType.COMPOSITEPDT] = this;
25
+ }
26
+ canBeUsedFor(value) {
27
+ return value instanceof CompositePDT;
28
+ }
29
+ serialize(item, fullyQualifiedFormat = true) {
30
+ if (item === undefined || item === null) {
31
+ if (fullyQualifiedFormat) {
32
+ return Buffer.from([this.ioc.DataType.COMPOSITEPDT, 0x01]);
33
+ }
34
+ const bufs = [];
35
+ bufs.push(this.ioc.stringSerializer.serialize('', false));
36
+ bufs.push(this.ioc.mapSerializer.serialize({}, false));
37
+ return Buffer.concat(bufs);
38
+ }
39
+ const bufs = [];
40
+ if (fullyQualifiedFormat) {
41
+ bufs.push(Buffer.from([this.ioc.DataType.COMPOSITEPDT, 0x00]));
42
+ }
43
+ bufs.push(this.ioc.stringSerializer.serialize(item.name, true));
44
+ bufs.push(this.ioc.mapSerializer.serialize(item.fields, true));
45
+ return Buffer.concat(bufs);
46
+ }
47
+ async deserializeValue(reader, valueFlag, typeCode) {
48
+ const name = await this.ioc.anySerializer.deserialize(reader);
49
+ if (!name) {
50
+ throw new Error('CompositePDTSerializer: name cannot be null or empty');
51
+ }
52
+ const fieldsRaw = await this.ioc.anySerializer.deserialize(reader);
53
+ const fields = fieldsRaw instanceof Map ? Object.fromEntries(fieldsRaw) : fieldsRaw || {};
54
+ const pdt = new CompositePDT(name, fields);
55
+ const pdtRegistry = reader.pdtRegistry;
56
+ if (pdtRegistry) {
57
+ const hydrated = pdtRegistry.hydrate(pdt);
58
+ if (!(hydrated instanceof CompositePDT)) {
59
+ return hydrated;
60
+ }
61
+ }
62
+ return pdt;
63
+ }
64
+ async deserialize(reader) {
65
+ const type_code = await reader.readUInt8();
66
+ if (type_code !== this.ioc.DataType.COMPOSITEPDT) {
67
+ throw new Error(`CompositePDTSerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
68
+ }
69
+ const value_flag = await reader.readUInt8();
70
+ if (value_flag === 0x01) {
71
+ return null;
72
+ }
73
+ if (value_flag !== 0x00) {
74
+ throw new Error(`CompositePDTSerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
75
+ }
76
+ return this.deserializeValue(reader, value_flag, type_code);
77
+ }
78
+ }
@@ -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';
@@ -61,76 +61,59 @@ export default class DateTimeSerializer {
61
61
  bufs.push(v);
62
62
  return 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)) {
69
- throw new Error('buffer is missing');
70
- }
71
- if (buffer.length < 1) {
72
- throw new Error('buffer is empty');
73
- }
74
- if (fullyQualifiedFormat) {
75
- const type_code = cursor.readUInt8();
76
- len++;
77
- if (type_code !== this.ID) {
78
- throw new Error('unexpected {type_code}');
79
- }
80
- cursor = cursor.slice(1);
81
- if (cursor.length < 1) {
82
- throw new Error('{value_flag} is missing');
83
- }
84
- const value_flag = cursor.readUInt8();
85
- len++;
86
- if (value_flag === 1) {
87
- return { v: null, len };
88
- }
89
- if (value_flag !== 0) {
90
- throw new Error('unexpected {value_flag}');
91
- }
92
- cursor = cursor.slice(1);
93
- }
94
- if (cursor.length < 18) {
95
- throw new Error('unexpected {value} length');
96
- }
97
- len += 18;
98
- let offset = 0;
99
- // Read year (Int32BE)
100
- const year = cursor.readInt32BE(offset);
101
- offset += 4;
102
- // Read month (UInt8, 1-based)
103
- const month = cursor.readUInt8(offset);
104
- offset += 1;
105
- // Read day (UInt8, 1-based)
106
- const day = cursor.readUInt8(offset);
107
- offset += 1;
108
- // Read nanoseconds since midnight (BigInt64BE)
109
- const nanos = cursor.readBigInt64BE(offset);
110
- offset += 8;
111
- // Read UTC offset in seconds (Int32BE) - JS Date cannot represent non-zero offsets
112
- const utcOffset = cursor.readInt32BE(offset);
113
- offset += 4;
114
- // Convert nanos to time components
115
- const hours = Number(nanos / 3600000000000n);
116
- const remainingNanos = nanos % 3600000000000n;
117
- const minutes = Number(remainingNanos / 60000000000n);
118
- const remainingNanos2 = remainingNanos % 60000000000n;
119
- const seconds = Number(remainingNanos2 / 1000000000n);
120
- const millis = Number((remainingNanos2 % 1000000000n) / 1000000n);
121
- const v = new Date(Date.UTC(year, month - 1, day, hours, minutes, seconds, millis));
122
- // Date.UTC treats years 0-99 as 1900-1999, correct it
123
- if (year >= 0 && year <= 99) {
124
- v.setUTCFullYear(year);
125
- }
126
- // Adjust for non-zero UTC offset (JS Date is always UTC internally)
127
- if (utcOffset !== 0) {
128
- v.setTime(v.getTime() - utcOffset * 1000);
129
- }
130
- return { v, len };
64
+ /**
65
+ * @param {StreamReader} reader
66
+ * @param {number} valueFlag
67
+ * @param {number} typeCode
68
+ * @returns {Promise<Date>}
69
+ */
70
+ async deserializeValue(reader, valueFlag, typeCode) {
71
+ // 18 bytes: year(4) + month(1) + day(1) + nanos(8) + utcOffset(4)
72
+ const buf = await reader.readBytes(18);
73
+ let offset = 0;
74
+ const year = buf.readInt32BE(offset);
75
+ offset += 4;
76
+ const month = buf.readUInt8(offset);
77
+ offset += 1;
78
+ const day = buf.readUInt8(offset);
79
+ offset += 1;
80
+ const nanos = buf.readBigInt64BE(offset);
81
+ offset += 8;
82
+ const utcOffset = buf.readInt32BE(offset);
83
+ // Convert nanos to time components
84
+ const hours = Number(nanos / 3600000000000n);
85
+ const remainingNanos = nanos % 3600000000000n;
86
+ const minutes = Number(remainingNanos / 60000000000n);
87
+ const remainingNanos2 = remainingNanos % 60000000000n;
88
+ const seconds = Number(remainingNanos2 / 1000000000n);
89
+ const millis = Number((remainingNanos2 % 1000000000n) / 1000000n);
90
+ const v = new Date(Date.UTC(year, month - 1, day, hours, minutes, seconds, millis));
91
+ // Date.UTC treats years 0-99 as 1900-1999, correct it
92
+ if (year >= 0 && year <= 99) {
93
+ v.setUTCFullYear(year);
94
+ }
95
+ // Adjust for non-zero UTC offset (JS Date is always UTC internally)
96
+ if (utcOffset !== 0) {
97
+ v.setTime(v.getTime() - utcOffset * 1000);
98
+ }
99
+ return v;
100
+ }
101
+ /**
102
+ * @param {StreamReader} reader
103
+ * @returns {Promise<Date|null>}
104
+ */
105
+ async deserialize(reader) {
106
+ const type_code = await reader.readUInt8();
107
+ if (type_code !== this.ID) {
108
+ throw new Error(`DateTimeSerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
109
+ }
110
+ const value_flag = await reader.readUInt8();
111
+ if (value_flag === 0x01) {
112
+ return null;
131
113
  }
132
- catch (err) {
133
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, cursor, err });
114
+ if (value_flag !== 0x00) {
115
+ throw new Error(`DateTimeSerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
134
116
  }
117
+ return this.deserializeValue(reader, value_flag, type_code);
135
118
  }
136
119
  }
@@ -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';
@@ -44,45 +44,31 @@ export default class DoubleSerializer {
44
44
  bufs.push(v);
45
45
  return Buffer.concat(bufs);
46
46
  }
47
- deserialize(buffer, fullyQualifiedFormat = true) {
48
- let len = 0;
49
- let cursor = buffer;
50
- try {
51
- if (buffer === undefined || buffer === null || !(buffer instanceof Buffer)) {
52
- throw new Error('buffer is missing');
53
- }
54
- if (buffer.length < 1) {
55
- throw new Error('buffer is empty');
56
- }
57
- if (fullyQualifiedFormat) {
58
- const type_code = cursor.readUInt8();
59
- len++;
60
- if (type_code !== this.ioc.DataType.DOUBLE) {
61
- throw new Error('unexpected {type_code}');
62
- }
63
- cursor = cursor.slice(1);
64
- if (cursor.length < 1) {
65
- throw new Error('{value_flag} is missing');
66
- }
67
- const value_flag = cursor.readUInt8();
68
- len++;
69
- if (value_flag === 1) {
70
- return { v: null, len };
71
- }
72
- if (value_flag !== 0) {
73
- throw new Error('unexpected {value_flag}');
74
- }
75
- cursor = cursor.slice(1);
76
- }
77
- if (cursor.length < 8) {
78
- throw new Error('unexpected {value} length');
79
- }
80
- len += 8;
81
- const v = cursor.readDoubleBE();
82
- return { v, len };
47
+ /**
48
+ * @param {StreamReader} reader
49
+ * @param {number} valueFlag
50
+ * @param {number} typeCode
51
+ * @returns {Promise<number>}
52
+ */
53
+ async deserializeValue(reader, valueFlag, typeCode) {
54
+ return await reader.readDoubleBE();
55
+ }
56
+ /**
57
+ * @param {StreamReader} reader
58
+ * @returns {Promise<number|null>}
59
+ */
60
+ async deserialize(reader) {
61
+ const type_code = await reader.readUInt8();
62
+ if (type_code !== this.ioc.DataType.DOUBLE) {
63
+ throw new Error(`DoubleSerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
64
+ }
65
+ const value_flag = await reader.readUInt8();
66
+ if (value_flag === 0x01) {
67
+ return null;
83
68
  }
84
- catch (err) {
85
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, cursor, err });
69
+ if (value_flag !== 0x00) {
70
+ throw new Error(`DoubleSerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
86
71
  }
72
+ return this.deserializeValue(reader, value_flag, type_code);
87
73
  }
88
74
  }