Flowfile 0.3.9__py3-none-any.whl → 0.5.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 (201) hide show
  1. flowfile/__init__.py +8 -1
  2. flowfile/api.py +1 -3
  3. flowfile/web/static/assets/{CloudConnectionManager-c97c25f8.js → CloudConnectionManager-0dfba9f2.js} +2 -2
  4. flowfile/web/static/assets/{CloudStorageReader-f1ff509e.js → CloudStorageReader-d5b1b6c9.js} +11 -78
  5. flowfile/web/static/assets/{CloudStorageWriter-034f8b78.js → CloudStorageWriter-00d87aad.js} +12 -79
  6. flowfile/web/static/assets/{CloudStorageWriter-49c9a4b2.css → CloudStorageWriter-b0ee067f.css} +24 -24
  7. flowfile/web/static/assets/ColumnSelector-4685e75d.js +83 -0
  8. flowfile/web/static/assets/ColumnSelector-47996a16.css +10 -0
  9. flowfile/web/static/assets/ContextMenu-23e909da.js +41 -0
  10. flowfile/web/static/assets/{SettingsSection-9c836ecc.css → ContextMenu-4c74eef1.css} +0 -21
  11. flowfile/web/static/assets/ContextMenu-63cfa99b.css +26 -0
  12. flowfile/web/static/assets/ContextMenu-70ae0c79.js +41 -0
  13. flowfile/web/static/assets/ContextMenu-c13f91d0.css +26 -0
  14. flowfile/web/static/assets/ContextMenu-f149cf7c.js +41 -0
  15. flowfile/web/static/assets/{CrossJoin-41efa4cb.css → CrossJoin-1119d18e.css} +18 -18
  16. flowfile/web/static/assets/{CrossJoin-9e156ebe.js → CrossJoin-702a3edd.js} +14 -84
  17. flowfile/web/static/assets/CustomNode-74a37f74.css +32 -0
  18. flowfile/web/static/assets/CustomNode-b1519993.js +211 -0
  19. flowfile/web/static/assets/{DatabaseConnectionSettings-d5c625b3.js → DatabaseConnectionSettings-6f3e4ea5.js} +3 -3
  20. flowfile/web/static/assets/{DatabaseManager-265adc5e.js → DatabaseManager-cf5ef661.js} +2 -2
  21. flowfile/web/static/assets/{DatabaseReader-f50c6558.css → DatabaseReader-ae61773c.css} +0 -27
  22. flowfile/web/static/assets/{DatabaseReader-0b10551e.js → DatabaseReader-d38c7295.js} +14 -114
  23. flowfile/web/static/assets/{DatabaseWriter-c17c6916.js → DatabaseWriter-b04ef46a.js} +13 -74
  24. flowfile/web/static/assets/{ExploreData-5bdae813.css → ExploreData-2d0cf4db.css} +8 -14
  25. flowfile/web/static/assets/ExploreData-5fa10ed8.js +192 -0
  26. flowfile/web/static/assets/{ExternalSource-3a66556c.js → ExternalSource-d39af878.js} +8 -79
  27. flowfile/web/static/assets/{Filter-91ad87e7.js → Filter-9b6d08db.js} +12 -85
  28. flowfile/web/static/assets/{Filter-a9d08ba1.css → Filter-f62091b3.css} +3 -3
  29. flowfile/web/static/assets/{Formula-3c395ab1.js → Formula-6b04fb1d.js} +20 -87
  30. flowfile/web/static/assets/{Formula-29f19d21.css → Formula-bb96803d.css} +4 -4
  31. flowfile/web/static/assets/{FuzzyMatch-6857de82.css → FuzzyMatch-1010f966.css} +42 -42
  32. flowfile/web/static/assets/{FuzzyMatch-2df0d230.js → FuzzyMatch-999521f4.js} +16 -87
  33. flowfile/web/static/assets/{GraphSolver-d285877f.js → GraphSolver-17dd2198.js} +13 -159
  34. flowfile/web/static/assets/GraphSolver-f0cb7bfb.css +22 -0
  35. flowfile/web/static/assets/{GroupBy-0bd1cc6b.js → GroupBy-6b039e18.js} +12 -75
  36. flowfile/web/static/assets/{Unique-b5615727.css → GroupBy-b9505323.css} +8 -8
  37. flowfile/web/static/assets/{Join-5a78a203.js → Join-24d0f113.js} +15 -85
  38. flowfile/web/static/assets/{Join-f45eff22.css → Join-fd79b451.css} +20 -20
  39. flowfile/web/static/assets/{ManualInput-a71b52c6.css → ManualInput-3246a08d.css} +20 -20
  40. flowfile/web/static/assets/{ManualInput-93aef9d6.js → ManualInput-34639209.js} +11 -82
  41. flowfile/web/static/assets/MultiSelect-0e8724a3.js +5 -0
  42. flowfile/web/static/assets/MultiSelect.vue_vue_type_script_setup_true_lang-b0e538c2.js +63 -0
  43. flowfile/web/static/assets/NumericInput-3d63a470.js +5 -0
  44. flowfile/web/static/assets/NumericInput.vue_vue_type_script_setup_true_lang-e0edeccc.js +35 -0
  45. flowfile/web/static/assets/Output-283fe388.css +37 -0
  46. flowfile/web/static/assets/{Output-411ecaee.js → Output-edea9802.js} +62 -273
  47. flowfile/web/static/assets/{Pivot-89db4b04.js → Pivot-61d19301.js} +14 -138
  48. flowfile/web/static/assets/Pivot-cf333e3d.css +22 -0
  49. flowfile/web/static/assets/PivotValidation-891ddfb0.css +13 -0
  50. flowfile/web/static/assets/PivotValidation-c46cd420.css +13 -0
  51. flowfile/web/static/assets/PivotValidation-de9f43fe.js +61 -0
  52. flowfile/web/static/assets/PivotValidation-f97fec5b.js +61 -0
  53. flowfile/web/static/assets/{PolarsCode-a9f974f8.js → PolarsCode-bc3c9984.js} +13 -80
  54. flowfile/web/static/assets/Read-64a3f259.js +218 -0
  55. flowfile/web/static/assets/Read-e808b239.css +62 -0
  56. flowfile/web/static/assets/RecordCount-3d5039be.js +53 -0
  57. flowfile/web/static/assets/{RecordId-55ae7d36.js → RecordId-597510e0.js} +8 -80
  58. flowfile/web/static/assets/SQLQueryComponent-36cef432.css +27 -0
  59. flowfile/web/static/assets/SQLQueryComponent-df51adbe.js +38 -0
  60. flowfile/web/static/assets/{Sample-b4a18476.js → Sample-4be0a507.js} +8 -77
  61. flowfile/web/static/assets/{SecretManager-b066d13a.js → SecretManager-4839be57.js} +2 -2
  62. flowfile/web/static/assets/{Select-727688dc.js → Select-9b72f201.js} +11 -85
  63. flowfile/web/static/assets/SettingsSection-2e4d03c4.css +21 -0
  64. flowfile/web/static/assets/SettingsSection-5c696bee.css +20 -0
  65. flowfile/web/static/assets/SettingsSection-71e6b7e3.css +21 -0
  66. flowfile/web/static/assets/SettingsSection-7ded385d.js +45 -0
  67. flowfile/web/static/assets/{SettingsSection-695ac487.js → SettingsSection-e1e9c953.js} +2 -40
  68. flowfile/web/static/assets/SettingsSection-f0f75a42.js +53 -0
  69. flowfile/web/static/assets/SingleSelect-6c777aac.js +5 -0
  70. flowfile/web/static/assets/SingleSelect.vue_vue_type_script_setup_true_lang-33e3ff9b.js +62 -0
  71. flowfile/web/static/assets/SliderInput-7cb93e62.js +40 -0
  72. flowfile/web/static/assets/SliderInput-b8fb6a8c.css +4 -0
  73. flowfile/web/static/assets/{GroupBy-ab1ea74b.css → Sort-3643d625.css} +8 -8
  74. flowfile/web/static/assets/{Sort-be3339a8.js → Sort-6cbde21a.js} +12 -97
  75. flowfile/web/static/assets/TextInput-d9a40c11.js +5 -0
  76. flowfile/web/static/assets/TextInput.vue_vue_type_script_setup_true_lang-5896c375.js +32 -0
  77. flowfile/web/static/assets/{TextToRows-c92d1ec2.css → TextToRows-5d2c1190.css} +9 -9
  78. flowfile/web/static/assets/{TextToRows-7b8998da.js → TextToRows-c4fcbf4d.js} +14 -83
  79. flowfile/web/static/assets/ToggleSwitch-4ef91d19.js +5 -0
  80. flowfile/web/static/assets/ToggleSwitch.vue_vue_type_script_setup_true_lang-38478c20.js +31 -0
  81. flowfile/web/static/assets/{UnavailableFields-8b0cb48e.js → UnavailableFields-a03f512c.js} +2 -2
  82. flowfile/web/static/assets/{Union-8d9ac7f9.css → Union-af6c3d9b.css} +6 -6
  83. flowfile/web/static/assets/Union-bfe9b996.js +77 -0
  84. flowfile/web/static/assets/{Unique-af5a80b4.js → Unique-5d023a27.js} +23 -104
  85. flowfile/web/static/assets/{Sort-7ccfa0fe.css → Unique-f9fb0809.css} +8 -8
  86. flowfile/web/static/assets/Unpivot-1e422df3.css +30 -0
  87. flowfile/web/static/assets/{Unpivot-5195d411.js → Unpivot-91cc5354.js} +12 -166
  88. flowfile/web/static/assets/UnpivotValidation-0d240eeb.css +13 -0
  89. flowfile/web/static/assets/UnpivotValidation-7ee2de44.js +51 -0
  90. flowfile/web/static/assets/{ExploreData-18a4fe52.js → VueGraphicWalker-e51b9924.js} +4 -264
  91. flowfile/web/static/assets/VueGraphicWalker-ed5ab88b.css +6 -0
  92. flowfile/web/static/assets/{api-cb00cce6.js → api-c1bad5ca.js} +1 -1
  93. flowfile/web/static/assets/{api-023d1733.js → api-cf1221f0.js} +1 -1
  94. flowfile/web/static/assets/{designer-2197d782.css → designer-8da3ba3a.css} +859 -201
  95. flowfile/web/static/assets/{designer-6c322d8e.js → designer-9633482a.js} +2297 -733
  96. flowfile/web/static/assets/{documentation-4d1fafe1.js → documentation-ca400224.js} +1 -1
  97. flowfile/web/static/assets/{dropDown-0b46dd77.js → dropDown-614b998d.js} +1 -1
  98. flowfile/web/static/assets/{fullEditor-ec4e4f95.js → fullEditor-f7971590.js} +2 -2
  99. flowfile/web/static/assets/{genericNodeSettings-def5879b.js → genericNodeSettings-4fe5f36b.js} +3 -3
  100. flowfile/web/static/assets/{index-681a3ed0.css → index-50508d4d.css} +8 -0
  101. flowfile/web/static/assets/{index-683fc198.js → index-5429bbf8.js} +208 -31
  102. flowfile/web/static/assets/nodeInput-5d0d6b79.js +41 -0
  103. flowfile/web/static/assets/outputCsv-076b85ab.js +86 -0
  104. flowfile/web/static/assets/{Output-48f81019.css → outputCsv-9cc59e0b.css} +0 -143
  105. flowfile/web/static/assets/outputExcel-0fd17dbe.js +56 -0
  106. flowfile/web/static/assets/outputExcel-b41305c0.css +102 -0
  107. flowfile/web/static/assets/outputParquet-b61e0847.js +31 -0
  108. flowfile/web/static/assets/outputParquet-cf8cf3f2.css +4 -0
  109. flowfile/web/static/assets/readCsv-a8bb8b61.js +179 -0
  110. flowfile/web/static/assets/readCsv-c767cb37.css +52 -0
  111. flowfile/web/static/assets/readExcel-67b4aee0.js +201 -0
  112. flowfile/web/static/assets/readExcel-806d2826.css +64 -0
  113. flowfile/web/static/assets/readParquet-48c81530.css +19 -0
  114. flowfile/web/static/assets/readParquet-92ce1dbc.js +23 -0
  115. flowfile/web/static/assets/{secretApi-baceb6f9.js → secretApi-68435402.js} +1 -1
  116. flowfile/web/static/assets/{selectDynamic-de91449a.js → selectDynamic-92e25ee3.js} +7 -7
  117. flowfile/web/static/assets/{selectDynamic-b062bc9b.css → selectDynamic-aa913ff4.css} +16 -16
  118. flowfile/web/static/assets/user-defined-icon-0ae16c90.png +0 -0
  119. flowfile/web/static/assets/{vue-codemirror.esm-dc5e3348.js → vue-codemirror.esm-41b0e0d7.js} +65 -36
  120. flowfile/web/static/assets/{vue-content-loader.es-ba94b82f.js → vue-content-loader.es-2c8e608f.js} +1 -1
  121. flowfile/web/static/index.html +2 -2
  122. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/METADATA +5 -3
  123. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/RECORD +191 -121
  124. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/WHEEL +1 -1
  125. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info}/entry_points.txt +1 -0
  126. flowfile_core/__init__.py +3 -0
  127. flowfile_core/configs/flow_logger.py +5 -13
  128. flowfile_core/configs/node_store/__init__.py +30 -0
  129. flowfile_core/configs/node_store/nodes.py +383 -99
  130. flowfile_core/configs/node_store/user_defined_node_registry.py +193 -0
  131. flowfile_core/configs/settings.py +2 -1
  132. flowfile_core/database/connection.py +5 -21
  133. flowfile_core/fileExplorer/funcs.py +239 -121
  134. flowfile_core/flowfile/analytics/analytics_processor.py +1 -0
  135. flowfile_core/flowfile/code_generator/code_generator.py +62 -64
  136. flowfile_core/flowfile/flow_data_engine/create/funcs.py +73 -56
  137. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +77 -86
  138. flowfile_core/flowfile/flow_data_engine/flow_file_column/interface.py +4 -0
  139. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +19 -34
  140. flowfile_core/flowfile/flow_data_engine/flow_file_column/type_registry.py +36 -0
  141. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +23 -23
  142. flowfile_core/flowfile/flow_data_engine/join/utils.py +1 -1
  143. flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +9 -4
  144. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +212 -86
  145. flowfile_core/flowfile/flow_data_engine/utils.py +2 -0
  146. flowfile_core/flowfile/flow_graph.py +240 -54
  147. flowfile_core/flowfile/flow_node/flow_node.py +48 -13
  148. flowfile_core/flowfile/flow_node/models.py +2 -1
  149. flowfile_core/flowfile/handler.py +24 -5
  150. flowfile_core/flowfile/manage/compatibility_enhancements.py +404 -41
  151. flowfile_core/flowfile/manage/io_flowfile.py +394 -0
  152. flowfile_core/flowfile/node_designer/__init__.py +47 -0
  153. flowfile_core/flowfile/node_designer/_type_registry.py +197 -0
  154. flowfile_core/flowfile/node_designer/custom_node.py +371 -0
  155. flowfile_core/flowfile/node_designer/ui_components.py +277 -0
  156. flowfile_core/flowfile/schema_callbacks.py +17 -10
  157. flowfile_core/flowfile/setting_generator/settings.py +15 -10
  158. flowfile_core/main.py +5 -1
  159. flowfile_core/routes/routes.py +73 -30
  160. flowfile_core/routes/user_defined_components.py +55 -0
  161. flowfile_core/schemas/cloud_storage_schemas.py +0 -2
  162. flowfile_core/schemas/input_schema.py +228 -65
  163. flowfile_core/schemas/output_model.py +5 -2
  164. flowfile_core/schemas/schemas.py +153 -35
  165. flowfile_core/schemas/transform_schema.py +1083 -412
  166. flowfile_core/schemas/yaml_types.py +103 -0
  167. flowfile_core/types.py +156 -0
  168. flowfile_core/utils/validate_setup.py +3 -1
  169. flowfile_frame/__init__.py +3 -1
  170. flowfile_frame/flow_frame.py +31 -24
  171. flowfile_frame/flow_frame_methods.py +12 -9
  172. flowfile_worker/__init__.py +9 -35
  173. flowfile_worker/create/__init__.py +3 -21
  174. flowfile_worker/create/funcs.py +68 -56
  175. flowfile_worker/create/models.py +130 -62
  176. flowfile_worker/main.py +5 -2
  177. flowfile_worker/routes.py +52 -13
  178. shared/__init__.py +15 -0
  179. shared/storage_config.py +258 -0
  180. tools/migrate/README.md +56 -0
  181. tools/migrate/__init__.py +12 -0
  182. tools/migrate/__main__.py +131 -0
  183. tools/migrate/legacy_schemas.py +621 -0
  184. tools/migrate/migrate.py +598 -0
  185. tools/migrate/tests/__init__.py +0 -0
  186. tools/migrate/tests/conftest.py +23 -0
  187. tools/migrate/tests/test_migrate.py +627 -0
  188. tools/migrate/tests/test_migration_e2e.py +1010 -0
  189. tools/migrate/tests/test_node_migrations.py +813 -0
  190. flowfile/web/static/assets/GraphSolver-17fd26db.css +0 -68
  191. flowfile/web/static/assets/Pivot-f415e85f.css +0 -35
  192. flowfile/web/static/assets/Read-80dc1675.css +0 -197
  193. flowfile/web/static/assets/Read-c3b1929c.js +0 -701
  194. flowfile/web/static/assets/RecordCount-4e95f98e.js +0 -122
  195. flowfile/web/static/assets/Union-89fd73dc.js +0 -146
  196. flowfile/web/static/assets/Unpivot-246e9bbd.css +0 -77
  197. flowfile/web/static/assets/nodeTitle-a16db7c3.js +0 -227
  198. flowfile/web/static/assets/nodeTitle-f4b12bcb.css +0 -134
  199. flowfile_core/flowfile/manage/open_flowfile.py +0 -135
  200. {flowfile-0.3.9.dist-info → flowfile-0.5.1.dist-info/licenses}/LICENSE +0 -0
  201. /flowfile_core/flowfile/manage/manage_flowfile.py → /tools/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
