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,143 +0,0 @@
1
- """Graph node representation for FlowQuery."""
2
-
3
- from __future__ import annotations
4
-
5
- from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, Optional, Union
6
-
7
- from ..parsing.ast_node import ASTNode
8
- from ..parsing.expressions.expression import Expression
9
- from .node_data import NodeData, NodeRecord
10
-
11
- if TYPE_CHECKING:
12
- from .relationship import Relationship
13
-
14
-
15
- class Node(ASTNode):
16
- """Represents a node in a graph pattern."""
17
-
18
- def __init__(
19
- self,
20
- identifier: Optional[str] = None,
21
- label: Optional[str] = None
22
- ):
23
- super().__init__()
24
- self._identifier = identifier
25
- self._label = label
26
- self._properties: Dict[str, Expression] = {}
27
- self._value: Optional['NodeRecord'] = None
28
- self._incoming: Optional['Relationship'] = None
29
- self._outgoing: Optional['Relationship'] = None
30
- self._data: Optional['NodeData'] = None
31
- self._todo_next: Optional[Callable[[], Union[None, Awaitable[None]]]] = None
32
-
33
- @property
34
- def identifier(self) -> Optional[str]:
35
- return self._identifier
36
-
37
- @identifier.setter
38
- def identifier(self, value: str) -> None:
39
- self._identifier = value
40
-
41
- @property
42
- def label(self) -> Optional[str]:
43
- return self._label
44
-
45
- @label.setter
46
- def label(self, value: Optional[str]) -> None:
47
- self._label = value
48
-
49
- @property
50
- def properties(self) -> Dict[str, Expression]:
51
- return self._properties
52
-
53
- @properties.setter
54
- def properties(self, value: Dict[str, Expression]) -> None:
55
- self._properties = value
56
-
57
- def set_property(self, key: str, value: Expression) -> None:
58
- self._properties[key] = value
59
-
60
- def get_property(self, key: str) -> Optional[Expression]:
61
- return self._properties.get(key)
62
-
63
- def _matches_properties(self, hop: int = 0) -> bool:
64
- """Check if current record matches all constraint properties."""
65
- if not self._properties:
66
- return True
67
- if self._data is None:
68
- return True
69
- for key, expression in self._properties.items():
70
- record = self._data.current(hop)
71
- if record is None:
72
- raise ValueError("No current node data available")
73
- if key not in record:
74
- raise ValueError("Node does not have property")
75
- return bool(record[key] == expression.value())
76
- return True
77
-
78
- def set_value(self, value: Optional[Dict[str, Any]]) -> None:
79
- self._value = value # type: ignore[assignment]
80
-
81
- def value(self) -> Optional['NodeRecord']:
82
- return self._value
83
-
84
- @property
85
- def outgoing(self) -> Optional['Relationship']:
86
- return self._outgoing
87
-
88
- @outgoing.setter
89
- def outgoing(self, relationship: Optional['Relationship']) -> None:
90
- self._outgoing = relationship
91
-
92
- @property
93
- def incoming(self) -> Optional['Relationship']:
94
- return self._incoming
95
-
96
- @incoming.setter
97
- def incoming(self, relationship: Optional['Relationship']) -> None:
98
- self._incoming = relationship
99
-
100
- def set_data(self, data: Optional['NodeData']) -> None:
101
- self._data = data
102
-
103
- async def next(self) -> None:
104
- if self._data:
105
- self._data.reset()
106
- while self._data.next():
107
- current = self._data.current()
108
- if current is not None:
109
- self.set_value(current)
110
- if not self._matches_properties():
111
- continue
112
- if self._outgoing and self._value:
113
- await self._outgoing.find(self._value['id'])
114
- await self.run_todo_next()
115
-
116
- async def find(self, id_: str, hop: int = 0) -> None:
117
- if self._data:
118
- self._data.reset()
119
- while self._data.find(id_, hop):
120
- current = self._data.current(hop)
121
- if current is not None:
122
- self.set_value(current)
123
- if not self._matches_properties(hop):
124
- continue
125
- if self._incoming:
126
- self._incoming.set_end_node(self)
127
- if self._outgoing and self._value:
128
- await self._outgoing.find(self._value['id'], hop)
129
- await self.run_todo_next()
130
-
131
- @property
132
- def todo_next(self) -> Optional[Callable[[], Union[None, Awaitable[None]]]]:
133
- return self._todo_next
134
-
135
- @todo_next.setter
136
- def todo_next(self, func: Optional[Callable[[], Union[None, Awaitable[None]]]]) -> None:
137
- self._todo_next = func
138
-
139
- async def run_todo_next(self) -> None:
140
- if self._todo_next:
141
- result = self._todo_next()
142
- if result is not None:
143
- await result
@@ -1,26 +0,0 @@
1
- """Node data class for FlowQuery."""
2
-
3
- from typing import Any, Dict, List, Optional, TypedDict
4
-
5
- from .data import Data
6
-
7
-
8
- class NodeRecord(TypedDict, total=False):
9
- """Represents a node record from the database."""
10
- id: str
11
-
12
-
13
- class NodeData(Data):
14
- """Node data class extending Data with ID-based indexing."""
15
-
16
- def __init__(self, records: Optional[List[Dict[str, Any]]] = None):
17
- super().__init__(records)
18
- self._build_index("id")
19
-
20
- def find(self, id_: str, hop: int = 0) -> bool:
21
- """Find a record by ID."""
22
- return self._find(id_, hop, "id")
23
-
24
- def current(self, hop: int = 0) -> Optional[Dict[str, Any]]:
25
- """Get the current record."""
26
- return super().current(hop)
@@ -1,50 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from typing import Any, Optional
4
-
5
- from ..parsing.ast_node import ASTNode
6
- from .node import Node
7
-
8
-
9
- class NodeReference(Node):
10
- """Represents a reference to an existing node variable."""
11
-
12
- def __init__(self, base: Node, reference: ASTNode) -> None:
13
- super().__init__(base.identifier, base.label)
14
- self._reference: ASTNode = reference
15
- # Copy properties from base
16
- self._properties = base._properties
17
- self._outgoing = base.outgoing
18
- self._incoming = base.incoming
19
-
20
- @property
21
- def reference(self) -> ASTNode:
22
- return self._reference
23
-
24
- # Keep referred as alias for backward compatibility
25
- @property
26
- def referred(self) -> ASTNode:
27
- return self._reference
28
-
29
- def value(self) -> Optional[Any]:
30
- return self._reference.value() if self._reference else None
31
-
32
- async def next(self) -> None:
33
- """Process next using the referenced node's value."""
34
- ref_value = self._reference.value()
35
- if ref_value is None:
36
- return
37
- self.set_value(dict(ref_value))
38
- if self._outgoing and self._value:
39
- await self._outgoing.find(self._value['id'])
40
- await self.run_todo_next()
41
-
42
- async def find(self, id_: str, hop: int = 0) -> None:
43
- """Find by ID, only matching if it equals the referenced node's ID."""
44
- referenced = self._reference.value()
45
- if referenced is None or id_ != referenced.get('id'):
46
- return
47
- self.set_value(dict(referenced))
48
- if self._outgoing and self._value:
49
- await self._outgoing.find(self._value['id'], hop)
50
- await self.run_todo_next()
@@ -1,115 +0,0 @@
1
- """Graph pattern representation for FlowQuery."""
2
-
3
- from __future__ import annotations
4
-
5
- from typing import Any, Generator, List, Optional, Sequence, Union
6
-
7
- from ..parsing.ast_node import ASTNode
8
- from .database import Database
9
- from .node import Node
10
- from .node_data import NodeData
11
- from .relationship import Relationship
12
- from .relationship_data import RelationshipData
13
-
14
-
15
- class Pattern(ASTNode):
16
- """Represents a graph pattern for matching."""
17
-
18
- def __init__(self) -> None:
19
- super().__init__()
20
- self._identifier: Optional[str] = None
21
- self._chain: List[Union['Node', 'Relationship']] = []
22
-
23
- @property
24
- def identifier(self) -> Optional[str]:
25
- return self._identifier
26
-
27
- @identifier.setter
28
- def identifier(self, value: str) -> None:
29
- self._identifier = value
30
-
31
- @property
32
- def chain(self) -> List[Union['Node', 'Relationship']]:
33
- return self._chain
34
-
35
- @property
36
- def elements(self) -> Sequence[ASTNode]:
37
- return self._chain
38
-
39
- def add_element(self, element: Union['Node', 'Relationship']) -> None:
40
- if (len(self._chain) > 0 and
41
- type(self._chain[-1]) is type(element)):
42
- raise ValueError("Cannot add two consecutive elements of the same type to the graph pattern")
43
-
44
- if len(self._chain) > 0:
45
- last = self._chain[-1]
46
- if isinstance(last, Node) and isinstance(element, Relationship):
47
- last.outgoing = element
48
- element.source = last
49
- if isinstance(last, Relationship) and isinstance(element, Node):
50
- last.target = element
51
- element.incoming = last
52
-
53
- self._chain.append(element)
54
- self.add_child(element)
55
-
56
- @property
57
- def start_node(self) -> 'Node':
58
- if len(self._chain) == 0:
59
- raise ValueError("Pattern is empty")
60
- first = self._chain[0]
61
- if isinstance(first, Node):
62
- return first
63
- raise ValueError("Pattern does not start with a node")
64
-
65
- @property
66
- def end_node(self) -> 'Node':
67
- if len(self._chain) == 0:
68
- raise ValueError("Pattern is empty")
69
- last = self._chain[-1]
70
- if isinstance(last, Node):
71
- return last
72
- raise ValueError("Pattern does not end with a node")
73
-
74
- def first_node(self) -> Optional[Union['Node', 'Relationship']]:
75
- if len(self._chain) > 0:
76
- return self._chain[0]
77
- return None
78
-
79
- def value(self) -> List[Any]:
80
- return list(self.values())
81
-
82
- def values(self) -> Generator[Any, None, None]:
83
- for i, element in enumerate(self._chain):
84
- if isinstance(element, Node):
85
- # Skip node if previous element was a zero-hop relationship (no matches)
86
- prev = self._chain[i-1] if i > 0 else None
87
- if isinstance(prev, Relationship) and len(prev.matches) == 0:
88
- continue
89
- yield element.value()
90
- elif isinstance(element, Relationship):
91
- for j, match in enumerate(element.matches):
92
- yield match
93
- if j < len(element.matches) - 1:
94
- yield match["endNode"]
95
-
96
- async def fetch_data(self) -> None:
97
- """Loads data from the database for all elements."""
98
- db = Database.get_instance()
99
- for element in self._chain:
100
- # Use type name comparison to avoid issues with module double-loading
101
- if type(element).__name__ in ('NodeReference', 'RelationshipReference'):
102
- continue
103
- data = await db.get_data(element)
104
- if isinstance(element, Node) and isinstance(data, NodeData):
105
- element.set_data(data)
106
- elif isinstance(element, Relationship) and isinstance(data, RelationshipData):
107
- element.set_data(data)
108
-
109
- async def initialize(self) -> None:
110
- await self.fetch_data()
111
-
112
- async def traverse(self) -> None:
113
- first = self.first_node()
114
- if first and isinstance(first, Node):
115
- await first.next()
@@ -1,67 +0,0 @@
1
- """Pattern expression for FlowQuery."""
2
-
3
- from typing import Any, Union
4
-
5
- from ..parsing.ast_node import ASTNode
6
- from .node import Node
7
- from .node_reference import NodeReference
8
- from .pattern import Pattern
9
- from .relationship import Relationship
10
-
11
-
12
- class PatternExpression(Pattern):
13
- """Represents a pattern expression that can be evaluated.
14
-
15
- PatternExpression is used in WHERE clauses to test whether a graph pattern
16
- exists. It evaluates to True if the pattern is matched, False otherwise.
17
- """
18
-
19
- def __init__(self) -> None:
20
- super().__init__()
21
- self._fetched: bool = False
22
- self._evaluation: bool = False
23
-
24
- def add_element(self, element: Union[Node, Relationship]) -> None:
25
- super().add_element(element)
26
-
27
- def verify(self) -> None:
28
- if(len(self._chain) == 0):
29
- raise ValueError("PatternExpression cannot be empty")
30
- if not(any(isinstance(el, NodeReference) for el in self._chain if isinstance(el, ASTNode))):
31
- raise ValueError("PatternExpression must contain at least one NodeReference")
32
-
33
- @property
34
- def identifier(self) -> None:
35
- return None
36
-
37
- @identifier.setter
38
- def identifier(self, value: str) -> None:
39
- raise ValueError("Cannot set identifier on PatternExpression")
40
-
41
- async def fetch_data(self) -> None:
42
- """Fetches data for the pattern expression with caching."""
43
- if self._fetched:
44
- return
45
- await super().fetch_data()
46
- self._fetched = True
47
-
48
- async def evaluate(self) -> None:
49
- """Evaluates the pattern expression by traversing the graph.
50
-
51
- Sets _evaluation to True if the pattern is matched, False otherwise.
52
- """
53
- self._evaluation = False
54
-
55
- async def set_evaluation_true() -> None:
56
- self._evaluation = True
57
-
58
- self.end_node.todo_next = set_evaluation_true
59
- await self.start_node.next()
60
-
61
- def value(self) -> Any:
62
- """Returns the result of the pattern evaluation."""
63
- return self._evaluation
64
-
65
- def is_operand(self) -> bool:
66
- """PatternExpression is an operand in expressions."""
67
- return True
@@ -1,42 +0,0 @@
1
- """Collection of graph patterns for FlowQuery."""
2
-
3
- from typing import Awaitable, Callable, List, Optional
4
-
5
- from .pattern import Pattern
6
-
7
-
8
- class Patterns:
9
- """Manages a collection of graph patterns."""
10
-
11
- def __init__(self, patterns: Optional[List[Pattern]] = None) -> None:
12
- self._patterns = patterns or []
13
- self._to_do_next: Optional[Callable[[], Awaitable[None]]] = None
14
-
15
- @property
16
- def patterns(self) -> List[Pattern]:
17
- return self._patterns
18
-
19
- @property
20
- def to_do_next(self) -> Optional[Callable[[], Awaitable[None]]]:
21
- return self._to_do_next
22
-
23
- @to_do_next.setter
24
- def to_do_next(self, func: Optional[Callable[[], Awaitable[None]]]) -> None:
25
- self._to_do_next = func
26
- if self._patterns:
27
- self._patterns[-1].end_node.todo_next = func
28
-
29
- async def initialize(self) -> None:
30
- previous: Optional[Pattern] = None
31
- for pattern in self._patterns:
32
- await pattern.fetch_data() # Ensure data is loaded
33
- if previous is not None:
34
- # Chain the patterns together
35
- async def next_pattern_start(p: Pattern = pattern) -> None:
36
- await p.start_node.next()
37
- previous.end_node.todo_next = next_pattern_start
38
- previous = pattern
39
-
40
- async def traverse(self) -> None:
41
- if self._patterns:
42
- await self._patterns[0].start_node.next()
@@ -1,41 +0,0 @@
1
- """Physical node representation for FlowQuery."""
2
-
3
- from __future__ import annotations
4
-
5
- from typing import Any, Dict, List, Optional
6
-
7
- from ..parsing.ast_node import ASTNode
8
- from .node import Node
9
-
10
-
11
- class PhysicalNode(Node):
12
- """Represents a physical node in the graph database."""
13
-
14
- def __init__(self, id_: Optional[str], label: str, properties: Optional[Dict[str, Any]] = None):
15
- super().__init__(id_, label)
16
- # Store additional physical properties in a separate dict
17
- # (Node.properties is for Expression-based pattern properties)
18
- self._physical_properties = properties or {}
19
- self._statement: Optional["ASTNode"] = None
20
-
21
- @property
22
- def physical_properties(self) -> Dict[str, Any]:
23
- """Get the physical properties (values, not expressions)."""
24
- return self._physical_properties
25
-
26
- @property
27
- def statement(self) -> Optional["ASTNode"]:
28
- return self._statement
29
-
30
- @statement.setter
31
- def statement(self, value: Optional["ASTNode"]) -> None:
32
- self._statement = value
33
-
34
- async def data(self) -> List[Dict[str, Any]]:
35
- if self._statement is None:
36
- raise ValueError("Statement is null")
37
- # Import at runtime to avoid circular dependency
38
- from ..compute.runner import Runner
39
- runner = Runner(ast=self._statement)
40
- await runner.run()
41
- return runner.results
@@ -1,36 +0,0 @@
1
- """Physical relationship representation for FlowQuery."""
2
-
3
- from __future__ import annotations
4
-
5
- from typing import Any, Dict, List, Optional
6
-
7
- from ..parsing.ast_node import ASTNode
8
- from .relationship import Relationship
9
-
10
-
11
- class PhysicalRelationship(Relationship):
12
- """Represents a physical relationship in the graph database."""
13
-
14
- def __init__(self) -> None:
15
- super().__init__()
16
- self._statement: Optional[ASTNode] = None
17
-
18
- @property
19
- def statement(self) -> Optional[ASTNode]:
20
- """Get the statement for this relationship."""
21
- return self._statement
22
-
23
- @statement.setter
24
- def statement(self, value: Optional[ASTNode]) -> None:
25
- """Set the statement for this relationship."""
26
- self._statement = value
27
-
28
- async def data(self) -> List[Dict[str, Any]]:
29
- """Execute the statement and return results."""
30
- if self._statement is None:
31
- raise ValueError("Statement is null")
32
- # Import at runtime to avoid circular dependency
33
- from ..compute.runner import Runner
34
- runner = Runner(None, self._statement)
35
- await runner.run()
36
- return runner.results