eslint-plugin-lube 0.4.1 → 0.4.3

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/README.md CHANGED
@@ -5,4 +5,5 @@
5
5
  |---|---|---|---|
6
6
  | pretty-imports | [docs](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/docs/pretty-imports.md) | [code](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/rules/pretty-imports.js) | [test](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/test/pretty-imports) |
7
7
  | pretty-jsdoc-casting | [docs](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/docs/pretty-jsdoc-casting.md) | [code](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/rules/pretty-jsdoc-casting.js) | [test](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/test/pretty-jsdoc-casting) |
8
+ | pretty-sequence | [docs](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/docs/pretty-sequence.md) | [code](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/rules/pretty-sequence.js) | [test](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/test/pretty-sequence) |
8
9
  | svelte-naming-convention | [docs](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/docs/svelte-naming-convention.md) | [code](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/rules/svelte-naming-convention.js) | [test](https://github.com/Artxe2/lube-series/blob/master/packages/eslint-plugin-lube/test/svelte-naming-convention) |
@@ -1,4 +1,4 @@
1
- # pretty-imports
1
+ # pretty-sequence
2
2
  Enforces arrays, objects, and functions to have a pretty format by enforcing proper indentation in sequences.
3
3
 
4
4
  ## options
package/package.json CHANGED
@@ -9,7 +9,8 @@
9
9
  "@types/estree": "^1.0.3",
10
10
  "@typescript-eslint/parser": "^6.9.0",
11
11
  "eslint": "^8.52.0",
12
- "mocha": "^10.2.0"
12
+ "mocha": "^10.2.0",
13
+ "typescript": "^5.2.2"
13
14
  },
14
15
  "keywords": [
15
16
  "eslint-plugin",
@@ -25,10 +26,7 @@
25
26
  "type": "git",
26
27
  "url": "https://github.com/Artxe2/lube-series"
27
28
  },
28
- "scripts": {
29
- "dts": "tsc",
30
- "test": "mocha"
31
- },
29
+ "scripts": { "dts": "tsc", "test": "mocha" },
32
30
  "type": "commonjs",
33
- "version": "0.4.1"
31
+ "version": "0.4.3"
34
32
  }
