testcafe
Version:
Automated browser testing for the modern web development stack.
67 lines • 10.8 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const configuration_base_1 = __importDefault(require("./configuration-base"));
const default_values_1 = require("./default-values");
const lodash_1 = require("lodash");
const warning_message_1 = __importDefault(require("../notifications/warning-message"));
const render_template_1 = __importDefault(require("../utils/render-template"));
const runtime_1 = require("../errors/runtime");
const types_1 = require("../errors/types");
const option_source_1 = __importDefault(require("./option-source"));
const lazyRequire = require('import-lazy')(require);
const typescript = lazyRequire('typescript');
class TypescriptConfiguration extends configuration_base_1.default {
constructor(tsConfigPath, useEsmModules) {
super(tsConfigPath);
this.basePath = process.cwd();
if (useEsmModules)
// NOTE: ts.ModuleKind.NextJS
this._ensureOptionWithValue('module', 99, option_source_1.default.Configuration);
this._ensureDefaultOptions();
}
_ensureDefaultOptions() {
for (const option in default_values_1.DEFAULT_TYPESCRIPT_COMPILER_OPTIONS)
this._ensureOptionWithValue(option, default_values_1.DEFAULT_TYPESCRIPT_COMPILER_OPTIONS[option], option_source_1.default.Configuration);
}
async init(customCompilerOptions) {
const opts = await this._load();
if (opts && opts.compilerOptions) {
const parsedOpts = this._parseOptions(opts);
this.mergeOptions(parsedOpts);
}
if (customCompilerOptions)
this.mergeOptions(customCompilerOptions);
this._notifyThatOptionsCannotBeOverridden();
}
async _isConfigurationFileExists(filePath = this.filePath) {
const fileExists = await super._isConfigurationFileExists(filePath);
if (!fileExists)
throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.cannotFindTypescriptConfigurationFile, filePath);
return true;
}
_parseOptions(opts) {
const parsed = typescript.parseJsonConfigFileContent(opts, typescript.sys, this.basePath, void 0, this._filePath);
return (0, lodash_1.omit)(parsed.options, default_values_1.TYPESCRIPT_BLACKLISTED_OPTIONS);
}
_notifyThatOptionsCannotBeOverridden() {
const warnedOptions = (0, lodash_1.intersection)(this._overriddenOptions, default_values_1.TYPESCRIPT_COMPILER_NON_OVERRIDABLE_OPTIONS);
if (!warnedOptions.length)
return;
const warningMessage = warnedOptions
.map(option => (0, render_template_1.default)(warning_message_1.default.cannotOverrideTypeScriptConfigOptions, option))
.join('\n');
configuration_base_1.default._showConsoleWarning(warningMessage);
}
_setOptionValue(option, value) {
if (!default_values_1.TYPESCRIPT_COMPILER_NON_OVERRIDABLE_OPTIONS.includes(option.name))
super._setOptionValue(option, value);
else
this._addOverriddenOptionIfNecessary(option.value, value, option.source, option.name);
}
}
exports.default = TypescriptConfiguration;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ3VyYXRpb24vdHlwZXNjcmlwdC1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOEVBQWlEO0FBQ2pELHFEQUkwQjtBQUUxQixtQ0FBNEM7QUFDNUMsdUZBQWdFO0FBQ2hFLCtFQUFzRDtBQUN0RCwrQ0FBaUQ7QUFDakQsMkNBQWlEO0FBRWpELG9FQUEyQztBQUUzQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEQsTUFBTSxVQUFVLEdBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBTTlDLE1BQXFCLHVCQUF3QixTQUFRLDRCQUFhO0lBRzlELFlBQW9CLFlBQTJCLEVBQUUsYUFBdUI7UUFDcEUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTlCLElBQUksYUFBYTtZQUNiLDZCQUE2QjtZQUM3QixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSx1QkFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTyxxQkFBcUI7UUFDekIsS0FBSyxNQUFNLE1BQU0sSUFBSSxvREFBbUM7WUFDcEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxvREFBbUMsQ0FBQyxNQUFNLENBQUMsRUFBRSx1QkFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JILENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFFLHFCQUE4QjtRQUM3QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQW9DLENBQUM7UUFFbEUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTVDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDakM7UUFFRCxJQUFJLHFCQUFxQjtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVTLEtBQUssQ0FBQywwQkFBMEIsQ0FBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVE7UUFDaEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLFVBQVU7WUFDWCxNQUFNLElBQUksc0JBQVksQ0FBQyxzQkFBYyxDQUFDLHFDQUFxQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTNGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxhQUFhLENBQUUsSUFBWTtRQUM5QixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbEgsT0FBTyxJQUFBLGFBQUksRUFBQyxNQUFNLENBQUMsT0FBTyxFQUFFLCtDQUE4QixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLG9DQUFvQztRQUN4QyxNQUFNLGFBQWEsR0FBRyxJQUFBLHFCQUFZLEVBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLDREQUEyQyxDQUFDLENBQUM7UUFFekcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQ3JCLE9BQU87UUFFWCxNQUFNLGNBQWMsR0FBRyxhQUFhO2FBQy9CLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUEseUJBQWMsRUFBQyx5QkFBZ0IsQ0FBQyxxQ0FBcUMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUM3RixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEIsNEJBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVMsZUFBZSxDQUFFLE1BQWMsRUFBRSxLQUFrQjtRQUN6RCxJQUFJLENBQUMsNERBQTJDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDbEUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7O1lBRXJDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RixDQUFDO0NBQ0o7QUFyRUQsMENBcUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbmZpZ3VyYXRpb24gZnJvbSAnLi9jb25maWd1cmF0aW9uLWJhc2UnO1xuaW1wb3J0IHtcbiAgICBERUZBVUxUX1RZUEVTQ1JJUFRfQ09NUElMRVJfT1BUSU9OUyxcbiAgICBUWVBFU0NSSVBUX0NPTVBJTEVSX05PTl9PVkVSUklEQUJMRV9PUFRJT05TLFxuICAgIFRZUEVTQ1JJUFRfQkxBQ0tMSVNURURfT1BUSU9OUyxcbn0gZnJvbSAnLi9kZWZhdWx0LXZhbHVlcyc7XG5cbmltcG9ydCB7IGludGVyc2VjdGlvbiwgb21pdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV0FSTklOR19NRVNTQUdFUyBmcm9tICcuLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbWVzc2FnZSc7XG5pbXBvcnQgcmVuZGVyVGVtcGxhdGUgZnJvbSAnLi4vdXRpbHMvcmVuZGVyLXRlbXBsYXRlJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCBPcHRpb24gZnJvbSAnLi9vcHRpb24nO1xuaW1wb3J0IE9wdGlvblNvdXJjZSBmcm9tICcuL29wdGlvbi1zb3VyY2UnO1xuXG5jb25zdCBsYXp5UmVxdWlyZSA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCB0eXBlc2NyaXB0ICA9IGxhenlSZXF1aXJlKCd0eXBlc2NyaXB0Jyk7XG5cbmludGVyZmFjZSBUeXBlc2NyaXB0Q29uZmlndXJhdGlvbk9wdGlvbnMge1xuICAgIGNvbXBpbGVyT3B0aW9ucz86IG9iamVjdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHlwZXNjcmlwdENvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2VQYXRoOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHRzQ29uZmlnUGF0aDogc3RyaW5nIHwgbnVsbCwgdXNlRXNtTW9kdWxlcz86IGJvb2xlYW4pIHtcbiAgICAgICAgc3VwZXIodHNDb25maWdQYXRoKTtcblxuICAgICAgICB0aGlzLmJhc2VQYXRoID0gcHJvY2Vzcy5jd2QoKTtcblxuICAgICAgICBpZiAodXNlRXNtTW9kdWxlcylcbiAgICAgICAgICAgIC8vIE5PVEU6IHRzLk1vZHVsZUtpbmQuTmV4dEpTXG4gICAgICAgICAgICB0aGlzLl9lbnN1cmVPcHRpb25XaXRoVmFsdWUoJ21vZHVsZScsIDk5LCBPcHRpb25Tb3VyY2UuQ29uZmlndXJhdGlvbik7XG5cbiAgICAgICAgdGhpcy5fZW5zdXJlRGVmYXVsdE9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9lbnN1cmVEZWZhdWx0T3B0aW9ucyAoKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIGluIERFRkFVTFRfVFlQRVNDUklQVF9DT01QSUxFUl9PUFRJT05TKVxuICAgICAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKG9wdGlvbiwgREVGQVVMVF9UWVBFU0NSSVBUX0NPTVBJTEVSX09QVElPTlNbb3B0aW9uXSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0IChjdXN0b21Db21waWxlck9wdGlvbnM/OiBvYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IGF3YWl0IHRoaXMuX2xvYWQoKSBhcyBUeXBlc2NyaXB0Q29uZmlndXJhdGlvbk9wdGlvbnM7XG5cbiAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5jb21waWxlck9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZE9wdHMgPSB0aGlzLl9wYXJzZU9wdGlvbnMob3B0cyk7XG5cbiAgICAgICAgICAgIHRoaXMubWVyZ2VPcHRpb25zKHBhcnNlZE9wdHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1c3RvbUNvbXBpbGVyT3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMubWVyZ2VPcHRpb25zKGN1c3RvbUNvbXBpbGVyT3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5fbm90aWZ5VGhhdE9wdGlvbnNDYW5ub3RCZU92ZXJyaWRkZW4oKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgX2lzQ29uZmlndXJhdGlvbkZpbGVFeGlzdHMgKGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBmaWxlRXhpc3RzID0gYXdhaXQgc3VwZXIuX2lzQ29uZmlndXJhdGlvbkZpbGVFeGlzdHMoZmlsZVBhdGgpO1xuXG4gICAgICAgIGlmICghZmlsZUV4aXN0cylcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuY2Fubm90RmluZFR5cGVzY3JpcHRDb25maWd1cmF0aW9uRmlsZSwgZmlsZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBfcGFyc2VPcHRpb25zIChvcHRzOiBvYmplY3QpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0eXBlc2NyaXB0LnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KG9wdHMsIHR5cGVzY3JpcHQuc3lzLCB0aGlzLmJhc2VQYXRoLCB2b2lkIDAsIHRoaXMuX2ZpbGVQYXRoKTtcblxuICAgICAgICByZXR1cm4gb21pdChwYXJzZWQub3B0aW9ucywgVFlQRVNDUklQVF9CTEFDS0xJU1RFRF9PUFRJT05TKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9ub3RpZnlUaGF0T3B0aW9uc0Nhbm5vdEJlT3ZlcnJpZGRlbiAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdhcm5lZE9wdGlvbnMgPSBpbnRlcnNlY3Rpb24odGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMsIFRZUEVTQ1JJUFRfQ09NUElMRVJfTk9OX09WRVJSSURBQkxFX09QVElPTlMpO1xuXG4gICAgICAgIGlmICghd2FybmVkT3B0aW9ucy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgd2FybmluZ01lc3NhZ2UgPSB3YXJuZWRPcHRpb25zXG4gICAgICAgICAgICAubWFwKG9wdGlvbiA9PiByZW5kZXJUZW1wbGF0ZShXQVJOSU5HX01FU1NBR0VTLmNhbm5vdE92ZXJyaWRlVHlwZVNjcmlwdENvbmZpZ09wdGlvbnMsIG9wdGlvbikpXG4gICAgICAgICAgICAuam9pbignXFxuJyk7XG5cbiAgICAgICAgQ29uZmlndXJhdGlvbi5fc2hvd0NvbnNvbGVXYXJuaW5nKHdhcm5pbmdNZXNzYWdlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3NldE9wdGlvblZhbHVlIChvcHRpb246IE9wdGlvbiwgdmFsdWU6IE9wdGlvblZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmICghVFlQRVNDUklQVF9DT01QSUxFUl9OT05fT1ZFUlJJREFCTEVfT1BUSU9OUy5pbmNsdWRlcyhvcHRpb24ubmFtZSkpXG4gICAgICAgICAgICBzdXBlci5fc2V0T3B0aW9uVmFsdWUob3B0aW9uLCB2YWx1ZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuX2FkZE92ZXJyaWRkZW5PcHRpb25JZk5lY2Vzc2FyeShvcHRpb24udmFsdWUsIHZhbHVlLCBvcHRpb24uc291cmNlLCBvcHRpb24ubmFtZSk7XG4gICAgfVxufVxuIl19