Flowfile 0.5.4__py3-none-any.whl → 0.6.1__py3-none-any.whl

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 (259) hide show
  1. flowfile/__main__.py +94 -1
  2. flowfile/api.py +8 -6
  3. flowfile/web/static/assets/{AdminView-f9847d67.js → AdminView-C4K1DdHI.js} +28 -33
  4. flowfile/web/static/assets/{CloudConnectionView-faace55b.js → CloudConnectionView-BZbPvPUL.js} +39 -50
  5. flowfile/web/static/assets/{CloudStorageReader-24c54524.css → CloudStorageReader-BDByiqPI.css} +25 -25
  6. flowfile/web/static/assets/{CloudStorageReader-d86ecaa7.js → CloudStorageReader-DLVukNJ7.js} +30 -35
  7. flowfile/web/static/assets/{CloudStorageWriter-0f4d9a44.js → CloudStorageWriter-Bfi-C1QW.js} +32 -37
  8. flowfile/web/static/assets/{CloudStorageWriter-60547855.css → CloudStorageWriter-y8jL8yjG.css} +24 -24
  9. flowfile/web/static/assets/{ColumnActionInput-f4189ae0.js → ColumnActionInput-BpiCApw9.js} +7 -12
  10. flowfile/web/static/assets/{ColumnSelector-e66b33da.js → ColumnSelector-CEAwedI7.js} +1 -2
  11. flowfile/web/static/assets/ContextMenu-CdojQu0w.js +9 -0
  12. flowfile/web/static/assets/ContextMenu-D12mhsy1.js +9 -0
  13. flowfile/web/static/assets/ContextMenu-EWUR98va.js +9 -0
  14. flowfile/web/static/assets/{ContextMenu.vue_vue_type_script_setup_true_lang-a1bd6314.js → ContextMenu.vue_vue_type_script_setup_true_lang-I4rXXd6G.js} +4 -5
  15. flowfile/web/static/assets/{CrossJoin-24694b8f.js → CrossJoin-BOFfxkJO.js} +19 -18
  16. flowfile/web/static/assets/{CrossJoin-71b4cc10.css → CrossJoin-Cmbyt9im.css} +18 -18
  17. flowfile/web/static/assets/{CustomNode-569d45ff.js → CustomNode-Bhpezobq.js} +12 -17
  18. flowfile/web/static/assets/{DatabaseConnectionSettings-cfc08938.js → DatabaseConnectionSettings-Dw3bSJKB.js} +10 -11
  19. flowfile/web/static/assets/{DatabaseReader-5bf8c75b.css → DatabaseReader-D6pUNUCs.css} +21 -21
  20. flowfile/web/static/assets/{DatabaseReader-701feabb.js → DatabaseReader-m87ghlw0.js} +36 -34
  21. flowfile/web/static/assets/{DatabaseView-0482e5b5.js → DatabaseView-CisSAtpe.js} +30 -38
  22. flowfile/web/static/assets/{DatabaseWriter-16721989.js → DatabaseWriter-Bbj9JLdL.js} +33 -35
  23. flowfile/web/static/assets/{DatabaseWriter-bdcf2c8b.css → DatabaseWriter-RBqdFLj8.css} +17 -17
  24. flowfile/web/static/assets/{DesignerView-f64749fb.js → DesignerView-DemDevTQ.js} +1841 -2090
  25. flowfile/web/static/assets/{DesignerView-49abb835.css → DesignerView-Dm6OzlIc.css} +244 -202
  26. flowfile/web/static/assets/{DocumentationView-61bd2990.js → DocumentationView-BrC1ZR3H.js} +3 -4
  27. flowfile/web/static/assets/{ExploreData-e2735b13.js → ExploreData-BMKcDuRb.js} +8 -10
  28. flowfile/web/static/assets/{ExternalSource-2535c3b2.js → ExternalSource-BXrNNS-f.js} +40 -42
  29. flowfile/web/static/assets/{ExternalSource-7ac7373f.css → ExternalSource-NB6WVl5R.css} +14 -14
  30. flowfile/web/static/assets/{Filter-2cdbc93c.js → Filter-C2MjsN6P.js} +36 -33
  31. flowfile/web/static/assets/{Filter-7494ea97.css → Filter-DCMGGuGC.css} +9 -9
  32. flowfile/web/static/assets/{Formula-53d58c43.css → Formula-BYafbDj8.css} +4 -4
  33. flowfile/web/static/assets/{Formula-fcda3c2c.js → Formula-ufuy4mVD.js} +27 -26
  34. flowfile/web/static/assets/{FuzzyMatch-ad6361d6.css → FuzzyMatch-BGJAwgd0.css} +42 -42
  35. flowfile/web/static/assets/{FuzzyMatch-f8d3b7d3.js → FuzzyMatch-BOHODq3h.js} +36 -38
  36. flowfile/web/static/assets/{GraphSolver-72eaa695.js → GraphSolver-B6ZzpNGO.js} +23 -21
  37. flowfile/web/static/assets/{GraphSolver-4b4d7db9.css → GraphSolver-DFN83sj3.css} +4 -4
  38. flowfile/web/static/assets/{GroupBy-8aa0598b.js → GroupBy-B9BRNcfe.js} +30 -29
  39. flowfile/web/static/assets/{Sort-4abb7fae.css → GroupBy-x4ooP5np.css} +1 -1
  40. flowfile/web/static/assets/Join-Bx_g5bZz.css +118 -0
  41. flowfile/web/static/assets/{Join-e40f0ffa.js → Join-DsBEy1IH.js} +48 -43
  42. flowfile/web/static/assets/{LoginView-5111c9ae.js → LoginView-Ct0rhdcO.js} +1 -2
  43. flowfile/web/static/assets/{ManualInput-3702e677.css → ManualInput-DlZmtMdt.css} +48 -48
  44. flowfile/web/static/assets/{ManualInput-9b6f3224.js → ManualInput-bC4BUgnG.js} +85 -44
  45. flowfile/web/static/assets/{MultiSelect-ef28e19e.js → MultiSelect-DIQ8PuTC.js} +2 -2
  46. flowfile/web/static/assets/{MultiSelect.vue_vue_type_script_setup_true_lang-83b3bbfd.js → MultiSelect.vue_vue_type_script_setup_true_lang-BefHfqTI.js} +1 -1
  47. flowfile/web/static/assets/{NodeDesigner-d2b7ee2b.js → NodeDesigner-D39yzr2k.js} +178 -208
  48. flowfile/web/static/assets/{NodeDesigner-94cd4dd3.css → NodeDesigner-R0l6sYyY.css} +76 -76
  49. flowfile/web/static/assets/{NumericInput-1d789794.js → NumericInput-DMSX3oOr.js} +2 -2
  50. flowfile/web/static/assets/{NumericInput.vue_vue_type_script_setup_true_lang-7775f83e.js → NumericInput.vue_vue_type_script_setup_true_lang-d0YlVHAl.js} +1 -1
  51. flowfile/web/static/assets/{Output-cefef801.js → Output-D0VoXGcW.js} +26 -34
  52. flowfile/web/static/assets/{Output-692dd25d.css → Output-DsmglIDy.css} +5 -5
  53. flowfile/web/static/assets/{Pivot-bab1b75b.js → Pivot-BnMB4sEe.js} +26 -26
  54. flowfile/web/static/assets/{Pivot-0eda81b4.css → Pivot-qKTyWxop.css} +4 -4
  55. flowfile/web/static/assets/{PivotValidation-fba09336.js → PivotValidation-B2lWvugt.js} +7 -9
  56. flowfile/web/static/assets/{PivotValidation-e7941f91.js → PivotValidation-BPlhRjpL.js} +7 -9
  57. flowfile/web/static/assets/{PolarsCode-740e40fa.js → PolarsCode-5h0tHnWR.js} +22 -20
  58. flowfile/web/static/assets/PopOver-BHpt5rsj.js +134 -0
  59. flowfile/web/static/assets/{PopOver-d96599db.css → PopOver-CyYM4-rV.css} +1 -1
  60. flowfile/web/static/assets/{Read-90f366bc.css → Read-DJxkrTb_.css} +10 -10
  61. flowfile/web/static/assets/Read-TsLEFh3B.js +227 -0
  62. flowfile/web/static/assets/{RecordCount-ffc71eca.js → RecordCount-DkVixq9v.js} +18 -17
  63. flowfile/web/static/assets/{RecordId-a70bb8df.js → RecordId-C2UEGlCf.js} +42 -39
  64. flowfile/web/static/assets/{SQLQueryComponent-15a421f5.js → SQLQueryComponent-Dr5KMoD3.js} +2 -3
  65. flowfile/web/static/assets/{Sample-6c26afc7.js → Sample-Cb3eQNmd.js} +30 -30
  66. flowfile/web/static/assets/{SecretSelector-ceed9496.js → SecretSelector-De2L2bSx.js} +3 -4
  67. flowfile/web/static/assets/{SecretsView-214d255a.js → SecretsView-CheC9BPV.js} +13 -16
  68. flowfile/web/static/assets/{Select-8fc29999.js → Select-CI8TloRs.js} +41 -36
  69. flowfile/web/static/assets/{SettingsSection-9f0d1725.js → SettingsSection-B39ulIiI.js} +1 -2
  70. flowfile/web/static/assets/{SettingsSection-83090218.js → SettingsSection-BiCc7S9h.js} +1 -2
  71. flowfile/web/static/assets/{SettingsSection-3f70e4c3.js → SettingsSection-CITK_R7o.js} +2 -3
  72. flowfile/web/static/assets/{SettingsSection-26fe48d4.css → SettingsSection-D2GgY-Aq.css} +4 -4
  73. flowfile/web/static/assets/{SetupView-3fa0aa03.js → SetupView-C1aXRDvp.js} +3 -4
  74. flowfile/web/static/assets/{SetupView-e2da3442.css → SetupView-CI1nd-5Z.css} +38 -38
  75. flowfile/web/static/assets/{SingleSelect-a4a568cb.js → SingleSelect-Kr_hz90m.js} +2 -2
  76. flowfile/web/static/assets/{SingleSelect.vue_vue_type_script_setup_true_lang-c8ebdd33.js → SingleSelect.vue_vue_type_script_setup_true_lang-Rxht5Z5N.js} +1 -1
  77. flowfile/web/static/assets/{SliderInput-be533e71.js → SliderInput-CLqpCxCb.js} +1 -2
  78. flowfile/web/static/assets/{GroupBy-5792782d.css → Sort-BIt2kc_p.css} +1 -1
  79. flowfile/web/static/assets/{Sort-154dad81.js → Sort-Dnw_J6Qi.js} +25 -25
  80. flowfile/web/static/assets/{TextInput-454e2bda.js → TextInput-wdlunIZC.js} +2 -2
  81. flowfile/web/static/assets/{TextInput.vue_vue_type_script_setup_true_lang-e86510d0.js → TextInput.vue_vue_type_script_setup_true_lang-Bcj3ywzv.js} +1 -1
  82. flowfile/web/static/assets/{TextToRows-ea73433d.js → TextToRows-BhtyGWPq.js} +42 -49
  83. flowfile/web/static/assets/{TextToRows-12afb4f4.css → TextToRows-DivDOLDx.css} +9 -9
  84. flowfile/web/static/assets/{ToggleSwitch-9d7b30f1.js → ToggleSwitch-B-6WzfFf.js} +2 -2
  85. flowfile/web/static/assets/{ToggleSwitch.vue_vue_type_script_setup_true_lang-00f2580e.js → ToggleSwitch.vue_vue_type_script_setup_true_lang-Cj8LqT-b.js} +1 -1
  86. flowfile/web/static/assets/{UnavailableFields-b72a2c72.js → UnavailableFields-Yf6XSqFB.js} +2 -3
  87. flowfile/web/static/assets/{Union-1e44f263.js → Union-CwpjeKYC.js} +20 -23
  88. flowfile/web/static/assets/{Unpivot-b6ad6427.css → Union-DQJcpp3-.css} +6 -6
  89. flowfile/web/static/assets/{Unique-a3bc6d0a.js → Unique-25v3urqH.js} +75 -74
  90. flowfile/web/static/assets/{Union-d6a8d7d5.css → Unpivot-Deqh1gtI.css} +6 -6
  91. flowfile/web/static/assets/{Unpivot-e27935fc.js → Unpivot-sYcTTXrq.js} +34 -27
  92. flowfile/web/static/assets/{UnpivotValidation-72497680.js → UnpivotValidation-C5DDEKY2.js} +5 -7
  93. flowfile/web/static/assets/VueGraphicWalker-B8l1_Z92.js +131 -0
  94. flowfile/web/static/assets/VueGraphicWalker-Da_1-3me.css +21 -0
  95. flowfile/web/static/assets/{api-a2102880.js → api-C0LvF-0C.js} +1 -1
  96. flowfile/web/static/assets/{api-f75042b0.js → api-DaC83EO_.js} +1 -1
  97. flowfile/web/static/assets/client-C8Ygr6Gb.js +42 -0
  98. flowfile/web/static/assets/{dropDown-2798a109.js → dropDown-D5YXaPRR.js} +7 -12
  99. flowfile/web/static/assets/{fullEditor-cf7d7d93.js → fullEditor-BVYnWm05.js} +300 -18
  100. flowfile/web/static/assets/genericNodeSettings-2wAu-QKn.css +75 -0
  101. flowfile/web/static/assets/genericNodeSettings-BBtW_Cpz.js +590 -0
  102. flowfile/web/static/assets/{VueGraphicWalker-d9ab70a3.js → graphic-walker.es-VrK6vdGE.js} +92305 -89751
  103. flowfile/web/static/assets/index-BCJxPfM5.js +6693 -0
  104. flowfile/web/static/assets/{index-f0a6e5a5.js → index-CHPMUR0d.js} +150 -170
  105. flowfile/web/static/assets/index-DPkoZWq8.js +32 -0
  106. flowfile/web/static/assets/index-DnW_KC_I.js +277 -0
  107. flowfile/web/static/assets/index-UFXyfirV.css +10797 -0
  108. flowfile/web/static/assets/index-bcuE0Z0p.js +87456 -0
  109. flowfile/web/static/assets/{node.types-2c15bb7e.js → node.types-Dl4gtSW9.js} +2 -2
  110. flowfile/web/static/assets/{outputCsv-3c1757e8.js → outputCsv-BELuBiJZ.js} +2 -3
  111. flowfile/web/static/assets/outputCsv-CdGkv-fN.css +2581 -0
  112. flowfile/web/static/assets/{outputExcel-686e1f48.js → outputExcel-D0TTNM79.js} +1 -2
  113. flowfile/web/static/assets/{outputParquet-df28faa7.js → outputParquet-Cz9EbRHj.js} +1 -2
  114. flowfile/web/static/assets/{readCsv-e37eee21.js → readCsv-7bd3kUMI.js} +1 -2
  115. flowfile/web/static/assets/{readExcel-a13f14bb.js → readExcel-Cq8CCwIv.js} +3 -4
  116. flowfile/web/static/assets/{readParquet-c5244ad5.css → readParquet-CRDmBrsp.css} +4 -4
  117. flowfile/web/static/assets/{readParquet-344cf746.js → readParquet-DjR4mRaj.js} +4 -5
  118. flowfile/web/static/assets/{secrets.api-ae198c5c.js → secrets.api-C9o2KE5V.js} +1 -1
  119. flowfile/web/static/assets/{selectDynamic-6b4b0767.js → selectDynamic-Bl5FVsME.js} +5 -8
  120. flowfile/web/static/assets/useNodeSettings-dMS9zmh_.js +69 -0
  121. flowfile/web/static/assets/{vue-codemirror.esm-31ba0e0b.js → vue-codemirror.esm-CwaYwln0.js} +3469 -3064
  122. flowfile/web/static/assets/{vue-content-loader.es-4469c8ff.js → vue-content-loader.es-CMoRXo7N.js} +3 -3
  123. flowfile/web/static/index.html +2 -3
  124. {flowfile-0.5.4.dist-info → flowfile-0.6.1.dist-info}/METADATA +2 -1
  125. flowfile-0.6.1.dist-info/RECORD +417 -0
  126. {flowfile-0.5.4.dist-info → flowfile-0.6.1.dist-info}/WHEEL +1 -1
  127. flowfile_core/auth/password.py +1 -0
  128. flowfile_core/database/init_db.py +7 -5
  129. flowfile_core/fileExplorer/funcs.py +2 -2
  130. flowfile_core/flowfile/code_generator/code_generator.py +13 -11
  131. flowfile_core/flowfile/filter_expressions.py +327 -0
  132. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +61 -59
  133. flowfile_core/flowfile/flow_data_engine/flow_file_column/type_registry.py +3 -29
  134. flowfile_core/flowfile/flow_data_engine/flow_file_column/utils.py +45 -14
  135. flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +20 -3
  136. flowfile_core/flowfile/flow_data_engine/subprocess_operations/streaming.py +206 -0
  137. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +158 -24
  138. flowfile_core/flowfile/flow_graph.py +504 -190
  139. flowfile_core/flowfile/flow_node/__init__.py +32 -0
  140. flowfile_core/flowfile/flow_node/executor.py +404 -0
  141. flowfile_core/flowfile/flow_node/flow_node.py +207 -106
  142. flowfile_core/flowfile/flow_node/models.py +40 -0
  143. flowfile_core/flowfile/flow_node/output_field_config_applier.py +217 -0
  144. flowfile_core/flowfile/flow_node/schema_utils.py +78 -0
  145. flowfile_core/flowfile/flow_node/state.py +155 -0
  146. flowfile_core/flowfile/history_manager.py +401 -0
  147. flowfile_core/flowfile/manage/compatibility_enhancements.py +9 -0
  148. flowfile_core/flowfile/manage/io_flowfile.py +3 -1
  149. flowfile_core/flowfile/sources/external_sources/sql_source/models.py +20 -4
  150. flowfile_core/flowfile/util/execution_orderer.py +89 -36
  151. flowfile_core/main.py +2 -4
  152. flowfile_core/routes/auth.py +8 -9
  153. flowfile_core/routes/routes.py +320 -101
  154. flowfile_core/routes/user_defined_components.py +18 -16
  155. flowfile_core/schemas/history_schema.py +220 -0
  156. flowfile_core/schemas/input_schema.py +130 -6
  157. flowfile_core/schemas/schemas.py +9 -0
  158. flowfile_core/schemas/transform_schema.py +27 -5
  159. flowfile_core/schemas/yaml_types.py +23 -5
  160. flowfile_frame/adding_expr.py +18 -126
  161. flowfile_frame/callable_utils.py +261 -0
  162. flowfile_frame/database/connection_manager.py +0 -1
  163. flowfile_frame/expr.py +8 -4
  164. flowfile_frame/flow_frame.py +41 -41
  165. flowfile_frame/lazy.py +3 -12
  166. flowfile_frame/lazy_methods.py +5 -64
  167. flowfile_frame/utils.py +13 -32
  168. flowfile_worker/funcs.py +6 -4
  169. flowfile_worker/main.py +2 -0
  170. flowfile_worker/models.py +31 -11
  171. flowfile_worker/routes.py +60 -35
  172. flowfile_worker/spawner.py +7 -1
  173. flowfile_worker/streaming.py +335 -0
  174. flowfile/web/static/assets/ContextMenu-49463352.js +0 -9
  175. flowfile/web/static/assets/ContextMenu-dd5f3f25.js +0 -9
  176. flowfile/web/static/assets/ContextMenu-f709b884.js +0 -9
  177. flowfile/web/static/assets/Join-28b5e18f.css +0 -109
  178. flowfile/web/static/assets/PopOver-862d7e28.js +0 -939
  179. flowfile/web/static/assets/Read-225cc63f.js +0 -222
  180. flowfile/web/static/assets/VueGraphicWalker-430f0b86.css +0 -6
  181. flowfile/web/static/assets/database_reader-ce1e55f3.svg +0 -24
  182. flowfile/web/static/assets/database_writer-b4ad0753.svg +0 -23
  183. flowfile/web/static/assets/element-icons-9c88a535.woff +0 -0
  184. flowfile/web/static/assets/element-icons-de5eb258.ttf +0 -0
  185. flowfile/web/static/assets/genericNodeSettings-14eac1c3.js +0 -137
  186. flowfile/web/static/assets/genericNodeSettings-3b2507ea.css +0 -46
  187. flowfile/web/static/assets/index-387a6f18.js +0 -60752
  188. flowfile/web/static/assets/index-6b367bb5.js +0 -38
  189. flowfile/web/static/assets/index-e96ab018.css +0 -10466
  190. flowfile/web/static/assets/nodeInput-ed2ae8d7.js +0 -2
  191. flowfile/web/static/assets/outputCsv-b9a072af.css +0 -2499
  192. flowfile-0.5.4.dist-info/RECORD +0 -407
  193. /flowfile/web/static/assets/{AdminView-f53bad23.css → AdminView-B2Dthl3u.css} +0 -0
  194. /flowfile/web/static/assets/{CloudConnectionView-cf85f943.css → CloudConnectionView-BdFYGWV7.css} +0 -0
  195. /flowfile/web/static/assets/{ColumnActionInput-c44b7aee.css → ColumnActionInput-dCasSIC9.css} +0 -0
  196. /flowfile/web/static/assets/{ColumnSelector-371637fb.css → ColumnSelector-j6sEOjo1.css} +0 -0
  197. /flowfile/web/static/assets/{CustomNode-edb9b939.css → CustomNode-VPlajG0j.css} +0 -0
  198. /flowfile/web/static/assets/{DatabaseConnectionSettings-c20a1e16.css → DatabaseConnectionSettings-B78hXYgu.css} +0 -0
  199. /flowfile/web/static/assets/{DatabaseView-6655afd6.css → DatabaseView-B-_adk1s.css} +0 -0
  200. /flowfile/web/static/assets/{DocumentationView-9ea6e871.css → DocumentationView-CL7iipFL.css} +0 -0
  201. /flowfile/web/static/assets/{ExploreData-10c5acc8.css → ExploreData-DHjv0Plr.css} +0 -0
  202. /flowfile/web/static/assets/{LoginView-d325d632.css → LoginView-DN1BXY3e.css} +0 -0
  203. /flowfile/web/static/assets/{PivotValidation-0e905b1a.css → PivotValidation-DK-FARWe.css} +0 -0
  204. /flowfile/web/static/assets/{PivotValidation-41b57ad6.css → PivotValidation-FUa9F47u.css} +0 -0
  205. /flowfile/web/static/assets/{PolarsCode-2b1f1f23.css → PolarsCode-G-gRSrSc.css} +0 -0
  206. /flowfile/web/static/assets/{SQLQueryComponent-edb90b98.css → SQLQueryComponent-oAbWw0r-.css} +0 -0
  207. /flowfile/web/static/assets/{SecretSelector-6329f743.css → SecretSelector-CJSadIZx.css} +0 -0
  208. /flowfile/web/static/assets/{SecretsView-aa291340.css → SecretsView-DbzIRAba.css} +0 -0
  209. /flowfile/web/static/assets/{SettingsSection-8f980839.css → SettingsSection-BGcJnH6q.css} +0 -0
  210. /flowfile/web/static/assets/{SettingsSection-07fbbc39.css → SettingsSection-DDWn_EGW.css} +0 -0
  211. /flowfile/web/static/assets/{SliderInput-f2e4f23c.css → SliderInput-BRk-q_Dk.css} +0 -0
  212. /flowfile/web/static/assets/{UnavailableFields-394a1f78.css → UnavailableFields-DRKDImKe.css} +0 -0
  213. /flowfile/web/static/assets/{Unique-2b705521.css → Unique-Absb0aON.css} +0 -0
  214. /flowfile/web/static/assets/{UnpivotValidation-d5ca3b7b.css → UnpivotValidation-DSBkFgS-.css} +0 -0
  215. /flowfile/web/static/assets/{airbyte-292aa232.png → airbyte-W0xvIXwZ.png} +0 -0
  216. /flowfile/web/static/assets/{cloud_storage_reader-aa1415d6.png → cloud_storage_reader-3GpSCk90.png} +0 -0
  217. /flowfile/web/static/assets/{cross_join-d30c0290.png → cross_join-B0qpgYoV.png} +0 -0
  218. /flowfile/web/static/assets/{dropDown-1d6acbd9.css → dropDown-CE0VF5_P.css} +0 -0
  219. /flowfile/web/static/assets/{explore_data-8a0a2861.png → explore_data-tX6olPPL.png} +0 -0
  220. /flowfile/web/static/assets/{fa-brands-400-808443ae.ttf → fa-brands-400-D1LuMI3I.ttf} +0 -0
  221. /flowfile/web/static/assets/{fa-brands-400-d7236a19.woff2 → fa-brands-400-D_cYUPeE.woff2} +0 -0
  222. /flowfile/web/static/assets/{fa-regular-400-e3456d12.woff2 → fa-regular-400-BjRzuEpd.woff2} +0 -0
  223. /flowfile/web/static/assets/{fa-regular-400-54cf6086.ttf → fa-regular-400-DZaxPHgR.ttf} +0 -0
  224. /flowfile/web/static/assets/{fa-solid-900-aa759986.woff2 → fa-solid-900-CTAAxXor.woff2} +0 -0
  225. /flowfile/web/static/assets/{fa-solid-900-d2f05935.ttf → fa-solid-900-D0aA9rwL.ttf} +0 -0
  226. /flowfile/web/static/assets/{fa-v4compatibility-0ce9033c.woff2 → fa-v4compatibility-C9RhG_FT.woff2} +0 -0
  227. /flowfile/web/static/assets/{fa-v4compatibility-30f6abf6.ttf → fa-v4compatibility-CCth-dXg.ttf} +0 -0
  228. /flowfile/web/static/assets/{filter-d7708bda.png → filter-WRdZyUOw.png} +0 -0
  229. /flowfile/web/static/assets/{formula-eeeb1611.png → formula-CgM7uHVI.png} +0 -0
  230. /flowfile/web/static/assets/{fullEditor-fe9f7e18.css → fullEditor-CmDI7T9F.css} +0 -0
  231. /flowfile/web/static/assets/{fuzzy_match-40c161b2.png → fuzzy_match-Yon3k5Tc.png} +0 -0
  232. /flowfile/web/static/assets/{graph_solver-8b7888b8.png → graph_solver-BlMrBttD.png} +0 -0
  233. /flowfile/web/static/assets/{group_by-80561fc3.png → group_by-Gici0CSS.png} +0 -0
  234. /flowfile/web/static/assets/{input_data-ab2eb678.png → input_data-BRdGecLc.png} +0 -0
  235. /flowfile/web/static/assets/{join-349043ae.png → join-BITWRu73.png} +0 -0
  236. /flowfile/web/static/assets/{manual_input-ae98f31d.png → manual_input-CFvo_EUS.png} +0 -0
  237. /flowfile/web/static/assets/{old_join-5d0eb604.png → old_join-B9bkpPqv.png} +0 -0
  238. /flowfile/web/static/assets/{output-06ec0371.png → output-Dp7-ZpC4.png} +0 -0
  239. /flowfile/web/static/assets/{outputExcel-f5d272b2.css → outputExcel-CKgRe2iT.css} +0 -0
  240. /flowfile/web/static/assets/{outputParquet-54597c3c.css → outputParquet-d7j407cK.css} +0 -0
  241. /flowfile/web/static/assets/{pivot-9660df51.png → pivot-DSxKhNlD.png} +0 -0
  242. /flowfile/web/static/assets/{polars_code-05ce5dc6.png → polars_code-DxiztZ1c.png} +0 -0
  243. /flowfile/web/static/assets/{readCsv-3bfac4c3.css → readCsv-BG-1Jilp.css} +0 -0
  244. /flowfile/web/static/assets/{readExcel-3db6b763.css → readExcel-DBQXKPtC.css} +0 -0
  245. /flowfile/web/static/assets/{record_count-dab44eb5.png → record_count-DCeaLtpS.png} +0 -0
  246. /flowfile/web/static/assets/{record_id-0b15856b.png → record_id-FeUjyIFh.png} +0 -0
  247. /flowfile/web/static/assets/{sample-693a88b5.png → sample-DeqfRiB-.png} +0 -0
  248. /flowfile/web/static/assets/{select-b0d0437a.png → select-D4JjbdjS.png} +0 -0
  249. /flowfile/web/static/assets/{selectDynamic-f2fb394f.css → selectDynamic-CjeTPUUo.css} +0 -0
  250. /flowfile/web/static/assets/{sort-2aa579f0.png → sort-DGwUG9WS.png} +0 -0
  251. /flowfile/web/static/assets/{summarize-2a099231.png → summarize-DFaNHpfp.png} +0 -0
  252. /flowfile/web/static/assets/{text_to_rows-859b29ea.png → text_to_rows-BdiAewrN.png} +0 -0
  253. /flowfile/web/static/assets/{union-2d8609f4.png → union-DCK-LSMq.png} +0 -0
  254. /flowfile/web/static/assets/{unique-1958b98a.png → unique-CdP3zZIq.png} +0 -0
  255. /flowfile/web/static/assets/{unpivot-d3cb4b5b.png → unpivot-CHttrEt8.png} +0 -0
  256. /flowfile/web/static/assets/{user-defined-icon-0ae16c90.png → user-defined-icon-BcIp2Vzo.png} +0 -0
  257. /flowfile/web/static/assets/{view-7a0f0be1.png → view-DUSRwjvq.png} +0 -0
  258. {flowfile-0.5.4.dist-info → flowfile-0.6.1.dist-info}/entry_points.txt +0 -0
  259. {flowfile-0.5.4.dist-info → flowfile-0.6.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,14 +1,11 @@
1
- import { d as defineComponent, r as ref, F as onMounted, m as resolveComponent, o as openBlock, c as createElementBlock, p as createVNode, q as withCtx, a as createBaseVNode, G as Fragment, H as renderList, y as createBlock, f as createTextVNode, t as toDisplayString, x as unref, au as ElRadio, i as withDirectives, ao as vModelSelect, v as vModelText, e as createCommentVNode, k as axios, J as ElMessage, g as _export_sfc } from "./index-387a6f18.js";
2
- import { C as CodeLoader } from "./vue-content-loader.es-4469c8ff.js";
3
- import { u as useNodeStore } from "./PopOver-862d7e28.js";
4
- import { f as fetchDatabaseConnectionsInterfaces } from "./api-a2102880.js";
5
- import DatabaseConnectionSettings from "./DatabaseConnectionSettings-cfc08938.js";
6
- import SqlQueryComponent from "./SQLQueryComponent-15a421f5.js";
7
- import { G as GenericNodeSettings } from "./genericNodeSettings-14eac1c3.js";
8
- import "./secrets.api-ae198c5c.js";
9
- import "./DesignerView-f64749fb.js";
10
- import "./index-f0a6e5a5.js";
11
- import "./vue-codemirror.esm-31ba0e0b.js";
1
+ import { d as defineComponent, l as useNodeStore, J as onMounted, c as createElementBlock, z as createVNode, B as withCtx, a as createBaseVNode, K as Fragment, L as renderList, C as createBlock, f as createTextVNode, t as toDisplayString, A as unref, aE as ElRadio, h as withDirectives, ax as vModelSelect, v as vModelText, e as createCommentVNode, r as ref, k as axios, N as ElMessage, D as resolveComponent, o as openBlock, g as _export_sfc } from "./index-bcuE0Z0p.js";
2
+ import { C as CodeLoader } from "./vue-content-loader.es-CMoRXo7N.js";
3
+ import { u as useNodeSettings } from "./useNodeSettings-dMS9zmh_.js";
4
+ import { f as fetchDatabaseConnectionsInterfaces } from "./api-C0LvF-0C.js";
5
+ import DatabaseConnectionSettings from "./DatabaseConnectionSettings-Dw3bSJKB.js";
6
+ import SqlQueryComponent from "./SQLQueryComponent-Dr5KMoD3.js";
7
+ import { G as GenericNodeSettings } from "./genericNodeSettings-BBtW_Cpz.js";
8
+ import "./secrets.api-C9o2KE5V.js";
12
9
  const createNodeDatabaseReader = (flowId, nodeId) => {
13
10
  const databaseSettings = {
14
11
  query_mode: "table",
@@ -80,6 +77,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
80
77
  const nodeStore = useNodeStore();
81
78
  const nodeDatabaseReader = ref(null);
82
79
  const dataLoaded = ref(false);
80
+ const { saveSettings, pushNodeData, handleGenericSettingsUpdate } = useNodeSettings({
81
+ nodeRef: nodeDatabaseReader,
82
+ onBeforeSave: () => {
83
+ if (!nodeDatabaseReader.value || !nodeDatabaseReader.value.database_settings) {
84
+ return false;
85
+ }
86
+ if (nodeDatabaseReader.value.database_settings.connection_mode === "reference") {
87
+ nodeDatabaseReader.value.database_settings.database_connection = void 0;
88
+ } else {
89
+ nodeDatabaseReader.value.database_settings.database_connection_name = void 0;
90
+ }
91
+ return true;
92
+ }
93
+ });
83
94
  const validationError = ref(null);
84
95
  const validationSuccess = ref(null);
85
96
  const isValidating = ref(false);
@@ -106,8 +117,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
106
117
  if (nodeData) {
107
118
  const hasValidSetup = Boolean((_a = nodeData.setting_input) == null ? void 0 : _a.is_setup);
108
119
  nodeDatabaseReader.value = hasValidSetup ? nodeData.setting_input : createNodeDatabaseReader(nodeStore.flow_id, nodeId);
120
+ dataLoaded.value = true;
109
121
  }
110
- dataLoaded.value = true;
111
122
  } catch (error) {
112
123
  console.error("Error loading node data:", error);
113
124
  dataLoaded.value = false;
@@ -158,19 +169,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
158
169
  isValidating.value = false;
159
170
  }
160
171
  };
161
- const pushNodeData = async () => {
162
- if (!nodeDatabaseReader.value || !nodeDatabaseReader.value.database_settings) {
163
- return;
164
- }
165
- if (nodeDatabaseReader.value.database_settings.connection_mode === "reference") {
166
- nodeDatabaseReader.value.database_settings.database_connection = void 0;
167
- } else {
168
- nodeDatabaseReader.value.database_settings.database_connection_name = void 0;
169
- }
170
- nodeDatabaseReader.value.is_setup = true;
171
- nodeStore.updateSettings(nodeDatabaseReader);
172
- dataLoaded.value = false;
173
- };
174
172
  const fetchConnections = async () => {
175
173
  connectionsAreLoading.value = true;
176
174
  try {
@@ -187,14 +185,19 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
187
185
  });
188
186
  __expose({
189
187
  loadNodeData,
190
- pushNodeData
188
+ pushNodeData,
189
+ saveSettings
191
190
  });
192
191
  return (_ctx, _cache) => {
193
192
  const _component_el_radio_group = resolveComponent("el-radio-group");
194
193
  return dataLoaded.value && nodeDatabaseReader.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
195
194
  createVNode(GenericNodeSettings, {
196
195
  modelValue: nodeDatabaseReader.value,
197
- "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => nodeDatabaseReader.value = $event)
196
+ "onUpdate:modelValue": [
197
+ _cache[7] || (_cache[7] = ($event) => nodeDatabaseReader.value = $event),
198
+ unref(handleGenericSettingsUpdate)
199
+ ],
200
+ onRequestSave: unref(saveSettings)
198
201
  }, {
199
202
  default: withCtx(() => [
200
203
  createBaseVNode("div", _hoisted_2, [
@@ -228,10 +231,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
228
231
  onChange: resetFields
229
232
  }, null, 8, ["modelValue"])
230
233
  ])) : (openBlock(), createElementBlock("div", _hoisted_5, [
231
- connectionsAreLoading.value ? (openBlock(), createElementBlock("div", _hoisted_6, _cache[9] || (_cache[9] = [
234
+ connectionsAreLoading.value ? (openBlock(), createElementBlock("div", _hoisted_6, [..._cache[9] || (_cache[9] = [
232
235
  createBaseVNode("div", { class: "loading-spinner" }, null, -1),
233
236
  createBaseVNode("p", null, "Loading connections...", -1)
234
- ]))) : (openBlock(), createElementBlock("div", _hoisted_7, [
237
+ ])])) : (openBlock(), createElementBlock("div", _hoisted_7, [
235
238
  withDirectives(createBaseVNode("select", {
236
239
  id: "connection-select",
237
240
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => nodeDatabaseReader.value.database_settings.database_connection_name = $event),
@@ -262,10 +265,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
262
265
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => nodeDatabaseReader.value.database_settings.query_mode = $event),
263
266
  class: "form-control",
264
267
  onChange: handleQueryModeChange
265
- }, _cache[11] || (_cache[11] = [
268
+ }, [..._cache[11] || (_cache[11] = [
266
269
  createBaseVNode("option", { value: "table" }, "Table", -1),
267
270
  createBaseVNode("option", { value: "query" }, "Query", -1)
268
- ]), 544), [
271
+ ])], 544), [
269
272
  [vModelSelect, nodeDatabaseReader.value.database_settings.query_mode]
270
273
  ])
271
274
  ]),
@@ -324,13 +327,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
324
327
  ])
325
328
  ]),
326
329
  _: 1
327
- }, 8, ["modelValue"])
330
+ }, 8, ["modelValue", "onUpdate:modelValue", "onRequestSave"])
328
331
  ])) : (openBlock(), createBlock(unref(CodeLoader), { key: 1 }));
