mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Merge branch 'master' of https://github.com/node-red/node-red
This commit is contained in:
		| @@ -15,7 +15,7 @@ | ||||
|  **/ | ||||
| (function($) { | ||||
|     var contextParse = function(v,defaultStore) { | ||||
|         var parts = RED.utils.parseContextKey(v, defaultStore); | ||||
|         var parts = RED.utils.parseContextKey(v, defaultStore&&defaultStore.value); | ||||
|         return { | ||||
|             option: parts.store, | ||||
|             value: parts.key | ||||
| @@ -279,6 +279,14 @@ | ||||
|                 var contextStores = RED.settings.context.stores; | ||||
|                 var contextOptions = contextStores.map(function(store) { | ||||
|                     return {value:store,label: store, icon:'<i class="red-ui-typedInput-icon fa fa-database"></i>'} | ||||
|                 }).sort(function(A,B) { | ||||
|                     if (A.value === RED.settings.context.default) { | ||||
|                         return -1; | ||||
|                     } else if (B.value === RED.settings.context.default) { | ||||
|                         return 1; | ||||
|                     } else { | ||||
|                         return A.value.localeCompare(B.value); | ||||
|                     } | ||||
|                 }) | ||||
|                 if (contextOptions.length < 2) { | ||||
|                     allOptions.flow.options = []; | ||||
|   | ||||
| @@ -1751,7 +1751,6 @@ RED.view = (function() { | ||||
|             } | ||||
|         } | ||||
|         if (mouse_mode == RED.state.IMPORT_DRAGGING) { | ||||
|             RED.keyboard.remove("escape"); | ||||
|             updateActiveNodes(); | ||||
|             RED.nodes.dirty(true); | ||||
|         } | ||||
| @@ -1786,6 +1785,9 @@ RED.view = (function() { | ||||
|     } | ||||
|  | ||||
|     function selectNone() { | ||||
|         if (mouse_mode === RED.state.MOVING || mouse_mode === RED.state.MOVING_ACTIVE) { | ||||
|             return; | ||||
|         } | ||||
|         if (mouse_mode === RED.state.IMPORT_DRAGGING) { | ||||
|             clearSelection(); | ||||
|             RED.history.pop(); | ||||
|   | ||||
| @@ -74,21 +74,21 @@ | ||||
|         <div id="func-tab-init" style="display:none"> | ||||
|             <div class="form-row node-text-editor-row" style="position:relative"> | ||||
|                 <div style="height: 250px; min-height:150px;" class="node-text-editor" id="node-input-init-editor" ></div> | ||||
|                 <div style="position: absolute; right:0; bottom: calc(100% - 20px);"><button id="node-init-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div> | ||||
|                 <div style="position: absolute; right:0; bottom: calc(100% - 20px); z-Index: 10;"><button id="node-init-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div> | ||||
|             </div> | ||||
|         </div> | ||||
|  | ||||
|         <div id="func-tab-body" style="display:none"> | ||||
|             <div class="form-row node-text-editor-row" style="position:relative"> | ||||
|                 <div style="height: 220px; min-height:150px;" class="node-text-editor" id="node-input-func-editor" ></div> | ||||
|                 <div style="position: absolute; right:0; bottom: calc(100% - 20px);"><button id="node-function-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div> | ||||
|                 <div style="position: absolute; right:0; bottom: calc(100% - 20px); z-Index: 10;"><button id="node-function-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div> | ||||
|             </div> | ||||
|         </div> | ||||
|  | ||||
|         <div id="func-tab-finalize" style="display:none"> | ||||
|             <div class="form-row node-text-editor-row" style="position:relative"> | ||||
|                 <div style="height: 250px; min-height:150px;" class="node-text-editor" id="node-input-finalize-editor" ></div> | ||||
|                 <div style="position: absolute; right:0; bottom: calc(100% - 20px);"><button id="node-finalize-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div> | ||||
|                 <div style="position: absolute; right:0; bottom: calc(100% - 20px); z-Index: 10;"><button id="node-finalize-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div> | ||||
|             </div> | ||||
|         </div> | ||||
|  | ||||
|   | ||||
| @@ -64,6 +64,27 @@ var server; | ||||
|  */ | ||||
| function init(userSettings,httpServer,_adminApi) { | ||||
|     server = httpServer; | ||||
|  | ||||
|     if (server && server.on) { | ||||
|         // Add a listener to the upgrade event so that we can properly timeout connection | ||||
|         // attempts that do not get handled by any nodes in the user's flow. | ||||
|         // See #2956 | ||||
|         server.on('upgrade',(request, socket, head) => { | ||||
|             // Add a no-op handler to the error event in case nothing upgrades this socket | ||||
|             // before the remote end closes it. This ensures we don't get as uncaughtException | ||||
|             socket.on("error", err => {}) | ||||
|             setTimeout(function() { | ||||
|                 // If this request has been handled elsewhere, the upgrade will have | ||||
|                 // been completed and bytes written back to the client. | ||||
|                 // If nothing has been written on the socket, nothing has handled the | ||||
|                 // upgrade, so we can consider this an unhandled upgrade. | ||||
|                 if (socket.bytesWritten === 0) { | ||||
|                     socket.destroy(); | ||||
|                 } | ||||
|             },userSettings.inboundWebSocketTimeout || 5000) | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     userSettings.version = getVersion(); | ||||
|     settings.init(userSettings); | ||||
|  | ||||
|   | ||||
| @@ -608,8 +608,15 @@ async function saveFlows(flows, user) { | ||||
|             var workflowMode = (gitSettings.workflow||{}).mode || settings.editorTheme.projects.workflow.mode; | ||||
|             if (workflowMode === 'auto') { | ||||
|                 return activeProject.stageFile([flowsFullPath, credentialsFile]).then(() => { | ||||
|                     return activeProject.commit(user,{message:"Update flow files"}) | ||||
|                 }) | ||||
|                     return activeProject.status(user, false).then((result) => { | ||||
|                         const items = Object.values(result.files || {}); | ||||
|                         // check if saved flow make modification to repository | ||||
|                         if (items.findIndex((item) => (item.status === "M ")) < 0) { | ||||
|                             return Promise.resolve(); | ||||
|                         } | ||||
|                         return activeProject.commit(user,{message:"Update flow files"}) | ||||
|                     }); | ||||
|                 }); | ||||
|             } | ||||
|         } | ||||
|     }); | ||||
|   | ||||
							
								
								
									
										6
									
								
								packages/node_modules/node-red/settings.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								packages/node_modules/node-red/settings.js
									
									
									
									
										vendored
									
									
								
							| @@ -46,6 +46,12 @@ module.exports = { | ||||
|     //  defaults to 10Mb | ||||
|     //execMaxBufferSize: 10000000, | ||||
|  | ||||
|     // Timeout in milliseconds for inbound WebSocket connections that do not | ||||
|     // match any configured node. | ||||
|     //  defaults to 5000 | ||||
|     //inboundWebSocketTimeout: 5000 | ||||
|  | ||||
|  | ||||
|     // The maximum length, in characters, of any message sent to the debug sidebar tab | ||||
|     debugMaxLength: 1000, | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user