@gregoriusrippenstein/node-red-contrib-introspection 0.6.5 → 0.6.6
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.
- package/nodes/60-client-code.js +33 -3
- package/package.json +3 -2
- package/plugins/sidebar.html +1 -1
package/nodes/60-client-code.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
module.exports = function(RED) {
|
|
2
|
-
let UglifyJS = require('uglify-js')
|
|
2
|
+
let UglifyJS = require('uglify-js');
|
|
3
|
+
let CleanCSS = require('clean-css');
|
|
3
4
|
|
|
4
5
|
function ClientCodeFunctionality(config) {
|
|
5
6
|
RED.nodes.createNode(this,config);
|
|
@@ -78,9 +79,36 @@ module.exports = function(RED) {
|
|
|
78
79
|
if (req.body ) {
|
|
79
80
|
req.body.nodes.forEach( n => {
|
|
80
81
|
|
|
82
|
+
if ( n.format == "css") {
|
|
83
|
+
let output = new CleanCSS(req.body.csscfg).minify(n.template);
|
|
84
|
+
if ( output.styles && (output.errors || []).length == 0 ) {
|
|
85
|
+
n.template = output.styles
|
|
86
|
+
} else {
|
|
87
|
+
n._error = output.errors
|
|
88
|
+
n._cssoutput = output
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (n.format == "json") {
|
|
93
|
+
let result = {}
|
|
94
|
+
try {
|
|
95
|
+
result.code = JSON.stringify(JSON.parse(n.template))
|
|
96
|
+
} catch (ex) {
|
|
97
|
+
result.error = ex
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (result.code && !result.error) {
|
|
101
|
+
n.template = result.code
|
|
102
|
+
} else {
|
|
103
|
+
n._error = result.error
|
|
104
|
+
n._code = result.code
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
81
108
|
if ( n.format == "javascript") {
|
|
82
109
|
/* this handles PkgFile nodes and template nodes */
|
|
83
|
-
let result = UglifyJS.minify(n.template, req.body.
|
|
110
|
+
let result = UglifyJS.minify(n.template, req.body.jscfg)
|
|
111
|
+
|
|
84
112
|
if ( result.code && !result.error) {
|
|
85
113
|
n.template = result.code
|
|
86
114
|
} else {
|
|
@@ -90,7 +118,8 @@ module.exports = function(RED) {
|
|
|
90
118
|
}
|
|
91
119
|
|
|
92
120
|
if (n.type == "function") {
|
|
93
|
-
let result = UglifyJS.minify(n.func, req.body.
|
|
121
|
+
let result = UglifyJS.minify(n.func, req.body.jscfg)
|
|
122
|
+
|
|
94
123
|
if (result.code && !result.error) {
|
|
95
124
|
n.func = result.code
|
|
96
125
|
} else {
|
|
@@ -98,6 +127,7 @@ module.exports = function(RED) {
|
|
|
98
127
|
n._code = result.code
|
|
99
128
|
}
|
|
100
129
|
}
|
|
130
|
+
|
|
101
131
|
})
|
|
102
132
|
res.status(200).send(req.body.nodes);
|
|
103
133
|
} else {
|
package/package.json
CHANGED
package/plugins/sidebar.html
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
(function() {
|
|
3
3
|
var globalRefToSvgData;
|
|
4
4
|
|
|
5
|
-
let obfuscateHelpers={getFlowDataFromCurrentWorkspace:e=>{var e=e||RED.workspaces.active(),r=RED.nodes.groups(e),e=(r=(r=r.concat(RED.nodes.junctions(e))).concat(RED.nodes.filterNodes({z:e})),RED.nodes.eachConfig(function(e){e.z===RED.workspaces.active()&&!1===e._def.hasUsers&&r.push(e)}),RED.nodes.workspace(e)||RED.nodes.subflow(e));return r.unshift(e),RED.nodes.createExportableNodeSet(r)},openImportDialog:e=>{RED.clipboard.import();let r=e;setTimeout(()=>{$("#red-ui-clipboard-dialog-import-text").val(JSON.stringify(r)).trigger("paste")},300)}};function obfuscatieCurrentFlow(r){let l=obfuscateHelpers.getFlowDataFromCurrentWorkspace(),
|
|
5
|
+
let obfuscateHelpers={getFlowDataFromCurrentWorkspace:e=>{var e=e||RED.workspaces.active(),r=RED.nodes.groups(e),e=(r=(r=r.concat(RED.nodes.junctions(e))).concat(RED.nodes.filterNodes({z:e})),RED.nodes.eachConfig(function(e){e.z===RED.workspaces.active()&&!1===e._def.hasUsers&&r.push(e)}),RED.nodes.workspace(e)||RED.nodes.subflow(e));return r.unshift(e),RED.nodes.createExportableNodeSet(r)},openImportDialog:e=>{RED.clipboard.import();let r=e;setTimeout(()=>{$("#red-ui-clipboard-dialog-import-text").val(JSON.stringify(r)).trigger("paste")},300)}};function obfuscatieCurrentFlow(r){let l=obfuscateHelpers.getFlowDataFromCurrentWorkspace(),c=(r.remove_groups&&(l=l.filter(e=>"group"!=e.type)).forEach(e=>{delete e.g}),{}),o={},u={},d={},i=[],s={};if(l.forEach(e=>{"subflow"==(c[e.id]=e).type&&(s[e.id]=e),"junction"==e.type&&(o[e.id]=e),"link out"==e.type&&(d[e.id]=e),"link in"==e.type&&(u[e.id]=e),"link call"==e.type&&i.push(e.id)}),r.remove_junctions&&(Object.keys(o).forEach(t=>{let i=o[t];s[i.z]||l.forEach(r=>{for(let e=0;e<(r.wires||[]).length;e++){var o=r.wires[e].indexOf(t);-1<o&&(r.wires[e].splice(o,1),r.wires[e].push(...i.wires[0]))}})}),l=l.filter(e=>!("junction"==e.type&&!s[e.z]))),r.remove_linkout_nodes||r.remove_linkcall_nodes){let t=[],o=[],s=[],a=(r.remove_linkout_nodes&&!r.copy_linkin_nodes&&Object.keys(d).forEach(i=>{var e=d[i],r=e.links||[];r.reduce((e,r)=>e&&!!u[r],!0)&&"return"!=e.mode&&(t.push(i),r.forEach(t=>{l.forEach(r=>{for(let e=0;e<(r.wires||[]).length;e++){var o=r.wires[e].indexOf(i);-1<o&&(r.wires[e].splice(o,1),r.wires[e].push(...u[t].wires[0]))}})}))}),(i,e)=>{if(!e)return!1;let r=[],n=[],o=[];function s(e){if(o.indexOf(e.id)<0)if(o.push(e.id),r.push(e),"link out"===e.type){if("return"!=e.mode)throw"not handable"}else RED.nodes.getNodeLinks(e).forEach(function(e){s(e.target)})}try{if(RED.nodes.getNodeLinks(e).forEach(function(e){s(e.target),n.push(e.target.id)}),0==r.length)return!1;let o={};var a=r[0];let t={x:i.x-a.x,y:i.y-a.y};var l=r.map(e=>{var r=structuredClone(c[e.id]);return r||console.log("WARNING: nodeid not found",[e.id,c[e.id]]),r.id=RED.nodes.id(),r.x+=t.x,r.y+=t.y,o[e.id]=r});return l.forEach(e=>{e.wires&&(e.wires=e.wires.map(e=>e.map(e=>{var r=o[e];return r&&"link out"==r.type?[...i.wires[0],(r||{}).id||e]:(r||{}).id||e}).flat()))}),{nodes:l.filter(e=>"link out"!=e.type),entryNodes:n.map(e=>o[e])}}catch(e){return console.log(e),!1}});r.remove_linkout_nodes&&r.copy_linkin_nodes&&Object.keys(d).forEach(n=>{let o=d[n];var e=o.links||[];"return"!=o.mode&&(e=e.map(e=>{var r=u[e],r=a(o,r);if(r)return[e,r]})).reduce((e,r)=>e&&!!r,!0)&&(t.push(n),e.forEach(([,i])=>{l.forEach(r=>{for(let e=0;e<(r.wires||[]).length;e++){var o,t=r.wires[e].indexOf(n);-1<t&&(o=i.entryNodes.map(e=>e.id),r.wires[e].splice(t,1),r.wires[e].push(...o),s.push(...i.nodes))}})}))}),r.remove_linkcall_nodes&&i.forEach(i=>{var e=c[i],r=u[e.links[0]];let n=a(e,r);r&&n&&(o.push(e.id),l.forEach(r=>{for(let e=0;e<(r.wires||[]).length;e++){var o,t=r.wires[e].indexOf(i);-1<t&&(o=n.entryNodes.map(e=>e.id),r.wires[e].splice(t,1),r.wires[e].push(...o),s.push(...n.nodes))}}))}),(l=l.filter(e=>t.indexOf(e.id)<0&&o.indexOf(e.id)<0)).push(...s)}if((l=r.remove_debugs?l.filter(e=>"debug"!=e.type):l).forEach(e=>{r.name&&(e.name=e.id),r.info&&(e.info="",delete e.outputLabels,delete e.inputLabels),r.position&&(e.x=150,e.y=150),r.remove_icons&&delete e.icon}),r.javascript){let o={},r=[];l.forEach(e=>{"javascript"!=(o[e.id]=e).format&&"function"!=e.type&&"css"!=e.format&&"json"!=e.format||r.push(e)});var e={parse:{bare_returns:!0,expression:!1},compress:{},mangle:{reserved:["$","export","require"]},output:null,sourceMap:null,nameCache:null,toplevel:!1,warnings:!1},t={compatibility:"*",level:2};$.ajax({url:"ClientCode/"+RED.nodes.id()+"/ugify",type:"POST",contentType:"application/json; charset=utf-8",data:JSON.stringify({nodes:r,jscfg:e,csscfg:t}),success:function(e){e.forEach(e=>{var r=o[e.id];e._error&&console.log("ERROR NODE",e),"function"==r.type?r.func=e.func:"javascript"!=r.format&&"css"!=r.format&&"json"!=r.format||(r.template=e.template)}),obfuscateHelpers.openImportDialog(l)},error:function(e,r,o){RED.notify("ClientCode Communcation Failure: "+n.id+": "+r,{type:"error",timeout:3e3})}})}else obfuscateHelpers.openImportDialog(l)}
|
|
6
6
|
|
|
7
7
|
function setupTreelist(){var e=collectOrphans();if(0==e.length){RED.notify("No Orphans Found",{type:"warning",timeout:2e3});try{$("#node-input-orphan-target-container-div").treeList("empty")}catch(e){}}else{try{$("#node-input-orphan-target-container-div").treeList("empty")}catch(e){$("#node-input-orphan-target-container-div").css({width:"100%",height:"calc(100%)"}).treeList({multi:!1}).on("treelistitemmouseover",function(e,t){}).on("treelistitemmouseout",function(e,t){}).on("treelistselect",function(e,t){t.node&&(RED.workspaces.show(t.node.z,!1,!1,!0),RED.view.reveal(t.node.id,!0),RED.view.redraw())}).on("treelistconfirm",function(e,t){var n;t.node&&(n=t.node.id,setTimeout(()=>{var e=RED.nodes.node(n);e&&(RED.view.reveal(e.id),RED.view.select(e.id),RED.editor.edit(e)),n==RED.workspaces.active()&&RED.workspaces.edit()},50))}),$("#node-input-orphan-target-filter").show();var n=$("#node-input-orphan-target-filter").searchBox({style:"compact",delay:300,change:function(){var e,t=$(this).val().trim().toLowerCase();""===t?($("#node-input-orphan-target-container-div").treeList("filter",null),n.searchBox("count","")):(e=$("#node-input-orphan-target-container-div").treeList("filter",function(e){return-1<e.label.toLowerCase().indexOf(t)||-1<e.node.type.toLowerCase().indexOf(t)}),n.searchBox("count",e+" / "+$("#node-input-orphan-target-container-div").treeList("data").length))}})}$("#node-input-orphan-target-container-div").treeList("data",e.sort((e,t)=>e.node.z>t.node.z))}}function collectOrphans(){const t=new Set;var n=[],i=(RED.nodes.eachLink(e=>{t.add(e.source),t.add(e.target)}),RED.nodes.eachNode(e=>{t.has(e)||n.push(e)}),[]),r={};return n.forEach(function(e){var t=RED.nodes.getType(e.type);if(t){var n=t.label,n=("function"==typeof n?n.call(e):n)||"",o=e.type;if(0===o.indexOf("subflow:"))return}t&&n||(n=e.type),r[e.id]={node:e,label:n,sublabel:o,selected:!1,checkbox:!1},i.push(r[e.id])}),i}
|
|
8
8
|
|