@allanoricil/nrg-sentinel 1.0.1 → 1.0.2

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/README.md CHANGED
@@ -52,7 +52,7 @@ The table below is updated automatically after each CI run on `main`.
52
52
  | 32 | Flows Inject | ✅ | `4.1.7` |
53
53
  | 33 | Node Event Hijack | ✅ | `4.1.7` |
54
54
  | 34 | Config Node Credentials | ✅ | `4.1.7` |
55
- _Last updated: 2026-03-18T03:18:54Z_
55
+ _Last updated: 2026-03-18T03:24:39Z_
56
56
  <!-- DEMO-TEST-RESULTS:END -->
57
57
 
58
58
  ## Demos
package/bin/node-red.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * @nrg/sentinel v1.0.1
3
+ * @nrg/sentinel v1.0.2
4
4
  * Copyright (c) 2026 NRG. All rights reserved.
5
5
  * Licensed under AGPL-3.0-or-later. Commercial license required for use beyond 14-day trial.
6
6
  * https://allanoricil.github.io/nrg-sentinel-public/
7
7
  */
8
- 'use strict';const _0xc4287=_0x4cdd;(function(stringArrayFunction,_0x264e5f){const _0x37a459=_0x4cdd,stringArray=stringArrayFunction();while(!![]){try{const _0xe8e9fd=-parseInt(_0x37a459(0x8b))/0x1*(parseInt(_0x37a459(0x9f))/0x2)+parseInt(_0x37a459(0x99))/0x3+parseInt(_0x37a459(0x82))/0x4*(-parseInt(_0x37a459(0x81))/0x5)+parseInt(_0x37a459(0xa0))/0x6*(-parseInt(_0x37a459(0x84))/0x7)+parseInt(_0x37a459(0x94))/0x8+-parseInt(_0x37a459(0x83))/0x9+parseInt(_0x37a459(0x8a))/0xa;if(_0xe8e9fd===_0x264e5f)break;else stringArray['push'](stringArray['shift']());}catch(_0x20995a){stringArray['push'](stringArray['shift']());}}}(_0x5889,0x9bf98));const {createVerify}=require('crypto'),{readFileSync,existsSync}=require('fs'),{spawn}=require(_0xc4287(0x95)),path=require('path');function _findCoInstalledNodeRed(){const _0x33838a=_0x4cdd;var _0x42c0bd=path[_0x33838a(0xa3)](path[_0x33838a(0x9c)](process[_0x33838a(0x9b)][0x1]),'..'),_0x54d9f2=_0x42c0bd;while(!![]){var _0x4d0577=path[_0x33838a(0x9c)](_0x54d9f2);if(_0x4d0577===_0x54d9f2)break;var _0x501100=path[_0x33838a(0xa5)](_0x4d0577,_0x33838a(0x8f),_0x33838a(0x9d));if(existsSync(_0x501100)){if('ZxzXR'==='HPOOu')process[_0x33838a(0x92)](process['pid'],_0x41bce5);else try{if('aTOBe'===_0x33838a(0x96)){var _0x29cfb2=JSON[_0x33838a(0xa4)](readFileSync(_0x501100,_0x33838a(0x8d))),_0x4373ba=_0x29cfb2['bin']&&_0x29cfb2[_0x33838a(0x8e)]['node-red']||_0x29cfb2['main'];return path['resolve'](path[_0x33838a(0x9c)](_0x501100),_0x4373ba);}else{const _0x2dc207=_0x5eb7b4(_0x538108),_0x1eee13=_0x5e4a3a(_0x19282d),_0x2020cd=_0x756f91(_0x281914),_0xd4bcff=_0x2b276b(_0x33838a(0xa7))['update'](_0x2020cd)['verify'](_0x2dc207,_0x1eee13);!_0xd4bcff&&(console[_0x33838a(0xa2)]('[@allanoricil/nrg-sentinel] settings.js signature INVALID \u2014 aborting.'),console['error'](_0x33838a(0x89)),process['exit'](0x1));}}catch(_0x2d56df){}}_0x54d9f2=_0x4d0577;}return null;}const args=process[_0xc4287(0x9b)]['slice'](0x2),sIdx=args[_0xc4287(0x93)](_0x35816c=>_0x35816c==='-s'||_0x35816c===_0xc4287(0xa1)),settingsPath=sIdx!==-0x1?path[_0xc4287(0xa3)](args[sIdx+0x1]):path['resolve'](_0xc4287(0x85)),keyPath=process[_0xc4287(0x8c)]['NRG_SENTINEL_PUBLIC_KEY'];if(keyPath){const sigPath=settingsPath+'.sig';!existsSync(keyPath)&&(console[_0xc4287(0xa2)]('[@allanoricil/nrg-sentinel] Public key not found:',keyPath),process['exit'](0x1));!existsSync(sigPath)&&(console[_0xc4287(0xa2)]('[@allanoricil/nrg-sentinel] Signature file not found:',sigPath),console['error'](' Sign it first: nrg-sentinel sign '+settingsPath),process['exit'](0x1));try{const pub=readFileSync(keyPath),sig=readFileSync(sigPath),src=readFileSync(settingsPath),ok=createVerify(_0xc4287(0xa7))[_0xc4287(0x88)](src)['verify'](pub,sig);!ok&&(console[_0xc4287(0xa2)]('[@allanoricil/nrg-sentinel] settings.js signature INVALID \u2014 aborting.'),console['error']('\x20\x20If\x20settings.js\x20was\x20intentionally\x20changed,\x20re-sign\x20it.'),process[_0xc4287(0x91)](0x1));}catch(_0x102545){console['error']('[@allanoricil/nrg-sentinel] Signature verification error:',_0x102545[_0xc4287(0x9a)]),process[_0xc4287(0x91)](0x1);}}function _0x5889(){const _0x298a0a=['bin','node-red','pid','exit','kill','findIndex','5477720YFqupO','child_process','aTOBe','NODE_OPTIONS','execPath','2355027QdzhVu','message','argv','dirname','package.json','trim','717202DUjycP','6WyjeRJ','--settings','error','resolve','parse','join','SIGINT','ed25519','5oQtEuB','2010076QxGAXi','352575EKsXed','7748055DwgwhI','settings.js','--require\x20','inherit','update','\x20\x20If\x20settings.js\x20was\x20intentionally\x20changed,\x20re-sign\x20it.','11763080ogGqMT','1ZDPutC','env','utf8'];_0x5889=function(){return _0x298a0a;};return _0x5889();}const preload=path['resolve'](__dirname,'..','preload.js'),env=Object['assign']({},process['env']);env['NODE_OPTIONS']=(_0xc4287(0x86)+preload+'\x20'+(env[_0xc4287(0x97)]||''))[_0xc4287(0x9e)]();let spawnCmd,spawnArgs;function _0x4cdd(_0x339101,_0x3bce3a){_0x339101=_0x339101-0x81;const _0x5889c5=_0x5889();let _0x4cdd96=_0x5889c5[_0x339101];return _0x4cdd96;}var nodeRedBin=_findCoInstalledNodeRed();nodeRedBin?(spawnCmd=process[_0xc4287(0x98)],spawnArgs=[nodeRedBin,...args]):(spawnCmd=_0xc4287(0x8f),spawnArgs=args);const child=spawn(spawnCmd,spawnArgs,{'stdio':_0xc4287(0x87),'env':env,'shell':![]});process['on']('SIGTERM',()=>child['kill']('SIGTERM')),process['on'](_0xc4287(0xa6),()=>child[_0xc4287(0x92)](_0xc4287(0xa6))),child['on'](_0xc4287(0x91),(_0x4473d7,_0x3d41e1)=>{const _0x3248ca=_0x4cdd;_0x3d41e1?process['kill'](process[_0x3248ca(0x90)],_0x3d41e1):'hFnMV'==='hFnMV'?process[_0x3248ca(0x91)](_0x4473d7??0x0):(_0x10deb2=process['execPath'],_0x16834a=[_0x120453,..._0x4bca51]);});
8
+ 'use strict';const _0x59c390=_0x4a78;(function(stringArrayFunction,_0x2b0630){const _0x4f0da8=_0x4a78,stringArray=stringArrayFunction();while(!![]){try{const _0x590b65=parseInt(_0x4f0da8(0x1a5))/0x1*(parseInt(_0x4f0da8(0x1a1))/0x2)+-parseInt(_0x4f0da8(0x1c3))/0x3*(parseInt(_0x4f0da8(0x1c6))/0x4)+-parseInt(_0x4f0da8(0x1bb))/0x5+-parseInt(_0x4f0da8(0x1bc))/0x6*(parseInt(_0x4f0da8(0x1b0))/0x7)+parseInt(_0x4f0da8(0x1a3))/0x8+-parseInt(_0x4f0da8(0x1b9))/0x9*(-parseInt(_0x4f0da8(0x1a9))/0xa)+parseInt(_0x4f0da8(0x1ad))/0xb;if(_0x590b65===_0x2b0630)break;else stringArray['push'](stringArray['shift']());}catch(_0x10f06b){stringArray['push'](stringArray['shift']());}}}(_0x5038,0x752b9));const {createVerify}=require('crypto'),{readFileSync,existsSync}=require('fs'),{spawn}=require(_0x59c390(0x1b2)),path=require(_0x59c390(0x1be));function _findCoInstalledNodeRed(){const _0x3ffee1=_0x4a78;var _0x813b56=path[_0x3ffee1(0x1aa)](path[_0x3ffee1(0x1a8)](process[_0x3ffee1(0x1b8)][0x1]),'..'),_0x17f014=_0x813b56;while(!![]){var _0x1c07ff=path[_0x3ffee1(0x1a8)](_0x17f014);if(_0x1c07ff===_0x17f014)break;var _0x343a70=path[_0x3ffee1(0x1af)](_0x1c07ff,'node-red','package.json');if(existsSync(_0x343a70)){if('ghAjg'===_0x3ffee1(0x1b4))try{var _0x313654=JSON[_0x3ffee1(0x1c2)](readFileSync(_0x343a70,_0x3ffee1(0x1ab))),_0xa4d762=_0x313654[_0x3ffee1(0x1a6)]&&_0x313654[_0x3ffee1(0x1a6)]['node-red']||_0x313654[_0x3ffee1(0x1c5)];return path[_0x3ffee1(0x1aa)](path['dirname'](_0x343a70),_0xa4d762);}catch(_0x243b3){}else process['kill'](process['pid'],_0xa01cb1);}_0x17f014=_0x1c07ff;}return null;}function _0x4a78(_0x5455f6,_0x420c59){_0x5455f6=_0x5455f6-0x1a1;const _0x503844=_0x5038();let _0x4a783b=_0x503844[_0x5455f6];return _0x4a783b;}const args=process['argv'][_0x59c390(0x1c4)](0x2),sIdx=args['findIndex'](_0x29e924=>_0x29e924==='-s'||_0x29e924==='--settings'),settingsPath=sIdx!==-0x1?path['resolve'](args[sIdx+0x1]):path[_0x59c390(0x1aa)](_0x59c390(0x1b3)),keyPath=process[_0x59c390(0x1bd)][_0x59c390(0x1ba)];function _0x5038(){const _0x487bf2=['slice','main','1796xQSGAS','kill','52276bbmbeA','SIGINT','7571344fLXURQ','SIGTERM','2MQtONo','bin','error','dirname','22450xupKOq','resolve','utf8','preload.js','8381065PVCLrB','update','join','1864604TrgjiJ','.sig','child_process','settings.js','ghAjg','pid','assign','execPath','argv','648IkVvbH','NRG_SENTINEL_PUBLIC_KEY','1864530GiJIrn','18eSAmnG','env','path','inherit','NODE_OPTIONS','\x20\x20If\x20settings.js\x20was\x20intentionally\x20changed,\x20re-sign\x20it.','parse','1806ZQmCRO'];_0x5038=function(){return _0x487bf2;};return _0x5038();}if(keyPath){const sigPath=settingsPath+_0x59c390(0x1b1);!existsSync(keyPath)&&(console[_0x59c390(0x1a7)]('[@allanoricil/nrg-sentinel] Public key not found:',keyPath),process['exit'](0x1));!existsSync(sigPath)&&(console['error']('[@allanoricil/nrg-sentinel] Signature file not found:',sigPath),console[_0x59c390(0x1a7)](' Sign it first: nrg-sentinel sign '+settingsPath),process['exit'](0x1));try{const pub=readFileSync(keyPath),sig=readFileSync(sigPath),src=readFileSync(settingsPath),ok=createVerify('ed25519')[_0x59c390(0x1ae)](src)['verify'](pub,sig);!ok&&(console['error']('[@allanoricil/nrg-sentinel] settings.js signature INVALID \u2014 aborting.'),console[_0x59c390(0x1a7)](_0x59c390(0x1c1)),process['exit'](0x1));}catch(_0xe32d11){console[_0x59c390(0x1a7)]('[@allanoricil/nrg-sentinel] Signature verification error:',_0xe32d11['message']),process['exit'](0x1);}}const preload=path['resolve'](__dirname,'..',_0x59c390(0x1ac)),env=Object[_0x59c390(0x1b6)]({},process['env']);env[_0x59c390(0x1c0)]=('--require\x20'+preload+'\x20'+(env[_0x59c390(0x1c0)]||''))['trim']();let spawnCmd,spawnArgs;var nodeRedBin=_findCoInstalledNodeRed();nodeRedBin?(spawnCmd=process[_0x59c390(0x1b7)],spawnArgs=[nodeRedBin,...args]):(spawnCmd='node-red',spawnArgs=args);const child=spawn(spawnCmd,spawnArgs,{'stdio':_0x59c390(0x1bf),'env':env,'shell':![]});process['on'](_0x59c390(0x1a4),()=>child[_0x59c390(0x1c7)]('SIGTERM')),process['on'](_0x59c390(0x1a2),()=>child['kill'](_0x59c390(0x1a2))),child['on']('exit',(_0x49aa81,_0x36eaae)=>{const _0x16a90c=_0x4a78;_0x36eaae?process['kill'](process[_0x16a90c(0x1b5)],_0x36eaae):process['exit'](_0x49aa81??0x0);});
package/flow-diff.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * @nrg/sentinel v1.0.1
2
+ * @nrg/sentinel v1.0.2
3
3
  * Copyright (c) 2026 NRG. All rights reserved.
