blob: b4e8eff23bb8a55da561ab5297aa3c2f82c30681 [file] [log] [blame]
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
'use strict';
const utils = require('./utils');
const shouldLint = utils.shouldLint;
function reportMissingKeyArgument(node, context, hookName) {
context.report({
node: node,
message: `A fragment reference should be passed to the \`${hookName}\` hook`
});
}
module.exports = {
meta: {
docs: {
description:
'Validates that the second argument is passed to relay hooks.'
}
},
create(context) {
if (!shouldLint(context)) {
return {};
}
return {
'CallExpression[callee.name=useFragment][arguments.length < 2]'(node) {
reportMissingKeyArgument(node, context, 'useFragment');
},
'CallExpression[callee.name=usePaginationFragment][arguments.length < 2]'(
node
) {
reportMissingKeyArgument(node, context, 'usePaginationFragment');
},
'CallExpression[callee.name=useBlockingPaginationFragment][arguments.length < 2]'(
node
) {
reportMissingKeyArgument(
node,
context,
'useBlockingPaginationFragment'
);
},
'CallExpression[callee.name=useLegacyPaginationFragment][arguments.length < 2]'(
node
) {
reportMissingKeyArgument(node, context, 'useLegacyPaginationFragment');
},
'CallExpression[callee.name=useRefetchableFragment][arguments.length < 2]'(
node
) {
reportMissingKeyArgument(node, context, 'useRefetchableFragment');
}
};
}
};