gremlin 3.8.1 → 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 (455) hide show
  1. package/README.md +18 -4
  2. package/build/cjs/driver/auth.cjs +76 -0
  3. package/build/cjs/driver/auth.d.cts +9 -0
  4. package/build/cjs/driver/client.cjs +178 -0
  5. package/build/cjs/driver/client.d.cts +88 -0
  6. package/build/cjs/driver/connection.cjs +363 -0
  7. package/build/cjs/driver/connection.d.cts +106 -0
  8. package/build/cjs/driver/dispatcher.browser.cjs +57 -0
  9. package/build/cjs/driver/dispatcher.browser.d.cts +35 -0
  10. package/build/cjs/driver/dispatcher.cjs +101 -0
  11. package/build/cjs/driver/dispatcher.d.cts +48 -0
  12. package/build/cjs/driver/driver-remote-connection.cjs +153 -0
  13. package/build/cjs/driver/driver-remote-connection.d.cts +39 -0
  14. package/build/cjs/driver/http-request.cjs +64 -0
  15. package/build/cjs/driver/http-request.d.cts +28 -0
  16. package/build/cjs/driver/logger.cjs +45 -0
  17. package/build/cjs/driver/logger.d.cts +29 -0
  18. package/build/cjs/driver/remote-connection.cjs +72 -0
  19. package/build/cjs/driver/remote-connection.d.cts +57 -0
  20. package/build/cjs/driver/request-message.cjs +246 -0
  21. package/build/cjs/driver/request-message.d.cts +79 -0
  22. package/build/cjs/driver/response-error.cjs +45 -0
  23. package/build/cjs/driver/response-error.d.cts +13 -0
  24. package/build/cjs/driver/result-set.cjs +111 -0
  25. package/build/cjs/driver/result-set.d.cts +29 -0
  26. package/build/cjs/index.cjs +146 -0
  27. package/build/cjs/index.d.cts +440 -0
  28. package/build/cjs/language/grammar/GremlinLexer.cjs +1905 -0
  29. package/build/cjs/language/grammar/GremlinLexer.d.cts +349 -0
  30. package/build/cjs/language/grammar/GremlinListener.cjs +4804 -0
  31. package/build/cjs/language/grammar/GremlinListener.d.cts +5239 -0
  32. package/build/cjs/language/grammar/GremlinParser.cjs +38146 -0
  33. package/build/cjs/language/grammar/GremlinParser.d.cts +6260 -0
  34. package/build/cjs/language/index.cjs +48 -0
  35. package/build/cjs/language/index.d.cts +12 -0
  36. package/build/cjs/language/translator/AnonymizedTranslateVisitor.cjs +166 -0
  37. package/build/cjs/language/translator/AnonymizedTranslateVisitor.d.cts +39 -0
  38. package/build/cjs/language/translator/DotNetTranslateVisitor.cjs +935 -0
  39. package/build/cjs/language/translator/DotNetTranslateVisitor.d.cts +166 -0
  40. package/build/cjs/language/translator/GoTranslateVisitor.cjs +421 -0
  41. package/build/cjs/language/translator/GoTranslateVisitor.d.cts +40 -0
  42. package/build/cjs/language/translator/GremlinTranslator.cjs +96 -0
  43. package/build/cjs/language/translator/GremlinTranslator.d.cts +18 -0
  44. package/build/cjs/language/translator/GroovyTranslateVisitor.cjs +310 -0
  45. package/build/cjs/language/translator/GroovyTranslateVisitor.d.cts +37 -0
  46. package/build/cjs/language/translator/JavaTranslateVisitor.cjs +270 -0
  47. package/build/cjs/language/translator/JavaTranslateVisitor.d.cts +26 -0
  48. package/build/cjs/language/translator/JavascriptTranslateVisitor.cjs +231 -0
  49. package/build/cjs/language/translator/JavascriptTranslateVisitor.d.cts +28 -0
  50. package/build/cjs/language/translator/PythonTranslateVisitor.cjs +340 -0
  51. package/build/cjs/language/translator/PythonTranslateVisitor.d.cts +31 -0
  52. package/build/cjs/language/translator/TranslateVisitor.cjs +398 -0
  53. package/build/cjs/language/translator/TranslateVisitor.d.cts +94 -0
  54. package/build/cjs/language/translator/Translation.cjs +47 -0
  55. package/build/cjs/language/translator/Translation.d.cts +13 -0
  56. package/build/cjs/language/translator/Translator.cjs +46 -0
  57. package/build/cjs/language/translator/Translator.d.cts +24 -0
  58. package/build/cjs/language/translator/TranslatorException.cjs +31 -0
  59. package/build/cjs/language/translator/TranslatorException.d.cts +6 -0
  60. package/build/cjs/process/anonymous-traversal.cjs +82 -0
  61. package/build/cjs/process/anonymous-traversal.d.cts +40 -0
  62. package/build/cjs/process/graph-traversal.cjs +1833 -0
  63. package/build/cjs/process/graph-traversal.d.cts +1215 -0
  64. package/build/cjs/process/gremlin-lang.cjs +308 -0
  65. package/build/cjs/process/gremlin-lang.d.cts +20 -0
  66. package/{lib/driver/response-error.js → build/cjs/process/gvalue.cjs} +23 -28
  67. package/build/cjs/process/gvalue.d.cts +7 -0
  68. package/build/cjs/process/transaction.cjs +171 -0
  69. package/build/cjs/process/transaction.d.cts +70 -0
  70. package/build/cjs/process/traversal-strategy.cjs +360 -0
  71. package/build/cjs/process/traversal-strategy.d.cts +211 -0
  72. package/build/cjs/process/traversal.cjs +539 -0
  73. package/build/cjs/process/traversal.d.cts +212 -0
  74. package/build/cjs/structure/PDTRegistry.cjs +116 -0
  75. package/build/cjs/structure/PDTRegistry.d.cts +34 -0
  76. package/build/cjs/structure/graph.cjs +500 -0
  77. package/build/cjs/structure/graph.d.cts +176 -0
  78. package/build/cjs/structure/io/binary/GraphBinary.cjs +177 -0
  79. package/build/cjs/structure/io/binary/GraphBinary.d.cts +105 -0
  80. package/build/cjs/structure/io/binary/internals/AnySerializer.cjs +97 -0
  81. package/build/cjs/structure/io/binary/internals/AnySerializer.d.cts +18 -0
  82. package/build/cjs/structure/io/binary/internals/ArraySerializer.cjs +108 -0
  83. package/build/cjs/structure/io/binary/internals/ArraySerializer.d.cts +22 -0
  84. package/build/cjs/structure/io/binary/internals/BigIntegerSerializer.cjs +116 -0
  85. package/build/cjs/structure/io/binary/internals/BigIntegerSerializer.d.cts +19 -0
  86. package/build/cjs/structure/io/binary/internals/BinarySerializer.cjs +92 -0
  87. package/build/cjs/structure/io/binary/internals/BinarySerializer.d.cts +19 -0
  88. package/build/cjs/structure/io/binary/internals/BooleanSerializer.cjs +79 -0
  89. package/build/cjs/structure/io/binary/internals/BooleanSerializer.d.cts +19 -0
  90. package/build/cjs/structure/io/binary/internals/ByteSerializer.cjs +74 -0
  91. package/build/cjs/structure/io/binary/internals/ByteSerializer.d.cts +18 -0
  92. package/build/cjs/structure/io/binary/internals/CompositePDTSerializer.cjs +81 -0
  93. package/build/cjs/structure/io/binary/internals/CompositePDTSerializer.d.cts +10 -0
  94. package/build/cjs/structure/io/binary/internals/DataType.cjs +63 -0
  95. package/build/cjs/structure/io/binary/internals/DataType.d.cts +35 -0
  96. package/build/cjs/structure/io/binary/internals/DateTimeSerializer.cjs +122 -0
  97. package/build/cjs/structure/io/binary/internals/DateTimeSerializer.d.cts +20 -0
  98. package/build/cjs/structure/io/binary/internals/DoubleSerializer.cjs +77 -0
  99. package/build/cjs/structure/io/binary/internals/DoubleSerializer.d.cts +19 -0
  100. package/build/cjs/structure/io/binary/internals/EdgeSerializer.cjs +146 -0
  101. package/build/cjs/structure/io/binary/internals/EdgeSerializer.d.cts +22 -0
  102. package/build/cjs/structure/io/binary/internals/EnumSerializer.cjs +115 -0
  103. package/build/cjs/structure/io/binary/internals/EnumSerializer.d.cts +39 -0
  104. package/build/cjs/structure/io/binary/internals/FloatSerializer.cjs +77 -0
  105. package/build/cjs/structure/io/binary/internals/FloatSerializer.d.cts +19 -0
  106. package/build/cjs/structure/io/binary/internals/GraphBinaryReader.cjs +171 -0
  107. package/build/cjs/structure/io/binary/internals/GraphBinaryReader.d.cts +43 -0
  108. package/build/cjs/structure/io/binary/internals/GraphBinaryWriter.cjs +85 -0
  109. package/build/cjs/structure/io/binary/internals/GraphBinaryWriter.d.cts +9 -0
  110. package/build/cjs/structure/io/binary/internals/GraphSerializer.cjs +184 -0
  111. package/build/cjs/structure/io/binary/internals/GraphSerializer.d.cts +22 -0
  112. package/build/cjs/structure/io/binary/internals/IntSerializer.cjs +98 -0
  113. package/build/cjs/structure/io/binary/internals/IntSerializer.d.cts +28 -0
  114. package/build/cjs/structure/io/binary/internals/LongSerializer.cjs +82 -0
  115. package/build/cjs/structure/io/binary/internals/LongSerializer.d.cts +20 -0
  116. package/build/cjs/structure/io/binary/internals/MapSerializer.cjs +110 -0
  117. package/build/cjs/structure/io/binary/internals/MapSerializer.d.cts +20 -0
  118. package/build/cjs/structure/io/binary/internals/MarkerSerializer.cjs +60 -0
  119. package/build/cjs/structure/io/binary/internals/MarkerSerializer.d.cts +17 -0
  120. package/build/cjs/structure/io/binary/internals/NumberSerializationStrategy.cjs +92 -0
  121. package/build/cjs/structure/io/binary/internals/NumberSerializationStrategy.d.cts +6 -0
  122. package/build/cjs/structure/io/binary/internals/PathSerializer.cjs +88 -0
  123. package/build/cjs/structure/io/binary/internals/PathSerializer.d.cts +22 -0
  124. package/build/cjs/structure/io/binary/internals/PrimitivePDTSerializer.cjs +80 -0
  125. package/build/cjs/structure/io/binary/internals/PrimitivePDTSerializer.d.cts +10 -0
  126. package/build/cjs/structure/io/binary/internals/PropertySerializer.cjs +93 -0
  127. package/build/cjs/structure/io/binary/internals/PropertySerializer.d.cts +22 -0
  128. package/build/cjs/structure/io/binary/internals/SetSerializer.cjs +104 -0
  129. package/build/cjs/structure/io/binary/internals/SetSerializer.d.cts +22 -0
  130. package/build/cjs/structure/io/binary/internals/ShortSerializer.cjs +77 -0
  131. package/build/cjs/structure/io/binary/internals/ShortSerializer.d.cts +19 -0
  132. package/build/cjs/structure/io/binary/internals/StreamReader.cjs +184 -0
  133. package/build/cjs/structure/io/binary/internals/StreamReader.d.cts +69 -0
  134. package/build/cjs/structure/io/binary/internals/StringSerializer.cjs +88 -0
  135. package/build/cjs/structure/io/binary/internals/StringSerializer.d.cts +21 -0
  136. package/build/cjs/structure/io/binary/internals/StubSerializer.cjs +33 -0
  137. package/build/cjs/structure/io/binary/internals/StubSerializer.d.cts +7 -0
  138. package/build/cjs/structure/io/binary/internals/TreeSerializer.cjs +139 -0
  139. package/build/cjs/structure/io/binary/internals/TreeSerializer.d.cts +54 -0
  140. package/build/cjs/structure/io/binary/internals/UnspecifiedNullSerializer.cjs +47 -0
  141. package/build/cjs/structure/io/binary/internals/UnspecifiedNullSerializer.d.cts +13 -0
  142. package/build/cjs/structure/io/binary/internals/UuidSerializer.cjs +93 -0
  143. package/build/cjs/structure/io/binary/internals/UuidSerializer.d.cts +19 -0
  144. package/build/cjs/structure/io/binary/internals/VertexPropertySerializer.cjs +105 -0
  145. package/build/cjs/structure/io/binary/internals/VertexPropertySerializer.d.cts +22 -0
  146. package/build/cjs/structure/io/binary/internals/VertexSerializer.cjs +101 -0
  147. package/build/cjs/structure/io/binary/internals/VertexSerializer.d.cts +22 -0
  148. package/build/cjs/structure/io/binary/internals/utils.cjs +53 -0
  149. package/build/cjs/structure/io/binary/internals/utils.d.cts +6 -0
  150. package/build/cjs/utils.cjs +259 -0
  151. package/build/cjs/utils.d.cts +78 -0
  152. package/build/esm/driver/auth.d.ts +9 -0
  153. package/build/esm/driver/auth.js +72 -0
  154. package/build/esm/driver/client.d.ts +88 -0
  155. package/build/esm/driver/client.js +172 -0
  156. package/build/esm/driver/connection.d.ts +106 -0
  157. package/build/esm/driver/connection.js +323 -0
  158. package/build/esm/driver/dispatcher.browser.d.ts +35 -0
  159. package/build/esm/driver/dispatcher.browser.js +53 -0
  160. package/build/esm/driver/dispatcher.d.ts +48 -0
  161. package/build/esm/driver/dispatcher.js +94 -0
  162. package/build/esm/driver/driver-remote-connection.d.ts +39 -0
  163. package/build/esm/driver/driver-remote-connection.js +114 -0
  164. package/build/esm/driver/http-request.d.ts +28 -0
  165. package/build/esm/driver/http-request.js +60 -0
  166. package/build/esm/driver/logger.d.ts +29 -0
  167. package/build/esm/driver/logger.js +42 -0
  168. package/build/esm/driver/remote-connection.d.ts +57 -0
  169. package/build/esm/driver/remote-connection.js +66 -0
  170. package/build/esm/driver/request-message.d.ts +79 -0
  171. package/build/esm/driver/request-message.js +238 -0
  172. package/build/esm/driver/response-error.d.ts +13 -0
  173. package/{lib/driver/auth/mechanisms/sasl-mechanism-base.js → build/esm/driver/response-error.js} +24 -34
  174. package/build/esm/driver/result-set.d.ts +29 -0
  175. package/build/esm/driver/result-set.js +75 -0
  176. package/build/esm/index.d.ts +440 -0
  177. package/{index.js → build/esm/index.js} +44 -33
  178. package/build/esm/language/grammar/GremlinLexer.d.ts +349 -0
  179. package/build/esm/language/grammar/GremlinLexer.js +1868 -0
  180. package/build/esm/language/grammar/GremlinListener.d.ts +5239 -0
  181. package/build/esm/language/grammar/GremlinListener.js +4800 -0
  182. package/build/esm/language/grammar/GremlinParser.d.ts +6260 -0
  183. package/build/esm/language/grammar/GremlinParser.js +37579 -0
  184. package/build/esm/language/index.d.ts +12 -0
  185. package/build/esm/language/index.js +30 -0
  186. package/build/esm/language/translator/AnonymizedTranslateVisitor.d.ts +39 -0
  187. package/build/esm/language/translator/AnonymizedTranslateVisitor.js +160 -0
  188. package/build/esm/language/translator/DotNetTranslateVisitor.d.ts +166 -0
  189. package/build/esm/language/translator/DotNetTranslateVisitor.js +929 -0
  190. package/build/esm/language/translator/GoTranslateVisitor.d.ts +40 -0
  191. package/build/esm/language/translator/GoTranslateVisitor.js +415 -0
  192. package/build/esm/language/translator/GremlinTranslator.d.ts +18 -0
  193. package/build/esm/language/translator/GremlinTranslator.js +89 -0
  194. package/build/esm/language/translator/GroovyTranslateVisitor.d.ts +37 -0
  195. package/build/esm/language/translator/GroovyTranslateVisitor.js +304 -0
  196. package/build/esm/language/translator/JavaTranslateVisitor.d.ts +26 -0
  197. package/build/esm/language/translator/JavaTranslateVisitor.js +264 -0
  198. package/build/esm/language/translator/JavascriptTranslateVisitor.d.ts +28 -0
  199. package/build/esm/language/translator/JavascriptTranslateVisitor.js +225 -0
  200. package/build/esm/language/translator/PythonTranslateVisitor.d.ts +31 -0
  201. package/build/esm/language/translator/PythonTranslateVisitor.js +334 -0
  202. package/build/esm/language/translator/TranslateVisitor.d.ts +94 -0
  203. package/build/esm/language/translator/TranslateVisitor.js +395 -0
  204. package/build/esm/language/translator/Translation.d.ts +13 -0
  205. package/build/esm/language/translator/Translation.js +43 -0
  206. package/build/esm/language/translator/Translator.d.ts +24 -0
  207. package/build/esm/language/translator/Translator.js +40 -0
  208. package/build/esm/language/translator/TranslatorException.d.ts +6 -0
  209. package/build/esm/language/translator/TranslatorException.js +27 -0
  210. package/build/esm/process/anonymous-traversal.d.ts +40 -0
  211. package/build/esm/process/anonymous-traversal.js +76 -0
  212. package/build/esm/process/graph-traversal.d.ts +1215 -0
  213. package/build/esm/process/graph-traversal.js +1824 -0
  214. package/build/esm/process/gremlin-lang.d.ts +20 -0
  215. package/build/esm/process/gremlin-lang.js +305 -0
  216. package/build/esm/process/gvalue.d.ts +7 -0
  217. package/{lib/driver/auth/authenticator.js → build/esm/process/gvalue.js} +19 -19
  218. package/build/esm/process/transaction.d.ts +70 -0
  219. package/build/esm/process/transaction.js +164 -0
  220. package/build/esm/process/traversal-strategy.d.ts +211 -0
  221. package/build/esm/process/traversal-strategy.js +319 -0
  222. package/build/esm/process/traversal.d.ts +212 -0
  223. package/build/esm/process/traversal.js +526 -0
  224. package/build/esm/structure/PDTRegistry.d.ts +34 -0
  225. package/build/esm/structure/PDTRegistry.js +112 -0
  226. package/build/esm/structure/graph.d.ts +176 -0
  227. package/build/esm/structure/graph.js +488 -0
  228. package/build/esm/structure/io/binary/GraphBinary.d.ts +105 -0
  229. package/build/esm/structure/io/binary/GraphBinary.js +136 -0
  230. package/build/esm/structure/io/binary/internals/AnySerializer.d.ts +18 -0
  231. package/build/esm/structure/io/binary/internals/AnySerializer.js +94 -0
  232. package/build/esm/structure/io/binary/internals/ArraySerializer.d.ts +22 -0
  233. package/build/esm/structure/io/binary/internals/ArraySerializer.js +105 -0
  234. package/build/esm/structure/io/binary/internals/BigIntegerSerializer.d.ts +19 -0
  235. package/build/esm/structure/io/binary/internals/BigIntegerSerializer.js +113 -0
  236. package/build/esm/structure/io/binary/internals/BinarySerializer.d.ts +19 -0
  237. package/build/esm/structure/io/binary/internals/BinarySerializer.js +89 -0
  238. package/build/esm/structure/io/binary/internals/BooleanSerializer.d.ts +19 -0
  239. package/build/esm/structure/io/binary/internals/BooleanSerializer.js +76 -0
  240. package/build/esm/structure/io/binary/internals/ByteSerializer.d.ts +18 -0
  241. package/build/esm/structure/io/binary/internals/ByteSerializer.js +71 -0
  242. package/build/esm/structure/io/binary/internals/CompositePDTSerializer.d.ts +10 -0
  243. package/build/esm/structure/io/binary/internals/CompositePDTSerializer.js +78 -0
  244. package/build/esm/structure/io/binary/internals/DataType.d.ts +35 -0
  245. package/build/esm/structure/io/binary/internals/DataType.js +61 -0
  246. package/build/esm/structure/io/binary/internals/DateTimeSerializer.d.ts +20 -0
  247. package/build/esm/structure/io/binary/internals/DateTimeSerializer.js +119 -0
  248. package/build/esm/structure/io/binary/internals/DoubleSerializer.d.ts +19 -0
  249. package/build/esm/structure/io/binary/internals/DoubleSerializer.js +74 -0
  250. package/build/esm/structure/io/binary/internals/EdgeSerializer.d.ts +22 -0
  251. package/build/esm/structure/io/binary/internals/EdgeSerializer.js +143 -0
  252. package/build/esm/structure/io/binary/internals/EnumSerializer.d.ts +39 -0
  253. package/build/esm/structure/io/binary/internals/EnumSerializer.js +112 -0
  254. package/build/esm/structure/io/binary/internals/FloatSerializer.d.ts +19 -0
  255. package/build/esm/structure/io/binary/internals/FloatSerializer.js +74 -0
  256. package/build/esm/structure/io/binary/internals/GraphBinaryReader.d.ts +43 -0
  257. package/build/esm/structure/io/binary/internals/GraphBinaryReader.js +165 -0
  258. package/build/esm/structure/io/binary/internals/GraphBinaryWriter.d.ts +9 -0
  259. package/build/esm/structure/io/binary/internals/GraphBinaryWriter.js +82 -0
  260. package/build/esm/structure/io/binary/internals/GraphSerializer.d.ts +22 -0
  261. package/build/esm/structure/io/binary/internals/GraphSerializer.js +181 -0
  262. package/build/esm/structure/io/binary/internals/IntSerializer.d.ts +28 -0
  263. package/build/esm/structure/io/binary/internals/IntSerializer.js +95 -0
  264. package/build/esm/structure/io/binary/internals/LongSerializer.d.ts +20 -0
  265. package/build/esm/structure/io/binary/internals/LongSerializer.js +79 -0
  266. package/build/esm/structure/io/binary/internals/MapSerializer.d.ts +20 -0
  267. package/build/esm/structure/io/binary/internals/MapSerializer.js +107 -0
  268. package/build/esm/structure/io/binary/internals/MarkerSerializer.d.ts +17 -0
  269. package/build/esm/structure/io/binary/internals/MarkerSerializer.js +56 -0
  270. package/build/esm/structure/io/binary/internals/NumberSerializationStrategy.d.ts +6 -0
  271. package/build/esm/structure/io/binary/internals/NumberSerializationStrategy.js +89 -0
  272. package/build/esm/structure/io/binary/internals/PathSerializer.d.ts +22 -0
  273. package/build/esm/structure/io/binary/internals/PathSerializer.js +85 -0
  274. package/build/esm/structure/io/binary/internals/PrimitivePDTSerializer.d.ts +10 -0
  275. package/build/esm/structure/io/binary/internals/PrimitivePDTSerializer.js +77 -0
  276. package/build/esm/structure/io/binary/internals/PropertySerializer.d.ts +22 -0
  277. package/build/esm/structure/io/binary/internals/PropertySerializer.js +90 -0
  278. package/build/esm/structure/io/binary/internals/SetSerializer.d.ts +22 -0
  279. package/build/esm/structure/io/binary/internals/SetSerializer.js +101 -0
  280. package/build/esm/structure/io/binary/internals/ShortSerializer.d.ts +19 -0
  281. package/build/esm/structure/io/binary/internals/ShortSerializer.js +74 -0
  282. package/build/esm/structure/io/binary/internals/StreamReader.d.ts +69 -0
  283. package/build/esm/structure/io/binary/internals/StreamReader.js +181 -0
  284. package/build/esm/structure/io/binary/internals/StringSerializer.d.ts +21 -0
  285. package/build/esm/structure/io/binary/internals/StringSerializer.js +85 -0
  286. package/build/esm/structure/io/binary/internals/StubSerializer.d.ts +7 -0
  287. package/{.prettierrc.js → build/esm/structure/io/binary/internals/StubSerializer.js} +12 -11
  288. package/build/esm/structure/io/binary/internals/TreeSerializer.d.ts +54 -0
  289. package/build/esm/structure/io/binary/internals/TreeSerializer.js +136 -0
  290. package/build/esm/structure/io/binary/internals/UnspecifiedNullSerializer.d.ts +13 -0
  291. package/build/esm/structure/io/binary/internals/UnspecifiedNullSerializer.js +44 -0
  292. package/build/esm/structure/io/binary/internals/UuidSerializer.d.ts +19 -0
  293. package/build/esm/structure/io/binary/internals/UuidSerializer.js +90 -0
  294. package/build/esm/structure/io/binary/internals/VertexPropertySerializer.d.ts +22 -0
  295. package/build/esm/structure/io/binary/internals/VertexPropertySerializer.js +102 -0
  296. package/build/esm/structure/io/binary/internals/VertexSerializer.d.ts +22 -0
  297. package/build/esm/structure/io/binary/internals/VertexSerializer.js +98 -0
  298. package/build/esm/structure/io/binary/internals/utils.d.ts +6 -0
  299. package/{lib → build/esm}/structure/io/binary/internals/utils.js +23 -35
  300. package/build/esm/utils.d.ts +78 -0
  301. package/build/esm/utils.js +237 -0
  302. package/package.json +71 -26
  303. package/.nvmrc +0 -1
  304. package/NOTICE +0 -5
  305. package/doc/AnonymousTraversalSource.html +0 -793
  306. package/doc/Authenticator.html +0 -303
  307. package/doc/Bytecode.html +0 -941
  308. package/doc/CardinalityValue.html +0 -711
  309. package/doc/Client.html +0 -1869
  310. package/doc/Connection.html +0 -1192
  311. package/doc/DriverRemoteConnection.html +0 -1528
  312. package/doc/EdgeLabelVerificationStrategy.html +0 -238
  313. package/doc/Graph.html +0 -343
  314. package/doc/GraphSON2Reader.html +0 -407
  315. package/doc/GraphSON2Writer.html +0 -558
  316. package/doc/GraphSON3Reader.html +0 -170
  317. package/doc/GraphSON3Writer.html +0 -170
  318. package/doc/GraphTraversal.html +0 -22974
  319. package/doc/GraphTraversalSource.html +0 -3683
  320. package/doc/HaltedTraverserStrategy.html +0 -215
  321. package/doc/MatchAlgorithmStrategy.html +0 -210
  322. package/doc/P.html +0 -2020
  323. package/doc/PartitionStrategy.html +0 -387
  324. package/doc/Path.html +0 -242
  325. package/doc/PlainTextSaslAuthenticator.html +0 -456
  326. package/doc/ProductiveByStrategy.html +0 -258
  327. package/doc/RemoteConnection.html +0 -1086
  328. package/doc/RemoteStrategy.html +0 -307
  329. package/doc/RemoteTraversal.html +0 -170
  330. package/doc/ReservedKeysVerificationStrategy.html +0 -261
  331. package/doc/ResponseError.html +0 -360
  332. package/doc/ResultSet.html +0 -633
  333. package/doc/SaslAuthenticator.html +0 -455
  334. package/doc/SaslMechanismBase.html +0 -506
  335. package/doc/SaslMechanismPlain.html +0 -925
  336. package/doc/SeedStrategy.html +0 -288
  337. package/doc/SubgraphStrategy.html +0 -387
  338. package/doc/TextP.html +0 -1440
  339. package/doc/Transaction.html +0 -655
  340. package/doc/Translator.html +0 -527
  341. package/doc/TraversalStrategies.html +0 -652
  342. package/doc/TraversalStrategy.html +0 -393
  343. package/doc/TypeSerializer.html +0 -166
  344. package/doc/driver_auth_authenticator.js.html +0 -89
  345. package/doc/driver_auth_mechanisms_sasl-mechanism-base.js.html +0 -103
  346. package/doc/driver_auth_mechanisms_sasl-mechanism-plain.js.html +0 -157
  347. package/doc/driver_auth_plain-text-sasl-authenticator.js.html +0 -106
  348. package/doc/driver_auth_sasl-authenticator.js.html +0 -100
  349. package/doc/driver_client.js.html +0 -250
  350. package/doc/driver_connection.js.html +0 -518
  351. package/doc/driver_driver-remote-connection.js.html +0 -193
  352. package/doc/driver_remote-connection.js.html +0 -198
  353. package/doc/driver_response-error.js.html +0 -98
  354. package/doc/driver_result-set.js.html +0 -134
  355. package/doc/fonts/OpenSans-Bold-webfont.eot +0 -0
  356. package/doc/fonts/OpenSans-Bold-webfont.svg +0 -1830
  357. package/doc/fonts/OpenSans-Bold-webfont.woff +0 -0
  358. package/doc/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  359. package/doc/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
  360. package/doc/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  361. package/doc/fonts/OpenSans-Italic-webfont.eot +0 -0
  362. package/doc/fonts/OpenSans-Italic-webfont.svg +0 -1830
  363. package/doc/fonts/OpenSans-Italic-webfont.woff +0 -0
  364. package/doc/fonts/OpenSans-Light-webfont.eot +0 -0
  365. package/doc/fonts/OpenSans-Light-webfont.svg +0 -1831
  366. package/doc/fonts/OpenSans-Light-webfont.woff +0 -0
  367. package/doc/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  368. package/doc/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
  369. package/doc/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  370. package/doc/fonts/OpenSans-Regular-webfont.eot +0 -0
  371. package/doc/fonts/OpenSans-Regular-webfont.svg +0 -1831
  372. package/doc/fonts/OpenSans-Regular-webfont.woff +0 -0
  373. package/doc/global.html +0 -728
  374. package/doc/index.html +0 -185
  375. package/doc/module.exports.html +0 -301
  376. package/doc/process_anonymous-traversal.js.html +0 -138
  377. package/doc/process_bytecode.js.html +0 -175
  378. package/doc/process_graph-traversal.js.html +0 -1936
  379. package/doc/process_transaction.js.html +0 -151
  380. package/doc/process_translator.js.html +0 -172
  381. package/doc/process_traversal-strategy.js.html +0 -466
  382. package/doc/process_traversal.js.html +0 -592
  383. package/doc/scripts/linenumber.js +0 -25
  384. package/doc/scripts/prettify/Apache-License-2.0.txt +0 -202
  385. package/doc/scripts/prettify/lang-css.js +0 -2
  386. package/doc/scripts/prettify/prettify.js +0 -28
  387. package/doc/structure_graph.js.html +0 -233
  388. package/doc/structure_io_binary_internals_DataType.js.html +0 -151
  389. package/doc/structure_io_binary_internals_GraphBinaryReader.js.html +0 -133
  390. package/doc/structure_io_binary_internals_GraphBinaryWriter.js.html +0 -136
  391. package/doc/structure_io_graph-serializer.js.html +0 -354
  392. package/doc/structure_io_type-serializers.js.html +0 -617
  393. package/doc/styles/jsdoc-default.css +0 -358
  394. package/doc/styles/prettify-jsdoc.css +0 -111
  395. package/doc/styles/prettify-tomorrow.css +0 -132
  396. package/doc/utils.js.html +0 -181
  397. package/docker-compose.yml +0 -76
  398. package/eslint.config.mjs +0 -143
  399. package/lib/driver/auth/mechanisms/sasl-mechanism-plain.js +0 -106
  400. package/lib/driver/auth/plain-text-sasl-authenticator.js +0 -55
  401. package/lib/driver/auth/sasl-authenticator.js +0 -49
  402. package/lib/driver/client.js +0 -199
  403. package/lib/driver/connection.js +0 -467
  404. package/lib/driver/driver-remote-connection.js +0 -142
  405. package/lib/driver/remote-connection.js +0 -147
  406. package/lib/driver/result-set.js +0 -83
  407. package/lib/process/anonymous-traversal.js +0 -87
  408. package/lib/process/bytecode.js +0 -124
  409. package/lib/process/graph-traversal.js +0 -1885
  410. package/lib/process/transaction.js +0 -100
  411. package/lib/process/translator.js +0 -121
  412. package/lib/process/traversal-strategy.js +0 -415
  413. package/lib/process/traversal.js +0 -541
  414. package/lib/structure/graph.js +0 -182
  415. package/lib/structure/io/binary/GraphBinary.js +0 -110
  416. package/lib/structure/io/binary/internals/AnySerializer.js +0 -100
  417. package/lib/structure/io/binary/internals/ArraySerializer.js +0 -137
  418. package/lib/structure/io/binary/internals/BigIntegerSerializer.js +0 -153
  419. package/lib/structure/io/binary/internals/BooleanSerializer.js +0 -105
  420. package/lib/structure/io/binary/internals/BulkSetSerializer.js +0 -126
  421. package/lib/structure/io/binary/internals/ByteBufferSerializer.js +0 -126
  422. package/lib/structure/io/binary/internals/ByteSerializer.js +0 -97
  423. package/lib/structure/io/binary/internals/BytecodeSerializer.js +0 -250
  424. package/lib/structure/io/binary/internals/ClassSerializer.js +0 -60
  425. package/lib/structure/io/binary/internals/DataType.js +0 -100
  426. package/lib/structure/io/binary/internals/DateSerializer.js +0 -105
  427. package/lib/structure/io/binary/internals/DoubleSerializer.js +0 -101
  428. package/lib/structure/io/binary/internals/EdgeSerializer.js +0 -216
  429. package/lib/structure/io/binary/internals/EnumSerializer.js +0 -152
  430. package/lib/structure/io/binary/internals/FloatSerializer.js +0 -101
  431. package/lib/structure/io/binary/internals/GraphBinaryReader.js +0 -82
  432. package/lib/structure/io/binary/internals/GraphBinaryWriter.js +0 -85
  433. package/lib/structure/io/binary/internals/IntSerializer.js +0 -114
  434. package/lib/structure/io/binary/internals/LambdaSerializer.js +0 -71
  435. package/lib/structure/io/binary/internals/LongSerializer.js +0 -109
  436. package/lib/structure/io/binary/internals/LongSerializerNg.js +0 -104
  437. package/lib/structure/io/binary/internals/MapSerializer.js +0 -155
  438. package/lib/structure/io/binary/internals/NumberSerializationStrategy.js +0 -73
  439. package/lib/structure/io/binary/internals/OffsetDateTimeSerializer.js +0 -151
  440. package/lib/structure/io/binary/internals/PSerializer.js +0 -152
  441. package/lib/structure/io/binary/internals/PathSerializer.js +0 -124
  442. package/lib/structure/io/binary/internals/PropertySerializer.js +0 -142
  443. package/lib/structure/io/binary/internals/SetSerializer.js +0 -134
  444. package/lib/structure/io/binary/internals/ShortSerializer.js +0 -101
  445. package/lib/structure/io/binary/internals/StringSerializer.js +0 -116
  446. package/lib/structure/io/binary/internals/TextPSerializer.js +0 -146
  447. package/lib/structure/io/binary/internals/TraversalStrategySerializer.js +0 -69
  448. package/lib/structure/io/binary/internals/TraverserSerializer.js +0 -124
  449. package/lib/structure/io/binary/internals/UnspecifiedNullSerializer.js +0 -77
  450. package/lib/structure/io/binary/internals/UuidSerializer.js +0 -121
  451. package/lib/structure/io/binary/internals/VertexPropertySerializer.js +0 -176
  452. package/lib/structure/io/binary/internals/VertexSerializer.js +0 -139
  453. package/lib/structure/io/graph-serializer.js +0 -303
  454. package/lib/structure/io/type-serializers.js +0 -566
  455. package/lib/utils.js +0 -130
