no-await-sync-query.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.RULE_NAME = void 0;
  4. const create_testing_library_rule_1 = require("../create-testing-library-rule");
  5. const node_utils_1 = require("../node-utils");
  6. exports.RULE_NAME = 'no-await-sync-query';
  7. exports.default = (0, create_testing_library_rule_1.createTestingLibraryRule)({
  8. name: exports.RULE_NAME,
  9. meta: {
  10. type: 'problem',
  11. docs: {
  12. description: 'Disallow unnecessary `await` for sync queries',
  13. recommendedConfig: {
  14. dom: 'error',
  15. angular: 'error',
  16. react: 'error',
  17. vue: 'error',
  18. marko: 'error',
  19. },
  20. },
  21. messages: {
  22. noAwaitSyncQuery: '`{{ name }}` query is sync so it does not need to be awaited',
  23. },
  24. schema: [],
  25. },
  26. defaultOptions: [],
  27. create(context, _, helpers) {
  28. return {
  29. 'AwaitExpression > CallExpression'(node) {
  30. const deepestIdentifierNode = (0, node_utils_1.getDeepestIdentifierNode)(node);
  31. if (!deepestIdentifierNode) {
  32. return;
  33. }
  34. if (helpers.isSyncQuery(deepestIdentifierNode)) {
  35. context.report({
  36. node: deepestIdentifierNode,
  37. messageId: 'noAwaitSyncQuery',
  38. data: {
  39. name: deepestIdentifierNode.name,
  40. },
  41. });
  42. }
  43. },
  44. };
  45. },
  46. });