diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 70d36deb1..ee9c922ae 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18, 20, 22] + node-version: [18, 20, 22, 24] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e77657c8..ed3aa8279 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,107 @@ +#### 4.1.0-beta.2: Beta Release + +Editor + + - feat: tray's primary button function will no longer run when clicking anywhere in #red-ui-editor-shade (#5122) @AllanOricil + - Truncate topic of debug message and add tooltip (#5168) @GogoVega + - Add event-log widget to status bar (#5181) @knolleary + - Add `splice` property to nodes:add event context (#5195) @knolleary + - Add support for plugin sources of autoComplete fields (#5194) @knolleary + - setSuggestedFlow api improvements (#5180) @knolleary + - Do not update suggestion whilst typeSearch hiding (#5193) @knolleary + - Update jquery (#5192) @knolleary + - Hide event log status widget by default (#5191) @knolleary + - Swap manage/install-all buttons in dependency notification (#5189) @knolleary + - Follow-up tweaks to HTTP In skip body parser (#5188) @knolleary + - Fixes infotip handling of cursor keys and updates english tip (#5187) @knolleary + - Add Japanese translations for 4.1.0-beta.1 (#5173) @kazuhitoyokoi + - Do not use css display when counting filtered palette nodes (#5178) @knolleary + - Fix `pending_version` not set after module update (#5169) @GogoVega + +Runtime + + - Prevent library leaking full local paths (#5186) @hardillb + +Nodes + + - HTTP In: feat: Add an option to the HTTP In to include the raw body. (#5037) @debadutta98 + - HTTP Request: Allow limited Strings for msg.rejectUnauthorized (#5172) @hardillb + + +#### 4.1.0-beta.1: Beta Release + +Editor + + - Add update notification (#5117) @knolleary + - Add a node annotation if the info property is set (#4955) @knolleary + - Add node suggestion api to editor and apply to typeSearch (#5135) @knolleary + - Node filter support for typedInput's builtin node (#5154) @GogoVega + - Import `got` module only once when sending metrics (#5152) @GogoVega + - Trigger button action of the selected nodes with new Hotkey (#4924) @GogoVega + - Handle deleting of subflow context entries (#5071) @knolleary + - Add the `changed` badge to the config node (#5062) @GogoVega + - Default Palette Search: Sort by Downloads (#5108) @joepavitt + - Show deprecated message if module flagged (#5134) @knolleary + - Add link icon to node docs and warn for major update (#5143) @GogoVega + - Support for a module with nodes and plugins in the palette (#4945) @GogoVega + - Include module list in global-config node when importing/exporting flows (#4599) @knolleary + - Add `Install all` button to the module list feature (#5123) @GogoVega + - Fix node tab filtering (#5119) @knolleary + - Cleanup global Palette Manager variables (#4958) @GogoVega + - Add a new `update available` widget to statusBar (#4948) @knolleary + - Add a queue while installing or removing a module from the Palette Manager (#4937) @GogoVega + - Ignore state of disabled nodes/flows during deployment (#5054) @GogoVega + - Exclude internal properties from node definition (#5144) @GogoVega + - Refresh config node sidebar when changing lock state of a flow (#5072) @knolleary + - Add a border to better distinguish typedInput type/option dropdowns (#5078) @knolleary + - Fix undo of subflow color change not applying to instances (#5012) @GogoVega + - Properly handle scale factor in getLinksAtPoint for firefox (#5087) @knolleary + - Update markdown drop-target appearance (#5059) @knolleary + - Support for disabled flows in Sidebar Config (#5061) @GogoVega + - Support text drag & drop into markdown editor (#5056) @gorenje + - Truncate long messages from the Debug Sidebar (#4944) @GogoVega + - Handle link nodes with show/hide label action (#5106) @knolleary + - Update the Node-RED logo to use the hex variant (#5103) @joepavitt + - Add the vertical marker to the palette hand (#4954) @GogoVega + - Monaco Latest (0.52.0) (#4930) @Steve-Mcl + - Updates monaco to 0.52.0 for action widget sizing fix (#5110) @Steve-Mcl + - Bump Multer to 2.0.1 (#5151) @hardillb + - Upgrade multer to 2.0.0 (#5148) @hardillb + - Update dompurify (#5120) @knolleary + - Colourise the Node-RED logs (#5109) @hardillb + - Only apply colours for non-default log lines (#5129) @knolleary + - feat: import default export if plugin is a transpiled es module (#5137) @dschmidt + - Add an additional git_auth_failed condition (#5145) @sonnyp + - Fix Sass deprecation warnings (#4922) @bonanitech + - chore(editor)!: remove Internet Explorer polyfill (#5070) @Rotzbua + - Remove Internet Explorer CSS hacks (#5142) @bonanitech + +Runtime + + - fix: set label in themeSettings.deployButton despite type attribute (#5053) @matiseni51 + - fix(html): correct buggy html (#4768) @Rotzbua + - Update dev (#4836) @knolleary + - Update dependencies (#5107) @knolleary + - Bump i18next to 24.x and auto-migrate message catalog format (#5088) @knolleary + - chore(editor): update `DOMPurify` flag (#5073) @Rotzbua + - Add .editorconfig to .gitignore (#5060) @gorenje + +Nodes + + - Complete/Status: Fix complete node to not feedback immediately connected nodes (#5114) @dceejay + - Function: Add URL/URLSearchParams to Function sandbox (#5159) @knolleary + - Function: Add support for node: prefixed modules in function node (#5067) @knolleary + - Function: Add globalFunctionTimeout (#4985) @vasuvanka + - Exec: Make encoding handling consistent between stdout and err (#5158) @knolleary + - Split: Let split node send original msg to complete node (#5113) @dceejay + - Split: Rename Split The field (#5130) @dceejay + - MQTT: Ensure generated mqtt clientId uses only valid chars (#5156) @knolleary + - HTTP Request: Fix the capitisation for ALPN settings in http-request (#5105) @hardillb + - HTTP Request: (docs) Recommend HTTPS over HTTP (#5141) @ZJvandeWeg + - HTTP Request: Include URL query params in HTTP Digest (#5166) @hardillb + - Catch: Add code to error object sent by Catch node (#5081) @knolleary + - Debug: Improve debug display of error objects (#5079) @knolleary + #### 4.0.9: Maintenance Release Editor diff --git a/Gruntfile.js b/Gruntfile.js index 05be6a58a..73b03f6ea 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -133,7 +133,6 @@ module.exports = function(grunt) { src: [ // Ensure editor source files are concatenated in // the right order - "packages/node_modules/@node-red/editor-client/src/js/polyfills.js", "packages/node_modules/@node-red/editor-client/src/js/jquery-addons.js", "packages/node_modules/@node-red/editor-client/src/js/red.js", "packages/node_modules/@node-red/editor-client/src/js/events.js", @@ -215,9 +214,9 @@ module.exports = function(grunt) { files: [ { src: [ - "packages/node_modules/@node-red/editor-client/src/vendor/jquery/js/jquery-3.5.1.min.js", - "packages/node_modules/@node-red/editor-client/src/vendor/jquery/js/jquery-migrate-3.3.0.min.js", - "packages/node_modules/@node-red/editor-client/src/vendor/jquery/js/jquery-ui.min.js", + "packages/node_modules/@node-red/editor-client/src/vendor/jquery/js/jquery-3.7.1.min.js", + "packages/node_modules/@node-red/editor-client/src/vendor/jquery/js/jquery-migrate-3.5.2.min.js", + "packages/node_modules/@node-red/editor-client/src/vendor/jquery/js/jquery-ui-1.14.1.min.js", "packages/node_modules/@node-red/editor-client/src/vendor/jquery/js/jquery.ui.touch-punch.min.js", "node_modules/marked/marked.min.js", "node_modules/dompurify/dist/purify.min.js", diff --git a/package.json b/package.json index aa9918b64..4a5354491 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "node-red", - "version": "4.0.9", + "version": "4.1.0-beta.2", "description": "Low-code programming for event-driven applications", "homepage": "https://nodered.org", "license": "Apache-2.0", @@ -26,13 +26,14 @@ } ], "dependencies": { - "acorn": "8.14.1", + "acorn": "8.15.0", "acorn-walk": "8.3.4", "ajv": "8.17.1", "async-mutex": "0.5.0", "basic-auth": "2.0.1", "bcryptjs": "3.0.2", "body-parser": "1.20.3", + "chalk": "^4.1.2", "cheerio": "1.0.0-rc.10", "clone": "2.1.2", "content-type": "1.0.5", @@ -42,8 +43,8 @@ "cronosjs": "1.7.1", "denque": "2.1.0", "express": "4.21.2", - "express-session": "1.18.1", - "form-data": "4.0.2", + "express-session": "1.18.2", + "form-data": "4.0.4", "fs-extra": "11.3.0", "got": "12.6.1", "hash-sum": "2.0.0", @@ -62,13 +63,13 @@ "moment": "2.30.1", "moment-timezone": "0.5.48", "mqtt": "5.11.0", - "multer": "1.4.5-lts.2", + "multer": "2.0.2", "mustache": "4.2.0", - "node-red-admin": "^4.0.2", + "node-red-admin": "^4.1.1", "node-watch": "0.7.4", "nopt": "5.0.0", "oauth2orize": "1.12.0", - "on-headers": "1.0.2", + "on-headers": "1.1.0", "passport": "0.7.0", "passport-http-bearer": "1.0.1", "passport-oauth2-client-password": "0.1.2", @@ -86,7 +87,7 @@ "@node-rs/bcrypt": "1.10.7" }, "devDependencies": { - "dompurify": "2.5.8", + "dompurify": "3.2.6", "grunt": "1.6.1", "grunt-chmod": "~1.1.1", "grunt-cli": "~1.5.0", @@ -110,7 +111,7 @@ "jquery-i18next": "1.2.1", "jsdoc-nr-template": "github:node-red/jsdoc-nr-template", "marked": "4.3.0", - "mermaid": "11.6.0", + "mermaid": "11.9.0", "minami": "1.2.3", "mocha": "9.2.2", "node-red-node-test-helper": "^0.3.3", diff --git a/packages/node_modules/@node-red/editor-api/package.json b/packages/node_modules/@node-red/editor-api/package.json index 561ea9baa..e5568d4c1 100644 --- a/packages/node_modules/@node-red/editor-api/package.json +++ b/packages/node_modules/@node-red/editor-api/package.json @@ -1,6 +1,6 @@ { "name": "@node-red/editor-api", - "version": "4.0.9", + "version": "4.1.0-beta.2", "license": "Apache-2.0", "main": "./lib/index.js", "repository": { @@ -16,17 +16,17 @@ } ], "dependencies": { - "@node-red/util": "4.0.9", - "@node-red/editor-client": "4.0.9", + "@node-red/util": "4.1.0-beta.2", + "@node-red/editor-client": "4.1.0-beta.2", "bcryptjs": "3.0.2", "body-parser": "1.20.3", "clone": "2.1.2", "cors": "2.8.5", - "express-session": "1.18.1", + "express-session": "1.18.2", "express": "4.21.2", "memorystore": "1.6.7", "mime": "3.0.0", - "multer": "1.4.5-lts.2", + "multer": "2.0.2", "mustache": "4.2.0", "oauth2orize": "1.12.0", "passport-http-bearer": "1.0.1", diff --git a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json index 67ed35f33..57b9e681e 100644 --- a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json @@ -111,6 +111,7 @@ "userSettings": "User Settings", "nodes": "Nodes", "displayStatus": "Show node status", + "displayInfoIcon": "Show node information icon", "displayConfig": "Configuration nodes", "import": "Import", "importExample": "Import example flow", @@ -264,6 +265,8 @@ "download": "Download", "importUnrecognised": "Imported unrecognised type:", "importUnrecognised_plural": "Imported unrecognised types:", + "importWithModuleInfo": "Required modules missing", + "importWithModuleInfoDesc": "These nodes are not currently installed in your palette and are required for the imported flow:", "importDuplicate": "Imported duplicate node:", "importDuplicate_plural": "Imported duplicate nodes:", "nodesExported": "Nodes exported to clipboard", @@ -570,6 +573,7 @@ "filter": "filter nodes", "search": "search modules", "addCategory": "Add new...", + "loadingSuggestions": "Loading suggestions...", "label": { "subflows": "subflows", "network": "network", @@ -623,12 +627,15 @@ "yearsMonthsV": "__y__ years, __count__ month ago", "yearsMonthsV_plural": "__y__ years, __count__ months ago" }, + "manageModules": "Manage modules", "nodeCount": "__label__ node", "nodeCount_plural": "__label__ nodes", "pluginCount": "__count__ plugin", "pluginCount_plural": "__count__ plugins", "moduleCount": "__count__ module available", "moduleCount_plural": "__count__ modules available", + "updateCount": "__count__ update available", + "updateCount_plural": "__count__ updates available", "inuse": "in use", "enableall": "enable all", "disableall": "disable all", @@ -638,9 +645,12 @@ "update": "update to __version__", "updated": "updated", "install": "install", + "installAll": "Install all", "installed": "installed", + "installing": "Module installation in progress: __module__", "conflict": "conflict", "conflictTip": "

