@nodesecure/cli
Version:
Node.js security CLI
244 lines (238 loc) • 10.8 kB
HTML
<html lang="[[=z.lang]]">
<!-- Headers -->
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link rel="stylesheet" href="public/main.css" />
<link rel="stylesheet" href="workspaces/documentation-ui/src/css/main.css" />
<link rel="stylesheet" href="node_modules/highlight.js/styles/github.css" />
<script src="https://cdn.socket.io/4.7.5/socket.io.min.js"></script>
<script src="public/main.js" defer></script>
<title>NodeSecure</title>
<div id="lang" data-lang="[[=z.i18nLangName]]" style="display: none;"></div>
<main>
<nav id="aside">
<a class="nsecure-logo" href="https://github.com/NodeSecure" target="_blank" rel="noopener">
<svg width="60" height="60" viewBox="0 0 1324 776" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M662 0L998.042 194V582L662 776L325.958 582V194L662 0Z" fill="white" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M325.958 388V582L662 776L998.042 582V388H325.958Z"
fill="#3319D1" fill-opacity="0.74" />
<rect x="200" y="346.475" width="924" height="97.3244" fill="#00D1FF" />
<g filter="url(#filter0_f_401_16)">
<rect x="200" y="346.475" width="924" height="97.3244" fill="#00D1FF" />
</g>
<g filter="url(#filter1_f_401_16)">
<rect x="200" y="346.475" width="924" height="97.3244" fill="#00D1FF" />
</g>
<defs>
<filter id="filter0_f_401_16" x="0" y="146.475" width="1324" height="497.324" filterUnits="userSpaceOnUse"
color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix" />
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
<feGaussianBlur stdDeviation="100" result="effect1_foregroundBlur_401_16" />
</filter>
<filter id="filter1_f_401_16" x="0" y="146.475" width="1324" height="497.324" filterUnits="userSpaceOnUse"
color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix" />
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
<feGaussianBlur stdDeviation="100" result="effect1_foregroundBlur_401_16" />
</filter>
</defs>
</svg>
</a>
<ul id="view-navigation">
<li data-menu="home--view">
<i class="icon-home"></i>
<span></span>
</li>
<li data-menu="network--view">
<i class="icon-globe-alt-outline"></i>
<span></span>
</li>
<li data-menu="search--view">
<i class="icon-search"></i>
<span></span>
</li>
<li data-menu="settings--view" class="bottom-nav">
<i class="icon-cog"></i>
<span></span>
</li>
</ul>
</nav>
<nav id="search-nav">
</nav>
<section class="content">
<div id="home--view" class="view hidden"></div>
<div id="network--view" class="view hidden">
<div id="network-loader">
<div class="lds-ellipsis">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<p>[[=z.token('loading_nodes')]]</p>
<p>[[=z.token('please_wait')]]</p>
</div>
<div id="dependency-graph"></div>
<div id="network-locker">
<i class="icon-lock-open"></i>
<p>[[=z.token('network.unlocked')]]</p>
</div>
<div id="legend">
</div>
</div>
<div id="search--view" class="view hidden">
<div class="container">
<form>
<div class="form-group">
<i class="icon-search"></i>
<input type="text" id="package" name="package" placeholder="[[=z.token('search.registryPlaceholder')]]" autocomplete="off" required>
</div>
</form>
<div class="recent-packages">
<h2>[[=z.token('search.recentPackages')]]</h2>
</div>
<div class="cache-packages">
<h2>[[=z.token('search.packagesCache')]]</h2>
</div>
</div>
</div>
<div id="settings--view" class="view hidden">
<h1><i class="icon-cog"></i>[[=z.token('settings.general.title')]]</h1>
<form>
<div class="line">
<label for="default_package_menu">[[=z.token('settings.general.defaultPannel')]]:</label>
<select name="defaultPackageMenu" id="default_package_menu">
<option value="info">[[=z.token('package_info.navigation.overview')]]</option>
<option value="files">[[=z.token('package_info.navigation.files')]]</option>
<option value="dependencies">[[=z.token('package_info.navigation.dependencies')]]</option>
<option value="warnings">[[=z.token('package_info.navigation.warnings')]]</option>
<option value="vulnerabilities">[[=z.token('package_info.navigation.vulnerabilities')]]</option>
<option value="licenses" selected>[[=z.token('package_info.navigation.licenses')]]</option>
</select>
<p class="settings-line-title">[[=z.token('settings.general.network')]]:</p>
<div>
<input type="checkbox" id="show-friendly" name="show-friendly" />
<label for="show-friendly">[[=z.token('settings.general.showFriendly')]]</label>
</div>
</div>
<div class="line">
<p>[[=z.token('settings.general.warnings')]]:</p>
<div>
<input type="checkbox" checked name="warnings" value="parsing-error" id="parsing-error">
<label for="parsing-error">parsing error</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="unsafe-import" id="unsafe-import">
<label for="unsafe-import">unsafe import</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="unsafe-regex" id="unsafe-regex">
<label for="unsafe-regex">unsafe regex</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="unsafe-stmt" id="unsafe-stmt">
<label for="unsafe-stmt">unsafe stmt</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="unsafe-assign" id="unsafe-assign">
<label for="unsafe-assign">unsafe assign</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="encoded-literal" id="encoded-literal">
<label for="encoded-literal">encoded literal</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="short-identifiers" id="short-identifiers">
<label for="short-identifiers">short identifiers</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="suspicious-literal" id="suspicious-literal">
<label for="suspicious-literal">suspicious literal</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="suspicious-file" id="suspicious-file">
<label for="suspicious-file">suspicious file</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="obfuscated-code" id="obfuscated-code">
<label for="obfuscated-code">obfuscated code</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="weak-crypto" id="weak-crypto">
<label for="weak-crypto">weak crypto</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="shady-link" id="shady-link">
<label for="shady-link">shady link</label>
</div>
<div>
<input type="checkbox" checked name="warnings" value="zero-semver" id="zero-semver">
<label for="zero-semver">zero semver (0.x.x)</label>
</div>
</div>
<div class="line">
<p>[[=z.token('settings.general.flags')]]:</p>
<div>
<input type="checkbox" name="flags" value="hasManyPublishers" id="hasManyPublishers">
<label for="hasManyPublishers">👥 hasManyPublishers</label>
</div>
<div>
<input type="checkbox" name="flags" value="hasIndirectDependencies" id="hasIndirectDependencies">
<label for="hasIndirectDependencies">🌲 hasIndirectDependencies</label>
</div>
<div>
<input type="checkbox" name="flags" value="hasMissingOrUnusedDependency" id="hasMissingOrUnusedDependency">
<label for="hasMissingOrUnusedDependency">👀 hasMissingOrUnusedDependency</label>
</div>
<div>
<input type="checkbox" name="flags" value="isDead" id="isDead">
<label for="isDead">💀 isDead</label>
</div>
<div>
<input type="checkbox" name="flags" value="isOutdated" id="isOutdated">
<label for="isOutdated">⌚️ isOutdated</label>
</div>
<div>
<input type="checkbox" name="flags" id="flags" value="isDuplicate">
<label for="flags">🎭 isDuplicate</label>
</div>
</div>
</form>
<button class="save">[[=z.token('settings.general.save')]]</button>
<div class="line">
<h2><i class="icon-keyboard"></i>[[=z.token('settings.shortcuts.title')]]</h2>
<div class="shortcuts">
<div class="note">💡 [[=z.token('settings.shortcuts.blockquote')]]</div>
<div>
<input readonly id="home" class="hotkey">
<label for="home">[[=z.token('settings.shortcuts.goto')]] Home view</label>
</div>
<div>
<input readonly id="network" class="hotkey">
<label for="network">[[=z.token('settings.shortcuts.goto')]] Network view</label>
</div>
<div>
<input readonly id="search" class="hotkey">
<label for="settings">[[=z.token('settings.shortcuts.goto')]] Search view</label>
</div>
<div>
<input readonly id="settings" class="hotkey">
<label for="settings">[[=z.token('settings.shortcuts.goto')]] Settings view</label>
</div>
<div>
<input readonly id="wiki" class="hotkey">
<label for="wiki">[[=z.token('settings.shortcuts.openCloseWiki')]]</label>
</div>
<div>
<input readonly id="lock" class="hotkey">
<label for="lock">[[=z.token('settings.shortcuts.lock')]]</label>
</div>
</div>
</div>
</div>
<section id="package-info"></section>
</section>
</main>