329
332
  };
330
333
  }
331
334
  });
332
- const DatabaseReader_vue_vue_type_style_index_0_scoped_5433b2ea_lang = "";
333
- const DatabaseReader = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5433b2ea"]]);
335
+ const DatabaseReader = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a46e24bd"]]);
334
336
  export {
335
337
  DatabaseReader as default
336
338
  };
@@ -1,5 +1,5 @@
1
- import { f as fetchDatabaseConnectionsInterfaces, c as createDatabaseConnectionApi, d as deleteDatabaseConnectionApi } from "./api-a2102880.js";
2
- import { d as defineComponent, r as ref, C as watch, B as computed, o as openBlock, c as createElementBlock, a as createBaseVNode, i as withDirectives, v as vModelText, ao as vModelSelect, j as vModelDynamic, n as normalizeClass, ap as vModelCheckbox, t as toDisplayString, w as withModifiers, F as onMounted, f as createTextVNode, G as Fragment, H as renderList, p as createVNode, q as withCtx, x as unref, J as ElMessage, aq as ElDialog, ar as ElButton, g as _export_sfc } from "./index-387a6f18.js";
1
+ import { f as fetchDatabaseConnectionsInterfaces, c as createDatabaseConnectionApi, d as deleteDatabaseConnectionApi } from "./api-C0LvF-0C.js";
2
+ import { d as defineComponent, r as ref, H as watch, c as createElementBlock, w as withModifiers, a as createBaseVNode, h as withDirectives, v as vModelText, ax as vModelSelect, i as vModelDynamic, n as normalizeClass, ay as vModelCheckbox, t as toDisplayString, G as computed, o as openBlock, J as onMounted, f as createTextVNode, K as Fragment, L as renderList, z as createVNode, B as withCtx, A as unref, az as ElDialog, N as ElMessage, aA as ElButton, g as _export_sfc } from "./index-bcuE0Z0p.js";
3
3
  const _hoisted_1$1 = { class: "form-grid" };
