@automattic/eslint-config-target-es 1.0.6 → 2.0.0

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
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.0.0] - 2023-06-26
9
+ ### Changed
10
+ - As `eslint-plugin-es` appears to be abandoned, change to using `eslint-plugin-es-x`. [#31556]
11
+ - Updated package dependencies.
12
+
8
13
  ## [1.0.6] - 2023-04-07
9
14
  ### Changed
10
15
  - Update to React 18.
@@ -36,6 +41,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
36
41
  ### Added
37
42
  - Initial release.
38
43
 
44
+ [2.0.0]: https://github.com/Automattic/eslint-config-target-es/compare/1.0.6...2.0.0
39
45
  [1.0.6]: https://github.com/Automattic/eslint-config-target-es/compare/1.0.5...1.0.6
40
46
  [1.0.5]: https://github.com/Automattic/eslint-config-target-es/compare/1.0.4...1.0.5
41
47
  [1.0.4]: https://github.com/Automattic/eslint-config-target-es/compare/1.0.3...1.0.4
package/README.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # eslint-config-target-es
2
2
 
3
- ESLint shareable config to activate [eslint-plugin-es] checks based on [browserslist] browser targets and [MDN browser compatibility data].
3
+ ESLint shareable config to activate [eslint-plugin-es-x] checks based on [browserslist] browser targets and [MDN browser compatibility data].
4
4
 
5
5
  ## Installation
6
6
 
7
7
  Generally you'll install this via your package manager, e.g.
8
8
 
9
9
  ```
10
- npm install --save-dev eslint eslint-plugin-es @automattic/eslint-config-target-es
10
+ npm install --save-dev eslint eslint-plugin-es-x @automattic/eslint-config-target-es
11
11
  ```
12
12
 
13
13
  ## Usage
@@ -75,6 +75,6 @@ eslint-config-target-es is licensed under [GNU General Public License v2 (or lat
75
75
 
76
76
  --
77
77
 
78
- [eslint-plugin-es]: https://www.npmjs.com/package/eslint-plugin-es
78
+ [eslint-plugin-es-x]: https://www.npmjs.com/package/eslint-plugin-es-x
79
79
  [browserslist]: https://www.npmjs.com/package/browserslist
80
80
  [MDN browser compatibility data]: https://www.npmjs.com/package/@mdn/browser-compat-data
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automattic/eslint-config-target-es",
3
- "version": "1.0.6",
3
+ "version": "2.0.0",
4
4
  "description": "ESLint sharable config to activate eslint-plugin-es checks based on browserslist targets.",
5
5
  "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/eslint-config-target-es/README.md#readme",
6
6
  "bugs": {
@@ -17,20 +17,20 @@
17
17
  "test": "jest tests"
18
18
  },
19
19
  "dependencies": {
20
- "@mdn/browser-compat-data": "4.2.1",
20
+ "@mdn/browser-compat-data": "5.2.66",
21
21
  "browserslist": "^4.17.6",
22
22
  "debug": "^4.3.2",
23
23
  "semver": "^7.3.5"
24
24
  },
25
25
  "devDependencies": {
26
- "@wordpress/browserslist-config": "5.13.0",
27
- "eslint": "8.33.0",
28
- "eslint-plugin-es": "4.1.0",
26
+ "@wordpress/browserslist-config": "5.18.0",
27
+ "eslint": "8.39.0",
28
+ "eslint-plugin-es-x": "7.1.0",
29
29
  "jest": "29.4.3"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "eslint": ">=4.19.1",
33
- "eslint-plugin-es": "^4.1.0"
33
+ "eslint-plugin-es-x": "^7.1.0"
34
34
  },
35
35
  "exports": {
36
36
  ".": "./src/configs/all.js",
@@ -1,6 +1,6 @@
1
1
  module.exports = {
2
2
  env: {
3
- es2021: true,
3
+ es2022: true,
4
4
  },
5
- plugins: [ 'es' ],
5
+ plugins: [ 'es-x' ],
6
6
  };
package/src/funcs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  const mdn = require( '@mdn/browser-compat-data' );
2
2
  const browserslist = require( 'browserslist' );
3
3
  const debug = require( 'debug' );
4
- const { rules: esRules } = require( 'eslint-plugin-es' );
4
+ const { rules: esRules } = require( 'eslint-plugin-es-x' );
5
5
  const semver = require( 'semver' );
6
6
  const browsersMap = require( './browsersMap.js' );
7
7
  const rulesMap = require( './rulesMap.js' );
@@ -122,7 +122,7 @@ function needsCheck( rule, browsers, options = {} ) {
122
122
  }
123
123
 
124
124
  /**
125
- * Get the es rule configurations.
125
+ * Get the es-x rule configurations.
126
126
  *
127
127
  * @param {object} options - Options.
128
128
  * @param {boolean|null} options.builtins - If true, only rules with "javascript.builtins" paths are checked. If false, such rules are not checked. If null/undefined, all may be checked.
@@ -133,7 +133,7 @@ function getRules( options = {} ) {
133
133
  const browsers = getBrowsers( options );
134
134
  const ret = {};
135
135
  for ( const rule of Object.keys( esRules ) ) {
136
- ret[ `es/${ rule }` ] = needsCheck( rule, browsers, options ) ? 2 : 0;
136
+ ret[ `es-x/${ rule }` ] = needsCheck( rule, browsers, options ) ? 2 : 0;
137
137
  }
138
138
  return ret;
139
139
  }
package/src/rulesMap.js CHANGED
@@ -1,14 +1,69 @@
1
- // Map of eslint-plugin-es rules to MDN compat-data paths.
1
+ // Map of eslint-plugin-es-x rules to MDN compat-data paths.
2
2
  // Values are either a path, an array of paths, true to always enable the rule, or false to always disable it.
3
3
  module.exports = {
4
+ // ?
5
+ 'no-atomics-waitasync': 'javascript.builtins.Atomics.waitAsync',
6
+ 'no-string-prototype-iswellformed-towellformed': [
7
+ 'javascript.builtins.String.isWellFormed',
8
+ 'javascript.builtins.String.toWellFormed',
9
+ ],
10
+
11
+ // ES2023
12
+ 'no-array-prototype-findlast-findlastindex': [
13
+ 'javascript.builtins.Array.findLast',
14
+ 'javascript.builtins.Array.findLastIndex',
15
+ ],
16
+ 'no-array-prototype-toreversed': 'javascript.builtins.Array.toReversed',
17
+ 'no-array-prototype-tosorted': 'javascript.builtins.Array.toSorted',
18
+ 'no-array-prototype-tospliced': 'javascript.builtins.Array.toSpliced',
19
+ 'no-array-prototype-with': 'javascript.builtins.Array.with',
20
+ 'no-hashbang': 'javascript.grammar.hashbang_comments',
21
+ 'no-intl-numberformat-prototype-formatrange': 'javascript.builtins.Intl.NumberFormat.formatRange',
22
+ 'no-intl-numberformat-prototype-formatrangetoparts':
23
+ 'javascript.builtins.Intl.NumberFormat.formatRangeToParts',
24
+ 'no-intl-pluralrules-prototype-selectrange': 'javascript.builtins.Intl.PluralRules.selectRange',
25
+ 'no-regexp-unicode-property-escapes-2023': false, // No support data in MDN separate from no-regexp-unicode-property-escapes. https://github.com/mdn/browser-compat-data/issues/19631
26
+
27
+ // ES2022
28
+ 'no-arbitrary-module-namespace-names': false, // No support data. https://github.com/mdn/browser-compat-data/issues/18152
29
+ 'no-array-string-prototype-at': [
30
+ 'javascript.builtins.Array.at',
31
+ 'javascript.builtins.String.at',
32
+ 'javascript.builtins.TypedArray.at',
33
+ ],
34
+ 'no-class-fields': [
35
+ 'javascript.classes.private_class_fields',
36
+ 'javascript.classes.private_class_methods',
37
+ 'javascript.classes.public_class_fields',
38
+ 'javascript.classes.static_class_fields',
39
+ ],
40
+ 'no-class-static-block': 'javascript.classes.static_initialization_blocks',
41
+ 'no-error-cause': [
42
+ 'javascript.builtins.Error.Error.options_cause_parameter',
43
+ 'javascript.builtins.Error.cause',
44
+ ],
45
+ 'no-intl-segmenter': 'javascript.builtins.Intl.Segmenter',
46
+ 'no-intl-supportedvaluesof': 'javascript.builtins.Intl.supportedValuesOf',
47
+ 'no-object-hasown': 'javascript.builtins.Object.hasOwn',
48
+ 'no-private-in': 'javascript.classes.private_class_fields_in',
49
+ 'no-regexp-d-flag': 'javascript.builtins.RegExp.hasIndices',
50
+ 'no-regexp-unicode-property-escapes-2022': false, // No support data in MDN separate from no-regexp-unicode-property-escapes. https://github.com/mdn/browser-compat-data/issues/19631
51
+ 'no-top-level-await': 'javascript.operators.await.top_level',
52
+
4
53
  // ES2021
54
+ 'no-intl-datetimeformat-prototype-formatrange':
55
+ 'javascript.builtins.Intl.DateTimeFormat.formatRange',
56
+ 'no-intl-displaynames': 'javascript.builtins.Intl.DisplayNames',
57
+ 'no-intl-listformat': 'javascript.builtins.Intl.ListFormat',
5
58
  'no-logical-assignment-operators': [
6
59
  'javascript.operators.logical_and_assignment',
7
- 'javascript.operators.logical_nullish_assignment',
60
+ 'javascript.operators.nullish_coalescing_assignment',
8
61
  'javascript.operators.logical_or_assignment',
9
62
  ],
10
63
  'no-numeric-separators': 'javascript.grammar.numeric_separators',
11
64
  'no-promise-any': [ 'javascript.builtins.AggregateError', 'javascript.builtins.Promise.any' ],
65
+ 'no-regexp-unicode-property-escapes-2021': false, // No support data in MDN separate from no-regexp-unicode-property-escapes. https://github.com/mdn/browser-compat-data/issues/19631
66
+ 'no-string-prototype-replaceall': 'javascript.builtins.String.replaceAll',
12
67
  'no-weakrefs': [ 'javascript.builtins.WeakRef', 'javascript.builtins.FinalizationRegistry' ],
13
68
 
14
69
  // ES2020
@@ -17,31 +72,49 @@ module.exports = {
17
72
  'javascript.builtins.BigInt64Array',
18
73
  'javascript.builtins.BigUint64Array',
19
74
  ],
20
- 'no-dynamic-import': 'javascript.statements.import.dynamic_import',
75
+ 'no-dynamic-import': 'javascript.operators.import',
21
76
  'no-export-ns-from': 'javascript.statements.export.namespace',
22
77
  'no-global-this': 'javascript.builtins.globalThis',
23
- 'no-import-meta': 'javascript.statements.import_meta',
78
+ 'no-import-meta': 'javascript.operators.import_meta',
79
+ 'no-intl-locale': 'javascript.builtins.Intl.Locale',
80
+ 'no-intl-relativetimeformat': 'javascript.builtins.Intl.RelativeTimeFormat',
24
81
  'no-nullish-coalescing-operators': 'javascript.operators.nullish_coalescing',
25
82
  'no-optional-chaining': 'javascript.operators.optional_chaining',
26
83
  'no-promise-all-settled': 'javascript.builtins.Promise.allSettled',
84
+ 'no-regexp-unicode-property-escapes-2020': false, // No support data in MDN separate from no-regexp-unicode-property-escapes. https://github.com/mdn/browser-compat-data/issues/19631
85
+ 'no-string-prototype-matchall': 'javascript.builtins.String.matchAll',
27
86
 
28
87
  // ES2019
88
+ 'no-array-prototype-flat': [
89
+ 'javascript.builtins.Array.flat',
90
+ 'javascript.builtins.Array.flatMap',
91
+ ],
29
92
  'no-json-superset': 'javascript.builtins.JSON.json_superset',
30
93
  'no-object-fromentries': 'javascript.builtins.Object.fromEntries',
31
94
  'no-optional-catch-binding': 'javascript.statements.try_catch.optional_catch_binding',
32
- 'no-regexp-unicode-property-escapes-2019': false, // No support data in MDN separate from no-regexp-unicode-property-escapes?
95
+ 'no-regexp-unicode-property-escapes-2019': false, // No support data in MDN separate from no-regexp-unicode-property-escapes. https://github.com/mdn/browser-compat-data/issues/19631
96
+ 'no-string-prototype-trimstart-trimend': [
97
+ 'javascript.builtins.String.trimEnd',
98
+ 'javascript.builtins.String.trimStart',
99
+ ],
100
+ 'no-symbol-prototype-description': 'javascript.builtins.Symbol.description',
33
101
 
34
102
  // ES2018
35
103
  'no-async-iteration': [
36
104
  'javascript.operators.async_generator_function',
37
105
  'javascript.statements.async_generator_function',
38
106
  ],
107
+ 'no-intl-numberformat-prototype-formattoparts':
108
+ 'javascript.builtins.Intl.NumberFormat.formatToParts',
109
+ 'no-intl-pluralrules': 'javascript.builtins.Intl.PluralRules',
39
110
  'no-malformed-template-literals':
40
111
  'javascript.grammar.template_literals.template_literal_revision',
41
- 'no-regexp-lookbehind-assertions': 'javascript.builtins.RegExp.lookbehind_assertion',
42
- 'no-regexp-named-capture-groups': 'javascript.builtins.RegExp.named_capture_groups',
112
+ 'no-promise-prototype-finally': 'javascript.builtins.Promise.finally',
113
+ 'no-regexp-lookbehind-assertions': 'javascript.regular_expressions.lookahead_assertion',
114
+ 'no-regexp-named-capture-groups': 'javascript.regular_expressions.named_capturing_group',
43
115
  'no-regexp-s-flag': 'javascript.builtins.RegExp.dotAll',
44
- 'no-regexp-unicode-property-escapes': 'javascript.builtins.RegExp.property_escapes',
116
+ 'no-regexp-unicode-property-escapes':
117
+ 'javascript.regular_expressions.unicode_character_class_escape',
45
118
  'no-rest-spread-properties': [
46
119
  'javascript.operators.object_initializer.spread_properties',
47
120
  'javascript.operators.spread.spread_in_object_literals',
@@ -53,10 +126,16 @@ module.exports = {
53
126
  'javascript.statements.async_function',
54
127
  ],
55
128
  'no-atomics': 'javascript.builtins.Atomics',
129
+ 'no-intl-datetimeformat-prototype-formattoparts':
130
+ 'javascript.builtins.Intl.DateTimeFormat.formatRangeToParts',
56
131
  'no-object-entries': 'javascript.builtins.Object.entries',
57
132
  'no-object-getownpropertydescriptors': 'javascript.builtins.Object.getOwnPropertyDescriptors',
58
133
  'no-object-values': 'javascript.builtins.Object.values',
59
134
  'no-shared-array-buffer': 'javascript.builtins.SharedArrayBuffer',
135
+ 'no-string-prototype-padstart-padend': [
136
+ 'javascript.builtins.String.padEnd',
137
+ 'javascript.builtins.String.padStart',
138
+ ],
60
139
  'no-trailing-function-commas': [
61
140
  'javascript.grammar.trailing_commas.trailing_commas_in_functions',
62
141
  'javascript.functions.arrow_functions.trailing_comma',
@@ -67,11 +146,20 @@ module.exports = {
67
146
  ],
68
147
 
69
148
  // ES2016
149
+ 'no-array-prototype-includes': 'javascript.builtins.Array.includes',
70
150
  'no-exponential-operators': 'javascript.operators.exponentiation',
151
+ 'no-intl-getcanonicallocales': 'javascript.builtins.Intl.getCanonicalLocales',
71
152
 
72
153
  // ES2015
73
154
  'no-array-from': 'javascript.builtins.Array.from',
74
155
  'no-array-of': 'javascript.builtins.Array.of',
156
+ 'no-array-prototype-copywithin': 'javascript.builtins.Array.copyWithin',
157
+ 'no-array-prototype-entries': 'javascript.builtins.Array.entries',
158
+ 'no-array-prototype-fill': 'javascript.builtins.Array.fill',
159
+ 'no-array-prototype-find': 'javascript.builtins.Array.find',
160
+ 'no-array-prototype-findindex': 'javascript.builtins.Array.findIndex',
161
+ 'no-array-prototype-keys': 'javascript.builtins.Array.keys',
162
+ 'no-array-prototype-values': 'javascript.builtins.Array.values',
75
163
  'no-arrow-functions': 'javascript.functions.arrow_functions',
76
164
  'no-binary-numeric-literals': 'javascript.grammar.binary_numeric_literals',
77
165
  'no-block-scoped-functions': 'javascript.functions.block_level_functions',
@@ -133,6 +221,7 @@ module.exports = {
133
221
  ],
134
222
  'no-proxy': 'javascript.builtins.Proxy',
135
223
  'no-reflect': 'javascript.builtins.Reflect',
224
+ 'no-regexp-prototype-flags': 'javascript.builtins.RegExp.flags',
136
225
  'no-regexp-u-flag': 'javascript.builtins.RegExp.unicode',
137
226
  'no-regexp-y-flag': 'javascript.builtins.RegExp.sticky',
138
227
  'no-rest-parameters': 'javascript.functions.rest_parameters',
@@ -142,6 +231,12 @@ module.exports = {
142
231
  'javascript.operators.spread.spread_in_function_calls',
143
232
  ],
144
233
  'no-string-fromcodepoint': 'javascript.builtins.String.fromCodePoint',
234
+ 'no-string-prototype-codepointat': 'javascript.builtins.String.codePointAt',
235
+ 'no-string-prototype-endswith': 'javascript.builtins.String.endsWith',
236
+ 'no-string-prototype-includes': 'javascript.builtins.String.includes',
237
+ 'no-string-prototype-normalize': 'javascript.builtins.String.normalize',
238
+ 'no-string-prototype-repeat': 'javascript.builtins.String.repeat',
239
+ 'no-string-prototype-startswith': 'javascript.builtins.String.startsWith',
145
240
  'no-string-raw': 'javascript.builtins.String.raw',
146
241
  'no-subclassing-builtins': false, // No support data.
147
242
  'no-symbol': 'javascript.builtins.Symbol',
@@ -168,9 +263,20 @@ module.exports = {
168
263
  // ES5
169
264
  'no-accessor-properties': 'javascript.operators.property_accessors',
170
265
  'no-array-isarray': 'javascript.builtins.Array.isArray',
266
+ 'no-array-prototype-every': 'javascript.builtins.Array.every',
267
+ 'no-array-prototype-filter': 'javascript.builtins.Array.filter',
268
+ 'no-array-prototype-foreach': 'javascript.builtins.Array.forEach',
269
+ 'no-array-prototype-indexof': 'javascript.builtins.Array.indexOf',
270
+ 'no-array-prototype-lastindexof': 'javascript.builtins.Array.lastIndexOf',
271
+ 'no-array-prototype-map': 'javascript.builtins.Array.map',
272
+ 'no-array-prototype-reduce': 'javascript.builtins.Array.reduce',
273
+ 'no-array-prototype-reduceright': 'javascript.builtins.Array.reduceRight',
274
+ 'no-array-prototype-some': 'javascript.builtins.Array.some',
171
275
  'no-date-now': 'javascript.builtins.Date.now',
276
+ 'no-function-prototype-bind': 'javascript.builtins.Function.bind',
172
277
  'no-json': 'javascript.builtins.JSON',
173
278
  'no-keyword-properties': false, // No support data.
279
+ 'no-object-create': 'javascript.builtins.Object.create',
174
280
  'no-object-defineproperties': 'javascript.builtins.Object.defineProperties',
175
281
  'no-object-defineproperty': 'javascript.builtins.Object.defineProperty',
176
282
  'no-object-freeze': 'javascript.builtins.Object.freeze',
@@ -183,8 +289,47 @@ module.exports = {
183
289
  'no-object-keys': 'javascript.builtins.Object.keys',
184
290
  'no-object-preventextensions': 'javascript.builtins.Object.preventExtensions',
185
291
  'no-object-seal': 'javascript.builtins.Object.seal',
292
+ 'no-string-prototype-trim': 'javascript.builtins.String.trim',
186
293
  'no-trailing-commas': [
187
294
  'javascript.grammar.trailing_commas',
188
295
  'javascript.grammar.trailing_commas.trailing_commas_in_object_literals',
189
296
  ],
297
+
298
+ // Annex B
299
+ 'no-date-prototype-getyear-setyear': [
300
+ 'javascript.builtins.Date.getYear',
301
+ 'javascript.builtins.Date.setYear',
302
+ ],
303
+ 'no-date-prototype-togmtstring': 'javascript.builtins.Date.toGMTString',
304
+ 'no-escape-unescape': [ 'javascript.builtins.escape', 'javascript.builtins.unescape' ],
305
+ 'no-function-declarations-in-if-statement-clauses-without-block': false, // No support data.
306
+ 'no-initializers-in-for-in': false, // No support data.
307
+ 'no-labelled-function-declarations': false, // No support data.
308
+ 'no-regexp-prototype-compile': 'javascript.builtins.RegExp.compile',
309
+ 'no-shadow-catch-param': false, // No support data.
310
+ 'no-string-create-html-methods': [
311
+ 'javascript.builtins.String.anchor',
312
+ 'javascript.builtins.String.big',
313
+ 'javascript.builtins.String.blink',
314
+ 'javascript.builtins.String.bold',
315
+ 'javascript.builtins.String.fixed',
316
+ 'javascript.builtins.String.fontcolor',
317
+ 'javascript.builtins.String.fontsize',
318
+ 'javascript.builtins.String.italics',
319
+ 'javascript.builtins.String.link',
320
+ 'javascript.builtins.String.small',
321
+ 'javascript.builtins.String.strike',
322
+ 'javascript.builtins.String.sub',
323
+ 'javascript.builtins.String.sup',
324
+ ],
325
+ 'no-string-prototype-substr': 'javascript.builtins.String.substr',
326
+ 'no-string-prototype-trimleft-trimright': false, // No support data.
327
+
328
+ // Other legacy
329
+ 'no-legacy-object-prototype-accessor-methods': [
330
+ 'javascript.builtins.Object.defineGetter',
331
+ 'javascript.builtins.Object.defineSetter',
332
+ 'javascript.builtins.Object.lookupGetter',
333
+ 'javascript.builtins.Object.lookupSetter',
334
+ ],
190
335
  };