Skip to content

Combinações

A dumpkit não impõe limites à sua criatividade. Todas as funções são independentes e puras – podem ser usadas em qualquer ordem, dentro de condicionais, ciclos, ou combinadas com código nativo do Node.js.

As combinações listadas abaixo são apenas exemplos para ilustrar o espírito de composição da biblioteca. Na prática, pode criar inúmeras outras.


Exemplos de combinações

Dump com stack trace

js
dump(valor);
trace();

Dump com timing

js
const { result } = measure('operação', () => fn());
dump(result);

Dump com vista em árvore

js
dump(estrutura, { view: 'tree' });

Dump com vista em tabela

js
dump(usuarios, { view: 'table' });

Dump e pausa

js
await dp(valor);

Dump, stack e pausa

js
trace();
await dp(valor);

Dump e parar com stack

js
trace();
dd(valor);

Medir tempo e parar

js
const { result } = measure('operação', () => fn());
dd(result);

Inspecionar sem cores e guardar

js
const str = inspect(objeto, { colors: false });
fs.writeFileSync('debug.json', str);

Guardar árvore em ficheiro

js
const treeStr = inspect(estrutura, { view: 'tree', colors: false });
fs.writeFileSync('arvore.txt', treeStr);

Análise programática

js
const analysis = analyze(dados);
console.log(analysis.type);
console.log(analysis.properties.length);

Detetar referências circulares

js
const analysis = analyze(objeto);
const isCircular = analysis.properties.some(p => p.value.type === 'circular');

Múltiplos valores no dump

Atualmente, para mostrar vários valores, agrupe‑os num objeto:

js
dump({ v1, v2, v3 });

Combinar com código nativo

js
// Dump condicional
if (process.env.DEBUG) dump(dados);

// Acumular medições
const m1 = measure('A', fnA).measurement;
const m2 = measure('B', fnB).measurement;
dump({ m1, m2 });

// Redirecionar para ficheiro
const stream = createWriteStream('./debug.log');
trace('checkpoint', { stream });
await measure('consulta', () => db.query(sql), { stream });

Tabela de combinações

NomeDescriçãoCódigo
dddDump com stack tracedump(valor); trace()
ddtDump com timingdump(measure('op', () => fn()).result)
ddtvDump com timing e vista árvoredump(measure('op', () => fn()).result, { view: 'tree' })
dpDump e pausaawait dp(valor)
dppDump, stack e pausatrace(); await dp(valor)
dddsDump, stack e parartrace(); dd(valor)
ddtsTiming e parardd(measure('op', () => fn()).result)
ddsDump silencioso (sem cores)dump(obj, { colors: false })
ddpDump com profundidade limitadadump(obj, { depth: 2 })
ddaDump com limite de arraydump(arr, { maxArrayLength: 20 })
tddTrace com stack completotrace('ponto', { showStack: true })
idInspecionar e guardarfs.writeFileSync('log', inspect(obj, { colors: false }))
cdDump condicionalif (debug) dump(dados)
cmComparar mediçõesconst a = measure('A', fnA).measurement; const b = measure('B', fnB).measurement; dump({ a, b })
treeVista em árvoredump(obj, { view: 'tree' })
tableVista em tabeladump(arr, { view: 'table' })
analyzeAnálise programáticaconst analysis = analyze(obj)

Conclusão

As 7 funções basedump, dd, dp, inspect, trace, measure, analyze – formam um pequeno vocabulário. Com elas, pode combinar infinitamente para resolver qualquer necessidade de debug.

A documentação apenas sugere alguns padrões úteis, não uma lista exaustiva. Sinta‑se à vontade para criar as suas próprias combinações e partilhá‑las com a comunidade.

MIT License