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
@@ -46,80 +46,53 @@ export default class VertexSerializer {
46
46
  // {id}
47
47
  bufs.push(this.ioc.anySerializer.serialize(item.id));
48
48
  // {label}
49
- const labels = Array.isArray(item.label) ? item.label : item.label ? [item.label] : [];
49
+ const labels = item.labels instanceof Set
50
+ ? Array.from(item.labels)
51
+ : Array.isArray(item.label)
52
+ ? item.label
53
+ : item.label
54
+ ? [item.label]
55
+ : [];
50
56
  bufs.push(this.ioc.listSerializer.serialize(labels, false));
51
57
  // {properties}
52
58
  bufs.push(this.ioc.listSerializer.serialize([], true));
53
59
  return Buffer.concat(bufs);
54
60
  }
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.VERTEX) {
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 id, id_len;
86
- try {
87
- ({ v: id, len: id_len } = this.ioc.anySerializer.deserialize(cursor));
88
- len += id_len;
89
- }
90
- catch (err) {
91
- err.message = '{id}: ' + err.message;
92
- throw err;
93
- }
94
- cursor = cursor.slice(id_len);
95
- let label, label_len;
96
- try {
97
- ({ v: label, len: label_len } = this.ioc.listSerializer.deserialize(cursor, false));
98
- label = Array.isArray(label) && label.length > 0 ? label[0] : label;
99
- len += label_len;
100
- }
101
- catch (err) {
102
- err.message = '{label}: ' + err.message;
103
- throw err;
104
- }
105
- cursor = cursor.slice(label_len);
106
- let properties, properties_len;
107
- try {
108
- ({ v: properties, len: properties_len } = this.ioc.anySerializer.deserialize(cursor));
109
- len += properties_len;
110
- }
111
- catch (err) {
112
- err.message = '{properties}: ' + err.message;
113
- throw err;
114
- }
115
- cursor = cursor.slice(properties_len);
116
- // null properties are deserialized into empty lists
117
- const vertex_props = properties ? properties : [];
118
- const v = new Vertex(id, label, vertex_props);
119
- return { v, len };
61
+ /**
62
+ * Async deserialization of vertex value bytes from a StreamReader.
63
+ * @param {StreamReader} reader
64
+ * @param {number} valueFlag
65
+ * @param {number} typeCode
66
+ * @returns {Promise<Vertex>}
67
+ */
68
+ async deserializeValue(reader, valueFlag, typeCode) {
69
+ // {id} fully qualified
70
+ const id = await this.ioc.anySerializer.deserialize(reader);
71
+ // {label} bare list - full multi-label list
72
+ const labelList = await this.ioc.listSerializer.deserializeValue(reader, 0x00, this.ioc.DataType.LIST);
73
+ const labels = Array.isArray(labelList) ? labelList : labelList ? [labelList] : [];
74
+ const label = labels.length > 0 ? labels[0] : 'vertex';
75
+ // {properties} fully qualified
76
+ const properties = await this.ioc.anySerializer.deserialize(reader);
77
+ return new Vertex(id, label, properties || [], labels);
78
+ }
79
+ /**
80
+ * Async fully-qualified deserialization from a StreamReader.
81
+ * @param {StreamReader} reader
82
+ * @returns {Promise<Vertex|null>}
83
+ */
84
+ async deserialize(reader) {
85
+ const type_code = await reader.readUInt8();
86
+ if (type_code !== this.ioc.DataType.VERTEX) {
87
+ throw new Error(`VertexSerializer: unexpected {type_code}=0x${type_code.toString(16)}`);
88
+ }
89
+ const value_flag = await reader.readUInt8();
90
+ if (value_flag === 0x01) {
91
+ return null;
120
92
  }
121
- catch (err) {
122
- throw this.ioc.utils.des_error({ serializer: this, args: arguments, cursor, err });
93
+ if (value_flag !== 0x00) {
94
+ throw new Error(`VertexSerializer: unexpected {value_flag}=0x${value_flag.toString(16)}`);
123
95
  }
96
+ return this.deserializeValue(reader, value_flag, type_code);
124
97
  }
125
98
  }
@@ -1,9 +1,67 @@
1
- export declare function toLong(value: number | string): Long;
1
+ export declare const INT32_MIN = -2147483648;
2
+ export declare const INT32_MAX = 2147483647;
3
+ export declare function toLong(value: number | string | bigint): Long;
2
4
  export declare class Long {
3
- value: number | string;
4
- constructor(value: number | string);
5
+ readonly value: number | string | bigint;
6
+ readonly type = "long";
7
+ constructor(value: number | string | bigint);
8
+ valueOf(): number;
9
+ [Symbol.toPrimitive](hint: string): string | number;
10
+ toJSON(): string | number;
5
11
  }
6
- export declare function getUuid(): string;
12
+ export declare class Int {
13
+ readonly value: number;
14
+ readonly type = "int";
15
+ constructor(value: number);
16
+ valueOf(): number;
17
+ [Symbol.toPrimitive](hint: string): string | number;
18
+ toJSON(): number;
19
+ }
20
+ export declare class Float {
21
+ readonly value: number;
22
+ readonly type = "float";
23
+ constructor(value: number);
24
+ valueOf(): number;
25
+ [Symbol.toPrimitive](hint: string): string | number;
26
+ toJSON(): number;
27
+ }
28
+ export declare class Double {
29
+ readonly value: number;
30
+ readonly type = "double";
31
+ constructor(value: number);
32
+ valueOf(): number;
33
+ [Symbol.toPrimitive](hint: string): string | number;
34
+ toJSON(): number;
35
+ }
36
+ export declare class Short {
37
+ readonly value: number;
38
+ readonly type = "short";
39
+ constructor(value: number);
40
+ valueOf(): number;
41
+ [Symbol.toPrimitive](hint: string): string | number;
42
+ toJSON(): number;
43
+ }
44
+ export declare class Byte {
45
+ readonly value: number;
46
+ readonly type = "byte";
47
+ constructor(value: number);
48
+ valueOf(): number;
49
+ [Symbol.toPrimitive](hint: string): string | number;
50
+ toJSON(): number;
51
+ }
52
+ export declare function toInt(value: number): Int;
53
+ export declare function toFloat(value: number): Float;
54
+ export declare function toDouble(value: number): Double;
55
+ export declare function toShort(value: number): Short;
56
+ export declare function toByte(value: number): Byte;
57
+ export declare function unwrap(value: Float): number;
58
+ export declare function unwrap(value: Double): number;
59
+ export declare function unwrap(value: Int): number;
60
+ export declare function unwrap(value: Long): number | string | bigint;
61
+ export declare function unwrap(value: Short): number;
62
+ export declare function unwrap(value: Byte): number;
63
+ export declare function unwrap<T>(value: T): T;
64
+ export declare function getUuid(): `${string}-${string}-${string}-${string}-${string}`;
7
65
  export declare const emptyArray: any[];
8
66
  export declare class ImmutableMap<K, V> extends Map<K, V> implements ReadonlyMap<K, V> {
9
67
  constructor(iterable?: Iterable<[K, V]>);
@@ -20,23 +20,162 @@
20
20
  * A module containing any utility functions.
21
21
  * @author Jorge Bay Gondra
22
22
  */
23
- import * as uuid from 'uuid';
24
- const gremlinVersion = '4.0.0-beta.2'; // DO NOT MODIFY - Configured automatically by Maven Replacer Plugin
23
+ const gremlinVersion = '4.0.0-beta.3'; // DO NOT MODIFY - Configured automatically by Maven Replacer Plugin
24
+ const INT64_MIN = -9223372036854775808n;
25
+ const INT64_MAX = 9223372036854775807n;
26
+ export const INT32_MIN = -2147483648;
27
+ export const INT32_MAX = 2147483647;
25
28
  export function toLong(value) {
26
29
  return new Long(value);
27
30
  }
28
31
  export class Long {
29
32
  value;
33
+ type = 'long';
30
34
  constructor(value) {
31
35
  this.value = value;
32
- if (typeof value !== 'string' && typeof value !== 'number') {
33
- throw new TypeError('The value must be a string or a number');
36
+ if (typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'bigint') {
37
+ throw new TypeError('The value must be a string, a number, or a bigint');
34
38
  }
39
+ if (typeof value === 'string') {
40
+ if (!/^(?:0|-?[1-9]\d*)$/.test(value)) {
41
+ throw new TypeError('Long value must be a valid integer');
42
+ }
43
+ const n = BigInt(value);
44
+ if (n < INT64_MIN || n > INT64_MAX) {
45
+ throw new RangeError('Long value is outside int64 range');
46
+ }
47
+ }
48
+ if (typeof value === 'number') {
49
+ if (!Number.isInteger(value)) {
50
+ throw new TypeError('Long value must be an integer');
51
+ }
52
+ if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER) {
53
+ throw new RangeError('Long number values outside safe integer range lose precision; use string or bigint');
54
+ }
55
+ }
56
+ if (typeof value === 'bigint') {
57
+ if (value < INT64_MIN || value > INT64_MAX) {
58
+ throw new RangeError('Long value is outside int64 range');
59
+ }
60
+ }
61
+ }
62
+ valueOf() {
63
+ if (typeof this.value === 'number')
64
+ return this.value;
65
+ const big = typeof this.value === 'bigint' ? this.value : BigInt(this.value);
66
+ if (big > BigInt(Number.MAX_SAFE_INTEGER) || big < BigInt(Number.MIN_SAFE_INTEGER)) {
67
+ throw new RangeError('Long value is outside safe integer range');
68
+ }
69
+ return Number(big);
70
+ }
71
+ [Symbol.toPrimitive](hint) {
72
+ if (hint === 'string')
73
+ return String(this.value);
74
+ return this.valueOf();
75
+ }
76
+ toJSON() {
77
+ if (typeof this.value === 'bigint')
78
+ return this.value.toString();
79
+ return this.value;
80
+ }
81
+ }
82
+ export class Int {
83
+ value;
84
+ type = 'int';
85
+ constructor(value) {
86
+ this.value = value;
87
+ if (typeof value !== 'number') {
88
+ throw new TypeError('Int value must be a number');
89
+ }
90
+ if (!Number.isFinite(value) || !Number.isInteger(value)) {
91
+ throw new TypeError('Int value must be a finite integer');
92
+ }
93
+ if (value < INT32_MIN || value > INT32_MAX) {
94
+ throw new RangeError('Int value must be within int32 range');
95
+ }
96
+ }
97
+ valueOf() { return this.value; }
98
+ [Symbol.toPrimitive](hint) { return hint === 'string' ? String(this.value) : this.value; }
99
+ toJSON() { return this.value; }
100
+ }
101
+ export class Float {
102
+ value;
103
+ type = 'float';
104
+ constructor(value) {
105
+ this.value = value;
106
+ if (typeof value !== 'number') {
107
+ throw new TypeError('Float value must be a number');
108
+ }
109
+ }
110
+ valueOf() { return this.value; }
111
+ [Symbol.toPrimitive](hint) { return hint === 'string' ? String(this.value) : this.value; }
112
+ toJSON() { return this.value; }
113
+ }
114
+ export class Double {
115
+ value;
116
+ type = 'double';
117
+ constructor(value) {
118
+ this.value = value;
119
+ if (typeof value !== 'number') {
120
+ throw new TypeError('Double value must be a number');
121
+ }
122
+ }
123
+ valueOf() { return this.value; }
124
+ [Symbol.toPrimitive](hint) { return hint === 'string' ? String(this.value) : this.value; }
125
+ toJSON() { return this.value; }
126
+ }
127
+ export class Short {
128
+ value;
129
+ type = 'short';
130
+ constructor(value) {
131
+ this.value = value;
132
+ if (typeof value !== 'number') {
133
+ throw new TypeError('Short value must be a number');
134
+ }
135
+ if (!Number.isFinite(value) || !Number.isInteger(value)) {
136
+ throw new TypeError('Short value must be a finite integer');
137
+ }
138
+ if (value < -32768 || value > 32767) {
139
+ throw new RangeError('Short value must be within int16 range');
140
+ }
141
+ }
142
+ valueOf() { return this.value; }
143
+ [Symbol.toPrimitive](hint) { return hint === 'string' ? String(this.value) : this.value; }
144
+ toJSON() { return this.value; }
145
+ }
146
+ export class Byte {
147
+ value;
148
+ type = 'byte';
149
+ constructor(value) {
150
+ this.value = value;
151
+ if (typeof value !== 'number') {
152
+ throw new TypeError('Byte value must be a number');
153
+ }
154
+ if (!Number.isFinite(value) || !Number.isInteger(value)) {
155
+ throw new TypeError('Byte value must be a finite integer');
156
+ }
157
+ if (value < -128 || value > 127) {
158
+ throw new RangeError('Byte value must be within int8 range');
159
+ }
160
+ }
161
+ valueOf() { return this.value; }
162
+ [Symbol.toPrimitive](hint) { return hint === 'string' ? String(this.value) : this.value; }
163
+ toJSON() { return this.value; }
164
+ }
165
+ export function toInt(value) { return new Int(value); }
166
+ export function toFloat(value) { return new Float(value); }
167
+ export function toDouble(value) { return new Double(value); }
168
+ export function toShort(value) { return new Short(value); }
169
+ export function toByte(value) { return new Byte(value); }
170
+ export function unwrap(value) {
171
+ if (value instanceof Long || value instanceof Int || value instanceof Float ||
172
+ value instanceof Double || value instanceof Short || value instanceof Byte) {
173
+ return value.value;
35
174
  }
175
+ return value;
36
176
  }
37
177
  export function getUuid() {
38
- // TODO: replace with `globalThis.crypto.randomUUID` once supported Node version is bump to >=19
39
- return uuid.v4();
178
+ return globalThis.crypto.randomUUID();
40
179
  }
41
180
  export const emptyArray = Object.freeze([]);
42
181
  export class ImmutableMap extends Map {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gremlin",
3
- "version": "4.0.0-beta.2",
3
+ "version": "4.0.0-beta.3",
4
4
  "description": "JavaScript Gremlin Language Variant",
5
5
  "author": {
6
6
  "name": "Apache TinkerPop team"
@@ -20,6 +20,10 @@
20
20
  "type": "module",
21
21
  "main": "./build/cjs/index.cjs",
22
22
  "types": "./build/esm/index.d.ts",
23
+ "browser": {
24
+ "./build/esm/driver/dispatcher.js": "./build/esm/driver/dispatcher.browser.js",
25
+ "./build/cjs/driver/dispatcher.cjs": "./build/cjs/driver/dispatcher.browser.cjs"
26
+ },
23
27
  "exports": {
24
28
  ".": {
25
29
  "import": "./build/esm/index.js",
@@ -29,11 +33,17 @@
29
33
  "./language": {
30
34
  "import": "./build/esm/language/index.js",
31
35
  "types": "./build/esm/language/index.d.ts"
36
+ },
37
+ "./io": {
38
+ "import": "./build/esm/structure/io/binary/GraphBinary.js",
39
+ "types": "./build/esm/structure/io/binary/GraphBinary.d.ts"
32
40
  }
33
41
  },
34
42
  "typesVersions": {
35
43
  "*": {
36
- "language": ["./build/esm/language/index.d.ts"]
44
+ "language": [
45
+ "./build/esm/language/index.d.ts"
46
+ ]
37
47
  }
38
48
  },
39
49
  "files": [
@@ -43,8 +53,7 @@
43
53
  "antlr4ng": "3.0.16",
44
54
  "buffer": "^6.0.3",
45
55
  "eventemitter3": "^5.0.1",
46
- "readable-stream": "^4.5.2",
47
- "uuid": "^9.0.1"
56
+ "undici": "6.27.0"
48
57
  },
49
58
  "optionalDependencies": {
50
59
  "@aws-sdk/credential-providers": "^3.967.0",
@@ -52,27 +61,25 @@
52
61
  "@smithy/signature-v4": "^5.3.12"
53
62
  },
54
63
  "devDependencies": {
55
- "@cucumber/cucumber": "~12.7.0",
56
- "@eslint/js": "^9.16.0",
57
- "@knighted/duel": "^4.0.2",
64
+ "@cucumber/cucumber": "~13.0.0",
65
+ "@eslint/js": "^10.0.1",
66
+ "@knighted/duel": "^4.1.1",
58
67
  "@tsconfig/node18": "^18.2.2",
59
- "@types/readable-stream": "^4.0.10",
60
- "@types/uuid": "^9.0.8",
61
68
  "antlr-ng": "^1.0.10",
62
- "chai": "~4.5.0",
63
- "chai-string": "~1.5.0",
69
+ "chai": "^6.2.2",
70
+ "chai-string": "^2.0.0",
64
71
  "colors": "1.4.0",
65
72
  "cross-env": "^10.1.0",
66
- "eslint": "^9.36.0",
73
+ "deep-eql": "^5.0.2",
74
+ "eslint": "^10.3.0",
67
75
  "eslint-config-prettier": "^10.0.1",
68
76
  "eslint-plugin-prettier": "^5.0.0",
69
- "globals": "^15.14.0",
70
- "js-yaml": "^3.14.2",
77
+ "globals": "^17.5.0",
71
78
  "mocha": "^11.7.5",
72
79
  "prettier": "^3.0.0",
73
80
  "ts-node": "^10.9.2",
74
81
  "typedoc": "^0.28.18",
75
- "typescript": "^5.4.2"
82
+ "typescript": "~6.0.3"
76
83
  },
77
84
  "repository": {
78
85
  "type": "git",
@@ -93,10 +100,12 @@
93
100
  "integration-test": "npm run integration-test-graphbinary",
94
101
  "integration-test-graphbinary": "cross-env TS_NODE_PROJECT='tsconfig.test.json' CLIENT_MIMETYPE='application/vnd.graphbinary-v4.0' mocha test/integration -t 5000",
95
102
  "TODO": "# test other mime types like graphbinary stringd",
96
- "features": "npm run features-graphbinary",
103
+ "features": "npm run features-graphbinary && npm run features-graphbinary-params",
97
104
  "features-graphbinary": "cross-env NODE_OPTIONS='--loader ts-node/esm' TS_NODE_PROJECT='tsconfig.test.json' CLIENT_MIMETYPE='application/vnd.graphbinary-v4.0' cucumber-js --tags \"not @DataBigDecimal and not @DataBigInt and not @DataUUID and not @DataLong and not @StepWrite\" --import test/cucumber ../../gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/",
98
- "features-docker": "npm run features-graphbinary-docker",
99
- "features-graphbinary-docker": "cross-env NODE_OPTIONS='--loader ts-node/esm' TS_NODE_PROJECT='tsconfig.test.json' CLIENT_MIMETYPE='application/vnd.graphbinary-v4.0' cucumber-js --tags \"not @DataBigDecimal and not @DataBigInt and not @DataUUID and not @DataLong and not @StepWrite\" --import test/cucumber ../gremlin-test/",
105
+ "features-graphbinary-params": "cross-env NODE_OPTIONS='--loader ts-node/esm' TS_NODE_PROJECT='tsconfig.test.json' CLIENT_MIMETYPE='application/vnd.graphbinary-v4.0' PARAMETERIZE=true cucumber-js --tags \"not @DataBigDecimal and not @DataBigInt and not @DataUUID and not @DataLong and not @StepWrite\" --import test/cucumber ../../gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/",
106
+ "features-docker": "npm run features-graphbinary-docker && npm run features-graphbinary-params-docker",
107
+ "features-graphbinary-docker": "cross-env NODE_OPTIONS='--loader ts-node/esm' TS_NODE_PROJECT='tsconfig.test.json' CLIENT_MIMETYPE='application/vnd.graphbinary-v4.0' cucumber-js --tags \"not @DataBigDecimal and not @DataBigInt and not @DataUUID and not @DataLong and not @StepWrite\" --import test/cucumber /gremlin-test/",
108
+ "features-graphbinary-params-docker": "cross-env NODE_OPTIONS='--loader ts-node/esm' TS_NODE_PROJECT='tsconfig.test.json' CLIENT_MIMETYPE='application/vnd.graphbinary-v4.0' PARAMETERIZE=true cucumber-js --tags \"not @DataBigDecimal and not @DataBigInt and not @DataUUID and not @DataLong and not @StepWrite\" --import test/cucumber /gremlin-test/",
100
109
  "lint": "eslint --ext .js .",
101
110
  "doc": "typedoc --out doc --readme README.md --entryPointStrategy expand --entryPoints 'lib/**/*.ts' --tsconfig tsconfig.json --exclude 'lib/language/grammar/**'"
102
111
  },