Pular para o conteúdo principal

Tools

O TyForge fornece um conjunto de utilitarios genericos reutilizaveis em toda a biblioteca e projetos consumidores. Cada ferramenta resolve um problema especifico sem depender de dominio ou framework.

Ferramentas disponiveis

TypeGuard

Classe estatica para verificacao e narrowing de tipos em tempo de execucao. Todos os metodos retornam Result<T, ExceptionValidation> ou type guards nativos do TypeScript.

Regra fundamental: nunca use typeof manualmente no projeto. Toda verificacao de tipo primitivo deve passar pelo TypeGuard.

import { TypeGuard } from "tyforge";

const result = TypeGuard.isString(value, "fieldName", 1, 255);
if (result.success) {
// result.value e a string ja com trim
}

Documentacao completa do TypeGuard

ToolObjectTransform

Utilitario para achatar e desachatar objetos aninhados. Usado internamente pela configuracao (loadTyForgeConfig) e pelo linter para validar configs com chaves compostas como schema.validate.create.

import { ToolObjectTransform } from "tyforge";

const obj = { schema: { validate: { create: "full" } } };
const flat = ToolObjectTransform.flatten(obj);
// Map { "schema.validate.create" => "full" }

const restored = ToolObjectTransform.unflatten(flat);
// { schema: { validate: { create: "full" } } }

Metodos:

MetodoAssinaturaDescricao
flatten(obj, prefix?) => Map<string, unknown>Achata objeto aninhado em um Map com chaves compostas por .
unflatten(flat) => Record<string, unknown>Reconstroi objeto aninhado a partir de um Map achatado

O unflatten possui protecao contra chaves perigosas (__proto__, constructor, prototype), ignorando-as silenciosamente.

ToolCliParser

Parser leve de argumentos de linha de comando. Nao depende de bibliotecas externas.

import { ToolCliParser } from "tyforge";

const cli = new ToolCliParser(process.argv.slice(2));

cli.hasFlag("--fix"); // boolean
cli.getFlagValue("--format"); // string | undefined
cli.getPositionalArgs(); // string[]

Metodos:

MetodoRetornoDescricao
hasFlag(name)booleanVerifica se a flag existe nos argumentos
getFlagValue(name)string | undefinedRetorna o valor do proximo argumento apos a flag
getPositionalArgs()string[]Retorna argumentos que nao sao flags nem valores de flags

ToolFileDiscovery

Descoberta recursiva de arquivos por extensao ou caminhos especificos. Ignora node_modules e .git automaticamente.

import { ToolFileDiscovery } from "tyforge";

const discovery = new ToolFileDiscovery("src", ["**/__tests__/**"]);

const allTs = discovery.findByExtension(".ts");
const specific = discovery.findByPaths(["src/tools", "src/lint"], ".ts");

Metodos:

MetodoRetornoDescricao
findByExtension(ext)string[]Busca recursiva por extensao no diretorio raiz
findByPaths(paths, ext)string[]Busca em caminhos especificos (arquivos ou diretorios)

O construtor aceita um array de padroes glob para exclusao (ex: ["**/node_modules/**"]).

ToolGit

Utilitario para operacoes Git simples, usado pelo linter no modo --staged.

import { ToolGit } from "tyforge";

const staged = ToolGit.getStagedFiles(".ts");
// Retorna array de caminhos de arquivos .ts staged no git

Metodos:

MetodoRetornoDescricao
getStagedFiles(ext?)string[]Lista arquivos staged (Added, Copied, Modified) filtrados por extensao

Usa git diff --cached --name-only --diff-filter=ACM internamente. Retorna array vazio se o comando falhar (ex: diretorio nao e um repositorio git).

Proximos passos

  • TypeGuard — referencia completa de todos os metodos de verificacao de tipo