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,54 +0,0 @@
1
- import Node from "../../graph/node";
2
- import Pattern from "../../graph/pattern";
3
- import Patterns from "../../graph/patterns";
4
- import Operation from "./operation";
5
-
6
- class Match extends Operation {
7
- private _patterns: Patterns | null = null;
8
- private _optional: boolean = false;
9
-
10
- constructor(patterns: Pattern[] = [], optional: boolean = false) {
11
- super();
12
- this._patterns = new Patterns(patterns);
13
- this._optional = optional;
14
- }
15
- public get patterns(): Pattern[] {
16
- return this._patterns ? this._patterns.patterns : [];
17
- }
18
- public get optional(): boolean {
19
- return this._optional;
20
- }
21
- protected toString(): string {
22
- return this._optional ? "OptionalMatch" : "Match";
23
- }
24
- /**
25
- * Executes the match operation by chaining the patterns together.
26
- * After each pattern match, it continues to the next operation in the chain.
27
- * If optional and no match is found, continues with null values.
28
- * @return Promise<void>
29
- */
30
- public async run(): Promise<void> {
31
- await this._patterns!.initialize();
32
- let matched = false;
33
- this._patterns!.toDoNext = async () => {
34
- matched = true;
35
- // Continue to the next operation after all patterns are matched
36
- await this.next?.run();
37
- };
38
- // Kick off the graph pattern traversal
39
- await this._patterns!.traverse();
40
- // For OPTIONAL MATCH: if nothing matched, continue with null values
41
- if (!matched && this._optional) {
42
- for (const pattern of this._patterns!.patterns) {
43
- for (const element of pattern.chain) {
44
- if (element instanceof Node) {
45
- element.setValue(null!);
46
- }
47
- }
48
- }
49
- await this.next?.run();
50
- }
51
- }
52
- }
53
-
54
- export default Match;
@@ -1,69 +0,0 @@
1
- import ASTNode from "../ast_node";
2
-
3
- /**
4
- * Base class for all FlowQuery operations.
5
- *
6
- * Operations represent the main statements in FlowQuery (WITH, UNWIND, RETURN, LOAD, WHERE).
7
- * They form a linked list structure and can be executed sequentially.
8
- *
9
- * @abstract
10
- */
11
- abstract class Operation extends ASTNode {
12
- private _previous: Operation | null = null;
13
- private _next: Operation | null = null;
14
-
15
- /**
16
- * Creates a new Operation instance.
17
- */
18
- constructor() {
19
- super();
20
- }
21
- public get previous(): Operation | null {
22
- return this._previous;
23
- }
24
- public set previous(value: Operation | null) {
25
- this._previous = value;
26
- }
27
- public get next(): Operation | null {
28
- return this._next;
29
- }
30
- public set next(value: Operation | null) {
31
- this._next = value;
32
- }
33
- public addSibling(operation: Operation): void {
34
- this._parent?.addChild(operation);
35
- operation.previous = this;
36
- this.next = operation;
37
- }
38
- public get isLast(): boolean {
39
- return this._next === null;
40
- }
41
-
42
- /**
43
- * Executes this operation. Must be implemented by subclasses.
44
- *
45
- * @returns A promise that resolves when the operation completes
46
- * @throws {Error} If not implemented by subclass
47
- */
48
- public async run(): Promise<void> {
49
- throw new Error("Not implemented");
50
- }
51
-
52
- /**
53
- * Finishes execution by calling finish on the next operation in the chain.
54
- *
55
- * @returns A promise that resolves when all operations finish
56
- */
57
- public async finish(): Promise<void> {
58
- await this.next?.finish();
59
- }
60
- public async initialize(): Promise<void> {
61
- await this.next?.initialize();
62
- }
63
- public reset(): void {}
64
- public get results(): Record<string, any>[] {
65
- throw new Error("Not implemented");
66
- }
67
- }
68
-
69
- export default Operation;
@@ -1,126 +0,0 @@
1
- import Expression from "../expressions/expression";
2
- import Reference from "../expressions/reference";
3
- import Operation from "./operation";
4
-
5
- export interface SortField {
6
- direction: "asc" | "desc";
7
- /** The parsed expression to evaluate for this sort field. */
8
- expression: Expression;
9
- }
10
-
11
- /**
12
- * Represents an ORDER BY operation that sorts results.
13
- *
14
- * Can be attached to a RETURN operation (sorting its results),
15
- * or used as a standalone accumulating operation after a non-aggregate WITH.
16
- *
17
- * Supports both simple field references and arbitrary expressions:
18
- * @example
19
- * ```
20
- * RETURN x ORDER BY x DESC
21
- * RETURN x ORDER BY toLower(x.name) ASC
22
- * RETURN x ORDER BY string_distance(toLower(x.name), toLower('Thomas')) ASC
23
- * ```
24
- */
25
- class OrderBy extends Operation {
26
- private _fields: SortField[];
27
- private _results: Record<string, any>[] = [];
28
- /**
29
- * Parallel array of pre-computed sort-key tuples, one entry per
30
- * accumulated result row. Each inner array has one value per sort
31
- * field, in the same order as `_fields`.
32
- */
33
- private _sortKeys: any[][] = [];
34
-
35
- constructor(fields: SortField[]) {
36
- super();
37
- this._fields = fields;
38
- }
39
-
40
- public get fields(): SortField[] {
41
- return this._fields;
42
- }
43
-
44
- /**
45
- * Evaluates every sort-field expression against the current runtime
46
- * context and stores the resulting values. Must be called once per
47
- * accumulated row (from `Return.run()`).
48
- */
49
- public captureSortKeys(): void {
50
- this._sortKeys.push(this._fields.map((f) => f.expression.value()));
51
- }
52
-
53
- /**
54
- * Sorts an array of records using the pre-computed sort keys captured
55
- * during accumulation. When no keys have been captured (e.g.
56
- * aggregated returns), falls back to looking up simple reference
57
- * identifiers in each record.
58
- */
59
- public sort(records: Record<string, any>[]): Record<string, any>[] {
60
- const useKeys = this._sortKeys.length === records.length;
61
- // Build an index array so we can sort records and keys together.
62
- const indices = records.map((_, i) => i);
63
- const keys = this._sortKeys;
64
-
65
- // Pre-compute fallback field names for when sort keys aren't
66
- // available (aggregated returns). Simple references like `x`
67
- // map to the column name; complex expressions have no fallback.
68
- const fallbackFields: (string | null)[] = this._fields.map((f) => {
69
- const root = f.expression.firstChild();
70
- if (root instanceof Reference && f.expression.childCount() === 1) {
71
- return (root as Reference).identifier;
72
- }
73
- return null;
74
- });
75
-
76
- indices.sort((ai, bi) => {
77
- for (let f = 0; f < this._fields.length; f++) {
78
- let aVal: any;
79
- let bVal: any;
80
- if (useKeys) {
81
- aVal = keys[ai][f];
82
- bVal = keys[bi][f];
83
- } else if (fallbackFields[f] !== null) {
84
- aVal = records[ai][fallbackFields[f]!];
85
- bVal = records[bi][fallbackFields[f]!];
86
- } else {
87
- continue;
88
- }
89
- let cmp = 0;
90
- if (aVal == null && bVal == null) cmp = 0;
91
- else if (aVal == null) cmp = -1;
92
- else if (bVal == null) cmp = 1;
93
- else if (aVal < bVal) cmp = -1;
94
- else if (aVal > bVal) cmp = 1;
95
- if (cmp !== 0) {
96
- return this._fields[f].direction === "desc" ? -cmp : cmp;
97
- }
98
- }
99
- return 0;
100
- });
101
- return indices.map((i) => records[i]);
102
- }
103
-
104
- /**
105
- * When used as a standalone operation (after non-aggregate WITH),
106
- * accumulates records to sort later.
107
- */
108
- public async run(): Promise<void> {
109
- const record: Record<string, any> = {};
110
- // Collect current variable values from the context
111
- // This gets called per-row, and then finish() sorts and emits
112
- await this.next?.run();
113
- }
114
-
115
- public async initialize(): Promise<void> {
116
- this._results = [];
117
- this._sortKeys = [];
118
- await this.next?.initialize();
119
- }
120
-
121
- public get results(): Record<string, any>[] {
122
- return this._results;
123
- }
124
- }
125
-
126
- export default OrderBy;
@@ -1,18 +0,0 @@
1
- import Expression from "../expressions/expression";
2
- import Operation from "./operation";
3
-
4
- class Projection extends Operation {
5
- constructor(expressions: Expression[]) {
6
- super();
7
- this.children = expressions;
8
- }
9
- protected *expressions(): Generator<[Expression, string]> {
10
- for (let i = 0; i < this.children.length; i++) {
11
- const expression: Expression = this.children[i] as Expression;
12
- const alias = expression.alias || `expr${i}`;
13
- yield [expression, alias];
14
- }
15
- }
16
- }
17
-
18
- export default Projection;
@@ -1,76 +0,0 @@
1
- import Limit from "./limit";
2
- import OrderBy from "./order_by";
3
- import Projection from "./projection";
4
- import Where from "./where";
5
-
6
- /**
7
- * Represents a RETURN operation that produces the final query results.
8
- *
9
- * The RETURN operation evaluates expressions and collects them into result records.
10
- * It can optionally have a WHERE clause to filter results.
11
- *
12
- * @example
13
- * ```typescript
14
- * // RETURN x, y WHERE x > 0
15
- * ```
16
- */
17
- class Return extends Projection {
18
- protected _where: Where | null = null;
19
- protected _results: Record<string, any>[] = [];
20
- private _limit: Limit | null = null;
21
- protected _orderBy: OrderBy | null = null;
22
- public set where(where: Where) {
23
- this._where = where;
24
- }
25
- public get where(): boolean {
26
- if (this._where === null) {
27
- return true;
28
- }
29
- return this._where.value();
30
- }
31
- public set limit(limit: Limit) {
32
- this._limit = limit;
33
- }
34
- public set orderBy(orderBy: OrderBy) {
35
- this._orderBy = orderBy;
36
- }
37
- public async run(): Promise<void> {
38
- if (!this.where) {
39
- return;
40
- }
41
- // When ORDER BY is present, skip limit during accumulation;
42
- // limit will be applied after sorting in get results()
43
- if (this._orderBy === null && this._limit !== null && this._limit.isLimitReached) {
44
- return;
45
- }
46
- const record: Map<string, any> = new Map();
47
- for (const [expression, alias] of this.expressions()) {
48
- const raw = expression.value();
49
- const value: any = typeof raw === "object" && raw !== null ? structuredClone(raw) : raw;
50
- record.set(alias, value);
51
- }
52
- // Capture sort-key values while expression bindings are still live.
53
- if (this._orderBy !== null) {
54
- this._orderBy.captureSortKeys();
55
- }
56
- this._results.push(Object.fromEntries(record));
57
- if (this._orderBy === null && this._limit !== null) {
58
- this._limit.increment();
59
- }
60
- }
61
- public async initialize(): Promise<void> {
62
- this._results = [];
63
- }
64
- public get results(): Record<string, any>[] {
65
- let results = this._results;
66
- if (this._orderBy !== null) {
67
- results = this._orderBy.sort(results);
68
- }
69
- if (this._orderBy !== null && this._limit !== null) {
70
- results = results.slice(0, this._limit.limitValue);
71
- }
72
- return results;
73
- }
74
- }
75
-
76
- export default Return;
@@ -1,114 +0,0 @@
1
- import Operation from "./operation";
2
-
3
- /**
4
- * Represents a UNION operation that combines results from two sub-queries.
5
- *
6
- * UNION merges the results of a left and right query pipeline, removing
7
- * duplicate rows. Both sides must return the same column names.
8
- *
9
- * @example
10
- * ```
11
- * WITH 1 AS x RETURN x
12
- * UNION
13
- * WITH 2 AS x RETURN x
14
- * // Results: [{x: 1}, {x: 2}]
15
- * ```
16
- */
17
- class Union extends Operation {
18
- protected _left: Operation | null = null;
19
- protected _right: Operation | null = null;
20
- protected _results: Record<string, any>[] = [];
21
-
22
- public set left(operation: Operation) {
23
- this._left = operation;
24
- }
25
- public get left(): Operation {
26
- if (!this._left) {
27
- throw new Error("Left operation is not set");
28
- }
29
- return this._left;
30
- }
31
- public set right(operation: Operation) {
32
- this._right = operation;
33
- }
34
- public get right(): Operation {
35
- if (!this._right) {
36
- throw new Error("Right operation is not set");
37
- }
38
- return this._right;
39
- }
40
-
41
- private lastInChain(operation: Operation): Operation {
42
- let current = operation;
43
- while (current.next) {
44
- current = current.next;
45
- }
46
- return current;
47
- }
48
-
49
- public async initialize(): Promise<void> {
50
- this._results = [];
51
- await this.next?.initialize();
52
- }
53
-
54
- public async run(): Promise<void> {
55
- // Execute left pipeline
56
- await this._left!.initialize();
57
- await this._left!.run();
58
- await this._left!.finish();
59
- const leftLast = this.lastInChain(this._left!);
60
- const leftResults: Record<string, any>[] = leftLast.results;
61
-
62
- // Execute right pipeline
63
- await this._right!.initialize();
64
- await this._right!.run();
65
- await this._right!.finish();
66
- const rightLast = this.lastInChain(this._right!);
67
- const rightResults: Record<string, any>[] = rightLast.results;
68
-
69
- // Validate column names match
70
- if (leftResults.length > 0 && rightResults.length > 0) {
71
- const leftKeys = Object.keys(leftResults[0]).sort().join(",");
72
- const rightKeys = Object.keys(rightResults[0]).sort().join(",");
73
- if (leftKeys !== rightKeys) {
74
- throw new Error(
75
- "All sub queries in a UNION must have the same return column names"
76
- );
77
- }
78
- }
79
-
80
- // Combine results
81
- this._results = this.combine(leftResults, rightResults);
82
- }
83
-
84
- /**
85
- * Combines results from left and right pipelines.
86
- * UNION removes duplicates; subclass UnionAll overrides to keep all rows.
87
- */
88
- protected combine(
89
- left: Record<string, any>[],
90
- right: Record<string, any>[]
91
- ): Record<string, any>[] {
92
- const combined = [...left];
93
- for (const row of right) {
94
- const serialized = JSON.stringify(row);
95
- const isDuplicate = combined.some(
96
- (existing) => JSON.stringify(existing) === serialized
97
- );
98
- if (!isDuplicate) {
99
- combined.push(row);
100
- }
101
- }
102
- return combined;
103
- }
104
-
105
- public async finish(): Promise<void> {
106
- await this.next?.finish();
107
- }
108
-
109
- public get results(): Record<string, any>[] {
110
- return this._results;
111
- }
112
- }
113
-
114
- export default Union;
@@ -1,16 +0,0 @@
1
- import Union from "./union";
2
-
3
- /**
4
- * Represents a UNION ALL operation that concatenates results from two sub-queries
5
- * without removing duplicates.
6
- */
7
- class UnionAll extends Union {
8
- protected combine(
9
- left: Record<string, any>[],
10
- right: Record<string, any>[]
11
- ): Record<string, any>[] {
12
- return [...left, ...right];
13
- }
14
- }
15
-
16
- export default UnionAll;
@@ -1,36 +0,0 @@
1
- import Expression from "../expressions/expression";
2
- import Operation from "./operation";
3
-
4
- class Unwind extends Operation {
5
- private _value: any;
6
- constructor(expression: Expression) {
7
- super();
8
- this.addChild(expression);
9
- }
10
- public get expression(): Expression {
11
- return this.children[0] as Expression;
12
- }
13
- public get as(): string {
14
- return this.children[1].value as unknown as string;
15
- }
16
- public async run(): Promise<void> {
17
- const expression = this.expression.value();
18
- if (expression === null || expression === undefined) {
19
- this.next?.reset();
20
- return;
21
- }
22
- if (!Array.isArray(expression)) {
23
- throw new Error("Expected array");
24
- }
25
- for (let i = 0; i < expression.length; i++) {
26
- this._value = expression[i];
27
- await this.next?.run();
28
- }
29
- this.next?.reset();
30
- }
31
- public value(): any {
32
- return this._value;
33
- }
34
- }
35
-
36
- export default Unwind;
@@ -1,42 +0,0 @@
1
- import Expression from "../expressions/expression";
2
- import Operation from "./operation";
3
-
4
- /**
5
- * Represents a WHERE operation that filters data based on a condition.
6
- *
7
- * The WHERE operation evaluates a boolean expression and only continues
8
- * execution to the next operation if the condition is true.
9
- *
10
- * @example
11
- * ```typescript
12
- * // RETURN x WHERE x > 0
13
- * ```
14
- */
15
- class Where extends Operation {
16
- /**
17
- * Creates a new WHERE operation with the given condition.
18
- *
19
- * @param expression - The boolean expression to evaluate
20
- */
21
- constructor(expression: Expression) {
22
- super();
23
- this.addChild(expression);
24
- }
25
- public get expression(): Expression {
26
- return this.children[0] as Expression;
27
- }
28
- public async run(): Promise<void> {
29
- for (const pattern of this.expression.patterns()) {
30
- await pattern.fetchData();
31
- await pattern.evaluate();
32
- }
33
- if (this.expression.value()) {
34
- await this.next?.run();
35
- }
36
- }
37
- public value(): any {
38
- return this.expression.value();
39
- }
40
- }
41
-
42
- export default Where;
@@ -1,20 +0,0 @@
1
- import Projection from "./projection";
2
-
3
- /**
4
- * Represents a WITH operation that defines variables or intermediate results.
5
- *
6
- * The WITH operation creates named expressions that can be referenced later in the query.
7
- * It passes control to the next operation in the chain.
8
- *
9
- * @example
10
- * ```typescript
11
- * // WITH x = 1, y = 2 RETURN x + y
12
- * ```
13
- */
14
- class With extends Projection {
15
- public async run(): Promise<void> {
16
- await this.next?.run();
17
- }
18
- }
19
-
20
- export default With;