Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> git-subtree-dir: gti-maquina-comercial git-subtree-mainline:93ca82979egit-subtree-split:b77484946f
28 lines
1021 B
JavaScript
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;
|
|
}
|