cspell
Version:
A Spelling Checker for Code!
97 lines (95 loc) • 3.77 kB
JavaScript
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