first commit
This commit is contained in:
134
node_modules/eslint-plugin-import-x/lib/rules/no-anonymous-default-export.js
generated
vendored
Normal file
134
node_modules/eslint-plugin-import-x/lib/rules/no-anonymous-default-export.js
generated
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
import { createRule } from '../utils/index.js';
|
||||
const { hasOwnProperty } = Object.prototype;
|
||||
const hasOwn = (object, key) => hasOwnProperty.call(object, key);
|
||||
const defs = {
|
||||
ArrayExpression: {
|
||||
option: 'allowArray',
|
||||
description: 'If `false`, will report default export of an array',
|
||||
messageId: 'assign',
|
||||
data: {
|
||||
type: 'array',
|
||||
},
|
||||
},
|
||||
ArrowFunctionExpression: {
|
||||
option: 'allowArrowFunction',
|
||||
description: 'If `false`, will report default export of an arrow function',
|
||||
messageId: 'assign',
|
||||
data: {
|
||||
type: 'arrow function',
|
||||
},
|
||||
},
|
||||
CallExpression: {
|
||||
option: 'allowCallExpression',
|
||||
description: 'If `false`, will report default export of a function call',
|
||||
messageId: 'assign',
|
||||
data: {
|
||||
type: 'call result',
|
||||
},
|
||||
default: true,
|
||||
},
|
||||
ClassDeclaration: {
|
||||
option: 'allowAnonymousClass',
|
||||
description: 'If `false`, will report default export of an anonymous class',
|
||||
messageId: 'anonymous',
|
||||
data: {
|
||||
type: 'class',
|
||||
},
|
||||
forbid: (node) => !('id' in node.declaration) || !node.declaration.id,
|
||||
},
|
||||
FunctionDeclaration: {
|
||||
option: 'allowAnonymousFunction',
|
||||
description: 'If `false`, will report default export of an anonymous function',
|
||||
messageId: 'anonymous',
|
||||
data: {
|
||||
type: 'function',
|
||||
},
|
||||
forbid: (node) => !('id' in node.declaration) || !node.declaration.id,
|
||||
},
|
||||
Literal: {
|
||||
option: 'allowLiteral',
|
||||
description: 'If `false`, will report default export of a literal',
|
||||
messageId: 'assign',
|
||||
data: {
|
||||
type: 'literal',
|
||||
},
|
||||
},
|
||||
ObjectExpression: {
|
||||
option: 'allowObject',
|
||||
description: 'If `false`, will report default export of an object expression',
|
||||
messageId: 'assign',
|
||||
data: {
|
||||
type: 'object',
|
||||
},
|
||||
},
|
||||
TemplateLiteral: {
|
||||
option: 'allowLiteral',
|
||||
description: 'If `false`, will report default export of a literal',
|
||||
messageId: 'assign',
|
||||
data: {
|
||||
type: 'literal',
|
||||
},
|
||||
},
|
||||
NewExpression: {
|
||||
option: 'allowNew',
|
||||
description: 'If `false`, will report default export of a class instantiation',
|
||||
messageId: 'assign',
|
||||
data: {
|
||||
type: 'instance',
|
||||
},
|
||||
},
|
||||
};
|
||||
const schemaProperties = Object.fromEntries(Object.values(defs).map(def => [
|
||||
def.option,
|
||||
{
|
||||
description: def.description,
|
||||
type: 'boolean',
|
||||
},
|
||||
]));
|
||||
const defaults = Object.fromEntries(Object.values(defs).map(def => [
|
||||
def.option,
|
||||
hasOwn(def, 'default') ? def.default : false,
|
||||
]));
|
||||
export default createRule({
|
||||
name: 'no-anonymous-default-export',
|
||||
meta: {
|
||||
type: 'suggestion',
|
||||
docs: {
|
||||
category: 'Style guide',
|
||||
description: 'Forbid anonymous values as default exports.',
|
||||
},
|
||||
schema: [
|
||||
{
|
||||
type: 'object',
|
||||
properties: schemaProperties,
|
||||
additionalProperties: false,
|
||||
},
|
||||
],
|
||||
messages: {
|
||||
assign: 'Assign {{type}} to a variable before exporting as module default',
|
||||
anonymous: 'Unexpected default export of anonymous {{type}}',
|
||||
},
|
||||
},
|
||||
defaultOptions: [],
|
||||
create(context) {
|
||||
const options = { ...defaults, ...context.options[0] };
|
||||
return {
|
||||
ExportDefaultDeclaration(node) {
|
||||
const type = node.declaration
|
||||
.type;
|
||||
if (!(type in defs)) {
|
||||
return;
|
||||
}
|
||||
const def = defs[type];
|
||||
if (!options[def.option] && (!('forbid' in def) || def.forbid(node))) {
|
||||
context.report({
|
||||
node,
|
||||
messageId: def.messageId,
|
||||
data: def.data,
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
});
|
||||
//# sourceMappingURL=no-anonymous-default-export.js.map
|
||||
Reference in New Issue
Block a user