Closed diegodario88 closed 4 years ago
Faaala Diego!!
Brother, esse PR ficou muito grande. Veio com várias mudanças distintas no mesmo PR. Tem que quebrar ele em alguns.
Exemplo: 1 PR para testes; 1 PR para os imports, 1PR para os refactors; etc.
Vi que você aplicou destructuring nos imports mas alguns ficam ruim de leitura, exemplo:
import { set } from '../repositories/cache.repository';
Esse set depois fica sem sentido no arquivo, pelo nome não tem como saber que é de cache. No caso tem que por um apelido ou deixar o import normal mesmo para depois usar ele como 'método' cacheRepository.set, .exists, etc.
Você abriu a issue do ES modules, sugeria fazer um PR só com os ES modules sem a refatoração para destructuring e tal. Se for o caso de refatorar para destructuring, mandar em outro PR.
Vamos quebrar esse PR em alguns pra analisar e ir aceitando aos poucos :)
Ao refatorar para ESM nativo tive alguns problemas de compatibilidade com as bibliotecas já existentes. Com isso, ao buscar soluções para utilizar a sintaxe de import e outras novidades da linguagem como: • Nullish coalescing:
a ?? b
• Optional chaining: a?.b • Class fields:class C { x = 1; }. This includes static fields but not the #x private field syntax.
• Export namespace syntax:export * as a from 'a';
• Numeric separators:const n = 1_234;
• Optional catch binding:try { doThing(); } catch { }.
Encontrei bastante material sobre a lib Sucrase, uma alternativa ao Babel que promete ser 20x mais rápida. O acoplamento é simples e a integração com o nodemon funciona muito bem, sem nenhum delay aparente ao transformar CJS para ESM, tendo como possibilidade vários transforms inclusive TypeScript, se caso ele for adotado ao projeto o Sucrase facilitaria a transição. Ava precisou de um complemento para enxergar os arquivos ESM, para isso foi adicionado a lib esm e a respectiva configuração ao package.json. Adicinei uma exceção à regra no-unused-expressions apenas para podermos usar "ShortCircuit" e "Ternary" em outros casos essa regra continua apontando erro. closes #19