1 | /**
|
2 | * @module
|
3 | * @see {@link https://www.npmjs.com/package/json-lint|JSON-Lint}
|
4 | */
|
5 |
|
6 | ;
|
7 |
|
8 | const fs = require("fs").promises;
|
9 | const jsonlint = require("json-lint");
|
10 | const SEVERITY = require("../severity");
|
11 |
|
12 | /**
|
13 | * Initialise un checker pour JSON-Lint.
|
14 | *
|
15 | * @returns {object} Le patron et les options par défaut.
|
16 | */
|
17 | const configure = function () {
|
18 | return {
|
19 | "patterns": "*.json",
|
20 | "linters": { "json-lint": null }
|
21 | };
|
22 | };
|
23 |
|
24 | /**
|
25 | * Vérifie un fichier avec le linter <strong>JSON-Lint</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 | * @param {object} options Les options qui seront passées au linter.
|
31 | * @returns {Promise.<Array.<object>>} Une promesse retournant la liste des
|
32 | * notifications.
|
33 | */
|
34 | const wrapper = async function (file, level, options) {
|
35 | if (SEVERITY.ERROR > level) {
|
36 | return [];
|
37 | }
|
38 |
|
39 | const source = await fs.readFile(file, "utf-8");
|
40 | const result = jsonlint(source, options);
|
41 | if ("error" in result) {
|
42 | return [{
|
43 | "file": file,
|
44 | "linter": "json-lint",
|
45 | "message": result.error,
|
46 | "locations": [{
|
47 | "line": result.line,
|
48 | "column": result.character
|
49 | }]
|
50 | }];
|
51 | }
|
52 |
|
53 | return [];
|
54 | };
|
55 |
|
56 | module.exports = { configure, wrapper };
|