This module cannot be installed as it includes a
node type that has already been installed

Conflicts with __module__

", + "majorVersion": "

This is a major version update of the node. Check the documentation for details of the update.

", "loading": "Loading catalogues...", "tab-nodes": "Nodes", "tab-install": "Install", @@ -648,9 +658,12 @@ "sortRelevance": "relevance", "sortAZ": "a-z", "sortRecent": "recent", + "successfulInstall": "Successfully installed modules", "more": "+ __count__ more", "upload": "Upload module tgz file", "refresh": "Refresh module list", + "deprecated": "deprecated", + "deprecatedTip": "This module has been deprecated", "errors": { "catalogLoadFailed": "

Failed to load node catalogue.

Check the browser console for more information

", "installFailed": "

Failed to install: __module__

__message__

Check the log for more information

", @@ -1273,5 +1286,15 @@ "environment": "Environment", "header": "Global Environment Variables", "revert": "Revert" + }, + "telemetry": { + "label": "Update Notifications", + "settingsTitle": "Enable Update Notifications", + "settingsDescription": "

Node-RED can notify you when there is a new version available. This ensures you keep up to date with the latest features and fixes.

This requires sending anonymised data back to the Node-RED team. It does not include any details of your flows or users.

For full information on what information is collected and how it is used, please see the documentation.

