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,53 +0,0 @@
1
- """Maps string values to tokens using a Trie for efficient lookup."""
2
-
3
- from enum import Enum
4
- from typing import Optional, Type
5
-
6
- from .token import Token
7
- from .trie import Trie
8
-
9
-
10
- class TokenMapper:
11
- """Maps string values to tokens using a Trie for efficient lookup.
12
-
13
- Takes an enum of keywords, operators, or symbols and builds a trie
14
- for fast token matching during tokenization.
15
-
16
- Example:
17
- mapper = TokenMapper(Keyword)
18
- token = mapper.map("WITH")
19
- """
20
-
21
- def __init__(self, enum_class: Type[Enum]) -> None:
22
- """Creates a TokenMapper from an enum of token values.
23
-
24
- Args:
25
- enum_class: An enum class containing token values
26
- """
27
- self._trie = Trie()
28
- self._enum = enum_class
29
-
30
- for member in enum_class:
31
- token = Token.method(member.name)
32
- if token is not None and token.value is not None:
33
- self._trie.insert(token)
34
-
35
- def map(self, value: str) -> Optional[Token]:
36
- """Maps a string value to its corresponding token.
37
-
38
- Args:
39
- value: The string value to map
40
-
41
- Returns:
42
- The matched token, or None if no match found
43
- """
44
- return self._trie.find(value)
45
-
46
- @property
47
- def last_found(self) -> Optional[str]:
48
- """Gets the last matched string from the most recent map operation.
49
-
50
- Returns:
51
- The last found string, or None if no match
52
- """
53
- return self._trie.last_found
@@ -1,21 +0,0 @@
1
- """Token type enumeration for FlowQuery tokenization."""
2
-
3
- from enum import Enum
4
-
5
-
6
- class TokenType(Enum):
7
- """Enumeration of all token types in FlowQuery."""
8
-
9
- KEYWORD = "KEYWORD"
10
- BOOLEAN = "BOOLEAN"
11
- OPERATOR = "OPERATOR"
12
- UNARY_OPERATOR = "UNARY_OPERATOR"
13
- IDENTIFIER = "IDENTIFIER"
14
- STRING = "STRING"
15
- F_STRING = "F-STRING"
16
- BACKTICK_STRING = "BACKTICK_STRING"
17
- NUMBER = "NUMBER"
18
- SYMBOL = "SYMBOL"
19
- WHITESPACE = "WHITESPACE"
20
- COMMENT = "COMMENT"
21
- EOF = "EOF"
@@ -1,214 +0,0 @@
1
- """Tokenizes FlowQuery input strings into a sequence of tokens."""
2
-
3
- from typing import Callable, Iterator, List, Optional
4
-
5
- from ..utils.string_utils import StringUtils
6
- from .keyword import Keyword
7
- from .operator import Operator
8
- from .string_walker import StringWalker
9
- from .symbol import Symbol
10
- from .token import Token
11
- from .token_mapper import TokenMapper
12
-
13
-
14
- class Tokenizer:
15
- """Tokenizes FlowQuery input strings into a sequence of tokens.
16
-
17
- The tokenizer performs lexical analysis, breaking down the input text into
18
- meaningful tokens such as keywords, identifiers, operators, strings, numbers,
19
- and symbols. It handles comments, whitespace, and f-strings.
20
-
21
- Example:
22
- tokenizer = Tokenizer("WITH x = 1 RETURN x")
23
- tokens = tokenizer.tokenize()
24
- """
25
-
26
- def __init__(self, input_: str):
27
- """Creates a new Tokenizer instance for the given input.
28
-
29
- Args:
30
- input_: The FlowQuery input string to tokenize
31
- """
32
- self._walker = StringWalker(input_)
33
- self._keywords = TokenMapper(Keyword)
34
- self._symbols = TokenMapper(Symbol)
35
- self._operators = TokenMapper(Operator)
36
-
37
- def tokenize(self) -> List[Token]:
38
- """Tokenizes the input string into an array of tokens.
39
-
40
- Returns:
41
- An array of Token objects representing the tokenized input
42
-
43
- Raises:
44
- ValueError: If an unrecognized token is encountered
45
- """
46
- tokens: List[Token] = []
47
- last: Optional[Token] = None
48
-
49
- while not self._walker.is_at_end:
50
- tokens.extend(self._f_string())
51
- last = self._get_last_non_whitespace_or_non_comment_token(tokens) or last
52
- token = self._get_next_token(last)
53
- if token is None:
54
- raise ValueError(f"Unrecognized token at position {self._walker.position}")
55
- token.position = self._walker.position
56
- tokens.append(token)
57
-
58
- return tokens
59
-
60
- def _get_last_non_whitespace_or_non_comment_token(self, tokens: List[Token]) -> Optional[Token]:
61
- if len(tokens) == 0:
62
- return None
63
- if not tokens[-1].is_whitespace_or_comment():
64
- return tokens[-1]
65
- return None
66
-
67
- def _get_next_token(self, last: Optional[Token] = None) -> Optional[Token]:
68
- if self._walker.is_at_end:
69
- return Token.EOF()
70
- return (
71
- self._comment() or
72
- self._whitespace() or
73
- self._lookup(self._keywords) or
74
- self._lookup(self._operators, last, self._skip_minus) or
75
- self._boolean() or
76
- self._identifier() or
77
- self._string() or
78
- self._number() or
79
- self._lookup(self._symbols)
80
- )
81
-
82
- def _comment(self) -> Optional[Token]:
83
- start_position = self._walker.position
84
- if self._walker.check_for_single_comment() or self._walker.check_for_multi_line_comment():
85
- uncommented = StringUtils.uncomment(self._walker.get_string(start_position))
86
- return Token.COMMENT(uncommented)
87
- return None
88
-
89
- def _boolean(self) -> Optional[Token]:
90
- start_position = self._walker.position
91
- if self._walker.check_for_string("TRUE"):
92
- return Token.BOOLEAN(self._walker.get_string(start_position).upper())
93
- if self._walker.check_for_string("FALSE"):
94
- return Token.BOOLEAN(self._walker.get_string(start_position).upper())
95
- return None
96
-
97
- def _identifier(self) -> Optional[Token]:
98
- start_position = self._walker.position
99
- if self._walker.check_for_under_score() or self._walker.check_for_letter():
100
- while (not self._walker.is_at_end and
101
- (self._walker.check_for_letter() or
102
- self._walker.check_for_digit() or
103
- self._walker.check_for_under_score())):
104
- pass
105
- return Token.IDENTIFIER(self._walker.get_string(start_position))
106
- return None
107
-
108
- def _string(self) -> Optional[Token]:
109
- start_position = self._walker.position
110
- quote_char = self._walker.check_for_quote()
111
- if quote_char is None:
112
- return None
113
-
114
- while not self._walker.is_at_end:
115
- if self._walker.escaped(quote_char):
116
- self._walker.move_next()
117
- self._walker.move_next()
118
- continue
119
- if self._walker.check_for_string(quote_char):
120
- value = self._walker.get_string(start_position)
121
- if quote_char == Symbol.BACKTICK.value:
122
- return Token.BACKTICK_STRING(value, quote_char)
123
- return Token.STRING(value, quote_char)
124
- self._walker.move_next()
125
-
126
- raise ValueError(f"Unterminated string at position {start_position}")
127
-
128
- def _f_string(self) -> Iterator[Token]:
129
- if not self._walker.check_for_f_string_start():
130
- return
131
-
132
- self._walker.move_next() # skip the f
133
- position = self._walker.position
134
- quote_char = self._walker.check_for_quote()
135
- if quote_char is None:
136
- return
137
-
138
- while not self._walker.is_at_end:
139
- if self._walker.escaped(quote_char) or self._walker.escaped_brace():
140
- self._walker.move_next()
141
- self._walker.move_next()
142
- continue
143
-
144
- if self._walker.opening_brace():
145
- yield Token.F_STRING(self._walker.get_string(position), quote_char)
146
- position = self._walker.position
147
- yield Token.OPENING_BRACE()
148
- self._walker.move_next() # skip the opening brace
149
- position = self._walker.position
150
-
151
- while not self._walker.is_at_end and not self._walker.closing_brace():
152
- token = self._get_next_token()
153
- if token is not None:
154
- yield token
155
- else:
156
- break
157
- if self._walker.closing_brace():
158
- yield Token.CLOSING_BRACE()
159
- self._walker.move_next() # skip the closing brace
160
- position = self._walker.position
161
- break
162
-
163
- if self._walker.check_for_string(quote_char):
164
- yield Token.F_STRING(self._walker.get_string(position), quote_char)
165
- return
166
-
167
- self._walker.move_next()
168
-
169
- def _whitespace(self) -> Optional[Token]:
170
- found_whitespace = False
171
- while not self._walker.is_at_end and self._walker.check_for_whitespace():
172
- self._walker.move_next()
173
- found_whitespace = True
174
- return Token.WHITESPACE() if found_whitespace else None
175
-
176
- def _number(self) -> Optional[Token]:
177
- start_position = self._walker.position
178
- if self._walker.check_for_string("-") or self._walker.check_for_digit():
179
- while not self._walker.is_at_end and self._walker.check_for_digit():
180
- pass
181
- if self._walker.check_for_string(Symbol.DOT.value):
182
- decimal_digits = 0
183
- while not self._walker.is_at_end and self._walker.check_for_digit():
184
- decimal_digits += 1
185
- if decimal_digits == 0:
186
- self._walker.move_previous()
187
- number_str = self._walker.get_string(start_position)
188
- return Token.NUMBER(number_str)
189
- return None
190
-
191
- def _lookup(
192
- self,
193
- mapper: TokenMapper,
194
- last: Optional[Token] = None,
195
- skip: Optional[Callable[[Optional[Token], Token], bool]] = None
196
- ) -> Optional[Token]:
197
- token = mapper.map(self._walker.get_remaining_string())
198
- if token is not None and token.value is not None:
199
- if token.can_be_identifier and self._walker.word_continuation(token.value):
200
- return None
201
- if skip and last and skip(last, token):
202
- return None
203
- self._walker.move_by(len(token.value))
204
- if mapper.last_found is not None:
205
- token.case_sensitive_value = mapper.last_found
206
- return token
207
- return None
208
-
209
- def _skip_minus(self, last: Optional[Token], current: Token) -> bool:
210
- if last is None:
211
- return False
212
- if (last.is_keyword() or last.is_comma() or last.is_colon()) and current.is_negation():
213
- return True
214
- return False
@@ -1,125 +0,0 @@
1
- """Trie (prefix tree) data structure for efficient keyword and operator lookup."""
2
-
3
- from __future__ import annotations
4
-
5
- from typing import TYPE_CHECKING, Optional
6
-
7
- if TYPE_CHECKING:
8
- from .token import Token
9
-
10
-
11
- class TrieNode:
12
- """Represents a node in a Trie data structure.
13
-
14
- Each node can have children nodes (one per character) and may contain a token
15
- if the path to this node represents a complete word.
16
- """
17
-
18
- def __init__(self) -> None:
19
- self._children: dict[str, TrieNode] = {}
20
- self._token: Optional[Token] = None
21
-
22
- def map(self, char: str) -> TrieNode:
23
- if char not in self._children:
24
- self._children[char] = TrieNode()
25
- return self._children[char]
26
-
27
- def retrieve(self, char: str) -> Optional[TrieNode]:
28
- return self._children.get(char)
29
-
30
- @property
31
- def token(self) -> Optional[Token]:
32
- return self._token
33
-
34
- @token.setter
35
- def token(self, token: Token) -> None:
36
- self._token = token
37
-
38
- def is_end_of_word(self) -> bool:
39
- return self._token is not None
40
-
41
- def no_children(self) -> bool:
42
- return len(self._children) == 0
43
-
44
-
45
- class Trie:
46
- """Trie (prefix tree) data structure for efficient keyword and operator lookup.
47
-
48
- Used during tokenization to quickly match input strings against known keywords
49
- and operators. Supports case-insensitive matching and tracks the longest match found.
50
-
51
- Example:
52
- trie = Trie()
53
- trie.insert(Token.WITH)
54
- found = trie.find("WITH")
55
- """
56
-
57
- def __init__(self) -> None:
58
- self._root = TrieNode()
59
- self._max_length = 0
60
- self._last_found: Optional[str] = None
61
-
62
- def insert(self, token: Token) -> None:
63
- """Inserts a token into the trie.
64
-
65
- Args:
66
- token: The token to insert
67
-
68
- Raises:
69
- ValueError: If the token value is None or empty
70
- """
71
- if token.value is None or len(token.value) == 0:
72
- raise ValueError("Token value cannot be null or empty")
73
-
74
- current_node = self._root
75
- for char in token.value:
76
- current_node = current_node.map(char.lower())
77
-
78
- if len(token.value) > self._max_length:
79
- self._max_length = len(token.value)
80
-
81
- current_node.token = token
82
-
83
- def find(self, value: str) -> Optional[Token]:
84
- """Finds a token by searching for the longest matching prefix in the trie.
85
-
86
- Args:
87
- value: The string value to search for
88
-
89
- Returns:
90
- The token if found, None otherwise
91
- """
92
- if len(value) == 0:
93
- return None
94
-
95
- index = 0
96
- current: Optional[TrieNode] = None
97
- found: Optional[Token] = None
98
- self._last_found = None
99
-
100
- while True:
101
- next_node = (current or self._root).retrieve(value[index].lower())
102
- if next_node is None:
103
- break
104
- current = next_node
105
- if current.is_end_of_word():
106
- found = current.token
107
- self._last_found = value[:index + 1]
108
- index += 1
109
- if index >= len(value) or index > self._max_length:
110
- break
111
-
112
- if current is not None and current.is_end_of_word():
113
- found = current.token
114
- self._last_found = value[:index]
115
-
116
- return found
117
-
118
- @property
119
- def last_found(self) -> Optional[str]:
120
- """Gets the last matched string from the most recent find operation.
121
-
122
- Returns:
123
- The last found string, or None if no match was found
124
- """
125
- return self._last_found
@@ -1,6 +0,0 @@
1
- """Utils module for FlowQuery."""
2
-
3
- from .object_utils import ObjectUtils
4
- from .string_utils import StringUtils
5
-
6
- __all__ = ["StringUtils", "ObjectUtils"]
@@ -1,20 +0,0 @@
1
- """Utility class for object-related operations."""
2
-
3
- from typing import Any, List, Type
4
-
5
-
6
- class ObjectUtils:
7
- """Utility class for object-related operations."""
8
-
9
- @staticmethod
10
- def is_instance_of_any(obj: Any, classes: List[Type[Any]]) -> bool:
11
- """Checks if an object is an instance of any of the provided classes.
12
-
13
- Args:
14
- obj: The object to check
15
- classes: Array of class constructors to test against
16
-
17
- Returns:
18
- True if the object is an instance of any class, False otherwise
19
- """
20
- return any(isinstance(obj, cls) for cls in classes)
@@ -1,113 +0,0 @@
1
- """Utility class for string manipulation and validation."""
2
-
3
-
4
- class StringUtils:
5
- """Utility class for string manipulation and validation.
6
-
7
- Provides methods for handling quoted strings, comments, escape sequences,
8
- and identifier validation.
9
- """
10
-
11
- quotes = ['"', "'", '`']
12
- letters = 'abcdefghijklmnopqrstuvwxyz'
13
- digits = '0123456789'
14
- whitespace = ' \t\n\r'
15
- word_valid_chars = letters + letters.upper() + digits + '_'
16
-
17
- @staticmethod
18
- def unquote(s: str) -> str:
19
- """Removes surrounding quotes from a string.
20
-
21
- Args:
22
- s: The string to unquote
23
-
24
- Returns:
25
- The unquoted string
26
- """
27
- if len(s) == 0:
28
- return s
29
- if len(s) == 1 and s in StringUtils.quotes:
30
- return ''
31
- first = s[0]
32
- last = s[-1]
33
- if first in StringUtils.quotes and first == last:
34
- return s[1:-1]
35
- if last in StringUtils.quotes and first != last:
36
- return s[:-1]
37
- if first in StringUtils.quotes and first != last:
38
- return s[1:]
39
- return s
40
-
41
- @staticmethod
42
- def uncomment(s: str) -> str:
43
- """Removes comment markers from a string.
44
-
45
- Args:
46
- s: The comment string
47
-
48
- Returns:
49
- The string without comment markers
50
- """
51
- if len(s) < 2:
52
- return s
53
- if s[0] == '/' and s[1] == '/':
54
- return s[2:]
55
- if s[0] == '/' and s[1] == '*' and s[-2] == '*' and s[-1] == '/':
56
- return s[2:-2]
57
- return s
58
-
59
- @staticmethod
60
- def remove_escaped_quotes(s: str, quote_char: str) -> str:
61
- """Removes escape sequences before quotes in a string.
62
-
63
- Args:
64
- s: The string to process
65
- quote_char: The quote character that was escaped
66
-
67
- Returns:
68
- The string with escape sequences removed
69
- """
70
- unescaped = ''
71
- i = 0
72
- while i < len(s):
73
- if i < len(s) - 1 and s[i] == '\\' and s[i + 1] == quote_char:
74
- i += 1
75
- unescaped += s[i]
76
- i += 1
77
- return unescaped
78
-
79
- @staticmethod
80
- def remove_escaped_braces(s: str) -> str:
81
- """Removes escaped braces ({{ and }}) from f-strings.
82
-
83
- Args:
84
- s: The string to process
85
-
86
- Returns:
87
- The string with escaped braces resolved
88
- """
89
- unescaped = ''
90
- i = 0
91
- while i < len(s):
92
- if i < len(s) - 1 and ((s[i] == '{' and s[i + 1] == '{') or (s[i] == '}' and s[i + 1] == '}')):
93
- i += 1
94
- unescaped += s[i]
95
- i += 1
96
- return unescaped
97
-
98
- @staticmethod
99
- def can_be_identifier(s: str) -> bool:
100
- """Checks if a string is a valid identifier.
101
-
102
- Args:
103
- s: The string to validate
104
-
105
- Returns:
106
- True if the string can be used as an identifier, false otherwise
107
- """
108
- lower = s.lower()
109
- if len(lower) == 0:
110
- return False
111
- if lower[0] not in StringUtils.letters and lower[0] != '_':
112
- return False
113
- return all(char in StringUtils.word_valid_chars for char in lower)
@@ -1 +0,0 @@
1
- """Tests package for FlowQuery."""
@@ -1 +0,0 @@
1
- """Compute tests package."""