| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const _ = require('lodash'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 17:52:16 +02:00
										 |  |  | function env(key, defaultValue) { | 
					
						
							| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  |   return _.has(process.env, key) ? process.env[key] : defaultValue; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const utils = { | 
					
						
							| 
									
										
										
										
											2020-04-27 17:52:16 +02:00
										 |  |  |   int(key, defaultValue) { | 
					
						
							|  |  |  |     if (!_.has(process.env, key)) { | 
					
						
							|  |  |  |       return defaultValue; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const value = process.env[key]; | 
					
						
							|  |  |  |     return parseInt(value, 10); | 
					
						
							| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 17:52:16 +02:00
										 |  |  |   float(key, defaultValue) { | 
					
						
							|  |  |  |     if (!_.has(process.env, key)) { | 
					
						
							|  |  |  |       return defaultValue; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const value = process.env[key]; | 
					
						
							|  |  |  |     return parseFloat(value); | 
					
						
							| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 17:52:16 +02:00
										 |  |  |   bool(key, defaultValue) { | 
					
						
							|  |  |  |     if (!_.has(process.env, key)) { | 
					
						
							|  |  |  |       return defaultValue; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const value = process.env[key]; | 
					
						
							|  |  |  |     return value === 'true'; | 
					
						
							| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 17:52:16 +02:00
										 |  |  |   json(key, defaultValue) { | 
					
						
							|  |  |  |     if (!_.has(process.env, key)) { | 
					
						
							|  |  |  |       return defaultValue; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const value = process.env[key]; | 
					
						
							| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  |     try { | 
					
						
							| 
									
										
										
										
											2020-04-27 17:52:16 +02:00
										 |  |  |       return JSON.parse(value); | 
					
						
							| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  |     } catch (error) { | 
					
						
							| 
									
										
										
										
											2020-04-21 18:24:15 +02:00
										 |  |  |       throw new Error(`Invalid json environment variable ${key}: ${error.message}`); | 
					
						
							| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 17:52:16 +02:00
										 |  |  |   array(key, defaultValue) { | 
					
						
							|  |  |  |     if (!_.has(process.env, key)) { | 
					
						
							|  |  |  |       return defaultValue; | 
					
						
							| 
									
										
										
										
											2020-04-15 09:56:34 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 17:52:16 +02:00
										 |  |  |     let value = process.env[key]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  |     if (value.startsWith('[') && value.endsWith(']')) { | 
					
						
							|  |  |  |       value = value.substring(1, value.length - 1); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return value.split(',').map(v => { | 
					
						
							| 
									
										
										
										
											2020-04-21 18:24:15 +02:00
										 |  |  |       return _.trim(_.trim(v, ' '), '"'); | 
					
						
							| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 17:52:16 +02:00
										 |  |  |   date(key, defaultValue) { | 
					
						
							|  |  |  |     if (!_.has(process.env, key)) { | 
					
						
							|  |  |  |       return defaultValue; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const value = process.env[key]; | 
					
						
							|  |  |  |     return new Date(value); | 
					
						
							| 
									
										
										
										
											2020-04-03 22:31:20 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Object.assign(env, utils); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = env; |