", + "settingsDescription2": "

You can change this setting at any time in the User Settings.

", + "enableLabel": "Yes, enable notifications", + "disableLabel": "No, do not enable notifications", + "updateAvailable": "Update available", + "updateAvailableDesc": "Node-RED __version__ is now available" } } diff --git a/packages/node_modules/@node-red/editor-client/locales/en-US/infotips.json b/packages/node_modules/@node-red/editor-client/locales/en-US/infotips.json index a958868ee..5c6ba420c 100644 --- a/packages/node_modules/@node-red/editor-client/locales/en-US/infotips.json +++ b/packages/node_modules/@node-red/editor-client/locales/en-US/infotips.json @@ -6,7 +6,7 @@ "tip3": "You can manage your palette of nodes with {{core:manage-palette}}", "tip4": "Your flow configuration nodes are listed in the sidebar panel. It can be accessed from the menu or with {{core:show-config-tab}}", "tip5": "Enable or disable these tips from the option in the settings", - "tip6": "Move the selected nodes using the [left] [up] [down] and [right] keys. Hold [shift] to nudge them further", + "tip6": "Move the selected nodes using the [left] [up] [down] and [right] keys whilst holding [ctrl]. Hold [shift] to nudge them further", "tip7": "Dragging a node onto a wire will splice it into the link", "tip8": "Export the selected nodes, or the current tab with {{core:show-export-dialog}}", "tip9": "Import a flow by dragging its JSON into the editor, or with {{core:show-import-dialog}}", diff --git a/packages/node_modules/@node-red/editor-client/locales/es-ES/infotips.json b/packages/node_modules/@node-red/editor-client/locales/es-ES/infotips.json index bdd17c667..f37e4b27a 100644 --- a/packages/node_modules/@node-red/editor-client/locales/es-ES/infotips.json +++ b/packages/node_modules/@node-red/editor-client/locales/es-ES/infotips.json @@ -6,7 +6,7 @@ "tip3": "Puedes gestionar tu paleta de nodos con {{core:manage-palette}}", "tip4": "Tus nodos de configuración de flujo aparecen en el panel de la barra lateral. Se puede acceder desde el menú o con {{core:show-config-tab}}", "tip5": "Activa o desactiva estos consejos desde la opción en la configuración", - "tip6": "Mueve los nodos seleccionados usando las teclas [izquierda] [arriba] [abajo] y [derecha]. Mantén pulsada [Mayús] para desplazarlos más", + "tip6": "Mueve los nodos seleccionados usando las teclas [left] [up] [down] y [right]. Mantén pulsada [shift] para desplazarlos más", "tip7": "Arrastrar un nodo a un cable lo insertará en el enlace", "tip8": "Exporta los nodos seleccionados, o la pestaña actual con {{core:show-export-dialog}}", "tip9": "Importa un flujo arrastrando su JSON al editor, o con {{core:show-import-dialog}}", diff --git a/packages/node_modules/@node-red/editor-client/locales/fr/editor.json b/packages/node_modules/@node-red/editor-client/locales/fr/editor.json index ddc464650..a205002d9 100644 --- a/packages/node_modules/@node-red/editor-client/locales/fr/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/fr/editor.json @@ -111,6 +111,7 @@ "userSettings": "Paramètres de l'utilisateur", "nodes": "Noeuds", "displayStatus": "Afficher l'état du noeud", + "displayInfoIcon": "Afficher l'icône d'information sur le noeud", "displayConfig": "Noeuds de configuration", "import": "Importer", "importExample": "Importer un exemple de flux", @@ -264,6 +265,8 @@ "download": "Télécharger", "importUnrecognised": "Importation d'un type inconnu :", "importUnrecognised_plural": "Importation de plusieurs types inconnus :", + "importWithModuleInfo": "Modules requis manquants", + "importWithModuleInfoDesc": "Ces noeuds ne sont pas actuellement installés dans votre palette et sont requis pour le flux importé :", "importDuplicate": "Noeud en double importé :", "importDuplicate_plural": "Noeuds en double importés :", "nodesExported": "Noeuds exportés vers le presse-papiers", @@ -623,12 +626,15 @@ "yearsMonthsV": "il y a __y__ ans, __count__ mois", "yearsMonthsV_plural": "il y a __y__ ans, __count__ mois" }, + "manageModules": "Gérer les modules", "nodeCount": "__label__ noeud", "nodeCount_plural": "__label__ noeuds", "pluginCount": "__count__ plugin", "pluginCount_plural": "__count__ plugins", "moduleCount": "__count__ module disponible", "moduleCount_plural": "__count__ modules disponibles", + "updateCount": "__count__ mise à jour disponible", + "updateCount_plural": "__count__ mises à jour disponibles", "inuse": "En cours d'utilisation", "enableall": "Activer tout", "disableall": "Désactiver tout", @@ -638,9 +644,12 @@ "update": "Mettre à jour vers __version__", "updated": "Mis à jour", "install": "Installer", + "installAll": "Installer tout", "installed": "Installé", + "installing": "Installation du module en cours : __module__", "conflict": "Conflit", "conflictTip": "

