Giter VIP home page Giter VIP logo

node-config's People

Contributors

wandersonwhcr avatar

Watchers

 avatar

node-config's Issues

Carregamento Síncrono

Criar um método que possibilite o carregamento das configurações de forma síncrona, sem Promises. Para tanto, precisa-se isolar o processamento de nomes de arquivos e mesclagem, para que este seja utilizado nos formatos síncrono e assíncrono.

Após, adicionar documentação sobre sua utilização no arquivo README.md.

Carregamento Único

Sabe-se que, se dois padrões podem capturar o mesmo arquivo, a leitura deste é feita mais de uma vez. Para tanto, deve-se otimizar a leitura de arquivos, carregando cada elemento somente uma vez. Esta ideia surgiu nos comentários da issue #25.

Documentação Síncrona

Durante o desenvolvimento da issue #6, não se incluiu uma documentação no arquivo README.md. Precisa-se adicionar uma entrada naquele local, apresentando um exemplo de utilização.

Reavaliar Dependências

Após a finalização da issue #8, deve-se verificar se as dependências do projeto estão definidas para abranger o máximo de projetos.

Por exemplo, o código-fonte atual funciona corretamente em engines mais antigas, como o Node.js 4? Ou, ainda, existe realmente a necessidade de utilizar versões ^1.2.0 do pacote merge?

Carregamento de Arquivos

O código responsável pela ordenação de arquivos conforme prioridade está utilizando o atributo priority que não foi configurado, sendo manipulado como um NaN. Ainda não descobri como posso fazer um teste para simular este problema.

Ainda, parece que arquivos estão sendo capturados múltiplas vezes. Não sei como simular isto, ainda.

Padrão de Métodos para Substring

No mesmo método fetchFilenames, utiliza-se duas funções com o mesmo comportamento no contexto: substr e substring. Transformar para o mais verboso, substring.

Keywords

Sincronizar as keywords do package.json com àquelas definidas neste repositório.

Métodos Privados ao Pacote

Com a alteração aplicada na issue #20, nota-se que estamos com métodos anteriormente "privados" (prefixo _) acessíveis de forma pública. Deve-se alterar a visibilidade destes métodos.

Esta issue deve ser integrada em versão menor.

Dependência FS Indireta

A dependência de um objeto do tipo fs é indireta, ou seja, o pacote funciona corretamente caso não seja informado no construtor o referente parâmetro.

Portanto, deve-se remover esta dependência direta, incrementando uma versão menor, como, por exemplo, de v1.0.2 para v1.1.0. Isto é necessário porque estamos alterando a assinatura de um método.

Atualizar todos os testes que usufruem desta carga no construtor, utilizando o método setFs para configurar o objeto em questão.

Badges

Adicionar badges de versão no NPM e de situação no Travis CI no arquivo README.md.

Desabilitar Configuração do FS

Quando chamado o método Config::setFs com parâmetro undefined, configura-se o fs do próprio Node.js. Isto faz com que sempre exista um valor configurado no atributo Config::_fs.

Deve-se, assim, apresentar o fs padrão no método Config::getFs somente se o atributo Config::_fs seja igual a undefined.

Diretórios Fora do Diretório Atual

Deve-se permitir a leitura de diretórios fora do diretório atual, como o exemplo abaixo:

const Config = require("@wandersonwhcr/config").Config;

var config = new Config([
    "../superdirectory/*.json",
    "/some/path/from/root/*.json",
    "~/.config/*.json"
]);

Configurações

Precisamos desenvolver uma classe que seja responsável pelo carregamento de configurações do sistema.

Esta classe deve efetuar uma execução assíncrona, recebendo como parâmetros no construtor os padrões que devem ser utilizados na captura de arquivos. Os arquivos devem ser carregados em ordem alfabética. O seu conteúdo deve respeitar a sintaxe JSON e estes devem ser mesclados.

Licença

Adicionar o arquivo LICENSE no diretório raiz do código-fonte.

Utiliza-se MIT neste projeto.

Entrada do Módulo

Criar o index.js do módulo, apresentando a classe de configurações.

Node Package

Implementar o package.json para publicação no NPM.

Prioridade no Carregamento

A prioridade de carregamento e mesclagem dos arquivos de configuração deve respeitar, primeiramente, a ordem dos elementos no array de pattern e, posteriormente, a ordem alfabética.

Creio que hoje utiliza-se somente a ordem alfabética dos arquivos.

Melhoria em Padrões

Padrões que iniciam com ./* não estão sendo corretamente utilizados. Deve-se possibilitar que arquivos consigam ser capturados com este prefixo, bem como no formato sem ele.

Motivo

Explicar o porquê deste software ter sido criado no arquivo README.md, sabendo-se que existem muitos outros pacotes que também manipulam configurações.

Badge Travis sem Master

A badge do Travis CI criada no ShieldsIO não está definida para utilizar o branch master.

Instala o Mocha

Precisamos instalar o mocha como dependência de desenvolvimento para iniciar os testes unitários. Criar um teste unitário simples para mostrar a funcionalidade.

Travis CI

Configurar o Travis CI para o projeto, efetuando testes unitários em outras engines do próprio Node.js.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.