4
4
  const _hoisted_2$1 = { class: "form-field" };
5
5
  const _hoisted_3$1 = { class: "form-field" };
@@ -93,9 +93,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
93
93
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => connection.value.databaseType = $event),
94
94
  class: "form-input",
95
95
  required: ""
96
- }, _cache[11] || (_cache[11] = [
96
+ }, [..._cache[11] || (_cache[11] = [
97
97
  createBaseVNode("option", { value: "postgresql" }, "PostgreSQL", -1)
98
- ]), 512), [
98
+ ])], 512), [
99
99
  [vModelSelect, connection.value.databaseType]
100
100
  ])
101
101
  ]),
@@ -215,7 +215,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
215
215
  createBaseVNode("button", {
216
216
  type: "submit",
217
217
  class: "btn btn-primary",
218
- disabled: !isValid.value || _ctx.isSubmitting
218
+ disabled: !isValid.value || __props.isSubmitting
219
219
  }, toDisplayString(submitButtonText.value), 9, _hoisted_14$1)
220
220
  ])
221
221
  ], 32);
@@ -311,8 +311,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
311
311
  }
312
312
  };
313
313
  const handleDeleteConnection = async () => {
314
- if (!connectionToDelete.value)
315
- return;
314
+ if (!connectionToDelete.value) return;
316
315
  isDeleting.value = true;
317
316
  try {
318
317
  await deleteDatabaseConnectionApi(connectionToDelete.value);
@@ -327,13 +326,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
327
326
  }
328
327
  };