Ce module ne peut pas être installé car il inclut un
type de noeud qui a déjà été installé

Conflits avec __module__

", + "majorVersion": "

Il s'agit d'une mise à jour majeure du noeud. Consulter la documentation pour plus de détails sur la mise à jour.

", "loading": "Chargement des catalogues...", "tab-nodes": "Noeuds", "tab-install": "Installer", @@ -648,9 +657,12 @@ "sortRelevance": "Pertinence", "sortAZ": "A-Z", "sortRecent": "Récent", + "successfulInstall": "Modules installés avec succès", "more": "+ __count__ en plus", "upload": "Charger le fichier .tgz du module", "refresh": "Actualiser la liste des modules", + "deprecated": "Obsolète", + "deprecatedTip": "Ce module est obsolète", "errors": { "catalogLoadFailed": "

Échec du chargement du catalogue de noeuds.

Vérifier la console du navigateur pour plus d'informations

", "installFailed": "

Échec lors de l'installation : __module__

__message__

Consulter le journal pour plus d'informations

", @@ -1262,6 +1274,16 @@ "header": "Variables d'environnement globales", "revert": "Rétablir" }, + "telemetry": { + "label": "Notifications de mise à jour", + "settingsTitle": "Activer les notifications de mise à jour", + "settingsDescription": "