- import { d as defineComponent, r as ref, a3 as watchEffect, l as computed, n as onMounted, o as onUnmounted, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, p as createBaseVNode, i as createCommentVNode, t as toDisplayString, T as normalizeStyle, g as createTextVNode, F as Fragment, q as renderList, s as normalizeClass, v as withModifiers, w as withCtx, u as unref, h as createBlock, _ as _export_sfc } from "./index-683fc198.js";
2
- import { u as useNodeStore } from "./vue-codemirror.esm-dc5e3348.js";
3
- import { u as unavailableField } from "./UnavailableFields-8b0cb48e.js";
1
+ import { d as defineComponent, r as ref, a3 as watchEffect, l as computed, n as onMounted, o as onUnmounted, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, p as createBaseVNode, i as createCommentVNode, t as toDisplayString, T as normalizeStyle, g as createTextVNode, F as Fragment, q as renderList, s as normalizeClass, v as withModifiers, w as withCtx, u as unref, h as createBlock, _ as _export_sfc } from "./index-5429bbf8.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-41b0e0d7.js";
3
+ import { u as unavailableField } from "./UnavailableFields-a03f512c.js";
4
4
  const _hoisted_1 = { key: 0 };
5
5
  const _hoisted_2 = {
6
6
  key: 1,
@@ -175,7 +175,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
175
175
  const _component_el_option = resolveComponent("el-option");
176
176
  const _component_el_select = resolveComponent("el-select");
177
177
  const _component_el_checkbox = resolveComponent("el-checkbox");
178
- return openBlock(), createElementBlock(Fragment, null, [
178
+ return openBlock(), createElementBlock("div", null, [
179
179
  dataLoaded.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
180
180
  hasMissingFields.value ? (openBlock(), createElementBlock("div", {
181
181
  key: 0,
@@ -291,12 +291,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
291
291
  createBaseVNode("button", { onClick: selectAllSelected }, "Select"),
292
292
  createBaseVNode("button", { onClick: deselectAllSelected }, "Deselect")
293
293
  ], 4)) : createCommentVNode("", true)
294
- ], 64);
294
+ ]);
295
295
  };
