63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
const toInteger = require("lodash.tointeger")
|
|
const postgresTypes = require("@as/postgres-types")
|
|
const fs = require("fs-extra")
|
|
|
|
module.exports = async function createConfig({ env = process.env } = {}) {
|
|
const googleServiceAccountKeyRaw = await fs.readFile(
|
|
env.GOOGLE_SERVICE_ACCOUNT_KEY_FILE,
|
|
{ encoding: "utf-8" }
|
|
)
|
|
const googleServiceAccountKey = JSON.parse(googleServiceAccountKeyRaw)
|
|
|
|
const smtp = {
|
|
user: env.SMTP_USER,
|
|
pass: env.SMTP_PASS,
|
|
host: env.SMTP_HOST || "127.0.0.1",
|
|
port: env.SMTP_PORT || "25",
|
|
from: env.SMTP_FROM || env.SMTP_USER,
|
|
}
|
|
|
|
const postgresExternal = process.env.POSTGRES_EXTERNAL
|
|
// const postgresUrl = new URL(env.DATABASE_URL)
|
|
|
|
const apiUrl = env.API_URL || "https://api.alertesecours.fr/api"
|
|
const config = {
|
|
project: {
|
|
nominatimUrl: env.NOMINATIM_URL,
|
|
what3wordsApiKey: env.WHAT3WORDS_API_KEY,
|
|
googleServiceAccountKey,
|
|
apiUrl,
|
|
},
|
|
logger: {
|
|
level: env.LOGLEVEL || "info",
|
|
},
|
|
postgres: {
|
|
dsn: env.DATABASE_URL,
|
|
// host: postgresUrl.hostname,
|
|
// port: postgresUrl.port || 5432,
|
|
// database: postgresUrl.pathname.split("/")[1],
|
|
// username: postgresUrl.username,
|
|
// password: postgresUrl.password,
|
|
max: toInteger(env.PG_MAXIMUM_POOL_SIZE) || 10,
|
|
types: await postgresTypes(),
|
|
ssl: !!postgresExternal,
|
|
},
|
|
hasura: {
|
|
dsn: env.HASURA_GRAPHQL_URL,
|
|
adminSecret: env.HASURA_GRAPHQL_ADMIN_SECRET,
|
|
},
|
|
apolloClient: {
|
|
dsn: env.HASURA_GRAPHQL_URL,
|
|
headers: {
|
|
"X-Hasura-Admin-Secret": env.HASURA_GRAPHQL_ADMIN_SECRET,
|
|
"X-Hasura-Use-Backend-Only-Permissions": "true",
|
|
},
|
|
},
|
|
amqp: {
|
|
url: `${env.AMQP_URL}?heartbeat=30`, // https://github.com/amqp-node/amqplib/issues/733
|
|
},
|
|
smtp,
|
|
}
|
|
|
|
return config
|
|
}
|