Socket
Socket
Sign inDemoInstall

@node-red/runtime

Package Overview
Dependencies
Maintainers
2
Versions
109
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@node-red/runtime - npm Package Compare versions

Comparing version 0.20.5 to 1.0.0-beta.1

lib/library/examples.js

39

lib/api/library.js

@@ -32,2 +32,3 @@ /**

* @param {User} opts.user - the user calling the api
* @param {String} opts.library - the library
* @param {String} opts.type - the type of entry

@@ -40,8 +41,8 @@ * @param {String} opts.path - the path of the entry

return new Promise(function(resolve,reject) {
runtime.library.getEntry(opts.type,opts.path).then(function(result) {
runtime.log.audit({event: "library.get",type:opts.type,path:opts.path});
runtime.library.getEntry(opts.library,opts.type,opts.path).then(function(result) {
runtime.log.audit({event: "library.get",library:opts.library,type:opts.type,path:opts.path});
return resolve(result);
}).catch(function(err) {
if (err) {
runtime.log.warn(runtime.log._("api.library.error-load-entry",{path:opts.path,message:err.toString()}));
runtime.log.warn(runtime.log._("api.library.error-load-entry",{library:opts.library,type:opts.type,path:opts.path,message:err.toString()}));
if (err.code === 'forbidden') {

@@ -55,6 +56,6 @@ err.status = 403;

}
runtime.log.audit({event: "library.get",type:opts.type,path:opts.path,error:err.code});
runtime.log.audit({event: "library.get",library:opts.library,type:opts.type,path:opts.path,error:err.code});
return reject(err);
}
runtime.log.audit({event: "library.get",type:opts.type,error:"not_found"});
runtime.log.audit({event: "library.get",library:opts.library,type:opts.type,error:"not_found"});
var error = new Error();

@@ -72,2 +73,3 @@ error.code = "not_found";

* @param {User} opts.user - the user calling the api
* @param {String} opts.library - the library
* @param {String} opts.type - the type of entry

@@ -82,3 +84,3 @@ * @param {String} opts.path - the path of the entry

return new Promise(function(resolve,reject) {
runtime.library.saveEntry(opts.type,opts.path,opts.meta,opts.body).then(function() {
runtime.library.saveEntry(opts.library,opts.type,opts.path,opts.meta,opts.body).then(function() {
runtime.log.audit({event: "library.set",type:opts.type,path:opts.path});

@@ -99,28 +101,3 @@ return resolve();

})
},
/**
* Returns a complete listing of all entries of a given type in the library.
* @param {Object} opts
* @param {User} opts.user - the user calling the api
* @param {String} opts.type - the type of entry
* @return {Promise<Object>} - the entry listing
* @memberof @node-red/runtime_library
*/
getEntries: function(opts) {
return new Promise(function(resolve,reject) {
if (opts.type !== 'flows') {
return reject(new Error("API only supports flows"));
}
runtime.storage.getAllFlows().then(function(flows) {
runtime.log.audit({event: "library.get.all",type:"flow"});
var examples = runtime.nodes.getNodeExampleFlows();
if (examples) {
flows.d = flows.d||{};
flows.d._examples_ = examples;
}
return resolve(flows);
});
})
}
}

