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,130 +0,0 @@
1
- /**
2
- * FlowQuery Executor Utility
3
- *
4
- * Executes FlowQuery statements and handles errors gracefully.
5
- */
6
- import { FlowQuery } from "flowquery";
7
-
8
- /**
9
- * Result of executing a FlowQuery statement.
10
- */
11
- export interface FlowQueryExecutionResult {
12
- /** Whether the execution was successful */
13
- success: boolean;
14
- /** The query that was executed */
15
- query: string;
16
- /** The results from the query, if successful */
17
- results?: any[];
18
- /** Error message, if execution failed */
19
- error?: string;
20
- /** Execution time in milliseconds */
21
- executionTime: number;
22
- }
23
-
24
- /**
25
- * FlowQuery Executor class for executing FlowQuery statements.
26
- *
27
- * @example
28
- * ```typescript
29
- * const executor = new FlowQueryExecutor();
30
- * const result = await executor.execute("LOAD JSON FROM somePlugin(5) AS item RETURN item.text");
31
- * if (result.success) {
32
- * console.log(result.results);
33
- * } else {
34
- * console.error(result.error);
35
- * }
36
- * ```
37
- */
38
- export class FlowQueryExecutor {
39
- private defaultMaxItems: number;
40
-
41
- /**
42
- * Creates a new FlowQueryExecutor instance.
43
- * @param defaultMaxItems - Default maximum items to display when formatting results (default: 20)
44
- */
45
- constructor(defaultMaxItems: number = 20) {
46
- this.defaultMaxItems = defaultMaxItems;
47
- }
48
-
49
- /**
50
- * Execute a FlowQuery statement and return the results.
51
- *
52
- * @param query - The FlowQuery statement to execute
53
- * @returns The execution result including success status, results or error
54
- */
55
- async execute(query: string): Promise<FlowQueryExecutionResult> {
56
- const startTime = performance.now();
57
-
58
- try {
59
- // Validate the query is not empty
60
- if (!query || query.trim() === "") {
61
- return {
62
- success: false,
63
- query,
64
- error: "Query cannot be empty",
65
- executionTime: performance.now() - startTime,
66
- };
67
- }
68
-
69
- // Create a runner and execute the query
70
- const runner = new FlowQuery(query);
71
- await runner.run();
72
-
73
- // Get the results
74
- const results = runner.results;
75
-
76
- return {
77
- success: true,
78
- query,
79
- results: Array.isArray(results) ? results : [results],
80
- executionTime: performance.now() - startTime,
81
- };
82
- } catch (error) {
83
- const errorMessage = error instanceof Error ? error.message : String(error);
84
-
85
- return {
86
- success: false,
87
- query,
88
- error: errorMessage,
89
- executionTime: performance.now() - startTime,
90
- };
91
- }
92
- }
93
-
94
- /**
95
- * Format execution results for display or LLM consumption.
96
- *
97
- * @param result - The execution result to format
98
- * @param maxItems - Maximum number of items to include (uses default if not specified)
99
- * @returns A formatted string representation of the results
100
- */
101
- formatResult(result: FlowQueryExecutionResult, maxItems?: number): string {
102
- const limit = maxItems ?? this.defaultMaxItems;
103
-
104
- if (!result.success) {
105
- return `Execution Error: ${result.error}`;
106
- }
107
-
108
- const results = result.results || [];
109
- const totalCount = results.length;
110
- const displayResults = results.slice(0, limit);
111
-
112
- let output = `Execution successful (${result.executionTime.toFixed(2)}ms)\n`;
113
- output += `Total results: ${totalCount}\n\n`;
114
-
115
- if (totalCount === 0) {
116
- output += "No results returned.";
117
- } else {
118
- output += "Results:\n";
119
- output += JSON.stringify(displayResults, null, 2);
120
-
121
- if (totalCount > limit) {
122
- output += `\n\n... and ${totalCount - limit} more results`;
123
- }
124
- }
125
-
126
- return output;
127
- }
128
- }
129
-
130
- export default FlowQueryExecutor;
@@ -1,208 +0,0 @@
1
- /**
2
- * FlowQuery Extraction Utility
3
- *
4
- * Extracts FlowQuery statements from LLM responses.
5
- */
6
-
7
- /**
8
- * Extraction result containing the query and any explanation text.
9
- */
10
- export interface FlowQueryExtraction {
11
- /** The extracted FlowQuery statement, if found */
12
- query: string | null;
13
- /** Whether a query was successfully extracted */
14
- found: boolean;
15
- /** Any explanation text before the code block */
16
- explanation?: string;
17
- /** Whether the LLM indicated no query is needed */
18
- noQueryNeeded?: boolean;
19
- /** Message from the LLM if no query is needed */
20
- directResponse?: string;
21
- }
22
-
23
- /**
24
- * FlowQuery Extractor class for extracting FlowQuery statements from LLM responses.
25
- *
26
- * Looks for code blocks with flowquery, cypher, or sql language tags,
27
- * or generic code blocks that appear to contain FlowQuery syntax.
28
- *
29
- * @example
30
- * ```typescript
31
- * const extractor = new FlowQueryExtractor();
32
- * const response = `Here's the query:
33
- * \`\`\`flowquery
34
- * LOAD JSON FROM somePlugin(5) AS item
35
- * RETURN item.text
36
- * \`\`\``;
37
- *
38
- * const extraction = extractor.extract(response);
39
- * console.log(extraction.query); // "LOAD JSON FROM somePlugin(5) AS item\nRETURN item.text"
40
- * ```
41
- */
42
- export class FlowQueryExtractor {
43
- /** Regex patterns for matching code blocks with language tags */
44
- private readonly codeBlockPatterns: RegExp[] = [
45
- /```(?:flowquery|cypher|fql)\s*\n([\s\S]*?)```/i,
46
- /```(?:sql)\s*\n([\s\S]*?)```/i,
47
- /```\s*\n([\s\S]*?)```/, // Generic code block
48
- ];
49
-
50
- /** Keywords that indicate a FlowQuery statement */
51
- private readonly flowQueryKeywords: RegExp[] = [
52
- /\bMATCH\b/i,
53
- /\bCREATE\b/i,
54
- /\bWITH\b/i,
55
- /\bLOAD\s+JSON\s+FROM\b/i,
56
- /\bUNWIND\b/i,
57
- /\bRETURN\b/i,
58
- /\bWHERE\b/i,
59
- ];
60
-
61
- /** Keywords that can start a FlowQuery statement */
62
- private readonly startKeywords = /^(MATCH|CREATE|WITH|LOAD\s+JSON\s+FROM|UNWIND|CALL)\b/i;
63
-
64
- /** Keywords that can continue a FlowQuery statement */
65
- private readonly continueKeywords =
66
- /^(MATCH|CREATE|WITH|LOAD|UNWIND|WHERE|RETURN|CALL|YIELD|HEADERS|POST|AS)\b/i;
67
-
68
- /**
69
- * Extract a FlowQuery statement from an LLM response.
70
- *
71
- * @param llmResponse - The full text response from the LLM
72
- * @returns The extraction result
73
- */
74
- public extract(llmResponse: string): FlowQueryExtraction {
75
- if (!llmResponse || llmResponse.trim() === "") {
76
- return { query: null, found: false };
77
- }
78
-
79
- // Check for explicit "NO_QUERY_NEEDED" marker
80
- if (llmResponse.includes("[NO_QUERY_NEEDED]") || llmResponse.includes("NO_QUERY_NEEDED")) {
81
- // Extract the direct response after the marker
82
- const directMatch = llmResponse.match(/\[NO_QUERY_NEEDED\]\s*([\s\S]*)/i);
83
- return {
84
- query: null,
85
- found: false,
86
- noQueryNeeded: true,
87
- directResponse: directMatch ? directMatch[1].trim() : llmResponse,
88
- };
89
- }
90
-
91
- // Try to match code blocks with specific language tags
92
- for (const pattern of this.codeBlockPatterns) {
93
- const match = llmResponse.match(pattern);
94
- if (match && match[1]) {
95
- const query = match[1].trim();
96
-
97
- // Verify it looks like a FlowQuery statement
98
- if (this.isLikelyFlowQuery(query)) {
99
- // Extract explanation text before the code block
100
- const beforeMatch = llmResponse
101
- .substring(0, llmResponse.indexOf(match[0]))
102
- .trim();
103
-
104
- return {
105
- query,
106
- found: true,
107
- explanation: beforeMatch || undefined,
108
- };
109
- }
110
- }
111
- }
112
-
113
- // Try to extract inline FlowQuery if no code block found
114
- // Look for lines starting with FlowQuery keywords
115
- const inlineQuery = this.extractInlineQuery(llmResponse);
116
- if (inlineQuery) {
117
- return {
118
- query: inlineQuery,
119
- found: true,
120
- };
121
- }
122
-
123
- return { query: null, found: false };
124
- }
125
-
126
- /**
127
- * Extract multiple FlowQuery statements from an LLM response.
128
- * Useful when the LLM provides alternative queries.
129
- *
130
- * @param llmResponse - The full text response from the LLM
131
- * @returns Array of extracted queries
132
- */
133
- public extractAll(llmResponse: string): string[] {
134
- if (!llmResponse) return [];
135
-
136
- const queries: string[] = [];
137
- const codeBlockPattern = /```(?:flowquery|cypher|fql|sql)?\s*\n([\s\S]*?)```/gi;
138
-
139
- let match;
140
- while ((match = codeBlockPattern.exec(llmResponse)) !== null) {
141
- if (match[1]) {
142
- const query = match[1].trim();
143
- if (this.isLikelyFlowQuery(query)) {
144
- queries.push(query);
145
- }
146
- }
147
- }
148
-
149
- return queries;
150
- }
151
-
152
- /**
153
- * Check if a string looks like a FlowQuery statement.
154
- */
155
- private isLikelyFlowQuery(text: string): boolean {
156
- // Must contain at least one FlowQuery keyword
157
- return this.flowQueryKeywords.some((pattern) => pattern.test(text));
158
- }
159
-
160
- /**
161
- * Try to extract a FlowQuery statement that's not in a code block.
162
- */
163
- private extractInlineQuery(text: string): string | null {
164
- const lines = text.split("\n");
165
- const queryLines: string[] = [];
166
- let inQuery = false;
167
-
168
- for (const line of lines) {
169
- const trimmedLine = line.trim();
170
-
171
- if (!inQuery && this.startKeywords.test(trimmedLine)) {
172
- inQuery = true;
173
- queryLines.push(trimmedLine);
174
- } else if (inQuery) {
175
- // Check if this line continues the query
176
- if (
177
- this.continueKeywords.test(trimmedLine) ||
178
- trimmedLine.startsWith("{") ||
179
- trimmedLine.startsWith("}") ||
180
- trimmedLine === "" ||
181
- /^[A-Za-z_][A-Za-z0-9_]*\./.test(trimmedLine) ||
182
- /^\s+/.test(line)
183
- ) {
184
- // Indented line
185
- queryLines.push(trimmedLine);
186
- } else {
187
- // End of query
188
- break;
189
- }
190
- }
191
- }
192
-
193
- const query = queryLines.join("\n").trim();
194
- return query && this.isLikelyFlowQuery(query) ? query : null;
195
- }
196
- }
197
-
198
- // Convenience function for backward compatibility
199
- export function extractFlowQuery(llmResponse: string): FlowQueryExtraction {
200
- return new FlowQueryExtractor().extract(llmResponse);
201
- }
202
-
203
- // Convenience function for backward compatibility
204
- export function extractAllFlowQueries(llmResponse: string): string[] {
205
- return new FlowQueryExtractor().extractAll(llmResponse);
206
- }
207
-
208
- export default FlowQueryExtractor;
@@ -1,248 +0,0 @@
1
- /**
2
- * LLM (Large Language Model) Client
3
- *
4
- * Provides functions for making OpenAI-compatible API calls.
5
- * Supports both regular and streaming responses.
6
- */
7
- import { getStoredApiConfig } from "../components/ApiKeySettings";
8
-
9
- export interface LlmOptions {
10
- /** System prompt to use */
11
- systemPrompt?: string;
12
- /** Conversation history */
13
- messages?: Array<{ role: "user" | "assistant" | "system"; content: string }>;
14
- /** Model to use (defaults to stored model or gpt-4o-mini) */
15
- model?: string;
16
- /** Temperature for response generation (0-2, default 0.7) */
17
- temperature?: number;
18
- /** Maximum tokens in response */
19
- maxTokens?: number;
20
- /** API key override (uses stored key if not provided) */
21
- apiKey?: string;
22
- /** Organization ID override (uses stored org if not provided) */
23
- organizationId?: string;
24
- /** Base URL for API (defaults to OpenAI) */
25
- baseUrl?: string;
26
- }
27
-
28
- export interface LlmMessage {
29
- role: "user" | "assistant" | "system";
30
- content: string;
31
- }
32
-
33
- export interface LlmChoice {
34
- index: number;
35
- message: LlmMessage;
36
- finish_reason: string;
37
- }
38
-
39
- export interface LlmResponse {
40
- id: string;
41
- object: string;
42
- created: number;
43
- model: string;
44
- choices: LlmChoice[];
45
- usage?: {
46
- prompt_tokens: number;
47
- completion_tokens: number;
48
- total_tokens: number;
49
- };
50
- }
51
-
52
- export interface LlmStreamChoice {
53
- index: number;
54
- delta: {
55
- role?: string;
56
- content?: string;
57
- };
58
- finish_reason: string | null;
59
- }
60
-
61
- export interface LlmStreamChunk {
62
- id: string;
63
- object: string;
64
- created: number;
65
- model: string;
66
- choices: LlmStreamChoice[];
67
- }
68
-
69
- /**
70
- * Get the API configuration, merging stored config with provided options.
71
- */
72
- function getApiConfig(options: LlmOptions): {
73
- apiKey: string;
74
- orgId?: string;
75
- model: string;
76
- baseUrl: string;
77
- } {
78
- const storedConfig = getStoredApiConfig();
79
-
80
- const apiKey = options.apiKey || storedConfig?.apiKey;
81
- if (!apiKey) {
82
- throw new Error("No API key configured. Please set your OpenAI API key in settings.");
83
- }
84
-
85
- return {
86
- apiKey,
87
- orgId: options.organizationId || storedConfig?.organizationId,
88
- model: options.model || storedConfig?.model || "gpt-4o-mini",
89
- baseUrl: options.baseUrl || "https://api.openai.com/v1",
90
- };
91
- }
92
-
93
- /**
94
- * Build the messages array for the API request.
95
- */
96
- function buildMessages(content: string, options: LlmOptions): LlmMessage[] {
97
- const messages: LlmMessage[] = [];
98
-
99
- // Add system prompt if provided
100
- if (options.systemPrompt) {
101
- messages.push({
102
- role: "system",
103
- content: options.systemPrompt,
104
- });
105
- }
106
-
107
- // Add conversation history if provided
108
- if (options.messages && options.messages.length > 0) {
109
- messages.push(...options.messages);
110
- }
111
-
112
- // Add the current user message
113
- messages.push({
114
- role: "user",
115
- content,
116
- });
117
-
118
- return messages;
119
- }
120
-
121
- /**
122
- * Make a non-streaming LLM API call.
123
- *
124
- * @param content - The user's message content
125
- * @param options - LLM options including system prompt and conversation history
126
- * @returns Promise resolving to the LLM response
127
- */
128
- export async function llm(content: string, options: LlmOptions = {}): Promise<LlmResponse> {
129
- const config = getApiConfig(options);
130
- const messages = buildMessages(content, options);
131
-
132
- const headers: Record<string, string> = {
133
- "Content-Type": "application/json",
134
- Authorization: `Bearer ${config.apiKey}`,
135
- };
136
-
137
- if (config.orgId) {
138
- headers["OpenAI-Organization"] = config.orgId;
139
- }
140
-
141
- const response = await fetch(`${config.baseUrl}/chat/completions`, {
142
- method: "POST",
143
- headers,
144
- body: JSON.stringify({
145
- model: config.model,
146
- messages,
147
- temperature: options.temperature ?? 0.7,
148
- max_tokens: options.maxTokens,
149
- }),
150
- });
151
-
152
- if (!response.ok) {
153
- const errorBody = await response.text();
154
- throw new Error(`LLM API error (${response.status}): ${errorBody}`);
155
- }
156
-
157
- return response.json();
158
- }
159
-
160
- /**
161
- * Make a streaming LLM API call.
162
- *
163
- * @param content - The user's message content
164
- * @param options - LLM options including system prompt and conversation history
165
- * @yields LLM stream chunks as they arrive
166
- */
167
- export async function* llmStream(
168
- content: string,
169
- options: LlmOptions = {}
170
- ): AsyncGenerator<LlmStreamChunk, void, unknown> {
171
- const config = getApiConfig(options);
172
- const messages = buildMessages(content, options);
173
-
174
- const headers: Record<string, string> = {
175
- "Content-Type": "application/json",
176
- Authorization: `Bearer ${config.apiKey}`,
177
- };
178
-
179
- if (config.orgId) {
180
- headers["OpenAI-Organization"] = config.orgId;
181
- }
182
-
183
- const response = await fetch(`${config.baseUrl}/chat/completions`, {
184
- method: "POST",
185
- headers,
186
- body: JSON.stringify({
187
- model: config.model,
188
- messages,
189
- temperature: options.temperature ?? 0.7,
190
- max_tokens: options.maxTokens,
191
- stream: true,
192
- }),
193
- });
194
-
195
- if (!response.ok) {
196
- const errorBody = await response.text();
197
- throw new Error(`LLM API error (${response.status}): ${errorBody}`);
198
- }
199
-
200
- if (!response.body) {
201
- throw new Error("Response body is null");
202
- }
203
-
204
- const reader = response.body.getReader();
205
- const decoder = new TextDecoder();
206
- let buffer = "";
207
-
208
- try {
209
- while (true) {
210
- const { done, value } = await reader.read();
211
-
212
- if (done) {
213
- break;
214
- }
215
-
216
- buffer += decoder.decode(value, { stream: true });
217
-
218
- // Process complete SSE messages
219
- const lines = buffer.split("\n");
220
- buffer = lines.pop() || ""; // Keep incomplete line in buffer
221
-
222
- for (const line of lines) {
223
- const trimmedLine = line.trim();
224
-
225
- if (!trimmedLine || trimmedLine === ":") {
226
- continue;
227
- }
228
-
229
- if (trimmedLine === "data: [DONE]") {
230
- return;
231
- }
232
-
233
- if (trimmedLine.startsWith("data: ")) {
234
- const jsonStr = trimmedLine.slice(6);
235
- try {
236
- const chunk = JSON.parse(jsonStr) as LlmStreamChunk;
237
- yield chunk;
238
- } catch {
239
- // Skip invalid JSON chunks
240
- console.warn("Failed to parse LLM stream chunk:", jsonStr);
241
- }
242
- }
243
- }
244
- }
245
- } finally {
246
- reader.releaseLock();
247
- }
248
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Utils module exports
3
- */
4
-
5
- export { FlowQueryExecutor } from "./FlowQueryExecutor";
6
- export type { FlowQueryExecutionResult } from "./FlowQueryExecutor";
7
-
8
- export { FlowQueryExtractor, extractFlowQuery, extractAllFlowQueries } from "./FlowQueryExtractor";
9
- export type { FlowQueryExtraction } from "./FlowQueryExtractor";
10
-
11
- export { llm, llmStream } from "./Llm";
12
- export type { LlmOptions, LlmResponse, LlmStreamChunk } from "./Llm";
@@ -1,22 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "outDir": "./dist",
4
- "rootDir": ".",
5
- "target": "ES2020",
6
- "module": "ESNext",
7
- "moduleResolution": "bundler",
8
- "experimentalDecorators": true,
9
- "esModuleInterop": true,
10
- "forceConsistentCasingInFileNames": true,
11
- "strict": true,
12
- "skipLibCheck": true,
13
- "declaration": true,
14
- "sourceMap": true,
15
- "resolveJsonModule": true,
16
- "jsx": "react-jsx",
17
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
18
- "types": ["node", "jest"]
19
- },
20
- "include": ["src/**/*", "data/**/*"],
21
- "exclude": ["node_modules", "dist"]
22
- }
@@ -1,43 +0,0 @@
1
- const path = require("path");
2
- const HtmlWebpackPlugin = require("html-webpack-plugin");
3
-
4
- module.exports = {
5
- mode: "development",
6
- entry: "./src/index.tsx",
7
- target: "web",
8
- output: {
9
- filename: "bundle.js",
10
- path: path.resolve(__dirname, "dist"),
11
- clean: true,
12
- },
13
- resolve: {
14
- extensions: [".tsx", ".ts", ".js", ".jsx"],
15
- },
16
- module: {
17
- rules: [
18
- {
19
- test: /\.tsx?$/,
20
- use: "ts-loader",
21
- exclude: /node_modules/,
22
- },
23
- {
24
- test: /\.css$/,
25
- use: ["style-loader", "css-loader"],
26
- },
27
- ],
28
- },
29
- plugins: [
30
- new HtmlWebpackPlugin({
31
- template: "./public/index.html",
32
- }),
33
- ],
34
- devServer: {
35
- static: ["./dist", { directory: path.resolve(__dirname, "data"), publicPath: "/data" }],
36
- port: 3000,
37
- open: true,
38
- hot: true,
39
- },
40
- optimization: {
41
- minimize: false,
42
- },
43
- };
@@ -1 +0,0 @@
1
- Example apps using FlowQuery.