mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-06 19:57:26 -08:00
build: expand typecheck coverage beyond src
This commit is contained in:
@@ -14,7 +14,7 @@ interface CliOptions {
|
||||
emitDiagnostics: boolean;
|
||||
mecabCommand?: string;
|
||||
mecabDictionaryPath?: string;
|
||||
forceMecabOnly?: boolean;
|
||||
forceMecabOnly: boolean;
|
||||
yomitanExtensionPath?: string;
|
||||
yomitanUserDataPath?: string;
|
||||
emitColoredLine: boolean;
|
||||
@@ -678,7 +678,7 @@ function getBandColor(
|
||||
}
|
||||
const normalizedBand = Math.ceil((safeRank / topX) * bandedColors.length);
|
||||
const band = Math.min(bandedColors.length, Math.max(1, normalizedBand));
|
||||
return bandedColors[band - 1];
|
||||
return bandedColors[band - 1] ?? colorSingle;
|
||||
}
|
||||
|
||||
function getTokenColor(token: MergedToken, args: CliOptions): string {
|
||||
@@ -845,7 +845,26 @@ async function main(): Promise<void> {
|
||||
? simplifyTokenWithVerbose(token, getFrequencyRank)
|
||||
: simplifyToken(token),
|
||||
) ?? null;
|
||||
const diagnostics = {
|
||||
const diagnostics: {
|
||||
yomitan: {
|
||||
available: boolean;
|
||||
loaded: boolean;
|
||||
forceMecabOnly: boolean;
|
||||
note: string | null;
|
||||
};
|
||||
mecab: {
|
||||
command: string;
|
||||
dictionaryPath: string | null;
|
||||
available: boolean;
|
||||
status?: 'ok' | 'no-tokens';
|
||||
note?: string;
|
||||
};
|
||||
tokenizer: {
|
||||
sourceHint: 'none' | 'yomitan-merged' | 'mecab-merge';
|
||||
mergedTokenCount: number;
|
||||
totalTokenCount: number;
|
||||
};
|
||||
} = {
|
||||
yomitan: {
|
||||
available: Boolean(yomitanState?.available),
|
||||
loaded: useYomitan,
|
||||
@@ -864,11 +883,11 @@ async function main(): Promise<void> {
|
||||
},
|
||||
};
|
||||
if (tokens === null) {
|
||||
diagnostics.mecab['status'] = 'no-tokens';
|
||||
diagnostics.mecab['note'] =
|
||||
diagnostics.mecab.status = 'no-tokens';
|
||||
diagnostics.mecab.note =
|
||||
'MeCab returned no parseable tokens. This is often caused by a missing/invalid MeCab dictionary path.';
|
||||
} else {
|
||||
diagnostics.mecab['status'] = 'ok';
|
||||
diagnostics.mecab.status = 'ok';
|
||||
}
|
||||
|
||||
const output = {
|
||||
|
||||
@@ -348,7 +348,11 @@ function findSelectedCandidateIndexes(
|
||||
const mergedSignatures = mergedTokens.map(mergedTokenSignature);
|
||||
const selected: number[] = [];
|
||||
for (let i = 0; i < candidates.length; i += 1) {
|
||||
const candidateSignatures = candidates[i].tokens.map(candidateTokenSignature);
|
||||
const candidate = candidates[i];
|
||||
if (!candidate) {
|
||||
continue;
|
||||
}
|
||||
const candidateSignatures = candidate.tokens.map(candidateTokenSignature);
|
||||
if (candidateSignatures.length !== mergedSignatures.length) {
|
||||
continue;
|
||||
}
|
||||
@@ -490,6 +494,9 @@ function renderTextOutput(payload: Record<string, unknown>): void {
|
||||
} else {
|
||||
for (let i = 0; i < finalTokens.length; i += 1) {
|
||||
const token = finalTokens[i];
|
||||
if (!token) {
|
||||
continue;
|
||||
}
|
||||
process.stdout.write(
|
||||
` [${i}] ${token.surface} -> ${token.headword} (${token.reading}) [${token.startPos}, ${token.endPos})\n`,
|
||||
);
|
||||
@@ -505,6 +512,9 @@ function renderTextOutput(payload: Record<string, unknown>): void {
|
||||
|
||||
for (let i = 0; i < candidates.length; i += 1) {
|
||||
const candidate = candidates[i];
|
||||
if (!candidate) {
|
||||
continue;
|
||||
}
|
||||
process.stdout.write(
|
||||
` [${i}] source=${String(candidate.source)} index=${String(candidate.index)} selectedByTokenizer=${String(candidate.selectedByTokenizer)} tokenCount=${String(candidate.tokenCount)}\n`,
|
||||
);
|
||||
@@ -514,6 +524,9 @@ function renderTextOutput(payload: Record<string, unknown>): void {
|
||||
}
|
||||
for (let j = 0; j < tokens.length; j += 1) {
|
||||
const token = tokens[j];
|
||||
if (!token) {
|
||||
continue;
|
||||
}
|
||||
process.stdout.write(
|
||||
` - ${token.surface} -> ${token.headword} (${token.reading}) [${token.startPos}, ${token.endPos})\n`,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user