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,643 +0,0 @@
1
- import {
2
- AggregateFunction,
3
- AsyncFunction,
4
- Function,
5
- FunctionCategory,
6
- FunctionDef,
7
- FunctionDefOptions,
8
- FunctionMetadata,
9
- OutputSchema,
10
- ParameterSchema,
11
- PredicateFunction,
12
- ReducerElement,
13
- } from "../src/extensibility";
14
- import {
15
- getFunctionMetadata,
16
- getRegisteredFunctionFactory,
17
- } from "../src/parsing/functions/function_metadata";
18
-
19
- describe("Extensibility API Exports", () => {
20
- test("Function class is exported and can be extended", () => {
21
- class CustomFunction extends Function {
22
- constructor() {
23
- super("customFunc");
24
- this._expectedParameterCount = 1;
25
- }
26
-
27
- public value(): string {
28
- return "custom value";
29
- }
30
- }
31
-
32
- const func = new CustomFunction();
33
- expect(func.name).toBe("customFunc");
34
- expect(func.toString()).toBe("Function (customFunc)");
35
- expect(func.value()).toBe("custom value");
36
- });
37
-
38
- test("Function validates parameter count when set", () => {
39
- class TwoParamFunction extends Function {
40
- constructor() {
41
- super("twoParam");
42
- this._expectedParameterCount = 2;
43
- }
44
- }
45
-
46
- const func = new TwoParamFunction();
47
-
48
- // Should throw when wrong number of parameters
49
- expect(() => {
50
- func.parameters = [];
51
- }).toThrow("Function twoParam expected 2 parameters, but got 0");
52
- });
53
-
54
- test("Function without expected parameter count accepts any number", () => {
55
- class FlexibleFunction extends Function {
56
- constructor() {
57
- super("flexible");
58
- // _expectedParameterCount is null by default
59
- }
60
- }
61
-
62
- const func = new FlexibleFunction();
63
- // Should not throw
64
- func.parameters = [];
65
- expect(func.getChildren().length).toBe(0);
66
- });
67
-
68
- test("AggregateFunction class is exported and can be extended", () => {
69
- class SumElement extends ReducerElement {
70
- private _value: number = 0;
71
- public get value(): number {
72
- return this._value;
73
- }
74
- public set value(v: number) {
75
- this._value = v;
76
- }
77
- }
78
-
79
- class CustomSum extends AggregateFunction {
80
- private _total: number = 0;
81
-
82
- constructor() {
83
- super("customSum");
84
- }
85
-
86
- public reduce(element: ReducerElement): void {
87
- this._total += element.value;
88
- }
89
-
90
- public element(): ReducerElement {
91
- const el = new SumElement();
92
- el.value = this._total;
93
- return el;
94
- }
95
-
96
- public value(): number {
97
- return this._total;
98
- }
99
- }
100
-
101
- const agg = new CustomSum();
102
- expect(agg.name).toBe("customSum");
103
-
104
- const elem = new SumElement();
105
- elem.value = 5;
106
- agg.reduce(elem);
107
- expect(agg.value()).toBe(5);
108
-
109
- const elem2 = new SumElement();
110
- elem2.value = 3;
111
- agg.reduce(elem2);
112
- expect(agg.value()).toBe(8);
113
- });
114
-
115
- test("PredicateFunction class is exported and can be extended", () => {
116
- class CustomPredicate extends PredicateFunction {
117
- constructor() {
118
- super("customPredicate");
119
- }
120
-
121
- public value(): boolean {
122
- return true;
123
- }
124
- }
125
-
126
- const pred = new CustomPredicate();
127
- expect(pred.name).toBe("customPredicate");
128
- expect(pred.toString()).toBe("PredicateFunction (customPredicate)");
129
- expect(pred.value()).toBe(true);
130
- });
131
-
132
- test("AsyncFunction class is exported and can be instantiated", () => {
133
- const asyncFunc = new AsyncFunction("testAsync");
134
- expect(asyncFunc.name).toBe("testAsync");
135
- });
136
-
137
- test("ReducerElement class is exported and can be extended", () => {
138
- class NumberElement extends ReducerElement {
139
- private _num: number = 0;
140
-
141
- public get value(): number {
142
- return this._num;
143
- }
144
-
145
- public set value(v: number) {
146
- this._num = v;
147
- }
148
- }
149
-
150
- const elem = new NumberElement();
151
- elem.value = 42;
152
- expect(elem.value).toBe(42);
153
- });
154
- });
155
-
156
- describe("FunctionDef Decorator", () => {
157
- test("FunctionDef decorator can be applied to a scalar function", () => {
158
- @FunctionDef({
159
- description: "Test function for extensibility",
160
- category: "scalar",
161
- parameters: [{ name: "input", description: "Input value", type: "string" }],
162
- output: { description: "Output value", type: "string" },
163
- examples: ["RETURN testExtFunc('hello')"],
164
- })
165
- class TestExtFunc extends Function {
166
- constructor() {
167
- super("testExtFunc");
168
- this._expectedParameterCount = 1;
169
- }
170
-
171
- public value(): string {
172
- return "test result";
173
- }
174
- }
175
-
176
- // Verify the decorated class still works correctly
177
- const instance = new TestExtFunc();
178
- expect(instance.name).toBe("testExtFunc");
179
- expect(instance.value()).toBe("test result");
180
- });
181
-
182
- test("FunctionDef decorator can be applied to an aggregate function", () => {
183
- @FunctionDef({
184
- description: "Test aggregate function",
185
- category: "aggregate",
186
- parameters: [{ name: "value", description: "Numeric value", type: "number" }],
187
- output: { description: "Aggregated result", type: "number" },
188
- })
189
- class TestAggExt extends AggregateFunction {
190
- private _sum: number = 0;
191
-
192
- constructor() {
193
- super("testAggExt");
194
- }
195
-
196
- public value(): number {
197
- return this._sum;
198
- }
199
- }
200
-
201
- const instance = new TestAggExt();
202
- expect(instance.name).toBe("testAggExt");
203
- expect(instance.value()).toBe(0);
204
- });
205
-
206
- test("FunctionDef decorator can be applied to an async provider", async () => {
207
- @FunctionDef({
208
- description: "Test async provider for extensibility",
209
- category: "async",
210
- parameters: [
211
- {
212
- name: "count",
213
- description: "Number of items",
214
- type: "number",
215
- required: false,
216
- default: 1,
217
- },
218
- ],
219
- output: { description: "Data object", type: "object" },
220
- })
221
- class Simple extends AsyncFunction {
222
- public async *generate(count: number = 1): AsyncGenerator<any> {
223
- for (let i = 0; i < count; i++) {
224
- yield { id: i, data: `item${i}` };
225
- }
226
- }
227
- }
228
-
229
- // Verify the decorated class still works correctly
230
- const loader = new Simple("simple");
231
- const results: any[] = [];
232
- for await (const item of loader.generate(2)) {
233
- results.push(item);
234
- }
235
- expect(results.length).toBe(2);
236
- expect(results[0]).toEqual({ id: 0, data: "item0" });
237
- expect(results[1]).toEqual({ id: 1, data: "item1" });
238
-
239
- // Verify the async provider was registered
240
- const provider = getRegisteredFunctionFactory("simple", "async");
241
- expect(provider).toBeDefined();
242
- expect(typeof provider).toBe("function");
243
-
244
- // Verify the metadata was registered
245
- const metadata = getFunctionMetadata("simple", "async");
246
- expect(metadata).toBeDefined();
247
- expect(metadata?.name).toBe("simple");
248
- expect(metadata?.category).toBe("async");
249
- expect(metadata?.description).toBe("Test async provider for extensibility");
250
- });
251
-
252
- test("FunctionDef decorator can be applied to a predicate function", () => {
253
- @FunctionDef({
254
- description: "Test predicate function",
255
- category: "predicate",
256
- parameters: [{ name: "list", description: "List to check", type: "array" }],
257
- output: { description: "Boolean result", type: "boolean" },
258
- })
259
- class TestPredExt extends PredicateFunction {
260
- constructor() {
261
- super("testPredExt");
262
- }
263
-
264
- public value(): boolean {
265
- return true;
266
- }
267
- }
268
-
269
- const instance = new TestPredExt();
270
- expect(instance.name).toBe("testPredExt");
271
- expect(instance.value()).toBe(true);
272
- });
273
- });
274
-
275
- describe("Type Exports", () => {
276
- test("FunctionMetadata type can be used", () => {
277
- const meta: FunctionMetadata = {
278
- name: "typeTest",
279
- description: "Testing type exports",
280
- category: "scalar",
281
- parameters: [],
282
- output: { description: "Output", type: "string" },
283
- };
284
-
285
- expect(meta.name).toBe("typeTest");
286
- expect(meta.description).toBe("Testing type exports");
287
- });
288
-
289
- test("ParameterSchema type can be used", () => {
290
- const param: ParameterSchema = {
291
- name: "testParam",
292
- description: "A test parameter",
293
- type: "string",
294
- required: true,
295
- default: "default value",
296
- example: "example value",
297
- };
298
-
299
- expect(param.name).toBe("testParam");
300
- expect(param.required).toBe(true);
301
- });
302
-
303
- test("ParameterSchema with nested types", () => {
304
- const arrayParam: ParameterSchema = {
305
- name: "items",
306
- description: "Array of items",
307
- type: "array",
308
- items: {
309
- description: "Item in array",
310
- type: "string",
311
- },
312
- };
313
-
314
- const objectParam: ParameterSchema = {
315
- name: "config",
316
- description: "Configuration object",
317
- type: "object",
318
- properties: {
319
- enabled: { description: "Is enabled", type: "boolean" },
320
- value: { description: "Value", type: "number" },
321
- },
322
- };
323
-
324
- expect(arrayParam.items?.type).toBe("string");
325
- expect(objectParam.properties?.enabled.type).toBe("boolean");
326
- });
327
-
328
- test("OutputSchema type can be used", () => {
329
- const output: OutputSchema = {
330
- description: "Result output",
331
- type: "object",
332
- properties: {
333
- success: { description: "Success flag", type: "boolean" },
334
- data: { description: "Result data", type: "array" },
335
- },
336
- example: { success: true, data: [] },
337
- };
338
-
339
- expect(output.type).toBe("object");
340
- expect(output.properties?.success.type).toBe("boolean");
341
- });
342
-
343
- test("FunctionCategory type accepts standard and custom categories", () => {
344
- const scalar: FunctionCategory = "scalar";
345
- const aggregate: FunctionCategory = "aggregate";
346
- const predicate: FunctionCategory = "predicate";
347
- const async: FunctionCategory = "async";
348
- const custom: FunctionCategory = "myCustomCategory";
349
-
350
- expect(scalar).toBe("scalar");
351
- expect(aggregate).toBe("aggregate");
352
- expect(predicate).toBe("predicate");
353
- expect(async).toBe("async");
354
- expect(custom).toBe("myCustomCategory");
355
- });
356
-
357
- test("FunctionDefOptions type can be used", () => {
358
- const options: FunctionDefOptions = {
359
- description: "Function options test",
360
- category: "scalar",
361
- parameters: [],
362
- output: { description: "Output", type: "string" },
363
- notes: "Some additional notes",
364
- };
365
-
366
- expect(options.description).toBe("Function options test");
367
- expect(options.notes).toBe("Some additional notes");
368
- });
369
- });
370
-
371
- describe("Plugin Functions Integration with FlowQuery", () => {
372
- // Import Runner for executing FlowQuery statements
373
- const Runner = require("../src/compute/runner").default;
374
-
375
- test("Custom scalar function can be used in a FlowQuery statement", async () => {
376
- // Define and register a custom function via @FunctionDef decorator
377
- @FunctionDef({
378
- description: "Doubles a number",
379
- category: "scalar",
380
- parameters: [{ name: "value", description: "Number to double", type: "number" }],
381
- output: { description: "Doubled value", type: "number" },
382
- })
383
- class Double extends Function {
384
- constructor() {
385
- super("double");
386
- this._expectedParameterCount = 1;
387
- }
388
-
389
- public value(): number {
390
- return this.getChildren()[0].value() * 2;
391
- }
392
- }
393
-
394
- // Execute a FlowQuery statement that uses the custom function
395
- const runner = new Runner("WITH 5 AS num RETURN double(num) AS result");
396
- await runner.run();
397
-
398
- expect(runner.results.length).toBe(1);
399
- expect(runner.results[0]).toEqual({ result: 10 });
400
- });
401
-
402
- test("Custom string function can be used in a FlowQuery statement", async () => {
403
- @FunctionDef({
404
- description: "Reverses a string",
405
- category: "scalar",
406
- parameters: [{ name: "text", description: "String to reverse", type: "string" }],
407
- output: { description: "Reversed string", type: "string" },
408
- })
409
- class StrReverse extends Function {
410
- constructor() {
411
- super("strreverse");
412
- this._expectedParameterCount = 1;
413
- }
414
-
415
- public value(): string {
416
- const input = String(this.getChildren()[0].value());
417
- return input.split("").reverse().join("");
418
- }
419
- }
420
-
421
- const runner = new Runner("WITH 'hello' AS s RETURN strreverse(s) AS reversed");
422
- await runner.run();
423
-
424
- expect(runner.results.length).toBe(1);
425
- expect(runner.results[0]).toEqual({ reversed: "olleh" });
426
- });
427
-
428
- test("Custom aggregate function can be used in a FlowQuery statement", async () => {
429
- // Create a custom reducer element for the aggregate
430
- class ProductElement extends ReducerElement {
431
- private _value: number = 1;
432
- public get value(): number {
433
- return this._value;
434
- }
435
- public set value(v: number) {
436
- this._value *= v;
437
- }
438
- }
439
-
440
- @FunctionDef({
441
- description: "Calculates the product of values",
442
- category: "aggregate",
443
- parameters: [{ name: "value", description: "Number to multiply", type: "number" }],
444
- output: { description: "Product of all values", type: "number" },
445
- })
446
- class Product extends AggregateFunction {
447
- constructor() {
448
- super("product");
449
- this._expectedParameterCount = 1;
450
- }
451
-
452
- public reduce(element: ReducerElement): void {
453
- element.value = this.firstChild().value();
454
- }
455
-
456
- public element(): ReducerElement {
457
- return new ProductElement();
458
- }
459
- }
460
-
461
- const runner = new Runner("UNWIND [2, 3, 4] AS num RETURN product(num) AS result");
462
- await runner.run();
463
-
464
- expect(runner.results.length).toBe(1);
465
- expect(runner.results[0]).toEqual({ result: 24 });
466
- });
467
-
468
- test("Custom function works with expressions and other functions", async () => {
469
- @FunctionDef({
470
- description: "Adds 100 to a number",
471
- category: "scalar",
472
- parameters: [{ name: "value", description: "Number", type: "number" }],
473
- output: { description: "Number plus 100", type: "number" },
474
- })
475
- class AddHundred extends Function {
476
- constructor() {
477
- super("addhundred");
478
- this._expectedParameterCount = 1;
479
- }
480
-
481
- public value(): number {
482
- return this.getChildren()[0].value() + 100;
483
- }
484
- }
485
-
486
- // Use the custom function with expressions
487
- const runner = new Runner("WITH 5 * 3 AS num RETURN addhundred(num) + 1 AS result");
488
- await runner.run();
489
-
490
- expect(runner.results.length).toBe(1);
491
- expect(runner.results[0]).toEqual({ result: 116 }); // (5*3) + 100 + 1 = 116
492
- });
493
-
494
- test("Multiple custom functions can be used together", async () => {
495
- @FunctionDef({
496
- description: "Triples a number",
497
- category: "scalar",
498
- parameters: [{ name: "value", description: "Number to triple", type: "number" }],
499
- output: { description: "Tripled value", type: "number" },
500
- })
501
- class Triple extends Function {
502
- constructor() {
503
- super("triple");
504
- this._expectedParameterCount = 1;
505
- }
506
-
507
- public value(): number {
508
- return this.getChildren()[0].value() * 3;
509
- }
510
- }
511
-
512
- @FunctionDef({
513
- description: "Squares a number",
514
- category: "scalar",
515
- parameters: [{ name: "value", description: "Number to square", type: "number" }],
516
- output: { description: "Squared value", type: "number" },
517
- })
518
- class Square extends Function {
519
- constructor() {
520
- super("square");
521
- this._expectedParameterCount = 1;
522
- }
523
-
524
- public value(): number {
525
- const v = this.getChildren()[0].value();
526
- return v * v;
527
- }
528
- }
529
-
530
- // Use both custom functions in a query
531
- const runner = new Runner(
532
- "WITH 2 AS num RETURN triple(num) AS tripled, square(num) AS squared"
533
- );
534
- await runner.run();
535
-
536
- expect(runner.results.length).toBe(1);
537
- expect(runner.results[0]).toEqual({ tripled: 6, squared: 4 });
538
- });
539
-
540
- test("Custom async provider can be used in LOAD JSON FROM statement", async () => {
541
- @FunctionDef({
542
- description: "Provides example data for testing",
543
- category: "async",
544
- parameters: [],
545
- output: { description: "Example data o.bject", type: "object" },
546
- })
547
- class GetExampleData extends AsyncFunction {
548
- public async *generate(): AsyncGenerator<any> {
549
- yield { id: 1, name: "Alice" };
550
- yield { id: 2, name: "Bob" };
551
- }
552
- }
553
-
554
- // Verify registration worked
555
- expect(getRegisteredFunctionFactory("getExampleData", "async")).toBeDefined();
556
-
557
- // Use the async provider in a FlowQuery statement
558
- const runner = new Runner(
559
- "LOAD JSON FROM getExampleData() AS data RETURN data.id AS id, data.name AS name"
560
- );
561
- await runner.run();
562
-
563
- expect(runner.results.length).toBe(2);
564
- expect(runner.results[0]).toEqual({ id: 1, name: "Alice" });
565
- expect(runner.results[1]).toEqual({ id: 2, name: "Bob" });
566
- });
567
-
568
- test("Function names are case-insensitive", async () => {
569
- @FunctionDef({
570
- description: "Test function for case insensitivity",
571
- category: "async",
572
- parameters: [],
573
- output: { description: "Test data", type: "object" },
574
- })
575
- class MixedCaseFunc extends AsyncFunction {
576
- public async *generate(): AsyncGenerator<any> {
577
- yield { value: 42 };
578
- }
579
- }
580
-
581
- // Verify registration works with different casings
582
- expect(getRegisteredFunctionFactory("MixedCaseFunc", "async")).toBeDefined();
583
- expect(getRegisteredFunctionFactory("mixedcasefunc", "async")).toBeDefined();
584
- expect(getRegisteredFunctionFactory("MIXEDCASEFUNC", "async")).toBeDefined();
585
- expect(getRegisteredFunctionFactory("mIxEdCaSeFuNc", "async")).toBeDefined();
586
-
587
- // Verify metadata lookup is case-insensitive
588
- expect(getFunctionMetadata("MixedCaseFunc", "async")).toBeDefined();
589
- expect(getFunctionMetadata("mixedcasefunc", "async")).toBeDefined();
590
- expect(getFunctionMetadata("MIXEDCASEFUNC", "async")).toBeDefined();
591
-
592
- // Test using different casings in FlowQuery statements
593
- const runner1 = new Runner("LOAD JSON FROM mixedcasefunc() AS d RETURN d.value AS v");
594
- await runner1.run();
595
- expect(runner1.results[0]).toEqual({ v: 42 });
596
-
597
- const runner2 = new Runner("LOAD JSON FROM MIXEDCASEFUNC() AS d RETURN d.value AS v");
598
- await runner2.run();
599
- expect(runner2.results[0]).toEqual({ v: 42 });
600
-
601
- const runner3 = new Runner("LOAD JSON FROM MixedCaseFunc() AS d RETURN d.value AS v");
602
- await runner3.run();
603
- expect(runner3.results[0]).toEqual({ v: 42 });
604
- });
605
-
606
- test("Custom function can be retrieved via functions() in a FlowQuery statement", async () => {
607
- @FunctionDef({
608
- description: "A unique test function for introspection",
609
- category: "scalar",
610
- parameters: [{ name: "x", description: "Input value", type: "number" }],
611
- output: { description: "Output value", type: "number" },
612
- })
613
- class IntrospectTestFunc extends Function {
614
- constructor() {
615
- super("introspectTestFunc");
616
- this._expectedParameterCount = 1;
617
- }
618
-
619
- public value(): number {
620
- return this.getChildren()[0].value() + 42;
621
- }
622
- }
623
-
624
- // First verify the function is registered
625
- const metadata = getFunctionMetadata("introspectTestFunc");
626
- expect(metadata).toBeDefined();
627
- expect(metadata?.name).toBe("introspecttestfunc");
628
-
629
- // Use functions() with UNWIND to find the registered function
630
- const runner = new Runner(`
631
- WITH functions() AS funcs
632
- UNWIND funcs AS f
633
- WITH f WHERE f.name = 'introspecttestfunc'
634
- RETURN f.name AS name, f.description AS description, f.category AS category
635
- `);
636
- await runner.run();
637
-
638
- expect(runner.results.length).toBe(1);
639
- expect(runner.results[0].name).toBe("introspecttestfunc");
640
- expect(runner.results[0].description).toBe("A unique test function for introspection");
641
- expect(runner.results[0].category).toBe("scalar");
642
- });
643
- });
@@ -1,36 +0,0 @@
1
- import Database from "../../src/graph/database";
2
- import PhysicalNode from "../../src/graph/physical_node";
3
- import PhysicalRelationship from "../../src/graph/physical_relationship";
4
- import CreateNode from "../../src/parsing/operations/create_node";
5
- import CreateRelationship from "../../src/parsing/operations/create_relationship";
6
- import Parser from "../../src/parsing/parser";
7
-
8
- test("Test CreateNode operation", async () => {
9
- const node = new PhysicalNode(null, "Person");
10
- expect(node.label).toBe("Person");
11
- expect(node.statement).toBeNull();
12
- const parser = new Parser();
13
- const statement = parser.parse("WITH 1 as x RETURN x");
14
- const op = new CreateNode(node, statement);
15
- await op.run();
16
- const db = Database.getInstance();
17
- const found = db.getNode(node);
18
- expect(found!.label).toBe(node.label);
19
- const data = await found!.data();
20
- expect(data).toEqual([{ x: 1 }]);
21
- });
22
-
23
- test("Test CreateRelationship operation", async () => {
24
- const relationship = new PhysicalRelationship();
25
- relationship.type = "KNOWS";
26
- expect(relationship.type).toBe("KNOWS");
27
- expect(relationship.statement).toBeNull();
28
- const parser = new Parser();
29
- const statement = parser.parse("WITH 1 as x RETURN x");
30
- const op = new CreateRelationship(relationship, statement);
31
- await op.run();
32
- const db = Database.getInstance();
33
- const found = db.getRelationship(relationship);
34
- const data = await found!.data();
35
- expect(data).toEqual([{ x: 1 }]);
36
- });