npm · registry.npmjs.org
mneme-ai
Install Lifecycle Remote Or Exec: preinstall="node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\""
Why PkgRadar flagged 2.95.0
| Severity | Signal | Evidence |
|---|---|---|
| high | Install Lifecycle Remote Or Exec | preinstall="node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"" · package.json |
Scanned versions
| Version | Verdict | Score | Scanned (UTC) |
|---|---|---|---|
2.95.0 | High risk | 20 | 2026-06-13 |
2.94.0 | High risk | 20 | 2026-06-13 |
2.111.0 | High risk | 20 | 2026-06-13 |
2.93.0 | High risk | 20 | 2026-06-13 |
2.92.0 | High risk | 20 | 2026-06-13 |
2.91.0 | High risk | 20 | 2026-06-13 |
2.90.0 | High risk | 20 | 2026-06-13 |
2.89.0 | High risk | 20 | 2026-06-13 |
3.101.0 | High risk | 20 | 2026-06-11 |
3.100.0 | High risk | 20 | 2026-06-11 |
3.99.0 | High risk | 40 | 2026-06-11 |
3.98.0 | High risk | 20 | 2026-06-11 |
3.97.0 | High risk | 20 | 2026-06-11 |
3.96.0 | High risk | 20 | 2026-06-11 |
3.95.0 | High risk | 20 | 2026-06-11 |
3.94.0 | High risk | 20 | 2026-06-11 |
3.93.0 | High risk | 20 | 2026-06-11 |
3.92.0 | High risk | 20 | 2026-06-11 |
3.91.0 | High risk | 20 | 2026-06-11 |
3.90.0 | High risk | 20 | 2026-06-11 |
3.89.0 | High risk | 20 | 2026-06-11 |
3.88.0 | High risk | 20 | 2026-06-11 |
3.87.0 | High risk | 20 | 2026-06-11 |
3.86.0 | High risk | 20 | 2026-06-11 |
3.85.0 | High risk | 20 | 2026-06-11 |
3.84.0 | High risk | 20 | 2026-06-11 |
3.82.0 | High risk | 20 | 2026-06-11 |
3.83.0 | High risk | 20 | 2026-06-11 |
2.88.0 | High risk | 20 | 2026-06-10 |
2.87.0 | High risk | 20 | 2026-06-10 |
2.86.0 | High risk | 20 | 2026-06-10 |
2.110.0 | High risk | 40 | 2026-06-10 |
2.71.0 | High risk | 20 | 2026-06-10 |
2.72.0 | High risk | 20 | 2026-06-10 |
2.69.0 | High risk | 20 | 2026-06-10 |
2.70.0 | High risk | 20 | 2026-06-10 |
2.66.0 | High risk | 20 | 2026-06-10 |
2.65.0 | High risk | 40 | 2026-06-10 |
2.59.0 | High risk | 20 | 2026-06-10 |
2.57.0 | High risk | 20 | 2026-06-10 |
2.58.0 | High risk | 40 | 2026-06-10 |
3.81.0 | High risk | 40 | 2026-06-10 |
3.80.0 | High risk | 40 | 2026-06-10 |
3.79.0 | High risk | 20 | 2026-06-10 |
3.78.0 | High risk | 40 | 2026-06-10 |
3.77.0 | High risk | 20 | 2026-06-10 |
3.76.0 | High risk | 40 | 2026-06-10 |
3.75.0 | High risk | 40 | 2026-06-10 |
3.74.0 | High risk | 40 | 2026-06-10 |
3.73.0 | High risk | 20 | 2026-06-10 |
3.72.0 | High risk | 20 | 2026-06-10 |
3.71.0 | High risk | 20 | 2026-06-10 |
3.70.0 | High risk | 20 | 2026-06-10 |
3.69.0 | High risk | 20 | 2026-06-10 |
3.68.0 | High risk | 40 | 2026-06-10 |
3.67.0 | High risk | 22 | 2026-06-10 |
3.65.0 | High risk | 45 | 2026-06-10 |
3.66.0 | High risk | 45 | 2026-06-10 |
3.64.0 | High risk | 45 | 2026-06-10 |
3.63.0 | High risk | 45 | 2026-06-10 |
3.62.0 | High risk | 22 | 2026-06-10 |
3.60.0 | High risk | 45 | 2026-06-10 |
3.61.0 | High risk | 45 | 2026-06-10 |
3.59.0 | High risk | 45 | 2026-06-10 |
3.58.0 | High risk | 22 | 2026-06-10 |
3.57.0 | High risk | 22 | 2026-06-10 |
3.56.0 | High risk | 22 | 2026-06-10 |
3.55.0 | High risk | 22 | 2026-06-10 |
3.54.0 | High risk | 22 | 2026-06-10 |
3.53.0 | High risk | 45 | 2026-06-10 |
3.52.0 | High risk | 45 | 2026-06-10 |
3.51.0 | High risk | 45 | 2026-06-10 |
3.50.0 | High risk | 45 | 2026-06-10 |
3.49.0 | High risk | 22 | 2026-06-10 |
3.48.0 | High risk | 22 | 2026-06-10 |
3.47.0 | High risk | 22 | 2026-06-10 |
3.46.0 | High risk | 22 | 2026-06-10 |
3.45.0 | High risk | 45 | 2026-06-10 |
3.44.0 | High risk | 45 | 2026-06-10 |
3.43.0 | High risk | 22 | 2026-06-10 |
3.42.0 | High risk | 45 | 2026-06-10 |
3.41.0 | High risk | 22 | 2026-06-10 |
3.40.0 | High risk | 22 | 2026-06-10 |
3.39.0 | High risk | 22 | 2026-06-10 |
3.38.0 | High risk | 22 | 2026-06-10 |
3.37.0 | High risk | 22 | 2026-06-10 |
3.36.0 | High risk | 22 | 2026-06-10 |
3.35.1 | High risk | 22 | 2026-06-10 |
3.35.0 | High risk | 22 | 2026-06-10 |
3.34.0 | High risk | 22 | 2026-06-10 |
3.33.0 | High risk | 22 | 2026-06-10 |
3.32.0 | High risk | 45 | 2026-06-10 |
3.31.0 | High risk | 45 | 2026-06-10 |
3.30.0 | High risk | 45 | 2026-06-10 |
3.29.0 | High risk | 45 | 2026-06-10 |
3.28.0 | High risk | 22 | 2026-06-10 |
3.27.0 | High risk | 22 | 2026-06-10 |
3.26.0 | High risk | 22 | 2026-06-10 |
3.24.0 | High risk | 22 | 2026-06-10 |
3.25.0 | High risk | 22 | 2026-06-10 |
3.23.0 | High risk | 22 | 2026-06-10 |
3.22.0 | High risk | 20 | 2026-06-10 |
3.21.0 | High risk | 40 | 2026-06-10 |
3.20.0 | High risk | 20 | 2026-06-10 |
3.19.0 | High risk | 20 | 2026-06-10 |
3.17.0 | High risk | 20 | 2026-06-10 |
3.18.0 | High risk | 20 | 2026-06-10 |
3.16.0 | High risk | 20 | 2026-06-10 |
3.15.0 | High risk | 20 | 2026-06-10 |
3.14.0 | High risk | 20 | 2026-06-10 |
3.13.0 | High risk | 20 | 2026-06-10 |
3.12.0 | High risk | 20 | 2026-06-10 |
3.11.0 | High risk | 20 | 2026-06-10 |
3.10.0 | High risk | 20 | 2026-06-10 |
3.9.0 | High risk | 20 | 2026-06-10 |
3.8.0 | High risk | 20 | 2026-06-10 |
3.7.0 | High risk | 20 | 2026-06-10 |
3.6.0 | High risk | 20 | 2026-06-10 |
3.5.1 | High risk | 20 | 2026-06-10 |
3.5.0 | High risk | 20 | 2026-06-10 |
3.4.0 | High risk | 20 | 2026-06-10 |
3.4.1 | High risk | 20 | 2026-06-10 |
2.220.0 | High risk | 40 | 2026-06-10 |
2.219.0 | High risk | 20 | 2026-06-10 |
2.218.0 | High risk | 40 | 2026-06-10 |
2.217.0 | High risk | 20 | 2026-06-10 |
2.216.0 | High risk | 40 | 2026-06-10 |
2.215.0 | High risk | 20 | 2026-06-10 |
2.214.0 | High risk | 20 | 2026-06-10 |
2.213.0 | High risk | 20 | 2026-06-10 |
2.212.0 | High risk | 20 | 2026-06-10 |
2.211.0 | High risk | 20 | 2026-06-10 |
2.210.0 | High risk | 20 | 2026-06-10 |
2.209.0 | High risk | 20 | 2026-06-10 |
2.208.0 | High risk | 40 | 2026-06-10 |
2.207.0 | High risk | 20 | 2026-06-10 |
2.206.0 | High risk | 20 | 2026-06-10 |
2.205.0 | High risk | 20 | 2026-06-10 |
2.204.0 | High risk | 20 | 2026-06-10 |
2.203.0 | High risk | 40 | 2026-06-10 |
2.202.0 | High risk | 20 | 2026-06-10 |
2.201.0 | High risk | 40 | 2026-06-10 |
2.200.0 | High risk | 20 | 2026-06-10 |
2.199.0 | High risk | 20 | 2026-06-10 |
2.198.0 | High risk | 20 | 2026-06-10 |
2.197.0 | High risk | 20 | 2026-06-10 |
2.196.0 | High risk | 20 | 2026-06-10 |
2.195.0 | High risk | 20 | 2026-06-10 |
2.194.0 | High risk | 20 | 2026-06-10 |
2.193.0 | High risk | 20 | 2026-06-10 |
2.192.0 | High risk | 20 | 2026-06-10 |
2.190.0 | High risk | 40 | 2026-06-10 |
2.191.0 | High risk | 20 | 2026-06-10 |
2.175.0 | High risk | 20 | 2026-06-10 |
2.173.0 | High risk | 40 | 2026-06-10 |
2.172.0 | High risk | 20 | 2026-06-10 |
2.171.0 | High risk | 20 | 2026-06-10 |
2.170.0 | High risk | 40 | 2026-06-10 |
2.169.0 | High risk | 20 | 2026-06-10 |
2.168.0 | High risk | 20 | 2026-06-10 |
2.167.0 | High risk | 20 | 2026-06-10 |
2.166.0 | High risk | 20 | 2026-06-10 |
2.165.0 | High risk | 20 | 2026-06-10 |
2.164.0 | High risk | 20 | 2026-06-10 |
2.149.0 | High risk | 20 | 2026-06-10 |
2.150.0 | High risk | 40 | 2026-06-10 |
2.143.0 | High risk | 20 | 2026-06-10 |
2.142.0 | High risk | 40 | 2026-06-10 |
2.141.0 | High risk | 20 | 2026-06-10 |
2.139.0 | High risk | 40 | 2026-06-10 |
2.140.0 | High risk | 20 | 2026-06-10 |
2.133.0 | High risk | 20 | 2026-06-10 |
2.134.0 | High risk | 20 | 2026-06-10 |
2.130.0 | High risk | 20 | 2026-06-10 |
2.129.0 | High risk | 40 | 2026-06-10 |
2.128.0 | High risk | 20 | 2026-06-10 |
2.127.0 | High risk | 20 | 2026-06-10 |
2.126.0 | High risk | 20 | 2026-06-10 |
2.125.0 | High risk | 20 | 2026-06-10 |
2.124.0 | High risk | 40 | 2026-06-10 |
2.123.0 | High risk | 20 | 2026-06-10 |
2.122.0 | High risk | 20 | 2026-06-10 |
2.121.0 | High risk | 20 | 2026-06-10 |
2.120.0 | High risk | 20 | 2026-06-10 |
2.119.0 | High risk | 20 | 2026-06-10 |
2.118.0 | High risk | 20 | 2026-06-10 |
2.117.0 | High risk | 20 | 2026-06-10 |
2.116.0 | High risk | 20 | 2026-06-10 |
2.115.0 | High risk | 40 | 2026-06-10 |
2.114.0 | High risk | 40 | 2026-06-10 |
2.113.0 | High risk | 20 | 2026-06-10 |
2.56.0 | High risk | 20 | 2026-06-10 |
2.55.0 | High risk | 40 | 2026-06-10 |
2.51.0 | High risk | 20 | 2026-06-10 |
2.52.0 | High risk | 20 | 2026-06-10 |
2.50.0 | High risk | 40 | 2026-06-10 |
2.47.0 | High risk | 40 | 2026-06-10 |
2.49.0 | High risk | 20 | 2026-06-10 |
2.48.0 | High risk | 20 | 2026-06-10 |
2.43.0 | High risk | 20 | 2026-06-10 |
Campaign attribution
Block this in CI
pkgradar gate --ecosystem npm [email protected]