Node-RED peut vous avertir de la disponibilité d'une nouvelle version. Vous êtes ainsi informé des dernières fonctionnalités et correctifs.

Cela nécessite d'envoyer des données anonymes à l'équipe Node-RED. Elles n'incluent aucun détail sur vos flux ou vos utilisateurs.

Pour plus d'informations sur les informations collectées et leur utilisation, veuillez consulter la documentation.

", + "settingsDescription2": "

Vous pouvez modifier ce paramètre à tout moment dans les paramètres de l'utilisateur.

", + "enableLabel": "Oui, activer les notifications", + "disableLabel": "Non, ne pas activer les notifications", + "updateAvailable": "Mise(s) à jour disponible(s)", + "updateAvailableDesc": "Node-RED __version__ est désormais disponible" + }, "action-list": { "toggle-show-tips": "Basculer l'affichage des astuces", "show-about": "Afficher la description de Node-RED", diff --git a/packages/node_modules/@node-red/editor-client/locales/fr/infotips.json b/packages/node_modules/@node-red/editor-client/locales/fr/infotips.json index 449be751b..85da00433 100644 --- a/packages/node_modules/@node-red/editor-client/locales/fr/infotips.json +++ b/packages/node_modules/@node-red/editor-client/locales/fr/infotips.json @@ -6,7 +6,7 @@ "tip3": "Vous pouvez gérer votre palette de noeuds avec {{core:manage-palette}}", "tip4": "Vos noeuds de configuration de flux sont répertoriés dans le panneau de la barre latérale. Ils sont accessibles depuis le menu ou avec {{core:show-config-tab}}", "tip5": "Activer ou désactiver ces conseils à partir de l'option dans les paramètres", - "tip6": "Déplacer les noeuds sélectionnés à l'aide des touches [gauche] [haut] [bas] et [droite]. Maintenir la touche [shift] enfoncée pour les pousser plus loin", + "tip6": "Déplacer les noeuds sélectionnés à l'aide des touches [left] [up] [down] et [right]. Maintenir la touche [shift] enfoncée pour les pousser plus loin", "tip7": "Faire glisser un noeud sur un fil le raccordera au lien", "tip8": "Exporter les noeuds sélectionnés, ou l'onglet actuel avec {{core:show-export-dialog}}", "tip9": "Importer un flux en faisant glisser son JSON dans l'éditeur, ou avec {{core:show-import-dialog}}", diff --git a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json index e6c02590b..1653662c2 100644 --- a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json @@ -111,6 +111,7 @@ "userSettings": "ユーザ設定", "nodes": "ノード", "displayStatus": "ノードのステータスを表示", + "displayInfoIcon": "ノード情報のアイコンを表示", "displayConfig": "設定ノード", "import": "読み込み", "importExample": "フロー例を読み込み", @@ -264,6 +265,8 @@ "download": "ダウンロード", "importUnrecognised": "認識できない型が読み込まれました:", "importUnrecognised_plural": "認識できない型が読み込まれました:", + "importWithModuleInfo": "必要なモジュールが不足", + "importWithModuleInfoDesc": "以下のノードは現在パレットにインストールされていませんが、読み込んだフローには必要なノードです:", "importDuplicate": "重複したノードを読み込みました:", "importDuplicate_plural": "重複したノードを読み込みました:", "nodesExported": "クリップボードへフローを書き出しました", @@ -570,6 +573,7 @@ "filter": "ノードを検索", "search": "ノードを検索", "addCategory": "新規追加...", + "loadingSuggestions": "提案を読み込み中...", "label": { "subflows": "サブフロー", "network": "ネットワーク", @@ -623,12 +627,15 @@ "yearsMonthsV": "__y__ 年 __count__ ヵ月前", "yearsMonthsV_plural": "__y__ 年 __count__ ヵ月前" }, + "manageModules": "モジュールを管理", "nodeCount": "__label__ 個のノード", "nodeCount_plural": "__label__ 個のノード", "pluginCount": "__count__ 個のプラグイン", "pluginCount_plural": "__count__ 個のプラグイン", "moduleCount": "__count__ 個のモジュール", "moduleCount_plural": "__count__ 個のモジュール", + "updateCount": "__count__ 個の更新が存在", + "updateCount_plural": "__count__ 個の更新が存在", "inuse": "使用中", "enableall": "全て有効化", "disableall": "全て無効化", @@ -638,9 +645,12 @@ "update": "__version__ へ更新", "updated": "更新済", "install": "ノードを追加", + "installAll": "全てインストール", "installed": "追加しました", + "installing": "モジュールのインストールが進行中: __module__", "conflict": "競合", "conflictTip": "

