in src/compiler.ts [179:226]
private configureTypeScript(): TypeScriptConfig {
if (this.userProvidedTypeScriptConfig) {
const config = this.readTypeScriptConfig();
// emit a warning if validation is disabled
const rules = this.options.validateTypeScriptConfig ?? TypeScriptConfigValidationRuleSet.NONE;
if (rules === TypeScriptConfigValidationRuleSet.NONE) {
utils.logDiagnostic(
JsiiDiagnostic.JSII_4009_DISABLED_TSCONFIG_VALIDATION.create(undefined, this.configPath),
this.projectRoot,
);
}
// validate the user provided config
if (rules !== TypeScriptConfigValidationRuleSet.NONE) {
const configName = path.relative(this.projectRoot, this.configPath);
try {
const validator = new TypeScriptConfigValidator(rules);
validator.validate({
...config,
// convert the internal format to the user format which is what the validator operates on
compilerOptions: convertForJson(config.compilerOptions),
});
} catch (error: unknown) {
if (error instanceof ValidationError) {
utils.logDiagnostic(
JsiiDiagnostic.JSII_4000_FAILED_TSCONFIG_VALIDATION.create(
undefined,
configName,
rules,
error.violations,
),
this.projectRoot,
);
}
throw new utils.JsiiError(
`Failed validation of tsconfig "compilerOptions" in "${configName}" against rule set "${rules}"!`,
);
}
}
return config;
}
// generated config if none is provided by the user
return this.buildTypeScriptConfig();
}