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,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
- });