329
328
  const handleCloseDialog = (done) => {
330
- if (isSubmitting.value)
331
- return;
329
+ if (isSubmitting.value) return;
332
330
  done();
333
331
  };
334
332
  const handleCloseDeleteDialog = (done) => {
335
- if (isDeleting.value)
336
- return;
333
+ if (isDeleting.value) return;
337
334
  done();
338
335
  };
339
336
  onMounted(() => {
@@ -351,10 +348,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
351
348
  createBaseVNode("button", {
352
349
  class: "btn btn-primary",
353
350
  onClick: showAddModal
354
- }, _cache[4] || (_cache[4] = [
351
+ }, [..._cache[4] || (_cache[4] = [
355
352
  createBaseVNode("i", { class: "fa-solid fa-plus" }, null, -1),
356
- createTextVNode(" Add Connection ")
357
- ]))
353
+ createTextVNode(" Add Connection ", -1)
354
+ ])])
358
355
  ]),
359
356
  createBaseVNode("div", _hoisted_5, [
360
357
  _cache[11] || (_cache[11] = createBaseVNode("div", { class: "info-box mb-3" }, [
@@ -366,14 +363,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
366
363
  createBaseVNode("p", null, " Database connections store the credentials and configuration needed to securely access your databases. Once set up, you can reuse these connections throughout your workflows without re-entering credentials. ")
367
364
  ])
368
365
  ], -1)),