@@ -49,3 +49,3 @@ /*!

auth: {
needsPermission: function() {}
needsPermission: function() {return function(req,res,next) {next()}}
},

@@ -52,0 +52,0 @@ adminApp: stubbedExpressApp,

@@ -17,14 +17,18 @@ /**

var fs = require('fs');
var fspath = require('path');
var runtime;
var knownTypes = {};
var storage;
var libraries = {};
function init(_runtime) {
runtime = _runtime;
storage = runtime.storage;
knownTypes = {};
function init(runtime) {
knownTypes = {
'flows': 'node-red'
};
libraries["_examples_"] = require("./examples");
libraries["_examples_"].init(runtime);
libraries["local"] = require("./local");
libraries["local"].init(runtime);
}

@@ -41,55 +45,24 @@

// function getAllEntries(type) {
// if (!knownTypes.hasOwnProperty(type)) {
// throw new Error(`Unknown library type '${type}'`);
// }
// }
function getEntry(type,path) {
if (type !== 'flows') {
if (!knownTypes.hasOwnProperty(type)) {
throw new Error(`Unknown library type '${type}'`);
}
return storage.getLibraryEntry(type,path);
function getEntry(library,type,path) {
if (!knownTypes.hasOwnProperty(type)) {
throw new Error(`Unknown library type '${type}'`);
}
if (libraries.hasOwnProperty(library)) {
return libraries[library].getEntry(type,path);
} else {
return new Promise(function(resolve,reject) {
if (path.indexOf("_examples_/") === 0) {
var m = /^_examples_\/(@.*?\/[^\/]+|[^\/]+)\/(.*)$/.exec(path);
if (m) {
var module = m[1];
var entryPath = m[2];
var fullPath = runtime.nodes.getNodeExampleFlowPath(module,entryPath);
if (fullPath) {
try {
fs.readFile(fullPath,'utf8',function(err, data) {
runtime.log.audit({event: "library.get",type:"flow",path:path});
if (err) {
return reject(err);
}
return resolve(data);
})
} catch(err) {
return reject(err);
}
return;
}
}
// IF we get here, we didn't find the file
var error = new Error("not_found");
error.code = "not_found";
return reject(error);
} else {
resolve(storage.getFlow(path));
}
});
throw new Error(`Unknown library '${library}'`);
}
}
function saveEntry(type,path,meta,body) {
if (type !== 'flows') {
if (!knownTypes.hasOwnProperty(type)) {
throw new Error(`Unknown library type '${type}'`);
function saveEntry(library,type,path,meta,body) {
if (!knownTypes.hasOwnProperty(type)) {
throw new Error(`Unknown library type '${type}'`);
}
if (libraries.hasOwnProperty(library)) {
if (libraries[library].hasOwnProperty("saveEntry")) {
return libraries[library].saveEntry(type,path,meta,body);
} else {
throw new Error(`Library '${library}' is read-only`);
}
return storage.saveLibraryEntry(type,path,meta,body);
} else {
return storage.saveFlow(path,body);
throw new Error(`Unknown library '${library}'`);
}

@@ -101,3 +74,2 @@ }

register: registerType,
// getAllEntries: getAllEntries,
getEntry: getEntry,

@@ -104,0 +76,0 @@ saveEntry: saveEntry

@@ -309,4 +309,7 @@ /**

* status: { fill:"red|green", shape:"dot|ring", text:"blah" }
* or
* status: "simple text status"
*/
Node.prototype.status = function(status) {
if (typeof(status) === "string") { status = {text:status}; }
this._flow.handleStatus(this,status);

@@ -313,0 +316,0 @@ };

