UNPKG

typescript-yaml-plugin

Version:
50 lines 2.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const yaml_1 = __importDefault(require("yaml")); module.exports = ({ typescript: ts_ }) => ({ create: (info) => { const logger = info.project.projectService.logger; const languageServiceHost = { getScriptKind: filename => { if (!info.languageServiceHost.getScriptKind) return ts_.ScriptKind.Unknown; if (/\.ya?ml$/.test(filename)) return ts_.ScriptKind.TS; return info.languageServiceHost.getScriptKind(filename); }, getScriptSnapshot: filename => { if (!/\.ya?ml$/.test(filename)) return info.languageServiceHost.getScriptSnapshot(filename); const content = fs_1.default.readFileSync(filename, 'utf8'); let object; try { object = yaml_1.default.parse(content); } catch (error) { logger.info(`[typescript-plugin-yaml] YAML.parse error:\n${error}`); } const text = `export default ${JSON.stringify(object)};`; return ts_.ScriptSnapshot.fromString(text); }, resolveModuleNameLiterals: (moduleLiterals, containingFile, ...rest) => info.languageServiceHost.resolveModuleNameLiterals(moduleLiterals, containingFile, ...rest).map((resolvedModule, index) => { const moduleName = moduleLiterals[index].text; if (!/\.ya?ml$/.test(moduleName)) return resolvedModule; return Object.assign(Object.assign({}, resolvedModule), { resolvedModule: { extension: ts_.Extension.Ts, isExternalLibraryImport: false, resolvedFileName: path_1.default.resolve(path_1.default.dirname(containingFile), moduleName) } }); }) }; const languageServiceHostProxy = new Proxy(info.languageServiceHost, { get: (target, key) => languageServiceHost[key] ? languageServiceHost[key] : target[key] }); return ts_.createLanguageService(languageServiceHostProxy); } }); //# sourceMappingURL=index.js.map