369
- isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_6, _cache[5] || (_cache[5] = [
366
+ isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_6, [..._cache[5] || (_cache[5] = [
370
367
  createBaseVNode("div", { class: "loading-spinner" }, null, -1),
371
368
  createBaseVNode("p", null, "Loading connections...", -1)
372
- ]))) : connectionInterfaces.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_7, _cache[6] || (_cache[6] = [
369
+ ])])) : connectionInterfaces.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_7, [..._cache[6] || (_cache[6] = [
373
370
  createBaseVNode("i", { class: "fa-solid fa-database" }, null, -1),
374
371
  createBaseVNode("p", null, "You haven't added any database connections yet", -1),
375
372
  createBaseVNode("p", { class: "hint-text" }, ' Click the "Add Connection" button to create your first database connection. ', -1)
376
- ]))) : (openBlock(), createElementBlock("div", _hoisted_8, [
373
+ ])])) : (openBlock(), createElementBlock("div", _hoisted_8, [
377
374
  (openBlock(true), createElementBlock(Fragment, null, renderList(connectionInterfaces.value, (connection) => {
378
375
  return openBlock(), createElementBlock("div", {
379
376
  key: connection.connectionName,
@@ -396,18 +393,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
396
393
  type: "button",
397
394
  class: "btn btn-secondary",
398
395
  onClick: ($event) => showEditModal(connection)
399
- }, _cache[9] || (_cache[9] = [
396
+ }, [..._cache[9] || (_cache[9] = [
400
397
  createBaseVNode("i", { class: "fa-solid fa-edit" }, null, -1),
401
398
  createBaseVNode("span", null, "Modify", -1)
402
- ]), 8, _hoisted_14),
399
+ ])], 8, _hoisted_14),
403
400
  createBaseVNode("button", {
404
401
  type: "button",
405
402
  class: "btn btn-danger",
406
403
  onClick: ($event) => showDeleteModal(connection.connectionName)
407
- }, _cache[10] || (_cache[10] = [
404
+ }, [..._cache[10] || (_cache[10] = [
408
405
  createBaseVNode("i", { class: "fa-solid fa-trash-alt" }, null, -1),
409
406
  createBaseVNode("span", null, "Delete", -1)
410
- ]), 8, _hoisted_15)
407
+ ])], 8, _hoisted_15)
411
408
  ])
412
409
  ]);
