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,26 +0,0 @@
1
- """Expression map for managing named expressions."""
2
-
3
- from __future__ import annotations
4
-
5
- from typing import Any, List, Optional
6
-
7
-
8
- class ExpressionMap:
9
- """Maps expression aliases to their corresponding Expression objects."""
10
-
11
- def __init__(self) -> None:
12
- self._map: dict[str, Any] = {}
13
-
14
- def get(self, alias: str) -> Optional[Any]:
15
- return self._map.get(alias)
16
-
17
- def has(self, alias: str) -> bool:
18
- return alias in self._map
19
-
20
- def set_map(self, expressions: List[Any]) -> None:
21
- self._map.clear()
22
- for expr in expressions:
23
- alias = getattr(expr, 'alias', None)
24
- if alias is None:
25
- continue
26
- self._map[alias] = expr
@@ -1,27 +0,0 @@
1
- """Represents a formatted string (f-string) in the AST."""
2
-
3
- from typing import TYPE_CHECKING
4
-
5
- from ..ast_node import ASTNode
6
-
7
- if TYPE_CHECKING:
8
- pass
9
-
10
-
11
- class FString(ASTNode):
12
- """Represents a formatted string (f-string) in the AST.
13
-
14
- F-strings allow embedding expressions within string literals.
15
- Child nodes represent the parts of the f-string (literal strings and expressions).
16
-
17
- Example:
18
- # For f"Hello {name}!"
19
- fstr = FString()
20
- fstr.add_child(String("Hello "))
21
- fstr.add_child(name_expression)
22
- fstr.add_child(String("!"))
23
- """
24
-
25
- def value(self) -> str:
26
- parts = self.get_children()
27
- return "".join(str(part.value()) for part in parts)
@@ -1,21 +0,0 @@
1
- """Represents an identifier in the AST."""
2
-
3
- from typing import Any
4
-
5
- from .string import String
6
-
7
-
8
- class Identifier(String):
9
- """Represents an identifier in the AST.
10
-
11
- Identifiers are used for variable names, property names, and similar constructs.
12
-
13
- Example:
14
- id = Identifier("myVariable")
15
- """
16
-
17
- def __str__(self) -> str:
18
- return f"Identifier ({self._value})"
19
-
20
- def value(self) -> Any:
21
- return super().value()
@@ -1,32 +0,0 @@
1
- """Represents a numeric literal in the AST."""
2
-
3
- from ..ast_node import ASTNode
4
-
5
-
6
- class Number(ASTNode):
7
- """Represents a numeric literal in the AST.
8
-
9
- Parses string representations of numbers into integer or float values.
10
-
11
- Example:
12
- num = Number("42")
13
- print(num.value()) # 42
14
- """
15
-
16
- def __init__(self, value: str):
17
- """Creates a new Number node by parsing the string value.
18
-
19
- Args:
20
- value: The string representation of the number
21
- """
22
- super().__init__()
23
- if '.' in value:
24
- self._value = float(value)
25
- else:
26
- self._value = int(value)
27
-
28
- def value(self) -> float | int:
29
- return self._value
30
-
31
- def __str__(self) -> str:
32
- return f"{self.__class__.__name__} ({self._value})"
@@ -1,271 +0,0 @@
1
- """Operator classes for FlowQuery expressions."""
2
-
3
- from abc import ABC, abstractmethod
4
- from typing import Any
5
-
6
- from ..ast_node import ASTNode
7
-
8
-
9
- class Operator(ASTNode, ABC):
10
- """Base class for all operators in FlowQuery."""
11
-
12
- def __init__(self, precedence: int, left_associative: bool):
13
- super().__init__()
14
- self._precedence = precedence
15
- self._left_associative = left_associative
16
-
17
- def is_operator(self) -> bool:
18
- return True
19
-
20
- @property
21
- def precedence(self) -> int:
22
- return self._precedence
23
-
24
- @property
25
- def left_associative(self) -> bool:
26
- return self._left_associative
27
-
28
- @abstractmethod
29
- def value(self) -> Any:
30
- pass
31
-
32
- @property
33
- def lhs(self) -> ASTNode:
34
- return self.get_children()[0]
35
-
36
- @property
37
- def rhs(self) -> ASTNode:
38
- return self.get_children()[1]
39
-
40
-
41
- class Add(Operator):
42
- def __init__(self) -> None:
43
- super().__init__(1, True)
44
-
45
- def value(self) -> Any:
46
- return self.lhs.value() + self.rhs.value()
47
-
48
-
49
- class Subtract(Operator):
50
- def __init__(self) -> None:
51
- super().__init__(1, True)
52
-
53
- def value(self) -> Any:
54
- return self.lhs.value() - self.rhs.value()
55
-
56
-
57
- class Multiply(Operator):
58
- def __init__(self) -> None:
59
- super().__init__(2, True)
60
-
61
- def value(self) -> Any:
62
- return self.lhs.value() * self.rhs.value()
63
-
64
-
65
- class Divide(Operator):
66
- def __init__(self) -> None:
67
- super().__init__(2, True)
68
-
69
- def value(self) -> Any:
70
- return self.lhs.value() / self.rhs.value()
71
-
72
-
73
- class Modulo(Operator):
74
- def __init__(self) -> None:
75
- super().__init__(2, True)
76
-
77
- def value(self) -> Any:
78
- return self.lhs.value() % self.rhs.value()
79
-
80
-
81
- class Power(Operator):
82
- def __init__(self) -> None:
83
- super().__init__(3, False)
84
-
85
- def value(self) -> Any:
86
- return self.lhs.value() ** self.rhs.value()
87
-
88
-
89
- class Equals(Operator):
90
- def __init__(self) -> None:
91
- super().__init__(0, True)
92
-
93
- def value(self) -> int:
94
- return 1 if self.lhs.value() == self.rhs.value() else 0
95
-
96
-
97
- class NotEquals(Operator):
98
- def __init__(self) -> None:
99
- super().__init__(0, True)
100
-
101
- def value(self) -> int:
102
- return 1 if self.lhs.value() != self.rhs.value() else 0
103
-
104
-
105
- class GreaterThan(Operator):
106
- def __init__(self) -> None:
107
- super().__init__(0, True)
108
-
109
- def value(self) -> int:
110
- return 1 if self.lhs.value() > self.rhs.value() else 0
111
-
112
-
113
- class LessThan(Operator):
114
- def __init__(self) -> None:
115
- super().__init__(0, True)
116
-
117
- def value(self) -> int:
118
- return 1 if self.lhs.value() < self.rhs.value() else 0
119
-
120
-
121
- class GreaterThanOrEqual(Operator):
122
- def __init__(self) -> None:
123
- super().__init__(0, True)
124
-
125
- def value(self) -> int:
126
- return 1 if self.lhs.value() >= self.rhs.value() else 0
127
-
128
-
129
- class LessThanOrEqual(Operator):
130
- def __init__(self) -> None:
131
- super().__init__(0, True)
132
-
133
- def value(self) -> int:
134
- return 1 if self.lhs.value() <= self.rhs.value() else 0
135
-
136
-
137
- class And(Operator):
138
- def __init__(self) -> None:
139
- super().__init__(-1, True)
140
-
141
- def value(self) -> int:
142
- return 1 if (self.lhs.value() and self.rhs.value()) else 0
143
-
144
-
145
- class Or(Operator):
146
- def __init__(self) -> None:
147
- super().__init__(-1, True)
148
-
149
- def value(self) -> int:
150
- return 1 if (self.lhs.value() or self.rhs.value()) else 0
151
-
152
-
153
- class Not(Operator):
154
- def __init__(self) -> None:
155
- super().__init__(0, True)
156
-
157
- def is_operator(self) -> bool:
158
- return False
159
-
160
- def value(self) -> int:
161
- return 1 if not self.lhs.value() else 0
162
-
163
-
164
- class Is(Operator):
165
- def __init__(self) -> None:
166
- super().__init__(0, True)
167
-
168
- def value(self) -> int:
169
- return 1 if self.lhs.value() == self.rhs.value() else 0
170
-
171
-
172
- class IsNot(Operator):
173
- def __init__(self) -> None:
174
- super().__init__(0, True)
175
-
176
- def value(self) -> int:
177
- return 1 if self.lhs.value() != self.rhs.value() else 0
178
-
179
-
180
- class In(Operator):
181
- def __init__(self) -> None:
182
- super().__init__(0, True)
183
-
184
- def value(self) -> int:
185
- lst = self.rhs.value()
186
- if not isinstance(lst, list):
187
- raise ValueError("Right operand of IN must be a list")
188
- return 1 if self.lhs.value() in lst else 0
189
-
190
-
191
- class NotIn(Operator):
192
- def __init__(self) -> None:
193
- super().__init__(0, True)
194
-
195
- def value(self) -> int:
196
- lst = self.rhs.value()
197
- if not isinstance(lst, list):
198
- raise ValueError("Right operand of NOT IN must be a list")
199
- return 0 if self.lhs.value() in lst else 1
200
-
201
-
202
- class Contains(Operator):
203
- def __init__(self) -> None:
204
- super().__init__(0, True)
205
-
206
- def value(self) -> int:
207
- s = self.lhs.value()
208
- search = self.rhs.value()
209
- if not isinstance(s, str) or not isinstance(search, str):
210
- raise ValueError("CONTAINS requires string operands")
211
- return 1 if search in s else 0
212
-
213
-
214
- class NotContains(Operator):
215
- def __init__(self) -> None:
216
- super().__init__(0, True)
217
-
218
- def value(self) -> int:
219
- s = self.lhs.value()
220
- search = self.rhs.value()
221
- if not isinstance(s, str) or not isinstance(search, str):
222
- raise ValueError("NOT CONTAINS requires string operands")
223
- return 0 if search in s else 1
224
-
225
-
226
- class StartsWith(Operator):
227
- def __init__(self) -> None:
228
- super().__init__(0, True)
229
-
230
- def value(self) -> int:
231
- s = self.lhs.value()
232
- search = self.rhs.value()
233
- if not isinstance(s, str) or not isinstance(search, str):
234
- raise ValueError("STARTS WITH requires string operands")
235
- return 1 if s.startswith(search) else 0
236
-
237
-
238
- class NotStartsWith(Operator):
239
- def __init__(self) -> None:
240
- super().__init__(0, True)
241
-
242
- def value(self) -> int:
243
- s = self.lhs.value()
244
- search = self.rhs.value()
245
- if not isinstance(s, str) or not isinstance(search, str):
246
- raise ValueError("NOT STARTS WITH requires string operands")
247
- return 0 if s.startswith(search) else 1
248
-
249
-
250
- class EndsWith(Operator):
251
- def __init__(self) -> None:
252
- super().__init__(0, True)
253
-
254
- def value(self) -> int:
255
- s = self.lhs.value()
256
- search = self.rhs.value()
257
- if not isinstance(s, str) or not isinstance(search, str):
258
- raise ValueError("ENDS WITH requires string operands")
259
- return 1 if s.endswith(search) else 0
260
-
261
-
262
- class NotEndsWith(Operator):
263
- def __init__(self) -> None:
264
- super().__init__(0, True)
265
-
266
- def value(self) -> int:
267
- s = self.lhs.value()
268
- search = self.rhs.value()
269
- if not isinstance(s, str) or not isinstance(search, str):
270
- raise ValueError("NOT ENDS WITH requires string operands")
271
- return 0 if s.endswith(search) else 1
@@ -1,47 +0,0 @@
1
- """Represents a reference to a previously defined variable or expression."""
2
-
3
- from typing import Any, Optional
4
-
5
- from ..ast_node import ASTNode
6
- from .identifier import Identifier
7
-
8
-
9
- class Reference(Identifier):
10
- """Represents a reference to a previously defined variable or expression.
11
-
12
- References point to values defined earlier in the query (e.g., in WITH or LOAD statements).
13
-
14
- Example:
15
- ref = Reference("myVar", previous_node)
16
- print(ref.value()) # Gets value from referred node
17
- """
18
-
19
- def __init__(self, value: str, referred: Optional[ASTNode] = None):
20
- """Creates a new Reference to a variable.
21
-
22
- Args:
23
- value: The identifier name
24
- referred: The node this reference points to (optional)
25
- """
26
- super().__init__(value)
27
- self._referred = referred
28
-
29
- @property
30
- def referred(self) -> Optional[ASTNode]:
31
- return self._referred
32
-
33
- @referred.setter
34
- def referred(self, node: ASTNode) -> None:
35
- self._referred = node
36
-
37
- def __str__(self) -> str:
38
- return f"Reference ({self._value})"
39
-
40
- def value(self) -> Any:
41
- if self._referred is not None:
42
- return self._referred.value()
43
- return None
44
-
45
- @property
46
- def identifier(self) -> str:
47
- return self._value
@@ -1,27 +0,0 @@
1
- """Represents a string literal in the AST."""
2
-
3
- from ..ast_node import ASTNode
4
-
5
-
6
- class String(ASTNode):
7
- """Represents a string literal in the AST.
8
-
9
- Example:
10
- s = String("hello")
11
- print(s.value()) # "hello"
12
- """
13
-
14
- def __init__(self, value: str):
15
- """Creates a new String node with the given value.
16
-
17
- Args:
18
- value: The string value
19
- """
20
- super().__init__()
21
- self._value = value
22
-
23
- def value(self) -> str:
24
- return self._value
25
-
26
- def __str__(self) -> str:
27
- return f"String ({self._value})"
@@ -1,127 +0,0 @@
1
- """Functions module for FlowQuery parsing."""
2
-
3
- from .aggregate_function import AggregateFunction
4
- from .async_function import AsyncFunction
5
- from .avg import Avg
6
- from .coalesce import Coalesce
7
- from .collect import Collect
8
- from .count import Count
9
- from .date_ import DateFunction
10
- from .datetime_ import Datetime
11
- from .duration import Duration
12
- from .element_id import ElementId
13
- from .function import Function
14
- from .function_factory import FunctionFactory
15
- from .function_metadata import (
16
- FunctionCategory,
17
- FunctionDef,
18
- FunctionDefOptions,
19
- FunctionMetadata,
20
- OutputSchema,
21
- ParameterSchema,
22
- get_function_metadata,
23
- get_registered_function_factory,
24
- get_registered_function_metadata,
25
- )
26
- from .functions import Functions
27
- from .head import Head
28
- from .id_ import Id
29
- from .join import Join
30
- from .keys import Keys
31
- from .last import Last
32
- from .localdatetime import LocalDatetime
33
- from .localtime import LocalTime
34
- from .max_ import Max
35
- from .min_ import Min
36
- from .nodes import Nodes
37
- from .predicate_function import PredicateFunction
38
- from .predicate_sum import PredicateSum
39
- from .properties import Properties
40
- from .rand import Rand
41
- from .range_ import Range
42
- from .reducer_element import ReducerElement
43
- from .relationships import Relationships
44
- from .replace import Replace
45
- from .round_ import Round
46
- from .schema import Schema
47
- from .size import Size
48
- from .split import Split
49
- from .string_distance import StringDistance
50
- from .stringify import Stringify
51
- from .substring import Substring
52
- from .sum import Sum
53
- from .tail import Tail
54
- from .time_ import Time
55
- from .timestamp import Timestamp
56
- from .to_float import ToFloat
57
- from .to_integer import ToInteger
58
- from .to_json import ToJson
59
- from .to_lower import ToLower
60
- from .to_string import ToString
61
- from .trim import Trim
62
- from .type_ import Type
63
- from .value_holder import ValueHolder
64
-
65
- __all__ = [
66
- # Base classes
67
- "Function",
68
- "AggregateFunction",
69
- "AsyncFunction",
70
- "PredicateFunction",
71
- "ReducerElement",
72
- "ValueHolder",
73
- "FunctionCategory",
74
- "ParameterSchema",
75
- "OutputSchema",
76
- "FunctionMetadata",
77
- "FunctionDef",
78
- "FunctionDefOptions",
79
- "get_registered_function_metadata",
80
- "get_registered_function_factory",
81
- "get_function_metadata",
82
- "FunctionFactory",
83
- # Built-in functions
84
- "Sum",
85
- "Avg",
86
- "DateFunction",
87
- "Datetime",
88
- "Coalesce",
89
- "Collect",
90
- "Count",
91
- "Duration",
92
- "ElementId",
93
- "Head",
94
- "Id",
95
- "Join",
96
- "Last",
97
- "Keys",
98
- "Max",
99
- "Min",
100
- "Nodes",
101
- "Properties",
102
- "Relationships",
103
- "Rand",
104
- "Range",
105
- "Replace",
106
- "Round",
107
- "Size",
108
- "Split",
109
- "StringDistance",
110
- "Stringify",
111
- "Substring",
112
- "Tail",
113
- "Time",
114
- "Timestamp",
115
- "ToFloat",
116
- "ToInteger",
117
- "ToJson",
118
- "ToLower",
119
- "ToString",
120
- "Trim",
121
- "Type",
122
- "LocalDatetime",
123
- "LocalTime",
124
- "Functions",
125
- "Schema",
126
- "PredicateSum",
127
- ]
@@ -1,60 +0,0 @@
1
- """Base class for aggregate functions that reduce multiple values to a single value."""
2
-
3
- from typing import Any, Optional
4
-
5
- from .function import Function
6
- from .reducer_element import ReducerElement
7
-
8
-
9
- class AggregateFunction(Function):
10
- """Base class for aggregate functions that reduce multiple values to a single value.
11
-
12
- Aggregate functions like SUM, AVG, and COLLECT process multiple input values
13
- and produce a single output. They cannot be nested within other aggregate functions.
14
-
15
- Example:
16
- sum_func = Sum()
17
- # Used in: RETURN SUM(values)
18
- """
19
-
20
- def __init__(self, name: Optional[str] = None):
21
- """Creates a new AggregateFunction with the given name.
22
-
23
- Args:
24
- name: The function name
25
- """
26
- super().__init__(name)
27
- self._overridden: Any = None
28
-
29
- def reduce(self, value: Any) -> None:
30
- """Processes a value during the aggregation phase.
31
-
32
- Args:
33
- value: The element to aggregate
34
-
35
- Raises:
36
- NotImplementedError: If not implemented by subclass
37
- """
38
- raise NotImplementedError("Method not implemented.")
39
-
40
- def element(self) -> ReducerElement:
41
- """Creates a reducer element for this aggregate function.
42
-
43
- Returns:
44
- A ReducerElement instance
45
-
46
- Raises:
47
- NotImplementedError: If not implemented by subclass
48
- """
49
- raise NotImplementedError("Method not implemented.")
50
-
51
- @property
52
- def overridden(self) -> Any:
53
- return self._overridden
54
-
55
- @overridden.setter
56
- def overridden(self, value: Any) -> None:
57
- self._overridden = value
58
-
59
- def value(self) -> Any:
60
- return self._overridden
@@ -1,65 +0,0 @@
1
- """Represents an async data provider function call for use in LOAD operations."""
2
-
3
- from typing import Any, AsyncGenerator, List
4
-
5
- from ..ast_node import ASTNode
6
- from .function import Function
7
-
8
-
9
- class AsyncFunction(Function):
10
- """Represents an async data provider function call for use in LOAD operations.
11
-
12
- This class holds the function name and arguments, and provides async iteration
13
- over the results from a registered async data provider.
14
-
15
- Example:
16
- # Used in: LOAD JSON FROM myDataSource('arg1', 'arg2') AS data
17
- async_func = AsyncFunction("myDataSource")
18
- async_func.parameters = [arg1_node, arg2_node]
19
- async for item in async_func.execute():
20
- print(item)
21
- """
22
-
23
- @property
24
- def parameters(self) -> List[ASTNode]:
25
- return self.children
26
-
27
- @parameters.setter
28
- def parameters(self, nodes: List[ASTNode]) -> None:
29
- """Sets the function parameters.
30
-
31
- Args:
32
- nodes: Array of AST nodes representing the function arguments
33
- """
34
- self.children = nodes
35
-
36
- def get_arguments(self) -> List[Any]:
37
- """Evaluates all parameters and returns their values.
38
- Used by the framework to pass arguments to generate().
39
-
40
- Returns:
41
- Array of parameter values
42
- """
43
- return [child.value() for child in self.children]
44
-
45
- async def generate(self, *args: Any) -> AsyncGenerator[Any, None]:
46
- """Generates the async data provider function results.
47
-
48
- Subclasses override this method with their own typed parameters.
49
- The framework automatically evaluates the AST children and spreads
50
- them as arguments when calling this method.
51
-
52
- Args:
53
- args: Arguments passed from the query (e.g., myFunc(arg1, arg2))
54
-
55
- Yields:
56
- Data items from the async provider
57
-
58
- Raises:
59
- NotImplementedError: If the function is not registered as an async provider
60
- """
61
- raise NotImplementedError("generate method must be overridden in subclasses.")
62
- # Note: yield is here only to make this a generator function
63
- # It will never be reached due to the raise above
64
- if False: # pragma: no cover
65
- yield # Make this a generator