31 lines
1 KiB
JavaScript
31 lines
1 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
/* eslint-env node */
|
|
"use strict";
|
|
|
|
/*
|
|
* TypeScript transformer to automatically enable @ts-check for root files,
|
|
* only those directly referenced from the tsconfig.json include option,
|
|
* and automatically disable for everything else.
|
|
*/
|
|
exports.default = (program, host, _, { ts }) => {
|
|
return ts.createProgram(
|
|
program.getRootFileNames(),
|
|
program.getCompilerOptions(),
|
|
{
|
|
...host,
|
|
getSourceFile(...args) {
|
|
let file = host.getSourceFile(...args);
|
|
// If the source file doesn't have a @ts-nocheck directive.
|
|
if (file.checkJsDirective?.enabled !== false) {
|
|
// Add one based on it being included as root file in tsconfig.
|
|
file.checkJsDirective = {
|
|
enabled: program.getRootFileNames().includes(file.fileName),
|
|
};
|
|
}
|
|
return file;
|
|
},
|
|
}
|
|
);
|
|
};
|