Bump to 0.19.2 - add more options as examples

pull/8/head
Dave Conway-Jones 2018-08-25 22:31:44 +01:00
rodzic 44f02b969a
commit 8146a0a003
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 9E7F9C73F5168CD4
6 zmienionych plików z 425 dodań i 241 usunięć

Wyświetl plik

@ -2,7 +2,9 @@
This is an Electron template to embed Node-RED with a Dashboard generated by node-red-dashboard.
You can base off this model and update the package.json file to include your own required dependencies.
This is not intended to be a useful tool as-is, but as a base for you to create your own versions. You will need to edit the `main.js` to suit your application and update the `package.json` file to include your own required dependencies.
At the top of `main.js` are a couple of flags you can switch to turn off editing, allow loading of a different flow file (and save as), and adding the worldmap to the menu. Again these are only there to show you possibilities. Have fun.
## To Use

Wyświetl plik

@ -6,21 +6,26 @@
<title>Node-RED Console</title>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0, maximum-scale=1, minimum-scale=1">
</head>
<body style="margin:0;" >
<body style="margin:0;" onload="scrollDown()" >
<font style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif; font-size:9pt;">
<div id="header" style="background-color:#910000; position:fixed; height:16px; width:100%; padding:8px;"><input type="button" value="Clear Log" onclick="clearList()";/></div>
<div id="debug" style="padding:4px; padding-left:8px;"></div>
<div id="debug" style="padding:4px; padding-left:8px; padding-top:34px;"></div>
</font>
<script>
const logLength = 250;
const { ipcRenderer } = require('electron');
const ipc = require('electron').ipcRenderer;
var list = [];
var scrollDown = function() {
setTimeout( function() {
window.scrollTo(0,document.body.scrollHeight);
}, 50);
}
var clearList = function() {
list = [];
document.getElementById("debug").innerHTML = "";
ipc.send('clearLogBuffer', "clear");
}
ipc.on('logBuff', (event, data) => {
list = data;
document.getElementById("debug").innerHTML = list.join("<br/>");

File diff suppressed because one or more lines are too long

263
main.js
Wyświetl plik

@ -2,37 +2,38 @@
'use strict';
// Some settings you can edit easily
// Flows file name
const flowfile = 'electronflow.json';
// Start on the dashboard page
const urldash = "/ui/#/0";
// url for the editor page
const urledit = "/red";
// url for the console page
const urlconsole = "/console.htm";
// url for the worldmap page
const urlmap = "/worldmap";
const editable = true; // Set this to false to create a run only application - no editor/no console
const allowLoadSave = false; // set to true to allow omport and export of flow
const showMap = false; // set to true to add Worldmap to the menu
let flowfile = 'electronflow.json'; // default Flows file name - loaded at start
const urldash = "/ui/#/0"; // Start on the dashboard page
const urledit = "/red"; // url for the editor page
const urlconsole = "/console.htm"; // url for the console page
const urlmap = "/worldmap"; // url for the worldmap
// tcp port to use
//const listenPort = "18880"; // fix it just because
const listenPort = parseInt(Math.random()*16383+49152) // or random ephemeral port
//const listenPort = "18880"; // fix it if you like
const listenPort = parseInt(Math.random()*16383+49152) // or random ephemeral port
const os = require('os');
const fs = require('fs');
const url = require('url');
const path = require('path');
const http = require('http');
const express = require("express");
const electron = require('electron');
const app = electron.app;
const ipc = electron.ipcMain;
const dialog = electron.dialog;
const BrowserWindow = electron.BrowserWindow;
const {Menu, MenuItem} = electron;
// this should be placed at top of main.js to handle squirrel setup events quickly
if (handleSquirrelEvent()) { return; }
var http = require('http');
var express = require("express");
var RED = require("node-red");
// Create an Express app
var red_app = express();
// Add a simple route for static content served from 'public'
@ -42,22 +43,22 @@ red_app.use("/",express.static("web"));
// Create a server
var server = http.createServer(red_app);
var userdir;
if (process.argv[1] && (process.argv[1] === "main.js")) {
userdir = __dirname;
}
else { // We set the user directory to be in the users home directory...
const fs = require('fs');
userdir = os.homedir() + '/.node-red';
if (!fs.existsSync(userdir)) {
fs.mkdirSync(userdir);
var userdir = __dirname;
if (editable) {
if (process.argv[1] && (process.argv[1] === "main.js")) {
userdir = __dirname;
}
if (!fs.existsSync(userdir+"/"+flowfile)) {
fs.writeFileSync(userdir+"/"+flowfile, fs.readFileSync(__dirname+"/"+flowfile));
else { // We set the user directory to be in the users home directory...
userdir = os.homedir() + '/.node-red';
if (!fs.existsSync(userdir)) {
fs.mkdirSync(userdir);
}
if (!fs.existsSync(userdir+"/"+flowfile)) {
fs.writeFileSync(userdir+"/"+flowfile, fs.readFileSync(__dirname+"/"+flowfile));
}
}
}
console.log("Setting UserDir to ",userdir);
// console.log("DIR",__dirname);
console.log("UserDir :",userdir);
// console.log("PORT",listenPort);
// Keep a global reference of the window objects, if you don't, the window will
@ -67,13 +68,15 @@ let conWindow;
let logBuffer = [];
let logLength = 250;
ipc.on('clearLogBuffer', function(event, arg) { logBuffer = []; });
// Create the settings object - see default settings.js file for other options
var settings = {
httpAdminRoot: "/red",
httpAdminRoot: "/red", // set to false to disable editor/deploy
httpNodeRoot: "/",
userDir: userdir,
flowFile: flowfile,
editorTheme: { projects:{ enabled:true } },
editorTheme: { projects:{ enabled:false } },
functionGlobalContext: { }, // enables global context
logging: {
websock: {
@ -81,67 +84,83 @@ var settings = {
metrics: false,
handler: function() {
return function(msg) {
var ts = (new Date(msg.timestamp)).toISOString();
ts = ts.replace("Z"," ").replace("T"," ");
var line = ts+" : "+msg.msg;
logBuffer.push(line);
if (conWindow) { conWindow.webContents.send('debugMsg', line); }
if (logBuffer.length > logLength) { logBuffer.shift(); }
if (editable) { // No logging if not editable
var ts = (new Date(msg.timestamp)).toISOString();
ts = ts.replace("Z"," ").replace("T"," ");
var line = ts+" : "+msg.msg;
logBuffer.push(line);
if (conWindow) { conWindow.webContents.send('debugMsg', line); }
if (logBuffer.length > logLength) { logBuffer.shift(); }
}
}
}
}
}
};
if (!editable) {
settings.httpAdminRoot = false;
settings.readOnly = true;
}
// Initialise the runtime with a server and settings
RED.init(server,settings);
// Serve the editor UI from /red
red_app.use(settings.httpAdminRoot,RED.httpAdmin);
if (settings.httpAdminRoot !== false) {
red_app.use(settings.httpAdminRoot,RED.httpAdmin);
}
// Serve the http nodes UI from /
red_app.use(settings.httpNodeRoot,RED.httpNode);
// Create the Application's main menu
var template = [{
label: "Application",
var template = [
// {label: "Application",
// submenu: [
// { role: 'about' },
// { type: "separator" },
// { role: 'quit' }
// ]},
{ label: 'Node-RED',
submenu: [
{ role: 'about' },
{ type: "separator" },
{ role: 'quit' }
]}, {
label: 'Node-RED',
submenu: [
{ label: 'Console',
accelerator: "Shift+CmdOrCtrl+C",
click() { createConsole(); }
{ label: 'Import Flow',
click() { openFlow(); }
},
{ label: 'Dashboard',
accelerator: "Shift+CmdOrCtrl+D",
click() { mainWindow.loadURL("http://localhost:"+listenPort+urldash); }
{ label: 'Save Flow As',
click() { saveFlow(); }
},
{ label: 'Editor',
accelerator: "Shift+CmdOrCtrl+E",
click() { mainWindow.loadURL("http://localhost:"+listenPort+urledit); }
{ type: 'separator' },
{ label: 'Console',
accelerator: "Shift+CmdOrCtrl+C",
click() { createConsole(); }
},
{ label: 'Worldmap',
accelerator: "Shift+CmdOrCtrl+M",
click() { mainWindow.loadURL("http://localhost:"+listenPort+urlmap); }
{ label: 'Dashboard',
accelerator: "Shift+CmdOrCtrl+D",
click() { mainWindow.loadURL("http://localhost:"+listenPort+urldash); }
},
{ type: 'separator' },
{ label: 'Documentation',
click() { electron.shell.openExternal('https://nodered.org/docs') }
{ label: 'Editor',
accelerator: "Shift+CmdOrCtrl+E",
click() { mainWindow.loadURL("http://localhost:"+listenPort+urledit); }
},
{ label: 'Flows and Nodes',
click() { electron.shell.openExternal('https://flows.nodered.org') }
{ label: 'Worldmap',
accelerator: "Shift+CmdOrCtrl+M",
click() { mainWindow.loadURL("http://localhost:"+listenPort+urlmap); }
},
{ label: 'Discourse Forum',
click() { electron.shell.openExternal('https://discourse.nodered.org/') }
{ type: 'separator' },
{ label: 'Documentation',
click() { electron.shell.openExternal('https://nodered.org/docs') }
},
{ type: "separator" },
{ role: 'quit' }
]}, {
// label: "Edit",
{ label: 'Flows and Nodes',
click() { electron.shell.openExternal('https://flows.nodered.org') }
},
{ label: 'Discourse Forum',
click() { electron.shell.openExternal('https://discourse.nodered.org/') }
},
{ type: "separator" },
{ role: 'togglefullscreen' },
{ role: 'quit' }
]}
// ,{label: "Edit",
// submenu: [
// { label: "Undo", accelerator: "CmdOrCtrl+Z", selector: "undo:" },
// { label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" },
@ -150,38 +169,76 @@ var template = [{
// { label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" },
// { label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" },
// { label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:" }
// ]}, {
label: 'View',
submenu: [
{ label: 'Reload',
accelerator: 'CmdOrCtrl+R',
click(item, focusedWindow) { if (focusedWindow) { focusedWindow.reload(); }}
},
{ label: 'Toggle Developer Tools',
accelerator: process.platform === 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I',
click(item, focusedWindow) { if (focusedWindow) { focusedWindow.webContents.toggleDevTools(); }}
},
{ type: 'separator' },
{ role: 'resetzoom' },
{ role: 'zoomin' },
{ role: 'zoomout' },
{ type: 'separator' },
{ role: 'togglefullscreen' },
{ role: 'minimize' }
]}
// ]}
// ,{ label: 'View',
// submenu: [
// { label: 'Reload',
// accelerator: 'CmdOrCtrl+R',
// click(item, focusedWindow) { if (focusedWindow) { focusedWindow.reload(); }}
// },
// { label: 'Toggle Developer Tools',
// accelerator: process.platform === 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I',
// click(item, focusedWindow) { if (focusedWindow) { focusedWindow.webContents.toggleDevTools(); }}
// },
// { type: 'separator' },
// { role: 'resetzoom' },
// { role: 'zoomin' },
// { role: 'zoomout' },
// { type: 'separator' },
// { role: 'togglefullscreen' },
// { role: 'minimize' }
// ]}
];
// function openFlow() {
// dialog.showOpenDialog(function (fileNames) {
// if (fileNames === undefined) {
// console.log("No file selected");
// }
// else {
// console.log(fileNames[0]);
// //readFile(fileNames[0]);
// }
// });
// }
if (!showMap) { template[0].submenu.splice(6,1); }
if (!editable) {
template[0].submenu.splice(3,1);
template[0].submenu.splice(4,1);
}
if (!allowLoadSave) { template[0].submenu.splice(0,2); }
let fileName = ""
function saveFlow() {
dialog.showSaveDialog({
filters:[{ name:'JSON', extensions:['json'] }],
defaultPath: fileName
}, function(file_path) {
if (file_path) {
var flo = JSON.stringify(RED.nodes.getFlows());
fs.writeFile(file_path, flo, function(err) {
if (err) { dialog.showErrorBox('Error', err); }
else { dialog.showErrorBox('OK', "Flow file saved as\n\n"+file_path); }
});
}
});
}
function openFlow() {
dialog.showOpenDialog({ filters:[{ name:'JSON', extensions:['json']} ]},
function (fileNames) {
if (fileNames) {
//console.log(fileNames[0]);
fs.readFile(fileNames[0], 'utf-8', function (err, data) {
try {
var flo = JSON.parse(data);
if (Array.isArray(flo) && (flo.length > 0)) {
RED.nodes.setFlows(flo,"full");
fileName = fileNames[0];
}
else {
dialog.showErrorBox("Error", "Failed to parse flow file.\n\n "+fileNames[0]+".\n\nAre you sure it's a flow file ?");
}
}
catch(e) {
dialog.showErrorBox("Error", "Failed to load flow file.\n\n "+fileNames[0]);
}
});
}
}
)
}
// Create the console log window
function createConsole() {
@ -193,7 +250,6 @@ function createConsole() {
height: 600,
icon: path.join(__dirname, 'nodered.png')
});
//conWindow.loadURL("http://localhost:"+listenPort+urlconsole);
conWindow.loadURL(url.format({
pathname: path.join(__dirname, 'console.htm'),
protocol: 'file:',
@ -250,7 +306,10 @@ function createWindow() {
mainWindow = null;
});
// Open the DevTools.
// Start the app full screen
//mainWindow.setFullScreen(true)
// Open the DevTools at start
//mainWindow.webContents.openDevTools();
}
@ -273,7 +332,7 @@ app.on('activate', function() {
}
});
// Start the Node-RED runtime, then load the inital page
// Start the Node-RED runtime, then load the inital dashboard page
RED.start().then(function() {
server.listen(listenPort,"127.0.0.1",function() {
mainWindow.loadURL("http://127.0.0.1:"+listenPort+urldash);

376
package-lock.json wygenerowano
Wyświetl plik

@ -1,13 +1,13 @@
{
"name": "electron_node_red",
"version": "0.19.1",
"version": "0.19.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@types/node": {
"version": "8.10.26",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.26.tgz",
"integrity": "sha512-opk6bLLErLSwyVVJeSH5Ek7ZWOBSsN0JrvXTNVGLXLAXKB9xlTYajrplR44xVyMrmbut94H6uJ9jqzM/12jxkA==",
"version": "8.10.27",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.27.tgz",
"integrity": "sha512-MNRS6EyHl3XbqoJfog2atvSq6nYBFbyQYcw3v6H9AURtA0NYr28Zo/pB2NQ48zev4/KqLkyYTpY8AZZhOg/X7g==",
"dev": true
},
"abbrev": {
@ -1042,8 +1042,7 @@
"commander": {
"version": "2.17.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
"integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
"dev": true
"integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
},
"commist": {
"version": "1.0.0",
@ -1203,6 +1202,14 @@
"array-find-index": "^1.0.1"
}
},
"d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"requires": {
"es5-ext": "^0.10.9"
}
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@ -1409,9 +1416,9 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/electron/-/electron-2.0.7.tgz",
"integrity": "sha512-MRrDE6mrp+ZrIBpZM27pxbO2yEDKYfkmc6Ll79BtedMNEZsY4+oblupeDJL6RM6meUIp82KMo63W7fP65Tb89Q==",
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/electron/-/electron-2.0.8.tgz",
"integrity": "sha512-pbeGFbwijb5V3Xy/KMcwIp59eA9igg2br+7EHbbwQoa3HRDF5JjTrciX7OiscCA52+ze2n4q38S4lXPqRitgIA==",
"dev": true,
"requires": {
"@types/node": "^8.0.24",
@ -1436,28 +1443,6 @@
"sumchecker": "^1.2.0"
},
"dependencies": {
"fs-extra": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
"integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^2.1.0",
"klaw": "^1.0.0",
"path-is-absolute": "^1.0.0",
"rimraf": "^2.2.8"
}
},
"jsonfile": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
@ -1671,12 +1656,66 @@
"is-arrayish": "^0.2.1"
}
},
"es5-ext": {
"version": "0.10.46",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz",
"integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
"next-tick": "1"
}
},
"es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"requires": {
"d": "1",
"es5-ext": "^0.10.35",
"es6-symbol": "^3.1.1"
}
},
"es6-map": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
"integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14",
"es6-iterator": "~2.0.1",
"es6-set": "~0.1.5",
"es6-symbol": "~3.1.1",
"event-emitter": "~0.3.5"
}
},
"es6-promise": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
"integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
"dev": true
},
"es6-set": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
"integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14",
"es6-iterator": "~2.0.1",
"es6-symbol": "3.1.1",
"event-emitter": "~0.3.5"
}
},
"es6-symbol": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
"integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@ -1697,6 +1736,15 @@
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
"event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"express": {
"version": "4.16.3",
"resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
@ -1865,13 +1913,16 @@
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"fs-extra": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
"integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==",
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
"integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
"jsonfile": "^2.1.0",
"klaw": "^1.0.0",
"path-is-absolute": "^1.0.0",
"rimraf": "^2.2.8"
}
},
"fs.notify": {
@ -2066,6 +2117,22 @@
"glob-stream": "^6.1.0",
"through2": "^2.0.1",
"xtend": "^4.0.0"
},
"dependencies": {
"through2": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"requires": {
"readable-stream": "^2.1.5",
"xtend": "~4.0.1"
}
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
}
}
},
"hoek": {
@ -2362,9 +2429,10 @@
"integrity": "sha512-F/p92UWYUn+kD3SE898jjlz1mkBzjtok9ZTtWT6+axS4Z2Wtc8p/md6xHkyCGWPdIEJBTSw0mlvKE+s+fAVSjg=="
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
@ -2769,13 +2837,14 @@
}
},
"mqtt": {
"version": "2.18.3",
"resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.3.tgz",
"integrity": "sha512-BXCUugFgA6FOWJGxhvUWtVLOdt6hYTmiMGPksEyKuuF1FQ0ji7UJBJ/0kVRMUtUWCAtPGnt4mZZZgJpzNLcuQg==",
"version": "2.18.5",
"resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.5.tgz",
"integrity": "sha512-VkQeH81VIS0nOL3Ilf58ypPtM3I6VzVsE5as+k/AgrnX7xjcrCSfgSJdYGa6rW3px4DLAnh2gCD3URUZ23riKQ==",
"requires": {
"commist": "^1.0.0",
"concat-stream": "^1.6.2",
"end-of-stream": "^1.4.1",
"es6-map": "^0.1.5",
"help-me": "^1.0.1",
"inherits": "^2.0.3",
"minimist": "^1.2.0",
@ -2792,6 +2861,11 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
}
}
},
@ -2835,6 +2909,11 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
"integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I="
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
}
}
},
@ -2863,6 +2942,11 @@
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
},
"next-tick": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node-abi": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.1.tgz",
@ -2911,11 +2995,11 @@
}
},
"node-red": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/node-red/-/node-red-0.19.1.tgz",
"integrity": "sha512-GYUSFCZ27DI9BPvT0nfmnkQhKBECshWPpSjXxZAiXIN39Kq9oScashDKCNB4vjSIwcJE8cmILtg6ZMLwtc4o0g==",
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/node-red/-/node-red-0.19.2.tgz",
"integrity": "sha512-788MCJSRjfYhsGsuRDlWL3Q1E2LheTPjnXzvIdX5/94buaczJifGdoqi2lNxQuCjHXPUvWVTeZCF0ot0igdz7Q==",
"requires": {
"ajv": "6.5.2",
"ajv": "6.5.3",
"basic-auth": "2.0.0",
"bcrypt": "~2.0.0",
"bcryptjs": "2.4.3",
@ -2939,7 +3023,7 @@
"jsonata": "1.5.4",
"media-typer": "0.3.0",
"memorystore": "1.6.0",
"mqtt": "2.18.3",
"mqtt": "2.18.5",
"multer": "1.3.1",
"mustache": "2.3.1",
"node-red-node-email": "0.1.*",
@ -2954,23 +3038,23 @@
"passport-oauth2-client-password": "0.1.2",
"raw-body": "2.3.3",
"request": "2.88.0",
"semver": "5.5.0",
"semver": "5.5.1",
"sentiment": "2.1.0",
"uglify-js": "3.4.7",
"uglify-js": "3.4.8",
"when": "3.7.8",
"ws": "1.1.5",
"xml2js": "0.4.19"
},
"dependencies": {
"ajv": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz",
"integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==",
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
"integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.1"
"uri-js": "^4.2.2"
}
},
"aws4": {
@ -3005,6 +3089,16 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"fs-extra": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
"integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==",
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
},
"har-validator": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
@ -3050,6 +3144,14 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"requires": {
"graceful-fs": "^4.1.6"
}
},
"mime-db": {
"version": "1.35.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
@ -3117,9 +3219,9 @@
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"semver": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
"integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
"version": "5.5.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
"integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw=="
},
"tough-cookie": {
"version": "2.4.3",
@ -3143,9 +3245,9 @@
"integrity": "sha512-/IgV7Skw3NBXNJ2KFqE6wzLJtPrfqBy9nKka0fCofA26eG0RXv0vjS1IpYa3QgQZD9YFMVIcbC0a9HlFK/wY+Q=="
},
"node-red-contrib-web-worldmap": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/node-red-contrib-web-worldmap/-/node-red-contrib-web-worldmap-1.3.5.tgz",
"integrity": "sha512-2G0KFmHUOyX+A8z0kpzZ0Csbt/xmUvxebNrFF/wmljOJfni8NwbGacW0RD8ACP6r4q5RhqkDBP3Aqvd04qDfmg==",
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/node-red-contrib-web-worldmap/-/node-red-contrib-web-worldmap-1.3.6.tgz",
"integrity": "sha512-PefS1QK/wDLIFrCER/vcN4oCm20xt1dOqyvnp8e/RVsAizfidZMkcORYFKnw1OsbxncacoRkMOh8a1jUvItfGQ==",
"requires": {
"cgi": "0.3.1",
"express": "^4.16.3",
@ -3153,9 +3255,9 @@
}
},
"node-red-dashboard": {
"version": "2.9.6",
"resolved": "https://registry.npmjs.org/node-red-dashboard/-/node-red-dashboard-2.9.6.tgz",
"integrity": "sha512-d4NIk2oDnOQ3rKB3juE1RX5oDLEOUHdU14yrEBo7sehkcH8Cjb3RcXZ+ZYjuBuETkavFQI8nKJIwLWJ3SsZZSg==",
"version": "2.9.7",
"resolved": "https://registry.npmjs.org/node-red-dashboard/-/node-red-dashboard-2.9.7.tgz",
"integrity": "sha512-/F/DSBrFWfPB+6o7ZkvKgs0+ikIli3W83gQKhUjvR9vS3cOZXoSEY44JWVsH6LRhUq5ckAJhd+xRhgp6+1uQcw==",
"requires": {
"serve-static": "~1.13.2",
"socket.io": "^2.1.1"
@ -3711,51 +3813,6 @@
"requires": {
"speedometer": "~0.1.2",
"through2": "~0.2.3"
},
"dependencies": {
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
"dev": true
},
"readable-stream": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
"isarray": "0.0.1",
"string_decoder": "~0.10.x"
}
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
"dev": true
},
"through2": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
"integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
"dev": true,
"requires": {
"readable-stream": "~1.1.9",
"xtend": "~2.1.1"
}
},
"xtend": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
"integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
"dev": true,
"requires": {
"object-keys": "~0.4.0"
}
}
}
},
"proxy-addr": {
@ -4274,6 +4331,22 @@
"integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
"requires": {
"through2": "^2.0.2"
},
"dependencies": {
"through2": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"requires": {
"readable-stream": "^2.1.5",
"xtend": "~4.0.1"
}
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
}
}
},
"sprintf-js": {
@ -4336,9 +4409,9 @@
}
},
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
"integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA=="
},
"strip-ansi": {
"version": "3.0.1",
@ -4434,12 +4507,39 @@
"dev": true
},
"through2": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
"integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
"dev": true,
"requires": {
"readable-stream": "^2.1.5",
"xtend": "~4.0.1"
"readable-stream": "~1.1.9",
"xtend": "~2.1.1"
},
"dependencies": {
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
"dev": true
},
"readable-stream": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
"isarray": "0.0.1",
"string_decoder": "~0.10.x"
}
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
"dev": true
}
}
},
"through2-filter": {
@ -4449,6 +4549,22 @@
"requires": {
"through2": "~2.0.0",
"xtend": "~4.0.0"
},
"dependencies": {
"through2": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"requires": {
"readable-stream": "^2.1.5",
"xtend": "~4.0.1"
}
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
}
}
},
"to-absolute-glob": {
@ -4542,19 +4658,12 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"uglify-js": {
"version": "3.4.7",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.7.tgz",
"integrity": "sha512-J0M2i1mQA+ze3EdN9SBi751DNdAXmeFLfJrd/MDIkRc3G3Gbb9OPVSx7GIQvVwfWxQARcYV2DTxIkMyDAk3o9Q==",
"version": "3.4.8",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.8.tgz",
"integrity": "sha512-WatYTD84gP/867bELqI2F/2xC9PQBETn/L+7RGq9MQOA/7yFBNvY1UwXqvtILeE6n0ITwBXxp34M0/o70dzj6A==",
"requires": {
"commander": "~2.16.0",
"commander": "~2.17.1",
"source-map": "~0.6.1"
},
"dependencies": {
"commander": {
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz",
"integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew=="
}
}
},
"uid-safe": {
@ -4714,6 +4823,11 @@
"safe-buffer": "~5.1.0",
"ultron": "~1.1.0"
}
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
}
}
},
@ -4802,9 +4916,13 @@
"integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
"integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
"dev": true,
"requires": {
"object-keys": "~0.4.0"
}
},
"y18n": {
"version": "3.2.1",

Wyświetl plik

@ -1,6 +1,6 @@
{
"name": "electron_node_red",
"version": "0.19.1",
"version": "0.19.2",
"description": "Electron Node-RED application starter",
"main": "main.js",
"scripts": {
@ -29,10 +29,10 @@
},
"dependencies": {
"express": "^4.15.3",
"node-red": "~0.19.1",
"node-red": "~0.19.2",
"node-red-contrib-play-audio": "~2.3.2",
"node-red-contrib-web-worldmap": "^1.3.5",
"node-red-dashboard": "~2.9.6",
"node-red-contrib-web-worldmap": "~1.3.6",
"node-red-dashboard": "~2.9.7",
"node-red-node-base64": "*",
"node-red-node-geofence": "*",
"node-red-node-random": "*",
@ -57,7 +57,7 @@
},
"homepage": "https://github.com/dceejay/electron-node-red#readme",
"devDependencies": {
"electron": "~2.0.7",
"electron": "~2.0.8",
"electron-rebuild": "~1.7.3",
"electron-squirrel-startup": "*",
"electron-winstaller": "2.5.2"