UNPKG

cspell

Version:

A Spelling Checker for Code!

97 lines (95 loc) 3.77 kB
import { C as clean, N as console, S as getReporter, _ as finalizeReporter, a as fixLegacy, b as parseFeatureFlags, c as runLint, d as getTimeMeasurer, f as readConfig, g as readStdin, h as readFileInfo, m as fileInfoToDocument, n as simpleRepl, o as LintRequest, s as extractUnknownWordsConfig, t as listDictionaries, x as configInit, y as getFeatureFlags } from "./listDictionaries-DRQ2BGn_.js"; import { opMap, opTap, pipeAsync, toAsyncIterable } from "@cspell/cspell-pipe"; import { IncludeExcludeFlag, SuggestionError, checkTextDocument, getDefaultSettings, getGlobalSettingsAsync, mergeSettings, suggestionsForWords, traceWordsAsync } from "cspell-lib"; //#region src/application.mts function lint(fileGlobs, options, reporter) { options = fixLegacy(options); const unknownWordsConfig = extractUnknownWordsConfig(options); const useOptions = { ...options, ...unknownWordsConfig }; const reporterOptions = { ...useOptions, console }; return runLint(new LintRequest(fileGlobs, useOptions, finalizeReporter(reporter) ?? getReporter({ ...useOptions, fileGlobs }, reporterOptions))); } async function* trace(words, options) { options = fixLegacy(options); const iWords = options.stdin ? toAsyncIterable(words, readStdin()) : words; const { languageId, locale, allowCompoundWords, ignoreCase } = options; const configFile = await readConfig(options.config, void 0); const loadDefault = options.defaultConfiguration ?? configFile.config.loadDefaultConfiguration ?? true; const additionalSettings = {}; if (options.dictionary) additionalSettings.dictionaries = options.dictionary; yield* traceWordsAsync(iWords, mergeSettings(await getDefaultSettings(loadDefault), await getGlobalSettingsAsync(), configFile.config, additionalSettings), clean({ languageId, locale, ignoreCase, allowCompoundWords })); } async function checkText(filename, options) { options = fixLegacy(options); const fileInfo = await readFileInfo(filename); const { locale, languageId, validateDirectives } = options; const doc = fileInfoToDocument(fileInfo, languageId, locale); const checkOptions = { configFile: options.config, validateDirectives }; const settingsFromCommandLine = clean({ languageId, language: locale, loadDefaultConfiguration: options.defaultConfiguration }); return checkTextDocument(doc, clean({ ...checkOptions }), settingsFromCommandLine); } async function* suggestions(words, options) { options = fixLegacy(options); const configFile = await readConfig(options.config, void 0); let timer; function tapStart() { timer = getTimeMeasurer(); } function mapStart(v) { tapStart(); return v; } function mapEnd(v) { const elapsedTimeMs = timer?.(); return elapsedTimeMs ? { ...v, elapsedTimeMs } : v; } const iWords = options.repl ? pipeAsync(toAsyncIterable(words, simpleRepl()), opTap(tapStart)) : options.useStdin ? pipeAsync(toAsyncIterable(words, readStdin()), opTap(tapStart)) : words.map(mapStart); try { yield* pipeAsync(suggestionsForWords(iWords, clean({ ...options }), configFile.config), opMap(mapEnd)); } catch (e) { if (!(e instanceof SuggestionError)) throw e; console.error(e.message); process.exitCode = 1; } } function createInit(options) { return configInit(options); } function registerApplicationFeatureFlags() { const ff = getFeatureFlags(); [{ name: "timer", description: "Display elapsed time for command." }].forEach((flag) => ff.register(flag)); return ff; } function parseApplicationFeatureFlags(flags) { return parseFeatureFlags(flags, registerApplicationFeatureFlags()); } //#endregion export { IncludeExcludeFlag, checkText, createInit, lint, listDictionaries, parseApplicationFeatureFlags, suggestions, trace }; //# sourceMappingURL=application.js.map