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
@@ -31,6 +31,9 @@ export default class AnonymizedTranslateVisitor extends TranslateVisitor {
31
31
  visitNanLiteral(ctx: any): void;
32
32
  visitInfLiteral(ctx: any): void;
33
33
  visitUuidLiteral(ctx: any): void;
34
+ visitCharacterLiteral(ctx: any): void;
35
+ visitDurationLiteral(ctx: any): void;
36
+ visitBinaryLiteral(ctx: any): void;
34
37
  visitNakedKey(ctx: any): void;
35
38
  visitKeyword(ctx: any): void;
36
39
  }
@@ -133,6 +133,15 @@ export default class AnonymizedTranslateVisitor extends TranslateVisitor {
133
133
  visitUuidLiteral(ctx) {
134
134
  this.anonymize(ctx, 'String');
135
135
  }
136
+ visitCharacterLiteral(ctx) {
137
+ this.anonymize(ctx, 'Character');
138
+ }
139
+ visitDurationLiteral(ctx) {
140
+ this.anonymize(ctx, 'Duration');
141
+ }
142
+ visitBinaryLiteral(ctx) {
143
+ this.anonymize(ctx, 'ByteBuffer');
144
+ }
136
145
  // ─── Keys — output unquoted (only values are anonymized) ─────────────────
137
146
  visitNakedKey(ctx) {
138
147
  this.sb.push(ctx.getText());
@@ -28,6 +28,9 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
28
28
  visitMapEntry(ctx: any): void;
29
29
  visitMapKey(ctx: any): void;
30
30
  visitUuidLiteral(ctx: any): void;
31
+ visitCharacterLiteral(ctx: any): void;
32
+ visitDurationLiteral(ctx: any): void;
33
+ visitBinaryLiteral(ctx: any): void;
31
34
  visitClassType(ctx: any): void;
32
35
  visitTraversalStrategy(ctx: any): void;
33
36
  visitConfiguration(ctx: any): void;
@@ -36,6 +39,7 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
36
39
  private handleLongArguments;
37
40
  private tryAppendCastToLong_IntArg;
38
41
  private tryAppendCastToString_StringArg;
42
+ private visitStringArgumentVarargsWithCast;
39
43
  private tryAppendCastToString_StringNullableLit;
40
44
  private tryAppendCastToString_StringNullableArg;
41
45
  private tryAppendCastToObject_GenericArg;
@@ -45,7 +49,9 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
45
49
  visitTraversalSourceSpawnMethod_io(ctx: any): void;
46
50
  visitTraversalSourceSpawnMethod_union(ctx: any): void;
47
51
  visitTraversalSourceSpawnMethod_call_empty(ctx: any): void;
48
- visitTraversalSourceSpawnMethod_addV(ctx: any): void;
52
+ visitTraversalSourceSpawnMethod_match_string(ctx: any): void;
53
+ visitTraversalSourceSpawnMethod_match_string_map(ctx: any): void;
54
+ visitTraversalSourceSpawnMethod_addV_String(ctx: any): void;
49
55
  visitTraversalSourceSpawnMethod_addE(ctx: any): void;
50
56
  visitTraversalSourceSpawnMethod_call_string(ctx: any): void;
51
57
  visitTraversalSourceSpawnMethod_call_string_map(ctx: any): void;
@@ -77,7 +83,9 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
77
83
  visitTraversalMethod_local(ctx: any): void;
78
84
  visitTraversalMethod_lTrim_Scope(ctx: any): void;
79
85
  visitTraversalMethod_map(ctx: any): void;
80
- visitTraversalMethod_match(ctx: any): void;
86
+ visitTraversalMethod_match_traversal(ctx: any): void;
87
+ visitTraversalMethod_match_string(ctx: any): void;
88
+ visitTraversalMethod_match_string_map(ctx: any): void;
81
89
  visitTraversalMethod_max_Empty(ctx: any): void;
82
90
  visitTraversalMethod_max_Scope(ctx: any): void;
83
91
  visitTraversalMethod_mean_Empty(ctx: any): void;
@@ -149,6 +157,9 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
149
157
  visitTraversalMethod_option_Merge_Map(ctx: any): void;
150
158
  visitTraversalMethod_option_Merge_Traversal(ctx: any): void;
151
159
  visitTraversalMethod_option_Object_Traversal(ctx: any): void;
160
+ visitTraversalMethod_property_Object(ctx: any): void;
161
+ visitTraversalMethod_property_Cardinality_Object(ctx: any): void;
162
+ visitTraversalMethod_property_Traversal(ctx: any): void;
152
163
  visitTraversalMethod_property_Cardinality_Object_Object_Object(ctx: any): void;
153
164
  visitTraversalMethod_conjoin_String(ctx: any): void;
154
165
  private tryAppendCastToString_StringLit;
@@ -211,6 +211,31 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
211
211
  this.sb.push(ctx.stringLiteral().getText());
212
212
  this.sb.push(')');
213
213
  }
214
+ visitCharacterLiteral(ctx) {
215
+ const text = ctx.getText();
216
+ const withoutSuffix = text.substring(0, text.length - 1);
217
+ const inner = TranslateVisitor.removeFirstAndLastCharacters(withoutSuffix);
218
+ this.sb.push("'");
219
+ this.sb.push(inner);
220
+ this.sb.push("'");
221
+ }
222
+ visitDurationLiteral(ctx) {
223
+ const seconds = parseInt(ctx.integerLiteral(0).getText(), 10);
224
+ const nanos = parseInt(ctx.integerLiteral(1).getText(), 10);
225
+ const isPositive = ctx.booleanLiteral() === null ||
226
+ ctx.booleanLiteral().getText() === 'true';
227
+ // Convert to ticks: 1 tick = 100 nanoseconds, 1 second = 10,000,000 ticks
228
+ const ticks = seconds * 10_000_000 + Math.floor(nanos / 100);
229
+ this.sb.push(`TimeSpan.FromTicks(${ticks}L)`);
230
+ if (!isPositive) {
231
+ this.sb.push('.Negate()');
232
+ }
233
+ }
234
+ visitBinaryLiteral(ctx) {
235
+ this.sb.push('Convert.FromBase64String(');
236
+ this.sb.push(ctx.stringLiteral().getText());
237
+ this.sb.push(')');
238
+ }
214
239
  visitClassType(ctx) {
215
240
  this.sb.push('typeof(');
216
241
  this.sb.push(ctx.getText());
@@ -306,6 +331,14 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
306
331
  if (ctx?.variable() != null || ctx?.stringLiteral() != null)
307
332
  this.sb.push('(string) ');
308
333
  }
334
+ visitStringArgumentVarargsWithCast(ctx) {
335
+ for (let ix = 0; ix < ctx.getChildCount(); ix++) {
336
+ const child = ctx.getChild(ix);
337
+ if (child.constructor?.name === 'StringArgumentContext')
338
+ this.tryAppendCastToString_StringArg(child);
339
+ this.visit(child);
340
+ }
341
+ }
309
342
  tryAppendCastToString_StringNullableLit(ctx) {
310
343
  if (ctx?.K_NULL != null && ctx.K_NULL() != null)
311
344
  this.sb.push('(string) ');
@@ -349,12 +382,30 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
349
382
  visitTraversalSourceSpawnMethod_io(ctx) { this.handleGenerics(ctx); }
350
383
  visitTraversalSourceSpawnMethod_union(ctx) { this.handleGenerics(ctx); }
351
384
  visitTraversalSourceSpawnMethod_call_empty(ctx) { this.handleGenerics(ctx); }
352
- visitTraversalSourceSpawnMethod_addV(ctx) {
385
+ visitTraversalSourceSpawnMethod_match_string(ctx) {
386
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
387
+ this.sb.push('(');
388
+ this.visit(ctx.stringLiteral());
389
+ this.sb.push(')');
390
+ }
391
+ visitTraversalSourceSpawnMethod_match_string_map(ctx) {
392
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
393
+ this.sb.push('(');
394
+ this.visit(ctx.stringLiteral());
395
+ this.sb.push(', (IDictionary<object, object>) ');
396
+ this.visit(ctx.genericMapLiteral());
397
+ this.sb.push(')');
398
+ }
399
+ visitTraversalSourceSpawnMethod_addV_String(ctx) {
353
400
  this.sb.push(capitalize(ctx.getChild(0).getText()));
354
401
  for (let ix = 1; ix < ctx.getChildCount(); ix++) {
355
402
  const child = ctx.getChild(ix);
356
403
  if (child.constructor?.name === 'StringArgumentContext')
357
404
  this.tryAppendCastToString_StringArg(child);
405
+ else if (child.constructor?.name === 'StringArgumentVarargsContext') {
406
+ this.visitStringArgumentVarargsWithCast(child);
407
+ continue;
408
+ }
358
409
  this.visit(child);
359
410
  }
360
411
  }
@@ -424,7 +475,7 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
424
475
  this.visit(ctx.nestedTraversal());
425
476
  this.sb.push(')');
426
477
  }
427
- // ─── Traversal method overrides — handleGenerics ─────────────────────────
478
+ // ─── Traversal method overrides - handleGenerics ─────────────────────────
428
479
  visitTraversalMethod_asString_Scope(ctx) { this.handleGenerics(ctx); }
429
480
  visitTraversalMethod_branch(ctx) { this.handleGenerics(ctx); }
430
481
  visitTraversalMethod_cap(ctx) { this.handleGenerics(ctx); }
@@ -454,7 +505,21 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
454
505
  visitTraversalMethod_local(ctx) { this.handleGenerics(ctx); }
455
506
  visitTraversalMethod_lTrim_Scope(ctx) { this.handleGenerics(ctx); }
456
507
  visitTraversalMethod_map(ctx) { this.handleGenerics(ctx); }
457
- visitTraversalMethod_match(ctx) { this.handleGenerics(ctx); }
508
+ visitTraversalMethod_match_traversal(ctx) { this.handleGenerics(ctx); }
509
+ visitTraversalMethod_match_string(ctx) {
510
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
511
+ this.sb.push('(');
512
+ this.visit(ctx.stringLiteral());
513
+ this.sb.push(')');
514
+ }
515
+ visitTraversalMethod_match_string_map(ctx) {
516
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
517
+ this.sb.push('(');
518
+ this.visit(ctx.stringLiteral());
519
+ this.sb.push(', (IDictionary<object, object>) ');
520
+ this.visit(ctx.genericMapLiteral());
521
+ this.sb.push(')');
522
+ }
458
523
  visitTraversalMethod_max_Empty(ctx) { this.handleGenerics(ctx); }
459
524
  visitTraversalMethod_max_Scope(ctx) { this.handleGenerics(ctx); }
460
525
  visitTraversalMethod_mean_Empty(ctx) { this.handleGenerics(ctx); }
@@ -493,7 +558,7 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
493
558
  visitTraversalMethod_valueMap_String(ctx) { this.handleGenerics(ctx); }
494
559
  visitTraversalMethod_valueMap_boolean_String(ctx) { this.handleGenerics(ctx); }
495
560
  visitTraversalMethod_values(ctx) { this.handleGenerics(ctx); }
496
- // ─── Traversal method overrides — handleLongArguments ────────────────────
561
+ // ─── Traversal method overrides - handleLongArguments ────────────────────
497
562
  visitTraversalMethod_limit_long(ctx) { this.handleLongArguments(ctx); }
498
563
  visitTraversalMethod_limit_Scope_long(ctx) { this.handleLongArguments(ctx); }
499
564
  visitTraversalMethod_range_long_long(ctx) { this.handleLongArguments(ctx); }
@@ -509,6 +574,10 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
509
574
  const child = ctx.getChild(ix);
510
575
  if (child.constructor?.name === 'StringArgumentContext')
511
576
  this.tryAppendCastToString_StringArg(child);
577
+ else if (child.constructor?.name === 'StringArgumentVarargsContext') {
578
+ this.visitStringArgumentVarargsWithCast(child);
579
+ continue;
580
+ }
512
581
  this.visit(child);
513
582
  }
514
583
  }