413
410
  }), 128))
@@ -432,8 +429,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
432
429
  onCancel: _cache[0] || (_cache[0] = ($event) => dialogVisible.value = false)
433
430
  }, null, 8, ["initial-connection", "is-submitting"])
434
431
  ]),
435
- _: 1,
436
- __: [12]
432
+ _: 1
437
433
  }, 8, ["modelValue", "title"]),
438
434
  createVNode(unref(ElDialog), {
439
435
  modelValue: deleteDialogVisible.value,
@@ -447,41 +443,37 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
447
443
  createVNode(unref(ElButton), {
448
444
  onClick: _cache[2] || (_cache[2] = ($event) => deleteDialogVisible.value = false)
449
445
  }, {
450
- default: withCtx(() => _cache[15] || (_cache[15] = [
451
- createTextVNode("Cancel")
452
- ])),
453
- _: 1,
454
- __: [15]
446
+ default: withCtx(() => [..._cache[15] || (_cache[15] = [
447
+ createTextVNode("Cancel", -1)
448
+ ])]),
449
+ _: 1
455
450
  }),
456
451
  createVNode(unref(ElButton), {
457
452
  type: "danger",
458
453
  loading: isDeleting.value,
459
454
  onClick: handleDeleteConnection
460
455
  }, {
461
- default: withCtx(() => _cache[16] || (_cache[16] = [
462
- createTextVNode(" Delete ")
463
- ])),
464
- _: 1,
465
- __: [16]
456
+ default: withCtx(() => [..._cache[16] || (_cache[16] = [
457
+ createTextVNode(" Delete ", -1)
458
+ ])]),
459
+ _: 1
466
460
  }, 8, ["loading"])
467
461
  ])
