import json
from functools import lru_cache
from pathlib import Path

DICTIONARY_PATH = Path(__file__).resolve().parents[1] / "seeds" / "data" / "name_dictionary.json"


@lru_cache(maxsize=1)
def _load_dictionary() -> dict[str, list[str]]:
    if not DICTIONARY_PATH.exists():
        return {}
    with open(DICTIONARY_PATH) as f:
        return json.load(f)


def get_naming_categories() -> list[str]:
    """Return sorted list of available naming category names."""
    return sorted(_load_dictionary().keys())