@@ -0,0 +1,929 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ // Context parameters are typed as `any` because the generated grammar files
20
+ // require accepting arbitrary context types at runtime.
21
+ import TranslateVisitor from './TranslateVisitor.js';
22
+ import { TranslatorException } from './TranslatorException.js';
23
+ // Steps whose return type needs <object, object>
24
+ const DOUBLE_GENERIC_STEPS = new Set(['group', 'valueMap']);
25
+ /**
26
+ * Converts a Gremlin traversal string into a C# source code representation.
27
+ * Mirrors the Java DotNetTranslateVisitor.
28
+ */
29
+ export default class DotNetTranslateVisitor extends TranslateVisitor {
30
+ constructor(graphTraversalSourceName = 'g') {
31
+ super(graphTraversalSourceName);
32
+ }
33
+ processGremlinSymbol(step) {
34
+ return SymbolHelper.toCSharp(step);
35
+ }
36
+ getCardinalityFunctionClass() {
37
+ return 'CardinalityValue';
38
+ }
39
+ /**
40
+ * .NET enum values are capitalized but do NOT go through processGremlinSymbol,
41
+ * since the SymbolHelper mappings (bigdecimal→BigDecimal etc.) don't apply to enums.
42
+ */
43
+ appendExplicitNaming(txt, prefix) {
44
+ if (!txt.startsWith(prefix + '.')) {
45
+ this.sb.push(prefix);
46
+ this.sb.push('.');
47
+ this.sb.push(capitalize(txt));
48
+ }
49
+ else {
50
+ const parts = txt.split('.');
51
+ this.sb.push(parts[0]);
52
+ this.sb.push('.');
53
+ this.sb.push(capitalize(parts[1]));
54
+ }
55
+ }
56
+ visitTraversalGType(ctx) {
57
+ const parts = ctx.getText().split('.');
58
+ this.sb.push(this.processGremlinSymbol(parts[0]));
59
+ this.sb.push('.');
60
+ this.sb.push(this.processGremlinSymbol(parts[1].toLowerCase()));
61
+ }
62
+ visitTraversalDirection(ctx) {
63
+ const direction = ctx.getText().toLowerCase();
64
+ this.sb.push('Direction.');
65
+ if (direction.includes('out'))
66
+ this.sb.push('Out');
67
+ else if (direction.includes('in'))
68
+ this.sb.push('In');
69
+ else if (direction.includes('from'))
70
+ this.sb.push('From');
71
+ else if (direction.includes('to'))
72
+ this.sb.push('To');
73
+ else
74
+ this.sb.push('Both');
75
+ }
76
+ visitTraversalDirectionShort(ctx) {
77
+ this.visitTraversalDirection(ctx);
78
+ }
79
+ visitTraversalDirectionLong(ctx) {
80
+ this.visitTraversalDirection(ctx);
81
+ }
82
+ visitNanLiteral(_ctx) {
83
+ this.sb.push('Double.NaN');
84
+ }
85
+ visitInfLiteral(ctx) {
86
+ if (ctx.SignedInfLiteral() != null && ctx.SignedInfLiteral().getText() === '-Infinity') {
87
+ this.sb.push('Double.NegativeInfinity');
88
+ }
89
+ else {
90
+ this.sb.push('Double.PositiveInfinity');
91
+ }
92
+ }
93
+ visitIntegerLiteral(ctx) {
94
+ const integerLiteral = ctx.getText().toLowerCase();
95
+ const lastChar = integerLiteral[integerLiteral.length - 1];
96
+ if (!/[a-z]/.test(lastChar)) {
97
+ this.sb.push(integerLiteral);
98
+ return;
99
+ }
100
+ const num = integerLiteral.slice(0, -1);
101
+ switch (lastChar) {
102
+ case 'b':
103
+ this.sb.push('(sbyte) ');
104
+ this.sb.push(num);
105
+ break;
106
+ case 's':
107
+ this.sb.push('(short) ');
108
+ this.sb.push(num);
109
+ break;
110
+ case 'i':
111
+ this.sb.push(num);
112
+ break;
113
+ case 'l':
114
+ this.sb.push(integerLiteral); // keep the 'l' suffix for C#
115
+ break;
116
+ case 'n':
117
+ this.sb.push('BigInteger.Parse("');
118
+ this.sb.push(num);
119
+ this.sb.push('")');
120
+ break;
121
+ default:
122
+ this.sb.push(integerLiteral);
123
+ }
124
+ }
125
+ visitFloatLiteral(ctx) {
126
+ if (ctx.infLiteral() != null) {
127
+ this.visit(ctx.infLiteral());
128
+ return;
129
+ }
130
+ if (ctx.nanLiteral() != null) {
131
+ this.visit(ctx.nanLiteral());
132
+ return;
133
+ }
134
+ const floatLiteral = ctx.getText().toLowerCase();
135
+ const lastChar = floatLiteral[floatLiteral.length - 1];
136
+ if (!/[a-z]/.test(lastChar)) {
137
+ this.sb.push(floatLiteral);
138
+ return;
139
+ }
140
+ const num = floatLiteral.slice(0, -1);
141
+ switch (lastChar) {
142
+ case 'f':
143
+ case 'd':
144
+ this.sb.push(floatLiteral); // keep the f/d suffix for C#
145
+ break;
146
+ case 'm':
147
+ this.sb.push('(decimal) ');
148
+ this.sb.push(num);
149
+ break;
150
+ default:
151
+ this.sb.push(floatLiteral);
152
+ }
153
+ }
154
+ visitDateLiteral(ctx) {
155
+ const dtString = ctx.getChild(2).getText();
156
+ const inner = TranslateVisitor.removeFirstAndLastCharacters(dtString);
157
+ this.sb.push('DateTimeOffset.Parse("');
158
+ this.sb.push(formatDatetimeJavaStyle(inner));
159
+ this.sb.push('")');
160
+ }
161
+ visitGenericRangeLiteral(_ctx) {
162
+ throw new TranslatorException('.NET does not support range literals');
163
+ }
164
+ visitGenericSetLiteral(ctx) {
165
+ this.sb.push('new HashSet<object> { ');
166
+ const literals = ctx.genericLiteral();
167
+ for (let i = 0; i < literals.length; i++) {
168
+ this.visit(literals[i]);
169
+ if (i < literals.length - 1)
170
+ this.sb.push(', ');
171
+ }
172
+ this.sb.push(' }');
173
+ }
174
+ visitGenericCollectionLiteral(ctx) {
175
+ this.sb.push('new List<object> { ');
176
+ const literals = ctx.genericLiteral();
177
+ for (let i = 0; i < literals.length; i++) {
178
+ this.visit(literals[i]);
179
+ if (i < literals.length - 1)
180
+ this.sb.push(', ');
181
+ }
182
+ this.sb.push(' }');
183
+ }
184
+ visitGenericMapLiteral(ctx) {
185
+ this.sb.push('new Dictionary<object, object> {');
186
+ const entries = ctx.mapEntry();
187
+ for (let i = 0; i < entries.length; i++) {
188
+ this.visit(entries[i]);
189
+ if (i < entries.length - 1)
190
+ this.sb.push(', ');
191
+ }
192
+ this.sb.push('}');
193
+ }
194
+ visitMapEntry(ctx) {
195
+ this.sb.push('{ ');
196
+ this.visit(ctx.mapKey());
197
+ this.sb.push(', ');
198
+ this.visit(ctx.genericLiteral());
199
+ this.sb.push(' }');
200
+ }
201
+ visitMapKey(ctx) {
202
+ const keyIndex = (ctx.LPAREN() != null && ctx.RPAREN() != null) ? 1 : 0;
203
+ this.visit(ctx.getChild(keyIndex));
204
+ }
205
+ visitUuidLiteral(ctx) {
206
+ if (ctx.stringLiteral() == null) {
207
+ this.sb.push('Guid.NewGuid()');
208
+ return;
209
+ }
210
+ this.sb.push('Guid.Parse(');
211
+ this.sb.push(ctx.stringLiteral().getText());
212
+ this.sb.push(')');
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
+ }
239
+ visitClassType(ctx) {
240
+ this.sb.push('typeof(');
241
+ this.sb.push(ctx.getText());
242
+ this.sb.push(')');
243
+ }
244
+ visitTraversalStrategy(ctx) {
245
+ if (ctx.getChildCount() === 1) {
246
+ this.sb.push('new ');
247
+ this.sb.push(ctx.getText());
248
+ this.sb.push('()');
249
+ return;
250
+ }
251
+ const firstText = ctx.getChild(0).getText();
252
+ const strategyName = firstText === 'new' ? ctx.getChild(1).getText() : firstText;
253
+ this.sb.push('new ');
254
+ this.sb.push(strategyName);
255
+ this.sb.push('(');
256
+ const configs = ctx.configuration();
257
+ const isOptionsStrategy = ctx.children?.some((c) => c.getText() === 'OptionsStrategy');
258
+ if (configs.length > 0 && isOptionsStrategy) {
259
+ this.sb.push('new Dictionary<string, object> {');
260
+ for (const cfg of configs) {
261
+ this.sb.push('{"');
262
+ this.sb.push(cfg.getChild(0).getText());
263
+ this.sb.push('",');
264
+ this.visit(cfg.getChild(2));
265
+ this.sb.push('},');
266
+ }
267
+ this.sb.push('}');
268
+ }
269
+ else {
270
+ for (let ix = 0; ix < configs.length; ix++) {
271
+ this.visit(configs[ix]);
272
+ if (ix < configs.length - 1)
273
+ this.sb.push(', ');
274
+ }
275
+ }
276
+ this.sb.push(')');
277
+ }
278
+ visitConfiguration(ctx) {
279
+ const key = ctx.getChild(0).getText();
280
+ this.sb.push(key);
281
+ this.sb.push(': ');
282
+ const startIdx = this.sb.length;
283
+ this.visit(ctx.getChild(2));
284
+ if (key === 'readPartitions') {
285
+ const added = this.sb.splice(startIdx);
286
+ this.sb.push(added.join('').replace('List<object>', 'HashSet<string>'));
287
+ }
288
+ else if (key === 'keys') {
289
+ const added = this.sb.splice(startIdx);
290
+ const joined = added.join('');
291
+ this.sb.push(joined.includes('HashSet<object>') ? joined.replace('HashSet<object>', 'HashSet<string>') : joined);
292
+ }
293
+ }
294
+ visitStringNullableArgumentVarargs(ctx) {
295
+ const n = ctx.getChildCount();
296
+ for (let ix = 0; ix < n; ix++) {
297
+ const child = ctx.getChild(ix);
298
+ if (child.constructor?.name === 'StringNullableArgumentContext') {
299
+ this.tryAppendCastToString_StringNullableArg(child);
300
+ }
301
+ this.visit(child);
302
+ }
303
+ }
304
+ // ─── handleGenerics helpers ─────────────────────────────────────────────
305
+ handleGenerics(ctx) {
306
+ const step = ctx.getChild(0).getText();
307
+ this.sb.push(capitalize(step));
308
+ this.sb.push(DOUBLE_GENERIC_STEPS.has(step) ? '<object, object>' : '<object>');
309
+ for (let ix = 1; ix < ctx.getChildCount(); ix++) {
310
+ this.visit(ctx.getChild(ix));
311
+ }
312
+ }
313
+ handleLongArguments(ctx) {
314
+ const step = ctx.getChild(0).getText();
315
+ this.sb.push(capitalize(step));
316
+ this.sb.push('<object>');
317
+ for (let ix = 1; ix < ctx.getChildCount(); ix++) {
318
+ const child = ctx.getChild(ix);
319
+ if (child.constructor?.name === 'IntegerArgumentContext') {
320
+ this.tryAppendCastToLong_IntArg(child);
321
+ }
322
+ this.visit(child);
323
+ }
324
+ }
325
+ // ─── Cast helpers ────────────────────────────────────────────────────────
326
+ tryAppendCastToLong_IntArg(ctx) {
327
+ if (ctx?.variable() != null)
328
+ this.sb.push('(long) ');
329
+ }
330
+ tryAppendCastToString_StringArg(ctx) {
331
+ if (ctx?.variable() != null || ctx?.stringLiteral() != null)
332
+ this.sb.push('(string) ');
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
+ }
342
+ tryAppendCastToString_StringNullableLit(ctx) {
343
+ if (ctx?.K_NULL != null && ctx.K_NULL() != null)
344
+ this.sb.push('(string) ');
345
+ }
346
+ tryAppendCastToString_StringNullableArg(ctx) {
347
+ if (ctx?.variable() != null ||
348
+ (ctx?.stringNullableLiteral() != null && ctx.stringNullableLiteral()?.K_NULL != null && ctx.stringNullableLiteral().K_NULL() != null)) {
349
+ this.sb.push('(string) ');
350
+ }
351
+ }
352
+ tryAppendCastToObject_GenericArg(ctx) {
353
+ if (ctx?.variable() != null ||
354
+ (ctx?.genericLiteral() != null && ctx.genericLiteral()?.nullLiteral != null && ctx.genericLiteral().nullLiteral() != null)) {
355
+ this.sb.push('(object) ');
356
+ }
357
+ }
358
+ tryAppendCastToObject_GenericLit(ctx) {
359
+ if (ctx?.nullLiteral != null && ctx.nullLiteral() != null)
360
+ this.sb.push('(object) ');
361
+ }
362
+ // ─── isCalledAsFirstStepInAnonymousTraversal ─────────────────────────────
363
+ isCalledAsFirstStepInAnonymousTraversal(ctx) {
364
+ // ctx = traversalMethod_fold_EmptyContext
365
+ // parent = traversalMethodContext → chainedTraversalContext → nestedTraversalContext
366
+ const parent = ctx.parent;
367
+ if (!parent)
368
+ return false;
369
+ const parentParent = parent.parent; // ChainedTraversalContext
370
+ if (!parentParent)
371
+ return false;
372
+ const parentParentParent = parentParent.parent; // should be NestedTraversalContext
373
+ if (parentParentParent?.constructor?.name !== 'NestedTraversalContext')
374
+ return false;
375
+ // Check if ctx is the first step: parentParent.child(0).child(0) === ctx
376
+ const firstChild = parentParent.getChild(0);
377
+ const firstGrandchild = firstChild?.getChild(0);
378
+ return firstGrandchild === ctx;
379
+ }
380
+ // ─── Source spawn method overrides ──────────────────────────────────────
381
+ visitTraversalSourceSpawnMethod_inject(ctx) { this.handleGenerics(ctx); }
382
+ visitTraversalSourceSpawnMethod_io(ctx) { this.handleGenerics(ctx); }
383
+ visitTraversalSourceSpawnMethod_union(ctx) { this.handleGenerics(ctx); }
384
+ visitTraversalSourceSpawnMethod_call_empty(ctx) { this.handleGenerics(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) {
400
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
401
+ for (let ix = 1; ix < ctx.getChildCount(); ix++) {
402
+ const child = ctx.getChild(ix);
403
+ if (child.constructor?.name === 'StringArgumentContext')
404
+ this.tryAppendCastToString_StringArg(child);
405
+ else if (child.constructor?.name === 'StringArgumentVarargsContext') {
406
+ this.visitStringArgumentVarargsWithCast(child);
407
+ continue;
408
+ }
409
+ this.visit(child);
410
+ }
411
+ }
412
+ visitTraversalSourceSpawnMethod_addE(ctx) {
413
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
414
+ for (let ix = 1; ix < ctx.getChildCount(); ix++) {
415
+ const child = ctx.getChild(ix);
416
+ if (child.constructor?.name === 'StringArgumentContext')
417
+ this.tryAppendCastToString_StringArg(child);
418
+ this.visit(child);
419
+ }
420
+ }
421
+ visitTraversalSourceSpawnMethod_call_string(ctx) {
422
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
423
+ this.sb.push('<object>');
424
+ this.sb.push('((string) ');
425
+ this.visit(ctx.stringLiteral());
426
+ this.sb.push(')');
427
+ }
428
+ visitTraversalSourceSpawnMethod_call_string_map(ctx) {
429
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
430
+ this.sb.push('<object>(');
431
+ this.visit(ctx.stringLiteral());
432
+ this.sb.push(', (IDictionary<object, object>) ');
433
+ this.visit(ctx.genericMapArgument());
434
+ this.sb.push(')');
435
+ }
436
+ visitTraversalSourceSpawnMethod_call_string_traversal(ctx) {
437
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
438
+ this.sb.push('<object>(');
439
+ this.visit(ctx.stringLiteral());
440
+ this.sb.push(', (ITraversal) ');
441
+ this.visit(ctx.nestedTraversal());
442
+ this.sb.push(')');
443
+ }
444
+ visitTraversalSourceSpawnMethod_call_string_map_traversal(ctx) {
445
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
446
+ this.sb.push('<object>(');
447
+ this.visit(ctx.stringLiteral());
448
+ this.sb.push(', (IDictionary<object, object>) ');
449
+ this.visit(ctx.genericMapArgument());
450
+ this.sb.push(', (ITraversal) ');
451
+ this.visit(ctx.nestedTraversal());
452
+ this.sb.push(')');
453
+ }
454
+ visitTraversalSourceSpawnMethod_mergeV_Map(ctx) {
455
+ this.visit(ctx.getChild(0));
456
+ this.sb.push('((IDictionary<object, object>) ');
457
+ this.visit(ctx.genericMapNullableArgument());
458
+ this.sb.push(')');
459
+ }
460
+ visitTraversalSourceSpawnMethod_mergeV_Traversal(ctx) {
461
+ this.visit(ctx.getChild(0));
462
+ this.sb.push('((ITraversal) ');
463
+ this.visit(ctx.nestedTraversal());
464
+ this.sb.push(')');
465
+ }
466
+ visitTraversalSourceSpawnMethod_mergeE_Map(ctx) {
467
+ this.visit(ctx.getChild(0));
468
+ this.sb.push('((IDictionary<object, object>) ');
469
+ this.visit(ctx.genericMapNullableArgument());
470
+ this.sb.push(')');
471
+ }
472
+ visitTraversalSourceSpawnMethod_mergeE_Traversal(ctx) {
473
+ this.visit(ctx.getChild(0));
474
+ this.sb.push('((ITraversal) ');
475
+ this.visit(ctx.nestedTraversal());
476
+ this.sb.push(')');
477
+ }
478
+ // ─── Traversal method overrides - handleGenerics ─────────────────────────
479
+ visitTraversalMethod_asString_Scope(ctx) { this.handleGenerics(ctx); }
480
+ visitTraversalMethod_branch(ctx) { this.handleGenerics(ctx); }
481
+ visitTraversalMethod_cap(ctx) { this.handleGenerics(ctx); }
482
+ visitTraversalMethod_choose_Function(ctx) { this.handleGenerics(ctx); }
483
+ visitTraversalMethod_choose_Predicate_Traversal(ctx) { this.handleGenerics(ctx); }
484
+ visitTraversalMethod_choose_Predicate_Traversal_Traversal(ctx) { this.handleGenerics(ctx); }
485
+ visitTraversalMethod_choose_Traversal(ctx) { this.handleGenerics(ctx); }
486
+ visitTraversalMethod_choose_Traversal_Traversal(ctx) { this.handleGenerics(ctx); }
487
+ visitTraversalMethod_choose_Traversal_Traversal_Traversal(ctx) { this.handleGenerics(ctx); }
488
+ visitTraversalMethod_coalesce(ctx) { this.handleGenerics(ctx); }
489
+ visitTraversalMethod_constant(ctx) { this.handleGenerics(ctx); }
490
+ visitTraversalMethod_elementMap(ctx) { this.handleGenerics(ctx); }
491
+ visitTraversalMethod_flatMap(ctx) { this.handleGenerics(ctx); }
492
+ visitTraversalMethod_fold_Empty(ctx) {
493
+ if (this.isCalledAsFirstStepInAnonymousTraversal(ctx)) {
494
+ this.handleGenerics(ctx);
495
+ }
496
+ else {
497
+ this.visitChildren(ctx); // base: just output Fold()
498
+ }
499
+ }
500
+ visitTraversalMethod_fold_Object_BiFunction(ctx) { this.handleGenerics(ctx); }
501
+ visitTraversalMethod_group_Empty(ctx) { this.handleGenerics(ctx); }
502
+ visitTraversalMethod_groupCount_Empty(ctx) { this.handleGenerics(ctx); }
503
+ visitTraversalMethod_index(ctx) { this.handleGenerics(ctx); }
504
+ visitTraversalMethod_length_Scope(ctx) { this.handleGenerics(ctx); }
505
+ visitTraversalMethod_local(ctx) { this.handleGenerics(ctx); }
506
+ visitTraversalMethod_lTrim_Scope(ctx) { this.handleGenerics(ctx); }
507
+ visitTraversalMethod_map(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
+ }
523
+ visitTraversalMethod_max_Empty(ctx) { this.handleGenerics(ctx); }
524
+ visitTraversalMethod_max_Scope(ctx) { this.handleGenerics(ctx); }
525
+ visitTraversalMethod_mean_Empty(ctx) { this.handleGenerics(ctx); }
526
+ visitTraversalMethod_mean_Scope(ctx) { this.handleGenerics(ctx); }
527
+ visitTraversalMethod_min_Empty(ctx) { this.handleGenerics(ctx); }
528
+ visitTraversalMethod_min_Scope(ctx) { this.handleGenerics(ctx); }
529
+ visitTraversalMethod_optional(ctx) { this.handleGenerics(ctx); }
530
+ visitTraversalMethod_profile_Empty(ctx) { this.handleGenerics(ctx); }
531
+ visitTraversalMethod_project(ctx) { this.handleGenerics(ctx); }
532
+ visitTraversalMethod_properties(ctx) { this.handleGenerics(ctx); }
533
+ visitTraversalMethod_propertyMap(ctx) { this.handleGenerics(ctx); }
534
+ visitTraversalMethod_replace_Scope_String_String(ctx) { this.handleGenerics(ctx); }
535
+ visitTraversalMethod_rTrim_Scope(ctx) { this.handleGenerics(ctx); }
536
+ visitTraversalMethod_sack_Empty(ctx) { this.handleGenerics(ctx); }
537
+ visitTraversalMethod_select_Column(ctx) { this.handleGenerics(ctx); }
538
+ visitTraversalMethod_select_Pop_String(ctx) { this.handleGenerics(ctx); }
539
+ visitTraversalMethod_select_Pop_String_String_String(ctx) { this.handleGenerics(ctx); }
540
+ visitTraversalMethod_select_Pop_Traversal(ctx) { this.handleGenerics(ctx); }
541
+ visitTraversalMethod_select_String(ctx) { this.handleGenerics(ctx); }
542
+ visitTraversalMethod_select_String_String_String(ctx) { this.handleGenerics(ctx); }
543
+ visitTraversalMethod_select_Traversal(ctx) { this.handleGenerics(ctx); }
544
+ visitTraversalMethod_split_Scope_String(ctx) { this.handleGenerics(ctx); }
545
+ visitTraversalMethod_substring_Scope_int(ctx) { this.handleGenerics(ctx); }
546
+ visitTraversalMethod_substring_Scope_int_int(ctx) { this.handleGenerics(ctx); }
547
+ visitTraversalMethod_sum_Empty(ctx) { this.handleGenerics(ctx); }
548
+ visitTraversalMethod_sum_Scope(ctx) { this.handleGenerics(ctx); }
549
+ visitTraversalMethod_tail_Empty(ctx) { this.handleGenerics(ctx); }
550
+ visitTraversalMethod_tail_Scope(ctx) { this.handleGenerics(ctx); }
551
+ visitTraversalMethod_toLower_Scope(ctx) { this.handleGenerics(ctx); }
552
+ visitTraversalMethod_toUpper_Scope(ctx) { this.handleGenerics(ctx); }
553
+ visitTraversalMethod_tree_Empty(ctx) { this.handleGenerics(ctx); }
554
+ visitTraversalMethod_trim_Scope(ctx) { this.handleGenerics(ctx); }
555
+ visitTraversalMethod_unfold(ctx) { this.handleGenerics(ctx); }
556
+ visitTraversalMethod_union(ctx) { this.handleGenerics(ctx); }
557
+ visitTraversalMethod_value(ctx) { this.handleGenerics(ctx); }
558
+ visitTraversalMethod_valueMap_String(ctx) { this.handleGenerics(ctx); }
559
+ visitTraversalMethod_valueMap_boolean_String(ctx) { this.handleGenerics(ctx); }
560
+ visitTraversalMethod_values(ctx) { this.handleGenerics(ctx); }
561
+ // ─── Traversal method overrides - handleLongArguments ────────────────────
562
+ visitTraversalMethod_limit_long(ctx) { this.handleLongArguments(ctx); }
563
+ visitTraversalMethod_limit_Scope_long(ctx) { this.handleLongArguments(ctx); }
564
+ visitTraversalMethod_range_long_long(ctx) { this.handleLongArguments(ctx); }
565
+ visitTraversalMethod_range_Scope_long_long(ctx) { this.handleLongArguments(ctx); }
566
+ visitTraversalMethod_skip_long(ctx) { this.handleLongArguments(ctx); }
567
+ visitTraversalMethod_skip_Scope_long(ctx) { this.handleLongArguments(ctx); }
568
+ visitTraversalMethod_tail_long(ctx) { this.handleLongArguments(ctx); }
569
+ visitTraversalMethod_tail_Scope_long(ctx) { this.handleLongArguments(ctx); }
570
+ // ─── addV / addE (string cast) ───────────────────────────────────────────
571
+ visitTraversalMethod_addV_String(ctx) {
572
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
573
+ for (let ix = 1; ix < ctx.getChildCount(); ix++) {
574
+ const child = ctx.getChild(ix);
575
+ if (child.constructor?.name === 'StringArgumentContext')
576
+ this.tryAppendCastToString_StringArg(child);
577
+ else if (child.constructor?.name === 'StringArgumentVarargsContext') {
578
+ this.visitStringArgumentVarargsWithCast(child);
579
+ continue;
580
+ }
581
+ this.visit(child);
582
+ }
583
+ }
584
+ visitTraversalMethod_addE_String(ctx) {
585
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
586
+ for (let ix = 1; ix < ctx.getChildCount(); ix++) {
587
+ const child = ctx.getChild(ix);
588
+ if (child.constructor?.name === 'StringArgumentContext')
589
+ this.tryAppendCastToString_StringArg(child);
590
+ else if (child.constructor?.name === 'StringArgumentVarargsContext') {
591
+ this.visitStringArgumentVarargsWithCast(child);
592
+ continue;
593
+ }
594
+ this.visit(child);
595
+ }
596
+ }
597
+ // ─── call variants ───────────────────────────────────────────────────────
598
+ visitTraversalMethod_call_string(ctx) {
599
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
600
+ this.sb.push('<object>((string) ');
601
+ this.visit(ctx.stringLiteral());
602
+ this.sb.push(')');
603
+ }
604
+ visitTraversalMethod_call_string_map(ctx) {
605
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
606
+ this.sb.push('<object>(');
607
+ this.visit(ctx.stringLiteral());
608
+ this.sb.push(', (IDictionary<object, object>) ');
609
+ this.visit(ctx.genericMapArgument());
610
+ this.sb.push(')');
611
+ }
612
+ visitTraversalMethod_call_string_traversal(ctx) {
613
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
614
+ this.sb.push('<object>(');
615
+ this.visit(ctx.stringLiteral());
616
+ this.sb.push(', (ITraversal) ');
617
+ this.visit(ctx.nestedTraversal());
618
+ this.sb.push(')');
619
+ }
620
+ visitTraversalMethod_call_string_map_traversal(ctx) {
621
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
622
+ this.sb.push('<object>(');
623
+ this.visit(ctx.stringLiteral());
624
+ this.sb.push(', (IDictionary<object, object>) ');
625
+ this.visit(ctx.genericMapArgument());
626
+ this.sb.push(', (ITraversal) ');
627
+ this.visit(ctx.nestedTraversal());
628
+ this.sb.push(')');
629
+ }
630
+ // ─── has family ──────────────────────────────────────────────────────────
631
+ visitTraversalMethod_has_String_Object(ctx) {
632
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
633
+ this.sb.push('(');
634
+ this.tryAppendCastToString_StringNullableLit(ctx.stringNullableLiteral());
635
+ this.visit(ctx.stringNullableLiteral());
636
+ this.sb.push(', ');
637
+ this.tryAppendCastToObject_GenericArg(ctx.genericArgument());
638
+ this.visit(ctx.genericArgument());
639
+ this.sb.push(')');
640
+ }
641
+ visitTraversalMethod_has_String_P(ctx) {
642
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
643
+ this.sb.push('(');
644
+ this.tryAppendCastToString_StringNullableLit(ctx.stringNullableLiteral());
645
+ this.visit(ctx.stringNullableLiteral());
646
+ this.sb.push(', ');
647
+ this.visit(ctx.traversalPredicate());
648
+ this.sb.push(')');
649
+ }
650
+ visitTraversalMethod_has_String_String_Object(ctx) {
651
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
652
+ this.sb.push('(');
653
+ this.tryAppendCastToString_StringNullableArg(ctx.stringNullableArgument());
654
+ this.visit(ctx.stringNullableArgument());
655
+ this.sb.push(', ');
656
+ this.tryAppendCastToString_StringNullableLit(ctx.stringNullableLiteral());
657
+ this.visit(ctx.stringNullableLiteral());
658
+ this.sb.push(', ');
659
+ this.tryAppendCastToObject_GenericArg(ctx.genericArgument());
660
+ this.visit(ctx.genericArgument());
661
+ this.sb.push(')');
662
+ }
663
+ visitTraversalMethod_has_String_String_P(ctx) {
664
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
665
+ this.sb.push('(');
666
+ this.tryAppendCastToString_StringNullableArg(ctx.stringNullableArgument());
667
+ this.visit(ctx.stringNullableArgument());
668
+ this.sb.push(', ');
669
+ this.tryAppendCastToString_StringNullableLit(ctx.stringNullableLiteral());
670
+ this.visit(ctx.stringNullableLiteral());
671
+ this.sb.push(', ');
672
+ this.visit(ctx.traversalPredicate());
673
+ this.sb.push(')');
674
+ }
675
+ visitTraversalMethod_has_T_Object(ctx) {
676
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
677
+ this.sb.push('(');
678
+ this.visit(ctx.traversalT());
679
+ this.sb.push(', ');
680
+ this.tryAppendCastToObject_GenericArg(ctx.genericArgument());
681
+ this.visit(ctx.genericArgument());
682
+ this.sb.push(')');
683
+ }
684
+ visitTraversalMethod_has_T_P(ctx) {
685
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
686
+ this.sb.push('(');
687
+ this.visit(ctx.traversalT());
688
+ this.sb.push(', ');
689
+ this.visit(ctx.traversalPredicate());
690
+ this.sb.push(')');
691
+ }
692
+ visitTraversalMethod_hasKey_P(ctx) {
693
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
694
+ this.sb.push('(');
695
+ this.visit(ctx.traversalPredicate());
696
+ this.sb.push(')');
697
+ }
698
+ visitTraversalMethod_hasKey_String_String(ctx) {
699
+ // single arg: add (string) cast; multiple args: no cast
700
+ if (ctx.stringNullableLiteralVarargs() == null || ctx.stringNullableLiteralVarargs().getChildCount() === 0) {
701
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
702
+ this.sb.push('(');
703
+ this.tryAppendCastToString_StringNullableLit(ctx.stringNullableLiteral());
704
+ this.visit(ctx.stringNullableLiteral());
705
+ this.sb.push(')');
706
+ }
707
+ else {
708
+ this.visitChildren(ctx);
709
+ }
710
+ }
711
+ visitTraversalMethod_hasValue_Object_Object(ctx) {
712
+ // single arg: add (object) cast; multiple args: no cast
713
+ if (ctx.genericArgumentVarargs() == null || ctx.genericArgumentVarargs().getChildCount() === 0) {
714
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
715
+ this.sb.push('(');
716
+ this.tryAppendCastToObject_GenericArg(ctx.genericArgument());
717
+ this.visit(ctx.genericArgument());
718
+ this.sb.push(')');
719
+ }
720
+ else {
721
+ this.visitChildren(ctx);
722
+ }
723
+ }
724
+ visitTraversalMethod_hasValue_P(ctx) {
725
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
726
+ this.sb.push('(');
727
+ this.visit(ctx.traversalPredicate());
728
+ this.sb.push(')');
729
+ }
730
+ visitTraversalMethod_hasLabel_P(ctx) {
731
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
732
+ this.sb.push('(');
733
+ this.visit(ctx.traversalPredicate());
734
+ this.sb.push(')');
735
+ }
736
+ visitTraversalMethod_hasLabel_String_String(ctx) {
737
+ const step = capitalize(ctx.getChild(0).getText());
738
+ if (ctx.stringNullableArgumentVarargs() == null || ctx.stringNullableArgumentVarargs().getChildCount() === 0) {
739
+ // single arg: add (string) cast if variable or null
740
+ this.sb.push(step);
741
+ this.sb.push('(');
742
+ this.tryAppendCastToString_StringNullableArg(ctx.stringNullableArgument());
743
+ this.visit(ctx.stringNullableArgument());
744
+ this.sb.push(')');
745
+ }
746
+ else {
747
+ // multiple args
748
+ this.sb.push(step);
749
+ this.sb.push('(');
750
+ this.tryAppendCastToString_StringNullableArg(ctx.stringNullableArgument());
751
+ this.visit(ctx.stringNullableArgument());
752
+ if (ctx.stringNullableArgumentVarargs().getChildCount() > 0)
753
+ this.sb.push(', ');
754
+ this.visit(ctx.stringNullableArgumentVarargs());
755
+ this.sb.push(')');
756
+ }
757
+ }
758
+ // ─── mergeV / mergeE ─────────────────────────────────────────────────────
759
+ visitTraversalMethod_mergeV_Map(ctx) {
760
+ this.visit(ctx.getChild(0));
761
+ this.sb.push('((IDictionary<object, object>) ');
762
+ this.visit(ctx.genericMapNullableArgument());
763
+ this.sb.push(')');
764
+ }
765
+ visitTraversalMethod_mergeV_Traversal(ctx) {
766
+ this.visit(ctx.getChild(0));
767
+ this.sb.push('((ITraversal) ');
768
+ this.visit(ctx.nestedTraversal());
769
+ this.sb.push(')');
770
+ }
771
+ visitTraversalMethod_mergeE_Map(ctx) {
772
+ this.visit(ctx.getChild(0));
773
+ this.sb.push('((IDictionary<object, object>) ');
774
+ this.visit(ctx.genericMapNullableArgument());
775
+ this.sb.push(')');
776
+ }
777
+ visitTraversalMethod_mergeE_Traversal(ctx) {
778
+ this.visit(ctx.getChild(0));
779
+ this.sb.push('((ITraversal) ');
780
+ this.visit(ctx.nestedTraversal());
781
+ this.sb.push(')');
782
+ }
783
+ // ─── option ─────────────────────────────────────────────────────────────
784
+ visitTraversalMethod_option_Merge_Map(ctx) {
785
+ this.visit(ctx.getChild(0));
786
+ this.sb.push('(');
787
+ this.visit(ctx.traversalMerge());
788
+ this.sb.push(', (IDictionary<object, object>) ');
789
+ this.visit(ctx.genericMapNullableArgument());
790
+ this.sb.push(')');
791
+ }
792
+ visitTraversalMethod_option_Merge_Traversal(ctx) {
793
+ this.visit(ctx.getChild(0));
794
+ this.sb.push('(');
795
+ this.visit(ctx.traversalMerge());
796
+ this.sb.push(', (ITraversal) ');
797
+ this.visit(ctx.nestedTraversal());
798
+ this.sb.push(')');
799
+ }
800
+ visitTraversalMethod_option_Object_Traversal(ctx) {
801
+ // Only add (ITraversal) cast when the object is a traversalMerge
802
+ const argIsTraversalMerge = ctx.genericArgument()?.genericLiteral()?.traversalMerge != null &&
803
+ ctx.genericArgument().genericLiteral().traversalMerge() != null;
804
+ if (argIsTraversalMerge) {
805
+ this.visit(ctx.getChild(0));
806
+ this.sb.push('(');
807
+ this.visit(ctx.genericArgument());
808
+ this.sb.push(', (ITraversal) ');
809
+ this.visit(ctx.nestedTraversal());
810
+ this.sb.push(')');
811
+ }
812
+ else {
813
+ this.visitChildren(ctx);
814
+ }
815
+ }
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
+ }
853
+ visitTraversalMethod_property_Cardinality_Object_Object_Object(ctx) {
854
+ if (ctx.genericArgumentVarargs() == null || ctx.genericArgumentVarargs().getChildCount() === 0) {
855
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
856
+ this.sb.push('(');
857
+ this.visit(ctx.traversalCardinality());
858
+ this.sb.push(', ');
859
+ this.tryAppendCastToObject_GenericLit(ctx.genericLiteral());
860
+ this.visit(ctx.genericLiteral());
861
+ this.sb.push(', ');
862
+ this.tryAppendCastToObject_GenericArg(ctx.genericArgument());
863
+ this.visit(ctx.genericArgument());
864
+ this.sb.push(')');
865
+ }
866
+ else {
867
+ this.visitChildren(ctx);
868
+ }
869
+ }
870
+ // ─── conjoin ─────────────────────────────────────────────────────────────
871
+ visitTraversalMethod_conjoin_String(ctx) {
872
+ this.sb.push(capitalize(ctx.getChild(0).getText()));
873
+ this.sb.push('(');
874
+ this.tryAppendCastToString_StringLit(ctx.stringLiteral());
875
+ this.visit(ctx.stringLiteral());
876
+ this.sb.push(')');
877
+ }
878
+ tryAppendCastToString_StringLit(ctx) {
879
+ if (ctx != null)
880
+ this.sb.push('(string) ');
881
+ }
882
+ }
883
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
884
+ function capitalize(s) {
885
+ if (!s)
886
+ return s;
887
+ return s.charAt(0).toUpperCase() + s.slice(1);
888
+ }
889
+ /**
890
+ * Formats a datetime string the same way Java's OffsetDateTime.toString() does:
891
+ * - Truncates seconds if both seconds and milliseconds are 0
892
+ * - Uses 'Z' for UTC offset
893
+ */
894
+ function formatDatetimeJavaStyle(s) {
895
+ const d = new Date(s);
896
+ if (isNaN(d.getTime())) {
897
+ throw new TranslatorException(`Invalid datetime: ${s}`);
898
+ }
899
+ const year = d.getUTCFullYear().toString().padStart(4, '0');
900
+ const month = (d.getUTCMonth() + 1).toString().padStart(2, '0');
901
+ const day = d.getUTCDate().toString().padStart(2, '0');
902
+ const hours = d.getUTCHours().toString().padStart(2, '0');
903
+ const minutes = d.getUTCMinutes().toString().padStart(2, '0');
904
+ const seconds = d.getUTCSeconds();
905
+ const millis = d.getUTCMilliseconds();
906
+ let result = `${year}-${month}-${day}T${hours}:${minutes}`;
907
+ if (seconds !== 0 || millis !== 0) {
908
+ result += ':' + seconds.toString().padStart(2, '0');
909
+ if (millis !== 0) {
910
+ result += '.' + millis.toString().padStart(3, '0').replace(/0+$/, '');
911
+ }
912
+ }
913
+ result += 'Z';
914
+ return result;
915
+ }
916
+ class SymbolHelper {
917
+ static TO_CS_MAP = {
918
+ 'graphml': 'GraphML',
919
+ 'graphson': 'GraphSON',
920
+ 'bigdecimal': 'BigDecimal',
921
+ 'bigint': 'BigInt',
922
+ 'datetime': 'DateTime',
923
+ 'uuid': 'UUID',
924
+ 'vproperty': 'VProperty',
925
+ };
926
+ static toCSharp(symbol) {
927
+ return SymbolHelper.TO_CS_MAP[symbol] ?? capitalize(symbol);
928
+ }
929
+ }