468
462
  ]),
469
463
  default: withCtx(() => [
470
464
  createBaseVNode("p", null, [
471
- _cache[13] || (_cache[13] = createTextVNode(" Are you sure you want to delete the connection ")),
465
+ _cache[13] || (_cache[13] = createTextVNode(" Are you sure you want to delete the connection ", -1)),
472
466
  createBaseVNode("strong", null, toDisplayString(connectionToDelete.value), 1),
473
- _cache[14] || (_cache[14] = createTextVNode("? "))
467
+ _cache[14] || (_cache[14] = createTextVNode("? ", -1))
474
468
  ]),
475
469
  _cache[17] || (_cache[17] = createBaseVNode("p", { class: "warning-text" }, " This action cannot be undone and may affect any processes using this connection. ", -1))
476
470
  ]),
477
- _: 1,
478
- __: [17]
471
+ _: 1
479
472
  }, 8, ["modelValue"])
480
473
  ]);
481
474
  };
482
475
  }
483
476
  });
484
- const DatabaseView_vue_vue_type_style_index_0_scoped_40d7248e_lang = "";
485
477
  const DatabaseView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-40d7248e"]]);
486
478
  export {
487
479
  DatabaseView as default
@@ -1,13 +1,10 @@
1
- import { d as defineComponent, r as ref, F as onMounted, m as resolveComponent, o as openBlock, c as createElementBlock, p as createVNode, q as withCtx, a as createBaseVNode, G as Fragment, H as renderList, y as createBlock, f as createTextVNode, t as toDisplayString, x as unref, au as ElRadio, i as withDirectives, ao as vModelSelect, v as vModelText, J as ElMessage, g as _export_sfc } from "./index-387a6f18.js";
2
- import { C as CodeLoader } from "./vue-content-loader.es-4469c8ff.js";
3
- import { u as useNodeStore } from "./PopOver-862d7e28.js";
4
- import { f as fetchDatabaseConnectionsInterfaces } from "./api-a2102880.js";
5
- import DatabaseConnectionSettings from "./DatabaseConnectionSettings-cfc08938.js";
6
- import { G as GenericNodeSettings } from "./genericNodeSettings-14eac1c3.js";
7
- import "./secrets.api-ae198c5c.js";
8
- import "./DesignerView-f64749fb.js";
9
- import "./index-f0a6e5a5.js";
10
- import "./vue-codemirror.esm-31ba0e0b.js";
1
+ import { d as defineComponent, l as useNodeStore, J as onMounted, c as createElementBlock, z as createVNode, B as withCtx, a as createBaseVNode, K as Fragment, L as renderList, C as createBlock, f as createTextVNode, t as toDisplayString, A as unref, aE as ElRadio, h as withDirectives, ax as vModelSelect, v as vModelText, r as ref, N as ElMessage, D as resolveComponent, o as openBlock, g as _export_sfc } from "./index-bcuE0Z0p.js";
2
+ import { C as CodeLoader } from "./vue-content-loader.es-CMoRXo7N.js";
3
+ import { u as useNodeSettings } from "./useNodeSettings-dMS9zmh_.js";
4
+ import { f as fetchDatabaseConnectionsInterfaces } from "./api-C0LvF-0C.js";
5
+ import DatabaseConnectionSettings from "./DatabaseConnectionSettings-Dw3bSJKB.js";
6
+ import { G as GenericNodeSettings } from "./genericNodeSettings-BBtW_Cpz.js";
7
+ import "./secrets.api-C9o2KE5V.js";
11
8
  const createNodeDatabaseWriter = (flowId, nodeId) => {
12
9
  const databaseWriteSettings = {
13
10
  if_exists: "replace",
@@ -66,6 +63,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
66
63
  const nodeData = ref(null);
67
64
  const dataLoaded = ref(false);
68
65
  const connectionsAreLoading = ref(false);
66
+ const { saveSettings, pushNodeData, handleGenericSettingsUpdate } = useNodeSettings({
67
+ nodeRef: nodeData,
68
+ onBeforeSave: () => {
69
+ if (!nodeData.value) {
70
+ return false;
71
+ }
72
+ if (nodeData.value.database_write_settings.connection_mode === "reference") {
73
+ nodeData.value.database_write_settings.database_connection = void 0;
74
+ } else {
75
+ nodeData.value.database_write_settings.database_connection_name = void 0;
76
+ }
77
+ return true;
78
+ }
79
+ });
69
80
  const loadNodeData = async (nodeId) => {
70
81
  var _a;
71
82
  try {
@@ -73,8 +84,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
73
84
  if (fetchedNodeData) {
74
85
  const hasValidSetup = Boolean((_a = fetchedNodeData.setting_input) == null ? void 0 : _a.is_setup);
75
86
  nodeData.value = hasValidSetup ? fetchedNodeData.setting_input : createNodeDatabaseWriter(nodeStore.flow_id, nodeId);
87
+ dataLoaded.value = true;
76
88
  }
77
- dataLoaded.value = true;
78
89
  } catch (error) {
79
90
  console.error("Error loading node data:", error);
80
91
  dataLoaded.value = false;
@@ -83,23 +94,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
83
94
  };
84
95
  const resetFields = () => {
85
96
  };
86
- const pushNodeData = async () => {
87
- if (!nodeData.value) {
88
- return;
89
- }
90
- if (nodeData.value.database_write_settings.connection_mode === "reference") {
91
- nodeData.value.database_write_settings.database_connection = void 0;
92
- } else {
93
- nodeData.value.database_write_settings.database_connection_name = void 0;
94
- }
95
- nodeData.value.is_setup = true;
96
- try {
97
- await nodeStore.updateSettings(nodeData);
98
- } catch (error) {
99
- console.error("Error saving node data:", error);
100
- ElMessage.error("Failed to save node settings");
101
- }
102
- };
103
97
  const fetchConnections = async () => {
104
98
  connectionsAreLoading.value = true;
105
99
  try {
@@ -117,14 +111,19 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
117
111
  });
118
112
  __expose({
119
113
  loadNodeData,
120
- pushNodeData
114
+ pushNodeData,
115
+ saveSettings
121
116
  });
122
117
  return (_ctx, _cache) => {
123
118
  const _component_el_radio_group = resolveComponent("el-radio-group");
124
119
  return dataLoaded.value && nodeData.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
125
120
  createVNode(GenericNodeSettings, {
126
121
  modelValue: nodeData.value,
127
- "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => nodeData.value = $event)
122
+ "onUpdate:modelValue": [
123
+ _cache[6] || (_cache[6] = ($event) => nodeData.value = $event),
124
+ unref(handleGenericSettingsUpdate)
125
+ ],
126
+ onRequestSave: unref(saveSettings)
128
127
  }, {
129
128
  default: withCtx(() => [
130
129
  createBaseVNode("div", _hoisted_2, [
@@ -158,10 +157,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
158
157
  onChange: resetFields
159
158
  }, null, 8, ["modelValue"])
160
159
  ])) : (openBlock(), createElementBlock("div", _hoisted_5, [
161
- connectionsAreLoading.value ? (openBlock(), createElementBlock("div", _hoisted_6, _cache[8] || (_cache[8] = [
160
+ connectionsAreLoading.value ? (openBlock(), createElementBlock("div", _hoisted_6, [..._cache[8] || (_cache[8] = [
162
161
  createBaseVNode("div", { class: "loading-spinner" }, null, -1),
163
162
  createBaseVNode("p", null, "Loading connections...", -1)
164
- ]))) : (openBlock(), createElementBlock("div", _hoisted_7, [
163
+ ])])) : (openBlock(), createElementBlock("div", _hoisted_7, [
165
164
  withDirectives(createBaseVNode("select", {
166
165
  id: "connection-select",
167
166
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => nodeData.value.database_write_settings.database_connection_name = $event),
@@ -246,13 +245,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
246
245
  ])
247
246
  ]),
248
247
  _: 1
249
- }, 8, ["modelValue"])
248
+ }, 8, ["modelValue", "onUpdate:modelValue", "onRequestSave"])
250
249
  ])) : (openBlock(), createBlock(unref(CodeLoader), { key: 1 }));
251
250
  };
252
251
  }
253
252
  });
254
- const DatabaseWriter_vue_vue_type_style_index_0_scoped_5577376b_lang = "";
255
- const DatabaseWriter = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5577376b"]]);
253
+ const DatabaseWriter = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e2693028"]]);
256
254
  export {
257
255
  DatabaseWriter as default
258
256
  };
@@ -1,28 +1,28 @@
1
1
 
2
- .db-container[data-v-5577376b] {
2
+ .db-container[data-v-e2693028] {
3
3
  font-family: var(--font-family-base);
4
4
  max-width: 100%;
5
5
  color: var(--color-text-primary);
6
6
  }
7
- .section-subtitle[data-v-5577376b] {
7
+ .section-subtitle[data-v-e2693028] {
8
8
  margin: 0 0 0.75rem 0;
9
9
  font-size: 0.95rem;
10
10
  font-weight: 600;
11
11
  color: var(--color-text-secondary);
12
12
  }
13
- .form-row[data-v-5577376b] {
13
+ .form-row[data-v-e2693028] {
14
14
  display: flex;
15
15
  gap: 0.75rem;
16
16
  margin-bottom: 0.75rem;
17
17
  width: 100%;
18
18
  box-sizing: border-box;
19
19
  }
20
- .half[data-v-5577376b] {
20
+ .half[data-v-e2693028] {
21
21
  flex: 1;
22
22
  min-width: 0; /* Allow fields to shrink below their content size */
23
23
  max-width: calc(50% - 0.375rem); /* Account for the gap between items */
24
24
  }
25
- .form-control[data-v-5577376b] {
25
+ .form-control[data-v-e2693028] {
26
26
  width: 100%;
27
27
  padding: 0.5rem;
28
28
  border: 1px solid var(--color-border-primary);
@@ -32,18 +32,18 @@
32
32
  background-color: var(--color-background-primary);
33
33
  color: var(--color-text-primary);
34
34
  }
35
- .form-group[data-v-5577376b] {
35
+ .form-group[data-v-e2693028] {
36
36
  margin-bottom: 0.75rem;
37
37
  width: 100%;
38
38
  }
39
- label[data-v-5577376b] {
39
+ label[data-v-e2693028] {
40
40
  display: block;
41
41
  margin-bottom: 0.25rem;
42
42
  font-size: 0.875rem;
43
43
  font-weight: 500;
44
44
  color: var(--color-text-secondary);
45
45
  }
46
- select.form-control[data-v-5577376b] {
46
+ select.form-control[data-v-e2693028] {
47
47
  appearance: none;
48
48
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%234a5568' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
49
49
  background-repeat: no-repeat;
@@ -51,22 +51,22 @@ select.form-control[data-v-5577376b] {
51
51
  background-size: 1em;
52
52
  padding-right: 2rem;
53
53
  }
54
- .loading-spinner[data-v-5577376b] {
54
+ .loading-spinner[data-v-e2693028] {
55
55
  display: inline-block;
56
56
  width: 20px;
57
57
  height: 20px;
58
58
  border: 2px solid var(--color-info-light);
59
59
  border-radius: 50%;
60
60
  border-top-color: var(--color-info);
61
- animation: spin-5577376b 1s ease-in-out infinite;
61
+ animation: spin-e2693028 1s ease-in-out infinite;
62
62
  margin-right: 8px;
63
63
  }
64
- @keyframes spin-5577376b {
64
+ @keyframes spin-e2693028 {
65
65
  to {
66
66
  transform: rotate(360deg);
67
67
  }
68
68
  }
69
- .option-description[data-v-5577376b] {
69
+ .option-description[data-v-e2693028] {
70
70
  font-size: 0.875rem;
71
71
  color: var(--color-text-tertiary);
72
72
  margin: 0.5rem 0;
@@ -75,23 +75,23 @@ to {
75
75
  border-radius: 4px;
76
76
  border-left: 3px solid var(--color-info);
77
77
  }
78
- .el-radio-group[data-v-5577376b] {
78
+ .el-radio-group[data-v-e2693028] {
79
79
  display: flex !important;
80
80
  flex-direction: row !important;
81
81
  gap: 1rem;
82
82
  }
83
- .el-radio[data-v-5577376b] {
83
+ .el-radio[data-v-e2693028] {
84
84
  margin-right: 0 !important; /* Override any existing margins */
85
85
  }
86
86
  @media (max-width: 640px) {
87
- .form-row[data-v-5577376b] {
87
+ .form-row[data-v-e2693028] {
88
88
  flex-direction: column;
89
89
  gap: 0.5rem;
90
90
  }
91
- .half[data-v-5577376b] {
91
+ .half[data-v-e2693028] {
92
92
  max-width: 100%;
93
93
  }
94
- .el-radio-group[data-v-5577376b] {
94
+ .el-radio-group[data-v-e2693028] {
95
95
  flex-direction: column !important;
96
96
  gap: 0.5rem;
97
97
  }