/** * Config source: https://git.io/JfefZ * * Feel free to let us know via PR, if you find something broken in this config * file. */ import proxyAddr from 'proxy-addr'; import Env from '@ioc:Adonis/Core/Env'; import Application from '@ioc:Adonis/Core/Application'; import type { ServerConfig } from '@ioc:Adonis/Core/Server'; import type { LoggerConfig } from '@ioc:Adonis/Core/Logger'; import type { ProfilerConfig } from '@ioc:Adonis/Core/Profiler'; import type { ValidatorConfig } from '@ioc:Adonis/Core/Validator'; import type { AssetsManagerConfig } from '@ioc:Adonis/Core/AssetsManager'; /* |-------------------------------------------------------------------------- | Application secret key |-------------------------------------------------------------------------- | | The secret to encrypt and sign different values in your application. | Make sure to keep the `APP_KEY` as an environment variable and secure. | | Note: Changing the application key for an existing app will make all | the cookies invalid and also the existing encrypted data will not | be decrypted. | */ export const appKey: string = Env.get('APP_KEY'); /* |-------------------------------------------------------------------------- | Http server configuration |-------------------------------------------------------------------------- | | The configuration for the HTTP(s) server. Make sure to go through all | the config properties to make keep server secure. | */ export const http: ServerConfig = { /* |-------------------------------------------------------------------------- | Allow method spoofing |-------------------------------------------------------------------------- | | Method spoofing enables defining custom HTTP methods using a query string | `_method`. This is usually required when you are making traditional | form requests and wants to use HTTP verbs like `PUT`, `DELETE` and | so on. | */ allowMethodSpoofing: false, /* |-------------------------------------------------------------------------- | Subdomain offset |-------------------------------------------------------------------------- */ subdomainOffset: 2, /* |-------------------------------------------------------------------------- | Request Ids |-------------------------------------------------------------------------- | | Setting this value to `true` will generate a unique request id for each | HTTP request and set it as `x-request-id` header. | */ generateRequestId: false, /* |-------------------------------------------------------------------------- | Trusting proxy servers |-------------------------------------------------------------------------- | | Define the proxy servers that AdonisJs must trust for reading `X-Forwarded` | headers. | */ trustProxy: proxyAddr.compile('loopback'), /* |-------------------------------------------------------------------------- | Generating Etag |-------------------------------------------------------------------------- | | Whether or not to generate an etag for every response. | */ etag: false, /* |-------------------------------------------------------------------------- | JSONP Callback |-------------------------------------------------------------------------- */ jsonpCallbackName: 'callback', /* |-------------------------------------------------------------------------- | Cookie settings |-------------------------------------------------------------------------- */ cookie: { domain: '', path: '/', maxAge: '2h', httpOnly: true, secure: false, sameSite: false, }, }; /* |-------------------------------------------------------------------------- | Logger |-------------------------------------------------------------------------- */ export const logger: LoggerConfig = { /* |-------------------------------------------------------------------------- | Application name |-------------------------------------------------------------------------- | | The name of the application you want to add to the log. It is recommended | to always have app name in every log line. | | The `APP_NAME` environment variable is automatically set by AdonisJS by | reading the `name` property from the `package.json` file. | */ name: Env.get('APP_NAME'), /* |-------------------------------------------------------------------------- | Toggle logger |-------------------------------------------------------------------------- | | Enable or disable logger application wide | */ enabled: true, /* |-------------------------------------------------------------------------- | Logging level |-------------------------------------------------------------------------- | | The level from which you want the logger to flush logs. It is recommended | to make use of the environment variable, so that you can define log levels | at deployment level and not code level. | */ level: Env.get('LOG_LEVEL', 'info'), redact: { paths: ['password', '*.password'], }, /* |-------------------------------------------------------------------------- | Pretty print |-------------------------------------------------------------------------- | | It is highly advised NOT to use `prettyPrint` in production, since it | can have huge impact on performance. | */ prettyPrint: Env.get('NODE_ENV') === 'development', }; /* |-------------------------------------------------------------------------- | Profiler |-------------------------------------------------------------------------- */ export const profiler: ProfilerConfig = { /* |-------------------------------------------------------------------------- | Toggle profiler |-------------------------------------------------------------------------- | | Enable or disable profiler | */ enabled: true, /* |-------------------------------------------------------------------------- | Blacklist actions/row labels |-------------------------------------------------------------------------- | | Define an array of actions or row labels that you want to disable from | getting profiled. | */ blacklist: [], /* |-------------------------------------------------------------------------- | Whitelist actions/row labels |-------------------------------------------------------------------------- | | Define an array of actions or row labels that you want to whitelist for | the profiler. When whitelist is defined, then `blacklist` is ignored. | */ whitelist: [], }; /* |-------------------------------------------------------------------------- | Validator |-------------------------------------------------------------------------- | | Configure the global configuration for the validator. Here's the reference | to the default config https://git.io/JT0WE | */ export const validator: ValidatorConfig = {}; /* |-------------------------------------------------------------------------- | Assets |-------------------------------------------------------------------------- | | Configure the asset manager you are using to compile the frontend assets | */ export const assets: AssetsManagerConfig = { /* |-------------------------------------------------------------------------- | Driver |-------------------------------------------------------------------------- | | Currently we only support webpack encore and may introduce more drivers | in the future | */ driver: Env.get('ASSETS_DRIVER'), /* |-------------------------------------------------------------------------- | Public path |-------------------------------------------------------------------------- | | Directory to search for the "manifest.json" and the "entrypoints.json" | files | */ publicPath: Application.publicPath('assets'), /* |-------------------------------------------------------------------------- | Script tag |-------------------------------------------------------------------------- | | Define attributes for the entryPointScripts tags | */ script: { attributes: { defer: true, }, }, /* |-------------------------------------------------------------------------- | Style tag |-------------------------------------------------------------------------- | | Define attributes for the entryPointStyles tags | */ style: { attributes: {}, }, };