@electron/lint-roller 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/bin/lint-markdown-standard.d.ts +2 -0
- package/dist/bin/lint-markdown-standard.js +140 -0
- package/dist/bin/lint-markdown-standard.js.map +1 -0
- package/dist/lib/markdown.d.ts +5 -1
- package/dist/lib/markdown.js +16 -2
- package/dist/lib/markdown.js.map +1 -1
- package/lib/markdown.ts +32 -3
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -28,10 +28,14 @@ across repos. To use the base config, extend it in `.markdownlint.json`:
|
|
|
28
28
|
`electron-markdownlint` is provided as a wrapper command which adds extra
|
|
29
29
|
rules found in this package automatically.
|
|
30
30
|
|
|
31
|
-
`electron-lint-markdown-links` is a command to further
|
|
31
|
+
`electron-lint-markdown-links` is a command to further lint links to find
|
|
32
32
|
broken relative links, including URL fragments, and can also be used to
|
|
33
33
|
check external links with the `--fetch-external-links` option.
|
|
34
34
|
|
|
35
|
+
`electron-lint-markdown-standard` is a command to lint JS code blocks in
|
|
36
|
+
Markdown with `standard`, like `standard-markdown` does, but with better
|
|
37
|
+
detection of code blocks.
|
|
38
|
+
|
|
35
39
|
## License
|
|
36
40
|
|
|
37
41
|
MIT
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const fs = require("node:fs");
|
|
5
|
+
const path = require("node:path");
|
|
6
|
+
const minimist = require("minimist");
|
|
7
|
+
const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
|
|
8
|
+
const vscode_uri_1 = require("vscode-uri");
|
|
9
|
+
const markdown_1 = require("../lib/markdown");
|
|
10
|
+
const DISABLED_RULES = [
|
|
11
|
+
'no-labels',
|
|
12
|
+
'no-lone-blocks',
|
|
13
|
+
'no-undef',
|
|
14
|
+
'no-unused-expressions',
|
|
15
|
+
'no-unused-vars',
|
|
16
|
+
'n/no-callback-literal',
|
|
17
|
+
];
|
|
18
|
+
// Helper function to work around import issues with ESM module
|
|
19
|
+
// eslint-disable-next-line no-new-func
|
|
20
|
+
const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
21
|
+
// From zeke/standard-markdown
|
|
22
|
+
function removeParensWrappingOrphanedObject(block) {
|
|
23
|
+
return block.replace(/^\(([{|[][\s\S]+[}|\]])\)$/gm, '$1');
|
|
24
|
+
}
|
|
25
|
+
// From zeke/standard-markdown
|
|
26
|
+
function wrapOrphanObjectInParens(block) {
|
|
27
|
+
return block.replace(/^([{|[][\s\S]+[}|\]])$/gm, '($1)');
|
|
28
|
+
}
|
|
29
|
+
async function main(workspaceRoot, globs, { fix = false, ignoreGlobs = [] }) {
|
|
30
|
+
const { default: standard } = await dynamicImport('standard');
|
|
31
|
+
const workspace = new markdown_1.DocsWorkspace(workspaceRoot, globs, ignoreGlobs);
|
|
32
|
+
let lastFilePath;
|
|
33
|
+
let totalErrors = 0;
|
|
34
|
+
for (const document of await workspace.getAllMarkdownDocuments()) {
|
|
35
|
+
const uri = vscode_uri_1.URI.parse(document.uri);
|
|
36
|
+
const filepath = workspace.getWorkspaceRelativePath(uri);
|
|
37
|
+
const changes = [];
|
|
38
|
+
const jsCodeBlocks = (await (0, markdown_1.getCodeBlocks)(document)).filter((code) => code.lang && ['javascript', 'js'].includes(code.lang.toLowerCase()));
|
|
39
|
+
for (const codeBlock of jsCodeBlocks) {
|
|
40
|
+
if (codeBlock.lang && codeBlock.lang.toLowerCase() !== codeBlock.lang) {
|
|
41
|
+
totalErrors += 1;
|
|
42
|
+
if (filepath !== lastFilePath) {
|
|
43
|
+
console.log(`\n ${filepath}`);
|
|
44
|
+
lastFilePath = filepath;
|
|
45
|
+
}
|
|
46
|
+
const line = codeBlock.position.start.line;
|
|
47
|
+
const column = codeBlock.position.start.column;
|
|
48
|
+
const lineInfo = `${line}:${column}: `.padEnd(10);
|
|
49
|
+
console.log(` ${lineInfo}Code block language identifier should be all lowercase`);
|
|
50
|
+
}
|
|
51
|
+
// Skip empty code blocks
|
|
52
|
+
if (!codeBlock.value.trim()) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const eslintDisable = `/* eslint-disable ${DISABLED_RULES.join(', ')} */`;
|
|
56
|
+
const results = await standard.lintText(`${eslintDisable}\n${wrapOrphanObjectInParens(codeBlock.value)}\n`, fix ? { fix: true } : undefined);
|
|
57
|
+
for (const result of results) {
|
|
58
|
+
totalErrors += result.errorCount + result.warningCount;
|
|
59
|
+
for (const message of result.messages) {
|
|
60
|
+
if (filepath !== lastFilePath) {
|
|
61
|
+
console.log(`\n ${filepath}`);
|
|
62
|
+
lastFilePath = filepath;
|
|
63
|
+
}
|
|
64
|
+
const line = codeBlock.position.start.line - 1;
|
|
65
|
+
const lineInfo = `${line + message.line}:${message.column}: `.padEnd(10);
|
|
66
|
+
console.log(` ${lineInfo}${message.message}`);
|
|
67
|
+
}
|
|
68
|
+
if (fix && result.output) {
|
|
69
|
+
const newText = removeParensWrappingOrphanedObject(result.output.slice(`${eslintDisable}\n`.length));
|
|
70
|
+
// The code block position includes the surrounding code fence,
|
|
71
|
+
// so use the line numbers inside of the code fence. Note that
|
|
72
|
+
// the code block positions are 1-based, but Range uses 0-based
|
|
73
|
+
const range = {
|
|
74
|
+
start: {
|
|
75
|
+
line: codeBlock.position.start.line,
|
|
76
|
+
character: 0,
|
|
77
|
+
},
|
|
78
|
+
end: {
|
|
79
|
+
line: codeBlock.position.end.line - 2,
|
|
80
|
+
character: Number.POSITIVE_INFINITY,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
changes.push({ range, newText });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (fix && changes.length) {
|
|
88
|
+
console.log(`File has changed: ${workspace.getWorkspaceRelativePath(uri)}`);
|
|
89
|
+
fs.writeFileSync(uri.fsPath, vscode_languageserver_textdocument_1.TextDocument.applyEdits(document, changes));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
console.log(`\nThere are ${totalErrors} errors in '${workspaceRoot}'`);
|
|
93
|
+
return totalErrors > 0;
|
|
94
|
+
}
|
|
95
|
+
function parseCommandLine() {
|
|
96
|
+
const showUsage = (arg) => {
|
|
97
|
+
if (!arg || arg.startsWith('-')) {
|
|
98
|
+
console.log('Usage: electron-lint-markdown-standard --root <dir> <globs> [-h|--help] [--fix]' +
|
|
99
|
+
'[--ignore <globs>] [--ignore-path <path>]');
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
};
|
|
104
|
+
const opts = minimist(process.argv.slice(2), {
|
|
105
|
+
boolean: ['help', 'fix'],
|
|
106
|
+
string: ['root', 'ignore', 'ignore-path'],
|
|
107
|
+
unknown: showUsage,
|
|
108
|
+
});
|
|
109
|
+
if (opts.help || !opts.root || !opts._.length)
|
|
110
|
+
showUsage();
|
|
111
|
+
return opts;
|
|
112
|
+
}
|
|
113
|
+
if (require.main === module) {
|
|
114
|
+
const opts = parseCommandLine();
|
|
115
|
+
if (opts.ignore) {
|
|
116
|
+
opts.ignore = Array.isArray(opts.ignore) ? opts.ignore : [opts.ignore];
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
opts.ignore = [];
|
|
120
|
+
}
|
|
121
|
+
if (opts['ignore-path']) {
|
|
122
|
+
const ignores = fs.readFileSync(path.resolve(opts['ignore-path']), { encoding: 'utf-8' });
|
|
123
|
+
for (const ignore of ignores.split('\n')) {
|
|
124
|
+
opts.ignore.push(ignore.trimEnd());
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
main(path.resolve(process.cwd(), opts.root), opts._, {
|
|
128
|
+
fix: opts.fix,
|
|
129
|
+
ignoreGlobs: opts.ignore,
|
|
130
|
+
})
|
|
131
|
+
.then((errors) => {
|
|
132
|
+
if (errors)
|
|
133
|
+
process.exit(1);
|
|
134
|
+
})
|
|
135
|
+
.catch((error) => {
|
|
136
|
+
console.error(error);
|
|
137
|
+
process.exit(1);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=lint-markdown-standard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-markdown-standard.js","sourceRoot":"","sources":["../../bin/lint-markdown-standard.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/markdown.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { FileStat, IMdLinkComputer, IMdParser, ITextDocument, IWorkspace, MdLink } from '@dsanders11/vscode-markdown-languageservice';
|
|
2
2
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
3
3
|
import { URI } from 'vscode-uri';
|
|
4
|
+
import type { Code } from 'mdast';
|
|
5
|
+
export type { Code };
|
|
4
6
|
export declare class MarkdownParser implements IMdParser {
|
|
5
7
|
slugifier: import("@dsanders11/vscode-markdown-languageservice").ISlugifier;
|
|
6
8
|
tokenize(document: TextDocument): Promise<import("markdown-it/lib/token")[]>;
|
|
@@ -13,8 +15,9 @@ export declare class DocsWorkspace implements IWorkspace {
|
|
|
13
15
|
readonly ignoreGlobs: string[];
|
|
14
16
|
constructor(root: string, globs: string[], ignoreGlobs?: string[]);
|
|
15
17
|
get workspaceFolders(): URI[];
|
|
16
|
-
getAllMarkdownDocuments(): Promise<Iterable<
|
|
18
|
+
getAllMarkdownDocuments(): Promise<Iterable<TextDocument>>;
|
|
17
19
|
hasMarkdownDocument(resource: URI): boolean;
|
|
20
|
+
getWorkspaceRelativePath(resource: URI): string;
|
|
18
21
|
openMarkdownDocument(resource: URI): Promise<TextDocument | undefined>;
|
|
19
22
|
stat(resource: URI): Promise<FileStat | undefined>;
|
|
20
23
|
readDirectory(): Promise<Iterable<readonly [string, FileStat]>>;
|
|
@@ -28,3 +31,4 @@ export declare class MarkdownLinkComputer implements IMdLinkComputer {
|
|
|
28
31
|
constructor(workspace: IWorkspace);
|
|
29
32
|
getAllLinks(document: ITextDocument): Promise<MdLink[]>;
|
|
30
33
|
}
|
|
34
|
+
export declare function getCodeBlocks(document: ITextDocument): Promise<Code[]>;
|
package/dist/lib/markdown.js
CHANGED
|
@@ -6,7 +6,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
6
6
|
};
|
|
7
7
|
var _DocsWorkspace_onDidChangeMarkdownDocument, _DocsWorkspace_onDidCreateMarkdownDocument, _DocsWorkspace_onDidDeleteMarkdownDocument, _MarkdownLinkComputer_instances, _MarkdownLinkComputer_getInlineLinks, _MarkdownLinkComputer_getReferenceLinks, _MarkdownLinkComputer_getLinkDefinitions;
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.MarkdownLinkComputer = exports.DocsWorkspace = exports.MarkdownParser = void 0;
|
|
9
|
+
exports.getCodeBlocks = exports.MarkdownLinkComputer = exports.DocsWorkspace = exports.MarkdownParser = void 0;
|
|
10
10
|
const fs = require("node:fs");
|
|
11
11
|
const path = require("node:path");
|
|
12
12
|
const glob = require("glob");
|
|
@@ -91,11 +91,14 @@ class DocsWorkspace {
|
|
|
91
91
|
return this.documentCache.values();
|
|
92
92
|
}
|
|
93
93
|
hasMarkdownDocument(resource) {
|
|
94
|
-
const relativePath =
|
|
94
|
+
const relativePath = this.getWorkspaceRelativePath(resource);
|
|
95
95
|
return (!relativePath.startsWith('..') &&
|
|
96
96
|
!path.isAbsolute(relativePath) &&
|
|
97
97
|
fs.existsSync(resource.fsPath));
|
|
98
98
|
}
|
|
99
|
+
getWorkspaceRelativePath(resource) {
|
|
100
|
+
return path.relative(path.resolve(this.root), resource.fsPath);
|
|
101
|
+
}
|
|
99
102
|
async openMarkdownDocument(resource) {
|
|
100
103
|
if (!this.documentCache.has(resource.fsPath)) {
|
|
101
104
|
try {
|
|
@@ -231,4 +234,15 @@ _MarkdownLinkComputer_instances = new WeakSet(), _MarkdownLinkComputer_getInline
|
|
|
231
234
|
});
|
|
232
235
|
return links;
|
|
233
236
|
};
|
|
237
|
+
async function getCodeBlocks(document) {
|
|
238
|
+
const { fromMarkdown } = (await dynamicImport('mdast-util-from-markdown'));
|
|
239
|
+
const { visit } = (await dynamicImport('unist-util-visit'));
|
|
240
|
+
const tree = fromMarkdown(document.getText());
|
|
241
|
+
const codeBlocks = [];
|
|
242
|
+
visit(tree, (node) => node.type === 'code', (node) => {
|
|
243
|
+
codeBlocks.push(node);
|
|
244
|
+
});
|
|
245
|
+
return codeBlocks;
|
|
246
|
+
}
|
|
247
|
+
exports.getCodeBlocks = getCodeBlocks;
|
|
234
248
|
//# sourceMappingURL=markdown.js.map
|
package/dist/lib/markdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../lib/markdown.ts"],"names":[],"mappings":";;;;;;;;;AAAA,8BAA8B;AAC9B,kCAAkC;AAElC,6BAA6B;AAC7B,0CAA0C;AAC1C,iGAaqD;AACrD,iEAAuD;AACvD,2FAAkE;AAClE,2CAAiC;
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../lib/markdown.ts"],"names":[],"mappings":"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"}
|
package/lib/markdown.ts
CHANGED
|
@@ -21,11 +21,13 @@ import { Emitter, Range } from 'vscode-languageserver';
|
|
|
21
21
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
22
22
|
import { URI } from 'vscode-uri';
|
|
23
23
|
|
|
24
|
-
import type { Definition, ImageReference, Link, LinkReference } from 'mdast';
|
|
24
|
+
import type { Code, Definition, ImageReference, Link, LinkReference } from 'mdast';
|
|
25
25
|
import type { fromMarkdown as FromMarkdownFunction } from 'mdast-util-from-markdown';
|
|
26
26
|
import type { Node, Position } from 'unist';
|
|
27
27
|
import type { visit as VisitFunction } from 'unist-util-visit';
|
|
28
28
|
|
|
29
|
+
export type { Code };
|
|
30
|
+
|
|
29
31
|
// Helper function to work around import issues with ESM modules and ts-node
|
|
30
32
|
// eslint-disable-next-line no-new-func
|
|
31
33
|
const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
@@ -99,7 +101,7 @@ export class DocsWorkspace implements IWorkspace {
|
|
|
99
101
|
return [URI.file(this.root)];
|
|
100
102
|
}
|
|
101
103
|
|
|
102
|
-
async getAllMarkdownDocuments(): Promise<Iterable<
|
|
104
|
+
async getAllMarkdownDocuments(): Promise<Iterable<TextDocument>> {
|
|
103
105
|
const files = this.globs.flatMap((pattern) =>
|
|
104
106
|
glob.sync(pattern, { ignore: this.ignoreGlobs, absolute: true, cwd: this.root }),
|
|
105
107
|
);
|
|
@@ -119,7 +121,7 @@ export class DocsWorkspace implements IWorkspace {
|
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
hasMarkdownDocument(resource: URI) {
|
|
122
|
-
const relativePath =
|
|
124
|
+
const relativePath = this.getWorkspaceRelativePath(resource);
|
|
123
125
|
return (
|
|
124
126
|
!relativePath.startsWith('..') &&
|
|
125
127
|
!path.isAbsolute(relativePath) &&
|
|
@@ -127,6 +129,10 @@ export class DocsWorkspace implements IWorkspace {
|
|
|
127
129
|
);
|
|
128
130
|
}
|
|
129
131
|
|
|
132
|
+
getWorkspaceRelativePath(resource: URI) {
|
|
133
|
+
return path.relative(path.resolve(this.root), resource.fsPath);
|
|
134
|
+
}
|
|
135
|
+
|
|
130
136
|
async openMarkdownDocument(resource: URI) {
|
|
131
137
|
if (!this.documentCache.has(resource.fsPath)) {
|
|
132
138
|
try {
|
|
@@ -330,3 +336,26 @@ export class MarkdownLinkComputer implements IMdLinkComputer {
|
|
|
330
336
|
return links;
|
|
331
337
|
}
|
|
332
338
|
}
|
|
339
|
+
|
|
340
|
+
export async function getCodeBlocks(document: ITextDocument): Promise<Code[]> {
|
|
341
|
+
const { fromMarkdown } = (await dynamicImport('mdast-util-from-markdown')) as {
|
|
342
|
+
fromMarkdown: typeof FromMarkdownFunction;
|
|
343
|
+
};
|
|
344
|
+
const { visit } = (await dynamicImport('unist-util-visit')) as {
|
|
345
|
+
visit: typeof VisitFunction;
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
const tree = fromMarkdown(document.getText());
|
|
349
|
+
|
|
350
|
+
const codeBlocks: Code[] = [];
|
|
351
|
+
|
|
352
|
+
visit(
|
|
353
|
+
tree,
|
|
354
|
+
(node) => node.type === 'code',
|
|
355
|
+
(node: Node) => {
|
|
356
|
+
codeBlocks.push(node as Code);
|
|
357
|
+
},
|
|
358
|
+
);
|
|
359
|
+
|
|
360
|
+
return codeBlocks;
|
|
361
|
+
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@electron/lint-roller",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Markdown linting helpers for Electron org repos",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=14.0.0"
|
|
7
7
|
},
|
|
8
8
|
"bin": {
|
|
9
9
|
"electron-markdownlint": "./dist/bin/markdownlint-cli-wrapper.js",
|
|
10
|
-
"electron-lint-markdown-links": "./dist/bin/lint-markdown-links.js"
|
|
10
|
+
"electron-lint-markdown-links": "./dist/bin/lint-markdown-links.js",
|
|
11
|
+
"electron-lint-markdown-standard": "./dist/bin/lint-markdown-standard.js"
|
|
11
12
|
},
|
|
12
13
|
"directories": {
|
|
13
14
|
"lib": "lib"
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"mdast-util-from-markdown": "^1.3.0",
|
|
60
61
|
"minimist": "^1.2.8",
|
|
61
62
|
"node-fetch": "^2.6.9",
|
|
63
|
+
"standard": "^17.0.0",
|
|
62
64
|
"unist-util-visit": "^4.1.2",
|
|
63
65
|
"vscode-languageserver": "^8.1.0",
|
|
64
66
|
"vscode-languageserver-textdocument": "^1.0.8",
|