インストール済みのノードの種別と競合しているため
ノードをインストールできません

競合: __module__

", + "majorVersion": "

これはノードのメジャーバージョンの更新です。更新内容の詳細については、ドキュメントを確認してください。

", "loading": "カタログを読み込み中", "tab-nodes": "現在のノード", "tab-install": "ノードを追加", @@ -648,9 +658,12 @@ "sortRelevance": "関連順", "sortAZ": "辞書順", "sortRecent": "日付順", + "successfulInstall": "モジュールのインストールが成功", "more": "+ さらに __count__ 個", "upload": "モジュールのtgzファイルをアップロード", "refresh": "モジュールリスト更新", + "deprecated": "非推奨", + "deprecatedTip": "本モジュールは非推奨です", "errors": { "catalogLoadFailed": "

ノードのカタログの読み込みに失敗しました。

詳細はブラウザのコンソールを確認してください。

", "installFailed": "

追加処理が失敗しました: __module__

__message__

詳細はログを確認してください。

", @@ -1262,6 +1275,16 @@ "header": "グローバル環境変数", "revert": "破棄" }, + "telemetry": { + "label": "更新の通知", + "settingsTitle": "更新の通知を有効化", + "settingsDescription": "

新バージョンのNode-REDが存在した時に、通知を受けることができます。この機能によって最新機能の提供や修正があることを把握できます。

この通知を受け取るには、匿名化されたデータをNode-REDチームに送る必要があります。このデータには、フローやユーザの詳細は含まれません。

収集される情報と利用方法の詳細については、ドキュメントを参照してください。

", + "settingsDescription2": "

この設定はユーザ設定からいつでも変更できます。

