Skip to content

Commit

Permalink
fix: Parse Server option maxLogFiles doesn't recognize day duration…
Browse files Browse the repository at this point in the history
… literals such as `1d` to mean 1 day (#9215)
  • Loading branch information
dplewis authored Jul 18, 2024
1 parent 901cff5 commit 0319cee
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 1 deletion.
6 changes: 6 additions & 0 deletions resources/buildConfigDefinitions.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,9 @@ function mapperFor(elt, t) {
if (type == 'NumberOrBoolean') {
return wrap(t.identifier('numberOrBooleanParser'));
}
if (type == 'NumberOrString') {
return t.callExpression(wrap(t.identifier('numberOrStringParser')), [t.stringLiteral(elt.name)]);
}
if (type === 'StringOrStringArray') {
return wrap(t.identifier('arrayParser'));
}
Expand Down Expand Up @@ -212,6 +215,9 @@ function parseDefaultValue(elt, value, t) {
if (type == 'NumberOrBoolean') {
literalValue = t.numericLiteral(parsers.numberOrBoolParser('')(value));
}
if (type == 'NumberOrString') {
literalValue = t.numericLiteral(parsers.numberOrStringParser('')(value));
}

if (nestedOptionTypes.includes(type)) {
const object = parsers.objectParser(value);
Expand Down
10 changes: 10 additions & 0 deletions spec/parsers.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const {
numberParser,
numberOrBoolParser,
numberOrStringParser,
booleanParser,
objectParser,
arrayParser,
Expand All @@ -18,6 +19,15 @@ describe('parsers', () => {
}).toThrow();
});

it('parses correctly with numberOrStringParser', () => {
const parser = numberOrStringParser('key');
expect(parser('100d')).toEqual('100d');
expect(parser(100)).toEqual(100);
expect(() => {
parser(undefined);
}).toThrow();
});

it('parses correctly with numberOrBoolParser', () => {
const parser = numberOrBoolParser('key');
expect(parser(true)).toEqual(true);
Expand Down
2 changes: 1 addition & 1 deletion src/Options/Definitions.js
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ module.exports.ParseServerOptions = {
env: 'PARSE_SERVER_MAX_LOG_FILES',
help:
"Maximum number of logs to keep. If not set, no logs will be removed. This can be a number of files or number of days. If using days, add 'd' as the suffix. (default: null)",
action: parsers.objectParser,
action: parsers.numberOrStringParser('maxLogFiles'),
},
maxUploadSize: {
env: 'PARSE_SERVER_MAX_UPLOAD_SIZE',
Expand Down
10 changes: 10 additions & 0 deletions src/Options/parsers.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,15 @@ function numberOrBoolParser(key) {
};
}

function numberOrStringParser(key) {
return function (opt) {
if (typeof opt === 'string') {
return opt;
}
return numberParser(key)(opt);
};
}

function objectParser(opt) {
if (typeof opt == 'object') {
return opt;
Expand Down Expand Up @@ -69,6 +78,7 @@ function nullParser(opt) {
module.exports = {
numberParser,
numberOrBoolParser,
numberOrStringParser,
nullParser,
booleanParser,
moduleOrObjectParser,
Expand Down

0 comments on commit 0319cee

Please sign in to comment.