123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.RULE_NAME = void 0;
- var experimental_utils_1 = require("@typescript-eslint/experimental-utils");
- var utils_1 = require("../utils");
- var node_utils_1 = require("../node-utils");
- exports.RULE_NAME = 'no-manual-cleanup';
- var CLEANUP_LIBRARY_REGEX = /(@testing-library\/(preact|react|svelte|vue))|@marko\/testing-library/;
- exports.default = experimental_utils_1.ESLintUtils.RuleCreator(utils_1.getDocsUrl)({
- name: exports.RULE_NAME,
- meta: {
- type: 'problem',
- docs: {
- description: 'Disallow the use of `cleanup`',
- category: 'Best Practices',
- recommended: false,
- },
- messages: {
- noManualCleanup: "`cleanup` is performed automatically by your test runner, you don't need manual cleanups.",
- },
- fixable: null,
- schema: [],
- },
- defaultOptions: [],
- create: function (context) {
- var _a;
- var defaultImportFromTestingLibrary;
- var defaultRequireFromTestingLibrary;
- function reportImportReferences(references) {
- if (references && references.length > 0) {
- references.forEach(function (reference) {
- var utilsUsage = reference.identifier.parent;
- if (node_utils_1.isMemberExpression(utilsUsage) &&
- node_utils_1.isIdentifier(utilsUsage.property) &&
- utilsUsage.property.name === 'cleanup') {
- context.report({
- node: utilsUsage.property,
- messageId: 'noManualCleanup',
- });
- }
- });
- }
- }
- return _a = {
- ImportDeclaration: function (node) {
- var value = node.source.value;
- var testingLibraryWithCleanup = value.match(CLEANUP_LIBRARY_REGEX);
- if (!testingLibraryWithCleanup) {
- return;
- }
- if (node_utils_1.isImportDefaultSpecifier(node.specifiers[0])) {
- defaultImportFromTestingLibrary = node;
- }
- var cleanupSpecifier = node.specifiers.find(function (specifier) {
- return node_utils_1.isImportSpecifier(specifier) &&
- specifier.imported &&
- specifier.imported.name === 'cleanup';
- });
- if (cleanupSpecifier) {
- context.report({
- node: cleanupSpecifier,
- messageId: 'noManualCleanup',
- });
- }
- }
- },
- _a["VariableDeclarator > CallExpression > Identifier[name=\"require\"]"] = function (node) {
- var args = node.parent.arguments;
- var literalNodeCleanupModuleName = args.find(function (args) {
- return node_utils_1.isLiteral(args) &&
- typeof args.value === 'string' &&
- args.value.match(CLEANUP_LIBRARY_REGEX);
- });
- if (!literalNodeCleanupModuleName) {
- return;
- }
- var declaratorNode = node.parent
- .parent;
- if (node_utils_1.isObjectPattern(declaratorNode.id)) {
- var cleanupProperty = declaratorNode.id.properties.find(function (property) {
- return node_utils_1.isProperty(property) &&
- node_utils_1.isIdentifier(property.key) &&
- property.key.name === 'cleanup';
- });
- if (cleanupProperty) {
- context.report({
- node: cleanupProperty,
- messageId: 'noManualCleanup',
- });
- }
- }
- else {
- defaultRequireFromTestingLibrary = declaratorNode.id;
- }
- },
- _a['Program:exit'] = function () {
- if (defaultImportFromTestingLibrary) {
- var references = context.getDeclaredVariables(defaultImportFromTestingLibrary)[0].references;
- reportImportReferences(references);
- }
- if (defaultRequireFromTestingLibrary) {
- var references = context
- .getDeclaredVariables(defaultRequireFromTestingLibrary.parent)[0]
- .references.slice(1);
- reportImportReferences(references);
- }
- },
- _a;
- },
- });
|