SafeJsonParse.js 513 B

123456789101112131415161718192021
  1. const Settings = require('settings-sharelatex')
  2. const logger = require('logger-sharelatex')
  3. module.exports = {
  4. parse(data, callback) {
  5. if (data.length > Settings.maxUpdateSize) {
  6. logger.error(
  7. { head: data.slice(0, 1024), length: data.length },
  8. 'data too large to parse'
  9. )
  10. return callback(new Error('data too large to parse'))
  11. }
  12. let parsed
  13. try {
  14. parsed = JSON.parse(data)
  15. } catch (e) {
  16. return callback(e)
  17. }
  18. callback(null, parsed)
  19. }
  20. }