Refactors configuration management (#4271)
* Adds flow types / Configuration interfaces * Lets call it options * Use a single interface to generate the configurations * Translates options to definitions only if comments are set * improves logic * Moves objects around * Fixes issue affecting logging of circular objects * fixes undefined env * Moves all defaults to defaults * Adds back CLI defaults * Restored defaults in commander.js * Merge provided defaults and platform defaults * Addresses visual nits * Improves Config.js code * Adds ability to pass the default value in trailing comments * Load platform defaults from the definitions file * proper default values on various options * Adds ParseServer.start and server.start(options) as quick startup methods * Moves creating liveQueryServer http into ParseServer.js * removes dead code * Adds tests to guarantee we can start a LQ Server from main module * Fixes incorrect code regading liveQuery init port * Start a http server for LQ if port is specified * ensure we dont fail if config.port is not set * Specify port * ignore other path skipped in tests * Adds test for custom middleware setting * Refactors new Config into Config.get - Hides AppCache from ParseServer.js, use Config.put which validates * Extracts controller creation into Controllers/index.js - This makes the ParseServer init way simpler * Move serverURL inference into ParseServer * review nits
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import {nullParser} from './cli/utils/parsers';
|
||||
|
||||
import { nullParser } from './Options/parsers';
|
||||
const { ParseServerOptions } = require('./Options/Definitions');
|
||||
const logsFolder = (() => {
|
||||
let folder = './logs/';
|
||||
if (typeof process !== 'undefined' && process.env.TESTING === '1') {
|
||||
@@ -16,25 +16,21 @@ const { verbose, level } = (() => {
|
||||
return { verbose, level: verbose ? 'verbose' : undefined }
|
||||
})();
|
||||
|
||||
export default {
|
||||
DefaultMongoURI: 'mongodb://localhost:27017/parse',
|
||||
|
||||
const DefinitionDefaults = Object.keys(ParseServerOptions).reduce((memo, key) => {
|
||||
const def = ParseServerOptions[key];
|
||||
if (def.hasOwnProperty('default')) {
|
||||
memo[key] = def.default;
|
||||
}
|
||||
return memo;
|
||||
}, {});
|
||||
|
||||
const computedDefaults = {
|
||||
jsonLogs: process.env.JSON_LOGS || false,
|
||||
logsFolder,
|
||||
verbose,
|
||||
level,
|
||||
silent: false,
|
||||
enableAnonymousUsers: true,
|
||||
allowClientClassCreation: true,
|
||||
maxUploadSize: '20mb',
|
||||
verifyUserEmails: false,
|
||||
preventLoginWithUnverifiedEmail: false,
|
||||
sessionLength: 31536000,
|
||||
expireInactiveSessions: true,
|
||||
revokeSessionOnPasswordReset: true,
|
||||
schemaCacheTTL: 5000, // in ms
|
||||
cacheTTL: 5000,
|
||||
cacheMaxSize: 10000,
|
||||
userSensitiveFields: ['email'],
|
||||
objectIdSize: 10,
|
||||
masterKeyIps: []
|
||||
}
|
||||
|
||||
export default Object.assign({}, DefinitionDefaults, computedDefaults);
|
||||
export const DefaultMongoURI = DefinitionDefaults.databaseURI;
|
||||
|
||||
Reference in New Issue
Block a user