296
296
  }
297
297
  });
298
- const selectDynamic_vue_vue_type_style_index_0_scoped_86b67fdf_lang = "";
299
- const selectDynamic = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-86b67fdf"]]);
298
+ const selectDynamic_vue_vue_type_style_index_0_scoped_c49d6287_lang = "";
299
+ const selectDynamic = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c49d6287"]]);
300
300
  export {
301
301
  selectDynamic as s
302
302
  };
@@ -1,6 +1,6 @@
1
1
 
2
2
  /* Context menu styling */
3
- .context-menu[data-v-86b67fdf] {
3
+ .context-menu[data-v-c49d6287] {
4
4
  position: fixed;
5
5
  z-index: 1000;
6
6
  border: 1px solid #ccc;
@@ -10,7 +10,7 @@
10
10
  border-radius: 4px;
11
11
  user-select: none;
12
12
  }
13
- .context-menu button[data-v-86b67fdf] {
13
+ .context-menu button[data-v-c49d6287] {
14
14
  display: block;
15
15
  background: none;
16
16
  border: none;
@@ -19,12 +19,12 @@
19
19
  width: 100%;
20
20
  cursor: pointer;
21
21
  }
22
- .context-menu button[data-v-86b67fdf]:hover {
22
+ .context-menu button[data-v-c49d6287]:hover {
23
23
  background-color: #f0f0f0;
24
24
  }
25
25
 
26
26
  /* Table wrapper for scrolling */
27
- .table-wrapper[data-v-86b67fdf] {
27
+ .table-wrapper[data-v-c49d6287] {
28
28
  max-height: 700px;
29
29
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
30
30
  border-radius: 8px;
@@ -33,30 +33,30 @@
33
33
  }
34
34
 
35
35
  /* Adjusted font size for input fields */
36
- [data-v-86b67fdf] .smaller-el-input .el-input__inner {
36
+ [data-v-c49d6287] .smaller-el-input .el-input__inner {
37
37
  padding: 2px 10px;
38
38
  font-size: 12px;
39
39
  height: 24px;
40
40
  line-height: 20px;
41
41
  }
42
- .smaller-el-input[data-v-86b67fdf] {
42
+ .smaller-el-input[data-v-c49d6287] {
43
43
  line-height: 20px;
44
44
  }
45
45
 
46
46
  /* Highlight selected rows */
47
- .highlight-row[data-v-86b67fdf] {
47
+ .highlight-row[data-v-c49d6287] {
48
48
  background-color: #e7e6e6 !important;
49
49
  }
50
50
 
51
51
  /* Greyed out styling for unavailable fields */
52
- .greyed-out[data-v-86b67fdf] {
52
+ .greyed-out[data-v-c49d6287] {
53
53
  background-color: #dcdcdc !important;
54
54
  color: #888 !important;
55
55
  z-index: 1;
56
56
  }
57
57
 
58
58
  /* Unavailable field styling */
59
- .unavailable-field[data-v-86b67fdf] {
59
+ .unavailable-field[data-v-c49d6287] {
60
60
  display: flex;
61
61
  align-items: center;
62
62
  position: relative;
@@ -64,7 +64,7 @@
64
64
  }
65
65
 
66
66
  /* Remove missing fields button styling */
67
- .remove-missing-fields[data-v-86b67fdf] {
67
+ .remove-missing-fields[data-v-c49d6287] {
68
68
  display: flex;
69
69
  align-items: center;
70
70
  background-color: #d9534f;
@@ -76,31 +76,31 @@
76
76
  font-weight: bold;
77
77
  font-size: 0.9em;
78
78
  }
79
- .remove-missing-fields[data-v-86b67fdf]:hover {
79
+ .remove-missing-fields[data-v-c49d6287]:hover {
80
80
  background-color: #c9302c;
81
81
  }
82
- .remove-missing-fields > unavailable-field[data-v-86b67fdf] {
82
+ .remove-missing-fields > unavailable-field[data-v-c49d6287] {
83
83
  margin-right: 4px;
84
84
  }
85
85
 
86
86
  /* Adjustments for el-checkbox component */
87
- [data-v-86b67fdf] .el-checkbox {
87
+ [data-v-c49d6287] .el-checkbox {
88
88
  font-size: 12px;
89
89
  height: 20px;
90
90
  line-height: 20px;
91
91
  display: flex;
92
92
  align-items: center;
93
93
  }
94
- [data-v-86b67fdf] .el-checkbox .el-checkbox__input {
94
+ [data-v-c49d6287] .el-checkbox .el-checkbox__input {
95
95
  height: 16px;
96
96
  width: 16px;
97
97
  margin: 0;
98
98
  }
99
- [data-v-86b67fdf] .el-checkbox .el-checkbox__inner {
99
+ [data-v-c49d6287] .el-checkbox .el-checkbox__inner {
100
100
  height: 16px;
101
101
  width: 16px;
102
102
  }
103
- [data-v-86b67fdf] .el-checkbox .el-checkbox__label {
103
+ [data-v-c49d6287] .el-checkbox .el-checkbox__label {
104
104
  font-size: 12px;
105
105
  line-height: 20px;
106
106
  margin-left: 4px;
@@ -1,4 +1,4 @@
1
- import { r as ref, j as defineStore, a as axios, d as defineComponent, ae as useCssVars, n as onMounted, c as openBlock, e as createElementBlock, p as createBaseVNode, L as renderSlot, h as createBlock, t as toDisplayString, i as createCommentVNode, T as normalizeStyle, s as normalizeClass, a7 as Teleport, R as nextTick, _ as _export_sfc, X as shallowRef, B as inject, l as computed, m as watch, U as onBeforeUnmount, Y as h$1, af as toRaw } from "./index-683fc198.js";
1
+ import { r as ref, j as defineStore, X as shallowRef, a as axios, d as defineComponent, ai as useCssVars, n as onMounted, c as openBlock, e as createElementBlock, p as createBaseVNode, L as renderSlot, h as createBlock, t as toDisplayString, i as createCommentVNode, T as normalizeStyle, s as normalizeClass, aa as Teleport, R as nextTick, _ as _export_sfc, B as inject, l as computed, m as watch, U as onBeforeUnmount, Y as h$1, aj as toRaw } from "./index-5429bbf8.js";
2
2
  const FLOW_ID_STORAGE_KEY = "last_flow_id";
3
3
  ref(null);
4
4
  const getDownstreamNodeIds = async (flow_id, node_id) => {
@@ -42,13 +42,20 @@ const useNodeStore = defineStore("node", {
42
42
  resultVersion: 0,
43
43
  vueFlowInstance: null,
44
44
  allExpressions: null,
45
+ hideLogViewerForThisRun: false,
45
46
  isShowingLogViewer: false,
46
47
  isStreamingLogs: false,
47
48
  displayLogViewer: true,
48
- showCodeGenerator: false
49
+ showCodeGenerator: false,
50
+ activeDrawerComponent: shallowRef(null),
51
+ drawerProps: ref({})
49
52
  };
50
53
  },
51
54
  actions: {
55
+ async executeDrawCloseFunction() {
56
+ console.log("Executing draw close function");
57
+ this.drawCloseFunction();
58
+ },
52
59
  toggleCodeGenerator() {
53
60
  this.showCodeGenerator = !this.showCodeGenerator;
54
61
  },
@@ -108,7 +115,7 @@ const useNodeStore = defineStore("node", {
108
115
  this.currentRunResult = runResult;
109
116
  this.runResults[runResult.flow_id] = runResult;
110
117
  this.showFlowResult = showResult;
111
- this.isShowingLogViewer = this.displayLogViewer && showResult;
118
+ this.isShowingLogViewer = this.displayLogViewer && showResult && !this.hideLogViewerForThisRun;
112
119
  this.initializeResultCache(runResult.flow_id);
113
120
  runResult.node_step_result.forEach((nodeResult) => {
114
121
  this.runNodeResults[runResult.flow_id][nodeResult.node_id] = nodeResult;
@@ -138,8 +145,6 @@ const useNodeStore = defineStore("node", {
138
145
  const func = this.nodeValidateFuncs.get(nodeId);
139
146
  if (func) {
140
147
  func();
141
- } else {
142
- console.warn("No validation function found for node", nodeId);
143
148
  }
144
149
  },
145
150
  setFlowId(flowId) {
@@ -162,6 +167,9 @@ const useNodeStore = defineStore("node", {
162
167
  cacheNodeDescriptionDict(flowId, nodeId, description) {
163
168
  this.initializeDescriptionCache(flowId);
164
169
  this.nodeDescriptions[flowId][nodeId] = description;
170
+ if (this.nodeData && this.nodeData.node_id === nodeId && this.nodeData.setting_input) {
171
+ this.nodeData.setting_input.description = description;
172
+ }
165
173
  },
166
174
  clearNodeDescriptionCache(flowId, nodeId) {
167
175
  if (this.nodeDescriptions[flowId] && this.nodeDescriptions[flowId][nodeId]) {
@@ -200,6 +208,11 @@ const useNodeStore = defineStore("node", {
200
208
  return "";
201
209
  }
202
210
  },
211
+ getters: {
212
+ isDrawerOpen() {
213
+ return !!this.activeDrawerComponent;
214
+ }
215
+ },
203
216
  async setNodeDescription(nodeId, description) {
204
217
  try {
205
218
  this.cacheNodeDescriptionDict(this.flow_id, nodeId, description);
@@ -212,10 +225,10 @@ const useNodeStore = defineStore("node", {
212
225
  "Content-Type": "application/json"
213
226
  }
214
227
  });
215
- if (response.data.status === "success") {
216
- console.log(response.data.message);
228
+ if (response.data === true) {
229
+ console.log("Description updated successfully");
217
230
  } else {
218
- console.warn("Unexpected success response structure:", response.data);
231
+ console.warn("Unexpected response:", response.data);
219
232
  }
220
233
  } catch (error) {
221
234
  if (error.response) {
@@ -238,7 +251,6 @@ const useNodeStore = defineStore("node", {
238
251
  this.size_data_preview = newHeight;
239
252
  },
240
253
  toggleDrawer() {
241
- console.log("toggleDrawer in column-store.ts");
242
254
  if (this.isDrawerOpen && this.drawCloseFunction) {
243
255
  this.pushNodeData();
244
256
  }
@@ -250,22 +262,16 @@ const useNodeStore = defineStore("node", {
250
262
  this.drawCloseFunction = null;
251
263
  }
252
264
  },
253
- openDrawer(close_function) {
254
- console.log("openDrawer in column-store.ts");
255
- if (this.isDrawerOpen) {
256
- console.log("pushing data");
257
- this.pushNodeData();
258
- }
259
- if (close_function) {
260
- this.drawCloseFunction = close_function;
261
- }
265
+ openDrawer(component, nodeTitleInfo, props = {}) {
266
+ this.activeDrawerComponent = component;
267
+ this.drawerProps = { ...nodeTitleInfo, ...props };
262
268
  this.isDrawerOpen = true;
263
269
  },
264
270
  closeDrawer() {
265
- this.isDrawerOpen = false;
266
- if (this.drawCloseFunction) {
267
- this.pushNodeData();
268
- }
271
+ this.activeDrawerComponent = null;
272
+ this.node_id = -1;
273
+ if (this.drawCloseFunction)
274
+ ;
269
275
  this.node_id = -1;
270
276
  },
271
277
  openAnalysisDrawer(close_function) {
@@ -325,9 +331,9 @@ const useNodeStore = defineStore("node", {
325
331
  }
326
332
  }
327
333
  try {
328
- this.setFlowIdAndNodeId(this.flow_id, node_id);
334
+ console.log("Getting node data");
329
335
  const response = await axios.get("/node", {
330
- params: { flow_id: this.flow_id, node_id: this.node_id },
336
+ params: { flow_id: this.flow_id, node_id },
331
337
  headers: { accept: "application/json" }
332
338
  });
333
339
  this.nodeData = response.data;
@@ -350,8 +356,6 @@ const useNodeStore = defineStore("node", {
350
356
  return;
351
357
  }
352
358
  console.log("Automatically pushing the node data ");
353
- this.pushNodeData();
354
- this.previous_node_id = this.node_id;
355
359
  if (this.flow_id !== flow_id) {
356
360
  this.setFlowId(flow_id);
357
361
  }
@@ -393,14 +397,12 @@ const useNodeStore = defineStore("node", {
393
397
  async updateSettingsDirectly(inputData) {
394
398
  var _a2, _b;
395
399
  try {
396
- const node = (_a2 = this.vueFlowInstance) == null ? void 0 : _a2.findNode(String(this.node_id));
400
+ const node = (_a2 = this.vueFlowInstance) == null ? void 0 : _a2.findNode(String(inputData.node_id));
397
401
  inputData.pos_x = node.position.x;
398
402
  inputData.pos_y = node.position.y;
399
- console.log("updating settings");
400
- console.log("node", node);
401
403
  const response = await axios.post("/update_settings/", inputData, {
402
404
  params: {
403
- node_type: node.data.component.__name
405
+ node_type: node.data.nodeTemplate.item
404
406
  }
405
407
  });
406
408
  const downstreamNodeIds = await loadDownstreamNodeIds(this.flow_id, inputData.node_id);
@@ -408,23 +410,50 @@ const useNodeStore = defineStore("node", {
408
410
  this.validateNode(nodeId);
409
411
  });
410
412
  return response.data;
413
+ } catch (error) {
414
+ console.error("Error updating settings directly:", (_b = error.response) == null ? void 0 : _b.data);
415
+ throw error;
416
+ }
417
+ },
418
+ async updateUserDefinedSettings(inputData) {
419
+ var _a2, _b;
420
+ try {
421
+ const node = (_a2 = this.vueFlowInstance) == null ? void 0 : _a2.findNode(String(inputData.value.node_id));
422
+ const nodeType = node.data.nodeTemplate.item;
423
+ inputData.value.pos_x = node.position.x;
424
+ inputData.value.pos_y = node.position.y;
425
+ const response = await axios.post(
426
+ "/user_defined_components/update_user_defined_node/",
427
+ inputData.value,
428
+ {
429
+ params: {
430
+ node_type: nodeType
431
+ }
432
+ }
433
+ );
434
+ const downstreamNodeIds = await loadDownstreamNodeIds(
435
+ this.flow_id,
436
+ inputData.value.node_id
437
+ );
438
+ downstreamNodeIds.map((nodeId) => {
439
+ this.validateNode(nodeId);
440
+ });
441
+ return response.data;
411
442
  } catch (error) {
412
443
  console.error("Error updating settings:", (_b = error.response) == null ? void 0 : _b.data);
413
444
  throw error;
414
445
  }
415
446
  },
416
- async updateSettings(inputData) {
447
+ async updateSettings(inputData, inputNodeType) {
417
448
  var _a2, _b;
418
449
  try {
419
- const node = (_a2 = this.vueFlowInstance) == null ? void 0 : _a2.findNode(String(this.node_id));
450
+ const node = (_a2 = this.vueFlowInstance) == null ? void 0 : _a2.findNode(String(inputData.value.node_id));
451
+ const nodeType = inputNodeType ?? node.data.nodeTemplate.item;
420
452
  inputData.value.pos_x = node.position.x;
421
453
  inputData.value.pos_y = node.position.y;
422
- console.log("updating settings");
423
- console.log("node", node);
424
- console.log("node name", node.data.component.__name);
425
454
  const response = await axios.post("/update_settings/", inputData.value, {
426
455
  params: {
427
- node_type: node.data.component.__name
456
+ node_type: nodeType
428
457
  }
429
458
  });
430
459
  const downstreamNodeIds = await loadDownstreamNodeIds(
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, f as createVNode, l as computed } from "./index-683fc198.js";
1
+ import { d as defineComponent, f as createVNode, l as computed } from "./index-5429bbf8.js";
2
2
  var uid = function() {
3
3
  return Math.random().toString(36).substring(2);
4
4
  };
@@ -12,8 +12,8 @@
12
12
 
13
13
  <!-- Material Icons -->
14
14
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
15
- <script type="module" crossorigin src="/assets/index-683fc198.js"></script>
16
- <link rel="stylesheet" href="/assets/index-681a3ed0.css">
15
+ <script type="module" crossorigin src="/assets/index-5429bbf8.js"></script>
16
+ <link rel="stylesheet" href="/assets/index-50508d4d.css">
17
17
  </head>
18
18
  <body>
19
19
  <div id="app"></div>
@@ -1,14 +1,16 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: Flowfile
3
- Version: 0.3.9
3
+ Version: 0.5.1
4
4
  Summary: Project combining flowfile core (backend) and flowfile_worker (compute offloader) and flowfile_frame (api)
5
+ License-File: LICENSE
5
6
  Author: Edward van Eechoud
6
7
  Author-email: evaneechoud@gmail.com
7
- Requires-Python: >=3.10,<3.13
8
+ Requires-Python: >=3.10,<3.14
8
9
  Classifier: Programming Language :: Python :: 3
9
10
  Classifier: Programming Language :: Python :: 3.10
10
11
  Classifier: Programming Language :: Python :: 3.11
11
12
  Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
12
14
  Requires-Dist: XlsxWriter (>=3.2.0,<3.3.0)
13
15
  Requires-Dist: aiofiles (>=24.1.0,<25.0.0)
14
16
  Requires-Dist: bcrypt (>=4.3.0,<5.0.0)