UNPKG

1.49 kBJavaScriptView Raw
1/**
2 * @module
3 * @see {@link https://www.npmjs.com/package/json-lint|JSON-Lint}
4 */
5
6"use strict";
7
8const fs = require("fs").promises;
9const jsonlint = require("json-lint");
10const 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 */
17const 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 */
34const 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
56module.exports = { configure, wrapper };