1 | ;
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const configuration_base_1 = __importDefault(require("./configuration-base"));
|
7 | const default_values_1 = require("./default-values");
|
8 | const lodash_1 = require("lodash");
|
9 | const warning_message_1 = __importDefault(require("../notifications/warning-message"));
|
10 | const render_template_1 = __importDefault(require("../utils/render-template"));
|
11 | const runtime_1 = require("../errors/runtime");
|
12 | const types_1 = require("../errors/types");
|
13 | const option_source_1 = __importDefault(require("./option-source"));
|
14 | const lazyRequire = require('import-lazy')(require);
|
15 | const typescript = lazyRequire('typescript');
|
16 | class 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 | }
|
57 | exports.default = TypescriptConfiguration;
|
58 | module.exports = exports.default;
|
59 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZ3VyYXRpb24vdHlwZXNjcmlwdC1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOEVBQWlEO0FBQ2pELHFEQUFvSjtBQUNwSixtQ0FBNEM7QUFDNUMsdUZBQWdFO0FBQ2hFLCtFQUFzRDtBQUN0RCwrQ0FBaUQ7QUFDakQsMkNBQWlEO0FBRWpELG9FQUEyQztBQUUzQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEQsTUFBTSxVQUFVLEdBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBTTlDLE1BQXFCLHVCQUF3QixTQUFRLDRCQUFhO0lBRzlELFlBQW9CLFlBQTJCO1FBQzNDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU5QixLQUFLLE1BQU0sTUFBTSxJQUFJLG9EQUFtQztZQUNwRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLG9EQUFtQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLHVCQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2IsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFvQyxDQUFDO1FBRWxFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVTLEtBQUssQ0FBQywwQkFBMEI7UUFDdEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUU1RCxJQUFJLENBQUMsVUFBVTtZQUNYLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMscUNBQXFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhHLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxhQUFhLENBQUUsSUFBWTtRQUM5QixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbEgsT0FBTyxhQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSwrQ0FBOEIsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxvQ0FBb0M7UUFDeEMsTUFBTSxhQUFhLEdBQUcscUJBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsNERBQTJDLENBQUMsQ0FBQztRQUV6RyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07WUFDckIsT0FBTztRQUVYLE1BQU0sY0FBYyxHQUFHLGFBQWE7YUFDL0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMseUJBQWMsQ0FBQyx5QkFBZ0IsQ0FBQyxxQ0FBcUMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUM3RixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEIsNEJBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVMsZUFBZSxDQUFFLE1BQWMsRUFBRSxLQUFrQjtRQUN6RCxJQUFJLDREQUEyQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZFLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDOztZQUVyQyxJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUYsQ0FBQztDQUNKO0FBMURELDBDQTBEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb25maWd1cmF0aW9uIGZyb20gJy4vY29uZmlndXJhdGlvbi1iYXNlJztcbmltcG9ydCB7IERFRkFVTFRfVFlQRVNDUklQVF9DT01QSUxFUl9PUFRJT05TLCBUWVBFU0NSSVBUX0NPTVBJTEVSX05PTl9PVkVSUklEQUJMRV9PUFRJT05TLCBUWVBFU0NSSVBUX0JMQUNLTElTVEVEX09QVElPTlMgfSBmcm9tICcuL2RlZmF1bHQtdmFsdWVzJztcbmltcG9ydCB7IGludGVyc2VjdGlvbiwgb21pdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV0FSTklOR19NRVNTQUdFUyBmcm9tICcuLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbWVzc2FnZSc7XG5pbXBvcnQgcmVuZGVyVGVtcGxhdGUgZnJvbSAnLi4vdXRpbHMvcmVuZGVyLXRlbXBsYXRlJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCBPcHRpb24gZnJvbSAnLi9vcHRpb24nO1xuaW1wb3J0IE9wdGlvblNvdXJjZSBmcm9tICcuL29wdGlvbi1zb3VyY2UnO1xuXG5jb25zdCBsYXp5UmVxdWlyZSA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCB0eXBlc2NyaXB0ICA9IGxhenlSZXF1aXJlKCd0eXBlc2NyaXB0Jyk7XG5cbmludGVyZmFjZSBUeXBlc2NyaXB0Q29uZmlndXJhdGlvbk9wdGlvbnMge1xuICAgIGNvbXBpbGVyT3B0aW9ucz86IG9iamVjdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHlwZXNjcmlwdENvbmZpZ3VyYXRpb24gZXh0ZW5kcyBDb25maWd1cmF0aW9uIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2VQYXRoOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHRzQ29uZmlnUGF0aDogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICBzdXBlcih0c0NvbmZpZ1BhdGgpO1xuXG4gICAgICAgIHRoaXMuYmFzZVBhdGggPSBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIGluIERFRkFVTFRfVFlQRVNDUklQVF9DT01QSUxFUl9PUFRJT05TKVxuICAgICAgICAgICAgdGhpcy5fZW5zdXJlT3B0aW9uV2l0aFZhbHVlKG9wdGlvbiwgREVGQVVMVF9UWVBFU0NSSVBUX0NPTVBJTEVSX09QVElPTlNbb3B0aW9uXSwgT3B0aW9uU291cmNlLkNvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IGF3YWl0IHRoaXMuX2xvYWQoKSBhcyBUeXBlc2NyaXB0Q29uZmlndXJhdGlvbk9wdGlvbnM7XG5cbiAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5jb21waWxlck9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZE9wdHMgPSB0aGlzLl9wYXJzZU9wdGlvbnMob3B0cyk7XG5cbiAgICAgICAgICAgIHRoaXMubWVyZ2VPcHRpb25zKHBhcnNlZE9wdHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbm90aWZ5VGhhdE9wdGlvbnNDYW5ub3RCZU92ZXJyaWRkZW4oKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgX2lzQ29uZmlndXJhdGlvbkZpbGVFeGlzdHMgKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBmaWxlRXhpc3RzID0gYXdhaXQgc3VwZXIuX2lzQ29uZmlndXJhdGlvbkZpbGVFeGlzdHMoKTtcblxuICAgICAgICBpZiAoIWZpbGVFeGlzdHMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRUeXBlc2NyaXB0Q29uZmlndXJhdGlvbkZpbGUsIHRoaXMuZmlsZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBfcGFyc2VPcHRpb25zIChvcHRzOiBvYmplY3QpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0eXBlc2NyaXB0LnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KG9wdHMsIHR5cGVzY3JpcHQuc3lzLCB0aGlzLmJhc2VQYXRoLCB2b2lkIDAsIHRoaXMuX2ZpbGVQYXRoKTtcblxuICAgICAgICByZXR1cm4gb21pdChwYXJzZWQub3B0aW9ucywgVFlQRVNDUklQVF9CTEFDS0xJU1RFRF9PUFRJT05TKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9ub3RpZnlUaGF0T3B0aW9uc0Nhbm5vdEJlT3ZlcnJpZGRlbiAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdhcm5lZE9wdGlvbnMgPSBpbnRlcnNlY3Rpb24odGhpcy5fb3ZlcnJpZGRlbk9wdGlvbnMsIFRZUEVTQ1JJUFRfQ09NUElMRVJfTk9OX09WRVJSSURBQkxFX09QVElPTlMpO1xuXG4gICAgICAgIGlmICghd2FybmVkT3B0aW9ucy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgd2FybmluZ01lc3NhZ2UgPSB3YXJuZWRPcHRpb25zXG4gICAgICAgICAgICAubWFwKG9wdGlvbiA9PiByZW5kZXJUZW1wbGF0ZShXQVJOSU5HX01FU1NBR0VTLmNhbm5vdE92ZXJyaWRlVHlwZVNjcmlwdENvbmZpZ09wdGlvbnMsIG9wdGlvbikpXG4gICAgICAgICAgICAuam9pbignXFxuJyk7XG5cbiAgICAgICAgQ29uZmlndXJhdGlvbi5fc2hvd0NvbnNvbGVXYXJuaW5nKHdhcm5pbmdNZXNzYWdlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3NldE9wdGlvblZhbHVlIChvcHRpb246IE9wdGlvbiwgdmFsdWU6IE9wdGlvblZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmIChUWVBFU0NSSVBUX0NPTVBJTEVSX05PTl9PVkVSUklEQUJMRV9PUFRJT05TLmluZGV4T2Yob3B0aW9uLm5hbWUpID09PSAtMSlcbiAgICAgICAgICAgIHN1cGVyLl9zZXRPcHRpb25WYWx1ZShvcHRpb24sIHZhbHVlKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5fYWRkT3ZlcnJpZGRlbk9wdGlvbklmTmVjZXNzYXJ5KG9wdGlvbi52YWx1ZSwgdmFsdWUsIG9wdGlvbi5zb3VyY2UsIG9wdGlvbi5uYW1lKTtcbiAgICB9XG59XG4iXX0= |
\ | No newline at end of file |