function main( context ) {
	/**
	* Reports the error message.
	*
	* @private
	* @param {ASTNode} node - node to report
	*/
	function report( node ) {
		context.report({
			'node': node,
			'message': 'Only variables, literals, and functions should be exported'
		});
	}

	/**
	* Checks whether only variables and functions are assigned to `module.exports`.
	*
	* @private
	* @param {ASTNode} node - node to examine
	*/
	function validate( node ) {
		if ( isExportStatement( node ) ) {
			if (
				!isVariableOrFunction( node.right ) &&
				!isStaticObject( node.right )
			) {
				report( node );
			}
		}
	}

	/**
	* Checks whether only variables and functions are assigned to a default export declaration.
	*
	* @private
	* @param {ASTNode} node - node to examine
	*/
	function validateDefaultExport( node ) {
		if (
			!isVariableOrFunction( node.declaration ) &&
			!isStaticObject( node.declaration )
		) {
			report( node );
		}
	}

	return {
		'AssignmentExpression': validate,
		'ExportDefaultDeclaration': validateDefaultExport
	};
}
Rule for validating that only statically analyzable values are exported.

@param {Object} context - ESLint context
@returns {Object} validators