@electron/lint-roller 1.6.1 → 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
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,6 +33,38 @@ 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
|
|
@@ -43,6 +75,7 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
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,13 +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 = codeBlock.meta
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
.filter((directive) => directive !== null)
|
|
93
|
+
const tsTypeLines = codeBlock.meta ? parseDirectives('@ts-type', codeBlock.meta) : [];
|
|
94
|
+
const tsWindowTypeLines = codeBlock.meta
|
|
95
|
+
? parseDirectives('@ts-window-type', codeBlock.meta)
|
|
64
96
|
: [];
|
|
65
|
-
if (tsNoCheck &&
|
|
66
|
-
|
|
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`);
|
|
67
100
|
errors = true;
|
|
68
101
|
continue;
|
|
69
102
|
}
|
|
@@ -86,6 +119,7 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
86
119
|
const codeLines = codeBlock.value.split('\n');
|
|
87
120
|
let insertedInitialLine = false;
|
|
88
121
|
let types = '';
|
|
122
|
+
let windowTypes = '';
|
|
89
123
|
const insertComment = (comment, line) => {
|
|
90
124
|
// Inserting additional lines will make the tsc output
|
|
91
125
|
// incorrect which would be a pain to manually adjust,
|
|
@@ -138,8 +172,8 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
138
172
|
const filename = path.join(tempDir, `${filepath
|
|
139
173
|
.replace(new RegExp(path.sep.replace(/\\/g, '\\\\'), 'g'), '-')
|
|
140
174
|
.replace(/\./g, '-')}-${line}.js`);
|
|
141
|
-
// Blocks can have @ts-type={name:type} in their info
|
|
142
|
-
//
|
|
175
|
+
// Blocks can have @ts-type={name:type} in their info
|
|
176
|
+
// string to declare a global variable for a block
|
|
143
177
|
if (tsTypeLines.length) {
|
|
144
178
|
// To support this feature, generate a random name for a
|
|
145
179
|
// module, generate an ambient module declaration for the
|
|
@@ -156,37 +190,37 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
156
190
|
.map((type) => type[1])
|
|
157
191
|
.join(',')}} = require('${moduleName}')`;
|
|
158
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
|
+
}
|
|
159
207
|
fs.writeFileSync(filename, `// @ts-check\n${imports}\n${blankLines}${code}\n${types}`);
|
|
160
|
-
filenames.push(filename);
|
|
161
208
|
originalFilenames.set(filename, filepath);
|
|
162
209
|
}
|
|
163
210
|
}
|
|
164
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
|
|
165
222
|
for (const chunk of (0, helpers_1.chunkFilenames)(filenames)) {
|
|
166
|
-
const
|
|
167
|
-
const args = [
|
|
168
|
-
tscExec,
|
|
169
|
-
'--noEmit',
|
|
170
|
-
'--checkJs',
|
|
171
|
-
'--pretty',
|
|
172
|
-
path.join(tempDir, 'electron.d.ts'),
|
|
173
|
-
path.join(tempDir, 'ambient.d.ts'),
|
|
174
|
-
...chunk,
|
|
175
|
-
];
|
|
176
|
-
const { status, stderr, stdout } = await (0, helpers_1.spawnAsync)(process.execPath, args);
|
|
177
|
-
if (stderr) {
|
|
178
|
-
throw new Error(stderr);
|
|
179
|
-
}
|
|
180
|
-
// Replace the temp file paths with the original source filename
|
|
181
|
-
let correctedOutput = stdout.replace(new RegExp(`${path.relative(process.cwd(), tempDir)}${path.sep}`.replace(/\\/g, path.posix.sep), 'g'), '');
|
|
182
|
-
// Strip any @ts-expect-error/@ts-ignore comments we added
|
|
183
|
-
correctedOutput = correctedOutput.replace(/ \/\/ @ts-(?:expect-error|ignore)/g, '');
|
|
184
|
-
if (correctedOutput.trim()) {
|
|
185
|
-
for (const [filename, originalFilename] of originalFilenames.entries()) {
|
|
186
|
-
correctedOutput = correctedOutput.replace(new RegExp(path.basename(filename), 'g'), originalFilename);
|
|
187
|
-
}
|
|
188
|
-
console.log(correctedOutput);
|
|
189
|
-
}
|
|
223
|
+
const status = await typeCheckFiles(tempDir, originalFilenames, chunk);
|
|
190
224
|
errors = errors || status !== 0;
|
|
191
225
|
}
|
|
192
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,4CAKwB;AACxB,8CAA+D;AAM/D,MAAM,gBAAgB,GAAG;IACvB,KAAK;IACL,aAAa;IACb,eAAe;IACf,eAAe;IACf,QAAQ;IACR,eAAe;IACf,SAAS;IACT,aAAa;IACb,MAAM;IACN,oBAAoB;IACpB,aAAa;IACb,KAAK;IACL,UAAU;IACV,SAAS;IACT,mBAAmB;IACnB,MAAM;IACN,gBAAgB;IAChB,UAAU;IACV,cAAc;CACf,CAAC;AAEF,MAAM,YAAY,GAChB,sHAAsH,CAAC;AAEzH,MAAM,eAAe,GAAG,GAAG,YAAY,aAAa,gBAAgB,CAAC,IAAI,CACvE,IAAI,CACL,2BAA2B,CAAC;AAE7B,qEAAqE;AACrE,qEAAqE;AACrE,+DAA+D;AAC/D,KAAK,UAAU,IAAI,CAAC,aAAqB,EAAE,KAAe,EAAE,EAAE,WAAW,GAAG,EAAE,EAAW;;IACvF,MAAM,SAAS,GAAG,IAAI,wBAAa,CAAC,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAE7E,IAAI;QACF,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"lint-markdown-ts-check.js","sourceRoot":"","sources":["../../bin/lint-markdown-ts-check.ts"],"names":[],"mappings":"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"}
|