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,143 +0,0 @@
1
- import ASTNode from "../parsing/ast_node";
2
- import Node from "./node";
3
- import NodeData, { NodeRecord } from "./node_data";
4
- import PhysicalNode from "./physical_node";
5
- import PhysicalRelationship from "./physical_relationship";
6
- import Relationship from "./relationship";
7
- import RelationshipData, { RelationshipRecord } from "./relationship_data";
8
-
9
- class Database {
10
- private static instance: Database;
11
- private static nodes: Map<string, PhysicalNode> = new Map();
12
- private static relationships: Map<string, PhysicalRelationship> = new Map();
13
-
14
- public static getInstance(): Database {
15
- if (!Database.instance) {
16
- Database.instance = new Database();
17
- }
18
- return Database.instance;
19
- }
20
- public addNode(node: Node, statement: ASTNode): void {
21
- if (node.label === null) {
22
- throw new Error("Node label is null");
23
- }
24
- const physical = new PhysicalNode(null, node.label);
25
- physical.statement = statement;
26
- Database.nodes.set(node.label, physical);
27
- }
28
- public removeNode(node: Node): void {
29
- if (node.label === null) {
30
- throw new Error("Node label is null");
31
- }
32
- Database.nodes.delete(node.label);
33
- }
34
- public getNode(node: Node): PhysicalNode | null {
35
- return Database.nodes.get(node.label!) || null;
36
- }
37
- public addRelationship(relationship: Relationship, statement: ASTNode): void {
38
- if (relationship.type === null) {
39
- throw new Error("Relationship type is null");
40
- }
41
- const physical = new PhysicalRelationship(null, relationship.type);
42
- physical.statement = statement;
43
- physical.source = relationship.source;
44
- physical.target = relationship.target;
45
- Database.relationships.set(relationship.type, physical);
46
- }
47
- public removeRelationship(relationship: Relationship): void {
48
- if (relationship.type === null) {
49
- throw new Error("Relationship type is null");
50
- }
51
- Database.relationships.delete(relationship.type);
52
- }
53
- public getRelationship(relationship: Relationship): PhysicalRelationship | null {
54
- return Database.relationships.get(relationship.type!) || null;
55
- }
56
- public getRelationships(relationship: Relationship): PhysicalRelationship[] {
57
- const result: PhysicalRelationship[] = [];
58
- for (const type of relationship.types) {
59
- const physical = Database.relationships.get(type);
60
- if (physical) {
61
- result.push(physical);
62
- }
63
- }
64
- return result;
65
- }
66
- public async schema(): Promise<Record<string, any>[]> {
67
- const result: Record<string, any>[] = [];
68
-
69
- for (const [label, physical] of Database.nodes) {
70
- const records = await physical.data();
71
- const entry: Record<string, any> = { kind: "Node", label };
72
- if (records.length > 0) {
73
- const { id, ...sample } = records[0];
74
- const properties = Object.keys(sample);
75
- if (properties.length > 0) {
76
- entry.properties = properties;
77
- entry.sample = sample;
78
- }
79
- }
80
- result.push(entry);
81
- }
82
-
83
- for (const [type, physical] of Database.relationships) {
84
- const records = await physical.data();
85
- const entry: Record<string, any> = {
86
- kind: "Relationship",
87
- type,
88
- from_label: physical.source?.label || null,
89
- to_label: physical.target?.label || null,
90
- };
91
- if (records.length > 0) {
92
- const { left_id, right_id, ...sample } = records[0];
93
- const properties = Object.keys(sample);
94
- if (properties.length > 0) {
95
- entry.properties = properties;
96
- entry.sample = sample;
97
- }
98
- }
99
- result.push(entry);
100
- }
101
-
102
- return result;
103
- }
104
-
105
- public async getData(element: Node | Relationship): Promise<NodeData | RelationshipData> {
106
- if (element instanceof Node) {
107
- const node = this.getNode(element);
108
- if (node === null) {
109
- throw new Error(`Physical node not found for label ${element.label}`);
110
- }
111
- const data = await node.data();
112
- return new NodeData(data as NodeRecord[]);
113
- } else if (element instanceof Relationship) {
114
- if (element.types.length > 1) {
115
- const physicals = this.getRelationships(element);
116
- if (physicals.length === 0) {
117
- throw new Error(
118
- `No physical relationships found for types ${element.types.join(", ")}`
119
- );
120
- }
121
- const allRecords: RelationshipRecord[] = [];
122
- for (let i = 0; i < physicals.length; i++) {
123
- const records = (await physicals[i].data()) as RelationshipRecord[];
124
- const typeName = element.types[i];
125
- for (const record of records) {
126
- allRecords.push({ ...record, _type: typeName });
127
- }
128
- }
129
- return new RelationshipData(allRecords);
130
- }
131
- const relationship = this.getRelationship(element);
132
- if (relationship === null) {
133
- throw new Error(`Physical relationship not found for type ${element.type}`);
134
- }
135
- const data = await relationship.data();
136
- return new RelationshipData(data as RelationshipRecord[]);
137
- } else {
138
- throw new Error("Element is neither Node nor Relationship");
139
- }
140
- }
141
- }
142
-
143
- export default Database;
package/src/graph/hops.ts DELETED
@@ -1,22 +0,0 @@
1
- class Hops {
2
- private _min: number = 0;
3
- private _max: number = 1;
4
-
5
- public set min(min: number) {
6
- this._min = min;
7
- }
8
- public get min(): number {
9
- return this._min;
10
- }
11
- public set max(max: number) {
12
- this._max = max;
13
- }
14
- public get max(): number {
15
- return this._max;
16
- }
17
- public multi(): boolean {
18
- return this._max > 1 || this._max === -1;
19
- }
20
- }
21
-
22
- export default Hops;
package/src/graph/node.ts DELETED
@@ -1,122 +0,0 @@
1
- import ASTNode from "../parsing/ast_node";
2
- import Expression from "../parsing/expressions/expression";
3
- import NodeData, { NodeRecord } from "./node_data";
4
- import Relationship from "./relationship";
5
-
6
- class Node extends ASTNode {
7
- protected _identifier: string | null = null;
8
- protected _label: string | null = null;
9
- protected _properties: Map<string, Expression> = new Map();
10
- protected _value: NodeRecord | null = null;
11
-
12
- protected _incoming: Relationship | null = null;
13
- protected _outgoing: Relationship | null = null;
14
-
15
- private _data: NodeData | null = null;
16
-
17
- // Function to be called after each 'next' and 'find' operation
18
- // It is used to chain operations in a traversal
19
- // For example, after matching on a graph pattern, we may want to
20
- // continue to the next node or relationship in the pattern, or
21
- // perform the next operation in a statement.
22
- private _todoNext: (() => Promise<void>) | null = null;
23
-
24
- constructor(identifier: string | null = null, label: string | null = null) {
25
- super();
26
- this._identifier = identifier;
27
- this._label = label;
28
- }
29
- public set identifier(identifier: string) {
30
- this._identifier = identifier;
31
- }
32
- public get identifier(): string | null {
33
- return this._identifier;
34
- }
35
- public set label(label: string) {
36
- this._label = label;
37
- }
38
- public get label(): string | null {
39
- return this._label;
40
- }
41
- public get properties(): Map<string, Expression> {
42
- return this._properties;
43
- }
44
- public set properties(properties: Map<string, Expression>) {
45
- this._properties = properties;
46
- }
47
- private _matchesProperties(hop: number = 0): boolean {
48
- const data: NodeData = this._data!;
49
- for (const [key, expression] of this._properties) {
50
- const record: NodeRecord = data.current(hop)!;
51
- if (record === null) {
52
- throw new Error("No current node data available");
53
- }
54
- if (!(key in record)) {
55
- throw new Error("Node does not have property");
56
- }
57
- return record[key] === expression.value();
58
- }
59
- return true;
60
- }
61
- public setProperty(key: string, value: Expression): void {
62
- this._properties.set(key, value);
63
- }
64
- public getProperty(key: string): Expression | null {
65
- return this._properties.get(key) || null;
66
- }
67
- public setValue(value: NodeRecord): void {
68
- this._value = value;
69
- }
70
- public value(): NodeRecord | null {
71
- return this._value;
72
- }
73
- public set outgoing(relationship: Relationship | null) {
74
- this._outgoing = relationship;
75
- }
76
- public get outgoing(): Relationship | null {
77
- return this._outgoing;
78
- }
79
- public set incoming(relationship: Relationship | null) {
80
- this._incoming = relationship;
81
- }
82
- public get incoming(): Relationship | null {
83
- return this._incoming;
84
- }
85
- public setData(data: NodeData | null): void {
86
- this._data = data;
87
- }
88
- public async next(): Promise<void> {
89
- this._data?.reset();
90
- while (this._data?.next()) {
91
- this.setValue(this._data?.current()!);
92
- if (!this._matchesProperties()) {
93
- continue;
94
- }
95
- await this._outgoing?.find(this._value!.id);
96
- await this.runTodoNext();
97
- }
98
- }
99
- public async find(id: string, hop: number = 0): Promise<void> {
100
- this._data?.reset();
101
- while (this._data?.find(id, hop)) {
102
- this.setValue(this._data?.current(hop) as NodeRecord);
103
- if (!this._matchesProperties(hop)) {
104
- continue;
105
- }
106
- this._incoming?.setEndNode(this);
107
- await this._outgoing?.find(this._value!.id, hop);
108
- await this.runTodoNext();
109
- }
110
- }
111
- // For setting a function to be called after each 'next' and 'find' operation
112
- public set todoNext(func: (() => Promise<void>) | null) {
113
- this._todoNext = func;
114
- }
115
- public async runTodoNext(): Promise<void> {
116
- if (this._todoNext) {
117
- await this._todoNext();
118
- }
119
- }
120
- }
121
-
122
- export default Node;
@@ -1,18 +0,0 @@
1
- import Data from "./data";
2
-
3
- export type NodeRecord = { id: string } & Record<string, any>;
4
-
5
- class NodeData extends Data {
6
- constructor(records: NodeRecord[] = []) {
7
- super(records);
8
- super._buildIndex("id");
9
- }
10
- public find(id: string, hop: number = 0): boolean {
11
- return super._find(id, hop, "id");
12
- }
13
- public current(hop: number = 0): NodeRecord | null {
14
- return super.current(hop) as NodeRecord | null;
15
- }
16
- }
17
-
18
- export default NodeData;
@@ -1,38 +0,0 @@
1
- import ASTNode from "../parsing/ast_node";
2
- import Node from "./node";
3
-
4
- class NodeReference extends Node {
5
- private _reference: ASTNode | null = null;
6
- constructor(base: Node, reference: ASTNode) {
7
- super();
8
- this._identifier = base.identifier;
9
- this._label = base.label;
10
- this._properties = base.properties;
11
- this._outgoing = base.outgoing;
12
- this._incoming = base.incoming;
13
- this._reference = reference;
14
- }
15
- public get reference(): ASTNode | null {
16
- return this._reference;
17
- }
18
- public async next(): Promise<void> {
19
- const referenced = this._reference?.value();
20
- if (referenced == null) {
21
- return;
22
- }
23
- this.setValue(referenced);
24
- await this._outgoing?.find(this._value!.id);
25
- await this.runTodoNext();
26
- }
27
- public async find(id: string, hop: number = 0): Promise<void> {
28
- const referenced = this._reference?.value();
29
- if (id !== referenced?.id) {
30
- return;
31
- }
32
- this.setValue(referenced!);
33
- await this._outgoing?.find(this._value!.id, hop);
34
- await this.runTodoNext();
35
- }
36
- }
37
-
38
- export default NodeReference;
@@ -1,110 +0,0 @@
1
- import ASTNode from "../parsing/ast_node";
2
- import Database from "./database";
3
- import Node from "./node";
4
- import NodeData from "./node_data";
5
- import NodeReference from "./node_reference";
6
- import Relationship from "./relationship";
7
- import RelationshipData from "./relationship_data";
8
- import RelationshipReference from "./relationship_reference";
9
-
10
- class Pattern extends ASTNode {
11
- private _identifier: string | null = null;
12
- protected _chain: (Node | Relationship)[] = [];
13
- public set identifier(id: string | null) {
14
- this._identifier = id;
15
- }
16
- public get identifier(): string | null {
17
- return this._identifier;
18
- }
19
- public addElement(element: Relationship | Node): void {
20
- if (
21
- this._chain.length > 0 &&
22
- this._chain[this._chain.length - 1].constructor === element.constructor
23
- ) {
24
- throw new Error(
25
- "Cannot add two consecutive elements of the same type to the graph pattern"
26
- );
27
- }
28
- if (this._chain.length > 0) {
29
- const last = this._chain[this._chain.length - 1];
30
- if (last instanceof Node && element instanceof Relationship) {
31
- last.outgoing = element as Relationship;
32
- element.source = last as Node;
33
- }
34
- if (last instanceof Relationship && element instanceof Node) {
35
- last.target = element as Node;
36
- element.incoming = last as Relationship;
37
- }
38
- }
39
- this._chain.push(element);
40
- }
41
- public get chain(): (Node | Relationship)[] {
42
- return this._chain;
43
- }
44
- public get startNode(): Node {
45
- if (this._chain.length === 0) {
46
- throw new Error("Pattern is empty");
47
- }
48
- const first = this._chain[0];
49
- if (first instanceof Node) {
50
- return first;
51
- }
52
- throw new Error("Pattern does not start with a node");
53
- }
54
- public get endNode(): Node {
55
- if (this._chain.length === 0) {
56
- throw new Error("Pattern is empty");
57
- }
58
- const last = this._chain[this._chain.length - 1];
59
- if (last instanceof Node) {
60
- return last;
61
- }
62
- throw new Error("Pattern does not end with a node");
63
- }
64
- public value(): any {
65
- return Array.from(this.values());
66
- }
67
- public *values(): Generator<any> {
68
- for (let i = 0; i < this._chain.length; i++) {
69
- const element = this._chain[i];
70
- if (element instanceof Node) {
71
- // Skip node if previous element was a zero-hop relationship (no matches)
72
- if (
73
- i > 0 &&
74
- this._chain[i - 1] instanceof Relationship &&
75
- (this._chain[i - 1] as Relationship).matches.length === 0
76
- ) {
77
- continue;
78
- }
79
- yield element.value();
80
- } else if (element instanceof Relationship) {
81
- let j = 0;
82
- for (const match of element.matches) {
83
- yield match;
84
- if (j < element.matches.length - 1) {
85
- yield match.endNode;
86
- }
87
- j++;
88
- }
89
- }
90
- }
91
- }
92
- public async fetchData(): Promise<void> {
93
- const db: Database = Database.getInstance();
94
- for (const element of this._chain) {
95
- if (
96
- element.constructor === NodeReference ||
97
- element.constructor === RelationshipReference
98
- ) {
99
- continue;
100
- }
101
- const data = await db.getData(element);
102
- if (element.constructor === Node) {
103
- element.setData(data as NodeData);
104
- } else if (element.constructor === Relationship) {
105
- element.setData(data as RelationshipData);
106
- }
107
- }
108
- }
109
- }
110
- export default Pattern;
@@ -1,48 +0,0 @@
1
- import Node from "./node";
2
- import NodeReference from "./node_reference";
3
- import Pattern from "./pattern";
4
- import Relationship from "./relationship";
5
-
6
- class PatternExpression extends Pattern {
7
- private _fetched: boolean = false;
8
- private _evaluation: boolean = false;
9
- public set identifier(id: string | null) {
10
- throw new Error("Cannot set identifier on PatternExpression");
11
- }
12
- public addElement(element: Relationship | Node): void {
13
- super.addElement(element);
14
- }
15
- public verify(): void {
16
- if (this._chain.length === 0) {
17
- throw new Error("PatternExpression must contain at least one element");
18
- }
19
- const referenced = this._chain.some((element) => {
20
- if (element instanceof NodeReference) {
21
- return true;
22
- }
23
- return false;
24
- });
25
- if (!referenced) {
26
- throw new Error("PatternExpression must contain at least one NodeReference");
27
- }
28
- }
29
- public async evaluate(): Promise<void> {
30
- this._evaluation = false;
31
- this.endNode.todoNext = async () => {
32
- this._evaluation = true;
33
- };
34
- await this.startNode.next();
35
- }
36
- public value(): boolean {
37
- return this._evaluation;
38
- }
39
- public async fetchData(): Promise<void> {
40
- if (this._fetched) {
41
- return;
42
- }
43
- await super.fetchData();
44
- this._fetched = true;
45
- }
46
- }
47
-
48
- export default PatternExpression;
@@ -1,36 +0,0 @@
1
- import Pattern from "./pattern";
2
-
3
- class Patterns {
4
- private _patterns: Pattern[] = [];
5
- constructor(patterns: Pattern[] = []) {
6
- this._patterns = patterns;
7
- }
8
- public get patterns(): Pattern[] {
9
- return this._patterns;
10
- }
11
- public async initialize(): Promise<void> {
12
- let previous: Pattern | null = null;
13
- for (const pattern of this._patterns) {
14
- await pattern.fetchData(); // Ensure data is loaded
15
- if (previous !== null) {
16
- // Chain the patterns together
17
- previous.endNode.todoNext = async () => {
18
- await pattern.startNode.next();
19
- };
20
- }
21
- previous = pattern;
22
- }
23
- }
24
- public set toDoNext(func: () => Promise<void>) {
25
- if (this._patterns.length > 0) {
26
- this._patterns[this._patterns.length - 1].endNode.todoNext = func;
27
- }
28
- }
29
- public async traverse(): Promise<void> {
30
- if (this._patterns.length > 0) {
31
- await this._patterns[0].startNode.next();
32
- }
33
- }
34
- }
35
-
36
- export default Patterns;
@@ -1,23 +0,0 @@
1
- import Runner from "../compute/runner";
2
- import ASTNode from "../parsing/ast_node";
3
- import Node from "./node";
4
-
5
- class PhysicalNode extends Node {
6
- private _statement: ASTNode | null = null;
7
- public set statement(statement: ASTNode | null) {
8
- this._statement = statement;
9
- }
10
- public get statement(): ASTNode | null {
11
- return this._statement;
12
- }
13
- public async data(): Promise<Record<string, any>[]> {
14
- if (this._statement === null) {
15
- throw new Error("Statement is null");
16
- }
17
- const runner = new Runner(null, this._statement);
18
- await runner.run();
19
- return runner.results;
20
- }
21
- }
22
-
23
- export default PhysicalNode;
@@ -1,23 +0,0 @@
1
- import Runner from "../compute/runner";
2
- import ASTNode from "../parsing/ast_node";
3
- import Relationship from "./relationship";
4
-
5
- class PhysicalRelationship extends Relationship {
6
- private _statement: ASTNode | null = null;
7
- public set statement(statement: ASTNode | null) {
8
- this._statement = statement;
9
- }
10
- public get statement(): ASTNode | null {
11
- return this._statement;
12
- }
13
- public async data(): Promise<Record<string, any>[]> {
14
- if (this._statement === null) {
15
- throw new Error("Statement is null");
16
- }
17
- const runner = new Runner(null, this._statement);
18
- await runner.run();
19
- return runner.results;
20
- }
21
- }
22
-
23
- export default PhysicalRelationship;