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:93ca82979egit-subtree-split:b77484946f
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user