generated from technologiestiftung/template-repo-citylab
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
56 lines (53 loc) · 1.46 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// taken from here
// https://github.com/import-js/eslint-plugin-import/blob/main/src/rules/no-default-export.js
export const plugin = {
meta: {
type: "suggestion",
docs: {
category: "Style guide",
description: "Forbid default exports.",
},
schema: [],
},
rules: {
"no-default-export": {
create(context) {
// ignore non-modules
if (context.parserOptions.sourceType !== "module") {
return {};
}
const preferNamed = "Prefer named exports.";
const noAliasDefault = ({ local }) =>
`Do not alias \`${local.name}\` as \`default\`. Just export \`${local.name}\` itself instead.`;
return {
ExportDefaultDeclaration(node) {
const { loc } =
context.getSourceCode().getFirstTokens(node)[1] || {};
context.report({ node, message: preferNamed, loc });
},
ExportNamedDeclaration(node) {
node.specifiers
.filter(
(specifier) =>
(specifier.exported.name || specifier.exported.value) ===
"default",
)
.forEach((specifier) => {
const { loc } =
context.getSourceCode().getFirstTokens(node)[1] || {};
if (specifier.type === "ExportDefaultSpecifier") {
context.report({ node, message: preferNamed, loc });
} else if (specifier.type === "ExportSpecifier") {
context.report({
node,
message: noAliasDefault(specifier),
loc,
});
}
});
},
};
},
},
},
};