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
@@ -138,6 +138,15 @@ class AnonymizedTranslateVisitor extends TranslateVisitor_js_1.default {
138
138
  visitUuidLiteral(ctx) {
139
139
  this.anonymize(ctx, 'String');
140
140
  }
141
+ visitCharacterLiteral(ctx) {
142
+ this.anonymize(ctx, 'Character');
143
+ }
144
+ visitDurationLiteral(ctx) {
145
+ this.anonymize(ctx, 'Duration');
146
+ }
147
+ visitBinaryLiteral(ctx) {
148
+ this.anonymize(ctx, 'ByteBuffer');
149
+ }
141
150
  // ─── Keys — output unquoted (only values are anonymized) ─────────────────
142
151
  visitNakedKey(ctx) {
143
152
  this.sb.push(ctx.getText());
@@ -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
  }
@@ -216,6 +216,31 @@ class DotNetTranslateVisitor extends TranslateVisitor_js_1.default {
216
216
  this.sb.push(ctx.stringLiteral().getText());
217
217
  this.sb.push(')');
218
218
  }
219
+ visitCharacterLiteral(ctx) {
220
+ const text = ctx.getText();
221
+ const withoutSuffix = text.substring(0, text.length - 1);
222
+ const inner = TranslateVisitor_js_1.default.removeFirstAndLastCharacters(withoutSuffix);
223
+ this.sb.push("'");
224
+ this.sb.push(inner);
225
+ this.sb.push("'");
226
+ }
227
+ visitDurationLiteral(ctx) {
228
+ const seconds = parseInt(ctx.integerLiteral(0).getText(), 10);
229
+ const nanos = parseInt(ctx.integerLiteral(1).getText(), 10);
230
+ const isPositive = ctx.booleanLiteral() === null ||
231
+ ctx.booleanLiteral().getText() === 'true';
232
+ // Convert to ticks: 1 tick = 100 nanoseconds, 1 second = 10,000,000 ticks
233
+ const ticks = seconds * 10_000_000 + Math.floor(nanos / 100);
234
+ this.sb.push(`TimeSpan.FromTicks(${ticks}L)`);
235
+ if (!isPositive) {
236
+ this.sb.push('.Negate()');
237
+ }
238
+ }
239
+ visitBinaryLiteral(ctx) {
240
+ this.sb.push('Convert.FromBase64String(');
241
+ this.sb.push(ctx.stringLiteral().getText());
242
+ this.sb.push(')');
243
+ }
219
244
  visitClassType(ctx) {
220
245
  this.sb.push('typeof(');
221
246
  this.sb.push(ctx.getText());
@@ -311,6 +336,14 @@ class DotNetTranslateVisitor extends TranslateVisitor_js_1.default {
311
336
  if (ctx?.variable() != null || ctx?.stringLiteral() != null)
312
337
  this.sb.push('(string) ');
313
338
  }
339
+ visitStringArgumentVarargsWithCast(ctx) {
340
+ for (let ix = 0; ix < ctx.getChildCount(); ix++) {
341
+ const child = ctx.getChild(ix);
342
+ if (child.constructor?.name === 'StringArgumentContext')
343
+ this.tryAppendCastToString_StringArg(child);
344
+ this.visit(child);
345
+ }
346
+ }
314
347
  tryAppendCastToString_StringNullableLit(ctx) {
315
348
  if (ctx?.K_NULL != null && ctx.K_NULL() != null)
316
349
  this.sb.push('(string) ');
@@ -354,12 +387,30 @@ class DotNetTranslateVisitor extends TranslateVisitor_js_1.default {
354
387
  visitTraversalSourceSpawnMethod_io(ctx) { this.handleGenerics(ctx); }
355
388
  visitTraversalSourceSpawnMethod_union(ctx) { this.handleGenerics(ctx); }
356
389
  visitTraversalSourceSpawnMethod_call_empty(ctx) { this.handleGenerics(ctx); }
357
- visitTraversalSourceSpawnMethod_addV(ctx) {
390
+ visitTraversalSourceSpawnMethod_match_string(ctx) {
391
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
392
+ this.sb.push('(');
393
+ this.visit(ctx.stringLiteral());
394
+ this.sb.push(')');
395
+ }
396
+ visitTraversalSourceSpawnMethod_match_string_map(ctx) {
397
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
398
+ this.sb.push('(');
399
+ this.visit(ctx.stringLiteral());
400
+ this.sb.push(', (IDictionary<object, object>) ');
401
+ this.visit(ctx.genericMapLiteral());
402
+ this.sb.push(')');
403
+ }
404
+ visitTraversalSourceSpawnMethod_addV_String(ctx) {
358
405
  this.sb.push(capitalize(ctx.getChild(0).getText()));
359
406
  for (let ix = 1; ix < ctx.getChildCount(); ix++) {
360
407
  const child = ctx.getChild(ix);
361
408
  if (child.constructor?.name === 'StringArgumentContext')
362
409
  this.tryAppendCastToString_StringArg(child);
410
+ else if (child.constructor?.name === 'StringArgumentVarargsContext') {
411
+ this.visitStringArgumentVarargsWithCast(child);
412
+ continue;
413
+ }
363
414
  this.visit(child);
364
415
  }
365
416
  }
@@ -429,7 +480,7 @@ class DotNetTranslateVisitor extends TranslateVisitor_js_1.default {
429
480
  this.visit(ctx.nestedTraversal());
430
481
  this.sb.push(')');
431
482
  }
432
- // ─── Traversal method overrides — handleGenerics ─────────────────────────
483
+ // ─── Traversal method overrides - handleGenerics ─────────────────────────
433
484
  visitTraversalMethod_asString_Scope(ctx) { this.handleGenerics(ctx); }
434
485
  visitTraversalMethod_branch(ctx) { this.handleGenerics(ctx); }
435
486
  visitTraversalMethod_cap(ctx) { this.handleGenerics(ctx); }
@@ -459,7 +510,21 @@ class DotNetTranslateVisitor extends TranslateVisitor_js_1.default {
459
510
  visitTraversalMethod_local(ctx) { this.handleGenerics(ctx); }
460
511
  visitTraversalMethod_lTrim_Scope(ctx) { this.handleGenerics(ctx); }
461
512
  visitTraversalMethod_map(ctx) { this.handleGenerics(ctx); }
462
- visitTraversalMethod_match(ctx) { this.handleGenerics(ctx); }
513
+ visitTraversalMethod_match_traversal(ctx) { this.handleGenerics(ctx); }
514
+ visitTraversalMethod_match_string(ctx) {
515
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
516
+ this.sb.push('(');
517
+ this.visit(ctx.stringLiteral());
518
+ this.sb.push(')');
519
+ }
520
+ visitTraversalMethod_match_string_map(ctx) {
521
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
522
+ this.sb.push('(');
523
+ this.visit(ctx.stringLiteral());
524
+ this.sb.push(', (IDictionary<object, object>) ');
525
+ this.visit(ctx.genericMapLiteral());
526
+ this.sb.push(')');
527
+ }
463
528
  visitTraversalMethod_max_Empty(ctx) { this.handleGenerics(ctx); }
464
529
  visitTraversalMethod_max_Scope(ctx) { this.handleGenerics(ctx); }
465
530
  visitTraversalMethod_mean_Empty(ctx) { this.handleGenerics(ctx); }
@@ -498,7 +563,7 @@ class DotNetTranslateVisitor extends TranslateVisitor_js_1.default {
498
563
  visitTraversalMethod_valueMap_String(ctx) { this.handleGenerics(ctx); }
499
564
  visitTraversalMethod_valueMap_boolean_String(ctx) { this.handleGenerics(ctx); }
500
565
  visitTraversalMethod_values(ctx) { this.handleGenerics(ctx); }
501
- // ─── Traversal method overrides — handleLongArguments ────────────────────
566
+ // ─── Traversal method overrides - handleLongArguments ────────────────────
502
567
  visitTraversalMethod_limit_long(ctx) { this.handleLongArguments(ctx); }
503
568
  visitTraversalMethod_limit_Scope_long(ctx) { this.handleLongArguments(ctx); }
504
569
  visitTraversalMethod_range_long_long(ctx) { this.handleLongArguments(ctx); }
@@ -514,6 +579,10 @@ class DotNetTranslateVisitor extends TranslateVisitor_js_1.default {
514
579
  const child = ctx.getChild(ix);
515
580
  if (child.constructor?.name === 'StringArgumentContext')
516
581
  this.tryAppendCastToString_StringArg(child);
582
+ else if (child.constructor?.name === 'StringArgumentVarargsContext') {
583
+ this.visitStringArgumentVarargsWithCast(child);
584
+ continue;
585
+ }
517
586
  this.visit(child);
518
587
  }
519
588
  }
@@ -523,6 +592,10 @@ class DotNetTranslateVisitor extends TranslateVisitor_js_1.default {
523
592
  const child = ctx.getChild(ix);
524
593
  if (child.constructor?.name === 'StringArgumentContext')
525
594
  this.tryAppendCastToString_StringArg(child);
595
+ else if (child.constructor?.name === 'StringArgumentVarargsContext') {
596
+ this.visitStringArgumentVarargsWithCast(child);
597
+ continue;
598
+ }
526
599
  this.visit(child);
527
600
  }
528
601
  }
@@ -746,6 +819,42 @@ class DotNetTranslateVisitor extends TranslateVisitor_js_1.default {
746
819
  }
747
820
  }
748
821
  // ─── property ────────────────────────────────────────────────────────────
822
+ visitTraversalMethod_property_Object(ctx) {
823
+ // Property(null) is ambiguous with Property(ITraversal) - cast null to IDictionary to disambiguate
824
+ if (ctx.genericMapNullableArgument().genericMapNullableLiteral() != null &&
825
+ ctx.genericMapNullableArgument().genericMapNullableLiteral().nullLiteral() != null) {
826
+ this.visit(ctx.getChild(0));
827
+ this.sb.push('(');
828
+ this.sb.push('(IDictionary<object, object>) ');
829
+ this.visit(ctx.genericMapNullableArgument());
830
+ this.sb.push(')');
831
+ return;
832
+ }
833
+ this.visitChildren(ctx);
834
+ }
835
+ visitTraversalMethod_property_Cardinality_Object(ctx) {
836
+ // Property(Cardinality, null) - cast null to IDictionary to disambiguate
837
+ if (ctx.genericMapNullableArgument().genericMapNullableLiteral() != null &&
838
+ ctx.genericMapNullableArgument().genericMapNullableLiteral().nullLiteral() != null) {
839
+ this.visit(ctx.getChild(0));
840
+ this.sb.push('(');
841
+ this.visit(ctx.traversalCardinality());
842
+ this.sb.push(', ');
843
+ this.sb.push('(IDictionary<object, object>) ');
844
+ this.visit(ctx.genericMapNullableArgument());
845
+ this.sb.push(')');
846
+ return;
847
+ }
848
+ this.visitChildren(ctx);
849
+ }
850
+ visitTraversalMethod_property_Traversal(ctx) {
851
+ // Property(ITraversal) - cast to ITraversal to disambiguate
852
+ this.visit(ctx.getChild(0));
853
+ this.sb.push('(');
854
+ this.sb.push('(ITraversal) ');
855
+ this.visit(ctx.nestedTraversal());
856
+ this.sb.push(')');
857
+ }
749
858
  visitTraversalMethod_property_Cardinality_Object_Object_Object(ctx) {
750
859
  if (ctx.genericArgumentVarargs() == null || ctx.genericArgumentVarargs().getChildCount() === 0) {
751
860
  this.sb.push(capitalize(ctx.getChild(0).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;
@@ -25,6 +25,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
25
25
  // require accepting arbitrary context types at runtime.
26
26
  const TranslateVisitor_js_1 = __importDefault(require("./TranslateVisitor.cjs"));
27
27
  const TranslatorException_js_1 = require("./TranslatorException.cjs");
28
+ const buffer_1 = require("node:buffer");
28
29
  const GO_PACKAGE_NAME = 'gremlingo.';
29
30
  const STRATEGY_WITH_MAP_OPTS = new Set([
30
31
  'OptionsStrategy',
@@ -234,6 +235,40 @@ class GoTranslateVisitor extends TranslateVisitor_js_1.default {
234
235
  this.visitStringLiteral(ctx.stringLiteral());
235
236
  this.sb.push(')');
236
237
  }
238
+ visitCharacterLiteral(_ctx) {
239
+ throw new TranslatorException_js_1.TranslatorException('Character literals are not supported in Go');
240
+ }
241
+ visitDurationLiteral(ctx) {
242
+ const seconds = parseInt(ctx.integerLiteral(0).getText(), 10);
243
+ const nanos = parseInt(ctx.integerLiteral(1).getText(), 10);
244
+ const isPositive = ctx.booleanLiteral() === null ||
245
+ ctx.booleanLiteral().getText() === 'true';
246
+ // Use BigInt to avoid precision loss for durations over ~104 days
247
+ const totalNanos = BigInt(seconds) * 1000000000n + BigInt(nanos);
248
+ this.sb.push(`time.Duration(${isPositive ? totalNanos : -totalNanos})`);
249
+ }
250
+ visitBinaryLiteral(ctx) {
251
+ const base64Str = TranslateVisitor_js_1.default.removeFirstAndLastCharacters(ctx.stringLiteral().getText());
252
+ const bytes = base64ToBytes(base64Str);
253
+ this.sb.push(GO_PACKAGE_NAME + 'ByteBuffer{Data: []byte{');
254
+ for (let i = 0; i < bytes.length; i++) {
255
+ if (i > 0)
256
+ this.sb.push(',');
257
+ this.sb.push(String(bytes[i]));
258
+ }
259
+ this.sb.push('}}');
260
+ }
261
+ visitTraversalTerminalMethod_next(ctx) {
262
+ // Go has no method overloading: next() maps to Next(), next(n) maps to NextN(n)
263
+ if (ctx.getChildCount() === 4) {
264
+ this.sb.push('NextN(');
265
+ this.visit(ctx.getChild(2));
266
+ this.sb.push(')');
267
+ }
268
+ else {
269
+ this.sb.push('Next()');
270
+ }
271
+ }
237
272
  visitTraversalStrategy(ctx) {
238
273
  if (ctx.getChildCount() === 1) {
239
274
  this.sb.push(GO_PACKAGE_NAME);
@@ -296,6 +331,40 @@ class GoTranslateVisitor extends TranslateVisitor_js_1.default {
296
331
  this.sb.push(transformed);
297
332
  }
298
333
  }
334
+ visitTraversalSourceSpawnMethod_match_string(ctx) {
335
+ this.sb.push('Match(');
336
+ this.visit(ctx.stringLiteral());
337
+ this.sb.push(')');
338
+ }
339
+ visitTraversalSourceSpawnMethod_match_string_map(ctx) {
340
+ this.sb.push('Match(');
341
+ this.visit(ctx.stringLiteral());
342
+ this.sb.push(', ');
343
+ this.visitGoParamsMap(ctx.genericMapLiteral());
344
+ this.sb.push(')');
345
+ }
346
+ visitTraversalMethod_match_string(ctx) {
347
+ this.sb.push('Match(');
348
+ this.visit(ctx.stringLiteral());
349
+ this.sb.push(')');
350
+ }
351
+ visitTraversalMethod_match_string_map(ctx) {
352
+ this.sb.push('Match(');
353
+ this.visit(ctx.stringLiteral());
354
+ this.sb.push(', ');
355
+ this.visitGoParamsMap(ctx.genericMapLiteral());
356
+ this.sb.push(')');
357
+ }
358
+ visitGoParamsMap(mapLiteral) {
359
+ this.sb.push('map[string]interface{}{');
360
+ const entries = mapLiteral.mapEntry();
361
+ for (let i = 0; i < entries.length; i++) {
362
+ this.visit(entries[i]);
363
+ if (i < entries.length - 1)
364
+ this.sb.push(', ');
365
+ }
366
+ this.sb.push(' }');
367
+ }
299
368
  visitTraversalSourceSelfMethod_withoutStrategies(ctx) {
300
369
  this.sb.push('WithoutStrategies(');
301
370
  this.sb.push(GO_PACKAGE_NAME);
@@ -313,6 +382,19 @@ class GoTranslateVisitor extends TranslateVisitor_js_1.default {
313
382
  }
314
383
  }
315
384
  exports.default = GoTranslateVisitor;
385
+ /**
386
+ * Decodes a base64 string into an array of unsigned byte values.
387
+ */
388
+ function base64ToBytes(base64) {
389
+ if (base64 === '')
390
+ return [];
391
+ const buf = buffer_1.Buffer.from(base64, 'base64');
392
+ const bytes = new Array(buf.length);
393
+ for (let i = 0; i < buf.length; i++) {
394
+ bytes[i] = buf[i];
395
+ }
396
+ return bytes;
397
+ }
316
398
  class SymbolHelper {
317
399
  static TO_GO_MAP = {
318
400
  'OUT': 'Out',
@@ -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
  }
@@ -113,6 +113,29 @@ class GroovyTranslateVisitor extends TranslateVisitor_js_1.default {
113
113
  this.sb.push(ctx.stringLiteral().getText());
114
114
  this.sb.push(')');
115
115
  }
116
+ visitCharacterLiteral(ctx) {
117
+ const text = ctx.getText();
118
+ const withoutSuffix = text.substring(0, text.length - 1);
119
+ const inner = TranslateVisitor_js_1.default.removeFirstAndLastCharacters(withoutSuffix);
120
+ this.sb.push("'");
121
+ this.sb.push(inner);
122
+ this.sb.push("' as char");
123
+ }
124
+ visitDurationLiteral(ctx) {
125
+ const seconds = parseInt(ctx.integerLiteral(0).getText(), 10);
126
+ const nanos = parseInt(ctx.integerLiteral(1).getText(), 10);
127
+ const isPositive = ctx.booleanLiteral() === null ||
128
+ ctx.booleanLiteral().getText() === 'true';
129
+ this.sb.push(`Duration.ofSeconds(${seconds}, ${nanos})`);
130
+ if (!isPositive) {
131
+ this.sb.push('.negated()');
132
+ }
133
+ }
134
+ visitBinaryLiteral(ctx) {
135
+ this.sb.push('ByteBuffer.wrap(Base64.getDecoder().decode(');
136
+ this.sb.push(ctx.stringLiteral().getText());
137
+ this.sb.push('))');
138
+ }
116
139
  visitNullLiteral(ctx) {
117
140
  if (ctx.parent?.constructor?.name === 'GenericMapNullableArgumentContext') {
118
141
  this.sb.push('null as Map');
@@ -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;
@@ -188,6 +188,29 @@ class JavaTranslateVisitor extends TranslateVisitor_js_1.default {
188
188
  this.sb.push(ctx.stringLiteral().getText());
189
189
  this.sb.push(')');
190
190
  }
191
+ visitCharacterLiteral(ctx) {
192
+ const text = ctx.getText();
193
+ const withoutSuffix = text.substring(0, text.length - 1);
194
+ const inner = TranslateVisitor_js_1.default.removeFirstAndLastCharacters(withoutSuffix);
195
+ this.sb.push("'");
196
+ this.sb.push(inner);
197
+ this.sb.push("'");
198
+ }
199
+ visitDurationLiteral(ctx) {
200
+ const seconds = parseInt(ctx.integerLiteral(0).getText(), 10);
201
+ const nanos = parseInt(ctx.integerLiteral(1).getText(), 10);
202
+ const isPositive = ctx.booleanLiteral() === null ||
203
+ ctx.booleanLiteral().getText() === 'true';
204
+ this.sb.push(`Duration.ofSeconds(${seconds}, ${nanos})`);
205
+ if (!isPositive) {
206
+ this.sb.push('.negated()');
207
+ }
208
+ }
209
+ visitBinaryLiteral(ctx) {
210
+ this.sb.push('ByteBuffer.wrap(Base64.getDecoder().decode(');
211
+ this.sb.push(ctx.stringLiteral().getText());
212
+ this.sb.push('))');
213
+ }
191
214
  visitGenericRangeLiteral(_ctx) {
192
215
  throw new TranslatorException_js_1.TranslatorException('Java does not support range literals');
193
216
  }
@@ -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;
@@ -176,6 +176,17 @@ class JavascriptTranslateVisitor extends TranslateVisitor_js_1.default {
176
176
  this.visitStringLiteral(ctx.stringLiteral());
177
177
  this.sb.push(')');
178
178
  }
179
+ visitCharacterLiteral(_ctx) {
180
+ throw new TranslatorException_js_1.TranslatorException('Character literals are not supported in JavaScript');
181
+ }
182
+ visitDurationLiteral(_ctx) {
183
+ throw new TranslatorException_js_1.TranslatorException('Duration literals are not supported in JavaScript');
184
+ }
185
+ visitBinaryLiteral(ctx) {
186
+ this.sb.push("Buffer.from(");
187
+ this.visitStringLiteral(ctx.stringLiteral());
188
+ this.sb.push(",'base64')");
189
+ }
179
190
  }
180
191
  exports.default = JavascriptTranslateVisitor;
181
192
  /**
@@ -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
  }
@@ -40,9 +40,16 @@ class PythonTranslateVisitor extends TranslateVisitor_js_1.default {
40
40
  return 'CardinalityValue';
41
41
  }
42
42
  handleStringLiteralText(text) {
43
- this.sb.push("'");
44
- this.sb.push(text);
45
- this.sb.push("'");
43
+ if (text.includes("'")) {
44
+ this.sb.push('"');
45
+ this.sb.push(text);
46
+ this.sb.push('"');
47
+ }
48
+ else {
49
+ this.sb.push("'");
50
+ this.sb.push(text);
51
+ this.sb.push("'");
52
+ }
46
53
  }
47
54
  visitBooleanLiteral(ctx) {
48
55
  const text = ctx.getText();
@@ -201,6 +208,35 @@ class PythonTranslateVisitor extends TranslateVisitor_js_1.default {
201
208
  this.visitStringLiteral(ctx.stringLiteral());
202
209
  this.sb.push(')');
203
210
  }
211
+ visitCharacterLiteral(ctx) {
212
+ const text = ctx.getText();
213
+ const withoutSuffix = text.substring(0, text.length - 1);
214
+ const inner = TranslateVisitor_js_1.default.removeFirstAndLastCharacters(withoutSuffix);
215
+ this.sb.push("SingleChar('");
216
+ this.sb.push(inner);
217
+ this.sb.push("')");
218
+ }
219
+ visitDurationLiteral(ctx) {
220
+ const seconds = parseInt(ctx.integerLiteral(0).getText(), 10);
221
+ const nanos = parseInt(ctx.integerLiteral(1).getText(), 10);
222
+ const isPositive = ctx.booleanLiteral() === null ||
223
+ ctx.booleanLiteral().getText() === 'true';
224
+ const totalSeconds = isPositive ? seconds : -seconds;
225
+ // Python's timedelta has microsecond resolution; sub-microsecond nanos are truncated
226
+ const micros = Math.floor(nanos / 1000);
227
+ if (micros === 0) {
228
+ this.sb.push(`timedelta(seconds=${totalSeconds})`);
229
+ }
230
+ else {
231
+ const totalMicros = isPositive ? micros : -micros;
232
+ this.sb.push(`timedelta(seconds=${totalSeconds},microseconds=${totalMicros})`);
233
+ }
234
+ }
235
+ visitBinaryLiteral(ctx) {
236
+ this.sb.push('base64.b64decode(');
237
+ this.visitStringLiteral(ctx.stringLiteral());
238
+ this.sb.push(')');
239
+ }
204
240
  visitTraversalStrategy(ctx) {
205
241
  if (ctx.getChildCount() === 1) {
206
242
  this.sb.push(ctx.getText());
@@ -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
  }
@@ -346,6 +346,15 @@ class TranslateVisitor {
346
346
  visitUuidLiteral(ctx) {
347
347
  this.sb.push(ctx.getText());
348
348
  }
349
+ visitCharacterLiteral(ctx) {
350
+ this.sb.push(ctx.getText());
351
+ }
352
+ visitDurationLiteral(ctx) {
353
+ this.sb.push(ctx.getText());
354
+ }
355
+ visitBinaryLiteral(ctx) {
356
+ this.sb.push(ctx.getText());
357
+ }
349
358
  visitStringLiteral(ctx) {
350
359
  const text = TranslateVisitor.removeFirstAndLastCharacters(ctx.getText());
351
360
  this.handleStringLiteralText(text);
@@ -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;
@@ -62,7 +62,11 @@ class AnonymousTraversalSource {
62
62
  with_(connection) {
63
63
  const traversalStrategies = new traversal_strategy_js_1.TraversalStrategies();
64
64
  traversalStrategies.addStrategy(new remote_connection_js_1.RemoteStrategy(connection));
65
- return new this.traversalSourceClass(new graph_js_1.Graph(), traversalStrategies, new gremlin_lang_js_1.default(), this.traversalSourceClass, this.traversalClass);
65
+ const gl = new gremlin_lang_js_1.default();
66
+ if (connection.options?.pdtRegistry) {
67
+ gl.pdtRegistry = connection.options.pdtRegistry;
68
+ }
69
+ return new this.traversalSourceClass(new graph_js_1.Graph(), traversalStrategies, gl, this.traversalSourceClass, this.traversalClass);
66
70
  }
67
71
  /**
68
72
  * Creates a {@link GraphTraversalSource} binding a {@link RemoteConnection} to a remote {@link Graph} instances as its