sformisano/graphql-bundler

View on GitHub
src/_parseResolversFile.js

Summary

Maintainability
A
0 mins
Test Coverage
const _ = require('lodash')
const _baseGraphQLTypes = require('../data/_baseGraphQLTypes')

// makes testing easier, no need to test a one line method triggering a require
const _getFileContent = (file) => {
  return require(file)
}

/**
 * Validates the contents of the resolvers file and returns the exported resolvers object.
 *
 * @param {String} resolversFile
 * @returns {Object}
 * @private
 */
module.exports = (resolversFile) => {
  const resolvers = _getFileContent(resolversFile)

  if (!_.isPlainObject(resolvers)) {
    throw new Error(`The resolvers file must export an object literal.`)
  }

  const invalidProperties = Object.keys(resolvers).filter((property) => {
    return _baseGraphQLTypes.indexOf(property) === -1
  })

  if (invalidProperties.length) {
    throw new Error(`The following properties are not valid graphql base types: ${invalidProperties.join(', ')}`)
  }

  return resolvers
}