Skip to content

Commit 648fcfc

Browse files
authored
feat(settings): dynamically generate the warning checkboxes based on the js-x-ray warnings (#507)
* feat(setttings) added dynamic warnings * feat(settings) added dynamic warning checkbox
1 parent 803de75 commit 648fcfc

File tree

3 files changed

+32
-54
lines changed

3 files changed

+32
-54
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
"@nodesecure/documentation-ui": "^1.3.0",
8383
"@nodesecure/flags": "^3.0.3",
8484
"@nodesecure/i18n": "^4.0.1",
85-
"@nodesecure/js-x-ray": "^8.2.0",
85+
"@nodesecure/js-x-ray": "^9.0.0",
8686
"@nodesecure/licenses-conformance": "^2.1.0",
8787
"@nodesecure/npm-registry-sdk": "^3.0.0",
8888
"@nodesecure/ossf-scorecard-sdk": "^3.2.1",

public/components/views/settings/settings.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
// Import Third-party Dependencies
22
import { getJSON } from "@nodesecure/vis-network";
3+
import { warnings } from "@nodesecure/js-x-ray/warnings";
4+
5+
// Import Internal Dependencies
6+
import * as utils from "../../../common/utils.js";
37

48
// CONSTANTS
59
const kAllowedHotKeys = new Set([
@@ -21,6 +25,7 @@ export class Settings {
2125
static defaultMenuName = "info";
2226

2327
constructor() {
28+
this.#generateWarningCheckboxes();
2429
this.saveEnabled = false;
2530
this.dom = {
2631
/** @type {HTMLSelectElement} */
@@ -95,6 +100,31 @@ export class Settings {
95100
this.updateFormHotKeys(hotkeys);
96101
}
97102

103+
#generateWarningCheckboxes() {
104+
const warningsSettings = document.getElementById("warnings-settings");
105+
const checkboxes = Object.keys(warnings).map((id) => utils.createDOMElement("div", {
106+
childs: [
107+
utils.createDOMElement("input", {
108+
attributes: {
109+
id,
110+
value: id,
111+
type: "checkbox",
112+
checked: true,
113+
name: "warnings"
114+
}
115+
}),
116+
utils.createDOMElement("label", {
117+
attributes: {
118+
for: id
119+
},
120+
text: id.replaceAll("-", " ")
121+
})
122+
]
123+
})
124+
);
125+
warningsSettings.append(...checkboxes);
126+
}
127+
98128
updateNavigationHotKey(hotkeys) {
99129
const navigationElement = document.getElementById("view-navigation");
100130
navigationElement.querySelectorAll("span").forEach((span) => {

views/index.html

Lines changed: 1 addition & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -122,60 +122,8 @@ <h1><i class="icon-cog"></i>[[=z.token('settings.general.title')]]</h1>
122122
<label for="show-friendly">[[=z.token('settings.general.showFriendly')]]</label>
123123
</div>
124124
</div>
125-
<div class="line">
125+
<div class="line" id="warnings-settings">
126126
<p>[[=z.token('settings.general.warnings')]]:</p>
127-
<div>
128-
<input type="checkbox" checked name="warnings" value="parsing-error" id="parsing-error">
129-
<label for="parsing-error">parsing error</label>
130-
</div>
131-
<div>
132-
<input type="checkbox" checked name="warnings" value="unsafe-import" id="unsafe-import">
133-
<label for="unsafe-import">unsafe import</label>
134-
</div>
135-
<div>
136-
<input type="checkbox" checked name="warnings" value="unsafe-regex" id="unsafe-regex">
137-
<label for="unsafe-regex">unsafe regex</label>
138-
</div>
139-
<div>
140-
<input type="checkbox" checked name="warnings" value="unsafe-stmt" id="unsafe-stmt">
141-
<label for="unsafe-stmt">unsafe stmt</label>
142-
</div>
143-
<div>
144-
<input type="checkbox" checked name="warnings" value="unsafe-assign" id="unsafe-assign">
145-
<label for="unsafe-assign">unsafe assign</label>
146-
</div>
147-
<div>
148-
<input type="checkbox" checked name="warnings" value="encoded-literal" id="encoded-literal">
149-
<label for="encoded-literal">encoded literal</label>
150-
</div>
151-
<div>
152-
<input type="checkbox" checked name="warnings" value="short-identifiers" id="short-identifiers">
153-
<label for="short-identifiers">short identifiers</label>
154-
</div>
155-
<div>
156-
<input type="checkbox" checked name="warnings" value="suspicious-literal" id="suspicious-literal">
157-
<label for="suspicious-literal">suspicious literal</label>
158-
</div>
159-
<div>
160-
<input type="checkbox" checked name="warnings" value="suspicious-file" id="suspicious-file">
161-
<label for="suspicious-file">suspicious file</label>
162-
</div>
163-
<div>
164-
<input type="checkbox" checked name="warnings" value="obfuscated-code" id="obfuscated-code">
165-
<label for="obfuscated-code">obfuscated code</label>
166-
</div>
167-
<div>
168-
<input type="checkbox" checked name="warnings" value="weak-crypto" id="weak-crypto">
169-
<label for="weak-crypto">weak crypto</label>
170-
</div>
171-
<div>
172-
<input type="checkbox" checked name="warnings" value="shady-link" id="shady-link">
173-
<label for="shady-link">shady link</label>
174-
</div>
175-
<div>
176-
<input type="checkbox" checked name="warnings" value="zero-semver" id="zero-semver">
177-
<label for="zero-semver">zero semver (0.x.x)</label>
178-
</div>
179127
</div>
180128
<div class="line">
181129
<p>[[=z.token('settings.general.flags')]]:</p>

0 commit comments

Comments
 (0)