", + "enableLabel": "はい、通知を有効にします", + "disableLabel": "いいえ、通知を有効にしません", + "updateAvailable": "更新を利用可能", + "updateAvailableDesc": "現在、Node-RED __version__ が利用可能" + }, "action-list": { "toggle-show-tips": "ヒント表示切替", "show-about": "Node-REDの説明を表示", @@ -1302,6 +1325,7 @@ "toggle-show-grid": "グリッド表示切替", "toggle-snap-grid": "ノードの配置補助切替", "toggle-status": "ステータス表示切替", + "toggle-node-info-icon": "ノード情報のアイコン表示切替", "show-selected-node-labels": "選択したノードのラベルを表示", "hide-selected-node-labels": "選択したノードのラベルを非表示", "scroll-view-up": "上スクロール", @@ -1414,6 +1438,7 @@ "show-global-env": "グローバル環境変数を表示", "lock-flow": "フローを固定", "unlock-flow": "フローの固定を解除", - "show-node-help": "ノードのヘルプを表示" + "show-node-help": "ノードのヘルプを表示", + "trigger-selected-nodes-action": "選択したノードのアクションを実行" } } diff --git a/packages/node_modules/@node-red/editor-client/locales/ru/infotips.json b/packages/node_modules/@node-red/editor-client/locales/ru/infotips.json index d65d88545..5eed1ed1a 100644 --- a/packages/node_modules/@node-red/editor-client/locales/ru/infotips.json +++ b/packages/node_modules/@node-red/editor-client/locales/ru/infotips.json @@ -6,15 +6,15 @@ "tip3" : "Вы можете управлять палитрой узлов с помощью {{core:manage-palette}}", "tip4" : "Узлы конфигурации потока перечисляются на боковой панели. Доступ к списку можно получить из меню или с помощью {{core:show-config-tab}}", "tip5" : "Эти советы можно включить/выключить через настройки", - "tip6" : "Перемещайте выбранные узлы клавишами [влево] [вверх] [вниз] и [вправо]. Удерживайте [Shift], чтобы увеличить шаг", + "tip6" : "Перемещайте выбранные узлы клавишами [left] [up] [down] и [right]. Удерживайте [shift], чтобы увеличить шаг", "tip7" : "Перетаскивание узла на провод соединит его с обеих сторон", "tip8" : "Экспортируйте выбранные узлы или текущую вкладку с {{core:show-export-dialog}}", "tip9" : "Импортируйте поток, перетаскивая его JSON в редактор или с помощью {{core:show-import-dialog}}", - "tip10" : "Нажмите [Shift], [кликните] по порту узла и перетаскивайте подключенные провода на другой узел", + "tip10" : "Нажмите [shift], [кликните] по порту узла и перетаскивайте подключенные провода на другой узел", "tip11" : "Открывайте вкладку Информация с {{core:show-info-tab}} или вкладку Отладка с {{core:show-debug-tab}}", "tip12" : "Нажмите [ctrl] и [кликните] в рабочей области, чтобы открыть диалог быстрого добавления", "tip13" : "Нажмите [ctrl] и [кликните] по порту узла, чтобы начать быстрое подключение", - "tip14" : "Нажмите [Shift] и [кликните] по узлу, чтобы выбрать все соединенные узлы", + "tip14" : "Нажмите [shift] и [кликните] по узлу, чтобы выбрать все соединенные узлы", "tip15" : "Нажмите [ctrl] и [кликните] по узлу, чтобы добавить или убрать его из текущего выбора", "tip16" : "Переключайте вкладки потока с помощью {{core:show-previous-tab}} и {{core:show-next-tab}}", "tip17" : "Вы можете подтвердить изменения в редакторе узла с {{core:confirm-edit-tray}} или отменить их с {{core:cancel-edit-tray}}", diff --git a/packages/node_modules/@node-red/editor-client/package.json b/packages/node_modules/@node-red/editor-client/package.json index ef2600a54..941fda7b3 100644 --- a/packages/node_modules/@node-red/editor-client/package.json +++ b/packages/node_modules/@node-red/editor-client/package.json @@ -1,6 +1,6 @@ { "name": "@node-red/editor-client", - "version": "4.0.9", + "version": "4.1.0-beta.2", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/packages/node_modules/@node-red/editor-client/src/images/node-red.svg b/packages/node_modules/@node-red/editor-client/src/images/node-red.svg index c62b35866..b74a46a4c 100644 --- a/packages/node_modules/@node-red/editor-client/src/images/node-red.svg +++ b/packages/node_modules/@node-red/editor-client/src/images/node-red.svg @@ -1 +1,20 @@ - \ No newline at end of file + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/packages/node_modules/@node-red/editor-client/src/js/keymap.json b/packages/node_modules/@node-red/editor-client/src/js/keymap.json index 1bedab6e8..4cf28d227 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/keymap.json +++ b/packages/node_modules/@node-red/editor-client/src/js/keymap.json @@ -92,7 +92,6 @@ "ctrl-+": "core:zoom-in", "ctrl--": "core:zoom-out", "ctrl-0": "core:zoom-reset" - }, "red-ui-editor-stack": { "ctrl-enter": "core:confirm-edit-tray", diff --git a/packages/node_modules/@node-red/editor-client/src/js/nodes.js b/packages/node_modules/@node-red/editor-client/src/js/nodes.js index 41ae4c242..71ec8c1a5 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/nodes.js +++ b/packages/node_modules/@node-red/editor-client/src/js/nodes.js @@ -738,7 +738,7 @@ RED.nodes = (function() { } } - function addNode(n) { + function addNode(n, opt) { let newNode if (!n.__isProxy__) { newNode = new Proxy(n, nodeProxyHandler) @@ -777,7 +777,7 @@ RED.nodes = (function() { nodeLinks[n.id] = {in:[],out:[]}; } } - RED.events.emit('nodes:add',newNode); + RED.events.emit('nodes:add',newNode, opt); return newNode } function addLink(l) { @@ -1543,8 +1543,20 @@ RED.nodes = (function() { } /** * Converts the current node selection to an exportable JSON Object - **/ - function createExportableNodeSet(set, exportedIds, exportedSubflows, exportedConfigNodes) { + * @param {Array} set the node selection to export + * @param {Object} options + * @param {Record} [options.exportedIds] + * @param {Record} [options.exportedSubflows] + * @param {Record} [options.exportedConfigNodes] + * @param {boolean} [options.includeModuleConfig] + * @returns {Array} + */ + function createExportableNodeSet(set, { + exportedIds, + exportedSubflows, + exportedConfigNodes, + includeModuleConfig = false + } = {}) { var nns = []; exportedIds = exportedIds || {}; @@ -1578,7 +1590,7 @@ RED.nodes = (function() { subflowSet = subflowSet.concat(RED.nodes.junctions(subflowId)) subflowSet = subflowSet.concat(RED.nodes.groups(subflowId)) - var exportableSubflow = createExportableNodeSet(subflowSet, exportedIds, exportedSubflows, exportedConfigNodes); + var exportableSubflow = createExportableNodeSet(subflowSet, { exportedIds, exportedSubflows, exportedConfigNodes }); nns = exportableSubflow.concat(nns); } } @@ -1613,19 +1625,27 @@ RED.nodes = (function() { } nns.push(convertedNode); if (node.type === "group") { - nns = nns.concat(createExportableNodeSet(node.nodes, exportedIds, exportedSubflows, exportedConfigNodes)); + nns = nns.concat(createExportableNodeSet(node.nodes, { exportedIds, exportedSubflows, exportedConfigNodes })); } } else { var convertedSubflow = convertSubflow(node, { credentials: false }); nns.push(convertedSubflow); } } + if (includeModuleConfig) { + updateGlobalConfigModuleList(nns) + } return nns; } - // Create the Flow JSON for the current configuration - // opts.credentials (whether to include (known) credentials) - default: true - // opts.dimensions (whether to include node dimensions) - default: false + /** + * Converts the current configuration to an exportable JSON Object + * @param {object} opts + * @param {boolean} [opts.credentials] whether to include (known) credentials. Default `true`. + * @param {boolean} [opts.dimensions] whether to include node dimensions. Default `false`. + * @param {boolean} [opts.includeModuleConfig] whether to include modules. Default `false`. + * @returns {Array} + */ function createCompleteNodeSet(opts) { var nns = []; var i; @@ -1657,6 +1677,9 @@ RED.nodes = (function() { RED.nodes.eachNode(function(n) { nns.push(convertNode(n, opts)); }) + if (opts?.includeModuleConfig) { + updateGlobalConfigModuleList(nns); + } return nns; } @@ -1884,14 +1907,26 @@ RED.nodes = (function() { * - id:import - import as-is * - id:copy - import with new id * - id:replace - import over the top of existing + * - modules: map of module:version - hints for unknown nodes + * - applyNodeDefaults - whether to apply default values to the imported nodes (default: false) + * - eventContext - context to include in the `nodes:add` event */ function importNodes(newNodesObj,options) { // createNewIds,createMissingWorkspace) { - const defOpts = { generateIds: false, addFlow: false, markChanged: false, reimport: false, importMap: {} } + const defOpts = { + generateIds: false, + addFlow: false, + markChanged: false, + reimport: false, + importMap: {}, + applyNodeDefaults: false, + eventContext: null + } options = Object.assign({}, defOpts, options) options.importMap = options.importMap || {} const createNewIds = options.generateIds; const reimport = (!createNewIds && !!options.reimport) const createMissingWorkspace = options.addFlow; + const applyNodeDefaults = options.applyNodeDefaults; var i; var n; var newNodes; @@ -2019,12 +2054,73 @@ RED.nodes = (function() { } if (!isInitialLoad && unknownTypes.length > 0) { - var typeList = $("