Files
COMERCIAL-GTI/gti-maquina-comercial/src/util/collections.mjs
T
GustavoandClaude Sonnet 5 f5af038e19 chore: import gti-maquina-comercial history via subtree
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

git-subtree-dir: gti-maquina-comercial
git-subtree-mainline: 93ca82979e
git-subtree-split: b77484946f
2026-09-28 15:50:08 -03:00

28 lines
1021 B
JavaScript

// Evita `target.push(...source)`: com arrays de dezenas/centenas de milhares de itens
// (bases CNPJ completas, varias cidades) o spread operator em argumentos de funcao
// estoura a pilha de chamadas do V8 (RangeError: Maximum call stack size exceeded).
export function pushAll(target, source) {
for (const item of source) target.push(item);
return target;
}
export function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
// Quebra o vinculo do V8 entre uma substring (fatia) e o buffer da string original.
// Sem isso, qualquer campo guardado a longo prazo mantem a linha CSV/JSON inteira
// viva na memoria (SlicedString), o que com centenas de milhares de linhas retidas
// simultaneamente estoura o heap.
export function copyStr(value) {
return Buffer.from(String(value ?? ''), 'utf8').toString('utf8');
}
export function chunk(array, size) {
const chunks = [];
for (let i = 0; i < array.length; i += size) {
chunks.push(array.slice(i, i + size));
}
return chunks;
}