4
4
  * Licensed under AGPL-3.0-or-later. Commercial license required for use beyond 14-day trial.
5
5
  * https://allanoricil.github.io/nrg-sentinel-public/
6
6
  */
7
- 'use strict';var _0x52f26c=_0x356f;(function(stringArrayFunction,_0x1c922a){var _0x747310=_0x356f,stringArray=stringArrayFunction();while(!![]){try{var _0x4b1a68=-parseInt(_0x747310(0x1f9))/0x1+parseInt(_0x747310(0x1ed))/0x2*(parseInt(_0x747310(0x1e3))/0x3)+-parseInt(_0x747310(0x1e6))/0x4*(parseInt(_0x747310(0x1f4))/0x5)+-parseInt(_0x747310(0x1ea))/0x6+-parseInt(_0x747310(0x1f2))/0x7+-parseInt(_0x747310(0x1f7))/0x8*(-parseInt(_0x747310(0x1fa))/0x9)+parseInt(_0x747310(0x1e5))/0xa;if(_0x4b1a68===_0x1c922a)break;else stringArray['push'](stringArray['shift']());}catch(_0x16176d){stringArray['push'](stringArray['shift']());}}}(_0x349c,0xc2e4e));function _0x356f(_0x11a72c,_0x239825){_0x11a72c=_0x11a72c-0x1e2;var _0x349c84=_0x349c();var _0x356fbd=_0x349c84[_0x11a72c];return _0x356fbd;}var COMPARISON_STRIP=['x','y','z',_0x52f26c(0x1e2)];function shouldSkipNode(_0x4f5dbc){var _0x17907c=_0x356f;if(!_0x4f5dbc||!_0x4f5dbc['id'])return!![];if(!Object[_0x17907c(0x1e4)]['hasOwnProperty'][_0x17907c(0x1f6)](_0x4f5dbc,'x')||!Object[_0x17907c(0x1e4)]['hasOwnProperty'][_0x17907c(0x1f6)](_0x4f5dbc,'y'))return!![];return![];}function normalizeForComparison(_0x2cd2ce){var _0xca6724=_0x356f,_0x2852dd={},_0x5521ed=Object['keys'](_0x2cd2ce)['sort']();for(var _0x4b8185=0x0;_0x4b8185<_0x5521ed[_0xca6724(0x1e7)];_0x4b8185++){'PBMQA'!==_0xca6724(0x1fc)?COMPARISON_STRIP[_0xca6724(0x1f8)](_0x5521ed[_0x4b8185])===-0x1&&('YQuJi'==='dLMnK'?_0x2da4ee[_0xca6724(0x1f8)](_0x41a237[_0x39d876])===-0x1&&(_0x24b593[_0x282a42[_0xe5b9e8]]=_0x1fae6d[_0x5cc5a8[_0x304f8e]]):_0x2852dd[_0x5521ed[_0x4b8185]]=_0x2cd2ce[_0x5521ed[_0x4b8185]]):!_0x3bb6a9[_0x822c49[_0x59c79f]]&&_0x1fd336['push'](_0x50fb97[_0x4fe9b0[_0x192973]]);}return _0x2852dd;}function deepEqual(_0x2032b0,_0x2fa340){return JSON['stringify'](_0x2032b0)===JSON['stringify'](_0x2fa340);}function toEdges(_0x39a7c0){var _0x59d6d8=_0x356f,_0x52d991=new Set();for(var _0x3184d6=0x0;_0x3184d6<_0x39a7c0['length'];_0x3184d6++){var _0x3b52d2=_0x39a7c0[_0x3184d6];if(!_0x3b52d2[_0x59d6d8(0x1e2)]||!Array['isArray'](_0x3b52d2[_0x59d6d8(0x1e2)]))continue;for(var _0x65bef2=0x0;_0x65bef2<_0x3b52d2['wires']['length'];_0x65bef2++){var _0x3d1cb0=_0x3b52d2[_0x59d6d8(0x1e2)][_0x65bef2];if(!Array['isArray'](_0x3d1cb0))continue;for(var _0xc884f4=0x0;_0xc884f4<_0x3d1cb0['length'];_0xc884f4++){_0x52d991[_0x59d6d8(0x1ee)](_0x3b52d2['id']+':'+_0x65bef2+'→'+_0x3d1cb0[_0xc884f4]);}}}return _0x52d991;}function diffFlows(_0x25bd6f,_0x476b8f){var _0x1a0b57=_0x356f,_0x2708f4=(Array[_0x1a0b57(0x1f3)](_0x25bd6f)?_0x25bd6f:[])['filter'](function(_0x48a706){return!shouldSkipNode(_0x48a706);}),_0x3229ad=(Array[_0x1a0b57(0x1f3)](_0x476b8f)?_0x476b8f:[])[_0x1a0b57(0x1f1)](function(_0x1d7b7f){var _0x380528=_0x356f;if(_0x380528(0x1ef)==='qdfUg')return!shouldSkipNode(_0x1d7b7f);else{var _0x569eda=_0x1f1bf6[_0x78963];if(!_0x461866[_0x569eda])_0x482d82[_0x380528(0x1e9)](_0x10a67d[_0x569eda]);else{var _0xb1858b=_0x463529(_0x35f1a5[_0x569eda]),_0x53cb59=_0x41bb9d(_0x227db1[_0x569eda]);!_0x63243d(_0xb1858b,_0x53cb59)&&_0x1c71bc[_0x380528(0x1e9)]({'id':_0x569eda,'before':_0x5861af[_0x569eda],'after':_0x11c15b[_0x569eda]});}}}),_0x18c571={};for(var _0x2c7630=0x0;_0x2c7630<_0x2708f4[_0x1a0b57(0x1e7)];_0x2c7630++){_0x1a0b57(0x1eb)==='NHnXa'?_0x2708f4[_0x2c7630]&&_0x2708f4[_0x2c7630]['id']&&(_0x18c571[_0x2708f4[_0x2c7630]['id']]=_0x2708f4[_0x2c7630]):_0x4891c0[_0x1a0b57(0x1e9)]({'id':_0x11f49e,'before':_0x15aad7[_0x37e26f],'after':_0x148fd0[_0x2f8fe3]});}var _0x18f162={};for(var _0x49c2d2=0x0;_0x49c2d2<_0x3229ad[_0x1a0b57(0x1e7)];_0x49c2d2++){if(_0x3229ad[_0x49c2d2]&&_0x3229ad[_0x49c2d2]['id']){if('jzrGQ'!==_0x1a0b57(0x1e8))_0x18f162[_0x3229ad[_0x49c2d2]['id']]=_0x3229ad[_0x49c2d2];else{var _0xf5502f=_0x558ca0(_0x97bd41[_0x3f6479]),_0x579daa=_0x2957d7(_0x5c299c[_0x4edb19]);!_0x1e410c(_0xf5502f,_0x579daa)&&_0x1c6d1b[_0x1a0b57(0x1e9)]({'id':_0x4c40e8,'before':_0x3525b3[_0x5ae195],'after':_0x854982[_0x277341]});}}}var _0x5efac1=[],_0x16129d=[],_0x14d709=[],_0x498fd6=Object['keys'](_0x18f162);for(var _0x3dbf39=0x0;_0x3dbf39<_0x498fd6['length'];_0x3dbf39++){var _0x12a7ff=_0x498fd6[_0x3dbf39];if(!_0x18c571[_0x12a7ff])_0x5efac1['push'](_0x18f162[_0x12a7ff]);else{var _0x1b55c1=normalizeForComparison(_0x18c571[_0x12a7ff]),_0x518358=normalizeForComparison(_0x18f162[_0x12a7ff]);!deepEqual(_0x1b55c1,_0x518358)&&_0x14d709['push']({'id':_0x12a7ff,'before':_0x18c571[_0x12a7ff],'after':_0x18f162[_0x12a7ff]});}}var _0x348e0a=Object[_0x1a0b57(0x1ec)](_0x18c571);for(var _0x4535a9=0x0;_0x4535a9<_0x348e0a[_0x1a0b57(0x1e7)];_0x4535a9++){if(!_0x18f162[_0x348e0a[_0x4535a9]]){if('pxuMD'===_0x1a0b57(0x1f0))_0x16129d[_0x1a0b57(0x1e9)](_0x18c571[_0x348e0a[_0x4535a9]]);else return JSON['stringify'](_0xa44a94)===JSON['stringify'](_0x687221);}}var _0x16dcf3=toEdges(_0x2708f4),_0x42cbea=toEdges(_0x3229ad),_0x2d684a=[];_0x42cbea['forEach'](function(_0x171d0c){var _0x38bb5a=_0x356f;if(!_0x16dcf3[_0x38bb5a(0x1fb)](_0x171d0c))_0x2d684a[_0x38bb5a(0x1e9)](_0x171d0c);});var _0x2d4f6a=[];return _0x16dcf3['forEach'](function(_0x3e2cab){if(!_0x42cbea['has'](_0x3e2cab))_0x2d4f6a['push'](_0x3e2cab);}),{'nodesAdded':_0x5efac1,'nodesRemoved':_0x16129d,'nodesModified':_0x14d709,'connectionsAdded':_0x2d684a,'connectionsRemoved':_0x2d4f6a};}module[_0x52f26c(0x1f5)]={'diffFlows':diffFlows};function _0x349c(){var _0x51e54c=['has','SZxus','wires','198039EjNDiM','prototype','18141380UQWkoK','244eictOm','length','CIQVI','push','2923728tCqAdc','NHnXa','keys','14ByJbVU','add','qdfUg','pxuMD','filter','6420022IuUOGO','isArray','88610iZJSIR','exports','call','12192088LvanVf','indexOf','516478YujeSj','9TjKusO'];_0x349c=function(){return _0x51e54c;};return _0x349c();}
7
+ 'use strict';var _0x330353=_0x2048;(function(stringArrayFunction,_0x4154be){var _0x5ce0c9=_0x2048,stringArray=stringArrayFunction();while(!![]){try{var _0x20106a=parseInt(_0x5ce0c9(0x123))/0x1+-parseInt(_0x5ce0c9(0x12c))/0x2+-parseInt(_0x5ce0c9(0x124))/0x3+parseInt(_0x5ce0c9(0x133))/0x4*(parseInt(_0x5ce0c9(0x120))/0x5)+-parseInt(_0x5ce0c9(0x11d))/0x6+-parseInt(_0x5ce0c9(0x130))/0x7+parseInt(_0x5ce0c9(0x12d))/0x8*(parseInt(_0x5ce0c9(0x121))/0x9);if(_0x20106a===_0x4154be)break;else stringArray['push'](stringArray['shift']());}catch(_0xd32b30){stringArray['push'](stringArray['shift']());}}}(_0x4a1a,0x5034a));var COMPARISON_STRIP=['x','y','z',_0x330353(0x119)];function shouldSkipNode(_0x5a33e5){var _0x343f37=_0x2048;if(!_0x5a33e5||!_0x5a33e5['id'])return!![];if(!Object['prototype']['hasOwnProperty']['call'](_0x5a33e5,'x')||!Object[_0x343f37(0x122)]['hasOwnProperty'][_0x343f37(0x132)](_0x5a33e5,'y'))return!![];return![];}function _0x4a1a(){var _0x203fa0=['1902624YgdbNk','filter','indexOf','EgWpQ','length','QlkUb','forEach','sort','1296028WTdeuM','8BINoJW','isArray','RofZZ','423654DbunTG','add','call','8LrFMiv','wires','keys','UmRNp','push','2769228GiizVs','IVEHF','has','262285uNtdWv','12364965kxqohb','prototype','654005wOhPwg'];_0x4a1a=function(){return _0x203fa0;};return _0x4a1a();}function _0x2048(_0x21c7eb,_0x356f89){_0x21c7eb=_0x21c7eb-0x119;var _0x4a1a69=_0x4a1a();var _0x20482c=_0x4a1a69[_0x21c7eb];return _0x20482c;}function normalizeForComparison(_0x2a0b33){var _0x52b108=_0x2048,_0x46483e={},_0x191f02=Object[_0x52b108(0x11a)](_0x2a0b33)[_0x52b108(0x12b)]();for(var _0x3b7724=0x0;_0x3b7724<_0x191f02['length'];_0x3b7724++){COMPARISON_STRIP[_0x52b108(0x126)](_0x191f02[_0x3b7724])===-0x1&&(_0x46483e[_0x191f02[_0x3b7724]]=_0x2a0b33[_0x191f02[_0x3b7724]]);}return _0x46483e;}function deepEqual(_0xbf4c5,_0x596b7b){return JSON['stringify'](_0xbf4c5)===JSON['stringify'](_0x596b7b);}function toEdges(_0x713c24){var _0x270993=_0x2048,_0x422057=new Set();for(var _0x2a04d9=0x0;_0x2a04d9<_0x713c24['length'];_0x2a04d9++){if(_0x270993(0x12f)===_0x270993(0x127)){if(!_0x585371[_0x270993(0x11f)](_0x42ef5b))_0x3c0c62[_0x270993(0x11c)](_0xb79b6e);}else{var _0x3cecca=_0x713c24[_0x2a04d9];if(!_0x3cecca[_0x270993(0x119)]||!Array[_0x270993(0x12e)](_0x3cecca['wires']))continue;for(var _0x4396e3=0x0;_0x4396e3<_0x3cecca[_0x270993(0x119)][_0x270993(0x128)];_0x4396e3++){var _0x2e7bfc=_0x3cecca[_0x270993(0x119)][_0x4396e3];if(!Array['isArray'](_0x2e7bfc))continue;for(var _0x58ad00=0x0;_0x58ad00<_0x2e7bfc[_0x270993(0x128)];_0x58ad00++){_0x422057[_0x270993(0x131)](_0x3cecca['id']+':'+_0x4396e3+'→'+_0x2e7bfc[_0x58ad00]);}}}}return _0x422057;}function diffFlows(_0x57b227,_0x41577a){var _0x120648=_0x2048,_0x392134=(Array[_0x120648(0x12e)](_0x57b227)?_0x57b227:[])['filter'](function(_0x191cc7){var _0x15bc3b=_0x2048;if('yFyJt'!=='WdVLw')return!shouldSkipNode(_0x191cc7);else _0x478309[_0x15bc3b(0x126)](_0x77665a[_0x53a2d3])===-0x1&&(_0x42029a[_0x38e4dc[_0x5c6f78]]=_0x5085e1[_0xb5054f[_0x225293]]);}),_0x3766f5=(Array['isArray'](_0x41577a)?_0x41577a:[])[_0x120648(0x125)](function(_0x49b766){return!shouldSkipNode(_0x49b766);}),_0x1fd043={};for(var _0x37b1c7=0x0;_0x37b1c7<_0x392134[_0x120648(0x128)];_0x37b1c7++){_0x392134[_0x37b1c7]&&_0x392134[_0x37b1c7]['id']&&(_0x1fd043[_0x392134[_0x37b1c7]['id']]=_0x392134[_0x37b1c7]);}var _0xf706c6={};for(var _0x36e04b=0x0;_0x36e04b<_0x3766f5['length'];_0x36e04b++){_0x120648(0x11b)!==_0x120648(0x11e)?_0x3766f5[_0x36e04b]&&_0x3766f5[_0x36e04b]['id']&&(_0xf706c6[_0x3766f5[_0x36e04b]['id']]=_0x3766f5[_0x36e04b]):_0xd4634a[_0x120648(0x131)](_0x34f090['id']+':'+_0x50a053+''+_0x37a818[_0x7e9cf5]);}var _0x4b839b=[],_0x5cea24=[],_0x44749d=[],_0x22008c=Object[_0x120648(0x11a)](_0xf706c6);for(var _0x4fed7a=0x0;_0x4fed7a<_0x22008c[_0x120648(0x128)];_0x4fed7a++){var _0x5cffc2=_0x22008c[_0x4fed7a];if(!_0x1fd043[_0x5cffc2])_0x120648(0x129)!==_0x120648(0x129)?!_0x13f832[_0xb7744a[_0x25dc02]]&&_0x5a04fe[_0x120648(0x11c)](_0x2ea46e[_0x1fa1da[_0x5a19ae]]):_0x4b839b[_0x120648(0x11c)](_0xf706c6[_0x5cffc2]);else{var _0x4c0c8b=normalizeForComparison(_0x1fd043[_0x5cffc2]),_0x3755f4=normalizeForComparison(_0xf706c6[_0x5cffc2]);!deepEqual(_0x4c0c8b,_0x3755f4)&&_0x44749d[_0x120648(0x11c)]({'id':_0x5cffc2,'before':_0x1fd043[_0x5cffc2],'after':_0xf706c6[_0x5cffc2]});}}var _0x2b1a60=Object['keys'](_0x1fd043);for(var _0x18fb0a=0x0;_0x18fb0a<_0x2b1a60['length'];_0x18fb0a++){!_0xf706c6[_0x2b1a60[_0x18fb0a]]&&_0x5cea24[_0x120648(0x11c)](_0x1fd043[_0x2b1a60[_0x18fb0a]]);}var _0x2fc4ea=toEdges(_0x392134),_0xf89edc=toEdges(_0x3766f5),_0x42384d=[];_0xf89edc['forEach'](function(_0x38474e){var _0x2709d4=_0x2048;if(!_0x2fc4ea[_0x2709d4(0x11f)](_0x38474e))_0x42384d['push'](_0x38474e);});var _0x258024=[];return _0x2fc4ea[_0x120648(0x12a)](function(_0x1ab0ee){if(!_0xf89edc['has'](_0x1ab0ee))_0x258024['push'](_0x1ab0ee);}),{'nodesAdded':_0x4b839b,'nodesRemoved':_0x5cea24,'nodesModified':_0x44749d,'connectionsAdded':_0x42384d,'connectionsRemoved':_0x258024};}module['exports']={'diffFlows':diffFlows};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allanoricil/nrg-sentinel",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Node-RED Runtime Security Hardening",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "AllanOricil",