@@ -69,16 +69,17 @@ /**

var thisRead = fs.readSync(fd,buffer,0,length);
read += thisRead;
if (scanning) {
var data = remaining+buffer.slice(0,thisRead).toString();
read += thisRead;
var parts = data.split("\n");
remaining = parts.splice(-1)[0];
if (read < size) {
remaining = parts.splice(-1)[0];
} else {
remaining = "";
}
for (var i=0;i<parts.length;i+=1) {
if (! /^\/\/ \w+: /.test(parts[i])) {
scanning = false;
body += parts[i]+"\n";
body += (body.length > 0?"\n":"")+parts[i];
}
}
if (! /^\/\/ \w+: /.test(remaining)) {
scanning = false;
}
if (!scanning) {

@@ -85,0 +86,0 @@ body += remaining;

@@ -12,3 +12,3 @@ {

"server" : {
"loading" : "Palettenknoten werden geladen",
"loading" : "Paletten-Nodes werden geladen",
"palette-editor" : {

@@ -18,11 +18,11 @@ "disabled" : "Paletteneditor inaktiviert: Benutzereinstellungen",

},
"errors" : "Registrieren des Knotentyps __count__ ist fehlgeschlagen.",
"errors_plural" : "Fehler beim Registrieren von __count__ -Knotentypen",
"errors" : "Registrieren des Node-Typs __count__ ist fehlgeschlagen.",
"errors_plural" : "Fehler beim Registrieren von __count__ -Node-Typen",
"errors-help" : "Mit -v ausführen, um Details zu erfahren",
"missing-modules" : "Fehlende Knotenmodule:",
"node-version-mismatch" : "Das Knotenmodul kann in dieser Version nicht geladen werden. Erfordert: __version__ ",
"missing-modules" : "Fehlende Node-Module:",
"node-version-mismatch" : "Das Node-Modul kann in dieser Version nicht geladen werden. Erfordert: __version__ ",
"type-already-registered" : "'__type__' bereits von Modul __module__ registriert",
"removing-modules" : "Module aus der Konfiguration entfernen",
"added-types" : "Hinzugefügte Knotentypen:",
"removed-types" : "Entfernte Knotentypen:",
"added-types" : "Hinzugefügte Node-Typen:",
"removed-types" : "Entfernte Node-Typen:",
"install" : {

@@ -36,3 +36,3 @@ "invalid" : "Ungültiger Modulname",

"upgrading" : "Modul wird aktualisiert: __name__ auf Version: __version__",
"upgraded" : "Erweitertes Modul: __name__. Neustart von Knoten-RED für die Verwendung der neuen Version",
"upgraded" : "Erweitertes Modul: __name__. Neustart von Node-RED für die Verwendung der neuen Version",
"upgrade-failed-not-found" : "$t(server.install.install-failed-long) Version nicht gefunden",

@@ -65,5 +65,5 @@ "uninstalling" : "Modul wird deinstalliert: __name__",

"nodes" : {
"enabled" : "Aktivierte Knotentypen:",
"disabled" : "Inaktivierte Knotentypen:",
"error-enable" : "Der Knoten konnte nicht aktiviert werden:"
"enabled" : "Aktivierte Node-Typen:",
"disabled" : "Inaktivierte Node-Typen:",
"error-enable" : "Der Node konnte nicht aktiviert werden:"
}

@@ -86,3 +86,3 @@ },

"not-registered" : "Der Berechtigungsnachweistyp '__type__' ist nicht registriert.",
"system-key-warning" : "\n\n---------------------------------------------------------------------\nDie Datei mit den Datenflowberechtigungsnachweisen wird mit einem vom System generierten Schlüssel verschlüsselt.\n\nWenn der vom System generierte Schlüssel aus irgendeinem Grund verloren geht, werden Ihre Berechtigungsnachweise\nDie Datei kann nicht wiederhergestellt werden. Sie müssen sie löschen und erneut eingeben.\nIhre Berechtigungsnachweise.\n\nSie sollten Ihren eigenen Schlüssel mit Hilfe der Option 'credentialSecret' in\nIhre Einstellungsdatei. Node-RED wird dann Ihre Berechtigungsnachweise erneut verschlüsseln.\nDatei mit dem ausgewählten Schlüssel beim nächsten Implementieren einer Änderung verwenden.\n---------------------------------------------------------------------\n"
"system-key-warning" : "\n\n---------------------------------------------------------------------\nDie Datei mit den Datenflowberechtigungsnachweisen wird mit einem vom System generierten Schlüssel verschlüsselt.\n\nWenn der vom System generierte Schlüssel aus irgendeinem Grund verloren geht, werden Ihre Berechtigungsnachweise\nDie Datei kann nicht wiederhergestellt werden. Sie müssen sie löschen und erneut eingeben.\nIhre Berechtigungsnachweise.\n\nSie sollten Ihren eigenen Schlüssel mit Hilfe der Option 'credentialSecret' in\nIhre Einstellungsdatei. Node-RED wird dann Ihre Berechtigungsnachweise erneut verschlüsseln.\nDatei mit dem ausgewählten Schlüssel beim nächsten Deployen einer Änderung verwenden.\n---------------------------------------------------------------------\n"
},

@@ -92,16 +92,16 @@ "flows" : {

"error" : "Fehler beim Laden von Flows: __message__",
"starting-modified-nodes" : "Modifizierte Knoten werden gestartet",
"starting-modified-nodes" : "Modifizierte Nodes werden gestartet",
"starting-modified-flows" : "Modifizierte Flows werden gestartet",
"starting-flows" : "Flows starten",
"started-modified-nodes" : "Gestartete geänderte Knoten",
"started-modified-nodes" : "Gestartete geänderte Nodes",
"started-modified-flows" : "Gestartete geänderte Flows",
"started-flows" : "Flows gestartet",
"stopping-modified-nodes" : "Modifizierte Knoten werden gestoppt",
"stopping-modified-nodes" : "Modifizierte Nodes werden gestoppt",
"stopping-modified-flows" : "Modifizierte Flows werden gestoppt",
"stopping-flows" : "Flows stoppen",
"stopped-modified-nodes" : "Geänderte Knoten gestoppt",
"stopped-modified-nodes" : "Geänderte Nodes gestoppt",
"stopped-modified-flows" : "Geänderte Flows gestoppt",
"stopped-flows" : "Flows gestoppt",
"stopped" : "Gestoppt",
"stopping-error" : "Fehler beim Stoppen des Knotens: __message__",
"stopping-error" : "Fehler beim Stoppen des Nodes: __message__",
"added-flow" : "Flow hinzufügen: __label__",

@@ -108,0 +108,0 @@ "updated-flow" : "Aktualisierter Flow: __label__",

{
"name": "@node-red/runtime",
"version": "0.20.5",
"version": "1.0.0-beta.1",
"license": "Apache-2.0",

@@ -19,7 +19,7 @@ "main": "./lib/index.js",

"dependencies": {
"@node-red/registry": "0.20.5",
"@node-red/util": "0.20.5",
"@node-red/registry": "1.0.0-beta.1",
"@node-red/util": "1.0.0-beta.1",
"clone": "2.1.2",
"express": "4.16.4",
"fs-extra": "7.0.1",
"express": "4.17.0",
"fs-extra": "8.0.1",
"json-stringify-safe": "5.0.1",

@@ -26,0 +26,0 @@ "when": "3.7.8"

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc