flowquery 1.0.46 → 1.0.47

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 (413) hide show
  1. package/dist/index.d.ts +0 -7
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +6 -4
  4. package/dist/index.js.map +1 -1
  5. package/package.json +4 -1
  6. package/.editorconfig +0 -21
  7. package/.gitattributes +0 -3
  8. package/.github/workflows/npm-publish.yml +0 -32
  9. package/.github/workflows/python-publish.yml +0 -143
  10. package/.github/workflows/release.yml +0 -107
  11. package/.husky/pre-commit +0 -28
  12. package/.prettierrc +0 -22
  13. package/CODE_OF_CONDUCT.md +0 -10
  14. package/FlowQueryLogoIcon.png +0 -0
  15. package/SECURITY.md +0 -14
  16. package/SUPPORT.md +0 -13
  17. package/docs/flowquery.min.js +0 -1
  18. package/docs/index.html +0 -105
  19. package/flowquery-py/CONTRIBUTING.md +0 -127
  20. package/flowquery-py/README.md +0 -67
  21. package/flowquery-py/misc/data/test.json +0 -10
  22. package/flowquery-py/misc/data/users.json +0 -242
  23. package/flowquery-py/notebooks/TestFlowQuery.ipynb +0 -440
  24. package/flowquery-py/pyproject.toml +0 -121
  25. package/flowquery-py/setup_env.ps1 +0 -92
  26. package/flowquery-py/setup_env.sh +0 -87
  27. package/flowquery-py/src/__init__.py +0 -38
  28. package/flowquery-py/src/__main__.py +0 -10
  29. package/flowquery-py/src/compute/__init__.py +0 -6
  30. package/flowquery-py/src/compute/flowquery.py +0 -68
  31. package/flowquery-py/src/compute/runner.py +0 -64
  32. package/flowquery-py/src/extensibility.py +0 -52
  33. package/flowquery-py/src/graph/__init__.py +0 -31
  34. package/flowquery-py/src/graph/data.py +0 -136
  35. package/flowquery-py/src/graph/database.py +0 -141
  36. package/flowquery-py/src/graph/hops.py +0 -43
  37. package/flowquery-py/src/graph/node.py +0 -143
  38. package/flowquery-py/src/graph/node_data.py +0 -26
  39. package/flowquery-py/src/graph/node_reference.py +0 -50
  40. package/flowquery-py/src/graph/pattern.py +0 -115
  41. package/flowquery-py/src/graph/pattern_expression.py +0 -67
  42. package/flowquery-py/src/graph/patterns.py +0 -42
  43. package/flowquery-py/src/graph/physical_node.py +0 -41
  44. package/flowquery-py/src/graph/physical_relationship.py +0 -36
  45. package/flowquery-py/src/graph/relationship.py +0 -193
  46. package/flowquery-py/src/graph/relationship_data.py +0 -36
  47. package/flowquery-py/src/graph/relationship_match_collector.py +0 -85
  48. package/flowquery-py/src/graph/relationship_reference.py +0 -21
  49. package/flowquery-py/src/io/__init__.py +0 -5
  50. package/flowquery-py/src/io/command_line.py +0 -108
  51. package/flowquery-py/src/parsing/__init__.py +0 -17
  52. package/flowquery-py/src/parsing/alias.py +0 -20
  53. package/flowquery-py/src/parsing/alias_option.py +0 -11
  54. package/flowquery-py/src/parsing/ast_node.py +0 -147
  55. package/flowquery-py/src/parsing/base_parser.py +0 -84
  56. package/flowquery-py/src/parsing/components/__init__.py +0 -19
  57. package/flowquery-py/src/parsing/components/csv.py +0 -8
  58. package/flowquery-py/src/parsing/components/from_.py +0 -12
  59. package/flowquery-py/src/parsing/components/headers.py +0 -12
  60. package/flowquery-py/src/parsing/components/json.py +0 -8
  61. package/flowquery-py/src/parsing/components/null.py +0 -10
  62. package/flowquery-py/src/parsing/components/post.py +0 -8
  63. package/flowquery-py/src/parsing/components/text.py +0 -8
  64. package/flowquery-py/src/parsing/context.py +0 -50
  65. package/flowquery-py/src/parsing/data_structures/__init__.py +0 -15
  66. package/flowquery-py/src/parsing/data_structures/associative_array.py +0 -41
  67. package/flowquery-py/src/parsing/data_structures/json_array.py +0 -30
  68. package/flowquery-py/src/parsing/data_structures/key_value_pair.py +0 -38
  69. package/flowquery-py/src/parsing/data_structures/lookup.py +0 -51
  70. package/flowquery-py/src/parsing/data_structures/range_lookup.py +0 -42
  71. package/flowquery-py/src/parsing/expressions/__init__.py +0 -61
  72. package/flowquery-py/src/parsing/expressions/boolean.py +0 -20
  73. package/flowquery-py/src/parsing/expressions/expression.py +0 -141
  74. package/flowquery-py/src/parsing/expressions/expression_map.py +0 -26
  75. package/flowquery-py/src/parsing/expressions/f_string.py +0 -27
  76. package/flowquery-py/src/parsing/expressions/identifier.py +0 -21
  77. package/flowquery-py/src/parsing/expressions/number.py +0 -32
  78. package/flowquery-py/src/parsing/expressions/operator.py +0 -271
  79. package/flowquery-py/src/parsing/expressions/reference.py +0 -47
  80. package/flowquery-py/src/parsing/expressions/string.py +0 -27
  81. package/flowquery-py/src/parsing/functions/__init__.py +0 -127
  82. package/flowquery-py/src/parsing/functions/aggregate_function.py +0 -60
  83. package/flowquery-py/src/parsing/functions/async_function.py +0 -65
  84. package/flowquery-py/src/parsing/functions/avg.py +0 -55
  85. package/flowquery-py/src/parsing/functions/coalesce.py +0 -43
  86. package/flowquery-py/src/parsing/functions/collect.py +0 -75
  87. package/flowquery-py/src/parsing/functions/count.py +0 -79
  88. package/flowquery-py/src/parsing/functions/date_.py +0 -61
  89. package/flowquery-py/src/parsing/functions/datetime_.py +0 -62
  90. package/flowquery-py/src/parsing/functions/duration.py +0 -159
  91. package/flowquery-py/src/parsing/functions/element_id.py +0 -50
  92. package/flowquery-py/src/parsing/functions/function.py +0 -68
  93. package/flowquery-py/src/parsing/functions/function_factory.py +0 -170
  94. package/flowquery-py/src/parsing/functions/function_metadata.py +0 -148
  95. package/flowquery-py/src/parsing/functions/functions.py +0 -67
  96. package/flowquery-py/src/parsing/functions/head.py +0 -39
  97. package/flowquery-py/src/parsing/functions/id_.py +0 -49
  98. package/flowquery-py/src/parsing/functions/join.py +0 -49
  99. package/flowquery-py/src/parsing/functions/keys.py +0 -34
  100. package/flowquery-py/src/parsing/functions/last.py +0 -39
  101. package/flowquery-py/src/parsing/functions/localdatetime.py +0 -60
  102. package/flowquery-py/src/parsing/functions/localtime.py +0 -57
  103. package/flowquery-py/src/parsing/functions/max_.py +0 -49
  104. package/flowquery-py/src/parsing/functions/min_.py +0 -49
  105. package/flowquery-py/src/parsing/functions/nodes.py +0 -48
  106. package/flowquery-py/src/parsing/functions/predicate_function.py +0 -47
  107. package/flowquery-py/src/parsing/functions/predicate_sum.py +0 -49
  108. package/flowquery-py/src/parsing/functions/properties.py +0 -50
  109. package/flowquery-py/src/parsing/functions/rand.py +0 -28
  110. package/flowquery-py/src/parsing/functions/range_.py +0 -41
  111. package/flowquery-py/src/parsing/functions/reducer_element.py +0 -15
  112. package/flowquery-py/src/parsing/functions/relationships.py +0 -46
  113. package/flowquery-py/src/parsing/functions/replace.py +0 -39
  114. package/flowquery-py/src/parsing/functions/round_.py +0 -34
  115. package/flowquery-py/src/parsing/functions/schema.py +0 -40
  116. package/flowquery-py/src/parsing/functions/size.py +0 -34
  117. package/flowquery-py/src/parsing/functions/split.py +0 -54
  118. package/flowquery-py/src/parsing/functions/string_distance.py +0 -92
  119. package/flowquery-py/src/parsing/functions/stringify.py +0 -49
  120. package/flowquery-py/src/parsing/functions/substring.py +0 -76
  121. package/flowquery-py/src/parsing/functions/sum.py +0 -51
  122. package/flowquery-py/src/parsing/functions/tail.py +0 -37
  123. package/flowquery-py/src/parsing/functions/temporal_utils.py +0 -186
  124. package/flowquery-py/src/parsing/functions/time_.py +0 -57
  125. package/flowquery-py/src/parsing/functions/timestamp.py +0 -37
  126. package/flowquery-py/src/parsing/functions/to_float.py +0 -46
  127. package/flowquery-py/src/parsing/functions/to_integer.py +0 -46
  128. package/flowquery-py/src/parsing/functions/to_json.py +0 -35
  129. package/flowquery-py/src/parsing/functions/to_lower.py +0 -37
  130. package/flowquery-py/src/parsing/functions/to_string.py +0 -41
  131. package/flowquery-py/src/parsing/functions/trim.py +0 -37
  132. package/flowquery-py/src/parsing/functions/type_.py +0 -47
  133. package/flowquery-py/src/parsing/functions/value_holder.py +0 -24
  134. package/flowquery-py/src/parsing/logic/__init__.py +0 -15
  135. package/flowquery-py/src/parsing/logic/case.py +0 -28
  136. package/flowquery-py/src/parsing/logic/else_.py +0 -12
  137. package/flowquery-py/src/parsing/logic/end.py +0 -8
  138. package/flowquery-py/src/parsing/logic/then.py +0 -12
  139. package/flowquery-py/src/parsing/logic/when.py +0 -12
  140. package/flowquery-py/src/parsing/operations/__init__.py +0 -46
  141. package/flowquery-py/src/parsing/operations/aggregated_return.py +0 -25
  142. package/flowquery-py/src/parsing/operations/aggregated_with.py +0 -22
  143. package/flowquery-py/src/parsing/operations/call.py +0 -73
  144. package/flowquery-py/src/parsing/operations/create_node.py +0 -35
  145. package/flowquery-py/src/parsing/operations/create_relationship.py +0 -35
  146. package/flowquery-py/src/parsing/operations/delete_node.py +0 -29
  147. package/flowquery-py/src/parsing/operations/delete_relationship.py +0 -29
  148. package/flowquery-py/src/parsing/operations/group_by.py +0 -148
  149. package/flowquery-py/src/parsing/operations/limit.py +0 -33
  150. package/flowquery-py/src/parsing/operations/load.py +0 -148
  151. package/flowquery-py/src/parsing/operations/match.py +0 -52
  152. package/flowquery-py/src/parsing/operations/operation.py +0 -69
  153. package/flowquery-py/src/parsing/operations/order_by.py +0 -114
  154. package/flowquery-py/src/parsing/operations/projection.py +0 -21
  155. package/flowquery-py/src/parsing/operations/return_op.py +0 -88
  156. package/flowquery-py/src/parsing/operations/union.py +0 -115
  157. package/flowquery-py/src/parsing/operations/union_all.py +0 -17
  158. package/flowquery-py/src/parsing/operations/unwind.py +0 -42
  159. package/flowquery-py/src/parsing/operations/where.py +0 -43
  160. package/flowquery-py/src/parsing/operations/with_op.py +0 -18
  161. package/flowquery-py/src/parsing/parser.py +0 -1384
  162. package/flowquery-py/src/parsing/parser_state.py +0 -26
  163. package/flowquery-py/src/parsing/token_to_node.py +0 -109
  164. package/flowquery-py/src/tokenization/__init__.py +0 -23
  165. package/flowquery-py/src/tokenization/keyword.py +0 -54
  166. package/flowquery-py/src/tokenization/operator.py +0 -29
  167. package/flowquery-py/src/tokenization/string_walker.py +0 -158
  168. package/flowquery-py/src/tokenization/symbol.py +0 -19
  169. package/flowquery-py/src/tokenization/token.py +0 -693
  170. package/flowquery-py/src/tokenization/token_mapper.py +0 -53
  171. package/flowquery-py/src/tokenization/token_type.py +0 -21
  172. package/flowquery-py/src/tokenization/tokenizer.py +0 -214
  173. package/flowquery-py/src/tokenization/trie.py +0 -125
  174. package/flowquery-py/src/utils/__init__.py +0 -6
  175. package/flowquery-py/src/utils/object_utils.py +0 -20
  176. package/flowquery-py/src/utils/string_utils.py +0 -113
  177. package/flowquery-py/tests/__init__.py +0 -1
  178. package/flowquery-py/tests/compute/__init__.py +0 -1
  179. package/flowquery-py/tests/compute/test_runner.py +0 -4902
  180. package/flowquery-py/tests/graph/__init__.py +0 -1
  181. package/flowquery-py/tests/graph/test_create.py +0 -56
  182. package/flowquery-py/tests/graph/test_data.py +0 -73
  183. package/flowquery-py/tests/graph/test_match.py +0 -40
  184. package/flowquery-py/tests/parsing/__init__.py +0 -1
  185. package/flowquery-py/tests/parsing/test_context.py +0 -34
  186. package/flowquery-py/tests/parsing/test_expression.py +0 -248
  187. package/flowquery-py/tests/parsing/test_parser.py +0 -1237
  188. package/flowquery-py/tests/test_extensibility.py +0 -611
  189. package/flowquery-py/tests/tokenization/__init__.py +0 -1
  190. package/flowquery-py/tests/tokenization/test_token_mapper.py +0 -60
  191. package/flowquery-py/tests/tokenization/test_tokenizer.py +0 -198
  192. package/flowquery-py/tests/tokenization/test_trie.py +0 -30
  193. package/flowquery-vscode/.vscode-test.mjs +0 -5
  194. package/flowquery-vscode/.vscodeignore +0 -13
  195. package/flowquery-vscode/LICENSE +0 -21
  196. package/flowquery-vscode/README.md +0 -11
  197. package/flowquery-vscode/demo/FlowQueryVSCodeDemo.gif +0 -0
  198. package/flowquery-vscode/eslint.config.mjs +0 -25
  199. package/flowquery-vscode/extension.js +0 -508
  200. package/flowquery-vscode/flowQueryEngine/flowquery.min.js +0 -1
  201. package/flowquery-vscode/flowquery-worker.js +0 -66
  202. package/flowquery-vscode/images/FlowQueryLogoIcon.png +0 -0
  203. package/flowquery-vscode/jsconfig.json +0 -13
  204. package/flowquery-vscode/libs/page.css +0 -53
  205. package/flowquery-vscode/libs/table.css +0 -13
  206. package/flowquery-vscode/libs/tabs.css +0 -66
  207. package/flowquery-vscode/package-lock.json +0 -2917
  208. package/flowquery-vscode/package.json +0 -51
  209. package/flowquery-vscode/test/extension.test.js +0 -196
  210. package/flowquery-vscode/test/worker.test.js +0 -25
  211. package/flowquery-vscode/vsc-extension-quickstart.md +0 -42
  212. package/jest.config.js +0 -14
  213. package/misc/apps/RAG/README.md +0 -29
  214. package/misc/apps/RAG/data/chats.json +0 -302
  215. package/misc/apps/RAG/data/emails.json +0 -182
  216. package/misc/apps/RAG/data/events.json +0 -226
  217. package/misc/apps/RAG/data/files.json +0 -172
  218. package/misc/apps/RAG/data/users.json +0 -158
  219. package/misc/apps/RAG/jest.config.js +0 -21
  220. package/misc/apps/RAG/package.json +0 -48
  221. package/misc/apps/RAG/public/index.html +0 -18
  222. package/misc/apps/RAG/src/App.css +0 -42
  223. package/misc/apps/RAG/src/App.tsx +0 -50
  224. package/misc/apps/RAG/src/components/AdaptiveCardRenderer.css +0 -172
  225. package/misc/apps/RAG/src/components/AdaptiveCardRenderer.tsx +0 -380
  226. package/misc/apps/RAG/src/components/ApiKeySettings.tsx +0 -245
  227. package/misc/apps/RAG/src/components/ChatContainer.css +0 -67
  228. package/misc/apps/RAG/src/components/ChatContainer.tsx +0 -242
  229. package/misc/apps/RAG/src/components/ChatInput.css +0 -23
  230. package/misc/apps/RAG/src/components/ChatInput.tsx +0 -76
  231. package/misc/apps/RAG/src/components/ChatMessage.css +0 -160
  232. package/misc/apps/RAG/src/components/ChatMessage.tsx +0 -286
  233. package/misc/apps/RAG/src/components/FlowQueryAgent.ts +0 -708
  234. package/misc/apps/RAG/src/components/FlowQueryRunner.css +0 -113
  235. package/misc/apps/RAG/src/components/FlowQueryRunner.tsx +0 -371
  236. package/misc/apps/RAG/src/components/index.ts +0 -28
  237. package/misc/apps/RAG/src/graph/index.ts +0 -19
  238. package/misc/apps/RAG/src/graph/initializeGraph.ts +0 -254
  239. package/misc/apps/RAG/src/index.tsx +0 -29
  240. package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +0 -327
  241. package/misc/apps/RAG/src/prompts/index.ts +0 -10
  242. package/misc/apps/RAG/src/tests/graph.test.ts +0 -35
  243. package/misc/apps/RAG/src/utils/FlowQueryExecutor.ts +0 -130
  244. package/misc/apps/RAG/src/utils/FlowQueryExtractor.ts +0 -208
  245. package/misc/apps/RAG/src/utils/Llm.ts +0 -248
  246. package/misc/apps/RAG/src/utils/index.ts +0 -12
  247. package/misc/apps/RAG/tsconfig.json +0 -22
  248. package/misc/apps/RAG/webpack.config.js +0 -43
  249. package/misc/apps/README.md +0 -1
  250. package/misc/queries/analyze_catfacts.cql +0 -75
  251. package/misc/queries/azure_openai_completions.cql +0 -13
  252. package/misc/queries/azure_openai_models.cql +0 -9
  253. package/misc/queries/mock_pipeline.cql +0 -84
  254. package/misc/queries/openai_completions.cql +0 -15
  255. package/misc/queries/openai_models.cql +0 -13
  256. package/misc/queries/test.cql +0 -6
  257. package/misc/queries/tool_inference.cql +0 -24
  258. package/misc/queries/wisdom.cql +0 -6
  259. package/misc/queries/wisdom_letter_histogram.cql +0 -8
  260. package/src/compute/flowquery.ts +0 -46
  261. package/src/compute/runner.ts +0 -66
  262. package/src/extensibility.ts +0 -45
  263. package/src/graph/data.ts +0 -130
  264. package/src/graph/database.ts +0 -143
  265. package/src/graph/hops.ts +0 -22
  266. package/src/graph/node.ts +0 -122
  267. package/src/graph/node_data.ts +0 -18
  268. package/src/graph/node_reference.ts +0 -38
  269. package/src/graph/pattern.ts +0 -110
  270. package/src/graph/pattern_expression.ts +0 -48
  271. package/src/graph/patterns.ts +0 -36
  272. package/src/graph/physical_node.ts +0 -23
  273. package/src/graph/physical_relationship.ts +0 -23
  274. package/src/graph/relationship.ts +0 -167
  275. package/src/graph/relationship_data.ts +0 -31
  276. package/src/graph/relationship_match_collector.ts +0 -64
  277. package/src/graph/relationship_reference.ts +0 -25
  278. package/src/index.browser.ts +0 -46
  279. package/src/index.node.ts +0 -55
  280. package/src/index.ts +0 -12
  281. package/src/io/command_line.ts +0 -74
  282. package/src/parsing/alias.ts +0 -23
  283. package/src/parsing/alias_option.ts +0 -5
  284. package/src/parsing/ast_node.ts +0 -153
  285. package/src/parsing/base_parser.ts +0 -98
  286. package/src/parsing/components/csv.ts +0 -9
  287. package/src/parsing/components/from.ts +0 -12
  288. package/src/parsing/components/headers.ts +0 -12
  289. package/src/parsing/components/json.ts +0 -9
  290. package/src/parsing/components/null.ts +0 -9
  291. package/src/parsing/components/post.ts +0 -9
  292. package/src/parsing/components/text.ts +0 -9
  293. package/src/parsing/context.ts +0 -54
  294. package/src/parsing/data_structures/associative_array.ts +0 -43
  295. package/src/parsing/data_structures/json_array.ts +0 -31
  296. package/src/parsing/data_structures/key_value_pair.ts +0 -37
  297. package/src/parsing/data_structures/lookup.ts +0 -44
  298. package/src/parsing/data_structures/range_lookup.ts +0 -36
  299. package/src/parsing/expressions/boolean.ts +0 -21
  300. package/src/parsing/expressions/expression.ts +0 -150
  301. package/src/parsing/expressions/expression_map.ts +0 -22
  302. package/src/parsing/expressions/f_string.ts +0 -26
  303. package/src/parsing/expressions/identifier.ts +0 -22
  304. package/src/parsing/expressions/number.ts +0 -40
  305. package/src/parsing/expressions/operator.ts +0 -354
  306. package/src/parsing/expressions/reference.ts +0 -45
  307. package/src/parsing/expressions/string.ts +0 -34
  308. package/src/parsing/functions/aggregate_function.ts +0 -58
  309. package/src/parsing/functions/async_function.ts +0 -64
  310. package/src/parsing/functions/avg.ts +0 -47
  311. package/src/parsing/functions/coalesce.ts +0 -49
  312. package/src/parsing/functions/collect.ts +0 -54
  313. package/src/parsing/functions/count.ts +0 -54
  314. package/src/parsing/functions/date.ts +0 -63
  315. package/src/parsing/functions/datetime.ts +0 -63
  316. package/src/parsing/functions/duration.ts +0 -143
  317. package/src/parsing/functions/element_id.ts +0 -51
  318. package/src/parsing/functions/function.ts +0 -60
  319. package/src/parsing/functions/function_factory.ts +0 -195
  320. package/src/parsing/functions/function_metadata.ts +0 -217
  321. package/src/parsing/functions/functions.ts +0 -70
  322. package/src/parsing/functions/head.ts +0 -42
  323. package/src/parsing/functions/id.ts +0 -51
  324. package/src/parsing/functions/join.ts +0 -40
  325. package/src/parsing/functions/keys.ts +0 -29
  326. package/src/parsing/functions/last.ts +0 -42
  327. package/src/parsing/functions/localdatetime.ts +0 -63
  328. package/src/parsing/functions/localtime.ts +0 -58
  329. package/src/parsing/functions/max.ts +0 -37
  330. package/src/parsing/functions/min.ts +0 -37
  331. package/src/parsing/functions/nodes.ts +0 -54
  332. package/src/parsing/functions/predicate_function.ts +0 -48
  333. package/src/parsing/functions/predicate_sum.ts +0 -47
  334. package/src/parsing/functions/properties.ts +0 -56
  335. package/src/parsing/functions/rand.ts +0 -21
  336. package/src/parsing/functions/range.ts +0 -37
  337. package/src/parsing/functions/reducer_element.ts +0 -10
  338. package/src/parsing/functions/relationships.ts +0 -52
  339. package/src/parsing/functions/replace.ts +0 -38
  340. package/src/parsing/functions/round.ts +0 -28
  341. package/src/parsing/functions/schema.ts +0 -39
  342. package/src/parsing/functions/size.ts +0 -28
  343. package/src/parsing/functions/split.ts +0 -45
  344. package/src/parsing/functions/string_distance.ts +0 -83
  345. package/src/parsing/functions/stringify.ts +0 -37
  346. package/src/parsing/functions/substring.ts +0 -68
  347. package/src/parsing/functions/sum.ts +0 -41
  348. package/src/parsing/functions/tail.ts +0 -39
  349. package/src/parsing/functions/temporal_utils.ts +0 -180
  350. package/src/parsing/functions/time.ts +0 -58
  351. package/src/parsing/functions/timestamp.ts +0 -37
  352. package/src/parsing/functions/to_float.ts +0 -50
  353. package/src/parsing/functions/to_integer.ts +0 -50
  354. package/src/parsing/functions/to_json.ts +0 -28
  355. package/src/parsing/functions/to_lower.ts +0 -28
  356. package/src/parsing/functions/to_string.ts +0 -32
  357. package/src/parsing/functions/trim.ts +0 -28
  358. package/src/parsing/functions/type.ts +0 -39
  359. package/src/parsing/functions/value_holder.ts +0 -13
  360. package/src/parsing/logic/case.ts +0 -26
  361. package/src/parsing/logic/else.ts +0 -12
  362. package/src/parsing/logic/end.ts +0 -9
  363. package/src/parsing/logic/then.ts +0 -12
  364. package/src/parsing/logic/when.ts +0 -12
  365. package/src/parsing/operations/aggregated_return.ts +0 -22
  366. package/src/parsing/operations/aggregated_with.ts +0 -18
  367. package/src/parsing/operations/call.ts +0 -69
  368. package/src/parsing/operations/create_node.ts +0 -39
  369. package/src/parsing/operations/create_relationship.ts +0 -38
  370. package/src/parsing/operations/delete_node.ts +0 -33
  371. package/src/parsing/operations/delete_relationship.ts +0 -32
  372. package/src/parsing/operations/group_by.ts +0 -137
  373. package/src/parsing/operations/limit.ts +0 -31
  374. package/src/parsing/operations/load.ts +0 -146
  375. package/src/parsing/operations/match.ts +0 -54
  376. package/src/parsing/operations/operation.ts +0 -69
  377. package/src/parsing/operations/order_by.ts +0 -126
  378. package/src/parsing/operations/projection.ts +0 -18
  379. package/src/parsing/operations/return.ts +0 -76
  380. package/src/parsing/operations/union.ts +0 -114
  381. package/src/parsing/operations/union_all.ts +0 -16
  382. package/src/parsing/operations/unwind.ts +0 -36
  383. package/src/parsing/operations/where.ts +0 -42
  384. package/src/parsing/operations/with.ts +0 -20
  385. package/src/parsing/parser.ts +0 -1641
  386. package/src/parsing/parser_state.ts +0 -25
  387. package/src/parsing/token_to_node.ts +0 -114
  388. package/src/tokenization/keyword.ts +0 -50
  389. package/src/tokenization/operator.ts +0 -25
  390. package/src/tokenization/string_walker.ts +0 -197
  391. package/src/tokenization/symbol.ts +0 -15
  392. package/src/tokenization/token.ts +0 -764
  393. package/src/tokenization/token_mapper.ts +0 -53
  394. package/src/tokenization/token_type.ts +0 -16
  395. package/src/tokenization/tokenizer.ts +0 -250
  396. package/src/tokenization/trie.ts +0 -117
  397. package/src/utils/object_utils.ts +0 -17
  398. package/src/utils/string_utils.ts +0 -114
  399. package/tests/compute/runner.test.ts +0 -4559
  400. package/tests/extensibility.test.ts +0 -643
  401. package/tests/graph/create.test.ts +0 -36
  402. package/tests/graph/data.test.ts +0 -58
  403. package/tests/graph/match.test.ts +0 -29
  404. package/tests/parsing/context.test.ts +0 -27
  405. package/tests/parsing/expression.test.ts +0 -303
  406. package/tests/parsing/parser.test.ts +0 -1327
  407. package/tests/tokenization/token_mapper.test.ts +0 -47
  408. package/tests/tokenization/tokenizer.test.ts +0 -191
  409. package/tests/tokenization/trie.test.ts +0 -20
  410. package/tsconfig.json +0 -19
  411. package/typedoc.json +0 -16
  412. package/vscode-settings.json.recommended +0 -16
  413. 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."""