UNPKG

typescript-strict-plugin

Version:

Typescript tools that help with migration to the strict mode

41 lines (40 loc) 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.log = exports.setupStrictLanguageServiceHostProxy = exports.setupLanguageServiceProxy = void 0; const constants_1 = require("../common/constants"); function setupLanguageServiceProxy(info) { const proxy = Object.create(null); for (const k of Object.keys(info.languageService)) { const serviceFunction = info.languageService[k]; // @ts-ignore proxy[k] = (...args) => serviceFunction.apply(info.languageService, args); } return proxy; } exports.setupLanguageServiceProxy = setupLanguageServiceProxy; function setupStrictLanguageServiceHostProxy(info) { const host = info.languageServiceHost; const strictGetCompilationSettings = () => { const settings = info.languageServiceHost.getCompilationSettings(); return { ...settings, strict: true }; }; const proxy = new Proxy(host, { get(target, prop, receiver) { if (prop === 'getCompilationSettings') { return strictGetCompilationSettings; } // returning `false` because of https://github.com/microsoft/TypeScript/blob/v5.4.5/src/services/services.ts#L1625 // if `true` was returned instead, the `program` would become undefined and it would crash the plugin if (prop === 'updateFromProject') { return false; } return Reflect.get(target, prop, receiver); }, }); return proxy; } exports.setupStrictLanguageServiceHostProxy = setupStrictLanguageServiceHostProxy; function log(info, message) { info.project.projectService.logger.info(`[${constants_1.PLUGIN_NAME}]: ` + message); } exports.log = log;