Configurações
Configuração do projeto TypeScript
As seguintes configurações no tsconfig.json são necessárias para o funcionamento.
{ "compilerOptions": { "target": "es5", "module": "commonjs", "emitDecoratorMetadata": true, "experimentalDecorators": true, "esModuleInterop": true, } }
Configurações da Aplicação
Por padrão a aplicação procurará um arquivo proton.json
que poderá ter as configurações:
{ "servers": [ { "port": 3001, "useHttps": false } ] "defaultRoutes": true, "database": { "name": "defaultTestConnection", "type": "sqlite", "database": "proton.sqlite", "synchronize": true, "logging": false, "entities": [ "./dist/models/**/*.js" ] } }, "cors": { "origin": "*", "methods": ["GET", "POST", "OPTIONS", "PUT", "PATCH", "DELETE"], "allowedHeaders": ["Content-Type", "Authorization"] }, "logger": { "enabled": false, "transports": [ { "type": "file", "options": { "filename": "./test/logs.log" } }, { "type": "console" } ] }, "https": { "enabled": false, "key": "./src/cert/cert.key", "cert": "./src/cert/cert.cert" } }
Estrutura do Arquivo de Configuração
export interface GlobalConfig { servers: ServerConfig[]; database: any; cors?: cors.CorsOptions; logger?: LoggerConfig; https?: HTTPSConfig; defaultRoutes?: boolean; } export interface ServerConfig { port: number; useHttps: boolean; } export interface DatabaseConfig { name: string; username: string; password: string; options: sequelize.Options; } export interface DBDefine { underscored: boolean; } export interface HTTPSConfig { enabled: boolean; key: string; cert: string; } export interface LoggerConfig { enabled: boolean; transports: { type: string; options: winston.TransportOptions; }[]; }
GlobalConfig
Proriedade | Tipo | Descrição |
---|---|---|
servers | ServerConfig[] | Configuração das portas que serão levantadas. Permite multiplas configurações |
database | ConnectionOptions | Configuração da base de dados usada pela aplicação (Depende do DBConnector usado) |
cors | cors.CorsOptions | Configuração do CORS da aplicação. O Protontype usa o módulo cors para fazer esse trabalho. Esta propriedade segue o mesmo objeto de configuração do módulo cors |
logger | LoggerConfig | Configurações de log |
https | HTTPSConfig | Configura o HTTPS na aplicação |
defaultRoutes | boolean | Habilita a configuração das rotas parões que a aplicação disponibiliza. |
ServerConfig
Propriedade | Tipo | Descrição |
---|---|---|
port | number | Porta que o servidor irá levantar |
useHttps | boolean | Indica se a porta usará HTTPS |
Database (ConnectionOptions)
Dependerá do DBConnector usado. Por default o Protontype usa o TypeORM. As propriedades do objeto database: {...} será de acordo com as configurações do TypeORM.
Ver connection options do TypeORM
LoggerConfig
Propriedade | Tipo | Descrição |
---|---|---|
enabled | boolean | Habilita o log |
transports | Object | Configura onde os logs serão exibidos ou gravados |
transports
Propriedade | Tipo | Descrição |
---|---|---|
type | string | Pode ser: "file" ou "console" |
options | winston.TransportOptions | Opções do módulo Winston |
Exemplo
"transports": [ { "type": "file", "options": { "filename": "./test/logs.log" } }, { "type": "console" } ] }
HTTPSConfig
Propriedade | Tipo | Descrição |
---|---|---|
key | string | Chave privada do certificado |
cert | string | Arquivo que contém o certificado (chave pública) |
Acesso as Configurações na Aplicação
Para ter acesso as propriedades do arquivo de configuração dentro da aplicação, o módulo disponibiiza a classe ProtonConfigLoader
.
O método loadConfig(filePath?: string)
retorna um objeto do tipo GlobalConfig
.
let config: GlobalConfig = ProtonConfigLoader.loadConfig();
Pode-se opcionalmente espeficicar o caminho do arquivo. Caso não seja informado a função procurará um arquivo proton.json na raiz do projeto.
let config: GlobalConfig = ProtonConfigLoader.loadConfig('./config/custom-config.json');