Parece-me que você está prestes a criar uma plataforma interna para compensar a falta de semântica inerente à a língua que você escolheu.
Até mesmo definições de esquema (seja XML DTD ou esquema JSON ou esquema de mongoose ) não fornecerá a você a segurança da análise estática. Tudo o que você realmente pode usá-los é garantir que seu sistema não se depare silenciosamente com comportamento indefinido e acabe falhando.
Não sei ao certo por que você não usa um idioma, isso simplesmente fornece isso imediatamente. Usando uma linguagem tipada dinamicamente e embutindo restrições de tipo em que parece combinar o pior dos dois mundos. Ainda mais, porque as modernas linguagens estaticamente tipadas são capazes de inferir vastas partes dessas restrições implicitamente.
Pessoalmente, sugiro que você dê uma olhada em Haxe 's Backend JavaScript . Existe um site dedicado ao desenvolvimento de node.js com o Haxe - você pode começar por aí. Os tipos anônimos do Haxe podem ser usados rapidamente para vincular fontes JSON de maneira segura, sem qualquer sobrecarga de tempo de execução. Ainda assim, se você desejar, suas instalações de metaprogramação permitirão que você gere automaticamente código de validação a partir do momento da compilação.
Claro que o Haxe não é de longe a única opção disponível para direcionar JavaScript de maneira segura. Então, se você acha que precisa dos benefícios da tipagem estática, você deve investir tempo para encontrar uma linguagem de sua preferência, que realmente incorpore essas informações diretamente em sua semântica estaticamente analisável.