@fenge/eslint-plugin 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @fenge/eslint-plugin
2
2
 
3
+ ## 0.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - e3bed52: fix(eslint-plugin): report on the variables that are not declared
8
+
3
9
  ## 0.1.0
4
10
 
5
11
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"no-instanceof-builtin.d.ts","sourceRoot":"","sources":["../../src/rules/no-instanceof-builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAsCnC,eAAO,MAAM,mBAAmB;;;CAAiB,CAAC"}
1
+ {"version":3,"file":"no-instanceof-builtin.d.ts","sourceRoot":"","sources":["../../src/rules/no-instanceof-builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA0CnC,eAAO,MAAM,mBAAmB;;;CAAiB,CAAC"}
@@ -14,7 +14,13 @@ const rule = {
14
14
  let builtins = undefined;
15
15
  return {
16
16
  Program: (node) => {
17
- builtins = new Set(context.sourceCode.getScope(node).variables.map((v) => v.name));
17
+ const scope = context.sourceCode.getScope(node);
18
+ builtins = new Set([
19
+ // Variables declared in `globals`
20
+ ...scope.variables.map((v) => v.name),
21
+ // Variables not declared at all
22
+ ...scope.through.map((ref) => ref.identifier.name),
23
+ ]);
18
24
  },
19
25
  BinaryExpression: (node) => {
20
26
  if (node.operator !== "instanceof" ||
@@ -29,4 +35,4 @@ const rule = {
29
35
  },
30
36
  };
31
37
  export const noInstanceofBuiltin = { name, rule };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW5zdGFuY2VvZi1idWlsdGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bGVzL25vLWluc3RhbmNlb2YtYnVpbHRpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFDLHVJQUF1STtBQUN2SSxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQyxNQUFNLElBQUksR0FBb0I7SUFDNUIsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUFFLHNEQUFzRDtTQUNwRTtRQUNELFFBQVEsRUFBRTtZQUNSLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxFQUFFLHNEQUFzRDtTQUMxRTtLQUNGO0lBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDbEIsSUFBSSxRQUFRLEdBQTRCLFNBQVMsQ0FBQztRQUNsRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2hCLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FDaEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUMvRCxDQUFDO1lBQ0osQ0FBQztZQUNELGdCQUFnQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pCLElBQ0UsSUFBSSxDQUFDLFFBQVEsS0FBSyxZQUFZO29CQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQ2hDLENBQUM7b0JBQ0QsT0FBTztnQkFDVCxDQUFDO2dCQUVELElBQUksUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUMzQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRSxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuaW1wb3J0IHsgZ2V0UnVsZU5hbWUgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuLy8gVE9ETzogSWYgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9lc2xpbnQtcGx1Z2luLXVuaWNvcm4vaXNzdWVzLzI0NTIgaXMgYWNjZXB0ZWQsIG1pZ3JhdGUgdGhpcyBydWxlIHRvIGBlc2xpbnQtcGx1Z2luLXVuaWNvcm5gXG5jb25zdCBuYW1lID0gZ2V0UnVsZU5hbWUoaW1wb3J0Lm1ldGEudXJsKTtcbmNvbnN0IHJ1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJpZ2h0IGhhbmQgb2YgYGluc3RhbmNlb2ZgIGNhbid0IGJlIGEgYnVpbHRpbiBjbGFzcy5cIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbYCR7bmFtZX0vZXJyb3JgXTogXCJSaWdodCBoYW5kIG9mIGBpbnN0YW5jZW9mYCBjYW4ndCBiZSBhIGJ1aWx0aW4gY2xhc3MuXCIsXG4gICAgfSxcbiAgfSxcbiAgY3JlYXRlOiAoY29udGV4dCkgPT4ge1xuICAgIGxldCBidWlsdGluczogU2V0PHN0cmluZz4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIFByb2dyYW06IChub2RlKSA9PiB7XG4gICAgICAgIGJ1aWx0aW5zID0gbmV3IFNldChcbiAgICAgICAgICBjb250ZXh0LnNvdXJjZUNvZGUuZ2V0U2NvcGUobm9kZSkudmFyaWFibGVzLm1hcCgodikgPT4gdi5uYW1lKSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBCaW5hcnlFeHByZXNzaW9uOiAobm9kZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgbm9kZS5vcGVyYXRvciAhPT0gXCJpbnN0YW5jZW9mXCIgfHxcbiAgICAgICAgICBub2RlLnJpZ2h0LnR5cGUgIT09IFwiSWRlbnRpZmllclwiXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWlsdGlucz8uaGFzKG5vZGUucmlnaHQubmFtZSkgPz8gdHJ1ZSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHsgbm9kZTogbm9kZS5yaWdodCwgbWVzc2FnZUlkOiBgJHtuYW1lfS9lcnJvcmAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBub0luc3RhbmNlb2ZCdWlsdGluID0geyBuYW1lLCBydWxlIH07XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW5zdGFuY2VvZi1idWlsdGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bGVzL25vLWluc3RhbmNlb2YtYnVpbHRpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFDLHVJQUF1STtBQUN2SSxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQyxNQUFNLElBQUksR0FBb0I7SUFDNUIsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUFFLHNEQUFzRDtTQUNwRTtRQUNELFFBQVEsRUFBRTtZQUNSLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxFQUFFLHNEQUFzRDtTQUMxRTtLQUNGO0lBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDbEIsSUFBSSxRQUFRLEdBQTRCLFNBQVMsQ0FBQztRQUNsRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2hCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUM7b0JBQ2pCLGtDQUFrQztvQkFDbEMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDckMsZ0NBQWdDO29CQUNoQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztpQkFDbkQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELGdCQUFnQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pCLElBQ0UsSUFBSSxDQUFDLFFBQVEsS0FBSyxZQUFZO29CQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQ2hDLENBQUM7b0JBQ0QsT0FBTztnQkFDVCxDQUFDO2dCQUVELElBQUksUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUMzQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRSxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuaW1wb3J0IHsgZ2V0UnVsZU5hbWUgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuLy8gVE9ETzogSWYgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9lc2xpbnQtcGx1Z2luLXVuaWNvcm4vaXNzdWVzLzI0NTIgaXMgYWNjZXB0ZWQsIG1pZ3JhdGUgdGhpcyBydWxlIHRvIGBlc2xpbnQtcGx1Z2luLXVuaWNvcm5gXG5jb25zdCBuYW1lID0gZ2V0UnVsZU5hbWUoaW1wb3J0Lm1ldGEudXJsKTtcbmNvbnN0IHJ1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJpZ2h0IGhhbmQgb2YgYGluc3RhbmNlb2ZgIGNhbid0IGJlIGEgYnVpbHRpbiBjbGFzcy5cIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbYCR7bmFtZX0vZXJyb3JgXTogXCJSaWdodCBoYW5kIG9mIGBpbnN0YW5jZW9mYCBjYW4ndCBiZSBhIGJ1aWx0aW4gY2xhc3MuXCIsXG4gICAgfSxcbiAgfSxcbiAgY3JlYXRlOiAoY29udGV4dCkgPT4ge1xuICAgIGxldCBidWlsdGluczogU2V0PHN0cmluZz4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIFByb2dyYW06IChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gY29udGV4dC5zb3VyY2VDb2RlLmdldFNjb3BlKG5vZGUpO1xuICAgICAgICBidWlsdGlucyA9IG5ldyBTZXQoW1xuICAgICAgICAgIC8vIFZhcmlhYmxlcyBkZWNsYXJlZCBpbiBgZ2xvYmFsc2BcbiAgICAgICAgICAuLi5zY29wZS52YXJpYWJsZXMubWFwKCh2KSA9PiB2Lm5hbWUpLFxuICAgICAgICAgIC8vIFZhcmlhYmxlcyBub3QgZGVjbGFyZWQgYXQgYWxsXG4gICAgICAgICAgLi4uc2NvcGUudGhyb3VnaC5tYXAoKHJlZikgPT4gcmVmLmlkZW50aWZpZXIubmFtZSksXG4gICAgICAgIF0pO1xuICAgICAgfSxcbiAgICAgIEJpbmFyeUV4cHJlc3Npb246IChub2RlKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBub2RlLm9wZXJhdG9yICE9PSBcImluc3RhbmNlb2ZcIiB8fFxuICAgICAgICAgIG5vZGUucmlnaHQudHlwZSAhPT0gXCJJZGVudGlmaWVyXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJ1aWx0aW5zPy5oYXMobm9kZS5yaWdodC5uYW1lKSA/PyB0cnVlKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlOiBub2RlLnJpZ2h0LCBtZXNzYWdlSWQ6IGAke25hbWV9L2Vycm9yYCB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IG5vSW5zdGFuY2VvZkJ1aWx0aW4gPSB7IG5hbWUsIHJ1bGUgfTtcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fenge/eslint-plugin",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "ESLint plugin for JavaScript.",
5
5
  "keywords": [
6
6
  "opinionated",
@@ -28,7 +28,7 @@ const invalid = [
28
28
  "Map",
29
29
  "Error",
30
30
  "Promise",
31
- // "Proxy", // Proxy does not exist in the default globals definition
31
+ "Proxy",
32
32
  "RegExp",
33
33
  "Set",
34
34
  "SharedArrayBuffer",
@@ -16,9 +16,13 @@ const rule: Rule.RuleModule = {
16
16
  let builtins: Set<string> | undefined = undefined;
17
17
  return {
18
18
  Program: (node) => {
19
- builtins = new Set(
20
- context.sourceCode.getScope(node).variables.map((v) => v.name),
21
- );
19
+ const scope = context.sourceCode.getScope(node);
20
+ builtins = new Set([
21
+ // Variables declared in `globals`
22
+ ...scope.variables.map((v) => v.name),
23
+ // Variables not declared at all
24
+ ...scope.through.map((ref) => ref.identifier.name),
25
+ ]);
22
26
  },
23
27
  BinaryExpression: (node) => {
24
28
  if (