UNPKG

9.52 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const configuration_base_1 = __importDefault(require("./configuration-base"));
7const default_values_1 = require("./default-values");
8const lodash_1 = require("lodash");
9const warning_message_1 = __importDefault(require("../notifications/warning-message"));
10const render_template_1 = __importDefault(require("../utils/render-template"));
11const runtime_1 = require("../errors/runtime");
12const types_1 = require("../errors/types");
13const option_source_1 = __importDefault(require("./option-source"));
14const lazyRequire = require('import-lazy')(require);
15const typescript = lazyRequire('typescript');
16class TypescriptConfiguration extends configuration_base_1.default {
17 constructor(tsConfigPath) {
18 super(tsConfigPath);
19 this.basePath = process.cwd();
20 for (const option in default_values_1.DEFAULT_TYPESCRIPT_COMPILER_OPTIONS)
21 this._ensureOptionWithValue(option, default_values_1.DEFAULT_TYPESCRIPT_COMPILER_OPTIONS[option], option_source_1.default.Configuration);
22 }
23 async init() {
24 const opts = await this._load();
25 if (opts && opts.compilerOptions) {
26 const parsedOpts = this._parseOptions(opts);
27 this.mergeOptions(parsedOpts);
28 }
29 this._notifyThatOptionsCannotBeOverridden();
30 }
31 async _isConfigurationFileExists() {
32 const fileExists = await super._isConfigurationFileExists();
33 if (!fileExists)
34 throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.cannotFindTypescriptConfigurationFile, this.filePath);
35 return true;
36 }
37 _parseOptions(opts) {
38 const parsed = typescript.parseJsonConfigFileContent(opts, typescript.sys, this.basePath, void 0, this._filePath);
39 return lodash_1.omit(parsed.options, default_values_1.TYPESCRIPT_BLACKLISTED_OPTIONS);
40 }
41 _notifyThatOptionsCannotBeOverridden() {
42 const warnedOptions = lodash_1.intersection(this._overriddenOptions, default_values_1.TYPESCRIPT_COMPILER_NON_OVERRIDABLE_OPTIONS);
43 if (!warnedOptions.length)
44 return;
45 const warningMessage = warnedOptions
46 .map(option => render_template_1.default(warning_message_1.default.cannotOverrideTypeScriptConfigOptions, option))
47 .join('\n');
48 configuration_base_1.default._showConsoleWarning(warningMessage);
49 }
50 _setOptionValue(option, value) {
51 if (default_values_1.TYPESCRIPT_COMPILER_NON_OVERRIDABLE_OPTIONS.indexOf(option.name) === -1)
52 super._setOptionValue(option, value);
53 else
54 this._addOverriddenOptionIfNecessary(option.value, value, option.source, option.name);
55 }
56}
57exports.default = TypescriptConfiguration;
58module.exports = exports.default;
59//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ3VyYXRpb24vdHlwZXNjcmlwdC1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOEVBQWlEO0FBQ2pELHFEQUFvSjtBQUNwSixtQ0FBNEM7QUFDNUMsdUZBQWdFO0FBQ2hFLCtFQUFzRDtBQUN0RCwrQ0FBaUQ7QUFDakQsMkNBQWlEO0FBRWpELG9FQUEyQztBQUUzQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEQsTUFBTSxVQUFVLEdBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBTTlDLE1BQXFCLHVCQUF3QixTQUFRLDRCQUFhO0lBRzlELFlBQW9CLFlBQTJCO1FBQzNDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU5QixLQUFLLE1BQU0sTUFBTSxJQUFJLG9EQUFtQztZQUNwRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLG9EQUFtQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLHVCQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2IsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFvQyxDQUFDO1FBRWxFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVTLEtBQUssQ0FBQywwQkFBMEI7UUFDdEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUU1RCxJQUFJLENBQUMsVUFBVTtZQUNYLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMscUNBQXFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhHLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxhQUFhLENBQUUsSUFBWTtRQUM5QixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbEgsT0FBTyxhQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSwrQ0FBOEIsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxvQ0FBb0M7UUFDeEMsTUFBTSxhQUFhLEdBQUcscUJBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsNERBQTJDLENBQUMsQ0FBQztRQUV6RyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07WUFDckIsT0FBTztRQUVYLE1BQU0sY0FBYyxHQUFHLGFBQWE7YUFDL0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMseUJBQWMsQ0FBQyx5QkFBZ0IsQ0FBQyxxQ0FBcUMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUM3RixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEIsNEJBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVMsZUFBZSxDQUFFLE1BQWMsRUFBRSxLQUFrQjtRQUN6RCxJQUFJLDREQUEyQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZFLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDOztZQUVyQyxJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUYsQ0FBQztDQUNKO0FBMURELDBDQTBEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb25maWd1cmF0aW9uIGZyb20gJy4vY29uZmlndXJhdGlvbi1iYXNlJztcbmltcG9ydCB7IERFRkFVTFRfVFlQRVNDUklQVF9DT01QSUxFUl9PUFRJT05TLCBUWVBFU0NSSVBUX0NPTVBJTEVSX05PTl9PVkVSUklEQUJMRV9PUFRJT05TLCBUWVBFU0NSSVBUX0JMQUNLTElTVEVEX09QVElPTlMgfSBmcm9tICcuL2RlZmF1bHQtdmFsdWVzJztcbmltcG9ydCB7IGludGVyc2VjdGlvbiwgb21pdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV0FSTklOR19NRVNTQUdFUyBmcm9tICcuLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbWVzc2FnZSc7XG5pbXBvcnQgcmVuZGVyVGVtcGxhdGUgZnJvbSAnLi4vdXRpbHMvcmVuZGVyLXRlbXBsYXRlJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCBPcHRpb24gZnJvbSAnLi9vcHRpb24nO1xuaW1wb3J0IE9wdGlvblNvdXJjZSBmcm9tICcuL29wdGlvbi1zb3VyY2UnO1xuXG5jb25zdCBsYXp5UmVxdWlyZSA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCB0eXBlc2NyaXB0ICA9IGxhenlSZXF1aXJlKCd0eXBlc2NyaXB0Jyk7XG5cbmludGVyZmFjZSBUeXBlc2NyaXB0Q29uZmlndXJhdGlvbk9wdGlvbnMge1xuICAgIGNvbXBpbGVyT3B0aW9ucz86IG9iamVjdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHlwZXNjcmlwdENvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2VQYXRoOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHRzQ29uZmlnUGF0aDogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICBzdXBlcih0c0NvbmZpZ1BhdGgpO1xuXG4gICAgICAgIHRoaXMuYmFzZVBhdGggPSBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIGluIERFRkFVTFRfVFlQRVNDUklQVF9DT01QSUxFUl9PUFRJT05TKVxuICAgICAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKG9wdGlvbiwgREVGQVVMVF9UWVBFU0NSSVBUX0NPTVBJTEVSX09QVElPTlNbb3B0aW9uXSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IGF3YWl0IHRoaXMuX2xvYWQoKSBhcyBUeXBlc2NyaXB0Q29uZmlndXJhdGlvbk9wdGlvbnM7XG5cbiAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5jb21waWxlck9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZE9wdHMgPSB0aGlzLl9wYXJzZU9wdGlvbnMob3B0cyk7XG5cbiAgICAgICAgICAgIHRoaXMubWVyZ2VPcHRpb25zKHBhcnNlZE9wdHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbm90aWZ5VGhhdE9wdGlvbnNDYW5ub3RCZU92ZXJyaWRkZW4oKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgX2lzQ29uZmlndXJhdGlvbkZpbGVFeGlzdHMgKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBmaWxlRXhpc3RzID0gYXdhaXQgc3VwZXIuX2lzQ29uZmlndXJhdGlvbkZpbGVFeGlzdHMoKTtcblxuICAgICAgICBpZiAoIWZpbGVFeGlzdHMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRUeXBlc2NyaXB0Q29uZmlndXJhdGlvbkZpbGUsIHRoaXMuZmlsZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBfcGFyc2VPcHRpb25zIChvcHRzOiBvYmplY3QpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0eXBlc2NyaXB0LnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KG9wdHMsIHR5cGVzY3JpcHQuc3lzLCB0aGlzLmJhc2VQYXRoLCB2b2lkIDAsIHRoaXMuX2ZpbGVQYXRoKTtcblxuICAgICAgICByZXR1cm4gb21pdChwYXJzZWQub3B0aW9ucywgVFlQRVNDUklQVF9CTEFDS0xJU1RFRF9PUFRJT05TKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9ub3RpZnlUaGF0T3B0aW9uc0Nhbm5vdEJlT3ZlcnJpZGRlbiAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdhcm5lZE9wdGlvbnMgPSBpbnRlcnNlY3Rpb24odGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMsIFRZUEVTQ1JJUFRfQ09NUElMRVJfTk9OX09WRVJSSURBQkxFX09QVElPTlMpO1xuXG4gICAgICAgIGlmICghd2FybmVkT3B0aW9ucy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgd2FybmluZ01lc3NhZ2UgPSB3YXJuZWRPcHRpb25zXG4gICAgICAgICAgICAubWFwKG9wdGlvbiA9PiByZW5kZXJUZW1wbGF0ZShXQVJOSU5HX01FU1NBR0VTLmNhbm5vdE92ZXJyaWRlVHlwZVNjcmlwdENvbmZpZ09wdGlvbnMsIG9wdGlvbikpXG4gICAgICAgICAgICAuam9pbignXFxuJyk7XG5cbiAgICAgICAgQ29uZmlndXJhdGlvbi5fc2hvd0NvbnNvbGVXYXJuaW5nKHdhcm5pbmdNZXNzYWdlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3NldE9wdGlvblZhbHVlIChvcHRpb246IE9wdGlvbiwgdmFsdWU6IE9wdGlvblZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmIChUWVBFU0NSSVBUX0NPTVBJTEVSX05PTl9PVkVSUklEQUJMRV9PUFRJT05TLmluZGV4T2Yob3B0aW9uLm5hbWUpID09PSAtMSlcbiAgICAgICAgICAgIHN1cGVyLl9zZXRPcHRpb25WYWx1ZShvcHRpb24sIHZhbHVlKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5fYWRkT3ZlcnJpZGRlbk9wdGlvbklmTmVjZXNzYXJ5KG9wdGlvbi52YWx1ZSwgdmFsdWUsIG9wdGlvbi5zb3VyY2UsIG9wdGlvbi5uYW1lKTtcbiAgICB9XG59XG4iXX0=
\No newline at end of file