@electron/lint-roller 1.3.2 → 1.4.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
|
@@ -38,8 +38,9 @@ detection of code blocks.
|
|
|
38
38
|
|
|
39
39
|
`electron-lint-markdown-ts-check` is a command to type check JS code blocks in
|
|
40
40
|
Markdown with `tsc`. Type checking can be disabled for specific code blocks
|
|
41
|
-
by adding `@ts-nocheck` to the info string,
|
|
42
|
-
by adding `@ts-ignore=[<line1>,<line2>]` to the info string
|
|
41
|
+
by adding `@ts-nocheck` to the info string, specific lines can be ignored
|
|
42
|
+
by adding `@ts-ignore=[<line1>,<line2>]` to the info string, and additional
|
|
43
|
+
globals can be defined with `@ts-type={name:type}`.
|
|
43
44
|
|
|
44
45
|
## License
|
|
45
46
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const crypto = require("node:crypto");
|
|
4
5
|
const fs = require("node:fs");
|
|
5
6
|
const os = require("node:os");
|
|
6
7
|
const path = require("node:path");
|
|
@@ -36,7 +37,7 @@ const DEFAULT_IMPORTS = `${NODE_IMPORTS}; const { ${ELECTRON_MODULES.join(', ')}
|
|
|
36
37
|
// not tied to Electron - will require passing in the list of modules
|
|
37
38
|
// as a CLI option, probably a file since there's a lot of info
|
|
38
39
|
async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
39
|
-
var _a, _b, _c;
|
|
40
|
+
var _a, _b, _c, _d, _e;
|
|
40
41
|
const workspace = new markdown_1.DocsWorkspace(workspaceRoot, globs, ignoreGlobs);
|
|
41
42
|
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'electron-ts-check-'));
|
|
42
43
|
try {
|
|
@@ -44,6 +45,7 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
44
45
|
const originalFilenames = new Map();
|
|
45
46
|
// Copy over the typings so that a relative path can be used
|
|
46
47
|
fs.copyFileSync(path.join(process.cwd(), 'electron.d.ts'), path.join(tempDir, 'electron.d.ts'));
|
|
48
|
+
let ambientModules = '';
|
|
47
49
|
let errors = false;
|
|
48
50
|
for (const document of await workspace.getAllMarkdownDocuments()) {
|
|
49
51
|
const uri = vscode_uri_1.URI.parse(document.uri);
|
|
@@ -54,8 +56,9 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
54
56
|
const indent = codeBlock.position.start.column - 1;
|
|
55
57
|
const tsNoCheck = (_a = codeBlock.meta) === null || _a === void 0 ? void 0 : _a.split(' ').includes('@ts-nocheck');
|
|
56
58
|
const tsIgnoreLines = (_c = (_b = codeBlock.meta) === null || _b === void 0 ? void 0 : _b.match(/\B@ts-ignore=\[([\d,]*)\]\B/)) === null || _c === void 0 ? void 0 : _c[1].split(',').map((line) => parseInt(line));
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
const tsTypeLines = Array.from((_e = (_d = codeBlock.meta) === null || _d === void 0 ? void 0 : _d.matchAll(/\B@ts-type={([^:\r\n\t\f\v ]+):\s?([^}]+)}\B/g)) !== null && _e !== void 0 ? _e : []);
|
|
60
|
+
if (tsNoCheck && (tsIgnoreLines || tsTypeLines.length)) {
|
|
61
|
+
console.log(`${filepath}:${line}:${indent + 1}: Code block has both @ts-nocheck and @ts-ignore/@ts-type, they conflict`);
|
|
59
62
|
errors = true;
|
|
60
63
|
continue;
|
|
61
64
|
}
|
|
@@ -69,6 +72,7 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
69
72
|
}
|
|
70
73
|
const codeLines = codeBlock.value.split('\n');
|
|
71
74
|
let firstLineIsTsIgnore = false;
|
|
75
|
+
let types = '';
|
|
72
76
|
// Blocks can have @ts-ignore=[1,10,50] in their info string
|
|
73
77
|
// (1-based lines) to insert an "// @ts-ignore" comment before
|
|
74
78
|
// specified lines, in order to ignore specific lines (like
|
|
@@ -106,23 +110,49 @@ async function main(workspaceRoot, globs, { ignoreGlobs = [] }) {
|
|
|
106
110
|
// imports so that most snippets will have what they need.
|
|
107
111
|
// This isn't foolproof and might cause name conflicts
|
|
108
112
|
const imports = codeBlock.value.includes(' require(') ? '' : DEFAULT_IMPORTS;
|
|
109
|
-
const types = '/// <reference path="electron.d.ts" />';
|
|
110
113
|
// Insert the necessary number of blank lines so that the line
|
|
111
114
|
// numbers in output from tsc is accurate to the original file
|
|
112
|
-
const blankLines = '\n'.repeat(firstLineIsTsIgnore ? line -
|
|
115
|
+
const blankLines = '\n'.repeat(firstLineIsTsIgnore ? line - 3 : line - 2);
|
|
113
116
|
// Filename is unique since it is the name of the original Markdown
|
|
114
117
|
// file, with the starting line number of the codeblock appended
|
|
115
118
|
const filename = path.join(tempDir, `${filepath
|
|
116
119
|
.replace(new RegExp(path.sep.replace(/\\/g, '\\\\'), 'g'), '-')
|
|
117
120
|
.replace(/\./g, '-')}-${line}.js`);
|
|
118
|
-
|
|
121
|
+
// Blocks can have @ts-type={name:type} in their info string
|
|
122
|
+
// (1-based lines) to declare a global variable for a block
|
|
123
|
+
if (tsTypeLines.length) {
|
|
124
|
+
// To support this feature, generate a random name for a
|
|
125
|
+
// module, generate an ambient module declaration for the
|
|
126
|
+
// module, and then import the global variables we're
|
|
127
|
+
// defining from that module name - there's no code on
|
|
128
|
+
// disk for it, only an ambient module declaration which
|
|
129
|
+
// tsc will use to type the phantom variables being imported
|
|
130
|
+
const moduleName = crypto.randomBytes(16).toString('hex');
|
|
131
|
+
const extraTypes = tsTypeLines
|
|
132
|
+
.map((type) => ` export var ${type[1]}: ${type[2]};`)
|
|
133
|
+
.join('\n');
|
|
134
|
+
ambientModules += `declare module "${moduleName}" {\n${extraTypes}\n}\n\n`;
|
|
135
|
+
types = `const {${tsTypeLines
|
|
136
|
+
.map((type) => type[1])
|
|
137
|
+
.join(',')}} = require('${moduleName}')`;
|
|
138
|
+
}
|
|
139
|
+
fs.writeFileSync(filename, `// @ts-check\n${imports}\n${blankLines}${code}\n${types}`);
|
|
119
140
|
filenames.push(filename);
|
|
120
141
|
originalFilenames.set(filename, filepath);
|
|
121
142
|
}
|
|
122
143
|
}
|
|
144
|
+
fs.writeFileSync(path.join(tempDir, 'ambient.d.ts'), ambientModules);
|
|
123
145
|
for (const chunk of (0, helpers_1.chunkFilenames)(filenames)) {
|
|
124
146
|
const tscExec = path.join(require.resolve('typescript'), '..', '..', 'bin', 'tsc');
|
|
125
|
-
const args = [
|
|
147
|
+
const args = [
|
|
148
|
+
tscExec,
|
|
149
|
+
'--noEmit',
|
|
150
|
+
'--checkJs',
|
|
151
|
+
'--pretty',
|
|
152
|
+
path.join(tempDir, 'electron.d.ts'),
|
|
153
|
+
path.join(tempDir, 'ambient.d.ts'),
|
|
154
|
+
...chunk,
|
|
155
|
+
];
|
|
126
156
|
const { status, stderr, stdout } = await (0, helpers_1.spawnAsync)(process.execPath, args);
|
|
127
157
|
if (stderr) {
|
|
128
158
|
throw new Error(stderr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint-markdown-ts-check.js","sourceRoot":"","sources":["../../bin/lint-markdown-ts-check.ts"],"names":[],"mappings":";;;AAEA,8BAA8B;AAC9B,8BAA8B;AAC9B,kCAAkC;AAElC,qCAAqC;AACrC,mCAAgC;AAChC,2CAAiC;AAEjC,4CAAsF;AACtF,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,GAAwB,IAAI,GAAG,EAAE,CAAC;QAEzD,4DAA4D;QAC5D,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;QAEhG,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,KAAK,MAAM,QAAQ,IAAI,MAAM,SAAS,CAAC,uBAAuB,EAAE,EAAE;YAChE,MAAM,GAAG,GAAG,gBAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,YAAY,GAAG,CAAC,MAAM,IAAA,wBAAa,EAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CACzD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAC9E,CAAC;YAEF,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE;gBACpC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAS,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,QAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAEpD,MAAM,SAAS,GAAG,MAAA,SAAS,CAAC,IAAI,0CAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACrE,MAAM,aAAa,GAAG,MAAA,MAAA,SAAS,CAAC,IAAI,0CAChC,KAAK,CAAC,6BAA6B,CAAC,0CAAG,CAAC,EACzC,KAAK,CAAC,GAAG,EACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"lint-markdown-ts-check.js","sourceRoot":"","sources":["../../bin/lint-markdown-ts-check.ts"],"names":[],"mappings":"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"}
|