UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

67 lines 10.8 kB
"use strict"; 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