diff --git a/packages/cubejs-api-gateway/UserError.js b/packages/cubejs-api-gateway/UserError.js new file mode 100644 index 0000000000000..02cdd14e31290 --- /dev/null +++ b/packages/cubejs-api-gateway/UserError.js @@ -0,0 +1,3 @@ +class UserError extends Error {} + +module.exports = UserError; diff --git a/packages/cubejs-api-gateway/dateParser.js b/packages/cubejs-api-gateway/dateParser.js index 6ae368e036fa9..3c81171eb0d1b 100644 --- a/packages/cubejs-api-gateway/dateParser.js +++ b/packages/cubejs-api-gateway/dateParser.js @@ -1,5 +1,6 @@ const chrono = require('chrono-node'); const moment = require('moment'); +const UserError = require('./UserError'); module.exports = (dateString) => { let momentRange; @@ -28,6 +29,9 @@ module.exports = (dateString) => { momentRange = [yesterday, yesterday]; } else { const results = chrono.parse(dateString); + if (!results) { + throw new UserError(`Can't parse date: '${dateString}'`); + } momentRange = results[0].end ? [ results[0].start.moment(), results[0].end.moment() diff --git a/packages/cubejs-api-gateway/index.js b/packages/cubejs-api-gateway/index.js index a0c7ffe1109ba..27155226294d2 100644 --- a/packages/cubejs-api-gateway/index.js +++ b/packages/cubejs-api-gateway/index.js @@ -4,7 +4,7 @@ const Joi = require('joi'); const moment = require('moment'); const dateParser = require('./dateParser'); -class UserError extends Error {} +const UserError = require('./UserError'); const toConfigMap = (metaConfig) => ( R.pipe(