@electron/lint-roller 1.6.0 → 1.7.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 +2 -1
- package/dist/bin/lint-markdown-ts-check.js +69 -31
- package/dist/bin/lint-markdown-ts-check.js.map +1 -1
- package/dist/lib/helpers.d.ts +1 -0
- package/dist/lib/helpers.js +20 -1
- package/dist/lib/helpers.js.map +1 -1
- package/lib/helpers.ts +22 -0
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -40,7 +40,8 @@ detection of code blocks.
|
|
|
40
40
|
Markdown with `tsc`. Type checking can be disabled for specific code blocks
|
|
41
41
|
by adding `@ts-nocheck` to the info string, specific lines can be ignored
|
|
42
42
|
by adding `@ts-ignore=[<line1>,<line2>]` to the info string, and additional
|
|
43
|
-
globals can be defined with `@ts-type={name:type}`.
|
|
43
|
+
globals can be defined with `@ts-type={name:type}`. The `Window` object can
|
|
44
|
+
be extended with more types using `@ts-window-type={name:type}`.
|
|
44
45
|
|
|
45
46
|
## License
|
|
46
47
|
|
|
@@ -33,16 +33,49 @@ const ELECTRON_MODULES = [
|
|
|
33
33
|
];
|
|
34
34
|
const NODE_IMPORTS = "const childProcess = require('node:child_process'); const fs = require('node:fs'); const path = require('node:path')";
|
|
35
35
|
const DEFAULT_IMPORTS = `${NODE_IMPORTS}; const { ${ELECTRON_MODULES.join(', ')} } = require('electron');`;
|
|
36
|
+
async function typeCheckFiles(tempDir, filenameMapping, filenames) {
|
|
37
|
+
const tscExec = path.join(require.resolve('typescript'), '..', '..', 'bin', 'tsc');
|
|
38
|
+
const args = [
|
|
39
|
+
tscExec,
|
|
40
|
+
'--noEmit',
|
|
41
|
+
'--checkJs',
|
|
42
|
+
'--pretty',
|
|
43
|
+
path.join(tempDir, 'electron.d.ts'),
|
|
44
|
+
path.join(tempDir, 'ambient.d.ts'),
|
|
45
|
+
...filenames,
|
|
46
|
+
];
|
|
47
|
+
const { status, stderr, stdout } = await (0, helpers_1.spawnAsync)(process.execPath, args);
|
|
48
|
+
if (stderr) {
|
|
49
|
+
throw new Error(stderr);
|
|
50
|
+
}
|
|
51
|
+
// Replace the temp file paths with the original source filename
|
|
52
|
+
let correctedOutput = stdout.replace(new RegExp(`${path.relative(process.cwd(), tempDir)}${path.sep}`.replace(/\\/g, path.posix.sep), 'g'), '');
|
|
53
|
+
// Strip any @ts-expect-error/@ts-ignore comments we added
|
|
54
|
+
correctedOutput = correctedOutput.replace(/ \/\/ @ts-(?:expect-error|ignore)/g, '');
|
|
55
|
+
if (correctedOutput.trim()) {
|
|
56
|
+
for (const [filename, originalFilename] of filenameMapping.entries()) {
|
|
57
|
+
correctedOutput = correctedOutput.replace(new RegExp(path.basename(filename), 'g'), originalFilename);
|
|
58
|
+
}
|
|
59
|
+
console.log(correctedOutput);
|
|
60
|
+
}
|
|
61
|
+
return status;
|
|
62
|
+
}
|
|
63
|
+
function parseDirectives(directive, value) {
|
|
64
|
+
return (0, helpers_1.findCurlyBracedDirectives)(directive, value)
|
|
65
|
+
.map((parsed) => parsed.match(/^([^:\r\n\t\f\v ]+):\s?(.+)$/))
|
|
66
|
+
.filter((parsed) => parsed !== null);
|
|
67
|
+
}
|
|
36
68
|
// TODO(dsanders11): Refactor to make this script general purpose and
|
|
37
69
|
// not tied to Electron - will require passing in the list of modules
|
|
38
70
|
// as a CLI option, probably a file since there's a lot of info
|
|
39
71
|
async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
40
|
-
var _a, _b, _c, _d, _e
|
|
72
|
+
var _a, _b, _c, _d, _e;
|
|
41
73
|
const workspace = new markdown_1.DocsWorkspace(workspaceRoot, globs, ignoreGlobs);
|
|
42
74
|
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'electron-ts-check-'));
|
|
43
75
|
try {
|
|
44
76
|
const filenames = [];
|
|
45
77
|
const originalFilenames = new Map();
|
|
78
|
+
const windowTypeFilenames = new Set();
|
|
46
79
|
// Copy over the typings so that a relative path can be used
|
|
47
80
|
fs.copyFileSync(path.join(process.cwd(), 'electron.d.ts'), path.join(tempDir, 'electron.d.ts'));
|
|
48
81
|
let ambientModules = '';
|
|
@@ -57,9 +90,13 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
57
90
|
const tsNoCheck = (_a = codeBlock.meta) === null || _a === void 0 ? void 0 : _a.split(' ').includes('@ts-nocheck');
|
|
58
91
|
const tsExpectErrorLines = (_c = (_b = codeBlock.meta) === null || _b === void 0 ? void 0 : _b.match(/\B@ts-expect-error=\[([\d,]*)\]\B/)) === null || _c === void 0 ? void 0 : _c[1].split(',').map((line) => parseInt(line));
|
|
59
92
|
const tsIgnoreLines = (_e = (_d = codeBlock.meta) === null || _d === void 0 ? void 0 : _d.match(/\B@ts-ignore=\[([\d,]*)\]\B/)) === null || _e === void 0 ? void 0 : _e[1].split(',').map((line) => parseInt(line));
|
|
60
|
-
const tsTypeLines =
|
|
61
|
-
|
|
62
|
-
|
|
93
|
+
const tsTypeLines = codeBlock.meta ? parseDirectives('@ts-type', codeBlock.meta) : [];
|
|
94
|
+
const tsWindowTypeLines = codeBlock.meta
|
|
95
|
+
? parseDirectives('@ts-window-type', codeBlock.meta)
|
|
96
|
+
: [];
|
|
97
|
+
if (tsNoCheck &&
|
|
98
|
+
(tsExpectErrorLines || tsIgnoreLines || tsTypeLines.length || tsWindowTypeLines.length)) {
|
|
99
|
+
console.log(`${filepath}:${line}:${indent + 1}: Code block has both @ts-nocheck and @ts-expect-error/@ts-ignore/@ts-type/@ts-window-type, they conflict`);
|
|
63
100
|
errors = true;
|
|
64
101
|
continue;
|
|
65
102
|
}
|
|
@@ -82,6 +119,7 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
82
119
|
const codeLines = codeBlock.value.split('\n');
|
|
83
120
|
let insertedInitialLine = false;
|
|
84
121
|
let types = '';
|
|
122
|
+
let windowTypes = '';
|
|
85
123
|
const insertComment = (comment, line) => {
|
|
86
124
|
// Inserting additional lines will make the tsc output
|
|
87
125
|
// incorrect which would be a pain to manually adjust,
|
|
@@ -134,8 +172,8 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
134
172
|
const filename = path.join(tempDir, `${filepath
|
|
135
173
|
.replace(new RegExp(path.sep.replace(/\\/g, '\\\\'), 'g'), '-')
|
|
136
174
|
.replace(/\./g, '-')}-${line}.js`);
|
|
137
|
-
// Blocks can have @ts-type={name:type} in their info
|
|
138
|
-
//
|
|
175
|
+
// Blocks can have @ts-type={name:type} in their info
|
|
176
|
+
// string to declare a global variable for a block
|
|
139
177
|
if (tsTypeLines.length) {
|
|
140
178
|
// To support this feature, generate a random name for a
|
|
141
179
|
// module, generate an ambient module declaration for the
|
|
@@ -152,37 +190,37 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
152
190
|
.map((type) => type[1])
|
|
153
191
|
.join(',')}} = require('${moduleName}')`;
|
|
154
192
|
}
|
|
193
|
+
// Blocks can have @ts-window-type={name:type} in their
|
|
194
|
+
// info string to extend the Window object for a block
|
|
195
|
+
if (tsWindowTypeLines.length) {
|
|
196
|
+
const extraTypes = tsWindowTypeLines
|
|
197
|
+
.map((type) => ` ${type[1]}: ${type[2]};`)
|
|
198
|
+
.join('\n');
|
|
199
|
+
// Needs an export {} at the end to make TypeScript happy
|
|
200
|
+
windowTypes = `declare global {\n interface Window {\n${extraTypes}\n }\n}\n\nexport {};\n\n`;
|
|
201
|
+
fs.writeFileSync(filename.replace(/.js$/, '-window.d.ts'), windowTypes);
|
|
202
|
+
windowTypeFilenames.add(filename);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
filenames.push(filename);
|
|
206
|
+
}
|
|
155
207
|
fs.writeFileSync(filename, `// @ts-check\n${imports}\n${blankLines}${code}\n${types}`);
|
|
156
|
-
filenames.push(filename);
|
|
157
208
|
originalFilenames.set(filename, filepath);
|
|
158
209
|
}
|
|
159
210
|
}
|
|
160
211
|
fs.writeFileSync(path.join(tempDir, 'ambient.d.ts'), ambientModules);
|
|
212
|
+
// Files for code blocks with window types have to be processed separately
|
|
213
|
+
// since window types are by nature global, and would bleed between blocks
|
|
214
|
+
for (const filename of windowTypeFilenames) {
|
|
215
|
+
const status = await typeCheckFiles(tempDir, originalFilenames, [
|
|
216
|
+
filename.replace(/.js$/, '-window.d.ts'),
|
|
217
|
+
filename,
|
|
218
|
+
]);
|
|
219
|
+
errors = errors || status !== 0;
|
|
220
|
+
}
|
|
221
|
+
// For the rest of the files, run them all at once so it doesn't take forever
|
|
161
222
|
for (const chunk of (0, helpers_1.chunkFilenames)(filenames)) {
|
|
162
|
-
const
|
|
163
|
-
const args = [
|
|
164
|
-
tscExec,
|
|
165
|
-
'--noEmit',
|
|
166
|
-
'--checkJs',
|
|
167
|
-
'--pretty',
|
|
168
|
-
path.join(tempDir, 'electron.d.ts'),
|
|
169
|
-
path.join(tempDir, 'ambient.d.ts'),
|
|
170
|
-
...chunk,
|
|
171
|
-
];
|
|
172
|
-
const { status, stderr, stdout } = await (0, helpers_1.spawnAsync)(process.execPath, args);
|
|
173
|
-
if (stderr) {
|
|
174
|
-
throw new Error(stderr);
|
|
175
|
-
}
|
|
176
|
-
// Replace the temp file paths with the original source filename
|
|
177
|
-
let correctedOutput = stdout.replace(new RegExp(`${path.relative(process.cwd(), tempDir)}${path.sep}`.replace(/\\/g, path.posix.sep), 'g'), '');
|
|
178
|
-
// Strip any @ts-expect-error/@ts-ignore comments we added
|
|
179
|
-
correctedOutput = correctedOutput.replace(/ \/\/ @ts-(?:expect-error|ignore)/g, '');
|
|
180
|
-
if (correctedOutput.trim()) {
|
|
181
|
-
for (const [filename, originalFilename] of originalFilenames.entries()) {
|
|
182
|
-
correctedOutput = correctedOutput.replace(new RegExp(path.basename(filename), 'g'), originalFilename);
|
|
183
|
-
}
|
|
184
|
-
console.log(correctedOutput);
|
|
185
|
-
}
|
|
223
|
+
const status = await typeCheckFiles(tempDir, originalFilenames, chunk);
|
|
186
224
|
errors = errors || status !== 0;
|
|
187
225
|
}
|
|
188
226
|
return errors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint-markdown-ts-check.js","sourceRoot":"","sources":["../../bin/lint-markdown-ts-check.ts"],"names":[],"mappings":";;;AAEA,sCAAsC;AACtC,8BAA8B;AAC9B,8BAA8B;AAC9B,kCAAkC;AAElC,qCAAqC;AACrC,mCAAgC;AAChC,2CAAiC;AAEjC,
|
|
1
|
+
{"version":3,"file":"lint-markdown-ts-check.js","sourceRoot":"","sources":["../../bin/lint-markdown-ts-check.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/helpers.d.ts
CHANGED
|
@@ -10,3 +10,4 @@ export type SpawnAsyncResult = {
|
|
|
10
10
|
};
|
|
11
11
|
export declare function spawnAsync(command: string, args: string[], options?: childProcess.SpawnOptionsWithoutStdio | undefined): Promise<SpawnAsyncResult>;
|
|
12
12
|
export declare function chunkFilenames(filenames: string[], offset?: number): string[][];
|
|
13
|
+
export declare function findCurlyBracedDirectives(directive: string, str: string): string[];
|
package/dist/lib/helpers.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.chunkFilenames = exports.spawnAsync = exports.wrapOrphanObjectInParens = exports.removeParensWrappingOrphanedObject = exports.dynamicImport = void 0;
|
|
3
|
+
exports.findCurlyBracedDirectives = exports.chunkFilenames = exports.spawnAsync = exports.wrapOrphanObjectInParens = exports.removeParensWrappingOrphanedObject = exports.dynamicImport = void 0;
|
|
4
4
|
const childProcess = require("node:child_process");
|
|
5
5
|
const os = require("node:os");
|
|
6
|
+
const balanced_match_1 = require("balanced-match");
|
|
6
7
|
// Helper function to work around import issues with ESM module
|
|
7
8
|
// eslint-disable-next-line no-new-func
|
|
8
9
|
exports.dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
@@ -56,4 +57,22 @@ function chunkFilenames(filenames, offset = 0) {
|
|
|
56
57
|
}, [[]]);
|
|
57
58
|
}
|
|
58
59
|
exports.chunkFilenames = chunkFilenames;
|
|
60
|
+
function findCurlyBracedDirectives(directive, str) {
|
|
61
|
+
const prefix = `${directive}=`;
|
|
62
|
+
const matches = [];
|
|
63
|
+
let idx = 0;
|
|
64
|
+
while (idx >= 0 && idx < str.length) {
|
|
65
|
+
idx = str.indexOf(prefix, idx);
|
|
66
|
+
if (idx >= 0) {
|
|
67
|
+
idx = idx + prefix.length;
|
|
68
|
+
const val = str.slice(idx);
|
|
69
|
+
const range = (0, balanced_match_1.range)('{', '}', val);
|
|
70
|
+
if (range) {
|
|
71
|
+
matches.push(val.slice(range[0] + 1, range[1]).trim());
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return matches;
|
|
76
|
+
}
|
|
77
|
+
exports.findCurlyBracedDirectives = findCurlyBracedDirectives;
|
|
59
78
|
//# sourceMappingURL=helpers.js.map
|
package/dist/lib/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../lib/helpers.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AACnD,8BAA8B;AAE9B,+DAA+D;AAC/D,uCAAuC;AAC1B,QAAA,aAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;AAEnF,8BAA8B;AAC9B,SAAgB,kCAAkC,CAAC,KAAa;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC;AAFD,gFAEC;AAED,8BAA8B;AAC9B,SAAgB,wBAAwB,CAAC,KAAa;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAFD,4DAEC;AAQM,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,IAAc,EACd,OAA2D;IAE3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI;YACF,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;YAEjE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,iCAAM,KAAK,KAAE,MAAM,EAAE,IAAI,IAAG,CAAC,CAAC;YAClE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SAC3C;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,GAAG,CAAC,CAAC;SACb;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAxBD,gCAwBC;AAED,SAAgB,cAAc,CAAC,SAAmB,EAAE,SAAiB,CAAC;IACpE,wEAAwE;IACxE,2EAA2E;IAC3E,0EAA0E;IAC1E,sEAAsE;IACtE,0BAA0B;IAC1B,MAAM,wBAAwB,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;IAExF,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,gBAA4B,EAAE,QAAQ,EAAE,EAAE;QACzC,MAAM,SAAS,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CACtC,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,WAAW,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAC9D,CAAC,CACF,CAAC;QACF,IAAI,eAAe,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,wBAAwB,EAAE;YACpE,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;SACnC;aAAM;YACL,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC1B;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC,EACD,CAAC,EAAE,CAAC,CACL,CAAC;AACJ,CAAC;AAxBD,wCAwBC"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../lib/helpers.ts"],"names":[],"mappings":"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"}
|
package/lib/helpers.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as childProcess from 'node:child_process';
|
|
2
2
|
import * as os from 'node:os';
|
|
3
3
|
|
|
4
|
+
import { range as balancedRange } from 'balanced-match';
|
|
5
|
+
|
|
4
6
|
// Helper function to work around import issues with ESM module
|
|
5
7
|
// eslint-disable-next-line no-new-func
|
|
6
8
|
export const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
@@ -72,3 +74,23 @@ export function chunkFilenames(filenames: string[], offset: number = 0): string[
|
|
|
72
74
|
[[]],
|
|
73
75
|
);
|
|
74
76
|
}
|
|
77
|
+
|
|
78
|
+
export function findCurlyBracedDirectives(directive: string, str: string) {
|
|
79
|
+
const prefix = `${directive}=`;
|
|
80
|
+
const matches: string[] = [];
|
|
81
|
+
let idx = 0;
|
|
82
|
+
|
|
83
|
+
while (idx >= 0 && idx < str.length) {
|
|
84
|
+
idx = str.indexOf(prefix, idx);
|
|
85
|
+
if (idx >= 0) {
|
|
86
|
+
idx = idx + prefix.length;
|
|
87
|
+
const val = str.slice(idx);
|
|
88
|
+
const range = balancedRange('{', '}', val);
|
|
89
|
+
if (range) {
|
|
90
|
+
matches.push(val.slice(range[0] + 1, range[1]).trim());
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return matches;
|
|
96
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@electron/lint-roller",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Markdown linting helpers for Electron org repos",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=14.0.0"
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@continuous-auth/semantic-release-npm": "^3.0.0",
|
|
41
41
|
"@electron-internal/eslint-config": "^1.0.1",
|
|
42
|
+
"@types/balanced-match": "^1.0.3",
|
|
42
43
|
"@types/glob": "^8.0.1",
|
|
43
44
|
"@types/jest": "^29.4.0",
|
|
44
45
|
"@types/markdown-it": "^12.2.3",
|
|
@@ -55,6 +56,7 @@
|
|
|
55
56
|
},
|
|
56
57
|
"dependencies": {
|
|
57
58
|
"@dsanders11/vscode-markdown-languageservice": "^0.3.0",
|
|
59
|
+
"balanced-match": "^2.0.0",
|
|
58
60
|
"glob": "^8.1.0",
|
|
59
61
|
"markdown-it": "^13.0.1",
|
|
60
62
|
"markdownlint-cli": "^0.33.0",
|