pyflowred 0.2.0__tar.gz → 0.3.0__tar.gz
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.
- {pyflowred-0.2.0 → pyflowred-0.3.0}/CHANGELOG.md +58 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/PKG-INFO +19 -3
- {pyflowred-0.2.0 → pyflowred-0.3.0}/README.md +17 -2
- {pyflowred-0.2.0 → pyflowred-0.3.0}/docker/README.md +7 -7
- {pyflowred-0.2.0 → pyflowred-0.3.0}/docs/operations.md +313 -2
- {pyflowred-0.2.0 → pyflowred-0.3.0}/docs/porting.md +14 -0
- pyflowred-0.3.0/docs/proposals/stream-processing.md +390 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/docs/releasing.md +1 -1
- pyflowred-0.3.0/docs/test-coverage.md +320 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/pyproject.toml +2 -1
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/__init__.py +1 -1
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/api/admin.py +37 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/about +58 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/10-stream-state.html +39 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/10-stream-state.py +120 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/20-aggregate.html +188 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/20-aggregate.py +345 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/30-derive.html +133 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/30-derive.py +175 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/40-threshold.html +113 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/40-threshold.py +209 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/50-transition.html +98 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/50-transition.py +164 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/60-assemble.html +125 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/60-assemble.py +175 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/70-compress.html +113 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/70-compress.py +161 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/80-pattern.html +169 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/80-pattern.py +232 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/analysis/__init__.py +1 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/11-kafka.py +10 -2
- pyflowred-0.3.0/src/pyflowred/nodes/core/storage/30-gcs.html +421 -0
- pyflowred-0.3.0/src/pyflowred/nodes/core/storage/30-gcs.py +720 -0
- pyflowred-0.3.0/src/pyflowred/nodes/locales/en-US/analysis/10-stream-state.html +22 -0
- pyflowred-0.3.0/src/pyflowred/nodes/locales/en-US/analysis/20-aggregate.html +52 -0
- pyflowred-0.3.0/src/pyflowred/nodes/locales/en-US/analysis/30-derive.html +26 -0
- pyflowred-0.3.0/src/pyflowred/nodes/locales/en-US/analysis/40-threshold.html +27 -0
- pyflowred-0.3.0/src/pyflowred/nodes/locales/en-US/analysis/50-transition.html +21 -0
- pyflowred-0.3.0/src/pyflowred/nodes/locales/en-US/analysis/60-assemble.html +24 -0
- pyflowred-0.3.0/src/pyflowred/nodes/locales/en-US/analysis/70-compress.html +27 -0
- pyflowred-0.3.0/src/pyflowred/nodes/locales/en-US/analysis/80-pattern.html +27 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/messages.json +196 -0
- pyflowred-0.3.0/src/pyflowred/nodes/locales/en-US/storage/30-gcs.html +173 -0
- pyflowred-0.3.0/src/pyflowred/streaming/__init__.py +141 -0
- pyflowred-0.3.0/src/pyflowred/streaming/functions.py +182 -0
- pyflowred-0.3.0/src/pyflowred/streaming/store.py +318 -0
- pyflowred-0.3.0/src/pyflowred/streaming/windows.py +153 -0
- pyflowred-0.3.0/tests/test_nodes_gcs.py +844 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_nodes_kafka.py +29 -0
- pyflowred-0.3.0/tests/test_nodes_stream.py +746 -0
- pyflowred-0.3.0/tools/coverage.py +376 -0
- pyflowred-0.3.0/tools/e2e/compose.yml +47 -0
- pyflowred-0.3.0/tools/e2eflows.py +3137 -0
- pyflowred-0.3.0/tools/uigcs.py +346 -0
- pyflowred-0.3.0/tools/uistream.py +234 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/.gitignore +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/docs/benchmarks.md +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/docs/editor.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/docs/writing-nodes.md +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/examples/pyflowred-node-lowercase/pyproject.toml +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/examples/pyflowred-node-lowercase/src/pyflowred_node_lowercase/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/examples/pyflowred-node-lowercase/src/pyflowred_node_lowercase/lowercase.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/examples/pyflowred-node-lowercase/src/pyflowred_node_lowercase/lowercase.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/package.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/__main__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/api/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/api/app.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/api/auth.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/api/comms.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/api/editor.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/api/projects.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/api/router.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/api/theme.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/LICENSE +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/de/editor.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/de/infotips.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/de/jsonata.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/en-US/editor.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/en-US/infotips.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/en-US/jsonata.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/es-ES/editor.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/es-ES/infotips.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/es-ES/jsonata.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/fr/editor.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/fr/infotips.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/fr/jsonata.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/ja/editor.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/ja/infotips.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/ja/jsonata.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/ko/editor.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/ko/infotips.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/ko/jsonata.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/pt-BR/editor.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/pt-BR/infotips.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/pt-BR/jsonata.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/ru/editor.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/ru/infotips.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/ru/jsonata.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/zh-CN/editor.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/zh-CN/infotips.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/zh-CN/jsonata.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/zh-TW/editor.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/zh-TW/infotips.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/locales/zh-TW/jsonata.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/favicon.ico +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/deploy-flows-o.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/deploy-flows.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/deploy-full-o.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/deploy-full.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/deploy-nodes-o.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/deploy-nodes.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/deploy-reload.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/explorer.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/grip-horizontal.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/grip.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/icons/arrow-in.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/node-red-256.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/node-red-256.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/node-red-icon-black.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/node-red-icon.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/node-red.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/sidebar-left-o.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/sidebar-left.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/spin.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/start.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/stop.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/subflow_tab.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/typedInput/09.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/typedInput/az.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/typedInput/bin.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/typedInput/bool.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/typedInput/env.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/typedInput/expr.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/typedInput/json.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/typedInput/re.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/images/typedInput/target.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/keymap.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/main.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/main.min.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/red.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/red.min.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/style.min.css +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/2.1/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/2.2/images/delete-repair.gif +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/2.2/images/detach-repair.gif +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/2.2/images/slice.gif +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/2.2/images/subflow-labels.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/2.2/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.0/images/context-menu.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.0/images/continuous-search.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.0/images/debug-path-tooltip.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.0/images/junction-quick-add.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.0/images/junction-slice.gif +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.0/images/split-wire-with-links.gif +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.0/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.1/images/context-menu.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.1/images/global-env-vars.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.1/images/hiding-flows.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.1/images/locking-flows.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.1/images/mermaid.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.1/images/node-help.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.1/images/tab-changes.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/3.1/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.0/images/nr4-auto-complete.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.0/images/nr4-background-deploy.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.0/images/nr4-config-select.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.0/images/nr4-diff-update.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.0/images/nr4-multiplayer-location.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.0/images/nr4-multiplayer.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.0/images/nr4-plugins.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.0/images/nr4-sf-config.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.0/images/nr4-timestamp-formatting.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.0/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.1/images/missing-modules.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.1/images/node-docs.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.1/images/update-notification.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/4.1/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/first-flow.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/images/editor-node-docs.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/images/editor-search-toolbar.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/red/tours/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/assert/strict.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/assert.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/async_hooks.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/buffer.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/child_process.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/cluster.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/console.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/crypto.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/dgram.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/diagnostics_channel.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/dns/promises.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/dns.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/dom-events.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/domain.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/events.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/fs/promises.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/fs.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/globals.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/http.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/http2.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/https.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/module.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/net.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/os.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/path.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/perf_hooks.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/process.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/querystring.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/readline/promises.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/readline.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/sea.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/stream/consumers.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/stream/promises.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/stream/web.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/stream.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/string_decoder.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/test.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/timers/promises.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/timers.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/tls.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/trace_events.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/tty.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/url.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/util.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/v8.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/vm.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/wasi.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/worker_threads.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node/zlib.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node-red/func.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/types/node-red/util.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/LICENSE +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/ace-bootstrap.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/ace.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/ext-language_tools.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/ext-searchbox.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-css.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-handlebars.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-html.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-javascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-json.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-jsonata.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-markdown.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-nrjavascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-properties.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-python.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-sql.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-swift.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-text.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-xml.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/mode-yaml.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/css.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/handlebars.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/html.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/javascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/json.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/jsonata.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/markdown.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/nrjavascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/properties.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/python.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/sql.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/swift.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/text.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/xml.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/snippets/yaml.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/theme-chrome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/theme-tomorrow.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/worker-css.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/worker-html.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/worker-javascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/worker-json.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/worker-jsonata.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/worker-nrjavascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/ace/worker-xml.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/font-awesome/css/font-awesome.min.css +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/font-awesome/fonts/fontawesome-webfont.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/jquery/css/base/images/ui-icons_444444_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/jquery/css/base/images/ui-icons_555555_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/jquery/css/base/images/ui-icons_777620_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/jquery/css/base/images/ui-icons_777777_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/jquery/css/base/images/ui-icons_cc0000_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/jquery/css/base/images/ui-icons_ffffff_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/jquery/css/base/jquery-ui.min.css +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/mermaid/mermaid.min.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/4c354c82c52ca6cc2543.ttf +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/LICENSE +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/ThirdPartyNotices.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/css.worker.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/editor.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/editor.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/editor.worker.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/f6283f7ccaed1249d9eb.ttf +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/html.worker.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/json.worker.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/cs.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/cs.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/de.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/de.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/es.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/es.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/fr.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/fr.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/it.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/it.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/ja.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/ja.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/ko.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/ko.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/pl.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/pl.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/pt-br.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/pt-br.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/ru.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/ru.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/tr.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/tr.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/zh-cn.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/zh-cn.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/zh-tw.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/locale/zh-tw.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/LICENSE +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/ace.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/active4d.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/all-hallows-eve.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/amy.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/birds-of-paradise.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/blackboard.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/brilliance-black.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/brilliance-dull.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/chrome-devtools.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/clouds-midnight.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/clouds.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/cobalt.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/cobalt2.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/dawn.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/dominion-day.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/dracula.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/dreamweaver.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/eiffel.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/espresso-libre.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/forge-dark.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/forge-light.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/forge.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/github-dark.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/github-light.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/github.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/idle.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/idlefingers.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/iplastic.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/katzenmilch.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/krtheme.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/kuroir-theme.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/lazy.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/magicwb-amiga.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/merbivore-soft.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/merbivore.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/monoindustrial.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/monokai-bright.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/monokai.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/night-owl.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/nord.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/oceanic-next.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/pastels-on-dark.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/slush-and-poppies.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/solarized-dark.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/solarized-light.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/spacecadet.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/sunburst.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/textmate-mac-classic.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/tomorrow-night-blue.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/tomorrow-night-bright.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/tomorrow-night-eighties.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/tomorrow-night.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/tomorrow.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/twilight.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/upstream-sunburst.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/vibrant-ink.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/xcode_default.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/theme/zenburnesque.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/ts.worker.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/dist/ts.worker.js.LICENSE.txt +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/monaco-bootstrap.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/monaco/style.css +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/public/vendor/vendor.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/ace/README.md +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/ace/bin/mode-nrjavascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/ace/bin/snippets/nrjavascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/ace/bin/worker-nrjavascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/ace/mode/nrjavascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/ace/mode/nrjavascript_worker.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/favicon.ico +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/deploy-flows-o.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/deploy-flows.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/deploy-full-o.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/deploy-full.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/deploy-nodes-o.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/deploy-nodes.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/deploy-reload.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/explorer.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/grip-horizontal.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/grip.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/icons/arrow-in.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/node-red-256.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/node-red-256.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/node-red-icon-black.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/node-red-icon.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/node-red.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/sidebar-left-o.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/sidebar-left.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/spin.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/start.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/stop.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/subflow_tab.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/typedInput/09.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/typedInput/az.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/typedInput/bin.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/typedInput/bool.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/typedInput/env.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/typedInput/expr.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/typedInput/json.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/typedInput/re.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/images/typedInput/target.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/comms.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/events.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/font-awesome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/history.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/hooks.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/i18n.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/jquery-addons.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/keymap.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/main.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/multiplayer.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/nodes.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/plugins.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/red.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/runtime.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/settings.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/text/bidi.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/text/format.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/actionList.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/actions.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/clipboard.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/autoComplete.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/checkboxSet.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/editableList.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/menu.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/panels.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/popover.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/searchBox.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/stack.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/tabs.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/toggleButton.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/treeList.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/common/typedInput.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/contextMenu.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/deploy.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/diagnostics.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/diff.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editor.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/buffer.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/code-editor.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/code-editors/ace.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/code-editors/basic.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/code-editors/monaco.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/colorPicker.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/envVarList.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/expression.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/iconPicker.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/js.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/json.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/markdown.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/mermaid.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/panes/appearance.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/panes/description.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/panes/envVarProperties.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/panes/flowProperties.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/panes/properties.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/panes/subflowModule.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/editors/text.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/env-var.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/event-log.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/flowStore.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/group.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/keyboard.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/library.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/notifications.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/palette-editor.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/palette.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/projects/projectSettings.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/projects/projectUserSettings.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/projects/projects.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/projects/tab-versionControl.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/search.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/sidebar.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/state.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/statusBar.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/subflow.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/tab-config.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/tab-context.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/tab-help.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/tab-info-outliner.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/tab-info.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/tour/tourGuide.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/tray.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/typeSearch.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/userSettings.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/utils.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/view-annotations.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/view-navigator.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/view-tools.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/view-zoom-animator.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/view-zoom-constants.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/view.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/ui/workspaces.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/user.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/js/validators.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/ace.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/base.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/colors.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/dark-colors.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/dark-theme.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/debug.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/diff.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/dragdrop.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/dropdownMenu.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/editor.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/flow.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/forms.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/header.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/jquery.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/keyboard.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/library.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/mixins.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/multiplayer.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/notifications.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/palette-editor.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/palette.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/panels.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/popover.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/projects.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/search.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/sidebar.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/sizes.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/style-custom-theme.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/style.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/tab-config.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/tab-context.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/tab-help.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/tab-info.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/tabs.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/tourGuide.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/ui/common/autoComplete.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/ui/common/checkboxSet.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/ui/common/editableList.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/ui/common/nodeList.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/ui/common/searchBox.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/ui/common/stack.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/ui/common/treeList.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/ui/common/typedInput.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/userSettings.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/variables.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/widgetStyle.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/workspace.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/sass/workspaceToolbar.scss +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/2.1/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/2.2/images/delete-repair.gif +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/2.2/images/detach-repair.gif +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/2.2/images/slice.gif +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/2.2/images/subflow-labels.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/2.2/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.0/images/context-menu.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.0/images/continuous-search.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.0/images/debug-path-tooltip.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.0/images/junction-quick-add.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.0/images/junction-slice.gif +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.0/images/split-wire-with-links.gif +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.0/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.1/images/context-menu.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.1/images/global-env-vars.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.1/images/hiding-flows.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.1/images/locking-flows.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.1/images/mermaid.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.1/images/node-help.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.1/images/tab-changes.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/3.1/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.0/images/nr4-auto-complete.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.0/images/nr4-background-deploy.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.0/images/nr4-config-select.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.0/images/nr4-diff-update.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.0/images/nr4-multiplayer-location.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.0/images/nr4-multiplayer.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.0/images/nr4-plugins.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.0/images/nr4-sf-config.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.0/images/nr4-timestamp-formatting.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.0/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.1/images/missing-modules.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.1/images/node-docs.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.1/images/update-notification.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/4.1/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/first-flow.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/images/editor-node-docs.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/images/editor-search-toolbar.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/tours/welcome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/README.md +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/assert/strict.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/assert.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/async_hooks.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/buffer.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/child_process.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/cluster.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/console.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/crypto.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/dgram.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/diagnostics_channel.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/dns/promises.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/dns.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/dom-events.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/domain.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/events.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/fs/promises.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/fs.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/globals.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/http.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/http2.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/https.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/module.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/net.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/os.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/path.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/perf_hooks.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/process.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/querystring.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/readline/promises.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/readline.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/sea.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/stream/consumers.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/stream/promises.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/stream/web.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/stream.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/string_decoder.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/test.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/timers/promises.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/timers.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/tls.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/trace_events.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/tty.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/url.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/util.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/v8.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/vm.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/wasi.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/worker_threads.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node/zlib.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node-red/func.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/types/node-red/util.d.ts +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/LICENSE +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/ace-bootstrap.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/ace.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/ext-language_tools.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/ext-searchbox.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-css.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-handlebars.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-html.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-javascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-json.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-markdown.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-properties.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-python.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-sql.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-swift.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-text.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-xml.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/mode-yaml.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/css.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/handlebars.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/html.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/javascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/json.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/markdown.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/properties.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/python.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/sql.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/swift.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/text.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/xml.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/snippets/yaml.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/theme-chrome.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/theme-tomorrow.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/worker-css.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/worker-html.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/worker-javascript.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/worker-json.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/ace/worker-xml.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/d3/d3.v3.min.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/font-awesome/css/font-awesome.min.css +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/font-awesome/fonts/fontawesome-webfont.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/css/base/images/ui-icons_444444_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/css/base/images/ui-icons_555555_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/css/base/images/ui-icons_777620_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/css/base/images/ui-icons_777777_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/css/base/images/ui-icons_cc0000_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/css/base/images/ui-icons_ffffff_256x240.png +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/css/base/jquery-ui.min.css +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/js/jquery-3.7.1.min.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/js/jquery-migrate-3.5.2.min.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/js/jquery-ui-1.14.1.min.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jquery/js/jquery.ui.touch-punch.min.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jsonata/formatter.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jsonata/jsonata-es5.min.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jsonata/mode-jsonata.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jsonata/snippets-jsonata.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/jsonata/worker-jsonata.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/monaco/README.md +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/monaco/monaco-bootstrap.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/src/vendor/monaco/style.css +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/editor_client/templates/index.mst +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/flowstore/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/flowstore/config.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/metrics/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/05-junction.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/05-junction.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/20-inject.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/21-debug.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/24-complete.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/24-complete.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/25-catch.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/25-status.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/60-link.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/90-comment.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/91-global-config.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/91-global-config.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/98-unknown.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/lib/debug/debug-utils.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/lib/debug/debug.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/common/lib/debug/view.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/10-function.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/10-switch.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/15-change.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/16-range.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/80-template.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/89-delay.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/89-trigger.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/90-exec.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/rbe.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/function/rbe.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/monitoring/90-prometheus.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/monitoring/90-prometheus.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/monitoring/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/05-tls.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/06-httpproxy.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/10-mqtt.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/11-kafka.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/21-httpin.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/21-httprequest.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/22-websocket.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/31-tcpin.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/32-udp.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/network/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/70-CSV.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/70-HTML.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/70-JSON.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/70-XML.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/70-YAML.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/lib/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/parsers/lib/csv.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/secrets/90-secret.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/secrets/90-secret.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/secrets/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/sequence/17-split.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/sequence/18-sort.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/sequence/19-batch.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/sequence/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/storage/10-file.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/storage/23-watch.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/core/storage/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/alert.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/arduino.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/arrow-in.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/batch.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/bluetooth.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/bridge-dash.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/bridge.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/cog.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/comment.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/db.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/debug.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/envelope.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/feed.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/file-in.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/file-out.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/file.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/function.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/hash.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/inject.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/join.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/leveldb.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/light.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/link-call.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/link-out.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/link-return.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/mongodb.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/mouse.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/parser-csv.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/parser-html.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/parser-json.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/parser-xml.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/parser-yaml.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/range.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/rbe.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/redis.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/rpi.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/serial.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/sort.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/split.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/status.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/subflow.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/swap.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/switch.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/template.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/timer.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/trigger.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/watch.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/icons/white-globe.svg +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/common/24-complete.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/function/rbe.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/messages.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/de/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/common/24-complete.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/common/91-global-config.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/function/rbe.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/monitoring/90-prometheus.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/network/11-kafka.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/secrets/90-secret.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/en-US/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/common/24-complete.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/common/91-global-config.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/function/rbe.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/messages.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/es-ES/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/common/24-complete.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/common/91-global-config.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/function/rbe.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/messages.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/fr/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/common/24-complete.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/common/91-global-config.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/function/rbe.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/messages.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ja/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/messages.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ko/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/common/24-complete.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/function/rbe.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/messages.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/pt-BR/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/common/24-complete.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/messages.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/ru/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/common/24-complete.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/messages.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-CN/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/common/20-inject.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/common/21-debug.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/common/24-complete.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/common/25-catch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/common/25-status.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/common/60-link.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/common/90-comment.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/common/98-unknown.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/function/10-function.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/function/10-switch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/function/15-change.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/function/16-range.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/function/80-template.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/function/89-delay.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/function/89-trigger.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/function/90-exec.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/messages.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/network/05-tls.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/network/06-httpproxy.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/network/10-mqtt.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/network/21-httpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/network/21-httprequest.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/network/22-websocket.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/network/31-tcpin.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/network/32-udp.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/parsers/70-CSV.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/parsers/70-HTML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/parsers/70-JSON.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/parsers/70-XML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/parsers/70-YAML.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/sequence/17-split.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/sequence/18-sort.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/sequence/19-batch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/storage/10-file.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/nodes/locales/zh-TW/storage/23-watch.html +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/registry/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/registry/catalogue.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/registry/installer.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/registry/loader.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/registry/localfilesystem.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/registry/nodeset.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/registry/plugins.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/registry/registry.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/registry/subflow.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/external_modules.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/flows/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/flows/flow.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/flows/group.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/flows/subflow.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/flows/util.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/library.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/multiplayer.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/nodes/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/nodes/context/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/nodes/context/base.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/nodes/context/localfilesystem.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/nodes/context/memory.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/nodes/credentials.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/nodes/linkcall.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/nodes/node.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/projects/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/projects/askpass.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/projects/auth.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/projects/defaults.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/projects/git.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/projects/project.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/projects/ssh.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/projects_api.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/red.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/storage/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime/storage/localfilesystem.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime_locales/de/runtime.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime_locales/en-US/runtime.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime_locales/es-ES/runtime.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime_locales/fr/runtime.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime_locales/ja/runtime.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime_locales/ko/runtime.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime_locales/pt-BR/runtime.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime_locales/ru/runtime.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime_locales/zh-CN/runtime.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/runtime_locales/zh-TW/runtime.json +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/secrets/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/secrets/file.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/secrets/google.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/settings.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/clone.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/cron.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/encode.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/events.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/exec.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/hashsum.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/hooks.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/i18n.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/ids.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/jsonata_support.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/jsvalues.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/log.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/moment.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/mustache.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/props.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/settings_access.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/values.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/src/pyflowred/util/xml2js.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/__init__.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/conftest.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/mqtt_broker.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_api.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_editor_ui.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_flowstore.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_metrics.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_multiplayer.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_node_packages.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_nodes_common.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_nodes_function.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_nodes_mqtt.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_nodes_network.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_nodes_parsers.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_palette.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_projects.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_runtime.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tests/test_secrets.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/benchflows.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/devserver.sh +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/editor-build/attach-copyright.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/editor-build/clean.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/editor-build/concat.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/editor-build/config.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/editor-build/copy.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/editor-build/index.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/editor-build/jsonlint.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/editor-build/minify.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/editor-build/sass.js +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/hatch_build.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/kafka/compose.yml +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/loadtest.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/rawbaseline.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/smoke.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/uicheck.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/uiflow.py +0 -0
- {pyflowred-0.2.0 → pyflowred-0.3.0}/tools/uiprojects.py +0 -0
|
@@ -1,5 +1,63 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.0 - 2026-09-27
|
|
4
|
+
|
|
5
|
+
- **An end-to-end integration test** over the node set and its settings, run
|
|
6
|
+
against the service rather than in-process: `tools/e2eflows.py` deploys
|
|
7
|
+
eighteen tabs with 157 assertions, `tools/coverage.py` measures what they
|
|
8
|
+
reached. **66 of 66 countable node types** carry a message during a run
|
|
9
|
+
(97.1% counting the two set aside), and **183 of 191 reachable dialog
|
|
10
|
+
choices** are covered by a passing assertion (95.8%). Everything set aside
|
|
11
|
+
is named with its reason and both figures are printed, so an exclusion
|
|
12
|
+
cannot flatter the result. `tools/e2e/compose.yml` brings up the broker and
|
|
13
|
+
Kafka it wants.
|
|
14
|
+
- Defects it found:
|
|
15
|
+
- **Window closing wedged for good** on a timestamp containing the byte
|
|
16
|
+
used as the index separator - about one millisecond in 250. The key was
|
|
17
|
+
split on that separator, the unpack raised, and because the index is
|
|
18
|
+
walked oldest-first the poisoned entry blocked every window behind it
|
|
19
|
+
from ever closing again. It is sliced by offset now.
|
|
20
|
+
- **The Assemble node shadowed `Node._complete`**, the runtime's own method
|
|
21
|
+
for finishing a message, so every message it emitted raised.
|
|
22
|
+
- `kafka out` took the topic and key from the message in preference to the
|
|
23
|
+
dialog, the opposite of the MQTT node and of what its own placeholder
|
|
24
|
+
says.
|
|
25
|
+
- The stream operators showed raw catalogue keys as their node status.
|
|
26
|
+
- A Global Config node carrying coordinates is treated as a placed node
|
|
27
|
+
and, belonging to no tab, dropped - so its environment variables were
|
|
28
|
+
never read.
|
|
29
|
+
|
|
30
|
+
- **Stream processing.** Seven operators - `aggregate`, `derive`,
|
|
31
|
+
`threshold`, `transition`, `assemble`, `compress`, `pattern` - on a
|
|
32
|
+
`stream-state` configuration node backed by RocksDB. Windows tumble, hop,
|
|
33
|
+
slide, count, session, and close on a control message, which is what a
|
|
34
|
+
shift, a batch, a production order and a cleaning cycle all are. Event time
|
|
35
|
+
with watermarks and a second output for late messages; quality-aware
|
|
36
|
+
aggregation; a key limit that refuses rather than evicts; and
|
|
37
|
+
`GET <httpAdminRoot>stream-state` to see what is held.
|
|
38
|
+
RocksDB is the state store rather than a fallback: 100,000 keys each
|
|
39
|
+
holding a 300-sample window cost 1,193 MB as Python objects and 39 MB
|
|
40
|
+
resident through it, and its slowest hot path is eighteen times the rate
|
|
41
|
+
the runtime can feed it.
|
|
42
|
+
|
|
43
|
+
- Google Cloud Storage nodes: a `gcs-config` bucket configuration plus
|
|
44
|
+
`gcs in` and `gcs out`, on obstore - the layer the flow store already uses.
|
|
45
|
+
Every operational value is a typed property, so bucket, path, format,
|
|
46
|
+
character set and content type can each be a literal, a message property, a
|
|
47
|
+
flow or global value, an environment variable or a JSONata expression; left
|
|
48
|
+
blank, each falls back to a documented message property. A flow that works
|
|
49
|
+
out where it is writing needs one node, not one per destination.
|
|
50
|
+
Credentials stay on the configuration node, where `${secret:NAME}` reaches
|
|
51
|
+
Secret Manager, and a path cannot climb out of the bucket's prefix.
|
|
52
|
+
- `gcs list` and `gcs delete` alongside them. Listing is shallow (objects and
|
|
53
|
+
child folders at one level) or deep, with a limit and a `truncated` flag.
|
|
54
|
+
Deleting takes one object or a whole prefix, and is idempotent.
|
|
55
|
+
- Folders work the same with and without a bucket's hierarchical namespace,
|
|
56
|
+
as far as the object API allows: shallow listing reports a folder as a
|
|
57
|
+
folder in either case, while obstore cannot address a name ending in `/`,
|
|
58
|
+
so a prefix delete leaves folder markers behind and reports them in
|
|
59
|
+
`msg.gcs.remainingFolders` rather than claiming a clean sweep.
|
|
60
|
+
|
|
3
61
|
## 0.2.0
|
|
4
62
|
|
|
5
63
|
**Everything is now called `pyflowred`.** 0.1.0 shipped under that name on
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pyflowred
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: A Python port of Node-RED: the same editor, the same flow semantics, a Python runtime.
|
|
5
5
|
Project-URL: Homepage, https://github.com/DataVoyage/pyflowred
|
|
6
6
|
Project-URL: Documentation, https://github.com/DataVoyage/pyflowred/blob/main/docs/operations.md
|
|
@@ -37,6 +37,7 @@ Requires-Dist: prometheus-client>=0.21
|
|
|
37
37
|
Requires-Dist: python-dateutil>=2.9
|
|
38
38
|
Requires-Dist: python-multipart>=0.0.20
|
|
39
39
|
Requires-Dist: pyyaml>=6.0
|
|
40
|
+
Requires-Dist: rocksdict>=0.3.29
|
|
40
41
|
Requires-Dist: starlette>=0.41
|
|
41
42
|
Requires-Dist: uvicorn[standard]>=0.32
|
|
42
43
|
Requires-Dist: watchfiles>=1.0
|
|
@@ -67,6 +68,8 @@ API — with a Python runtime and nodes written in Python.
|
|
|
67
68
|
| Flow runtime, node registry, context, credentials, storage | Re-implemented in Python |
|
|
68
69
|
| Projects (git-backed flows), multiplayer, palette catalogue | Re-implemented in Python |
|
|
69
70
|
| Prometheus metrics endpoint and exporter nodes | New; the nodes ported from `node-red-contrib-prometheus-exporter` |
|
|
71
|
+
| Kafka, Google Cloud Storage and secrets nodes | New; no Node-RED counterpart |
|
|
72
|
+
| Stream processing: windows, aggregation, thresholds, state, patterns | New; RocksDB-backed keyed state |
|
|
70
73
|
| Core nodes | Re-implemented in Python — all 50 types |
|
|
71
74
|
|
|
72
75
|
The editor is not a reimplementation. It is Node-RED's own editor, talking to
|
|
@@ -120,9 +123,9 @@ Two images, same application. `Dockerfile` installs the released package with
|
|
|
120
123
|
three stages, Node included.
|
|
121
124
|
|
|
122
125
|
```bash
|
|
123
|
-
docker build -t pyflowred:0.
|
|
126
|
+
docker build -t pyflowred:0.3.0 . # released
|
|
124
127
|
docker build -f Dockerfile.source -t pyflowred:source . # this checkout
|
|
125
|
-
docker run -d -p 1880:1880 -v pyflowred-data:/data pyflowred:0.
|
|
128
|
+
docker run -d -p 1880:1880 -v pyflowred-data:/data pyflowred:0.3.0
|
|
126
129
|
```
|
|
127
130
|
|
|
128
131
|
Your own CA is a build argument or a mount, and reaches every library in the
|
|
@@ -188,6 +191,7 @@ src/pyflowred/
|
|
|
188
191
|
registry/ node discovery, loading, palette installation
|
|
189
192
|
api/ HTTP admin API, editor routes, comms WebSocket (Starlette)
|
|
190
193
|
metrics/ the Prometheus registry, runtime instrumentation, endpoint
|
|
194
|
+
streaming/ keyed state on RocksDB, windows, aggregate functions
|
|
191
195
|
nodes/core/ the core node set: Python implementations + Node-RED dialogs
|
|
192
196
|
editor_client/ the Node-RED editor, vendored and built
|
|
193
197
|
tools/
|
|
@@ -196,6 +200,14 @@ tools/
|
|
|
196
200
|
uicheck.py load the editor in a real browser and report on it
|
|
197
201
|
uiflow.py deploy and run a flow through the editor, in a real browser
|
|
198
202
|
uiprojects.py commit a deploy through the project UI, in a real browser
|
|
203
|
+
uigcs.py check the Cloud Storage dialogs are typed inputs, in a browser
|
|
204
|
+
uistream.py check the stream processing dialogs, in a browser
|
|
205
|
+
e2eflows.py the end-to-end integration test: 18 tabs, 157 assertions
|
|
206
|
+
coverage.py what a run reached: node types and dialog choices
|
|
207
|
+
e2e/ the MQTT broker and Kafka the test talks to
|
|
208
|
+
e2eflows.py the end-to-end integration test: 12 tabs, 45 assertions
|
|
209
|
+
coverage.py how much of the node set a run actually reached
|
|
210
|
+
e2e/ the MQTT broker and Kafka that test talks to
|
|
199
211
|
benchflows.py seven benchmark flows, 82 nodes across 33 node types
|
|
200
212
|
loadtest.py drive them and sample the runtime's CPU, RSS and fds
|
|
201
213
|
rawbaseline.py a bare Starlette endpoint, to measure the runtime against
|
|
@@ -213,6 +225,10 @@ tests/ the test suite, including a browser test of the editor
|
|
|
213
225
|
.venv/bin/python -m pytest tests
|
|
214
226
|
```
|
|
215
227
|
|
|
228
|
+
[docs/test-coverage.md](docs/test-coverage.md) is the standing record of what
|
|
229
|
+
is tested, how, and what is not - including the 24% of end-to-end assertions
|
|
230
|
+
that so far only check that something arrived rather than what it was.
|
|
231
|
+
|
|
216
232
|
The suite covers every node group against real sockets (including an
|
|
217
233
|
in-process MQTT broker), the runtime (subflows, groups, context, credentials,
|
|
218
234
|
deploy types), the admin API, projects against a real `git` binary, and — when
|
|
@@ -17,6 +17,8 @@ API — with a Python runtime and nodes written in Python.
|
|
|
17
17
|
| Flow runtime, node registry, context, credentials, storage | Re-implemented in Python |
|
|
18
18
|
| Projects (git-backed flows), multiplayer, palette catalogue | Re-implemented in Python |
|
|
19
19
|
| Prometheus metrics endpoint and exporter nodes | New; the nodes ported from `node-red-contrib-prometheus-exporter` |
|
|
20
|
+
| Kafka, Google Cloud Storage and secrets nodes | New; no Node-RED counterpart |
|
|
21
|
+
| Stream processing: windows, aggregation, thresholds, state, patterns | New; RocksDB-backed keyed state |
|
|
20
22
|
| Core nodes | Re-implemented in Python — all 50 types |
|
|
21
23
|
|
|
22
24
|
The editor is not a reimplementation. It is Node-RED's own editor, talking to
|
|
@@ -70,9 +72,9 @@ Two images, same application. `Dockerfile` installs the released package with
|
|
|
70
72
|
three stages, Node included.
|
|
71
73
|
|
|
72
74
|
```bash
|
|
73
|
-
docker build -t pyflowred:0.
|
|
75
|
+
docker build -t pyflowred:0.3.0 . # released
|
|
74
76
|
docker build -f Dockerfile.source -t pyflowred:source . # this checkout
|
|
75
|
-
docker run -d -p 1880:1880 -v pyflowred-data:/data pyflowred:0.
|
|
77
|
+
docker run -d -p 1880:1880 -v pyflowred-data:/data pyflowred:0.3.0
|
|
76
78
|
```
|
|
77
79
|
|
|
78
80
|
Your own CA is a build argument or a mount, and reaches every library in the
|
|
@@ -138,6 +140,7 @@ src/pyflowred/
|
|
|
138
140
|
registry/ node discovery, loading, palette installation
|
|
139
141
|
api/ HTTP admin API, editor routes, comms WebSocket (Starlette)
|
|
140
142
|
metrics/ the Prometheus registry, runtime instrumentation, endpoint
|
|
143
|
+
streaming/ keyed state on RocksDB, windows, aggregate functions
|
|
141
144
|
nodes/core/ the core node set: Python implementations + Node-RED dialogs
|
|
142
145
|
editor_client/ the Node-RED editor, vendored and built
|
|
143
146
|
tools/
|
|
@@ -146,6 +149,14 @@ tools/
|
|
|
146
149
|
uicheck.py load the editor in a real browser and report on it
|
|
147
150
|
uiflow.py deploy and run a flow through the editor, in a real browser
|
|
148
151
|
uiprojects.py commit a deploy through the project UI, in a real browser
|
|
152
|
+
uigcs.py check the Cloud Storage dialogs are typed inputs, in a browser
|
|
153
|
+
uistream.py check the stream processing dialogs, in a browser
|
|
154
|
+
e2eflows.py the end-to-end integration test: 18 tabs, 157 assertions
|
|
155
|
+
coverage.py what a run reached: node types and dialog choices
|
|
156
|
+
e2e/ the MQTT broker and Kafka the test talks to
|
|
157
|
+
e2eflows.py the end-to-end integration test: 12 tabs, 45 assertions
|
|
158
|
+
coverage.py how much of the node set a run actually reached
|
|
159
|
+
e2e/ the MQTT broker and Kafka that test talks to
|
|
149
160
|
benchflows.py seven benchmark flows, 82 nodes across 33 node types
|
|
150
161
|
loadtest.py drive them and sample the runtime's CPU, RSS and fds
|
|
151
162
|
rawbaseline.py a bare Starlette endpoint, to measure the runtime against
|
|
@@ -163,6 +174,10 @@ tests/ the test suite, including a browser test of the editor
|
|
|
163
174
|
.venv/bin/python -m pytest tests
|
|
164
175
|
```
|
|
165
176
|
|
|
177
|
+
[docs/test-coverage.md](docs/test-coverage.md) is the standing record of what
|
|
178
|
+
is tested, how, and what is not - including the 24% of end-to-end assertions
|
|
179
|
+
that so far only check that something arrived rather than what it was.
|
|
180
|
+
|
|
166
181
|
The suite covers every node group against real sockets (including an
|
|
167
182
|
in-process MQTT broker), the runtime (subflows, groups, context, credentials,
|
|
168
183
|
deploy types), the admin API, projects against a real `git` binary, and — when
|
|
@@ -11,7 +11,7 @@ Two images, same application.
|
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
# released
|
|
14
|
-
docker build -t pyflowred:0.
|
|
14
|
+
docker build -t pyflowred:0.3.0 .
|
|
15
15
|
docker build -t pyflowred:0.3.0 --build-arg PYFLOWRED_VERSION=0.3.0 .
|
|
16
16
|
|
|
17
17
|
# from this checkout
|
|
@@ -19,7 +19,7 @@ docker build -f Dockerfile.source -t pyflowred:source .
|
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
docker run -d -p 1880:1880 -v pyflowred-data:/data pyflowred:0.
|
|
22
|
+
docker run -d -p 1880:1880 -v pyflowred-data:/data pyflowred:0.3.0
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
The editor is then at <http://127.0.0.1:1880/>. Flows and settings live in
|
|
@@ -38,7 +38,7 @@ Settings can come from the environment, so nothing has to be baked in:
|
|
|
38
38
|
docker run -d -p 1880:1880 \
|
|
39
39
|
-e PYFLOWRED_UI_PORT=1880 \
|
|
40
40
|
-e PYFLOWRED_FLOW_STORE=gs://my-bucket/pyflowred/production \
|
|
41
|
-
-v pyflowred-data:/data pyflowred:0.
|
|
41
|
+
-v pyflowred-data:/data pyflowred:0.3.0
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
## Your own CA
|
|
@@ -51,13 +51,13 @@ proxy, where `uv` and `npm` cannot fetch anything without it:
|
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
53
|
cp corp-root-ca.crt docker/ca/
|
|
54
|
-
docker build -t pyflowred:0.
|
|
54
|
+
docker build -t pyflowred:0.3.0 .
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
**Mounted at run time** - so a certificate can be rotated without rebuilding:
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
docker run -d -p 1880:1880 -v ./ca:/certs:ro -v pyflowred-data:/data pyflowred:0.
|
|
60
|
+
docker run -d -p 1880:1880 -v ./ca:/certs:ro -v pyflowred-data:/data pyflowred:0.3.0
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
Every `.crt` and `.pem` in `/certs` is picked up at start-up. Starting twice
|
|
@@ -97,7 +97,7 @@ at a time:
|
|
|
97
97
|
cp corp-root-ca.crt docker/ca/
|
|
98
98
|
|
|
99
99
|
# released: one index, which proxies PyPI
|
|
100
|
-
docker build -t pyflowred:0.
|
|
100
|
+
docker build -t pyflowred:0.3.0 \
|
|
101
101
|
--build-arg HTTPS_PROXY=http://proxy.corp:3128 \
|
|
102
102
|
--build-arg HTTP_PROXY=http://proxy.corp:3128 \
|
|
103
103
|
--build-arg NO_PROXY=.corp,localhost,127.0.0.1 \
|
|
@@ -123,7 +123,7 @@ well:
|
|
|
123
123
|
docker run -d -p 1880:1880 \
|
|
124
124
|
-e HTTPS_PROXY=http://proxy.corp:3128 \
|
|
125
125
|
-e UV_INDEX_URL=https://nexus.corp/repository/pypi/simple \
|
|
126
|
-
-v pyflowred-data:/data pyflowred:0.
|
|
126
|
+
-v pyflowred-data:/data pyflowred:0.3.0
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
## Compose
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
## In a container
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
docker build -t pyflowred:0.
|
|
7
|
-
docker run -d -p 1880:1880 -v pyflowred-data:/data pyflowred:0.
|
|
6
|
+
docker build -t pyflowred:0.3.0 .
|
|
7
|
+
docker run -d -p 1880:1880 -v pyflowred-data:/data pyflowred:0.3.0
|
|
8
8
|
```
|
|
9
9
|
|
|
10
10
|
Two images: `Dockerfile` installs the released package with `uv` and carries
|
|
@@ -255,6 +255,317 @@ The Kafka tests use it and skip themselves when it is not running:
|
|
|
255
255
|
.venv/bin/python -m pytest tests/test_nodes_kafka.py -m slow
|
|
256
256
|
```
|
|
257
257
|
|
|
258
|
+
## Google Cloud Storage
|
|
259
|
+
|
|
260
|
+
A `gcs-config` node holds the bucket and the identity, and any number of
|
|
261
|
+
`gcs in` (read), `gcs out` (write), `gcs list` and `gcs delete` nodes point at
|
|
262
|
+
it - the same shape as Kafka and MQTT. Built on `obstore`, the same layer the
|
|
263
|
+
flow store uses.
|
|
264
|
+
|
|
265
|
+
### Everything can come from the message
|
|
266
|
+
|
|
267
|
+
This is the part that matters in a flow. Bucket, path, format, character set
|
|
268
|
+
and content type are all typed properties: each can be a literal, a message
|
|
269
|
+
property, a flow or global value, an environment variable or a JSONata
|
|
270
|
+
expression. Leave a field blank and it falls back to a documented property of
|
|
271
|
+
the message.
|
|
272
|
+
|
|
273
|
+
| Field | Falls back to |
|
|
274
|
+
|---|---|
|
|
275
|
+
| Path | `msg.filename` |
|
|
276
|
+
| Bucket | `msg.bucket` |
|
|
277
|
+
| Output as (`gcs in`) | `msg.format` |
|
|
278
|
+
| Content type (`gcs out`) | `msg.contentType` |
|
|
279
|
+
| Encoding | `msg.encoding` |
|
|
280
|
+
| Listing (`gcs list`) | `msg.depth` |
|
|
281
|
+
| Delete (`gcs delete`) | `msg.mode` |
|
|
282
|
+
| Limit | `msg.limit` |
|
|
283
|
+
|
|
284
|
+
The order is always the field in the dialog, then the message, then the
|
|
285
|
+
default. So a writer whose path is the JSONata expression
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
"orders/" & payload.tenant & "/" & payload.id & ".json"
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
serves every tenant and every order from one node.
|
|
292
|
+
|
|
293
|
+
After either node, `msg.gcs` carries `bucket`, `path`, `key`, `size`,
|
|
294
|
+
`contentType`, `eTag`, `lastModified` and, on a versioned bucket, `version`.
|
|
295
|
+
`path` is what the node was asked for and `key` is where that landed once the
|
|
296
|
+
bucket's prefix was applied - keeping both is what lets `msg.gcs.path` be fed
|
|
297
|
+
straight into another node without the prefix being applied twice.
|
|
298
|
+
|
|
299
|
+
### Credentials, and why they are not on the message
|
|
300
|
+
|
|
301
|
+
Credentials are the one thing that stays on the configuration node. They
|
|
302
|
+
belong to the connection rather than to the operation, and a message able to
|
|
303
|
+
choose the key it is written with would be a way to write somewhere it should
|
|
304
|
+
not.
|
|
305
|
+
|
|
306
|
+
* **Application default** is the default and needs nothing configured: it
|
|
307
|
+
works from `GOOGLE_APPLICATION_CREDENTIALS` on a workstation, from the
|
|
308
|
+
metadata server on Compute Engine, and from Workload Identity in GKE, where
|
|
309
|
+
there is no key file at all.
|
|
310
|
+
* **Service account key** takes the JSON itself, stored encrypted in the
|
|
311
|
+
credentials file. `${secret:NAME}` works here, so the key can live in Secret
|
|
312
|
+
Manager and be rotated without touching the flow.
|
|
313
|
+
* **Service account file** takes a path, for a key mounted as a Kubernetes
|
|
314
|
+
secret.
|
|
315
|
+
* **Anonymous** signs nothing, for a public bucket.
|
|
316
|
+
|
|
317
|
+
The **Options** table takes any obstore GCS setting by name and is applied
|
|
318
|
+
last, so it overrides the fields above - `base_url` against an emulator, for
|
|
319
|
+
example.
|
|
320
|
+
|
|
321
|
+
### Listing and deleting
|
|
322
|
+
|
|
323
|
+
`gcs list` has two shapes. **Shallow** asks what is at one level: objects in
|
|
324
|
+
`msg.payload`, child folders in `msg.folders`. **Deep** walks the whole
|
|
325
|
+
subtree and returns no folders. Both stop at **Limit** (1000 by default) and
|
|
326
|
+
set `msg.gcs.truncated` when there was more - a bucket can hold millions of
|
|
327
|
+
objects, and a node that tried to put all of them on one message would take
|
|
328
|
+
the runtime with it.
|
|
329
|
+
|
|
330
|
+
Each entry carries `path` and `key`. `path` is relative to the bucket's
|
|
331
|
+
prefix, so it goes straight into a `gcs in` node; a `split` node turns the
|
|
332
|
+
array into one message per object.
|
|
333
|
+
|
|
334
|
+
`gcs delete` removes one object, or everything under a prefix. It is
|
|
335
|
+
idempotent: something already gone is not an error, it simply does not appear
|
|
336
|
+
in `msg.gcs.deleted`.
|
|
337
|
+
|
|
338
|
+
### Folders, with and without a hierarchical namespace
|
|
339
|
+
|
|
340
|
+
A bucket has folders in one of two ways, and a flow should not have to know
|
|
341
|
+
which. With a [hierarchical
|
|
342
|
+
namespace](https://cloud.google.com/storage/docs/hns-overview) they are real
|
|
343
|
+
resources. Without one - still the default, and it cannot be switched on
|
|
344
|
+
afterwards - a folder is either implied by an object name containing `/`, or
|
|
345
|
+
is a zero-byte object whose name ends in `/`, which is what the console and
|
|
346
|
+
gsutil create.
|
|
347
|
+
|
|
348
|
+
Measured against a real flat bucket:
|
|
349
|
+
|
|
350
|
+
* **Shallow listing reports a folder as a folder** - as a child folder, not
|
|
351
|
+
as an object - even when nothing sits under it. That is why it is the
|
|
352
|
+
default here.
|
|
353
|
+
* **Deep listing does not.** A zero-byte marker comes back as an ordinary
|
|
354
|
+
object, with its trailing slash removed, because obstore normalises paths.
|
|
355
|
+
* **obstore cannot address a name ending in `/` at all.** It strips the slash
|
|
356
|
+
before the request, so it can neither create a marker nor delete one: the
|
|
357
|
+
delete returns "not found" while the object stays in the bucket.
|
|
358
|
+
|
|
359
|
+
So a prefix delete removes the objects and leaves the markers, and says so:
|
|
360
|
+
`msg.gcs.remainingFolders` lists what is still there.
|
|
361
|
+
|
|
362
|
+
With a hierarchical namespace the first two hold, but two things differ -
|
|
363
|
+
taken from Google's documentation rather than measured here:
|
|
364
|
+
[empty folders are excluded from a delimited
|
|
365
|
+
listing](https://cloud.google.com/storage/docs/hns-overview), so
|
|
366
|
+
`remainingFolders` will not report one, and a folder is removed by its own
|
|
367
|
+
operation, which the object API obstore speaks does not reach.
|
|
368
|
+
|
|
369
|
+
Either way nothing breaks and no wrong object is touched. What can remain
|
|
370
|
+
after a prefix delete is an empty folder.
|
|
371
|
+
|
|
372
|
+
### The prefix is a boundary
|
|
373
|
+
|
|
374
|
+
A bucket configuration may carry a prefix, and it is not only a convenience:
|
|
375
|
+
a path is refused if it tries to climb out of the prefix with `..`. Paths
|
|
376
|
+
normally come from messages, so without that a payload could read and write
|
|
377
|
+
anywhere in the bucket.
|
|
378
|
+
|
|
379
|
+
Cloud Storage has no append. Writing to a path that exists replaces it.
|
|
380
|
+
|
|
381
|
+
### Testing against a real bucket
|
|
382
|
+
|
|
383
|
+
The node tests run against an in-memory store, so they need no network. The
|
|
384
|
+
round trip against a real bucket is marked slow and skips itself unless the
|
|
385
|
+
environment names one:
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json \
|
|
389
|
+
PYFLOWRED_TEST_BUCKET=gs://a-bucket/a-prefix \
|
|
390
|
+
.venv/bin/python -m pytest tests/test_nodes_gcs.py -m slow
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
The edit dialogs are checked in a real browser, because whether a field is
|
|
394
|
+
really a typed input is not visible from Python:
|
|
395
|
+
`.venv/bin/python tools/uigcs.py http://127.0.0.1:1890/`.
|
|
396
|
+
|
|
397
|
+
## Stream processing
|
|
398
|
+
|
|
399
|
+
Seven operators that turn raw tag traffic into measurements and events, and
|
|
400
|
+
one configuration node holding what they remember.
|
|
401
|
+
|
|
402
|
+
| Node | What it does |
|
|
403
|
+
|---|---|
|
|
404
|
+
| `aggregate` | group by a key, collect into a window, compute |
|
|
405
|
+
| `derive` | arithmetic against the previous value: delta, rate, integral, counter with rollover, running total |
|
|
406
|
+
| `threshold` | level events with hysteresis and a dwell time |
|
|
407
|
+
| `transition` | discrete state changes with duration and debounce |
|
|
408
|
+
| `assemble` | last value per field into one record, with staleness |
|
|
409
|
+
| `compress` | deadband and swinging-door reduction |
|
|
410
|
+
| `pattern` | all / in order / absent, within a window |
|
|
411
|
+
|
|
412
|
+
Every operational field is a typed property, so a flow can work out its own
|
|
413
|
+
group key, value, limits and window.
|
|
414
|
+
|
|
415
|
+
### Windows, including the one that matters most
|
|
416
|
+
|
|
417
|
+
Tumbling, hopping and sliding by time; tumbling and sliding by count; session
|
|
418
|
+
by a quiet gap - and **closed by a control message**. That last one is the
|
|
419
|
+
generalisation: a shift, a batch, a production order and a cleaning cycle are
|
|
420
|
+
all a period whose boundaries the plant announces. Send
|
|
421
|
+
`msg.control = "close"` with the same group key and the window emits and
|
|
422
|
+
resets.
|
|
423
|
+
|
|
424
|
+
```
|
|
425
|
+
inject (cron) ──► aggregate (external window) ──► …
|
|
426
|
+
mqtt in ──► transition ──────────┘
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
That is availability: `transition` gives run/idle/fault with durations, the
|
|
430
|
+
cron `inject` closes the shift, `aggregate` sums the durations per state.
|
|
431
|
+
|
|
432
|
+
### Time
|
|
433
|
+
|
|
434
|
+
Processing time by default. With **event time** the timestamp comes from a
|
|
435
|
+
message property and a window closes when the watermark - the highest
|
|
436
|
+
timestamp seen, less the allowed lateness - passes its end. A message arriving
|
|
437
|
+
after that leaves by the second output carrying `msg.late`, rather than being
|
|
438
|
+
dropped where nobody can see it.
|
|
439
|
+
|
|
440
|
+
### Quality
|
|
441
|
+
|
|
442
|
+
Name a quality property and a sample it marks as bad is counted in
|
|
443
|
+
`window.bad` and kept out of the arithmetic. A reading from a failed sensor
|
|
444
|
+
averaged in with good ones is a number that is quietly wrong. `compress`
|
|
445
|
+
always passes a bad sample through, because dropping it would hide the one
|
|
446
|
+
thing somebody needs to see.
|
|
447
|
+
|
|
448
|
+
### State
|
|
449
|
+
|
|
450
|
+
`stream-state` is one RocksDB database, and there is usually more than one
|
|
451
|
+
because retention is the reason to separate them.
|
|
452
|
+
|
|
453
|
+
```python
|
|
454
|
+
# a five-minute window and a thirty-day counter want different time-to-live
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
Why RocksDB rather than memory, measured here: 100,000 keys each holding a
|
|
458
|
+
300-sample window cost **1,193 MB** as Python objects and **39 MB** resident
|
|
459
|
+
through RocksDB. The slowest hot path through it - read, modify and write a
|
|
460
|
+
300-sample buffer once per message - runs at 46,000 messages a second, which
|
|
461
|
+
is eighteen times what the runtime can feed it. There is no memory tier in
|
|
462
|
+
front of it on purpose.
|
|
463
|
+
|
|
464
|
+
**Time to live reclaims space during compaction, not on read.** An entry whose
|
|
465
|
+
time is up stays readable until a compaction happens to run. It is space
|
|
466
|
+
reclamation and never semantics: every value carries its own timestamp and the
|
|
467
|
+
operator decides what is stale.
|
|
468
|
+
|
|
469
|
+
The database is **not closed on a deploy**. State is meant to outlive one, and
|
|
470
|
+
RocksDB locks its directory, so closing on the way out would hand the
|
|
471
|
+
replacement node a locked directory.
|
|
472
|
+
|
|
473
|
+
### Not leaking, and being able to look
|
|
474
|
+
|
|
475
|
+
Every operator takes a **key limit** and refuses new keys beyond it rather
|
|
476
|
+
than evicting old ones - evicting would mean quietly not counting something
|
|
477
|
+
the flow was asked to count. The limit bounds *open* state, which is the only
|
|
478
|
+
thing that can run away.
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
curl <httpAdminRoot>stream-state
|
|
482
|
+
curl '<httpAdminRoot>stream-state?node=<nodeId>'
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
reports every database and operator: keys tracked, refusals, late messages and
|
|
486
|
+
how far the watermark has got. State you cannot look at is state you cannot
|
|
487
|
+
trust, and an LSM tree is not readable in an editor - so this is the way in.
|
|
488
|
+
|
|
489
|
+
## The end-to-end integration test
|
|
490
|
+
|
|
491
|
+
A flow set that exercises the node types and their settings against the
|
|
492
|
+
running service, with assertions, and a tool that measures how much of the
|
|
493
|
+
node set a run really reached.
|
|
494
|
+
|
|
495
|
+
```bash
|
|
496
|
+
docker compose -f tools/e2e/compose.yml up -d # MQTT and Kafka
|
|
497
|
+
GOOGLE_APPLICATION_CREDENTIALS=... \
|
|
498
|
+
.venv/bin/python tools/e2eflows.py --deploy http://127.0.0.1:1880 --run
|
|
499
|
+
.venv/bin/python tools/coverage.py http://127.0.0.1:1880 --run
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
Eighteen tabs, **157 assertions**. A simulated plant runs alongside so the
|
|
503
|
+
MQTT, Kafka and stream paths are exercised continuously rather than once per
|
|
504
|
+
button press.
|
|
505
|
+
|
|
506
|
+
* **Run all checks** on *00 Overview* fires every subject at once.
|
|
507
|
+
* `GET <httpNodeRoot>e2e/checks` returns the result as JSON,
|
|
508
|
+
`GET <httpNodeRoot>e2e/report` as a page.
|
|
509
|
+
* A check whose dependency is not running reports **skip**; one that never
|
|
510
|
+
fires at all reports **never reported**, which is the failure mode that
|
|
511
|
+
otherwise looks like a check that was never written.
|
|
512
|
+
|
|
513
|
+
### What it measures
|
|
514
|
+
|
|
515
|
+
| | |
|
|
516
|
+
|---|---|
|
|
517
|
+
| **Node types** | 66 of 66 countable carry a message during a run — 97.1% counting the two set aside |
|
|
518
|
+
| **Options within the nodes** | 183 of 191 reachable choices — 95.8% |
|
|
519
|
+
|
|
520
|
+
`tools/coverage.py` reads the runtime's own message counters before and after
|
|
521
|
+
a run, so a type counts only when a message actually went through it.
|
|
522
|
+
Deployed is not tested.
|
|
523
|
+
|
|
524
|
+
For options it reads every choice out of the node dialogs themselves, rather
|
|
525
|
+
than from a list kept by hand that would go stale the first time somebody
|
|
526
|
+
added one, and counts a choice when a node carrying it is upstream of an
|
|
527
|
+
assertion that passed - or is named by one as something it proves, which is
|
|
528
|
+
how the far side of a broker or a socket is accounted for.
|
|
529
|
+
|
|
530
|
+
Read that precisely: it means *a node carrying this choice was proven to
|
|
531
|
+
work*, not *this choice behaves differently from its neighbours*. A
|
|
532
|
+
subscriber cannot tell a message published at quality of service 1 from one
|
|
533
|
+
at 2. Distinguishing those is what the unit tests are for.
|
|
534
|
+
|
|
535
|
+
Everything set aside is named and printed with its reason - a will message
|
|
536
|
+
needs the client to vanish, SASL needs a broker configured for it, the
|
|
537
|
+
Template node's syntax highlighting is never read at runtime - and both
|
|
538
|
+
figures are shown, with and without the exclusions, so setting something
|
|
539
|
+
aside cannot flatter the result.
|
|
540
|
+
|
|
541
|
+
A detailed account of what is and is not tested - including where an
|
|
542
|
+
assertion only checks that something arrived rather than what it was - is in
|
|
543
|
+
[test-coverage.md](test-coverage.md).
|
|
544
|
+
|
|
545
|
+
### Keeping it honest
|
|
546
|
+
|
|
547
|
+
The assertions and the soak are separate. An assertion needs input it can
|
|
548
|
+
predict, so each subject has a burst with known values. Counters inside the
|
|
549
|
+
assertions are kept per run, because the stream state is durable on purpose
|
|
550
|
+
and a second press of the button must not read as the first one having
|
|
551
|
+
passed more.
|
|
552
|
+
|
|
553
|
+
The generator refuses to emit a Function node whose body will not compile: a
|
|
554
|
+
body built by string concatenation is one stray escape away from a syntax
|
|
555
|
+
error, and the runtime reports that as a node that quietly never fires -
|
|
556
|
+
which looks exactly like a feature that does not work.
|
|
557
|
+
|
|
558
|
+
Deploying is idempotent and additive: the tool replaces every tab whose id
|
|
559
|
+
starts with `t-` and leaves anything else alone. Credentials travel with the
|
|
560
|
+
deploy rather than sitting in the flow file.
|
|
561
|
+
|
|
562
|
+
The test needs a secrets provider, and the Cloud Storage tabs need
|
|
563
|
+
credentials the runtime can find:
|
|
564
|
+
|
|
565
|
+
```python
|
|
566
|
+
secrets = {"provider": "file", "path": "~/.pyflowred/secrets", "ttl": 300}
|
|
567
|
+
```
|
|
568
|
+
|
|
258
569
|
## Secrets
|
|
259
570
|
|
|
260
571
|
A flow that calls a protected API or connects to a broker with authentication
|
|
@@ -138,6 +138,20 @@ confluent-kafka, with the full librdkafka configuration surface reachable
|
|
|
138
138
|
through a properties table. Everything on the wire is JSON, by design rather
|
|
139
139
|
than by option. See [operations.md](operations.md#kafka).
|
|
140
140
|
|
|
141
|
+
### Google Cloud Storage
|
|
142
|
+
|
|
143
|
+
Also not a Node-RED node set, and the same shape again: a `gcs-config` bucket
|
|
144
|
+
configuration plus `gcs in`, `gcs out`, `gcs list` and `gcs delete`. On
|
|
145
|
+
obstore - the layer the flow store already uses, so there is one
|
|
146
|
+
object-storage implementation in the process and not two.
|
|
147
|
+
|
|
148
|
+
What is different from the `file` nodes it otherwise resembles: **every
|
|
149
|
+
operational value is a typed property**, so bucket, path, format, character
|
|
150
|
+
set and content type can each be a literal, a message property, a flow or
|
|
151
|
+
global value, an environment variable or a JSONata expression. A flow that
|
|
152
|
+
works out where it is writing does not need a node per destination. See
|
|
153
|
+
[operations.md](operations.md#google-cloud-storage).
|
|
154
|
+
|
|
141
155
|
### Secrets
|
|
142
156
|
|
|
143
157
|
Another PyFlowRED addition. `secrets` names a provider - Google Secret Manager or
|