Flowfile 0.5.1__py3-none-any.whl → 0.5.3__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.
- build_backends/main.py +25 -22
- build_backends/main_prd.py +10 -19
- flowfile/__init__.py +178 -74
- flowfile/__main__.py +10 -7
- flowfile/api.py +51 -57
- flowfile/web/__init__.py +14 -9
- flowfile/web/static/assets/AdminView-49392a9a.js +713 -0
- flowfile/web/static/assets/AdminView-f53bad23.css +129 -0
- flowfile/web/static/assets/CloudConnectionView-36bcd6df.css +72 -0
- flowfile/web/static/assets/{CloudConnectionManager-0dfba9f2.js → CloudConnectionView-f13f202b.js} +11 -11
- flowfile/web/static/assets/{CloudStorageReader-d5b1b6c9.js → CloudStorageReader-0023d4a5.js} +10 -8
- flowfile/web/static/assets/{CloudStorageReader-29d14fcc.css → CloudStorageReader-24c54524.css} +27 -27
- flowfile/web/static/assets/{CloudStorageWriter-b0ee067f.css → CloudStorageWriter-60547855.css} +26 -26
- flowfile/web/static/assets/{CloudStorageWriter-00d87aad.js → CloudStorageWriter-8e781e11.js} +10 -8
- flowfile/web/static/assets/{ColumnSelector-47996a16.css → ColumnSelector-371637fb.css} +2 -2
- flowfile/web/static/assets/{ColumnSelector-4685e75d.js → ColumnSelector-8ad68ea9.js} +3 -5
- flowfile/web/static/assets/{ContextMenu-c13f91d0.css → ContextMenu-26d4dd27.css} +6 -6
- flowfile/web/static/assets/{ContextMenu-23e909da.js → ContextMenu-31ee57f0.js} +3 -3
- flowfile/web/static/assets/{ContextMenu-70ae0c79.js → ContextMenu-69a74055.js} +3 -3
- flowfile/web/static/assets/{ContextMenu-f149cf7c.js → ContextMenu-8e2051c6.js} +3 -3
- flowfile/web/static/assets/{ContextMenu-4c74eef1.css → ContextMenu-8ec1729e.css} +6 -6
- flowfile/web/static/assets/{ContextMenu-63cfa99b.css → ContextMenu-9b310c60.css} +6 -6
- flowfile/web/static/assets/{CrossJoin-702a3edd.js → CrossJoin-03df6938.js} +12 -10
- flowfile/web/static/assets/{CrossJoin-1119d18e.css → CrossJoin-71b4cc10.css} +20 -20
- flowfile/web/static/assets/CustomNode-59e99a86.css +32 -0
- flowfile/web/static/assets/{CustomNode-b1519993.js → CustomNode-8479239b.js} +36 -24
- flowfile/web/static/assets/{DatabaseConnectionSettings-6f3e4ea5.js → DatabaseConnectionSettings-869e3efd.js} +5 -4
- flowfile/web/static/assets/{DatabaseConnectionSettings-0c04b2e5.css → DatabaseConnectionSettings-e91df89a.css} +13 -13
- flowfile/web/static/assets/{DatabaseReader-ae61773c.css → DatabaseReader-36898a00.css} +24 -24
- flowfile/web/static/assets/{DatabaseReader-d38c7295.js → DatabaseReader-c58b9552.js} +25 -15
- flowfile/web/static/assets/DatabaseView-6655afd6.css +57 -0
- flowfile/web/static/assets/{DatabaseManager-cf5ef661.js → DatabaseView-d26a9140.js} +11 -11
- flowfile/web/static/assets/{DatabaseWriter-2f570e53.css → DatabaseWriter-217a99f1.css} +19 -19
- flowfile/web/static/assets/{DatabaseWriter-b04ef46a.js → DatabaseWriter-4d05ddc7.js} +17 -10
- flowfile/web/static/assets/{designer-8da3ba3a.css → DesignerView-a6d0ee84.css} +614 -546
- flowfile/web/static/assets/{designer-9633482a.js → DesignerView-e6f5c0e8.js} +1107 -3170
- flowfile/web/static/assets/{documentation-ca400224.js → DocumentationView-2e78ef1b.js} +5 -5
- flowfile/web/static/assets/{documentation-12216a74.css → DocumentationView-fd46c656.css} +7 -7
- flowfile/web/static/assets/{ExploreData-2d0cf4db.css → ExploreData-10c5acc8.css} +13 -12
- flowfile/web/static/assets/{ExploreData-5fa10ed8.js → ExploreData-7b54caca.js} +18 -9
- flowfile/web/static/assets/{ExternalSource-d39af878.js → ExternalSource-3fa399b2.js} +9 -7
- flowfile/web/static/assets/{ExternalSource-e37b6275.css → ExternalSource-47ab05a3.css} +17 -17
- flowfile/web/static/assets/Filter-7494ea97.css +48 -0
- flowfile/web/static/assets/Filter-8cbbdbf3.js +287 -0
- flowfile/web/static/assets/{Formula-bb96803d.css → Formula-53d58c43.css} +7 -7
- flowfile/web/static/assets/{Formula-6b04fb1d.js → Formula-aac42b1e.js} +13 -11
- flowfile/web/static/assets/{FuzzyMatch-1010f966.css → FuzzyMatch-ad6361d6.css} +68 -69
- flowfile/web/static/assets/{FuzzyMatch-999521f4.js → FuzzyMatch-cd9bbfca.js} +12 -10
- flowfile/web/static/assets/{Pivot-cf333e3d.css → GraphSolver-c24dec17.css} +5 -5
- flowfile/web/static/assets/{GraphSolver-17dd2198.js → GraphSolver-c7e6780e.js} +13 -11
- flowfile/web/static/assets/{GroupBy-6b039e18.js → GroupBy-93c5d22b.js} +9 -7
- flowfile/web/static/assets/{GroupBy-b9505323.css → GroupBy-be7ac0bf.css} +10 -10
- flowfile/web/static/assets/{Join-fd79b451.css → Join-28b5e18f.css} +22 -22
- flowfile/web/static/assets/{Join-24d0f113.js → Join-a19b2de2.js} +13 -11
- flowfile/web/static/assets/LoginView-0df4ed0a.js +134 -0
- flowfile/web/static/assets/LoginView-d325d632.css +172 -0
- flowfile/web/static/assets/ManualInput-3702e677.css +293 -0
- flowfile/web/static/assets/{ManualInput-34639209.js → ManualInput-8d3374b2.js} +170 -116
- flowfile/web/static/assets/{MultiSelect-0e8724a3.js → MultiSelect-ad1b6243.js} +2 -2
- flowfile/web/static/assets/{MultiSelect.vue_vue_type_script_setup_true_lang-b0e538c2.js → MultiSelect.vue_vue_type_script_setup_true_lang-e278950d.js} +1 -1
- flowfile/web/static/assets/NodeDesigner-40b647c9.js +2610 -0
- flowfile/web/static/assets/NodeDesigner-5f53be3f.css +1429 -0
- flowfile/web/static/assets/{NumericInput-3d63a470.js → NumericInput-7100234c.js} +2 -2
- flowfile/web/static/assets/{NumericInput.vue_vue_type_script_setup_true_lang-e0edeccc.js → NumericInput.vue_vue_type_script_setup_true_lang-5130219f.js} +5 -2
- flowfile/web/static/assets/{Output-283fe388.css → Output-35e97000.css} +6 -6
- flowfile/web/static/assets/{Output-edea9802.js → Output-f5efd2aa.js} +12 -9
- flowfile/web/static/assets/{GraphSolver-f0cb7bfb.css → Pivot-0eda81b4.css} +5 -5
- flowfile/web/static/assets/{Pivot-61d19301.js → Pivot-d981d23c.js} +11 -9
- flowfile/web/static/assets/PivotValidation-0e905b1a.css +13 -0
- flowfile/web/static/assets/{PivotValidation-f97fec5b.js → PivotValidation-39386e95.js} +3 -3
- flowfile/web/static/assets/PivotValidation-41b57ad6.css +13 -0
- flowfile/web/static/assets/{PivotValidation-de9f43fe.js → PivotValidation-63de1f73.js} +3 -3
- flowfile/web/static/assets/{PolarsCode-650322d1.css → PolarsCode-2b1f1f23.css} +4 -4
- flowfile/web/static/assets/{PolarsCode-bc3c9984.js → PolarsCode-f9d69217.js} +18 -9
- flowfile/web/static/assets/PopOver-b22f049e.js +939 -0
- flowfile/web/static/assets/PopOver-d96599db.css +33 -0
- flowfile/web/static/assets/{Read-e808b239.css → Read-36e7bd51.css} +12 -12
- flowfile/web/static/assets/{Read-64a3f259.js → Read-aec2e377.js} +14 -11
- flowfile/web/static/assets/{RecordCount-3d5039be.js → RecordCount-78ed6845.js} +6 -4
- flowfile/web/static/assets/{RecordId-597510e0.js → RecordId-2156e890.js} +8 -6
- flowfile/web/static/assets/{SQLQueryComponent-36cef432.css → SQLQueryComponent-1c2f26b4.css} +5 -5
- flowfile/web/static/assets/{SQLQueryComponent-df51adbe.js → SQLQueryComponent-48c72f5b.js} +3 -3
- flowfile/web/static/assets/{Sample-4be0a507.js → Sample-1352ca74.js} +6 -4
- flowfile/web/static/assets/SecretSelector-22b5ff89.js +113 -0
- flowfile/web/static/assets/SecretSelector-6329f743.css +43 -0
- flowfile/web/static/assets/{SecretManager-4839be57.js → SecretsView-17df66ee.js} +35 -36
- flowfile/web/static/assets/SecretsView-aa291340.css +38 -0
- flowfile/web/static/assets/{Select-9b72f201.js → Select-0aee4c54.js} +9 -7
- flowfile/web/static/assets/{SettingsSection-f0f75a42.js → SettingsSection-0784e157.js} +3 -3
- flowfile/web/static/assets/{SettingsSection-71e6b7e3.css → SettingsSection-07fbbc39.css} +4 -4
- flowfile/web/static/assets/{SettingsSection-5c696bee.css → SettingsSection-26fe48d4.css} +4 -4
- flowfile/web/static/assets/{SettingsSection-2e4d03c4.css → SettingsSection-8f980839.css} +4 -4
- flowfile/web/static/assets/{SettingsSection-e1e9c953.js → SettingsSection-cd341bb6.js} +3 -3
- flowfile/web/static/assets/{SettingsSection-7ded385d.js → SettingsSection-f2002a6d.js} +3 -3
- flowfile/web/static/assets/{SingleSelect-6c777aac.js → SingleSelect-460cc0ea.js} +2 -2
- flowfile/web/static/assets/{SingleSelect.vue_vue_type_script_setup_true_lang-33e3ff9b.js → SingleSelect.vue_vue_type_script_setup_true_lang-30741bb2.js} +1 -1
- flowfile/web/static/assets/{SliderInput-7cb93e62.js → SliderInput-5d926864.js} +7 -4
- flowfile/web/static/assets/SliderInput-f2e4f23c.css +4 -0
- flowfile/web/static/assets/{Sort-6cbde21a.js → Sort-3cdc971b.js} +9 -7
- flowfile/web/static/assets/{Unique-f9fb0809.css → Sort-8a871341.css} +10 -10
- flowfile/web/static/assets/{TextInput-d9a40c11.js → TextInput-a2d0bfbd.js} +2 -2
- flowfile/web/static/assets/{TextInput.vue_vue_type_script_setup_true_lang-5896c375.js → TextInput.vue_vue_type_script_setup_true_lang-abad1ca2.js} +5 -2
- flowfile/web/static/assets/{TextToRows-5d2c1190.css → TextToRows-12afb4f4.css} +10 -10
- flowfile/web/static/assets/{TextToRows-c4fcbf4d.js → TextToRows-918945f7.js} +11 -10
- flowfile/web/static/assets/{ToggleSwitch-4ef91d19.js → ToggleSwitch-f0ef5196.js} +2 -2
- flowfile/web/static/assets/{ToggleSwitch.vue_vue_type_script_setup_true_lang-38478c20.js → ToggleSwitch.vue_vue_type_script_setup_true_lang-5605c793.js} +1 -1
- flowfile/web/static/assets/{UnavailableFields-5edd5322.css → UnavailableFields-54d2f518.css} +6 -6
- flowfile/web/static/assets/{UnavailableFields-a03f512c.js → UnavailableFields-bdad6144.js} +4 -4
- flowfile/web/static/assets/{Union-af6c3d9b.css → Union-d6a8d7d5.css} +7 -7
- flowfile/web/static/assets/{Union-bfe9b996.js → Union-e8ab8c86.js} +8 -6
- flowfile/web/static/assets/{Unique-5d023a27.js → Unique-8cd4f976.js} +13 -10
- flowfile/web/static/assets/{Sort-3643d625.css → Unique-9fb2f567.css} +10 -10
- flowfile/web/static/assets/{Unpivot-1e422df3.css → Unpivot-710a2948.css} +7 -7
- flowfile/web/static/assets/{Unpivot-91cc5354.js → Unpivot-8da14095.js} +10 -8
- flowfile/web/static/assets/{UnpivotValidation-7ee2de44.js → UnpivotValidation-6f7d89ff.js} +3 -3
- flowfile/web/static/assets/UnpivotValidation-d5ca3b7b.css +13 -0
- flowfile/web/static/assets/{VueGraphicWalker-e51b9924.js → VueGraphicWalker-3fb312e1.js} +4 -4
- flowfile/web/static/assets/{VueGraphicWalker-ed5ab88b.css → VueGraphicWalker-430f0b86.css} +1 -1
- flowfile/web/static/assets/{api-cf1221f0.js → api-24483f0d.js} +1 -1
- flowfile/web/static/assets/{api-c1bad5ca.js → api-8b81fa73.js} +1 -1
- flowfile/web/static/assets/{dropDown-35135ba8.css → dropDown-3d8dc5fa.css} +40 -40
- flowfile/web/static/assets/{dropDown-614b998d.js → dropDown-ac0fda9d.js} +3 -3
- flowfile/web/static/assets/{fullEditor-f7971590.js → fullEditor-5497a84a.js} +11 -10
- flowfile/web/static/assets/{fullEditor-178376bb.css → fullEditor-a0be62b3.css} +74 -62
- flowfile/web/static/assets/{genericNodeSettings-924759c7.css → genericNodeSettings-3b2507ea.css} +10 -10
- flowfile/web/static/assets/{genericNodeSettings-4fe5f36b.js → genericNodeSettings-99014e1d.js} +5 -5
- flowfile/web/static/assets/index-07dda503.js +38 -0
- flowfile/web/static/assets/index-3ba44389.js +2696 -0
- flowfile/web/static/assets/{index-50508d4d.css → index-e6289dd0.css} +1945 -569
- flowfile/web/static/assets/{index-5429bbf8.js → index-fb6493ae.js} +41626 -40867
- flowfile/web/static/assets/node.types-2c15bb7e.js +82 -0
- flowfile/web/static/assets/nodeInput-0eb13f1a.js +2 -0
- flowfile/web/static/assets/{outputCsv-076b85ab.js → outputCsv-8f8ba42d.js} +3 -3
- flowfile/web/static/assets/outputCsv-b9a072af.css +2499 -0
- flowfile/web/static/assets/{outputExcel-0fd17dbe.js → outputExcel-393f4fef.js} +3 -3
- flowfile/web/static/assets/{outputExcel-b41305c0.css → outputExcel-f5d272b2.css} +26 -26
- flowfile/web/static/assets/{outputParquet-b61e0847.js → outputParquet-07c81f65.js} +4 -4
- flowfile/web/static/assets/outputParquet-54597c3c.css +4 -0
- flowfile/web/static/assets/{readCsv-a8bb8b61.js → readCsv-07f6d9ad.js} +3 -3
- flowfile/web/static/assets/{readCsv-c767cb37.css → readCsv-3bfac4c3.css} +15 -15
- flowfile/web/static/assets/{readExcel-806d2826.css → readExcel-3db6b763.css} +13 -13
- flowfile/web/static/assets/{readExcel-67b4aee0.js → readExcel-ed69bc8f.js} +5 -5
- flowfile/web/static/assets/{readParquet-48c81530.css → readParquet-c5244ad5.css} +4 -4
- flowfile/web/static/assets/{readParquet-92ce1dbc.js → readParquet-e3ed4528.js} +3 -3
- flowfile/web/static/assets/secrets.api-002e7d7e.js +65 -0
- flowfile/web/static/assets/{selectDynamic-92e25ee3.js → selectDynamic-80b92899.js} +5 -5
- flowfile/web/static/assets/{selectDynamic-aa913ff4.css → selectDynamic-f2fb394f.css} +21 -20
- flowfile/web/static/assets/{vue-codemirror.esm-41b0e0d7.js → vue-codemirror.esm-0965f39f.js} +31 -640
- flowfile/web/static/assets/{vue-content-loader.es-2c8e608f.js → vue-content-loader.es-c506ad97.js} +1 -1
- flowfile/web/static/index.html +2 -2
- {flowfile-0.5.1.dist-info → flowfile-0.5.3.dist-info}/METADATA +2 -3
- flowfile-0.5.3.dist-info/RECORD +402 -0
- flowfile_core/__init__.py +13 -6
- flowfile_core/auth/jwt.py +51 -16
- flowfile_core/auth/models.py +32 -7
- flowfile_core/auth/password.py +89 -0
- flowfile_core/auth/secrets.py +8 -6
- flowfile_core/configs/__init__.py +9 -7
- flowfile_core/configs/flow_logger.py +15 -14
- flowfile_core/configs/node_store/__init__.py +72 -4
- flowfile_core/configs/node_store/nodes.py +155 -172
- flowfile_core/configs/node_store/user_defined_node_registry.py +108 -27
- flowfile_core/configs/settings.py +28 -15
- flowfile_core/database/connection.py +7 -6
- flowfile_core/database/init_db.py +96 -2
- flowfile_core/database/models.py +3 -1
- flowfile_core/fileExplorer/__init__.py +17 -0
- flowfile_core/fileExplorer/funcs.py +123 -57
- flowfile_core/fileExplorer/utils.py +10 -11
- flowfile_core/flowfile/_extensions/real_time_interface.py +10 -8
- flowfile_core/flowfile/analytics/analytics_processor.py +26 -24
- flowfile_core/flowfile/analytics/graphic_walker.py +11 -12
- flowfile_core/flowfile/analytics/utils.py +1 -1
- flowfile_core/flowfile/code_generator/code_generator.py +358 -244
- flowfile_core/flowfile/connection_manager/_connection_manager.py +6 -5
- flowfile_core/flowfile/connection_manager/models.py +1 -1
- flowfile_core/flowfile/database_connection_manager/db_connections.py +60 -44
- flowfile_core/flowfile/database_connection_manager/models.py +1 -1
- flowfile_core/flowfile/extensions.py +17 -12
- flowfile_core/flowfile/flow_data_engine/cloud_storage_reader.py +34 -32
- flowfile_core/flowfile/flow_data_engine/create/funcs.py +115 -83
- flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +481 -423
- flowfile_core/flowfile/flow_data_engine/flow_file_column/interface.py +2 -2
- flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +92 -52
- flowfile_core/flowfile/flow_data_engine/flow_file_column/polars_type.py +12 -11
- flowfile_core/flowfile/flow_data_engine/flow_file_column/type_registry.py +6 -6
- flowfile_core/flowfile/flow_data_engine/flow_file_column/utils.py +26 -30
- flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +31 -20
- flowfile_core/flowfile/flow_data_engine/join/__init__.py +1 -1
- flowfile_core/flowfile/flow_data_engine/join/utils.py +11 -9
- flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +14 -15
- flowfile_core/flowfile/flow_data_engine/pivot_table.py +5 -7
- flowfile_core/flowfile/flow_data_engine/polars_code_parser.py +95 -82
- flowfile_core/flowfile/flow_data_engine/read_excel_tables.py +66 -65
- flowfile_core/flowfile/flow_data_engine/sample_data.py +27 -21
- flowfile_core/flowfile/flow_data_engine/subprocess_operations/__init__.py +1 -1
- flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +13 -11
- flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +190 -127
- flowfile_core/flowfile/flow_data_engine/threaded_processes.py +8 -8
- flowfile_core/flowfile/flow_data_engine/utils.py +99 -67
- flowfile_core/flowfile/flow_graph.py +918 -571
- flowfile_core/flowfile/flow_graph_utils.py +31 -49
- flowfile_core/flowfile/flow_node/flow_node.py +330 -233
- flowfile_core/flowfile/flow_node/models.py +53 -41
- flowfile_core/flowfile/flow_node/schema_callback.py +14 -19
- flowfile_core/flowfile/graph_tree/graph_tree.py +41 -41
- flowfile_core/flowfile/handler.py +80 -30
- flowfile_core/flowfile/manage/compatibility_enhancements.py +209 -126
- flowfile_core/flowfile/manage/io_flowfile.py +54 -57
- flowfile_core/flowfile/node_designer/__init__.py +15 -13
- flowfile_core/flowfile/node_designer/_type_registry.py +34 -37
- flowfile_core/flowfile/node_designer/custom_node.py +162 -36
- flowfile_core/flowfile/node_designer/ui_components.py +135 -34
- flowfile_core/flowfile/schema_callbacks.py +71 -51
- flowfile_core/flowfile/setting_generator/__init__.py +0 -1
- flowfile_core/flowfile/setting_generator/setting_generator.py +6 -5
- flowfile_core/flowfile/setting_generator/settings.py +64 -53
- flowfile_core/flowfile/sources/external_sources/base_class.py +12 -10
- flowfile_core/flowfile/sources/external_sources/custom_external_sources/external_source.py +27 -17
- flowfile_core/flowfile/sources/external_sources/custom_external_sources/sample_users.py +9 -9
- flowfile_core/flowfile/sources/external_sources/factory.py +0 -1
- flowfile_core/flowfile/sources/external_sources/sql_source/models.py +45 -31
- flowfile_core/flowfile/sources/external_sources/sql_source/sql_source.py +198 -73
- flowfile_core/flowfile/sources/external_sources/sql_source/utils.py +250 -196
- flowfile_core/flowfile/util/calculate_layout.py +9 -13
- flowfile_core/flowfile/util/execution_orderer.py +25 -17
- flowfile_core/flowfile/util/node_skipper.py +4 -4
- flowfile_core/flowfile/utils.py +19 -21
- flowfile_core/main.py +26 -19
- flowfile_core/routes/auth.py +284 -11
- flowfile_core/routes/cloud_connections.py +25 -25
- flowfile_core/routes/logs.py +21 -29
- flowfile_core/routes/public.py +3 -3
- flowfile_core/routes/routes.py +70 -34
- flowfile_core/routes/secrets.py +25 -27
- flowfile_core/routes/user_defined_components.py +483 -4
- flowfile_core/run_lock.py +0 -1
- flowfile_core/schemas/__init__.py +4 -6
- flowfile_core/schemas/analysis_schemas/graphic_walker_schemas.py +55 -55
- flowfile_core/schemas/cloud_storage_schemas.py +59 -53
- flowfile_core/schemas/input_schema.py +231 -144
- flowfile_core/schemas/output_model.py +49 -34
- flowfile_core/schemas/schemas.py +116 -89
- flowfile_core/schemas/transform_schema.py +518 -263
- flowfile_core/schemas/yaml_types.py +21 -7
- flowfile_core/secret_manager/secret_manager.py +17 -13
- flowfile_core/types.py +29 -9
- flowfile_core/utils/arrow_reader.py +7 -6
- flowfile_core/utils/excel_file_manager.py +3 -3
- flowfile_core/utils/fileManager.py +7 -7
- flowfile_core/utils/fl_executor.py +8 -10
- flowfile_core/utils/utils.py +4 -4
- flowfile_core/utils/validate_setup.py +5 -4
- flowfile_frame/__init__.py +106 -51
- flowfile_frame/adapters.py +2 -9
- flowfile_frame/adding_expr.py +73 -32
- flowfile_frame/cloud_storage/frame_helpers.py +27 -23
- flowfile_frame/cloud_storage/secret_manager.py +12 -26
- flowfile_frame/config.py +2 -5
- flowfile_frame/expr.py +311 -218
- flowfile_frame/expr.pyi +160 -159
- flowfile_frame/expr_name.py +23 -23
- flowfile_frame/flow_frame.py +571 -476
- flowfile_frame/flow_frame.pyi +123 -104
- flowfile_frame/flow_frame_methods.py +227 -246
- flowfile_frame/group_frame.py +50 -20
- flowfile_frame/join.py +2 -2
- flowfile_frame/lazy.py +129 -87
- flowfile_frame/lazy_methods.py +83 -30
- flowfile_frame/list_name_space.py +55 -50
- flowfile_frame/selectors.py +148 -68
- flowfile_frame/series.py +9 -7
- flowfile_frame/utils.py +19 -21
- flowfile_worker/__init__.py +12 -7
- flowfile_worker/configs.py +11 -19
- flowfile_worker/create/__init__.py +14 -9
- flowfile_worker/create/funcs.py +114 -77
- flowfile_worker/create/models.py +46 -43
- flowfile_worker/create/pl_types.py +14 -15
- flowfile_worker/create/read_excel_tables.py +34 -41
- flowfile_worker/create/utils.py +22 -19
- flowfile_worker/external_sources/s3_source/main.py +18 -51
- flowfile_worker/external_sources/s3_source/models.py +34 -27
- flowfile_worker/external_sources/sql_source/main.py +8 -5
- flowfile_worker/external_sources/sql_source/models.py +13 -9
- flowfile_worker/flow_logger.py +10 -8
- flowfile_worker/funcs.py +214 -155
- flowfile_worker/main.py +11 -17
- flowfile_worker/models.py +35 -28
- flowfile_worker/process_manager.py +2 -3
- flowfile_worker/routes.py +121 -90
- flowfile_worker/secrets.py +9 -6
- flowfile_worker/spawner.py +80 -49
- flowfile_worker/utils.py +3 -2
- shared/__init__.py +2 -7
- shared/storage_config.py +25 -13
- test_utils/postgres/commands.py +3 -2
- test_utils/postgres/fixtures.py +9 -9
- test_utils/s3/commands.py +1 -1
- test_utils/s3/data_generator.py +3 -4
- test_utils/s3/demo_data_generator.py +4 -7
- test_utils/s3/fixtures.py +7 -5
- tools/migrate/__init__.py +1 -1
- tools/migrate/__main__.py +16 -29
- tools/migrate/legacy_schemas.py +251 -190
- tools/migrate/migrate.py +193 -181
- tools/migrate/tests/conftest.py +1 -3
- tools/migrate/tests/test_migrate.py +36 -41
- tools/migrate/tests/test_migration_e2e.py +28 -29
- tools/migrate/tests/test_node_migrations.py +50 -20
- flowfile/web/static/assets/CloudConnectionManager-2dfdce2f.css +0 -86
- flowfile/web/static/assets/CustomNode-74a37f74.css +0 -32
- flowfile/web/static/assets/DatabaseManager-30fa27e5.css +0 -64
- flowfile/web/static/assets/Filter-9b6d08db.js +0 -164
- flowfile/web/static/assets/Filter-f62091b3.css +0 -20
- flowfile/web/static/assets/ManualInput-3246a08d.css +0 -96
- flowfile/web/static/assets/PivotValidation-891ddfb0.css +0 -13
- flowfile/web/static/assets/PivotValidation-c46cd420.css +0 -13
- flowfile/web/static/assets/SliderInput-b8fb6a8c.css +0 -4
- flowfile/web/static/assets/UnpivotValidation-0d240eeb.css +0 -13
- flowfile/web/static/assets/nodeInput-5d0d6b79.js +0 -41
- flowfile/web/static/assets/outputCsv-9cc59e0b.css +0 -2499
- flowfile/web/static/assets/outputParquet-cf8cf3f2.css +0 -4
- flowfile/web/static/assets/secretApi-68435402.js +0 -46
- flowfile/web/static/assets/vue-codemirror-bccfde04.css +0 -32
- flowfile-0.5.1.dist-info/RECORD +0 -388
- {flowfile-0.5.1.dist-info → flowfile-0.5.3.dist-info}/WHEEL +0 -0
- {flowfile-0.5.1.dist-info → flowfile-0.5.3.dist-info}/entry_points.txt +0 -0
- {flowfile-0.5.1.dist-info → flowfile-0.5.3.dist-info}/licenses/LICENSE +0 -0
tools/migrate/tests/conftest.py
CHANGED
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
Pytest configuration and shared fixtures for migration tool tests.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
import pytest
|
|
6
5
|
import sys
|
|
7
6
|
from pathlib import Path
|
|
8
7
|
|
|
9
|
-
|
|
10
8
|
# Ensure tools package is importable
|
|
11
9
|
REPO_ROOT = Path(__file__).parent.parent.parent.parent
|
|
12
10
|
if str(REPO_ROOT) not in sys.path:
|
|
@@ -20,4 +18,4 @@ def pytest_configure(config):
|
|
|
20
18
|
)
|
|
21
19
|
config.addinivalue_line(
|
|
22
20
|
"markers", "requires_yaml: marks tests that require PyYAML"
|
|
23
|
-
)
|
|
21
|
+
)
|
|
@@ -7,13 +7,12 @@ These tests verify that:
|
|
|
7
7
|
3. All node types are handled correctly in migration
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
+
import json
|
|
10
11
|
import pickle
|
|
11
12
|
import tempfile
|
|
12
|
-
import json
|
|
13
13
|
from pathlib import Path
|
|
14
|
-
from typing import Dict, Any
|
|
15
|
-
import pytest
|
|
16
14
|
|
|
15
|
+
import pytest
|
|
17
16
|
|
|
18
17
|
# =============================================================================
|
|
19
18
|
# FIXTURES
|
|
@@ -35,10 +34,7 @@ class TestReceivedTableTransformation:
|
|
|
35
34
|
|
|
36
35
|
def test_csv_flat_to_nested(self, temp_dir):
|
|
37
36
|
"""Test that flat CSV fields become nested in table_settings."""
|
|
38
|
-
from tools.migrate.legacy_schemas import
|
|
39
|
-
FlowInformation, FlowSettings, NodeInformation,
|
|
40
|
-
NodeRead, ReceivedTable
|
|
41
|
-
)
|
|
37
|
+
from tools.migrate.legacy_schemas import FlowInformation, FlowSettings, NodeInformation, NodeRead, ReceivedTable
|
|
42
38
|
from tools.migrate.migrate import migrate_flowfile
|
|
43
39
|
|
|
44
40
|
# OLD format: flat fields
|
|
@@ -96,10 +92,7 @@ class TestReceivedTableTransformation:
|
|
|
96
92
|
|
|
97
93
|
def test_excel_flat_to_nested(self, temp_dir):
|
|
98
94
|
"""Test that flat Excel fields become nested in table_settings."""
|
|
99
|
-
from tools.migrate.legacy_schemas import
|
|
100
|
-
FlowInformation, FlowSettings, NodeInformation,
|
|
101
|
-
NodeRead, ReceivedTable
|
|
102
|
-
)
|
|
95
|
+
from tools.migrate.legacy_schemas import FlowInformation, FlowSettings, NodeInformation, NodeRead, ReceivedTable
|
|
103
96
|
from tools.migrate.migrate import migrate_flowfile
|
|
104
97
|
|
|
105
98
|
# OLD format: flat fields
|
|
@@ -154,10 +147,7 @@ class TestReceivedTableTransformation:
|
|
|
154
147
|
|
|
155
148
|
def test_parquet_flat_to_nested(self, temp_dir):
|
|
156
149
|
"""Test that parquet file type gets table_settings."""
|
|
157
|
-
from tools.migrate.legacy_schemas import
|
|
158
|
-
FlowInformation, FlowSettings, NodeInformation,
|
|
159
|
-
NodeRead, ReceivedTable
|
|
160
|
-
)
|
|
150
|
+
from tools.migrate.legacy_schemas import FlowInformation, FlowSettings, NodeInformation, NodeRead, ReceivedTable
|
|
161
151
|
from tools.migrate.migrate import migrate_flowfile
|
|
162
152
|
|
|
163
153
|
received = ReceivedTable(
|
|
@@ -199,8 +189,12 @@ class TestOutputSettingsTransformation:
|
|
|
199
189
|
def test_csv_output_consolidation(self, temp_dir):
|
|
200
190
|
"""Test that separate output_csv_table becomes table_settings."""
|
|
201
191
|
from tools.migrate.legacy_schemas import (
|
|
202
|
-
FlowInformation,
|
|
203
|
-
|
|
192
|
+
FlowInformation,
|
|
193
|
+
FlowSettings,
|
|
194
|
+
NodeInformation,
|
|
195
|
+
NodeOutput,
|
|
196
|
+
OutputCsvTable,
|
|
197
|
+
OutputSettings,
|
|
204
198
|
)
|
|
205
199
|
from tools.migrate.migrate import migrate_flowfile
|
|
206
200
|
|
|
@@ -249,8 +243,12 @@ class TestOutputSettingsTransformation:
|
|
|
249
243
|
def test_excel_output_consolidation(self, temp_dir):
|
|
250
244
|
"""Test that separate output_excel_table becomes table_settings."""
|
|
251
245
|
from tools.migrate.legacy_schemas import (
|
|
252
|
-
FlowInformation,
|
|
253
|
-
|
|
246
|
+
FlowInformation,
|
|
247
|
+
FlowSettings,
|
|
248
|
+
NodeInformation,
|
|
249
|
+
NodeOutput,
|
|
250
|
+
OutputExcelTable,
|
|
251
|
+
OutputSettings,
|
|
254
252
|
)
|
|
255
253
|
from tools.migrate.migrate import migrate_flowfile
|
|
256
254
|
|
|
@@ -294,11 +292,9 @@ class TestOutputSettingsTransformation:
|
|
|
294
292
|
class TestNodeTypeMigration:
|
|
295
293
|
"""Test that all node types can be migrated correctly."""
|
|
296
294
|
|
|
297
|
-
def _create_and_migrate(self, temp_dir, node_type: str, setting_input) ->
|
|
295
|
+
def _create_and_migrate(self, temp_dir, node_type: str, setting_input) -> dict:
|
|
298
296
|
"""Helper to create a flow with one node and migrate it."""
|
|
299
|
-
from tools.migrate.legacy_schemas import
|
|
300
|
-
FlowInformation, FlowSettings, NodeInformation
|
|
301
|
-
)
|
|
297
|
+
from tools.migrate.legacy_schemas import FlowInformation, FlowSettings, NodeInformation
|
|
302
298
|
from tools.migrate.migrate import migrate_flowfile
|
|
303
299
|
|
|
304
300
|
flow = FlowInformation(
|
|
@@ -338,7 +334,7 @@ class TestNodeTypeMigration:
|
|
|
338
334
|
|
|
339
335
|
def test_migrate_filter_node(self, temp_dir):
|
|
340
336
|
"""Test filter node migration."""
|
|
341
|
-
from tools.migrate.legacy_schemas import
|
|
337
|
+
from tools.migrate.legacy_schemas import BasicFilter, FilterInput, NodeFilter
|
|
342
338
|
|
|
343
339
|
node = NodeFilter(
|
|
344
340
|
flow_id=1,
|
|
@@ -355,7 +351,7 @@ class TestNodeTypeMigration:
|
|
|
355
351
|
|
|
356
352
|
def test_migrate_formula_node(self, temp_dir):
|
|
357
353
|
"""Test formula node migration."""
|
|
358
|
-
from tools.migrate.legacy_schemas import
|
|
354
|
+
from tools.migrate.legacy_schemas import FieldInput, FunctionInput, NodeFormula
|
|
359
355
|
|
|
360
356
|
node = NodeFormula(
|
|
361
357
|
flow_id=1,
|
|
@@ -372,9 +368,7 @@ class TestNodeTypeMigration:
|
|
|
372
368
|
|
|
373
369
|
def test_migrate_join_node(self, temp_dir):
|
|
374
370
|
"""Test join node migration."""
|
|
375
|
-
from tools.migrate.legacy_schemas import
|
|
376
|
-
NodeJoin, JoinInput, JoinMap, JoinInputs, SelectInput
|
|
377
|
-
)
|
|
371
|
+
from tools.migrate.legacy_schemas import JoinInput, JoinInputs, JoinMap, NodeJoin, SelectInput
|
|
378
372
|
|
|
379
373
|
node = NodeJoin(
|
|
380
374
|
flow_id=1,
|
|
@@ -393,9 +387,7 @@ class TestNodeTypeMigration:
|
|
|
393
387
|
|
|
394
388
|
def test_migrate_join_node_with_none_selects(self, temp_dir):
|
|
395
389
|
"""Test join node migration when left_select/right_select are None (old format)."""
|
|
396
|
-
from tools.migrate.legacy_schemas import
|
|
397
|
-
NodeJoin, JoinInput, JoinMap
|
|
398
|
-
)
|
|
390
|
+
from tools.migrate.legacy_schemas import JoinInput, JoinMap, NodeJoin
|
|
399
391
|
|
|
400
392
|
# OLD format: left_select and right_select could be None
|
|
401
393
|
node = NodeJoin(
|
|
@@ -418,9 +410,7 @@ class TestNodeTypeMigration:
|
|
|
418
410
|
|
|
419
411
|
def test_migrate_groupby_node(self, temp_dir):
|
|
420
412
|
"""Test group by node migration."""
|
|
421
|
-
from tools.migrate.legacy_schemas import
|
|
422
|
-
NodeGroupBy, GroupByInput, AggColl
|
|
423
|
-
)
|
|
413
|
+
from tools.migrate.legacy_schemas import AggColl, GroupByInput, NodeGroupBy
|
|
424
414
|
|
|
425
415
|
node = NodeGroupBy(
|
|
426
416
|
flow_id=1,
|
|
@@ -487,9 +477,7 @@ class TestLegacySchemas:
|
|
|
487
477
|
|
|
488
478
|
def test_output_settings_has_separate_tables(self):
|
|
489
479
|
"""Verify OLD OutputSettings has separate table fields."""
|
|
490
|
-
from tools.migrate.legacy_schemas import
|
|
491
|
-
OutputSettings, OutputCsvTable, OutputExcelTable
|
|
492
|
-
)
|
|
480
|
+
from tools.migrate.legacy_schemas import OutputCsvTable, OutputExcelTable, OutputSettings
|
|
493
481
|
|
|
494
482
|
os = OutputSettings(
|
|
495
483
|
name='out.csv',
|
|
@@ -542,9 +530,16 @@ class TestRoundTrip:
|
|
|
542
530
|
yaml = pytest.importorskip('yaml')
|
|
543
531
|
|
|
544
532
|
from tools.migrate.legacy_schemas import (
|
|
545
|
-
FlowInformation,
|
|
546
|
-
|
|
547
|
-
|
|
533
|
+
FlowInformation,
|
|
534
|
+
FlowSettings,
|
|
535
|
+
NodeInformation,
|
|
536
|
+
NodeOutput,
|
|
537
|
+
NodeRead,
|
|
538
|
+
NodeSelect,
|
|
539
|
+
OutputCsvTable,
|
|
540
|
+
OutputSettings,
|
|
541
|
+
ReceivedTable,
|
|
542
|
+
SelectInput,
|
|
548
543
|
)
|
|
549
544
|
from tools.migrate.migrate import migrate_flowfile
|
|
550
545
|
|
|
@@ -624,4 +619,4 @@ class TestRoundTrip:
|
|
|
624
619
|
|
|
625
620
|
|
|
626
621
|
if __name__ == '__main__':
|
|
627
|
-
pytest.main([__file__, '-v'])
|
|
622
|
+
pytest.main([__file__, '-v'])
|
|
@@ -11,40 +11,39 @@ Run with:
|
|
|
11
11
|
import pickle
|
|
12
12
|
import tempfile
|
|
13
13
|
from pathlib import Path
|
|
14
|
-
from typing import
|
|
14
|
+
from typing import Literal
|
|
15
15
|
|
|
16
16
|
import pytest
|
|
17
17
|
|
|
18
|
-
from
|
|
19
|
-
# Flow schemas
|
|
20
|
-
FlowInformation, FlowSettings, NodeInformation,
|
|
21
|
-
|
|
22
|
-
# Node schemas
|
|
23
|
-
NodeSelect, NodeFilter, NodeFormula, NodeOutput,
|
|
24
|
-
NodeJoin, NodeGroupBy, NodeSort, NodeUnique,
|
|
25
|
-
NodePivot, NodeUnpivot, NodeRecordId, NodeTextToRows,
|
|
26
|
-
NodeGraphSolver, NodeUnion,
|
|
27
|
-
|
|
28
|
-
# Input/Output schemas
|
|
29
|
-
OutputSettings, OutputCsvTable,
|
|
30
|
-
|
|
31
|
-
# Transform schemas
|
|
32
|
-
SelectInput, SelectInputs, JoinInputs, JoinInput, JoinMap,
|
|
33
|
-
FilterInput, BasicFilter, FunctionInput, FieldInput,
|
|
34
|
-
GroupByInput, AggColl, SortByInput, UniqueInput,
|
|
35
|
-
PivotInput, UnpivotInput, RecordIdInput, TextToRowsInput,
|
|
36
|
-
GraphSolverInput, UnionInput,
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
from tools.migrate.migrate import migrate_flowfile
|
|
18
|
+
from flowfile_core.flowfile.flow_graph import FlowGraph, add_connection
|
|
40
19
|
|
|
41
20
|
# Import actual flowfile system for verification
|
|
42
21
|
from flowfile_core.flowfile.handler import FlowfileHandler
|
|
43
|
-
from flowfile_core.flowfile.flow_graph import FlowGraph, add_connection
|
|
44
|
-
from flowfile_core.schemas import input_schema, transform_schema, schemas
|
|
45
|
-
from flowfile_core.schemas.output_model import RunInformation
|
|
46
22
|
from flowfile_core.flowfile.manage.io_flowfile import open_flow
|
|
47
|
-
|
|
23
|
+
from flowfile_core.schemas import input_schema, schemas, transform_schema
|
|
24
|
+
from flowfile_core.schemas.output_model import RunInformation
|
|
25
|
+
from tools.migrate.legacy_schemas import (
|
|
26
|
+
AggColl,
|
|
27
|
+
FieldInput,
|
|
28
|
+
FilterInput,
|
|
29
|
+
# Flow schemas
|
|
30
|
+
FlowInformation,
|
|
31
|
+
FlowSettings,
|
|
32
|
+
FunctionInput,
|
|
33
|
+
GroupByInput,
|
|
34
|
+
JoinInput,
|
|
35
|
+
JoinMap,
|
|
36
|
+
NodeFilter,
|
|
37
|
+
NodeFormula,
|
|
38
|
+
NodeGroupBy,
|
|
39
|
+
NodeInformation,
|
|
40
|
+
NodeJoin,
|
|
41
|
+
NodeSelect,
|
|
42
|
+
NodeSort,
|
|
43
|
+
SelectInput,
|
|
44
|
+
SortByInput,
|
|
45
|
+
)
|
|
46
|
+
from tools.migrate.migrate import migrate_flowfile
|
|
48
47
|
|
|
49
48
|
# =============================================================================
|
|
50
49
|
# HELPERS
|
|
@@ -62,7 +61,7 @@ def create_graph(flow_id: int = 1, execution_mode: Literal['Development', 'Perfo
|
|
|
62
61
|
return handler.get_flow(flow_id)
|
|
63
62
|
|
|
64
63
|
|
|
65
|
-
def add_manual_input(graph: FlowGraph, data:
|
|
64
|
+
def add_manual_input(graph: FlowGraph, data: list[dict], node_id: int = 1):
|
|
66
65
|
"""Add a manual input node with data."""
|
|
67
66
|
node_promise = input_schema.NodePromise(
|
|
68
67
|
flow_id=graph.flow_id,
|
|
@@ -113,7 +112,7 @@ def temp_dir():
|
|
|
113
112
|
|
|
114
113
|
|
|
115
114
|
@pytest.fixture
|
|
116
|
-
def sample_data() ->
|
|
115
|
+
def sample_data() -> list[dict]:
|
|
117
116
|
"""Basic sample data for testing."""
|
|
118
117
|
return [
|
|
119
118
|
{'name': 'Alice', 'age': 30, 'city': 'NYC', 'sales': 100},
|
|
@@ -5,38 +5,68 @@ Run with:
|
|
|
5
5
|
pytest tools/migrate/tests/test_node_migrations.py -v
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
+
import json
|
|
8
9
|
import pickle
|
|
9
10
|
import tempfile
|
|
10
|
-
import json
|
|
11
11
|
from pathlib import Path
|
|
12
|
+
|
|
12
13
|
import pytest
|
|
13
14
|
|
|
14
15
|
from tools.migrate.legacy_schemas import (
|
|
16
|
+
AggColl,
|
|
17
|
+
BasicFilter,
|
|
18
|
+
CrossJoinInput,
|
|
19
|
+
FieldInput,
|
|
20
|
+
FilterInput,
|
|
15
21
|
# Flow schemas
|
|
16
|
-
FlowInformation,
|
|
17
|
-
|
|
22
|
+
FlowInformation,
|
|
23
|
+
FlowSettings,
|
|
24
|
+
FunctionInput,
|
|
25
|
+
FuzzyMapping,
|
|
26
|
+
FuzzyMatchInput,
|
|
27
|
+
GraphSolverInput,
|
|
28
|
+
GroupByInput,
|
|
29
|
+
JoinInput,
|
|
30
|
+
JoinInputs,
|
|
31
|
+
JoinMap,
|
|
32
|
+
NodeCrossJoin,
|
|
33
|
+
NodeFilter,
|
|
34
|
+
NodeFormula,
|
|
35
|
+
NodeFuzzyMatch,
|
|
36
|
+
NodeGraphSolver,
|
|
37
|
+
NodeGroupBy,
|
|
38
|
+
NodeInformation,
|
|
39
|
+
NodeJoin,
|
|
40
|
+
NodeOutput,
|
|
41
|
+
NodePivot,
|
|
42
|
+
NodePolarsCode,
|
|
18
43
|
# Node schemas
|
|
19
|
-
NodeRead,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
44
|
+
NodeRead,
|
|
45
|
+
NodeRecordId,
|
|
46
|
+
NodeSelect,
|
|
47
|
+
NodeSort,
|
|
48
|
+
NodeTextToRows,
|
|
49
|
+
NodeUnion,
|
|
50
|
+
NodeUnique,
|
|
51
|
+
NodeUnpivot,
|
|
52
|
+
OutputCsvTable,
|
|
53
|
+
OutputExcelTable,
|
|
54
|
+
OutputSettings,
|
|
55
|
+
PivotInput,
|
|
56
|
+
PolarsCodeInput,
|
|
25
57
|
# Input/Output schemas
|
|
26
|
-
ReceivedTable,
|
|
27
|
-
|
|
58
|
+
ReceivedTable,
|
|
59
|
+
RecordIdInput,
|
|
28
60
|
# Transform schemas
|
|
29
|
-
SelectInput,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
61
|
+
SelectInput,
|
|
62
|
+
SortByInput,
|
|
63
|
+
TextToRowsInput,
|
|
64
|
+
UnionInput,
|
|
65
|
+
UniqueInput,
|
|
66
|
+
UnpivotInput,
|
|
35
67
|
)
|
|
36
|
-
|
|
37
68
|
from tools.migrate.migrate import migrate_flowfile
|
|
38
69
|
|
|
39
|
-
|
|
40
70
|
# =============================================================================
|
|
41
71
|
# FIXTURES
|
|
42
72
|
# =============================================================================
|
|
@@ -810,4 +840,4 @@ class TestYamlMigration:
|
|
|
810
840
|
|
|
811
841
|
|
|
812
842
|
if __name__ == '__main__':
|
|
813
|
-
pytest.main([__file__, '-v'])
|
|
843
|
+
pytest.main([__file__, '-v'])
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
.description-text[data-v-23359c71] {
|
|
3
|
-
color: #6c757d;
|
|
4
|
-
margin-top: 0.5rem;
|
|
5
|
-
font-size: 0.95rem;
|
|
6
|
-
}
|
|
7
|
-
.info-box[data-v-23359c71] {
|
|
8
|
-
display: flex;
|
|
9
|
-
gap: 1rem;
|
|
10
|
-
padding: 1rem;
|
|
11
|
-
background-color: #f8f9fa;
|
|
12
|
-
border-left: 4px solid #17a2b8;
|
|
13
|
-
border-radius: 4px;
|
|
14
|
-
}
|
|
15
|
-
.info-box i[data-v-23359c71] {
|
|
16
|
-
color: #17a2b8;
|
|
17
|
-
font-size: 1.5rem;
|
|
18
|
-
margin-top: 0.5rem;
|
|
19
|
-
}
|
|
20
|
-
.info-box p[data-v-23359c71] {
|
|
21
|
-
margin: 0;
|
|
22
|
-
margin-bottom: 0.5rem;
|
|
23
|
-
}
|
|
24
|
-
.info-box p[data-v-23359c71]:last-child {
|
|
25
|
-
margin-bottom: 0;
|
|
26
|
-
}
|
|
27
|
-
.modal-description[data-v-23359c71] {
|
|
28
|
-
color: #6c757d;
|
|
29
|
-
font-size: 0.9rem;
|
|
30
|
-
}
|
|
31
|
-
.badge[data-v-23359c71] {
|
|
32
|
-
background-color: #e9ecef;
|
|
33
|
-
border-radius: 1rem;
|
|
34
|
-
padding: 0.25rem 0.75rem;
|
|
35
|
-
font-size: 0.75rem;
|
|
36
|
-
margin-left: 0.5rem;
|
|
37
|
-
}
|
|
38
|
-
.auth-badge[data-v-23359c71] {
|
|
39
|
-
background-color: #d1ecf1;
|
|
40
|
-
color: #0c5460;
|
|
41
|
-
}
|
|
42
|
-
.warning-text[data-v-23359c71] {
|
|
43
|
-
color: #dc3545;
|
|
44
|
-
font-size: 0.875rem;
|
|
45
|
-
margin-top: 0.5rem;
|
|
46
|
-
}
|
|
47
|
-
.dialog-footer[data-v-23359c71] {
|
|
48
|
-
display: flex;
|
|
49
|
-
justify-content: flex-end;
|
|
50
|
-
gap: 0.5rem;
|
|
51
|
-
margin-top: 1rem;
|
|
52
|
-
}
|
|
53
|
-
.connection-details[data-v-23359c71] {
|
|
54
|
-
font-size: 0.85rem;
|
|
55
|
-
color: #6c757d;
|
|
56
|
-
margin-top: 0.25rem;
|
|
57
|
-
}
|
|
58
|
-
.separator[data-v-23359c71] {
|
|
59
|
-
margin: 0 0.5rem;
|
|
60
|
-
}
|
|
61
|
-
.hint-text[data-v-23359c71] {
|
|
62
|
-
color: #6c757d;
|
|
63
|
-
font-size: 0.875rem;
|
|
64
|
-
margin-top: 0.5rem;
|
|
65
|
-
}
|
|
66
|
-
.mb-3[data-v-23359c71] {
|
|
67
|
-
margin-bottom: 1rem;
|
|
68
|
-
}
|
|
69
|
-
.flex-col[data-v-23359c71] {
|
|
70
|
-
display: flex;
|
|
71
|
-
flex-direction: column;
|
|
72
|
-
}
|
|
73
|
-
.gap-2[data-v-23359c71] {
|
|
74
|
-
gap: 0.5rem;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/* Cloud-specific styles */
|
|
78
|
-
.fa-brands[data-v-23359c71] {
|
|
79
|
-
font-size: 1.2rem;
|
|
80
|
-
}
|
|
81
|
-
.fa-aws[data-v-23359c71] {
|
|
82
|
-
color: #ff9900;
|
|
83
|
-
}
|
|
84
|
-
.fa-microsoft[data-v-23359c71] {
|
|
85
|
-
color: #0078d4;
|
|
86
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
.custom-node-wrapper[data-v-d7137248] {
|
|
3
|
-
padding: 1.5rem;
|
|
4
|
-
background-color: #f9fafb; /* bg-gray-50 */
|
|
5
|
-
}
|
|
6
|
-
.node-header[data-v-d7137248] {
|
|
7
|
-
padding-bottom: 1rem;
|
|
8
|
-
border-bottom: 1px solid #e5e7eb; /* border-gray-200 */
|
|
9
|
-
margin-bottom: 1.5rem;
|
|
10
|
-
}
|
|
11
|
-
.node-title[data-v-d7137248] {
|
|
12
|
-
font-size: 1.25rem; /* text-xl */
|
|
13
|
-
font-weight: 700; /* font-bold */
|
|
14
|
-
color: #1f2937; /* text-gray-800 */
|
|
15
|
-
}
|
|
16
|
-
.node-category[data-v-d7137248] {
|
|
17
|
-
font-size: 0.875rem; /* text-sm */
|
|
18
|
-
color: #6b7280; /* text-gray-500 */
|
|
19
|
-
margin-top: 0.25rem;
|
|
20
|
-
}
|
|
21
|
-
.section-description[data-v-d7137248] {
|
|
22
|
-
font-size: 0.875rem;
|
|
23
|
-
color: #6b7280; /* text-gray-500 */
|
|
24
|
-
margin-top: 0.25rem;
|
|
25
|
-
margin-bottom: 1.25rem;
|
|
26
|
-
padding-left: 0.5rem;
|
|
27
|
-
}
|
|
28
|
-
.components-container[data-v-d7137248] {
|
|
29
|
-
display: flex;
|
|
30
|
-
flex-direction: column;
|
|
31
|
-
gap: 1.25rem; /* space-y-5 */
|
|
32
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
.description-text[data-v-87a64956] {
|
|
3
|
-
color: #6c757d;
|
|
4
|
-
margin-top: 0.5rem;
|
|
5
|
-
font-size: 0.95rem;
|
|
6
|
-
}
|
|
7
|
-
.info-box[data-v-87a64956] {
|
|
8
|
-
display: flex;
|
|
9
|
-
gap: 1rem;
|
|
10
|
-
padding: 1rem;
|
|
11
|
-
background-color: #f8f9fa;
|
|
12
|
-
border-left: 4px solid #17a2b8;
|
|
13
|
-
border-radius: 4px;
|
|
14
|
-
}
|
|
15
|
-
.info-box i[data-v-87a64956] {
|
|
16
|
-
color: #17a2b8;
|
|
17
|
-
font-size: 1.5rem;
|
|
18
|
-
margin-top: 0.5rem;
|
|
19
|
-
}
|
|
20
|
-
.info-box p[data-v-87a64956] {
|
|
21
|
-
margin: 0;
|
|
22
|
-
margin-bottom: 0.5rem;
|
|
23
|
-
}
|
|
24
|
-
.info-box p[data-v-87a64956]:last-child {
|
|
25
|
-
margin-bottom: 0;
|
|
26
|
-
}
|
|
27
|
-
.modal-description[data-v-87a64956] {
|
|
28
|
-
color: #6c757d;
|
|
29
|
-
font-size: 0.9rem;
|
|
30
|
-
}
|
|
31
|
-
.badge[data-v-87a64956] {
|
|
32
|
-
background-color: #e9ecef;
|
|
33
|
-
border-radius: 1rem;
|
|
34
|
-
padding: 0.25rem 0.75rem;
|
|
35
|
-
font-size: 0.75rem;
|
|
36
|
-
margin-left: 0.5rem;
|
|
37
|
-
}
|
|
38
|
-
.warning-text[data-v-87a64956] {
|
|
39
|
-
color: #dc3545;
|
|
40
|
-
font-size: 0.875rem;
|
|
41
|
-
margin-top: 0.5rem;
|
|
42
|
-
}
|
|
43
|
-
.dialog-footer[data-v-87a64956] {
|
|
44
|
-
display: flex;
|
|
45
|
-
justify-content: flex-end;
|
|
46
|
-
gap: 0.5rem;
|
|
47
|
-
margin-top: 1rem;
|
|
48
|
-
}
|
|
49
|
-
.connection-details[data-v-87a64956] {
|
|
50
|
-
font-size: 0.85rem;
|
|
51
|
-
color: #6c757d;
|
|
52
|
-
margin-top: 0.25rem;
|
|
53
|
-
}
|
|
54
|
-
.separator[data-v-87a64956] {
|
|
55
|
-
margin: 0 0.5rem;
|
|
56
|
-
}
|
|
57
|
-
.hint-text[data-v-87a64956] {
|
|
58
|
-
color: #6c757d;
|
|
59
|
-
font-size: 0.875rem;
|
|
60
|
-
margin-top: 0.5rem;
|
|
61
|
-
}
|
|
62
|
-
.mb-3[data-v-87a64956] {
|
|
63
|
-
margin-bottom: 1rem;
|
|
64
|
-
}
|