2023-11-08 20:31:03 +00:00
import type { Options as SequelizeOptions } from "sequelize" ;
2021-04-15 21:30:25 +00:00
import "dotenv/config" ;
2020-04-14 23:40:00 +00:00
export interface DbConfig {
type : SequelizeOptions [ 'dialect' ] ;
host : SequelizeOptions [ 'host' ] ;
port : SequelizeOptions [ 'port' ] ;
database : string ;
user : string ;
password : string ;
}
2023-10-02 03:23:22 +00:00
export interface Config {
2024-02-17 03:57:21 +00:00
appName : string ;
2020-04-14 23:40:00 +00:00
userAgent : string ;
2024-02-17 03:57:21 +00:00
trustProxy? : boolean | string | string [ ] | number | ( ( ip : string ) = > boolean ) ;
baseUrl? : string ;
2020-04-14 23:40:00 +00:00
host? : string ;
port : number ;
db : DbConfig ;
orsToken? : string ;
mapboxToken? : string ;
maxmindUserId? : string ;
maxmindLicenseKey? : string ;
2024-02-16 05:23:35 +00:00
limaLabsToken? : string ;
2024-02-19 12:41:23 +00:00
/** Hide the "Open this on Google/Bing Maps" links in the map style menu */
hideCommercialMapLinks? : boolean ;
2024-02-19 13:27:04 +00:00
customCssFile? : string ;
2024-03-16 05:54:42 +00:00
nominatimUrl : string ;
openElevationApiUrl : string ;
2020-04-14 23:40:00 +00:00
}
const config : Config = {
2024-02-17 03:57:21 +00:00
appName : process.env.APP_NAME || "FacilMap" ,
2021-04-15 21:30:25 +00:00
userAgent : process.env.USER_AGENT || 'FacilMap' ,
2024-02-17 03:57:21 +00:00
trustProxy : (
! process . env . TRUST_PROXY ? undefined :
process . env . TRUST_PROXY === "true" ? true :
process . env . TRUST_PROXY . match ( /^\d+$/ ) ? Number ( process . env . TRUST_PROXY ) :
process . env . TRUST_PROXY
) ,
baseUrl : process.env.BASE_URL ? ( process . env . BASE_URL . endsWith ( "/" ) ? process . env . BASE_URL : ` ${ process . env . BASE_URL } / ` ) : undefined ,
2020-04-14 23:40:00 +00:00
host : process.env.HOST || undefined ,
port : process.env.PORT ? Number ( process . env . PORT ) : 8080 ,
2014-04-18 18:11:50 +00:00
db : {
2020-04-14 23:40:00 +00:00
type : process . env . DB_TYPE as any || "mysql" , // mysql, postgres, mariadb, sqlite
2016-10-18 13:24:02 +00:00
host : process.env.DB_HOST || "localhost" ,
2020-04-14 23:40:00 +00:00
port : Number ( process . env . DB_PORT ) || undefined ,
2016-10-18 18:27:57 +00:00
database : process.env.DB_NAME || "facilmap" ,
user : process.env.DB_USER || "facilmap" ,
2020-12-25 13:21:09 +00:00
password : process.env.DB_PASSWORD || "facilmap"
2017-11-22 19:22:11 +00:00
} ,
2020-12-25 13:21:09 +00:00
orsToken : process.env.ORS_TOKEN || "" , // Get a token on https://go.openrouteservice.org/
2018-03-16 14:28:12 +00:00
mapboxToken : process.env.MAPBOX_TOKEN || "" , // Get an API key on https://www.mapbox.com/signup/
2020-04-14 23:54:38 +00:00
// Maxmind configuration. If specified, the maxmind GeoLite2 database will be downloaded for Geo IP lookup (to show the initial map state) and kept it in memory
// Sign up here: https://www.maxmind.com/en/geolite2/signup
maxmindUserId : process.env.MAXMIND_USER_ID || "" ,
maxmindLicenseKey : process.env.MAXMIND_LICENSE_KEY || "" ,
2024-02-16 05:23:35 +00:00
2024-02-19 12:41:23 +00:00
limaLabsToken : process.env.LIMA_LABS_TOKEN || "" , // Get a token on https://maps.lima-labs.com/,
hideCommercialMapLinks : process.env.HIDE_COMMERCIAL_MAP_LINKS === "1" ,
2024-02-19 13:27:04 +00:00
customCssFile : process.env.CUSTOM_CSS_FILE || undefined ,
2024-03-16 05:54:42 +00:00
nominatimUrl : process.env.NOMINATIM_URL || "https://nominatim.openstreetmap.org" ,
openElevationApiUrl : process.env.OPEN_ELEVATION_URL || "https://api.open-elevation.com" ,
2020-12-24 04:57:46 +00:00
} ;
export default config ;