34 lines
970 B
TypeScript
34 lines
970 B
TypeScript
import type { EnrichedKeyword } from "./helpers";
|
|
|
|
export type KeywordSource = "related" | "suggestions" | "ideas";
|
|
export type KeywordMode = "auto" | KeywordSource;
|
|
/**
|
|
* Where research rows actually came from. "google_ads" is not requestable as
|
|
* a mode; it's the automatic source for countries Labs doesn't support.
|
|
*/
|
|
export type ResearchSource = KeywordSource | "google_ads";
|
|
|
|
export const AUTO_KEYWORD_SOURCES: KeywordSource[] = [
|
|
"related",
|
|
"suggestions",
|
|
"ideas",
|
|
];
|
|
|
|
export const MIN_NON_SEED_FOR_AUTO = 5;
|
|
|
|
export function countNonSeedKeywords(
|
|
rows: EnrichedKeyword[],
|
|
seedKeyword: string,
|
|
): number {
|
|
const normalizedSeed = seedKeyword.trim().toLowerCase();
|
|
return rows.filter((row) => row.keyword !== normalizedSeed).length;
|
|
}
|
|
|
|
export function hasSufficientCoverage(
|
|
rows: EnrichedKeyword[],
|
|
seedKeyword: string,
|
|
threshold: number = MIN_NON_SEED_FOR_AUTO,
|
|
): boolean {
|
|
return countNonSeedKeywords(rows, seedKeyword) >= threshold;
|
|
}
|