O projeto aborda como ler 10GB de JSON sob demanda no frontend sem travar a tela usando as web streams. Funciona tanto em navegadores quanto em Node.js ou em qualquer lugar que execute JS sem usar bibliotecas adicionais.
O back-end vai utilizar web streams para ler o arquivo CSV, converter cada linha individual para JSON, então responder de forma gradual aos pedido HTTP pro front-end. O front-end vai usar web streams para ler/consumir o JSON/dados sob demanda de forma gradual, respeitando os paradigmas das streams, e consumindo e renderizando cada linha individualmente. Ou seja iremos converter node.js streams em web streams. Alem disso, o front-end vai poder cancelar operações de forma inteligente usando as apis nativas, somente com as web api.
A streams deixa o dado/linha de tal arquivo/database na memoria e depois retira apos terminar de ler e tratar aquela linha do momento, assim nao travando a tela, fazendo tudo sob demanda.
- Back-end:
npm run dev
- Front-end:
npm run dev
-
Back-end: Libs nativas do Node.js
- createServer
- createReadStream
- Readable
- WritableStream
- Csvtojson
-
Front-end: Libs nativas do JS
- fetch
- TextDecoderStream
- WritableStream
- AbortController
-
Front-end:
- http-server (para rodar o front-end localmente)