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,167 +0,0 @@
1
- import ASTNode from "../parsing/ast_node";
2
- import Expression from "../parsing/expressions/expression";
3
- import Hops from "./hops";
4
- import Node from "./node";
5
- import RelationshipData, { RelationshipRecord } from "./relationship_data";
6
- import RelationshipMatchCollector, {
7
- RelationshipMatchRecord,
8
- } from "./relationship_match_collector";
9
-
10
- class Relationship extends ASTNode {
11
- protected _identifier: string | null = null;
12
- protected _types: string[] = [];
13
- protected _properties: Map<string, Expression> = new Map();
14
- protected _hops: Hops = new Hops();
15
-
16
- protected _value: RelationshipMatchRecord | RelationshipMatchRecord[] | null = null;
17
- protected _matches: RelationshipMatchCollector = new RelationshipMatchCollector();
18
-
19
- protected _source: Node | null = null;
20
- protected _target: Node | null = null;
21
- protected _direction: "left" | "right" = "right";
22
-
23
- private _data: RelationshipData | null = null;
24
-
25
- constructor(identifier: string | null = null, type: string | null = null) {
26
- super();
27
- this._identifier = identifier;
28
- if (type !== null) {
29
- this._types = [type];
30
- }
31
- }
32
- public set identifier(identifier: string) {
33
- this._identifier = identifier;
34
- }
35
- public get identifier(): string | null {
36
- return this._identifier;
37
- }
38
- public set type(type: string) {
39
- this._types = [type];
40
- }
41
- public get type(): string | null {
42
- return this._types.length > 0 ? this._types[0] : null;
43
- }
44
- public set types(types: string[]) {
45
- this._types = types;
46
- }
47
- public get types(): string[] {
48
- return this._types;
49
- }
50
- public get properties(): Map<string, Expression> {
51
- return this._properties;
52
- }
53
- public set properties(properties: Map<string, Expression>) {
54
- this._properties = properties;
55
- }
56
- private _matchesProperties(hop: number = 0): boolean {
57
- const data: RelationshipData = this._data!;
58
- for (const [key, expression] of this._properties) {
59
- const record: RelationshipRecord = data.current(hop)!;
60
- if (record === null) {
61
- throw new Error("No current relationship data available");
62
- }
63
- if (!(key in record)) {
64
- throw new Error("Relationship does not have property");
65
- }
66
- return record[key] === expression.value();
67
- }
68
- return true;
69
- }
70
- public setProperty(key: string, value: Expression): void {
71
- this._properties.set(key, value);
72
- }
73
- public getProperty(key: string): Expression | null {
74
- return this._properties.get(key) || null;
75
- }
76
- public set hops(hops: Hops) {
77
- this._hops = hops;
78
- }
79
- public get hops(): Hops | null {
80
- return this._hops;
81
- }
82
- public setValue(relationship: Relationship, traversalId: string = ""): void {
83
- const match: RelationshipMatchRecord = this._matches.push(relationship, traversalId);
84
- this._value = this._matches.value();
85
- }
86
- public set source(node: Node | null) {
87
- this._source = node;
88
- }
89
- public get source(): Node | null {
90
- return this._source;
91
- }
92
- public set target(node: Node | null) {
93
- this._target = node;
94
- }
95
- public get target(): Node | null {
96
- return this._target;
97
- }
98
- public set direction(direction: "left" | "right") {
99
- this._direction = direction;
100
- }
101
- public get direction(): "left" | "right" {
102
- return this._direction;
103
- }
104
- public value(): RelationshipMatchRecord | RelationshipMatchRecord[] | null {
105
- return this._value;
106
- }
107
- public get matches(): RelationshipMatchRecord[] {
108
- return this._matches.matches;
109
- }
110
- public setData(data: RelationshipData | null): void {
111
- this._data = data;
112
- }
113
- public getData(): RelationshipData | null {
114
- return this._data;
115
- }
116
- public setEndNode(node: Node): void {
117
- this._matches.endNode = node;
118
- }
119
- public _left_id_or_right_id(): string {
120
- return this._direction === "left" ? "left_id" : "right_id";
121
- }
122
- public async find(left_id: string, hop: number = 0): Promise<void> {
123
- // Save original source node
124
- const original = this._source;
125
- if (hop > 0) {
126
- // For hops greater than 0, the source becomes the target of the previous hop
127
- this._source = this._target;
128
- }
129
- if (hop === 0) {
130
- this._data?.reset();
131
-
132
- // Handle zero-hop case: when min is 0 on a variable-length relationship,
133
- // match source node as target (no traversal)
134
- if (this.hops?.multi() && this.hops.min === 0 && this._target) {
135
- // For zero-hop, target finds the same node as source (left_id)
136
- // No relationship match is pushed since no edge is traversed
137
- await this._target.find(left_id, hop);
138
- }
139
- }
140
- while (this._data!.find(left_id, hop, this._direction)) {
141
- const data: RelationshipRecord = this._data?.current(hop) as RelationshipRecord;
142
- const id = data[this._left_id_or_right_id()];
143
- if (hop + 1 >= this.hops!.min) {
144
- this.setValue(this, left_id);
145
- if (!this._matchesProperties(hop)) {
146
- continue;
147
- }
148
- await this._target?.find(id, hop);
149
- if (hop + 1 < this.hops!.max) {
150
- if (this._matches.isCircular(id)) {
151
- this._matches.pop();
152
- continue;
153
- }
154
- await this.find(id, hop + 1);
155
- }
156
- this._matches.pop();
157
- } else {
158
- // Below minimum hops: traverse the edge without yielding a match
159
- await this.find(id, hop + 1);
160
- }
161
- }
162
- // Restore original source node
163
- this._source = original;
164
- }
165
- }
166
-
167
- export default Relationship;
@@ -1,31 +0,0 @@
1
- import Data from "./data";
2
-
3
- export type RelationshipRecord = { left_id: string; right_id: string } & Record<string, any>;
4
-
5
- class RelationshipData extends Data {
6
- constructor(records: RelationshipRecord[] = []) {
7
- super(records);
8
- super._buildIndex("left_id");
9
- super._buildIndex("right_id");
10
- }
11
- public find(id: string, hop: number = 0, direction: "left" | "right" = "right"): boolean {
12
- return super._find(id, hop, direction === "left" ? "right_id" : "left_id");
13
- }
14
- /*
15
- ** Get the properties of the current relationship record
16
- '' excluding the left_id and right_id fields
17
- */
18
- public properties(): Record<string, any> | null {
19
- const current = this.current();
20
- if (current) {
21
- const { left_id, right_id, _type, ...props } = current;
22
- return props;
23
- }
24
- return null;
25
- }
26
- public current(hop: number = 0): RelationshipRecord | null {
27
- return super.current(hop) as RelationshipRecord | null;
28
- }
29
- }
30
-
31
- export default RelationshipData;
@@ -1,64 +0,0 @@
1
- import Relationship from "./relationship";
2
-
3
- export type RelationshipMatchRecord = {
4
- type: string;
5
- startNode: Record<string, any>;
6
- endNode: Record<string, any> | null;
7
- properties: Record<string, any>;
8
- [key: string]: any;
9
- };
10
-
11
- class RelationshipMatchCollector {
12
- private _matches: RelationshipMatchRecord[] = [];
13
- private _nodeIds: Array<string> = [];
14
-
15
- public push(relationship: Relationship, traversalId: string): RelationshipMatchRecord {
16
- const data = relationship.getData();
17
- const currentRecord = data?.current();
18
- const actualType =
19
- currentRecord && "_type" in currentRecord ? currentRecord["_type"] : relationship.type!;
20
- const relProperties = data?.properties() as Record<string, any>;
21
- const match: RelationshipMatchRecord = {
22
- ...(relProperties || {}),
23
- type: actualType,
24
- startNode: relationship.source?.value() || {},
25
- endNode: null,
26
- properties: relProperties,
27
- };
28
- this._matches.push(match);
29
- this._nodeIds.push(traversalId);
30
- return match;
31
- }
32
- public set endNode(node: any) {
33
- if (this._matches.length > 0) {
34
- this._matches[this._matches.length - 1].endNode = node.value();
35
- }
36
- }
37
- public pop(): RelationshipMatchRecord | undefined {
38
- this._nodeIds.pop();
39
- return this._matches.pop();
40
- }
41
- public value(): RelationshipMatchRecord | RelationshipMatchRecord[] | null {
42
- if (this._matches.length === 0) {
43
- return null;
44
- } else if (this._matches.length === 1) {
45
- const _match = this._matches[0];
46
- return _match;
47
- } else {
48
- const _matches = this._matches;
49
- return _matches;
50
- }
51
- }
52
- public get matches(): RelationshipMatchRecord[] {
53
- return this._matches;
54
- }
55
- /*
56
- ** Checks if traversing to the given node id would form a cycle
57
- ** in the current traversal path
58
- */
59
- public isCircular(nextId: string): boolean {
60
- return this._nodeIds.includes(nextId);
61
- }
62
- }
63
-
64
- export default RelationshipMatchCollector;
@@ -1,25 +0,0 @@
1
- import Relationship from "./relationship";
2
- import { RelationshipRecord } from "./relationship_data";
3
-
4
- class RelationshipReference extends Relationship {
5
- private _reference: Relationship | null = null;
6
- constructor(base: Relationship, reference: Relationship) {
7
- super();
8
- this._identifier = base.identifier;
9
- this._types = base.types;
10
- this._hops = base.hops!;
11
- this._source = base.source;
12
- this._target = base.target;
13
- this._reference = reference;
14
- }
15
- public async find(left_id: string, hop: number = 0): Promise<void> {
16
- this.setValue(this._reference!);
17
- const data: RelationshipRecord = this._reference!.getData()?.current(
18
- hop
19
- ) as RelationshipRecord;
20
- const followId = this._direction === "left" ? "left_id" : "right_id";
21
- await this._target?.find(data[followId], hop);
22
- }
23
- }
24
-
25
- export default RelationshipReference;
@@ -1,46 +0,0 @@
1
- /**
2
- * FlowQuery - A declarative query language for data processing pipelines.
3
- *
4
- * This is the main entry point for the FlowQuery in-browser usage.
5
- *
6
- * @packageDocumentation
7
- */
8
- import { default as FlowQuery } from "./compute/flowquery";
9
- import Function from "./parsing/functions/function";
10
- import FunctionFactory from "./parsing/functions/function_factory";
11
- import {
12
- FunctionMetadata,
13
- OutputSchema,
14
- ParameterSchema,
15
- } from "./parsing/functions/function_metadata";
16
-
17
- /**
18
- * List all registered functions with their metadata.
19
- *
20
- * @param options - Optional filter options
21
- * @returns Array of function metadata
22
- */
23
- FlowQuery.listFunctions = function (options?: {
24
- category?: string;
25
- asyncOnly?: boolean;
26
- syncOnly?: boolean;
27
- }): FunctionMetadata[] {
28
- return FunctionFactory.listFunctions(options);
29
- };
30
-
31
- /**
32
- * Get metadata for a specific function.
33
- *
34
- * @param name - The function name
35
- * @returns Function metadata or undefined
36
- */
37
- FlowQuery.getFunctionMetadata = function (name: string): FunctionMetadata | undefined {
38
- return FunctionFactory.getMetadata(name);
39
- };
40
-
41
- /**
42
- * Base Function class for creating custom plugin functions.
43
- */
44
- FlowQuery.Function = Function;
45
-
46
- export default FlowQuery;
package/src/index.node.ts DELETED
@@ -1,55 +0,0 @@
1
- /**
2
- * FlowQuery - A declarative query language for data processing pipelines.
3
- *
4
- * This is the main entry point for the FlowQuery Node.js library usage.
5
- *
6
- * @packageDocumentation
7
- */
8
- import { default as FlowQuery } from "./compute/flowquery";
9
- import Function from "./parsing/functions/function";
10
- import FunctionFactory, { AsyncDataProvider } from "./parsing/functions/function_factory";
11
- import {
12
- FunctionMetadata,
13
- OutputSchema,
14
- ParameterSchema,
15
- } from "./parsing/functions/function_metadata";
16
-
17
- /**
18
- * List all registered functions with their metadata.
19
- *
20
- * @param options - Optional filter options
21
- * @returns Array of function metadata
22
- */
23
- FlowQuery.listFunctions = function (options?: {
24
- category?: string;
25
- asyncOnly?: boolean;
26
- syncOnly?: boolean;
27
- }): FunctionMetadata[] {
28
- return FunctionFactory.listFunctions(options);
29
- };
30
-
31
- /**
32
- * Get metadata for a specific function.
33
- *
34
- * @param name - The function name
35
- * @returns Function metadata or undefined
36
- */
37
- FlowQuery.getFunctionMetadata = function (name: string): FunctionMetadata | undefined {
38
- return FunctionFactory.getMetadata(name);
39
- };
40
-
41
- /**
42
- * Base Function class for creating custom plugin functions.
43
- */
44
- FlowQuery.Function = Function;
45
-
46
- export default FlowQuery;
47
- export {
48
- FlowQuery,
49
- Function,
50
- FunctionFactory,
51
- AsyncDataProvider,
52
- FunctionMetadata,
53
- ParameterSchema,
54
- OutputSchema,
55
- };
package/src/index.ts DELETED
@@ -1,12 +0,0 @@
1
- /**
2
- * FlowQuery - A declarative query language for data processing pipelines.
3
- *
4
- * Main entry point for the FlowQuery command-line interface.
5
- *
6
- * @packageDocumentation
7
- */
8
-
9
- import CommandLine from "./io/command_line";
10
-
11
- const commandLine = new CommandLine();
12
- commandLine.loop();
@@ -1,74 +0,0 @@
1
- import Runner from '../compute/runner';
2
- import * as readline from 'readline';
3
-
4
- /**
5
- * Interactive command-line interface for FlowQuery.
6
- *
7
- * Provides a REPL (Read-Eval-Print Loop) for executing FlowQuery statements
8
- * and displaying results.
9
- *
10
- * @example
11
- * ```typescript
12
- * const cli = new CommandLine();
13
- * cli.loop(); // Starts interactive mode
14
- * ```
15
- */
16
- class CommandLine {
17
- private rl: readline.Interface;
18
-
19
- /**
20
- * Creates a new CommandLine interface.
21
- */
22
- constructor() {
23
- this.rl = readline.createInterface({
24
- input: process.stdin,
25
- output: process.stdout
26
- });
27
- }
28
-
29
- /**
30
- * Starts the interactive command loop.
31
- *
32
- * Prompts the user for FlowQuery statements, executes them, and displays results.
33
- * Type "exit" to quit the loop.
34
- */
35
- public loop() {
36
- console.log('Welcome to FlowQuery! Type "exit" to quit.');
37
- this.rl.setPrompt('> ');
38
- this.rl.prompt();
39
-
40
- this.rl.on('line', (input: string) => {
41
- if (input === 'exit') {
42
- this.rl.close();
43
- return;
44
- }
45
- if(input.trim() === '') {
46
- this.rl.prompt();
47
- return;
48
- }
49
- try {
50
- const runner = new Runner(input);
51
- const promise = runner.run();
52
- promise.then(
53
- () => {
54
- console.log(runner.results);
55
- }
56
- );
57
- promise.catch(
58
- (e) => console.error(e)
59
- );
60
- promise.finally(
61
- () => this.rl.prompt()
62
- );
63
- } catch (e) {
64
- console.error(e);
65
- this.rl.prompt();
66
- }
67
- }).on('close', () => {
68
- console.log('Exiting FlowQuery.');
69
- process.exit(0);
70
- });
71
- }
72
- }
73
-
74
- export default CommandLine;
@@ -1,23 +0,0 @@
1
- import ASTNode from "./ast_node";
2
-
3
- class Alias extends ASTNode {
4
- private alias: string;
5
- constructor(alias: string) {
6
- super();
7
- this.alias = alias;
8
- }
9
-
10
- public toString(): string {
11
- return `Alias (${this.alias})`;
12
- }
13
-
14
- public getAlias(): string {
15
- return this.alias;
16
- }
17
-
18
- public value(): string {
19
- return this.alias;
20
- }
21
- }
22
-
23
- export default Alias;
@@ -1,5 +0,0 @@
1
- export enum AliasOption {
2
- NOT_ALLOWED = 0,
3
- OPTIONAL = 1,
4
- REQUIRED = 2,
5
- };
@@ -1,153 +0,0 @@
1
- /**
2
- * Represents a node in the Abstract Syntax Tree (AST).
3
- *
4
- * The AST is a tree representation of the parsed FlowQuery statement structure.
5
- * Each node can have children and maintains a reference to its parent.
6
- *
7
- * @example
8
- * ```typescript
9
- * const root = new ASTNode();
10
- * const child = new ASTNode();
11
- * root.addChild(child);
12
- * ```
13
- */
14
- class ASTNode {
15
- protected _parent: ASTNode | null = null;
16
- protected children: ASTNode[] = [];
17
-
18
- /**
19
- * Adds a child node to this node and sets the child's parent reference.
20
- *
21
- * @param child - The child node to add
22
- */
23
- public addChild(child: ASTNode): void {
24
- child._parent = this;
25
- this.children.push(child);
26
- }
27
-
28
- /**
29
- * Returns the first child node.
30
- *
31
- * @returns The first child node
32
- * @throws {Error} If the node has no children
33
- */
34
- public firstChild(): ASTNode {
35
- if(this.children.length === 0) {
36
- throw new Error('Expected child');
37
- }
38
- return this.children[0];
39
- }
40
-
41
- /**
42
- * Returns the last child node.
43
- *
44
- * @returns The last child node
45
- * @throws {Error} If the node has no children
46
- */
47
- public lastChild(): ASTNode {
48
- if(this.children.length === 0) {
49
- throw new Error('Expected child');
50
- }
51
- return this.children[this.children.length - 1];
52
- }
53
-
54
- /**
55
- * Returns all child nodes.
56
- *
57
- * @returns Array of child nodes
58
- */
59
- public getChildren(): ASTNode[] {
60
- return this.children;
61
- }
62
-
63
- /**
64
- * Returns the number of child nodes.
65
- *
66
- * @returns The count of children
67
- */
68
- public childCount(): number {
69
- return this.children.length;
70
- }
71
-
72
- /**
73
- * Returns the value of this node. Override in subclasses to provide specific values.
74
- *
75
- * @returns The node's value, or null if not applicable
76
- */
77
- public value(): any {
78
- return null;
79
- }
80
-
81
- /**
82
- * Checks if this node represents an operator.
83
- *
84
- * @returns True if this is an operator node, false otherwise
85
- */
86
- public isOperator(): boolean {
87
- return false;
88
- }
89
-
90
- /**
91
- * Checks if this node represents an operand (the opposite of an operator).
92
- *
93
- * @returns True if this is an operand node, false otherwise
94
- */
95
- public isOperand(): boolean {
96
- return !this.isOperator();
97
- }
98
-
99
- /**
100
- * Gets the operator precedence for this node. Higher values indicate higher precedence.
101
- *
102
- * @returns The precedence value (0 for non-operators)
103
- */
104
- public get precedence(): number {
105
- return 0;
106
- }
107
-
108
- /**
109
- * Indicates whether this operator is left-associative.
110
- *
111
- * @returns True if left-associative, false otherwise
112
- */
113
- public get leftAssociative(): boolean {
114
- return false;
115
- }
116
-
117
- /**
118
- * Prints a string representation of the AST tree starting from this node.
119
- *
120
- * @returns A formatted string showing the tree structure
121
- */
122
- public print(): string {
123
- return Array.from(this._print(0)).join('\n');
124
- }
125
-
126
- /**
127
- * Generator function for recursively printing the tree structure.
128
- *
129
- * @param indent - The current indentation level
130
- * @yields Lines representing each node in the tree
131
- */
132
- private *_print(indent: number): Generator<string> {
133
- if(indent === 0) {
134
- yield this.constructor.name;
135
- } else if(indent > 0) {
136
- yield '-'.repeat(indent) + ` ${this.toString()}`;
137
- }
138
- for(const child of this.children) {
139
- yield* child._print(indent + 1);
140
- }
141
- }
142
-
143
- /**
144
- * Returns a string representation of this node. Override in subclasses for custom formatting.
145
- *
146
- * @returns The string representation
147
- */
148
- protected toString(): string {
149
- return this.constructor.name;
150
- }
151
- }
152
-
153
- export default ASTNode;