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,84 +0,0 @@
1
- """Base class for parsers providing common token manipulation functionality."""
2
-
3
- from typing import List, Optional
4
-
5
- from ..tokenization.token import Token
6
- from ..tokenization.tokenizer import Tokenizer
7
-
8
-
9
- class BaseParser:
10
- """Base class for parsers providing common token manipulation functionality.
11
-
12
- This class handles tokenization and provides utility methods for navigating
13
- through tokens, peeking ahead, and checking token sequences.
14
- """
15
-
16
- def __init__(self, tokens: Optional[List[Token]] = None):
17
- self._tokens: List[Token] = tokens or []
18
- self._token_index: int = 0
19
-
20
- def tokenize(self, statement: str) -> None:
21
- """Tokenizes a statement and initializes the token array.
22
-
23
- Args:
24
- statement: The input statement to tokenize
25
- """
26
- self._tokens = Tokenizer(statement).tokenize()
27
- self._token_index = 0
28
-
29
- def set_next_token(self) -> None:
30
- """Advances to the next token in the sequence."""
31
- self._token_index += 1
32
-
33
- def peek(self) -> Optional[Token]:
34
- """Peeks at the next token without advancing the current position.
35
-
36
- Returns:
37
- The next token, or None if at the end of the token stream
38
- """
39
- if self._token_index + 1 >= len(self._tokens):
40
- return None
41
- return self._tokens[self._token_index + 1]
42
-
43
- def ahead(self, tokens: List[Token], skip_whitespace_and_comments: bool = True) -> bool:
44
- """Checks if a sequence of tokens appears ahead in the token stream.
45
-
46
- Args:
47
- tokens: The sequence of tokens to look for
48
- skip_whitespace_and_comments: Whether to skip whitespace and comments when matching
49
-
50
- Returns:
51
- True if the token sequence is found ahead, False otherwise
52
- """
53
- j = 0
54
- for i in range(self._token_index, len(self._tokens)):
55
- if skip_whitespace_and_comments and self._tokens[i].is_whitespace_or_comment():
56
- continue
57
- if not self._tokens[i].equals(tokens[j]):
58
- return False
59
- j += 1
60
- if j == len(tokens):
61
- break
62
- return j == len(tokens)
63
-
64
- @property
65
- def token(self) -> Token:
66
- """Gets the current token.
67
-
68
- Returns:
69
- The current token, or EOF if at the end
70
- """
71
- if self._token_index >= len(self._tokens):
72
- return Token.EOF()
73
- return self._tokens[self._token_index]
74
-
75
- @property
76
- def previous_token(self) -> Token:
77
- """Gets the previous token.
78
-
79
- Returns:
80
- The previous token, or EOF if at the beginning
81
- """
82
- if self._token_index - 1 < 0:
83
- return Token.EOF()
84
- return self._tokens[self._token_index - 1]
@@ -1,19 +0,0 @@
1
- """Components module for FlowQuery parsing."""
2
-
3
- from .csv import CSV
4
- from .from_ import From
5
- from .headers import Headers
6
- from .json import JSON
7
- from .null import Null
8
- from .post import Post
9
- from .text import Text
10
-
11
- __all__ = [
12
- "CSV",
13
- "JSON",
14
- "Text",
15
- "From",
16
- "Headers",
17
- "Post",
18
- "Null",
19
- ]
@@ -1,8 +0,0 @@
1
- """CSV component node."""
2
-
3
- from ..ast_node import ASTNode
4
-
5
-
6
- class CSV(ASTNode):
7
- """Represents a CSV data type marker in LOAD operations."""
8
- pass
@@ -1,12 +0,0 @@
1
- """From component node."""
2
-
3
- from typing import Any
4
-
5
- from ..ast_node import ASTNode
6
-
7
-
8
- class From(ASTNode):
9
- """Represents a FROM clause in LOAD operations."""
10
-
11
- def value(self) -> Any:
12
- return self.children[0].value()
@@ -1,12 +0,0 @@
1
- """Headers component node."""
2
-
3
- from typing import Any, Dict
4
-
5
- from ..ast_node import ASTNode
6
-
7
-
8
- class Headers(ASTNode):
9
- """Represents a HEADERS clause in LOAD operations."""
10
-
11
- def value(self) -> Dict[str, Any]:
12
- return self.first_child().value() or {}
@@ -1,8 +0,0 @@
1
- """JSON component node."""
2
-
3
- from ..ast_node import ASTNode
4
-
5
-
6
- class JSON(ASTNode):
7
- """Represents a JSON data type marker in LOAD operations."""
8
- pass
@@ -1,10 +0,0 @@
1
- """Null component node."""
2
-
3
- from ..ast_node import ASTNode
4
-
5
-
6
- class Null(ASTNode):
7
- """Represents a NULL value in the AST."""
8
-
9
- def value(self) -> None:
10
- return None
@@ -1,8 +0,0 @@
1
- """Post component node."""
2
-
3
- from ..ast_node import ASTNode
4
-
5
-
6
- class Post(ASTNode):
7
- """Represents a POST clause in LOAD operations."""
8
- pass
@@ -1,8 +0,0 @@
1
- """Text component node."""
2
-
3
- from ..ast_node import ASTNode
4
-
5
-
6
- class Text(ASTNode):
7
- """Represents a Text data type marker in LOAD operations."""
8
- pass
@@ -1,50 +0,0 @@
1
- """Maintains a stack of AST nodes to track parsing context."""
2
-
3
- from typing import List, Optional, Type
4
-
5
- from .ast_node import ASTNode
6
-
7
-
8
- class Context:
9
- """Maintains a stack of AST nodes to track parsing context.
10
-
11
- Used during parsing to maintain the current context and check for specific node types
12
- in the parsing hierarchy, which helps with context-sensitive parsing decisions.
13
-
14
- Example:
15
- context = Context()
16
- context.push(node)
17
- has_return = context.contains_type(Return)
18
- """
19
-
20
- def __init__(self) -> None:
21
- self._nodes: List[ASTNode] = []
22
-
23
- def push(self, node: ASTNode) -> None:
24
- """Pushes a node onto the context stack.
25
-
26
- Args:
27
- node: The AST node to push
28
- """
29
- self._nodes.append(node)
30
-
31
- def pop(self) -> Optional[ASTNode]:
32
- """Pops the top node from the context stack.
33
-
34
- Returns:
35
- The popped node, or None if the stack is empty
36
- """
37
- if len(self._nodes) == 0:
38
- return None
39
- return self._nodes.pop()
40
-
41
- def contains_type(self, type_: Type[ASTNode]) -> bool:
42
- """Checks if the nodes stack contains a node of the specified type.
43
-
44
- Args:
45
- type_: The class of the node type to search for
46
-
47
- Returns:
48
- True if a node of the specified type is found in the stack, False otherwise
49
- """
50
- return any(isinstance(v, type_) for v in self._nodes)
@@ -1,15 +0,0 @@
1
- """Data structures module for FlowQuery parsing."""
2
-
3
- from .associative_array import AssociativeArray
4
- from .json_array import JSONArray
5
- from .key_value_pair import KeyValuePair
6
- from .lookup import Lookup
7
- from .range_lookup import RangeLookup
8
-
9
- __all__ = [
10
- "AssociativeArray",
11
- "JSONArray",
12
- "KeyValuePair",
13
- "Lookup",
14
- "RangeLookup",
15
- ]
@@ -1,41 +0,0 @@
1
- """Represents an associative array (object/dictionary) in the AST."""
2
-
3
- from typing import Any, Dict, Generator
4
-
5
- from ..ast_node import ASTNode
6
- from .key_value_pair import KeyValuePair
7
-
8
-
9
- class AssociativeArray(ASTNode):
10
- """Represents an associative array (object/dictionary) in the AST.
11
-
12
- Associative arrays map string keys to values, similar to JSON objects.
13
-
14
- Example:
15
- # For { name: "Alice", age: 30 }
16
- obj = AssociativeArray()
17
- obj.add_key_value(KeyValuePair("name", name_expr))
18
- obj.add_key_value(KeyValuePair("age", age_expr))
19
- """
20
-
21
- def add_key_value(self, key_value_pair: KeyValuePair) -> None:
22
- """Adds a key-value pair to the associative array.
23
-
24
- Args:
25
- key_value_pair: The key-value pair to add
26
- """
27
- self.add_child(key_value_pair)
28
-
29
- def __str__(self) -> str:
30
- return 'AssociativeArray'
31
-
32
- def _value(self) -> Generator[Dict[str, Any], None, None]:
33
- for child in self.children:
34
- if isinstance(child, KeyValuePair):
35
- yield {child.key: child._value}
36
-
37
- def value(self) -> Dict[str, Any]:
38
- result = {}
39
- for item in self._value():
40
- result.update(item)
41
- return result
@@ -1,30 +0,0 @@
1
- """Represents a JSON array in the AST."""
2
-
3
- from typing import Any, List
4
-
5
- from ..ast_node import ASTNode
6
-
7
-
8
- class JSONArray(ASTNode):
9
- """Represents a JSON array in the AST.
10
-
11
- JSON arrays are ordered collections of values.
12
-
13
- Example:
14
- # For [1, 2, 3]
15
- arr = JSONArray()
16
- arr.add_value(Number("1"))
17
- arr.add_value(Number("2"))
18
- arr.add_value(Number("3"))
19
- """
20
-
21
- def add_value(self, value: ASTNode) -> None:
22
- """Adds a value to the array.
23
-
24
- Args:
25
- value: The AST node representing the value to add
26
- """
27
- self.add_child(value)
28
-
29
- def value(self) -> List[Any]:
30
- return [child.value() for child in self.children]
@@ -1,38 +0,0 @@
1
- """Represents a key-value pair in an associative array."""
2
-
3
- from typing import Any
4
-
5
- from ..ast_node import ASTNode
6
- from ..expressions.string import String
7
-
8
-
9
- class KeyValuePair(ASTNode):
10
- """Represents a key-value pair in an associative array.
11
-
12
- Used to build object literals in FlowQuery.
13
-
14
- Example:
15
- kvp = KeyValuePair("name", String("Alice"))
16
- """
17
-
18
- def __init__(self, key: str, value: ASTNode):
19
- """Creates a new key-value pair.
20
-
21
- Args:
22
- key: The key string
23
- value: The AST node representing the value
24
- """
25
- super().__init__()
26
- self.add_child(String(key))
27
- self.add_child(value)
28
-
29
- @property
30
- def key(self) -> Any:
31
- return self.children[0].value()
32
-
33
- @property
34
- def _value(self) -> Any:
35
- return self.children[1].value()
36
-
37
- def __str__(self) -> str:
38
- return "KeyValuePair"
@@ -1,51 +0,0 @@
1
- """Represents a lookup operation (array/object indexing) in the AST."""
2
-
3
- from typing import Any
4
-
5
- from ..ast_node import ASTNode
6
-
7
-
8
- class Lookup(ASTNode):
9
- """Represents a lookup operation (array/object indexing) in the AST.
10
-
11
- Lookups access elements from arrays or properties from objects using an index or key.
12
-
13
- Example:
14
- # For array[0] or obj.property or obj["key"]
15
- lookup = Lookup()
16
- lookup.variable = array_or_obj_node
17
- lookup.index = index_node
18
- """
19
-
20
- @property
21
- def index(self) -> ASTNode:
22
- return self.children[0]
23
-
24
- @index.setter
25
- def index(self, index: ASTNode) -> None:
26
- self.add_child(index)
27
-
28
- @property
29
- def variable(self) -> ASTNode:
30
- return self.children[1]
31
-
32
- @variable.setter
33
- def variable(self, variable: ASTNode) -> None:
34
- self.add_child(variable)
35
-
36
- def is_operand(self) -> bool:
37
- return True
38
-
39
- def value(self) -> Any:
40
- obj = self.variable.value()
41
- if obj is None:
42
- return None
43
- key = self.index.value()
44
- # Try dict-like access first, then fall back to attribute access for objects
45
- try:
46
- return obj[key]
47
- except (TypeError, KeyError):
48
- # For objects with attributes (like dataclasses), use getattr
49
- if hasattr(obj, key):
50
- return getattr(obj, key)
51
- raise
@@ -1,42 +0,0 @@
1
- """Represents a range lookup operation in the AST."""
2
-
3
- from typing import Any
4
-
5
- from ..ast_node import ASTNode
6
-
7
-
8
- class RangeLookup(ASTNode):
9
- """Represents a range lookup (array slicing) operation in the AST."""
10
-
11
- @property
12
- def from_(self) -> ASTNode:
13
- return self.children[0]
14
-
15
- @from_.setter
16
- def from_(self, from_: ASTNode) -> None:
17
- self.add_child(from_)
18
-
19
- @property
20
- def to(self) -> ASTNode:
21
- return self.children[1]
22
-
23
- @to.setter
24
- def to(self, to: ASTNode) -> None:
25
- self.add_child(to)
26
-
27
- @property
28
- def variable(self) -> ASTNode:
29
- return self.children[2]
30
-
31
- @variable.setter
32
- def variable(self, variable: ASTNode) -> None:
33
- self.add_child(variable)
34
-
35
- def is_operand(self) -> bool:
36
- return True
37
-
38
- def value(self) -> Any:
39
- array = self.variable.value()
40
- from_val = self.from_.value() or 0
41
- to_val = self.to.value() or len(array)
42
- return array[from_val:to_val]
@@ -1,61 +0,0 @@
1
- """Expressions module for FlowQuery parsing."""
2
-
3
- from .boolean import Boolean
4
- from .expression import Expression
5
- from .expression_map import ExpressionMap
6
- from .f_string import FString
7
- from .identifier import Identifier
8
- from .number import Number
9
- from .operator import (
10
- Add,
11
- And,
12
- Divide,
13
- Equals,
14
- GreaterThan,
15
- GreaterThanOrEqual,
16
- In,
17
- Is,
18
- LessThan,
19
- LessThanOrEqual,
20
- Modulo,
21
- Multiply,
22
- Not,
23
- NotEquals,
24
- NotIn,
25
- Operator,
26
- Or,
27
- Power,
28
- Subtract,
29
- )
30
- from .reference import Reference
31
- from .string import String
32
-
33
- __all__ = [
34
- "Expression",
35
- "Boolean",
36
- "Number",
37
- "String",
38
- "Identifier",
39
- "Reference",
40
- "FString",
41
- "ExpressionMap",
42
- "Operator",
43
- "Add",
44
- "Subtract",
45
- "Multiply",
46
- "Divide",
47
- "Modulo",
48
- "Power",
49
- "Equals",
50
- "NotEquals",
51
- "GreaterThan",
52
- "LessThan",
53
- "GreaterThanOrEqual",
54
- "LessThanOrEqual",
55
- "And",
56
- "Or",
57
- "Not",
58
- "Is",
59
- "In",
60
- "NotIn",
61
- ]
@@ -1,20 +0,0 @@
1
- """Represents a boolean literal in the AST."""
2
-
3
- from ..ast_node import ASTNode
4
-
5
-
6
- class Boolean(ASTNode):
7
- """Represents a boolean literal in the AST."""
8
-
9
- def __init__(self, value: str):
10
- super().__init__()
11
- _value = value.upper()
12
- if _value == "TRUE":
13
- self._value = True
14
- elif _value == "FALSE":
15
- self._value = False
16
- else:
17
- raise ValueError(f"Invalid boolean value: {value}")
18
-
19
- def value(self) -> bool:
20
- return self._value
@@ -1,141 +0,0 @@
1
- """Represents an expression in the FlowQuery AST."""
2
-
3
- from __future__ import annotations
4
-
5
- from typing import TYPE_CHECKING, Any, Generator, List, Optional
6
-
7
- from ..ast_node import ASTNode
8
- from ..functions.aggregate_function import AggregateFunction
9
- from .reference import Reference
10
-
11
- if TYPE_CHECKING:
12
- from ...graph.pattern_expression import PatternExpression
13
-
14
-
15
- class Expression(ASTNode):
16
- """Represents an expression in the FlowQuery AST.
17
-
18
- Expressions are built using the Shunting Yard algorithm to handle operator
19
- precedence and associativity. They can contain operands (numbers, strings, identifiers)
20
- and operators (arithmetic, logical, comparison).
21
-
22
- Example:
23
- expr = Expression()
24
- expr.add_node(number_node)
25
- expr.add_node(plus_operator)
26
- expr.add_node(another_number_node)
27
- expr.finish()
28
- """
29
-
30
- def __init__(self) -> None:
31
- super().__init__()
32
- self._operators: List[ASTNode] = []
33
- self._output: List[ASTNode] = []
34
- self._alias: Optional[str] = None
35
- self._overridden: Any = None
36
- self._reducers: Optional[List['AggregateFunction']] = None
37
- self._patterns: Optional[List['PatternExpression']] = None
38
-
39
- def add_node(self, node: ASTNode) -> None:
40
- """Adds a node (operand or operator) to the expression.
41
-
42
- Uses the Shunting Yard algorithm to maintain correct operator precedence.
43
-
44
- Args:
45
- node: The AST node to add (operand or operator)
46
- """
47
- # Implements the Shunting Yard algorithm
48
- if node.is_operand():
49
- self._output.append(node)
50
- elif node.is_operator():
51
- operator1 = node
52
- while len(self._operators) > 0:
53
- operator2 = self._operators[-1]
54
- if (operator2.precedence > operator1.precedence or
55
- (operator2.precedence == operator1.precedence and operator1.left_associative)):
56
- self._output.append(operator2)
57
- self._operators.pop()
58
- else:
59
- break
60
- self._operators.append(operator1)
61
-
62
- def finish(self) -> None:
63
- """Finalizes the expression by converting it to a tree structure.
64
-
65
- Should be called after all nodes have been added.
66
- """
67
- while self._operators:
68
- self._output.append(self._operators.pop())
69
- self.add_child(self._to_tree())
70
-
71
- def _to_tree(self) -> ASTNode:
72
- if not self._output:
73
- return ASTNode()
74
- node = self._output.pop()
75
- if node.is_operator():
76
- rhs = self._to_tree()
77
- lhs = self._to_tree()
78
- node.add_child(lhs)
79
- node.add_child(rhs)
80
- return node
81
-
82
- def nodes_added(self) -> bool:
83
- return len(self._operators) > 0 or len(self._output) > 0
84
-
85
- def value(self) -> Any:
86
- if self._overridden is not None:
87
- return self._overridden
88
- if self.child_count() != 1:
89
- raise ValueError("Expected one child")
90
- return self.children[0].value()
91
-
92
- def set_alias(self, alias: str) -> None:
93
- self._alias = alias
94
-
95
- @property
96
- def alias(self) -> Optional[str]:
97
- first = self.first_child()
98
- if isinstance(first, Reference) and self._alias is None:
99
- return first.identifier
100
- return self._alias
101
-
102
- @alias.setter
103
- def alias(self, value: str) -> None:
104
- self._alias = value
105
-
106
- def __str__(self) -> str:
107
- if self._alias is not None:
108
- return f"Expression ({self._alias})"
109
- return "Expression"
110
-
111
- def reducers(self) -> List['AggregateFunction']:
112
- from ..functions.aggregate_function import AggregateFunction
113
- if self._reducers is None:
114
- self._reducers = list(self._extract(self, AggregateFunction))
115
- return self._reducers
116
-
117
- def patterns(self) -> List['PatternExpression']:
118
- from ...graph.pattern_expression import PatternExpression
119
- if self._patterns is None:
120
- self._patterns = list(self._extract(self, PatternExpression))
121
- return self._patterns
122
-
123
- def _extract(self, node: ASTNode, of_type: type) -> Generator[Any, None, None]:
124
- if isinstance(node, of_type):
125
- yield node
126
- for child in node.get_children():
127
- yield from self._extract(child, of_type)
128
-
129
- def mappable(self) -> bool:
130
- return len(self.reducers()) == 0
131
-
132
- def has_reducers(self) -> bool:
133
- return len(self.reducers()) > 0
134
-
135
- @property
136
- def overridden(self) -> Any:
137
- return self._overridden
138
-
139
- @overridden.setter
140
- def overridden(self, value: Any) -> None:
141
- self._overridden = value