package/private.d.ts CHANGED
@@ -52,7 +52,7 @@ export type AstNode = BaseAstNode & (
52
52
  | estree.ForStatement
53
53
  | {
54
54
  body: AstNode
55
- id: AstNode
55
+ id?: AstNode
56
56
  params: AstNode[]
57
57
  } & estree.FunctionDeclaration
58
58
  | {
@@ -28,17 +28,17 @@ module.exports = {
28
28
  },
29
29
  create(context) {
30
30
  /** @type {import("../private").RuleOptions["pretty-imports"]} */
31
- const option = context.options[0]
32
- const check_exports = option?.checkExports ?? true
33
- const check_imports = option?.checkImports ?? true
34
- const indent = option?.indent ?? "\t"
35
- const max_length = option?.maxLength ?? 30
36
- const semicolon = option?.semicolon ?? false
31
+ let option = context.options[0]
32
+ let check_exports = option?.checkExports ?? true
33
+ let check_imports = option?.checkImports ?? true
34
+ let indent = option?.indent ?? "\t"
35
+ let max_length = option?.maxLength ?? 30
36
+ let semicolon = option?.semicolon ?? false
37
37
 
38
- const source_code = context.sourceCode
39
- const text = source_code.text
40
- const indent_regex = /[ \t]*(?=[^\n]*$)/
41
- const _r_regex = /\r/g
38
+ let source_code = context.sourceCode
39
+ let text = source_code.text
40
+ let indent_regex = /[ \t]*(?=[^\n]*$)/
41
+ let _r_regex = /\r/g
42
42
 
43
43
  /**
44
44
  * @param {number} index
@@ -62,7 +62,7 @@ module.exports = {
62
62
  * @returns {string}
63
63
  */
64
64
  function get_text(node_or_start, end) {
65
- const substr = typeof node_or_start == "number"
65
+ let substr = typeof node_or_start == "number"
66
66
  ? text.slice(node_or_start, end)
67
67
  : text.slice(
68
68
  node_or_start.range[0],
@@ -95,9 +95,9 @@ module.exports = {
95
95
  */
96
96
  ExportNamedDeclaration(node) {
97
97
  if (check_exports && node.specifiers[0]?.type == "ExportSpecifier") {
98
- const line_indent = get_indent(node.range[0])
98
+ let line_indent = get_indent(node.range[0])
99
99
  let length = 0
100
- for (const s of node.specifiers) {
100
+ for (let s of node.specifiers) {
101
101
  length += s.range[1] - s.range[0]
102
102
  }
103
103
  let corrected_text = length > max_length
@@ -123,9 +123,9 @@ module.exports = {
123
123
  */
124
124
  ImportDeclaration(node) {
125
125
  if (check_imports && node.specifiers[0]?.type == "ImportSpecifier") {
126
- const line_indent = get_indent(node.range[0])
126
+ let line_indent = get_indent(node.range[0])
127
127
  let length = 0
128
- for (const s of node.specifiers) {
128
+ for (let s of node.specifiers) {
129
129
  length += s.range[1] - s.range[0]
130
130
  }
131
131
  let corrected_text = length > max_length
@@ -1,15 +1,15 @@
1
1
  "use strict"
2
2
 
3
- const left_space_regex = /\s+$/
4
- const right_space_regex = /^\s+/
5
- const type_regex = /(?<=(?:^|.*\s*)@type\s*\{).+(?=\}.*?$)/
3
+ let left_space_regex = /\s+$/
4
+ let right_space_regex = /^\s+/
5
+ let type_regex = /(?<=(?:^|.*\s*)@type\s*\{).+(?=\}.*?$)/
6
6
 
7
7
  /**
8
8
  * @param {number} length
9
9
  * @returns {number[]}
10
10
  */
11
11
  function get_indexed_array(length) {
12
- const array = []
12
+ let array = []
13
13
  while (length) array[--length] = length
14
14
  return array
15
15
  }
@@ -29,21 +29,21 @@ module.exports = {
29
29
  type: "layout"
30
30
  },
31
31
  create(context) {
32
- const source_code = context.sourceCode
33
- const origin_text = source_code.text
32
+ let source_code = context.sourceCode
33
+ let origin_text = source_code.text
34
34
  let fixed_text = origin_text
35
- const text_length = fixed_text.length + 1
36
- const text_indexes = get_indexed_array(text_length)
35
+ let text_length = fixed_text.length + 1
36
+ let text_indexes = get_indexed_array(text_length)
37
37
  /** @type {import("../private").Comment[]} */
38
- const comments = []
39
- for (const comment of /** @type {import("../private").Comment[]} */(source_code.getAllComments())/**/) {
38
+ let comments = []
39
+ for (let comment of /** @type {import("../private").Comment[]} */(source_code.getAllComments())/**/) {
40
40
  let [ start, end ] = comment.range
41
41
  while (start < end) comments[start++] = comment
42
42
  }
43
43
  /** @type {import("../private").AstNode[] & import("estree").Expression[]} */
44
- const expressions = []
44
+ let expressions = []
45
45
  /** @type {Set<string>} */
46
- const node_ranges = new Set
46
+ let node_ranges = new Set
47
47
 
48
48
  /**
49
49
  * @param {import("../private").AstNode} node
@@ -51,11 +51,11 @@ module.exports = {
51
51
  */
52
52
  function verify_correct(node) {
53
53
  let temp_text = fixed_text
54
- const temp_indexes = [ ...text_indexes ]
54
+ let temp_indexes = [ ...text_indexes ]
55
55
  /** @type {(string | undefined)[]} */
56
- const types = []
56
+ let types = []
57
57
  /** @type {true[]} */
58
- const extras = []
58
+ let extras = []
59
59
  /**
60
60
  * @param {number} start
61
61
  * @param {number} end
@@ -63,7 +63,7 @@ module.exports = {
63
63
  * @returns {void}
64
64
  */
65
65
  function temp_text_changes(start, end, insert = "") {
66
- const gap = insert.length + temp_indexes[start] - temp_indexes[end]
66
+ let gap = insert.length + temp_indexes[start] - temp_indexes[end]
67
67
  temp_text = temp_text.slice(0, temp_indexes[start]) + insert + temp_text.slice(temp_indexes[end])
68
68
  if (gap) {
69
69
  while (end < text_length) {
@@ -78,26 +78,26 @@ module.exports = {
78
78
  let [ left, right ] = node.range
79
79
  W: while (left > 0) {
80
80
  if (comments[left - 1]) {
81
- const comment = comments[left - 1]
81
+ let comment = comments[left - 1]
82
82
  left = comment.range[0]
83
83
  if (open && !types[open - 1]) {
84
- const type = comment.type == "Block" && type_regex.exec(comment.value)?.[0]
84
+ let type = comment.type == "Block" && type_regex.exec(comment.value)?.[0]
85
85
  if (type) {
86
86
  types[open - 1] = type
87
87
  temp_text_changes(...comment.range)
88
88
  }
89
89
  }
90
90
  } else {
91
- const left_space = left_space_regex.exec(origin_text.slice(0, left))?.[0].length
91
+ let left_space = left_space_regex.exec(origin_text.slice(0, left))?.[0].length
92
92
  if (left_space) {
93
93
  left -= left_space
94
94
  } else if (origin_text[left - 1] == "(") {
95
95
  while (right < text_length) {
96
96
  if (comments[right]) {
97
- const comment = comments[right]
97
+ let comment = comments[right]
98
98
  right = comment.range[1]
99
99
  } else {
100
- const right_space = right_space_regex.exec(origin_text.slice(right))?.[0].length
100
+ let right_space = right_space_regex.exec(origin_text.slice(right))?.[0].length
101
101
  if (right_space) {
102
102
  right += right_space
103
103
  } else {
@@ -132,7 +132,7 @@ module.exports = {
132
132
  temp_text_changes(prev_open, prev_open, "(")
133
133
  temp_text_changes(prev_close, prev_close, ")")
134
134
  }
135
- const start = temp_indexes[node.range[0]]
135
+ let start = temp_indexes[node.range[0]]
136
136
  let end = temp_indexes[node.range[1]]
137
137
  if (extras[end] || open && temp_text.slice(end, end + 4) == "/**/") {
138
138
  end += 4
@@ -162,7 +162,7 @@ module.exports = {
162
162
  */
163
163
  function report(node, start, end, corrected_text) {
164
164
  fixed_text = fixed_text.slice(0, text_indexes[start]) + corrected_text + fixed_text.slice(text_indexes[end])
165
- const gap = corrected_text.length + text_indexes[start] - text_indexes[end]
165
+ let gap = corrected_text.length + text_indexes[start] - text_indexes[end]
166
166
  if (gap) {
167
167
  for (let i = end; i < text_length; i++) {
168
168
  text_indexes[i] += gap
@@ -187,14 +187,14 @@ module.exports = {
187
187
  * @returns {void}
188
188
  */
189
189
  function push_to_reverse(node) {
190
- const range = `${node.range[0]} ${node.range[1]}`
190
+ let range = `${node.range[0]} ${node.range[1]}`
191
191
  if (node_ranges.has(range)) return
192
192
  node_ranges.add(range)
193
193
  expressions.push(node)
194
194
  }
195
195
  return {
196
196
  "Program:exit": () => {
197
- for (const node of expressions.reverse()) {
197
+ for (let node of expressions.reverse()) {
198
198
  verify_correct(node)
199
199
  }
200
200
  },
@@ -1,17 +1,17 @@
1
1
  "use strict"
2
2
 
3
- const indent_regex = /[ \t]*(?=[^\n]*$)/
4
- const left_space_regex = /\s+$/
5
- const right_space_regex = /^\s+/
6
- const __n_regex = /(?<=\n)/g
7
- const _r_regex = /\r/g
3
+ let indent_regex = /[ \t]*(?=[^\n]*$)/
4
+ let left_space_regex = /\s+$/
5
+ let right_space_regex = /^\s+/
6
+ let __n_regex = /(?<=\n)/g
7
+ let _r_regex = /\r/g
8
8
 
9
9
  /**
10
10
  * @param {number} length
11
11
  * @returns {number[]}
12
12
  */
13
13
  function get_indexed_array(length) {
14
- const array = []
14
+ let array = []
15
15
  while (length) array[--length] = length
16
16
  return array
17
17
  }
@@ -49,33 +49,33 @@ module.exports = {
49
49
  },
50
50
  create(context) {
51
51
  /** @type {import("../private").RuleOptions["pretty-sequence"]} */
52
- const option = context.options[0]
53
- const array_bracket_spacing = option?.arrayBracketSpacing ?? true
54
- const check_array = option?.checkArray ?? true
55
- const check_call = option?.checkCall ?? true
56
- const check_object = option?.checkObject ?? true
57
- const check_sequence = option?.checkSequence ?? true
58
- const func_call_spacing = option?.funcCallSpacing ?? false
59
- const ignore_template_literal = option?.ignoreTemplateLiteral ?? true
60
- const indent = option?.indent ?? "\t"
61
- const max_length = option?.maxLength ?? 30
62
- const object_curly_spacing = option?.objectCurlySpacing ?? true
52
+ let option = context.options[0]
53
+ let array_bracket_spacing = option?.arrayBracketSpacing ?? true
54
+ let check_array = option?.checkArray ?? true
55
+ let check_call = option?.checkCall ?? true
56
+ let check_object = option?.checkObject ?? true
57
+ let check_sequence = option?.checkSequence ?? true
58
+ let func_call_spacing = option?.funcCallSpacing ?? false
59
+ let ignore_template_literal = option?.ignoreTemplateLiteral ?? true
60
+ let indent = option?.indent ?? "\t"
61
+ let max_length = option?.maxLength ?? 30
62
+ let object_curly_spacing = option?.objectCurlySpacing ?? true
63
63
 
64
- const source_code = context.sourceCode
65
- const origin_text = source_code.text
64
+ let source_code = context.sourceCode
65
+ let origin_text = source_code.text
66
66
  let fixed_text = origin_text
67
- const text_length = fixed_text.length + 1
68
- const text_indexes = get_indexed_array(text_length)
67
+ let text_length = fixed_text.length + 1
68
+ let text_indexes = get_indexed_array(text_length)
69
69
  /** @type {import("../private").Comment[]} */
70
- const comments = []
71
- for (const comment of /** @type {import("../private").Comment[]} */(source_code.getAllComments())/**/) {
70
+ let comments = []
71
+ for (let comment of /** @type {import("../private").Comment[]} */(source_code.getAllComments())/**/) {
72
72
  let [ start, end ] = comment.range
73
73
  while (start < end) comments[start++] = comment
74
74
  }
75
75
  /** @type {true[]} */
76
- const ignored_indexes = []
76
+ let ignored_indexes = []
77
77
  /** @type {import("../private").AstNode[] & import("estree").Expression[]} */
78
- const nodes = []
78
+ let nodes = []
79
79
 
80
80
  /**
81
81
  * @param {import("../private").AstNode} node
@@ -91,17 +91,17 @@ module.exports = {
91
91
  if (comments[left - 1]) {
92
92
  left = comments[left - 1].range[0]
93
93
  } else {
94
- const left_space = left_space_regex.exec(origin_text.slice(0, left))?.[0].length
94
+ let left_space = left_space_regex.exec(origin_text.slice(0, left))?.[0].length
95
95
  if (left_space) {
96
96
  left -= left_space
97
97
  } else if (origin_text[left - 1] == "(") {
98
98
  open_paren = true
99
99
  while (right < end) {
100
100
  if (comments[right]) {
101
- const comment = comments[right]
101
+ let comment = comments[right]
102
102
  right = comment.range[1]
103
103
  } else {
104
- const right_space = right_space_regex.exec(origin_text.slice(right))?.[0].length
104
+ let right_space = right_space_regex.exec(origin_text.slice(right))?.[0].length
105
105
  if (right_space) {
106
106
  right += right_space
107
107
  } else {
@@ -122,10 +122,10 @@ module.exports = {
122
122
  }
123
123
  while (right < end) {
124
124
  if (comments[right]) {
125
- const comment = comments[right]
125
+ let comment = comments[right]
126
126
  right = comment.range[1]
127
127
  } else {
128
- const right_space = right_space_regex.exec(origin_text.slice(right))?.[0].length
128
+ let right_space = right_space_regex.exec(origin_text.slice(right))?.[0].length
129
129
  if (right_space) {
130
130
  right += right_space
131
131
  } else {
@@ -133,7 +133,7 @@ module.exports = {
133
133
  }
134
134
  }
135
135
  }
136
- const substr = fixed_text.slice(
136
+ let substr = fixed_text.slice(
137
137
  text_indexes[left],
138
138
  text_indexes[right]
139
139
  )
@@ -163,7 +163,7 @@ module.exports = {
163
163
  */
164
164
  function report(node, start, end, corrected_text) {
165
165
  fixed_text = fixed_text.slice(0, text_indexes[start]) + corrected_text + fixed_text.slice(text_indexes[end])
166
- const gap = corrected_text.length + text_indexes[start] - text_indexes[end]
166
+ let gap = corrected_text.length + text_indexes[start] - text_indexes[end]
167
167
  if (gap) {
168
168
  for (let i = end; i < text_length; i++) {
169
169
  text_indexes[i] += gap
@@ -206,17 +206,17 @@ module.exports = {
206
206
  start = node.range[0] + 1
207
207
  end = node.range[1] - 1
208
208
  let null_anchor = start
209
- const elements = node.elements.map(
209
+ let elements = node.elements.map(
210
210
  v => {
211
- const n = v ?? {
211
+ let n = v ?? {
212
212
  range: [ null_anchor, null_anchor ]
213
213
  }
214
- const text = get_text(n, start, end)
214
+ let text = get_text(n, start, end)
215
215
  null_anchor += text.length + 1
216
216
  return n
217
217
  }
218
218
  )
219
- for (const text of elements.map(v => get_text(v, start, end))) {
219
+ for (let text of elements.map(v => get_text(v, start, end))) {
220
220
  if (text.includes("\n")) {
221
221
  length = max_length + 1
222
222
  break
@@ -261,11 +261,9 @@ module.exports = {
261
261
  [ start, end ] = node.params[0].range
262
262
  }
263
263
  } else {
264
- start = node.type == "FunctionDeclaration"
264
+ start = node.id
265
265
  ? origin_text.indexOf("(", node.id.range[1]) + 1
266
- : node.id
267
- ? origin_text.indexOf("(", node.id.range[1]) + 1
268
- : origin_text.indexOf("(", node.range[0]) + 1
266
+ : origin_text.indexOf("(", node.range[0]) + 1
269
267
  end = origin_text.indexOf(
270
268
  ")",
271
269
  node.params.length
@@ -273,7 +271,7 @@ module.exports = {
273
271
  : start
274
272
  )
275
273
  }
276
- for (const text of node.params.map(v => get_text(v, start, end))) {
274
+ for (let text of node.params.map(v => get_text(v, start, end))) {
277
275
  if (text.includes("\n")) {
278
276
  length = max_length + 1
279
277
  break
@@ -302,7 +300,7 @@ module.exports = {
302
300
  line_indent = get_indent(node.callee.range[1])
303
301
  start = origin_text.indexOf("(", node.callee.range[1]) + 1
304
302
  end = node.range[1] - 1
305
- for (const text of node.arguments.map(v => get_text(v, start, end))) {
303
+ for (let text of node.arguments.map(v => get_text(v, start, end))) {
306
304
  if (text.includes("\n")) {
307
305
  length = max_length + 1
308
306
  break
@@ -329,7 +327,7 @@ module.exports = {
329
327
  case "ObjectPattern":
330
328
  start = node.range[0] + 1
331
329
  end = node.range[1] - 1
332
- for (const text of node.properties.map(v => get_text(v, start, end))) {
330
+ for (let text of node.properties.map(v => get_text(v, start, end))) {
333
331
  if (text.includes("\n")) {
334
332
  length = max_length + 1
335
333
  break
@@ -356,7 +354,7 @@ module.exports = {
356
354
  case "SequenceExpression":
357
355
  start = node.range[0]
358
356
  end = node.range[1]
359
- for (const text of node.expressions.map(v => get_text(v, start, end))) {
357
+ for (let text of node.expressions.map(v => get_text(v, start, end))) {
360
358
  if (text.includes("\n")) {
361
359
  length = max_length + 1
362
360
  break
@@ -386,8 +384,12 @@ module.exports = {
386
384
  }
387
385
  return /** @type {import("../private").RuleListener} */({
388
386
  "Program:exit": () => {
389
- for (const node of nodes.reverse()) {
390
- verify_correct(node)
387
+ for (let node of nodes.reverse()) {
388
+ try {
389
+ verify_correct(node)
390
+ } catch (error) {
391
+ console.error(node.type, node, error)
392
+ }
391
393
  }
392
394
  },
393
395
  ArrayExpression: node => {
@@ -23,21 +23,21 @@ module.exports = {
23
23
  },
24
24
  create(context) {
25
25
  /** @type {import("../private").RuleOptions["svelte-naming-convention"]} */
26
- const option = context.options[0]
27
- const fix_same_names = option?.fixSameNames ?? true
26
+ let option = context.options[0]
27
+ let fix_same_names = option?.fixSameNames ?? true
28
28
 
29
- // let name | const name | class name
30
- const allow_regex = /^[_$]?[_$]?(?:[\da-z]+(?:_[\da-z]+)*\$?\$?)?$|^[A-Z](?:_?[\dA-Z]+)*$|^(?:[\dA-Z][\da-z]*)+$/
31
- const fixable_name_regex = /^[_$]?[_$]?(?:[\dA-Za-z]+(?:_[\dA-Za-z]+)*\$?\$?)?$/
32
- const fix_regex = /([\da-z]?)([A-Z][\dA-Z]*)/g
33
- const camel_case_regex = /^[\da-z]+([A-Z][\da-z]*)*$/
29
+ // let name | let name | class name
30
+ let allow_regex = /^[_$]?[_$]?(?:[\da-z]+(?:_[\da-z]+)*\$?\$?)?$|^[A-Z](?:_?[\dA-Z]+)*$|^(?:[\dA-Z][\da-z]*)+$/
31
+ let fixable_name_regex = /^[_$]?[_$]?(?:[\dA-Za-z]+(?:_[\dA-Za-z]+)*\$?\$?)?$/
32
+ let fix_regex = /([\da-z]?)([A-Z][\dA-Z]*)/g
33
+ let camel_case_regex = /^[\da-z]+([A-Z][\da-z]*)*$/
34
34
 
35
35
  /** @type {Map<string, import("../private").AstNode[]>} */
36
- const pending_usages = new Map()
36
+ let pending_usages = new Map()
37
37
  /** @type {Set<string>} */
38
- const reported_declarations = new Set()
38
+ let reported_declarations = new Set()
39
39
  /** @type {Set<import("../private").AstNode>} */
40
- const shortand_properties = new Set()
40
+ let shortand_properties = new Set()
41
41
 
42
42
  /**
43
43
  * @param {import("../private").AstNode & import("estree").Identifier} node
@@ -45,7 +45,7 @@ module.exports = {
45
45
  */
46
46
  function defer(node) {
47
47
  if (fix_same_names) {
48
- const name = node.name
48
+ let name = node.name
49
49
  if (reported_declarations.has(name)) report(node)
50
50
  else {
51
51
  let usages = pending_usages.get(name)
@@ -71,7 +71,7 @@ module.exports = {
71
71
  * @returns {void}
72
72
  */
73
73
  function report(node) {
74
- const name = node.name
74
+ let name = node.name
75
75
  context.report(
76
76
  {
77
77
  data: { name },
@@ -90,7 +90,7 @@ module.exports = {
90
90
  }
91
91
  )
92
92
  if (fix_same_names) {
93
- const usages = pending_usages.get(name)
93
+ let usages = pending_usages.get(name)
94
94
  while (usages?.length) {
95
95
  report(
96
96
  /** @type {import("../private").AstNode & import("estree").Identifier} */(usages.pop())/**/
@@ -103,11 +103,10 @@ module.exports = {
103
103
  return {
104
104
  /** @param {import("../private").AstNode & import("estree").Identifier} node */
105
105
  Identifier(node) {
106
- const name = node.name
106
+ let name = node.name
107
107
  if (allow_regex.test(name)) return
108
- const parent = node.parent
109
- const type = parent.type
110
- switch (type) {
108
+ let parent = node.parent
109
+ switch (parent.type) {
111
110
  case "ArrayExpression":
112
111
  // var value = [ camelCase ]
113
112
  defer(node)
@@ -1,10 +1,10 @@
1
1
  "use strict"
2
- const { RuleTester } = require("eslint")
2
+ let { RuleTester } = require("eslint")
3
3
 
4
4
  /** @type {RuleTester.ValidTestCase[]} */
5
- const valid = []
5
+ let valid = []
6
6
  /** @type {RuleTester.InvalidTestCase[]} */
7
- const invalid = []
7
+ let invalid = []
8
8
 
9
9
  require(
10
10
  "./pretty-imports/ExportNamedDeclaration"
@@ -3,7 +3,7 @@
3
3
  * @param {string} value
4
4
  * @returns {import("eslint").RuleTester.InvalidTestCase}
5
5
  */
6
- const test_case = (type, value) => ({
6
+ let test_case = (type, value) => ({
7
7
  code: `
8
8
  var value = /** @type {A} */(${value})
9
9
  var value = /** @type {B} */(${value}) // comment...
@@ -1,10 +1,10 @@
1
1
  "use strict"
2
- const { RuleTester } = require("eslint")
2
+ let { RuleTester } = require("eslint")
3
3
 
4
4
  /** @type {RuleTester.ValidTestCase[]} */
5
- const valid = []
5
+ let valid = []
6
6
  /** @type {RuleTester.InvalidTestCase[]} */
7
- const invalid = []
7
+ let invalid = []
8
8
 
9
9
  require(
10
10
  "./pretty-jsdoc-casting/case_by_expression"
@@ -46,6 +46,17 @@ exports.module = (valid, invalid) => {
46
46
  )
47
47
  `,
48
48
  parserOptions: { ecmaVersion: "latest" }
49
+ },
50
+ {
51
+ code: `
52
+ export default function(abc) {
53
+ return [ abc, abc ]
54
+ }
55
+ `,
56
+ parserOptions: {
57
+ ecmaVersion: "latest",
58
+ sourceType: "module"
59
+ }
49
60
  }
50
61
  )
51
62
  invalid.push(
@@ -1,10 +1,10 @@
1
1
  "use strict"
2
- const { RuleTester } = require("eslint")
2
+ let { RuleTester } = require("eslint")
3
3
 
4
4
  /** @type {RuleTester.ValidTestCase[]} */
5
- const valid = []
5
+ let valid = []
6
6
  /** @type {RuleTester.InvalidTestCase[]} */
7
- const invalid = []
7
+ let invalid = []
8
8
 
9
9
  require(
10
10
  "./pretty-sequence/case_by_node_type"
@@ -1,10 +1,10 @@
1
1
  "use strict"
2
- const { RuleTester } = require("eslint")
2
+ let { RuleTester } = require("eslint")
3
3
 
4
4
  /** @type {RuleTester.ValidTestCase[]} */
5
- const valid = []
5
+ let valid = []
6
6
  /** @type {RuleTester.InvalidTestCase[]} */
7
- const invalid = []
7
+ let invalid = []
8
8
 
9
9
  require(
10
10
  "./svelte-naming-convention/basic_snake_case"
package/tsconfig.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "allowJs": true,
4
4
  "allowSyntheticDefaultImports": true,
5
5
  "checkJs": true,
6
- "lib": ["ES2020", "DOM", "DOM.Iterable"],
6
+ "lib": [ "ES2020", "DOM", "DOM.Iterable" ],
7
7
  "module": "CommonJS",
8
8
  "noEmit": true,
9
9
  "skipLibCheck": true,