flowquery 1.0.46 → 1.0.48

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 (422) hide show
  1. package/dist/flowquery.min.js +1 -1
  2. package/dist/index.d.ts +0 -7
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -4
  5. package/dist/index.js.map +1 -1
  6. package/dist/parsing/data_structures/list_comprehension.d.ts +56 -0
  7. package/dist/parsing/data_structures/list_comprehension.d.ts.map +1 -0
  8. package/dist/parsing/data_structures/list_comprehension.js +102 -0
  9. package/dist/parsing/data_structures/list_comprehension.js.map +1 -0
  10. package/dist/parsing/parser.d.ts +18 -0
  11. package/dist/parsing/parser.d.ts.map +1 -1
  12. package/dist/parsing/parser.js +92 -0
  13. package/dist/parsing/parser.js.map +1 -1
  14. package/package.json +4 -1
  15. package/.editorconfig +0 -21
  16. package/.gitattributes +0 -3
  17. package/.github/workflows/npm-publish.yml +0 -32
  18. package/.github/workflows/python-publish.yml +0 -143
  19. package/.github/workflows/release.yml +0 -107
  20. package/.husky/pre-commit +0 -28
  21. package/.prettierrc +0 -22
  22. package/CODE_OF_CONDUCT.md +0 -10
  23. package/FlowQueryLogoIcon.png +0 -0
  24. package/SECURITY.md +0 -14
  25. package/SUPPORT.md +0 -13
  26. package/docs/flowquery.min.js +0 -1
  27. package/docs/index.html +0 -105
  28. package/flowquery-py/CONTRIBUTING.md +0 -127
  29. package/flowquery-py/README.md +0 -67
  30. package/flowquery-py/misc/data/test.json +0 -10
  31. package/flowquery-py/misc/data/users.json +0 -242
  32. package/flowquery-py/notebooks/TestFlowQuery.ipynb +0 -440
  33. package/flowquery-py/pyproject.toml +0 -121
  34. package/flowquery-py/setup_env.ps1 +0 -92
  35. package/flowquery-py/setup_env.sh +0 -87
  36. package/flowquery-py/src/__init__.py +0 -38
  37. package/flowquery-py/src/__main__.py +0 -10
  38. package/flowquery-py/src/compute/__init__.py +0 -6
  39. package/flowquery-py/src/compute/flowquery.py +0 -68
  40. package/flowquery-py/src/compute/runner.py +0 -64
  41. package/flowquery-py/src/extensibility.py +0 -52
  42. package/flowquery-py/src/graph/__init__.py +0 -31
  43. package/flowquery-py/src/graph/data.py +0 -136
  44. package/flowquery-py/src/graph/database.py +0 -141
  45. package/flowquery-py/src/graph/hops.py +0 -43
  46. package/flowquery-py/src/graph/node.py +0 -143
  47. package/flowquery-py/src/graph/node_data.py +0 -26
  48. package/flowquery-py/src/graph/node_reference.py +0 -50
  49. package/flowquery-py/src/graph/pattern.py +0 -115
  50. package/flowquery-py/src/graph/pattern_expression.py +0 -67
  51. package/flowquery-py/src/graph/patterns.py +0 -42
  52. package/flowquery-py/src/graph/physical_node.py +0 -41
  53. package/flowquery-py/src/graph/physical_relationship.py +0 -36
  54. package/flowquery-py/src/graph/relationship.py +0 -193
  55. package/flowquery-py/src/graph/relationship_data.py +0 -36
  56. package/flowquery-py/src/graph/relationship_match_collector.py +0 -85
  57. package/flowquery-py/src/graph/relationship_reference.py +0 -21
  58. package/flowquery-py/src/io/__init__.py +0 -5
  59. package/flowquery-py/src/io/command_line.py +0 -108
  60. package/flowquery-py/src/parsing/__init__.py +0 -17
  61. package/flowquery-py/src/parsing/alias.py +0 -20
  62. package/flowquery-py/src/parsing/alias_option.py +0 -11
  63. package/flowquery-py/src/parsing/ast_node.py +0 -147
  64. package/flowquery-py/src/parsing/base_parser.py +0 -84
  65. package/flowquery-py/src/parsing/components/__init__.py +0 -19
  66. package/flowquery-py/src/parsing/components/csv.py +0 -8
  67. package/flowquery-py/src/parsing/components/from_.py +0 -12
  68. package/flowquery-py/src/parsing/components/headers.py +0 -12
  69. package/flowquery-py/src/parsing/components/json.py +0 -8
  70. package/flowquery-py/src/parsing/components/null.py +0 -10
  71. package/flowquery-py/src/parsing/components/post.py +0 -8
  72. package/flowquery-py/src/parsing/components/text.py +0 -8
  73. package/flowquery-py/src/parsing/context.py +0 -50
  74. package/flowquery-py/src/parsing/data_structures/__init__.py +0 -15
  75. package/flowquery-py/src/parsing/data_structures/associative_array.py +0 -41
  76. package/flowquery-py/src/parsing/data_structures/json_array.py +0 -30
  77. package/flowquery-py/src/parsing/data_structures/key_value_pair.py +0 -38
  78. package/flowquery-py/src/parsing/data_structures/lookup.py +0 -51
  79. package/flowquery-py/src/parsing/data_structures/range_lookup.py +0 -42
  80. package/flowquery-py/src/parsing/expressions/__init__.py +0 -61
  81. package/flowquery-py/src/parsing/expressions/boolean.py +0 -20
  82. package/flowquery-py/src/parsing/expressions/expression.py +0 -141
  83. package/flowquery-py/src/parsing/expressions/expression_map.py +0 -26
  84. package/flowquery-py/src/parsing/expressions/f_string.py +0 -27
  85. package/flowquery-py/src/parsing/expressions/identifier.py +0 -21
  86. package/flowquery-py/src/parsing/expressions/number.py +0 -32
  87. package/flowquery-py/src/parsing/expressions/operator.py +0 -271
  88. package/flowquery-py/src/parsing/expressions/reference.py +0 -47
  89. package/flowquery-py/src/parsing/expressions/string.py +0 -27
  90. package/flowquery-py/src/parsing/functions/__init__.py +0 -127
  91. package/flowquery-py/src/parsing/functions/aggregate_function.py +0 -60
  92. package/flowquery-py/src/parsing/functions/async_function.py +0 -65
  93. package/flowquery-py/src/parsing/functions/avg.py +0 -55
  94. package/flowquery-py/src/parsing/functions/coalesce.py +0 -43
  95. package/flowquery-py/src/parsing/functions/collect.py +0 -75
  96. package/flowquery-py/src/parsing/functions/count.py +0 -79
  97. package/flowquery-py/src/parsing/functions/date_.py +0 -61
  98. package/flowquery-py/src/parsing/functions/datetime_.py +0 -62
  99. package/flowquery-py/src/parsing/functions/duration.py +0 -159
  100. package/flowquery-py/src/parsing/functions/element_id.py +0 -50
  101. package/flowquery-py/src/parsing/functions/function.py +0 -68
  102. package/flowquery-py/src/parsing/functions/function_factory.py +0 -170
  103. package/flowquery-py/src/parsing/functions/function_metadata.py +0 -148
  104. package/flowquery-py/src/parsing/functions/functions.py +0 -67
  105. package/flowquery-py/src/parsing/functions/head.py +0 -39
  106. package/flowquery-py/src/parsing/functions/id_.py +0 -49
  107. package/flowquery-py/src/parsing/functions/join.py +0 -49
  108. package/flowquery-py/src/parsing/functions/keys.py +0 -34
  109. package/flowquery-py/src/parsing/functions/last.py +0 -39
  110. package/flowquery-py/src/parsing/functions/localdatetime.py +0 -60
  111. package/flowquery-py/src/parsing/functions/localtime.py +0 -57
  112. package/flowquery-py/src/parsing/functions/max_.py +0 -49
  113. package/flowquery-py/src/parsing/functions/min_.py +0 -49
  114. package/flowquery-py/src/parsing/functions/nodes.py +0 -48
  115. package/flowquery-py/src/parsing/functions/predicate_function.py +0 -47
  116. package/flowquery-py/src/parsing/functions/predicate_sum.py +0 -49
  117. package/flowquery-py/src/parsing/functions/properties.py +0 -50
  118. package/flowquery-py/src/parsing/functions/rand.py +0 -28
  119. package/flowquery-py/src/parsing/functions/range_.py +0 -41
  120. package/flowquery-py/src/parsing/functions/reducer_element.py +0 -15
  121. package/flowquery-py/src/parsing/functions/relationships.py +0 -46
  122. package/flowquery-py/src/parsing/functions/replace.py +0 -39
  123. package/flowquery-py/src/parsing/functions/round_.py +0 -34
  124. package/flowquery-py/src/parsing/functions/schema.py +0 -40
  125. package/flowquery-py/src/parsing/functions/size.py +0 -34
  126. package/flowquery-py/src/parsing/functions/split.py +0 -54
  127. package/flowquery-py/src/parsing/functions/string_distance.py +0 -92
  128. package/flowquery-py/src/parsing/functions/stringify.py +0 -49
  129. package/flowquery-py/src/parsing/functions/substring.py +0 -76
  130. package/flowquery-py/src/parsing/functions/sum.py +0 -51
  131. package/flowquery-py/src/parsing/functions/tail.py +0 -37
  132. package/flowquery-py/src/parsing/functions/temporal_utils.py +0 -186
  133. package/flowquery-py/src/parsing/functions/time_.py +0 -57
  134. package/flowquery-py/src/parsing/functions/timestamp.py +0 -37
  135. package/flowquery-py/src/parsing/functions/to_float.py +0 -46
  136. package/flowquery-py/src/parsing/functions/to_integer.py +0 -46
  137. package/flowquery-py/src/parsing/functions/to_json.py +0 -35
  138. package/flowquery-py/src/parsing/functions/to_lower.py +0 -37
  139. package/flowquery-py/src/parsing/functions/to_string.py +0 -41
  140. package/flowquery-py/src/parsing/functions/trim.py +0 -37
  141. package/flowquery-py/src/parsing/functions/type_.py +0 -47
  142. package/flowquery-py/src/parsing/functions/value_holder.py +0 -24
  143. package/flowquery-py/src/parsing/logic/__init__.py +0 -15
  144. package/flowquery-py/src/parsing/logic/case.py +0 -28
  145. package/flowquery-py/src/parsing/logic/else_.py +0 -12
  146. package/flowquery-py/src/parsing/logic/end.py +0 -8
  147. package/flowquery-py/src/parsing/logic/then.py +0 -12
  148. package/flowquery-py/src/parsing/logic/when.py +0 -12
  149. package/flowquery-py/src/parsing/operations/__init__.py +0 -46
  150. package/flowquery-py/src/parsing/operations/aggregated_return.py +0 -25
  151. package/flowquery-py/src/parsing/operations/aggregated_with.py +0 -22
  152. package/flowquery-py/src/parsing/operations/call.py +0 -73
  153. package/flowquery-py/src/parsing/operations/create_node.py +0 -35
  154. package/flowquery-py/src/parsing/operations/create_relationship.py +0 -35
  155. package/flowquery-py/src/parsing/operations/delete_node.py +0 -29
  156. package/flowquery-py/src/parsing/operations/delete_relationship.py +0 -29
  157. package/flowquery-py/src/parsing/operations/group_by.py +0 -148
  158. package/flowquery-py/src/parsing/operations/limit.py +0 -33
  159. package/flowquery-py/src/parsing/operations/load.py +0 -148
  160. package/flowquery-py/src/parsing/operations/match.py +0 -52
  161. package/flowquery-py/src/parsing/operations/operation.py +0 -69
  162. package/flowquery-py/src/parsing/operations/order_by.py +0 -114
  163. package/flowquery-py/src/parsing/operations/projection.py +0 -21
  164. package/flowquery-py/src/parsing/operations/return_op.py +0 -88
  165. package/flowquery-py/src/parsing/operations/union.py +0 -115
  166. package/flowquery-py/src/parsing/operations/union_all.py +0 -17
  167. package/flowquery-py/src/parsing/operations/unwind.py +0 -42
  168. package/flowquery-py/src/parsing/operations/where.py +0 -43
  169. package/flowquery-py/src/parsing/operations/with_op.py +0 -18
  170. package/flowquery-py/src/parsing/parser.py +0 -1384
  171. package/flowquery-py/src/parsing/parser_state.py +0 -26
  172. package/flowquery-py/src/parsing/token_to_node.py +0 -109
  173. package/flowquery-py/src/tokenization/__init__.py +0 -23
  174. package/flowquery-py/src/tokenization/keyword.py +0 -54
  175. package/flowquery-py/src/tokenization/operator.py +0 -29
  176. package/flowquery-py/src/tokenization/string_walker.py +0 -158
  177. package/flowquery-py/src/tokenization/symbol.py +0 -19
  178. package/flowquery-py/src/tokenization/token.py +0 -693
  179. package/flowquery-py/src/tokenization/token_mapper.py +0 -53
  180. package/flowquery-py/src/tokenization/token_type.py +0 -21
  181. package/flowquery-py/src/tokenization/tokenizer.py +0 -214
  182. package/flowquery-py/src/tokenization/trie.py +0 -125
  183. package/flowquery-py/src/utils/__init__.py +0 -6
  184. package/flowquery-py/src/utils/object_utils.py +0 -20
  185. package/flowquery-py/src/utils/string_utils.py +0 -113
  186. package/flowquery-py/tests/__init__.py +0 -1
  187. package/flowquery-py/tests/compute/__init__.py +0 -1
  188. package/flowquery-py/tests/compute/test_runner.py +0 -4902
  189. package/flowquery-py/tests/graph/__init__.py +0 -1
  190. package/flowquery-py/tests/graph/test_create.py +0 -56
  191. package/flowquery-py/tests/graph/test_data.py +0 -73
  192. package/flowquery-py/tests/graph/test_match.py +0 -40
  193. package/flowquery-py/tests/parsing/__init__.py +0 -1
  194. package/flowquery-py/tests/parsing/test_context.py +0 -34
  195. package/flowquery-py/tests/parsing/test_expression.py +0 -248
  196. package/flowquery-py/tests/parsing/test_parser.py +0 -1237
  197. package/flowquery-py/tests/test_extensibility.py +0 -611
  198. package/flowquery-py/tests/tokenization/__init__.py +0 -1
  199. package/flowquery-py/tests/tokenization/test_token_mapper.py +0 -60
  200. package/flowquery-py/tests/tokenization/test_tokenizer.py +0 -198
  201. package/flowquery-py/tests/tokenization/test_trie.py +0 -30
  202. package/flowquery-vscode/.vscode-test.mjs +0 -5
  203. package/flowquery-vscode/.vscodeignore +0 -13
  204. package/flowquery-vscode/LICENSE +0 -21
  205. package/flowquery-vscode/README.md +0 -11
  206. package/flowquery-vscode/demo/FlowQueryVSCodeDemo.gif +0 -0
  207. package/flowquery-vscode/eslint.config.mjs +0 -25
  208. package/flowquery-vscode/extension.js +0 -508
  209. package/flowquery-vscode/flowQueryEngine/flowquery.min.js +0 -1
  210. package/flowquery-vscode/flowquery-worker.js +0 -66
  211. package/flowquery-vscode/images/FlowQueryLogoIcon.png +0 -0
  212. package/flowquery-vscode/jsconfig.json +0 -13
  213. package/flowquery-vscode/libs/page.css +0 -53
  214. package/flowquery-vscode/libs/table.css +0 -13
  215. package/flowquery-vscode/libs/tabs.css +0 -66
  216. package/flowquery-vscode/package-lock.json +0 -2917
  217. package/flowquery-vscode/package.json +0 -51
  218. package/flowquery-vscode/test/extension.test.js +0 -196
  219. package/flowquery-vscode/test/worker.test.js +0 -25
  220. package/flowquery-vscode/vsc-extension-quickstart.md +0 -42
  221. package/jest.config.js +0 -14
  222. package/misc/apps/RAG/README.md +0 -29
  223. package/misc/apps/RAG/data/chats.json +0 -302
  224. package/misc/apps/RAG/data/emails.json +0 -182
  225. package/misc/apps/RAG/data/events.json +0 -226
  226. package/misc/apps/RAG/data/files.json +0 -172
  227. package/misc/apps/RAG/data/users.json +0 -158
  228. package/misc/apps/RAG/jest.config.js +0 -21
  229. package/misc/apps/RAG/package.json +0 -48
  230. package/misc/apps/RAG/public/index.html +0 -18
  231. package/misc/apps/RAG/src/App.css +0 -42
  232. package/misc/apps/RAG/src/App.tsx +0 -50
  233. package/misc/apps/RAG/src/components/AdaptiveCardRenderer.css +0 -172
  234. package/misc/apps/RAG/src/components/AdaptiveCardRenderer.tsx +0 -380
  235. package/misc/apps/RAG/src/components/ApiKeySettings.tsx +0 -245
  236. package/misc/apps/RAG/src/components/ChatContainer.css +0 -67
  237. package/misc/apps/RAG/src/components/ChatContainer.tsx +0 -242
  238. package/misc/apps/RAG/src/components/ChatInput.css +0 -23
  239. package/misc/apps/RAG/src/components/ChatInput.tsx +0 -76
  240. package/misc/apps/RAG/src/components/ChatMessage.css +0 -160
  241. package/misc/apps/RAG/src/components/ChatMessage.tsx +0 -286
  242. package/misc/apps/RAG/src/components/FlowQueryAgent.ts +0 -708
  243. package/misc/apps/RAG/src/components/FlowQueryRunner.css +0 -113
  244. package/misc/apps/RAG/src/components/FlowQueryRunner.tsx +0 -371
  245. package/misc/apps/RAG/src/components/index.ts +0 -28
  246. package/misc/apps/RAG/src/graph/index.ts +0 -19
  247. package/misc/apps/RAG/src/graph/initializeGraph.ts +0 -254
  248. package/misc/apps/RAG/src/index.tsx +0 -29
  249. package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +0 -327
  250. package/misc/apps/RAG/src/prompts/index.ts +0 -10
  251. package/misc/apps/RAG/src/tests/graph.test.ts +0 -35
  252. package/misc/apps/RAG/src/utils/FlowQueryExecutor.ts +0 -130
  253. package/misc/apps/RAG/src/utils/FlowQueryExtractor.ts +0 -208
  254. package/misc/apps/RAG/src/utils/Llm.ts +0 -248
  255. package/misc/apps/RAG/src/utils/index.ts +0 -12
  256. package/misc/apps/RAG/tsconfig.json +0 -22
  257. package/misc/apps/RAG/webpack.config.js +0 -43
  258. package/misc/apps/README.md +0 -1
  259. package/misc/queries/analyze_catfacts.cql +0 -75
  260. package/misc/queries/azure_openai_completions.cql +0 -13
  261. package/misc/queries/azure_openai_models.cql +0 -9
  262. package/misc/queries/mock_pipeline.cql +0 -84
  263. package/misc/queries/openai_completions.cql +0 -15
  264. package/misc/queries/openai_models.cql +0 -13
  265. package/misc/queries/test.cql +0 -6
  266. package/misc/queries/tool_inference.cql +0 -24
  267. package/misc/queries/wisdom.cql +0 -6
  268. package/misc/queries/wisdom_letter_histogram.cql +0 -8
  269. package/src/compute/flowquery.ts +0 -46
  270. package/src/compute/runner.ts +0 -66
  271. package/src/extensibility.ts +0 -45
  272. package/src/graph/data.ts +0 -130
  273. package/src/graph/database.ts +0 -143
  274. package/src/graph/hops.ts +0 -22
  275. package/src/graph/node.ts +0 -122
  276. package/src/graph/node_data.ts +0 -18
  277. package/src/graph/node_reference.ts +0 -38
  278. package/src/graph/pattern.ts +0 -110
  279. package/src/graph/pattern_expression.ts +0 -48
  280. package/src/graph/patterns.ts +0 -36
  281. package/src/graph/physical_node.ts +0 -23
  282. package/src/graph/physical_relationship.ts +0 -23
  283. package/src/graph/relationship.ts +0 -167
  284. package/src/graph/relationship_data.ts +0 -31
  285. package/src/graph/relationship_match_collector.ts +0 -64
  286. package/src/graph/relationship_reference.ts +0 -25
  287. package/src/index.browser.ts +0 -46
  288. package/src/index.node.ts +0 -55
  289. package/src/index.ts +0 -12
  290. package/src/io/command_line.ts +0 -74
  291. package/src/parsing/alias.ts +0 -23
  292. package/src/parsing/alias_option.ts +0 -5
  293. package/src/parsing/ast_node.ts +0 -153
  294. package/src/parsing/base_parser.ts +0 -98
  295. package/src/parsing/components/csv.ts +0 -9
  296. package/src/parsing/components/from.ts +0 -12
  297. package/src/parsing/components/headers.ts +0 -12
  298. package/src/parsing/components/json.ts +0 -9
  299. package/src/parsing/components/null.ts +0 -9
  300. package/src/parsing/components/post.ts +0 -9
  301. package/src/parsing/components/text.ts +0 -9
  302. package/src/parsing/context.ts +0 -54
  303. package/src/parsing/data_structures/associative_array.ts +0 -43
  304. package/src/parsing/data_structures/json_array.ts +0 -31
  305. package/src/parsing/data_structures/key_value_pair.ts +0 -37
  306. package/src/parsing/data_structures/lookup.ts +0 -44
  307. package/src/parsing/data_structures/range_lookup.ts +0 -36
  308. package/src/parsing/expressions/boolean.ts +0 -21
  309. package/src/parsing/expressions/expression.ts +0 -150
  310. package/src/parsing/expressions/expression_map.ts +0 -22
  311. package/src/parsing/expressions/f_string.ts +0 -26
  312. package/src/parsing/expressions/identifier.ts +0 -22
  313. package/src/parsing/expressions/number.ts +0 -40
  314. package/src/parsing/expressions/operator.ts +0 -354
  315. package/src/parsing/expressions/reference.ts +0 -45
  316. package/src/parsing/expressions/string.ts +0 -34
  317. package/src/parsing/functions/aggregate_function.ts +0 -58
  318. package/src/parsing/functions/async_function.ts +0 -64
  319. package/src/parsing/functions/avg.ts +0 -47
  320. package/src/parsing/functions/coalesce.ts +0 -49
  321. package/src/parsing/functions/collect.ts +0 -54
  322. package/src/parsing/functions/count.ts +0 -54
  323. package/src/parsing/functions/date.ts +0 -63
  324. package/src/parsing/functions/datetime.ts +0 -63
  325. package/src/parsing/functions/duration.ts +0 -143
  326. package/src/parsing/functions/element_id.ts +0 -51
  327. package/src/parsing/functions/function.ts +0 -60
  328. package/src/parsing/functions/function_factory.ts +0 -195
  329. package/src/parsing/functions/function_metadata.ts +0 -217
  330. package/src/parsing/functions/functions.ts +0 -70
  331. package/src/parsing/functions/head.ts +0 -42
  332. package/src/parsing/functions/id.ts +0 -51
  333. package/src/parsing/functions/join.ts +0 -40
  334. package/src/parsing/functions/keys.ts +0 -29
  335. package/src/parsing/functions/last.ts +0 -42
  336. package/src/parsing/functions/localdatetime.ts +0 -63
  337. package/src/parsing/functions/localtime.ts +0 -58
  338. package/src/parsing/functions/max.ts +0 -37
  339. package/src/parsing/functions/min.ts +0 -37
  340. package/src/parsing/functions/nodes.ts +0 -54
  341. package/src/parsing/functions/predicate_function.ts +0 -48
  342. package/src/parsing/functions/predicate_sum.ts +0 -47
  343. package/src/parsing/functions/properties.ts +0 -56
  344. package/src/parsing/functions/rand.ts +0 -21
  345. package/src/parsing/functions/range.ts +0 -37
  346. package/src/parsing/functions/reducer_element.ts +0 -10
  347. package/src/parsing/functions/relationships.ts +0 -52
  348. package/src/parsing/functions/replace.ts +0 -38
  349. package/src/parsing/functions/round.ts +0 -28
  350. package/src/parsing/functions/schema.ts +0 -39
  351. package/src/parsing/functions/size.ts +0 -28
  352. package/src/parsing/functions/split.ts +0 -45
  353. package/src/parsing/functions/string_distance.ts +0 -83
  354. package/src/parsing/functions/stringify.ts +0 -37
  355. package/src/parsing/functions/substring.ts +0 -68
  356. package/src/parsing/functions/sum.ts +0 -41
  357. package/src/parsing/functions/tail.ts +0 -39
  358. package/src/parsing/functions/temporal_utils.ts +0 -180
  359. package/src/parsing/functions/time.ts +0 -58
  360. package/src/parsing/functions/timestamp.ts +0 -37
  361. package/src/parsing/functions/to_float.ts +0 -50
  362. package/src/parsing/functions/to_integer.ts +0 -50
  363. package/src/parsing/functions/to_json.ts +0 -28
  364. package/src/parsing/functions/to_lower.ts +0 -28
  365. package/src/parsing/functions/to_string.ts +0 -32
  366. package/src/parsing/functions/trim.ts +0 -28
  367. package/src/parsing/functions/type.ts +0 -39
  368. package/src/parsing/functions/value_holder.ts +0 -13
  369. package/src/parsing/logic/case.ts +0 -26
  370. package/src/parsing/logic/else.ts +0 -12
  371. package/src/parsing/logic/end.ts +0 -9
  372. package/src/parsing/logic/then.ts +0 -12
  373. package/src/parsing/logic/when.ts +0 -12
  374. package/src/parsing/operations/aggregated_return.ts +0 -22
  375. package/src/parsing/operations/aggregated_with.ts +0 -18
  376. package/src/parsing/operations/call.ts +0 -69
  377. package/src/parsing/operations/create_node.ts +0 -39
  378. package/src/parsing/operations/create_relationship.ts +0 -38
  379. package/src/parsing/operations/delete_node.ts +0 -33
  380. package/src/parsing/operations/delete_relationship.ts +0 -32
  381. package/src/parsing/operations/group_by.ts +0 -137
  382. package/src/parsing/operations/limit.ts +0 -31
  383. package/src/parsing/operations/load.ts +0 -146
  384. package/src/parsing/operations/match.ts +0 -54
  385. package/src/parsing/operations/operation.ts +0 -69
  386. package/src/parsing/operations/order_by.ts +0 -126
  387. package/src/parsing/operations/projection.ts +0 -18
  388. package/src/parsing/operations/return.ts +0 -76
  389. package/src/parsing/operations/union.ts +0 -114
  390. package/src/parsing/operations/union_all.ts +0 -16
  391. package/src/parsing/operations/unwind.ts +0 -36
  392. package/src/parsing/operations/where.ts +0 -42
  393. package/src/parsing/operations/with.ts +0 -20
  394. package/src/parsing/parser.ts +0 -1641
  395. package/src/parsing/parser_state.ts +0 -25
  396. package/src/parsing/token_to_node.ts +0 -114
  397. package/src/tokenization/keyword.ts +0 -50
  398. package/src/tokenization/operator.ts +0 -25
  399. package/src/tokenization/string_walker.ts +0 -197
  400. package/src/tokenization/symbol.ts +0 -15
  401. package/src/tokenization/token.ts +0 -764
  402. package/src/tokenization/token_mapper.ts +0 -53
  403. package/src/tokenization/token_type.ts +0 -16
  404. package/src/tokenization/tokenizer.ts +0 -250
  405. package/src/tokenization/trie.ts +0 -117
  406. package/src/utils/object_utils.ts +0 -17
  407. package/src/utils/string_utils.ts +0 -114
  408. package/tests/compute/runner.test.ts +0 -4559
  409. package/tests/extensibility.test.ts +0 -643
  410. package/tests/graph/create.test.ts +0 -36
  411. package/tests/graph/data.test.ts +0 -58
  412. package/tests/graph/match.test.ts +0 -29
  413. package/tests/parsing/context.test.ts +0 -27
  414. package/tests/parsing/expression.test.ts +0 -303
  415. package/tests/parsing/parser.test.ts +0 -1327
  416. package/tests/tokenization/token_mapper.test.ts +0 -47
  417. package/tests/tokenization/tokenizer.test.ts +0 -191
  418. package/tests/tokenization/trie.test.ts +0 -20
  419. package/tsconfig.json +0 -19
  420. package/typedoc.json +0 -16
  421. package/vscode-settings.json.recommended +0 -16
  422. package/webpack.config.js +0 -26
