UNPKG

2.18 kBJavaScriptView Raw
1/**
2 * @module
3 * @see {@link https://www.npmjs.com/package/addons-linter|Add-ons Linter}
4 */
5
6"use strict";
7
8const path = require("path");
9const linter = require("addons-linter");
10const SEVERITY = require("../severity");
11
12/**
13 * Initialise un checker pour Add-ons Linter.
14 *
15 * @returns {object} Le patron et les options par défaut.
16 */
17const configure = function () {
18 return {
19 "patterns": "*.xpi",
20 "linters": { "addons-linter": null }
21 };
22};
23
24/**
25 * Vérifie un fichier avec <strong>Add-ons Linter</strong>.
26 *
27 * @param {string} file Le fichier qui sera vérifié.
28 * @param {number} level Le niveau de sévérité minimum des notifications
29 * retournées.
30 * @returns {Promise.<Array.<object>>} Une promesse retournant la liste des
31 * notifications.
32 */
33const wrapper = async function (file, level) {
34 if (SEVERITY.ERROR > level) {
35 return [];
36 }
37
38 const config = {
39 "_": [file],
40 "logLevel": "error",
41 "stack": false,
42 "pretty": false,
43 "warningsAsErrors": false,
44 "metadata": false,
45 "output": "none",
46 "boring": false,
47 "selfHosted": false
48 };
49 const results = await linter.createInstance({ config }).run();
50 return [...results.errors,
51 ...results.warnings,
52 ...results.notices].map((result) => {
53 let severity;
54 switch (result["_type"]) {
55 case "error": severity = SEVERITY.ERROR; break;
56 case "warning": severity = SEVERITY.WARN; break;
57 case "notice": severity = SEVERITY.INFO;
58 }
59
60 return {
61 "file": undefined === result.file
62 ? file
63 : path.join(file, result.file),
64 "linter": "addons-linter",
65 "rule": result.code,
66 "severity": severity,
67 "message": result.message
68 };
69 }).filter((n) => level >= n.severity);
70};
71
72module.exports = { configure, wrapper };