@@ -518,6 +587,10 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
518
587
  const child = ctx.getChild(ix);
519
588
  if (child.constructor?.name === 'StringArgumentContext')
520
589
  this.tryAppendCastToString_StringArg(child);
590
+ else if (child.constructor?.name === 'StringArgumentVarargsContext') {
591
+ this.visitStringArgumentVarargsWithCast(child);
592
+ continue;
593
+ }
521
594
  this.visit(child);
522
595
  }
523
596
  }
@@ -741,6 +814,42 @@ export default class DotNetTranslateVisitor extends TranslateVisitor {
741
814
  }
742
815
  }
743
816
  // ─── property ────────────────────────────────────────────────────────────
817
+ visitTraversalMethod_property_Object(ctx) {
818
+ // Property(null) is ambiguous with Property(ITraversal) - cast null to IDictionary to disambiguate
819
+ if (ctx.genericMapNullableArgument().genericMapNullableLiteral() != null &&
820
+ ctx.genericMapNullableArgument().genericMapNullableLiteral().nullLiteral() != null) {
821
+ this.visit(ctx.getChild(0));
822
+ this.sb.push('(');
823
+ this.sb.push('(IDictionary<object, object>) ');
824
+ this.visit(ctx.genericMapNullableArgument());
825
+ this.sb.push(')');
826
+ return;
827
+ }
828
+ this.visitChildren(ctx);
829
+ }
830
+ visitTraversalMethod_property_Cardinality_Object(ctx) {
831
+ // Property(Cardinality, null) - cast null to IDictionary to disambiguate
832
+ if (ctx.genericMapNullableArgument().genericMapNullableLiteral() != null &&
833
+ ctx.genericMapNullableArgument().genericMapNullableLiteral().nullLiteral() != null) {
834
+ this.visit(ctx.getChild(0));
835
+ this.sb.push('(');
836
+ this.visit(ctx.traversalCardinality());
837
+ this.sb.push(', ');
838
+ this.sb.push('(IDictionary<object, object>) ');
839
+ this.visit(ctx.genericMapNullableArgument());
840
+ this.sb.push(')');
841
+ return;
842
+ }
843
+ this.visitChildren(ctx);
844
+ }
845
+ visitTraversalMethod_property_Traversal(ctx) {
846
+ // Property(ITraversal) - cast to ITraversal to disambiguate
847
+ this.visit(ctx.getChild(0));
848
+ this.sb.push('(');
849
+ this.sb.push('(ITraversal) ');
850
+ this.visit(ctx.nestedTraversal());
851
+ this.sb.push(')');
852
+ }
744
853
  visitTraversalMethod_property_Cardinality_Object_Object_Object(ctx) {
745
854
  if (ctx.genericArgumentVarargs() == null || ctx.genericArgumentVarargs().getChildCount() === 0) {
746
855
  this.sb.push(capitalize(ctx.getChild(0).getText()));
@@ -25,7 +25,16 @@ export default class GoTranslateVisitor extends TranslateVisitor {
25
25
  visitMapEntry(ctx: any): void;
26
26
  visitMapKey(ctx: any): void;
27
27
  visitUuidLiteral(ctx: any): void;
28
+ visitCharacterLiteral(_ctx: any): void;
29
+ visitDurationLiteral(ctx: any): void;
30
+ visitBinaryLiteral(ctx: any): void;
31
+ visitTraversalTerminalMethod_next(ctx: any): void;
28
32
  visitTraversalStrategy(ctx: any): void;
29
33
  visitConfiguration(ctx: any): void;
34
+ visitTraversalSourceSpawnMethod_match_string(ctx: any): void;
35
+ visitTraversalSourceSpawnMethod_match_string_map(ctx: any): void;
36
+ visitTraversalMethod_match_string(ctx: any): void;
37
+ visitTraversalMethod_match_string_map(ctx: any): void;
38
+ private visitGoParamsMap;
30
39
  visitTraversalSourceSelfMethod_withoutStrategies(ctx: any): void;
31
40
  }
@@ -20,6 +20,7 @@
20
20
  // require accepting arbitrary context types at runtime.
21
21
  import TranslateVisitor from './TranslateVisitor.js';
22
22
  import { TranslatorException } from './TranslatorException.js';
23
+ import { Buffer } from 'buffer';
23
24
  const GO_PACKAGE_NAME = 'gremlingo.';
24
25
  const STRATEGY_WITH_MAP_OPTS = new Set([
25
26
  'OptionsStrategy',
@@ -229,6 +230,40 @@ export default class GoTranslateVisitor extends TranslateVisitor {
229
230
  this.visitStringLiteral(ctx.stringLiteral());
230
231
  this.sb.push(')');
231
232
  }
233
+ visitCharacterLiteral(_ctx) {
234
+ throw new TranslatorException('Character literals are not supported in Go');
235
+ }
236
+ visitDurationLiteral(ctx) {
237
+ const seconds = parseInt(ctx.integerLiteral(0).getText(), 10);
238
+ const nanos = parseInt(ctx.integerLiteral(1).getText(), 10);
239
+ const isPositive = ctx.booleanLiteral() === null ||
240
+ ctx.booleanLiteral().getText() === 'true';
241
+ // Use BigInt to avoid precision loss for durations over ~104 days
242
+ const totalNanos = BigInt(seconds) * 1000000000n + BigInt(nanos);
243
+ this.sb.push(`time.Duration(${isPositive ? totalNanos : -totalNanos})`);
244
+ }
245
+ visitBinaryLiteral(ctx) {
246
+ const base64Str = TranslateVisitor.removeFirstAndLastCharacters(ctx.stringLiteral().getText());
247
+ const bytes = base64ToBytes(base64Str);
248
+ this.sb.push(GO_PACKAGE_NAME + 'ByteBuffer{Data: []byte{');
249
+ for (let i = 0; i < bytes.length; i++) {
250
+ if (i > 0)
251
+ this.sb.push(',');
252
+ this.sb.push(String(bytes[i]));
253
+ }
254
+ this.sb.push('}}');
255
+ }
256
+ visitTraversalTerminalMethod_next(ctx) {
257
+ // Go has no method overloading: next() maps to Next(), next(n) maps to NextN(n)
258
+ if (ctx.getChildCount() === 4) {
259
+ this.sb.push('NextN(');
260
+ this.visit(ctx.getChild(2));
261
+ this.sb.push(')');
262
+ }
263
+ else {
264
+ this.sb.push('Next()');
265
+ }
266
+ }
232
267
  visitTraversalStrategy(ctx) {
233
268
  if (ctx.getChildCount() === 1) {
234
269
  this.sb.push(GO_PACKAGE_NAME);
@@ -291,6 +326,40 @@ export default class GoTranslateVisitor extends TranslateVisitor {
291
326
  this.sb.push(transformed);
292
327
  }
293
328
  }
329
+ visitTraversalSourceSpawnMethod_match_string(ctx) {
330
+ this.sb.push('Match(');
331
+ this.visit(ctx.stringLiteral());
332
+ this.sb.push(')');
333
+ }
334
+ visitTraversalSourceSpawnMethod_match_string_map(ctx) {
335
+ this.sb.push('Match(');
336
+ this.visit(ctx.stringLiteral());
337
+ this.sb.push(', ');
338
+ this.visitGoParamsMap(ctx.genericMapLiteral());
339
+ this.sb.push(')');
340
+ }
341
+ visitTraversalMethod_match_string(ctx) {
342
+ this.sb.push('Match(');
343
+ this.visit(ctx.stringLiteral());
344
+ this.sb.push(')');
345
+ }
346
+ visitTraversalMethod_match_string_map(ctx) {
347
+ this.sb.push('Match(');
348
+ this.visit(ctx.stringLiteral());
349
+ this.sb.push(', ');
350
+ this.visitGoParamsMap(ctx.genericMapLiteral());
351
+ this.sb.push(')');
352
+ }
353
+ visitGoParamsMap(mapLiteral) {
354
+ this.sb.push('map[string]interface{}{');
355
+ const entries = mapLiteral.mapEntry();
356
+ for (let i = 0; i < entries.length; i++) {
357
+ this.visit(entries[i]);
358
+ if (i < entries.length - 1)
359
+ this.sb.push(', ');
360
+ }
361
+ this.sb.push(' }');
362
+ }
294
363
  visitTraversalSourceSelfMethod_withoutStrategies(ctx) {
295
364
  this.sb.push('WithoutStrategies(');
296
365
  this.sb.push(GO_PACKAGE_NAME);
@@ -307,6 +376,19 @@ export default class GoTranslateVisitor extends TranslateVisitor {
307
376
  this.sb.push(')');
308
377
  }
309
378
  }
379
+ /**
380
+ * Decodes a base64 string into an array of unsigned byte values.
381
+ */
382
+ function base64ToBytes(base64) {
383
+ if (base64 === '')
384
+ return [];
385
+ const buf = Buffer.from(base64, 'base64');
386
+ const bytes = new Array(buf.length);
387
+ for (let i = 0; i < buf.length; i++) {
388
+ bytes[i] = buf[i];
389
+ }
390
+ return bytes;
391
+ }
310
392
  class SymbolHelper {
311
393
  static TO_GO_MAP = {
312
394
  'OUT': 'Out',
@@ -9,6 +9,9 @@ export default class GroovyTranslateVisitor extends TranslateVisitor {
9
9
  visitFloatLiteral(ctx: any): void;
10
10
  visitInfLiteral(ctx: any): void;
11
11
  visitUuidLiteral(ctx: any): void;
12
+ visitCharacterLiteral(ctx: any): void;
13
+ visitDurationLiteral(ctx: any): void;
14
+ visitBinaryLiteral(ctx: any): void;
12
15
  visitNullLiteral(ctx: any): void;
13
16
  visitGenericSetLiteral(ctx: any): void;
14
17
  visitStringLiteral(ctx: any): void;
@@ -108,6 +108,29 @@ export default class GroovyTranslateVisitor extends TranslateVisitor {
108
108
  this.sb.push(ctx.stringLiteral().getText());
109
109
  this.sb.push(')');
110
110
  }
111
+ visitCharacterLiteral(ctx) {
112
+ const text = ctx.getText();
113
+ const withoutSuffix = text.substring(0, text.length - 1);
114
+ const inner = TranslateVisitor.removeFirstAndLastCharacters(withoutSuffix);
115
+ this.sb.push("'");
116
+ this.sb.push(inner);
117
+ this.sb.push("' as char");
118
+ }
119
+ visitDurationLiteral(ctx) {
120
+ const seconds = parseInt(ctx.integerLiteral(0).getText(), 10);
121
+ const nanos = parseInt(ctx.integerLiteral(1).getText(), 10);
122
+ const isPositive = ctx.booleanLiteral() === null ||
123
+ ctx.booleanLiteral().getText() === 'true';
124
+ this.sb.push(`Duration.ofSeconds(${seconds}, ${nanos})`);
125
+ if (!isPositive) {
126
+ this.sb.push('.negated()');
127
+ }
128
+ }
129
+ visitBinaryLiteral(ctx) {
130
+ this.sb.push('ByteBuffer.wrap(Base64.getDecoder().decode(');
131
+ this.sb.push(ctx.stringLiteral().getText());
132
+ this.sb.push('))');
133
+ }
111
134
  visitNullLiteral(ctx) {
112
135
  if (ctx.parent?.constructor?.name === 'GenericMapNullableArgumentContext') {
113
136
  this.sb.push('null as Map');
@@ -17,6 +17,9 @@ export default class JavaTranslateVisitor extends TranslateVisitor {
17
17
  visitIntegerLiteral(ctx: any): void;
18
18
  visitFloatLiteral(ctx: any): void;
19
19
  visitUuidLiteral(ctx: any): void;
20
+ visitCharacterLiteral(ctx: any): void;
21
+ visitDurationLiteral(ctx: any): void;
22
+ visitBinaryLiteral(ctx: any): void;
20
23
  visitGenericRangeLiteral(_ctx: any): void;
21
24
  visitGenericSetLiteral(ctx: any): void;
22
25
  visitGenericCollectionLiteral(ctx: any): void;
@@ -183,6 +183,29 @@ export default class JavaTranslateVisitor extends TranslateVisitor {
183
183
  this.sb.push(ctx.stringLiteral().getText());
184
184
  this.sb.push(')');
185
185
  }
186
+ visitCharacterLiteral(ctx) {
187
+ const text = ctx.getText();
188
+ const withoutSuffix = text.substring(0, text.length - 1);
189
+ const inner = TranslateVisitor.removeFirstAndLastCharacters(withoutSuffix);
190
+ this.sb.push("'");
191
+ this.sb.push(inner);
192
+ this.sb.push("'");
193
+ }
194
+ visitDurationLiteral(ctx) {
195
+ const seconds = parseInt(ctx.integerLiteral(0).getText(), 10);
196
+ const nanos = parseInt(ctx.integerLiteral(1).getText(), 10);
197
+ const isPositive = ctx.booleanLiteral() === null ||
198
+ ctx.booleanLiteral().getText() === 'true';
199
+ this.sb.push(`Duration.ofSeconds(${seconds}, ${nanos})`);
200
+ if (!isPositive) {
201
+ this.sb.push('.negated()');
202
+ }
203
+ }
204
+ visitBinaryLiteral(ctx) {
205
+ this.sb.push('ByteBuffer.wrap(Base64.getDecoder().decode(');
206
+ this.sb.push(ctx.stringLiteral().getText());
207
+ this.sb.push('))');
208
+ }
186
209
  visitGenericRangeLiteral(_ctx) {
187
210
  throw new TranslatorException('Java does not support range literals');
188
211
  }
@@ -22,4 +22,7 @@ export default class JavascriptTranslateVisitor extends TranslateVisitor {
22
22
  visitGenericSetLiteral(ctx: any): void;
23
23
  visitGenericCollectionLiteral(ctx: any): void;
24
24
  visitUuidLiteral(ctx: any): void;
25
+ visitCharacterLiteral(_ctx: any): void;
26
+ visitDurationLiteral(_ctx: any): void;
27
+ visitBinaryLiteral(ctx: any): void;
25
28
  }
@@ -171,6 +171,17 @@ export default class JavascriptTranslateVisitor extends TranslateVisitor {
171
171
  this.visitStringLiteral(ctx.stringLiteral());
172
172
  this.sb.push(')');
173
173
  }
174
+ visitCharacterLiteral(_ctx) {
175
+ throw new TranslatorException('Character literals are not supported in JavaScript');
176
+ }
177
+ visitDurationLiteral(_ctx) {
178
+ throw new TranslatorException('Duration literals are not supported in JavaScript');
179
+ }
180
+ visitBinaryLiteral(ctx) {
181
+ this.sb.push("Buffer.from(");
182
+ this.visitStringLiteral(ctx.stringLiteral());
183
+ this.sb.push(",'base64')");
184
+ }
174
185
  }
175
186
  /**
176
187
  * Formats a datetime string the same way Java's OffsetDateTime.toString() does:
@@ -23,6 +23,9 @@ export default class PythonTranslateVisitor extends TranslateVisitor {
23
23
  visitMapEntry(ctx: any): void;
24
24
  visitMapKey(ctx: any): void;
25
25
  visitUuidLiteral(ctx: any): void;
26
+ visitCharacterLiteral(ctx: any): void;
27
+ visitDurationLiteral(ctx: any): void;
28
+ visitBinaryLiteral(ctx: any): void;
26
29
  visitTraversalStrategy(ctx: any): void;
27
30
  visitConfiguration(ctx: any): void;
28
31
  }
@@ -35,9 +35,16 @@ export default class PythonTranslateVisitor extends TranslateVisitor {
35
35
  return 'CardinalityValue';
36
36
  }
37
37
  handleStringLiteralText(text) {
38
- this.sb.push("'");
39
- this.sb.push(text);
40
- this.sb.push("'");
38
+ if (text.includes("'")) {
39
+ this.sb.push('"');
40
+ this.sb.push(text);
41
+ this.sb.push('"');
42
+ }
43
+ else {
44
+ this.sb.push("'");
45
+ this.sb.push(text);
46
+ this.sb.push("'");
47
+ }
41
48
  }
42
49
  visitBooleanLiteral(ctx) {
43
50
  const text = ctx.getText();
@@ -196,6 +203,35 @@ export default class PythonTranslateVisitor extends TranslateVisitor {
196
203
  this.visitStringLiteral(ctx.stringLiteral());
197
204
  this.sb.push(')');
198
205
  }
206
+ visitCharacterLiteral(ctx) {
207
+ const text = ctx.getText();
208
+ const withoutSuffix = text.substring(0, text.length - 1);
209
+ const inner = TranslateVisitor.removeFirstAndLastCharacters(withoutSuffix);
210
+ this.sb.push("SingleChar('");
211
+ this.sb.push(inner);
212
+ this.sb.push("')");
213
+ }
214
+ visitDurationLiteral(ctx) {
215
+ const seconds = parseInt(ctx.integerLiteral(0).getText(), 10);
216
+ const nanos = parseInt(ctx.integerLiteral(1).getText(), 10);
217
+ const isPositive = ctx.booleanLiteral() === null ||
218
+ ctx.booleanLiteral().getText() === 'true';
219
+ const totalSeconds = isPositive ? seconds : -seconds;
220
+ // Python's timedelta has microsecond resolution; sub-microsecond nanos are truncated
221
+ const micros = Math.floor(nanos / 1000);
222
+ if (micros === 0) {
223
+ this.sb.push(`timedelta(seconds=${totalSeconds})`);
224
+ }
225
+ else {
226
+ const totalMicros = isPositive ? micros : -micros;
227
+ this.sb.push(`timedelta(seconds=${totalSeconds},microseconds=${totalMicros})`);
228
+ }
229
+ }
230
+ visitBinaryLiteral(ctx) {
231
+ this.sb.push('base64.b64decode(');
232
+ this.visitStringLiteral(ctx.stringLiteral());
233
+ this.sb.push(')');
234
+ }
199
235
  visitTraversalStrategy(ctx) {
200
236
  if (ctx.getChildCount() === 1) {
201
237
  this.sb.push(ctx.getText());
@@ -81,6 +81,9 @@ export default class TranslateVisitor {
81
81
  visitNanLiteral(ctx: any): void;
82
82
  visitInfLiteral(ctx: any): void;
83
83
  visitUuidLiteral(ctx: any): void;
84
+ visitCharacterLiteral(ctx: any): void;
85
+ visitDurationLiteral(ctx: any): void;
86
+ visitBinaryLiteral(ctx: any): void;
84
87
  visitStringLiteral(ctx: any): void;
85
88
  visitStringNullableLiteral(ctx: any): void;
86
89
  visitNakedKey(ctx: any): void;
@@ -344,6 +344,15 @@ export default class TranslateVisitor {
344
344
  visitUuidLiteral(ctx) {
345
345
  this.sb.push(ctx.getText());
346
346
  }
347
+ visitCharacterLiteral(ctx) {
348
+ this.sb.push(ctx.getText());
349
+ }
350
+ visitDurationLiteral(ctx) {
351
+ this.sb.push(ctx.getText());
352
+ }
353
+ visitBinaryLiteral(ctx) {
354
+ this.sb.push(ctx.getText());
355
+ }
347
356
  visitStringLiteral(ctx) {
348
357
  const text = TranslateVisitor.removeFirstAndLastCharacters(ctx.getText());
349
358
  this.handleStringLiteralText(text);
@@ -57,7 +57,11 @@ export default class AnonymousTraversalSource {
57
57
  with_(connection) {
58
58
  const traversalStrategies = new TraversalStrategies();
59
59
  traversalStrategies.addStrategy(new RemoteStrategy(connection));
60
- return new this.traversalSourceClass(new Graph(), traversalStrategies, new GremlinLang(), this.traversalSourceClass, this.traversalClass);
60
+ const gl = new GremlinLang();
61
+ if (connection.options?.pdtRegistry) {
62
+ gl.pdtRegistry = connection.options.pdtRegistry;
63
+ }
64
+ return new this.traversalSourceClass(new Graph(), traversalStrategies, gl, this.traversalSourceClass, this.traversalClass);
61
65
  }
62
66
  /**
63
67
  * Creates a {@link GraphTraversalSource} binding a {@link RemoteConnection} to a remote {@link Graph} instances as its