@@ -1,53 +0,0 @@
1
- import Token from "./token";
2
- import Trie from "./trie";
3
-
4
- /**
5
- * Maps string values to tokens using a Trie for efficient lookup.
6
- *
7
- * Takes an enum of keywords, operators, or symbols and builds a trie
8
- * for fast token matching during tokenization.
9
- *
10
- * @example
11
- * ```typescript
12
- * const mapper = new TokenMapper(Keyword);
13
- * const token = mapper.map("WITH");
14
- * ```
15
- */
16
- class TokenMapper {
17
- private _trie: Trie = new Trie();
18
-
19
- /**
20
- * Creates a TokenMapper from an enum of token values.
21
- *
22
- * @param _enum - An enum object containing token values
23
- */
24
- constructor(private _enum: { [key: string]: any }) {
25
- for(const [key, value] of Object.entries(_enum)) {
26
- const token: Token | undefined = Token.method(key);
27
- if(token !== undefined && token.value !== null) {
28
- this._trie.insert(token);
29
- }
30
- }
31
- }
32
-
33
- /**
34
- * Maps a string value to its corresponding token.
35
- *
36
- * @param value - The string value to map
37
- * @returns The matched token, or undefined if no match found
38
- */
39
- public map(value: string): Token | undefined {
40
- return this._trie.find(value);
41
- }
42
-
43
- /**
44
- * Gets the last matched string from the most recent map operation.
45
- *
46
- * @returns The last found string, or null if no match
47
- */
48
- public get last_found(): string | null {
49
- return this._trie.last_found;
50
- }
51
- }
52
-
53
- export default TokenMapper;
@@ -1,16 +0,0 @@
1
- enum TokenType {
2
- KEYWORD = "KEYWORD",
3
- BOOLEAN = "BOOLEAN",
4
- OPERATOR = "OPERATOR",
5
- UNARY_OPERATOR = "UNARY_OPERATOR",
6
- IDENTIFIER = "IDENTIFIER",
7
- STRING = "STRING",
8
- F_STRING = "F-STRING",
9
- BACKTICK_STRING = "BACKTICK_STRING",
10
- NUMBER = "NUMBER",
11
- SYMBOL = "SYMBOL",
12
- WHITESPACE = "WHITESPACE",
13
- COMMENT = "COMMENT",
14
- EOF = "EOF",
15
- }
16
- export default TokenType;
@@ -1,250 +0,0 @@
1
- import StringUtils from "../utils/string_utils";
2
- import Keyword from "./keyword";
3
- import Operator from "./operator";
4
- import StringWalker from "./string_walker";
5
- import Symbol from "./symbol";
6
- import Token from "./token";
7
- import TokenMapper from "./token_mapper";
8
-
9
- /**
10
- * Tokenizes FlowQuery input strings into a sequence of tokens.
11
- *
12
- * The tokenizer performs lexical analysis, breaking down the input text into
13
- * meaningful tokens such as keywords, identifiers, operators, strings, numbers,
14
- * and symbols. It handles comments, whitespace, and f-strings.
15
- *
16
- * @example
17
- * ```typescript
18
- * const tokenizer = new Tokenizer("WITH x = 1 RETURN x");
19
- * const tokens = tokenizer.tokenize();
20
- * ```
21
- */
22
- class Tokenizer {
23
- private walker: StringWalker;
24
- private keywords: TokenMapper = new TokenMapper(Keyword);
25
- private symbols: TokenMapper = new TokenMapper(Symbol);
26
- private operators: TokenMapper = new TokenMapper(Operator);
27
-
28
- /**
29
- * Creates a new Tokenizer instance for the given input.
30
- *
31
- * @param input - The FlowQuery input string to tokenize
32
- */
33
- constructor(input: string) {
34
- this.walker = new StringWalker(input);
35
- }
36
-
37
- /**
38
- * Tokenizes the input string into an array of tokens.
39
- *
40
- * @returns An array of Token objects representing the tokenized input
41
- * @throws {Error} If an unrecognized token is encountered
42
- */
43
- public tokenize(): Token[] {
44
- const tokens: Token[] = [];
45
- let last: Token | null = null;
46
- while (!this.walker.isAtEnd) {
47
- tokens.push(...this.f_string());
48
- last = this.getLastNonWhitespaceOrNonCommentToken(tokens) || last;
49
- const token = this.getNextToken(last);
50
- if (token === null) {
51
- throw new Error(`Unrecognized token at position ${this.walker.position}`);
52
- }
53
- token.position = this.walker.position;
54
- tokens.push(token);
55
- }
56
- return tokens;
57
- }
58
-
59
- private getLastNonWhitespaceOrNonCommentToken(tokens: Token[]): Token | null {
60
- if (tokens.length === 0) {
61
- return null;
62
- }
63
- if (!tokens[tokens.length - 1].isWhitespaceOrComment()) {
64
- return tokens[tokens.length - 1];
65
- }
66
- return null;
67
- }
68
-
69
- private getNextToken(last: Token | null = null): Token | null {
70
- if (this.walker.isAtEnd) {
71
- return Token.EOF;
72
- }
73
- return (
74
- this.comment() ||
75
- this.whitespace() ||
76
- this.lookup(this.keywords) ||
77
- this.lookup(this.operators, last, this.skipMinus) ||
78
- this.boolean() ||
79
- this.identifier() ||
80
- this.string() ||
81
- this.number() ||
82
- this.lookup(this.symbols)
83
- );
84
- }
85
-
86
- public comment(): Token | null {
87
- const startPosition = this.walker.position;
88
- if (this.walker.checkForSingleComment() || this.walker.checkForMultiLineComment()) {
89
- const uncommented = StringUtils.uncomment(this.walker.getString(startPosition));
90
- return Token.COMMENT(uncommented);
91
- }
92
- return null;
93
- }
94
-
95
- private boolean(): Token | null {
96
- const startPosition = this.walker.position;
97
- if (this.walker.checkForString("TRUE")) {
98
- return Token.BOOLEAN(this.walker.getString(startPosition).toUpperCase());
99
- }
100
- if (this.walker.checkForString("FALSE")) {
101
- return Token.BOOLEAN(this.walker.getString(startPosition).toUpperCase());
102
- }
103
- return null;
104
- }
105
-
106
- private identifier(): Token | null {
107
- const startPosition = this.walker.position;
108
- if (this.walker.checkForUnderScore() || this.walker.checkForLetter()) {
109
- while (
110
- !this.walker.isAtEnd &&
111
- (this.walker.checkForLetter() ||
112
- this.walker.checkForDigit() ||
113
- this.walker.checkForUnderScore())
114
- ) {}
115
- return Token.IDENTIFIER(this.walker.getString(startPosition));
116
- }
117
- return null;
118
- }
119
-
120
- private string(): Token | null {
121
- const startPosition = this.walker.position;
122
- const quoteChar = this.walker.checkForQuote();
123
- if (quoteChar === null) {
124
- return null;
125
- }
126
- while (!this.walker.isAtEnd) {
127
- if (this.walker.escaped(quoteChar)) {
128
- this.walker.moveNext();
129
- this.walker.moveNext();
130
- continue;
131
- }
132
- if (this.walker.checkForString(quoteChar)) {
133
- const value = this.walker.getString(startPosition);
134
- if (quoteChar === Symbol.BACKTICK) {
135
- return Token.BACKTICK_STRING(value, quoteChar);
136
- }
137
- return Token.STRING(value, quoteChar);
138
- }
139
- this.walker.moveNext();
140
- }
141
- throw new Error(`Unterminated string at position ${startPosition}`);
142
- }
143
-
144
- private *f_string(): Iterable<Token> {
145
- if (!this.walker.checkForFStringStart()) {
146
- return;
147
- }
148
- this.walker.moveNext(); // skip the f
149
- let position = this.walker.position;
150
- const quoteChar = this.walker.checkForQuote();
151
- if (quoteChar === null) {
152
- return;
153
- }
154
- while (!this.walker.isAtEnd) {
155
- if (this.walker.escaped(quoteChar) || this.walker.escapedBrace()) {
156
- this.walker.moveNext();
157
- this.walker.moveNext();
158
- continue;
159
- }
160
- if (this.walker.openingBrace()) {
161
- yield Token.F_STRING(this.walker.getString(position), quoteChar);
162
- position = this.walker.position;
163
- yield Token.OPENING_BRACE;
164
- this.walker.moveNext(); // skip the opening brace
165
- position = this.walker.position;
166
- while (!this.walker.isAtEnd && !this.walker.closingBrace()) {
167
- const token = this.getNextToken();
168
- if (token !== null) {
169
- yield token;
170
- } else {
171
- break;
172
- }
173
- if (this.walker.closingBrace()) {
174
- yield Token.CLOSING_BRACE;
175
- this.walker.moveNext(); // skip the closing brace
176
- position = this.walker.position;
177
- break;
178
- }
179
- }
180
- }
181
- if (this.walker.checkForString(quoteChar)) {
182
- yield Token.F_STRING(this.walker.getString(position), quoteChar);
183
- return;
184
- }
185
- this.walker.moveNext();
186
- }
187
- }
188
-
189
- private whitespace(): Token | null {
190
- let foundWhitespace = false;
191
- while (!this.walker.isAtEnd && this.walker.checkForWhitespace()) {
192
- this.walker.moveNext();
193
- foundWhitespace = true;
194
- }
195
- return foundWhitespace ? Token.WHITESPACE : null;
196
- }
197
-
198
- private number(): Token | null {
199
- const startPosition = this.walker.position;
200
- if (this.walker.checkForString("-") || this.walker.checkForDigit()) {
201
- while (!this.walker.isAtEnd && this.walker.checkForDigit()) {}
202
- if (this.walker.checkForString(Symbol.DOT)) {
203
- let decimalDigits: number = 0;
204
- while (!this.walker.isAtEnd && this.walker.checkForDigit()) {
205
- decimalDigits++;
206
- }
207
- if (decimalDigits === 0) {
208
- this.walker.movePrevious();
209
- }
210
- }
211
- const _number = this.walker.getString(startPosition);
212
- return Token.NUMBER(_number);
213
- }
214
- return null;
215
- }
216
-
217
- private lookup(
218
- mapper: TokenMapper,
219
- last: Token | null = null,
220
- skip?: (last: Token | null, current: Token) => boolean
221
- ): Token | null {
222
- const token = mapper.map(this.walker.getRemainingString());
223
- if (token !== undefined && token.value !== null) {
224
- if (token.can_be_identifier && this.walker.word_continuation(token.value)) {
225
- return null;
226
- }
227
- if (skip && last && skip(last, token)) {
228
- return null;
229
- }
230
- this.walker.moveBy(token.value.length);
231
- if (mapper.last_found !== null) {
232
- token.case_sensitive_value = mapper.last_found;
233
- }
234
- return token;
235
- }
236
- return null;
237
- }
238
-
239
- private skipMinus(last: Token | null, current: Token): boolean {
240
- if (last === null) {
241
- return false;
242
- }
243
- if ((last.isKeyword() || last.isComma() || last.isColon()) && current.isNegation()) {
244
- return true;
245
- }
246
- return false;
247
- }
248
- }
249
-
250
- export default Tokenizer;
@@ -1,117 +0,0 @@
1
- import Token from "./token";
2
-
3
- /**
4
- * Represents a node in a Trie data structure.
5
- *
6
- * Each node can have children nodes (one per character) and may contain a token
7
- * if the path to this node represents a complete word.
8
- */
9
- class Node {
10
- private _children: Map<string, Node> = new Map();
11
- private _token: Token | undefined = undefined;
12
-
13
- public map(char: string): Node {
14
- return this._children.get(char) || this._children.set(char, new Node()).get(char)!;
15
- }
16
-
17
- public retrieve(char: string): Node | undefined {
18
- return this._children.get(char);
19
- }
20
-
21
- public set token(token: Token) {
22
- this._token = token;
23
- }
24
-
25
- public get token(): Token | undefined {
26
- return this._token;
27
- }
28
-
29
- public is_end_of_word(): boolean {
30
- return this._token !== undefined;
31
- }
32
-
33
- public no_children(): boolean {
34
- return this._children.size === 0;
35
- }
36
- }
37
-
38
- /**
39
- * Trie (prefix tree) data structure for efficient keyword and operator lookup.
40
- *
41
- * Used during tokenization to quickly match input strings against known keywords
42
- * and operators. Supports case-insensitive matching and tracks the longest match found.
43
- *
44
- * @example
45
- * ```typescript
46
- * const trie = new Trie();
47
- * trie.insert(Token.WITH);
48
- * const found = trie.find("WITH");
49
- * ```
50
- */
51
- class Trie {
52
- private _root: Node = new Node();
53
- private _max_length: number = 0;
54
- private _last_found: string | null = null;
55
-
56
- /**
57
- * Inserts a token into the trie.
58
- *
59
- * @param token - The token to insert
60
- * @throws {Error} If the token value is null or empty
61
- */
62
- public insert(token: Token): void {
63
- if(token.value === null || token.value.length === 0) {
64
- throw new Error("Token value cannot be null or empty");
65
- }
66
- let currentNode = this._root;
67
- for (const char of token.value) {
68
- currentNode = currentNode.map(char.toLowerCase());
69
- }
70
- if (token.value.length > this._max_length) {
71
- this._max_length = token.value.length;
72
- }
73
- currentNode.token = token;
74
- }
75
-
76
- /**
77
- * Finds a token by searching for the longest matching prefix in the trie.
78
- *
79
- * @param value - The string value to search for
80
- * @returns The token if found, undefined otherwise
81
- */
82
- public find(value: string): Token | undefined {
83
- if(value.length === 0) {
84
- return undefined;
85
- }
86
- let index = 0;
87
- let current: Node | undefined = undefined;
88
- let found: Token | undefined = undefined;
89
- this._last_found = null;
90
- while((current = (current || this._root).retrieve(value[index].toLowerCase())) !== undefined) {
91
- if(current.is_end_of_word()) {
92
- found = current.token;
93
- this._last_found = value.substring(0, index + 1);
94
- }
95
- index++;
96
- if(index === value.length || index > this._max_length) {
97
- break;
98
- }
99
- }
100
- if(current?.is_end_of_word()) {
101
- found = current.token;
102
- this._last_found = value.substring(0, index);
103
- }
104
- return found;
105
- }
106
-
107
- /**
108
- * Gets the last matched string from the most recent find operation.
109
- *
110
- * @returns The last found string, or null if no match was found
111
- */
112
- public get last_found(): string | null {
113
- return this._last_found;
114
- }
115
- }
116
-
117
- export default Trie;
@@ -1,17 +0,0 @@
1
- /**
2
- * Utility class for object-related operations.
3
- */
4
- class ObjectUtils {
5
- /**
6
- * Checks if an object is an instance of any of the provided classes.
7
- *
8
- * @param obj - The object to check
9
- * @param classes - Array of class constructors to test against
10
- * @returns True if the object is an instance of any class, false otherwise
11
- */
12
- static isInstanceOfAny(obj: any, classes: any[]): boolean {
13
- return classes.some(cls => obj instanceof cls);
14
- }
15
- }
16
-
17
- export default ObjectUtils;
@@ -1,114 +0,0 @@
1
- /**
2
- * Utility class for string manipulation and validation.
3
- *
4
- * Provides methods for handling quoted strings, comments, escape sequences,
5
- * and identifier validation.
6
- */
7
- class StringUtils {
8
- static readonly quotes: string[] = ['"', "'", '`'];
9
- static readonly letters = 'abcdefghijklmnopqrstuvwxyz';
10
- static readonly digits = '0123456789';
11
- static readonly whitespace = ' \t\n\r';
12
- static readonly word_valid_chars = StringUtils.letters + StringUtils.digits + '_';
13
-
14
- /**
15
- * Removes surrounding quotes from a string.
16
- *
17
- * @param str - The string to unquote
18
- * @returns The unquoted string
19
- */
20
- static unquote(str: string): string {
21
- if(str.length === 0) {
22
- return str;
23
- }
24
- if(str.length === 1 && StringUtils.quotes.includes(str)) {
25
- return '';
26
- }
27
- const first: string = str[0];
28
- const last: string = str[str.length - 1];
29
- if (StringUtils.quotes.includes(first) && first === last) {
30
- return str.substring(1, str.length - 1);
31
- }
32
- if (StringUtils.quotes.includes(last) && first !== last) {
33
- return str.substring(0, str.length - 1);
34
- }
35
- if (StringUtils.quotes.includes(first) && first !== last) {
36
- return str.substring(1);
37
- }
38
- return str;
39
- }
40
-
41
- /**
42
- * Removes comment markers from a string.
43
- *
44
- * @param str - The comment string
45
- * @returns The string without comment markers
46
- */
47
- static uncomment(str: string): string {
48
- if (str.length < 2) {
49
- return str;
50
- }
51
- if (str[0] === '/' && str[1] === '/') {
52
- return str.substring(2);
53
- }
54
- if (str[0] === '/' && str[1] === '*' && str[str.length - 2] === '*' && str[str.length - 1] === '/') {
55
- return str.substring(2, str.length - 2);
56
- }
57
- return str;
58
- }
59
-
60
- /**
61
- * Removes escape sequences before quotes in a string.
62
- *
63
- * @param str - The string to process
64
- * @param quoteChar - The quote character that was escaped
65
- * @returns The string with escape sequences removed
66
- */
67
- static removeEscapedQuotes(str: string, quoteChar: string): string {
68
- let unescaped = '';
69
- for (let i = 0; i < str.length; i++) {
70
- if (str[i] === '\\' && str[i + 1] === quoteChar) {
71
- i++;
72
- }
73
- unescaped += str[i];
74
- }
75
- return unescaped;
76
- }
77
-
78
- /**
79
- * Removes escaped braces ({{ and }}) from f-strings.
80
- *
81
- * @param str - The string to process
82
- * @returns The string with escaped braces resolved
83
- */
84
- static removeEscapedBraces(str: string): string {
85
- let unescaped = '';
86
- for (let i = 0; i < str.length; i++) {
87
- if((str[i] === '{' && str[i + 1] === '{') || (str[i] === '}' && str[i + 1] === '}')) {
88
- i++;
89
- }
90
- unescaped += str[i];
91
- }
92
- return unescaped;
93
- }
94
-
95
- /**
96
- * Checks if a string is a valid identifier.
97
- *
98
- * @param str - The string to validate
99
- * @returns True if the string can be used as an identifier, false otherwise
100
- */
101
- static can_be_identifier(str: string): boolean {
102
- const lower = str.toLowerCase();
103
- if(lower.length === 0) {
104
- return false;
105
- }
106
- if(!StringUtils.letters.includes(lower[0]) && lower[0] !== '_') {
107
- return false;
108
- }
109
- return lower.split('').every((char) => StringUtils.word_valid_chars.includes(char));
110
- }
111
-
112
- }
113
-
114
- export default StringUtils;