e2ed
Version:
E2E testing framework over Playwright
41 lines (40 loc) • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.compilePack = void 0;
const typescript_1 = require("typescript");
const environment_1 = require("../environment");
const getDurationWithUnits_1 = require("../getDurationWithUnits");
const getCompilerOptions_1 = require("./getCompilerOptions");
const inNotUnderRootDir = "is not under 'rootDir'";
const unusedTsExceptErrorMessage = "Unused '@ts-expect-error' directive.";
/**
* Compiles pack file before running tests (or tasks).
* @internal
*/
const compilePack = () => {
const startTimeInMs = Date.now();
const { compilerOptions, parsingTsConfigError } = (0, getCompilerOptions_1.getCompilerOptions)();
const pathToPack = (0, environment_1.getPathToPack)();
const program = (0, typescript_1.createProgram)([pathToPack], compilerOptions);
const { diagnostics } = program.emit();
const allDiagnostics = (0, typescript_1.getPreEmitDiagnostics)(program).concat(diagnostics);
const compileErrors = [];
if (parsingTsConfigError !== undefined) {
compileErrors.push(parsingTsConfigError);
}
allDiagnostics.forEach((diagnostic) => {
const message = (0, typescript_1.flattenDiagnosticMessageText)(diagnostic.messageText, '\n');
if (message === unusedTsExceptErrorMessage || message.includes(inNotUnderRootDir)) {
return;
}
const logData = { message };
if (diagnostic.file) {
const { line, character } = (0, typescript_1.getLineAndCharacterOfPosition)(diagnostic.file, diagnostic.start ?? 0);
logData.file = `${diagnostic.file.fileName} (${line + 1},${character + 1})`;
}
compileErrors.push(logData);
});
const configCompileTimeWithUnits = (0, getDurationWithUnits_1.getDurationWithUnits)(Date.now() - startTimeInMs);
return { compileErrors, configCompileTimeWithUnits };
};
exports.compilePack = compilePack;