From 3a6877b53e671e018d4e51051330313231a15c49 Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Fri, 5 Mar 2021 20:36:06 +0700 Subject: [PATCH] enable `eslint-plugin-es`, improve linting settings --- .eslintrc.js | 267 ++++++++++++++++-- .github/workflows/tests.yml | 2 +- package.json | 1 + packages/core-js/es/json/index.js | 1 + packages/core-js/es/json/stringify.js | 1 + .../core-js/internals/array-buffer-native.js | 1 + packages/core-js/internals/array-buffer.js | 6 +- .../core-js/internals/array-copy-within.js | 1 + packages/core-js/internals/array-for-each.js | 1 + .../core-js/internals/array-last-index-of.js | 9 +- .../check-correctness-of-iteration.js | 2 +- .../internals/correct-prototype-getter.js | 1 + packages/core-js/internals/descriptors.js | 1 + packages/core-js/internals/freezing.js | 1 + .../core-js/internals/get-map-iterator.js | 2 +- .../core-js/internals/get-set-iterator.js | 2 +- packages/core-js/internals/global.js | 2 +- packages/core-js/internals/ie8-dom-define.js | 1 + .../core-js/internals/internal-metadata.js | 1 + packages/core-js/internals/is-array.js | 1 + packages/core-js/internals/iterators-core.js | 1 + packages/core-js/internals/math-expm1.js | 11 +- packages/core-js/internals/math-fround.js | 1 + packages/core-js/internals/math-log1p.js | 1 + packages/core-js/internals/math-sign.js | 1 + packages/core-js/internals/native-symbol.js | 3 +- .../core-js/internals/number-is-finite.js | 1 + packages/core-js/internals/object-assign.js | 14 +- .../internals/object-define-properties.js | 1 + .../internals/object-define-property.js | 7 +- .../object-get-own-property-descriptor.js | 7 +- .../object-get-own-property-names-external.js | 7 +- .../object-get-own-property-names.js | 1 + .../object-get-own-property-symbols.js | 1 + .../internals/object-get-prototype-of.js | 1 + packages/core-js/internals/object-keys.js | 1 + .../object-property-is-enumerable.js | 7 +- .../internals/object-set-prototype-of.js | 2 + packages/core-js/internals/same-value.js | 1 + packages/core-js/internals/string-repeat.js | 2 +- .../core-js/internals/use-symbol-as-uid.js | 2 +- packages/core-js/modules/es.array.for-each.js | 1 + packages/core-js/modules/es.array.from.js | 1 + packages/core-js/modules/es.array.index-of.js | 1 + .../core-js/modules/es.array.last-index-of.js | 1 + packages/core-js/modules/es.array.of.js | 1 + packages/core-js/modules/es.math.acosh.js | 9 +- packages/core-js/modules/es.math.asinh.js | 5 +- packages/core-js/modules/es.math.atanh.js | 5 +- packages/core-js/modules/es.math.cosh.js | 5 +- packages/core-js/modules/es.math.expm1.js | 1 + packages/core-js/modules/es.math.hypot.js | 1 + packages/core-js/modules/es.math.imul.js | 5 +- packages/core-js/modules/es.math.sinh.js | 1 + .../core-js/modules/es.number.parse-float.js | 1 + .../core-js/modules/es.number.parse-int.js | 1 + packages/core-js/modules/es.object.assign.js | 1 + packages/core-js/modules/es.object.freeze.js | 7 +- .../es.object.get-own-property-names.js | 5 +- .../modules/es.object.is-extensible.js | 7 +- .../core-js/modules/es.object.is-frozen.js | 7 +- .../core-js/modules/es.object.is-sealed.js | 7 +- .../modules/es.object.prevent-extensions.js | 7 +- packages/core-js/modules/es.object.seal.js | 7 +- .../modules/es.reflect.define-property.js | 2 +- .../modules/es.reflect.is-extensible.js | 1 + packages/core-js/modules/es.reflect.set.js | 2 +- packages/core-js/modules/es.regexp.flags.js | 1 + .../core-js/modules/es.string.ends-with.js | 7 +- .../modules/es.string.from-code-point.js | 5 +- .../core-js/modules/es.string.match-all.js | 1 + .../core-js/modules/es.string.starts-with.js | 7 +- .../core-js/modules/es.string.trim-end.js | 1 + .../core-js/modules/es.string.trim-start.js | 1 + .../core-js/modules/es.typed-array.set.js | 2 +- .../core-js/modules/es.typed-array.slice.js | 2 +- packages/core-js/modules/es.weak-map.js | 1 + .../esnext.array.is-template-object.js | 1 + .../core-js/modules/esnext.bigint.range.js | 2 +- tests/compat/tests.js | 1 - tests/promises-aplus/adapter.js | 21 +- tests/pure/es.promise.js | 1 + tests/pure/esnext.bigint.range.js | 3 +- tests/pure/esnext.number.range.js | 3 +- tests/pure/web.url.js | 1 + tests/tests/esnext.bigint.range.js | 3 +- tests/worker/runner.js | 5 +- tests/worker/test.js | 8 +- 88 files changed, 421 insertions(+), 125 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 599195b4dc3b..25d2ca884410 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,14 @@ 'use strict'; const RESTRICTED_GLOBALS = require('confusing-browser-globals'); const SUPPORTED_NODE_VERSIONS = require('core-js-builder/package').engines.node; +const DEV_NODE_VERSIONS = '^10.17'; + +function disable(rules) { + return Object.keys(rules).reduce((memo, rule) => { + memo[rule] = 'off'; + return memo; + }, {}); +} const base = { // possible errors: @@ -296,6 +304,8 @@ const base = { 'import/no-useless-path-segments': 'error', // node: + // disallow deprecated APIs + 'node/no-deprecated-api': 'error', // enforce the style of file extensions in `import` declarations 'node/file-extension-in-import': ['error', 'never'], // require require() calls to be placed at top-level module scope @@ -308,6 +318,8 @@ const base = { 'node/no-new-require': 'error', // disallow string concatenation with `__dirname` and `__filename` 'node/no-path-concat': 'error', + // disallow the use of `process.exit()` + 'node/no-process-exit': 'error', // es6+: // require parentheses around arrow function arguments @@ -461,6 +473,9 @@ const base = { // enforce using `\w` 'regexp/prefer-w': 'error', + // disallow \u2028 and \u2029 in string literals + 'es/no-json-superset': 'error', + // eslint-comments // require include descriptions in eslint directive-comments 'eslint-comments/require-description': 'error', @@ -495,19 +510,196 @@ const es3 = { 'unicorn/prefer-default-parameters': 'off', }; -const node = { - // disallow deprecated APIs - 'node/no-deprecated-api': 'error', - // disallow unsupported ECMAScript built-ins on the specified version - 'node/no-unsupported-features/es-builtins': ['error', { version: SUPPORTED_NODE_VERSIONS }], +const forbidES5BuiltIns = { + 'es/no-array-isarray': 'error', + 'es/no-array-prototype-every': 'error', + 'es/no-array-prototype-filter': 'error', + 'es/no-array-prototype-foreach': 'error', + 'es/no-array-prototype-indexof': 'error', + 'es/no-array-prototype-lastindexof': 'error', + 'es/no-array-prototype-map': 'error', + 'es/no-array-prototype-reduce': 'error', + 'es/no-array-prototype-reduceright': 'error', + 'es/no-array-prototype-some': 'error', + 'es/no-date-now': 'error', + 'es/no-json': 'error', + 'es/no-object-defineproperties': 'error', + 'es/no-object-defineproperty': 'error', + 'es/no-object-freeze': 'error', + 'es/no-object-getownpropertydescriptor': 'error', + 'es/no-object-getownpropertynames': 'error', + 'es/no-object-getprototypeof': 'error', + 'es/no-object-isextensible': 'error', + 'es/no-object-isfrozen': 'error', + 'es/no-object-issealed': 'error', + 'es/no-object-keys': 'error', + 'es/no-object-preventextensions': 'error', + 'es/no-object-seal': 'error', + 'es/no-string-prototype-trim': 'error', +}; + +const forbidES2015BuiltIns = { + 'es/no-array-from': 'error', + 'es/no-array-of': 'error', + 'es/no-array-prototype-copywithin': 'error', + 'es/no-array-prototype-entries': 'error', + 'es/no-array-prototype-fill': 'error', + 'es/no-array-prototype-find': 'error', + 'es/no-array-prototype-findindex': 'error', + 'es/no-array-prototype-keys': 'error', + 'es/no-array-prototype-values': 'error', + 'es/no-map': 'error', + 'es/no-math-acosh': 'error', + 'es/no-math-asinh': 'error', + 'es/no-math-atanh': 'error', + 'es/no-math-cbrt': 'error', + 'es/no-math-clz32': 'error', + 'es/no-math-cosh': 'error', + 'es/no-math-expm1': 'error', + 'es/no-math-fround': 'error', + 'es/no-math-hypot': 'error', + 'es/no-math-imul': 'error', + 'es/no-math-log10': 'error', + 'es/no-math-log1p': 'error', + 'es/no-math-log2': 'error', + 'es/no-math-sign': 'error', + 'es/no-math-sinh': 'error', + 'es/no-math-tanh': 'error', + 'es/no-math-trunc': 'error', + 'es/no-number-epsilon': 'error', + 'es/no-number-isfinite': 'error', + 'es/no-number-isinteger': 'error', + 'es/no-number-isnan': 'error', + 'es/no-number-issafeinteger': 'error', + 'es/no-number-maxsafeinteger': 'error', + 'es/no-number-minsafeinteger': 'error', + 'es/no-number-parsefloat': 'error', + 'es/no-number-parseint': 'error', + 'es/no-object-assign': 'error', + 'es/no-object-getownpropertysymbols': 'error', + 'es/no-object-is': 'error', + 'es/no-object-setprototypeof': 'error', + 'es/no-promise': 'error', + 'es/no-proxy': 'error', + 'es/no-reflect': 'error', + 'es/no-regexp-prototype-flags': 'error', + 'es/no-set': 'error', + 'es/no-string-fromcodepoint': 'error', + 'es/no-string-prototype-codepointat': 'error', + 'es/no-string-prototype-endswith': 'error', + 'es/no-string-prototype-includes': 'error', + 'es/no-string-prototype-normalize': 'error', + 'es/no-string-prototype-repeat': 'error', + 'es/no-string-prototype-startswith': 'error', + 'es/no-string-raw': 'error', + 'es/no-symbol': 'error', + 'es/no-typed-arrays': 'error', + 'es/no-weak-map': 'error', + 'es/no-weak-set': 'error', +}; + +const forbidES2016BuiltIns = { + 'es/no-array-prototype-includes': 'error', +}; + +const forbidES2017BuiltIns = { + 'es/no-atomics': 'error', + 'es/no-object-entries': 'error', + 'es/no-object-getownpropertydescriptors': 'error', + 'es/no-object-values': 'error', + 'es/no-shared-array-buffer': 'error', + 'es/no-string-prototype-padstart-padend': 'error', +}; + +const forbidES2018BuiltIns = { + 'es/no-promise-prototype-finally': 'error', +}; + +const forbidES2019BuiltIns = { + 'es/no-array-prototype-flat': 'error', + 'es/no-object-fromentries': 'error', + 'es/no-string-prototype-trimstart-trimend': 'error', + 'es/no-symbol-prototype-description': 'error', +}; + +const forbidES2020BuiltIns = { + 'es/no-bigint': 'error', + 'es/no-global-this': 'error', + 'es/no-promise-all-settled': 'error', + 'es/no-string-prototype-matchall': 'error', +}; + +const forbidES2021BuiltIns = { + 'es/no-promise-any': 'error', + 'es/no-string-prototype-replaceall': 'error', + 'es/no-weakrefs': 'error', +}; + +const forbidModernESBuiltIns = { + ...forbidES5BuiltIns, + ...forbidES2015BuiltIns, + ...forbidES2016BuiltIns, + ...forbidES2017BuiltIns, + ...forbidES2018BuiltIns, + ...forbidES2019BuiltIns, + ...forbidES2020BuiltIns, + ...forbidES2021BuiltIns, +}; + +const transpiledAndPolyfilled = { + // disallow accessor properties + 'es/no-accessor-properties': 'error', + // disallow async functions + 'es/no-async-functions': 'error', + // disallow async iteration + 'es/no-async-iteration': 'error', + // disallow generators + 'es/no-generators': 'error', + // unpolyfillable es2015 builtins + 'es/no-proxy': 'error', + 'es/no-string-prototype-normalize': 'error', + // unpolyfillable es2017 builtins + 'es/no-atomics': 'error', + 'es/no-shared-array-buffer': 'error', + // unpolyfillable es2020 builtins + 'es/no-bigint': 'error', + // unpolyfillable es2021 builtins + 'es/no-weakrefs': 'error', +}; + +const nodePackages = { // disallow unsupported ECMAScript syntax on the specified version 'node/no-unsupported-features/es-syntax': ['error', { version: SUPPORTED_NODE_VERSIONS }], + // disallow unsupported ECMAScript built-ins on the specified version + 'node/no-unsupported-features/node-builtins': ['error', { version: SUPPORTED_NODE_VERSIONS }], + ...disable(forbidES5BuiltIns), + ...disable(forbidES2015BuiltIns), + ...disable(forbidES2016BuiltIns), + ...disable(forbidES2017BuiltIns), + 'es/no-atomics': 'error', + 'es/no-shared-array-buffer': 'error', + ...forbidES2018BuiltIns, + ...forbidES2019BuiltIns, + ...forbidES2020BuiltIns, + ...forbidES2021BuiltIns, }; -const tests = { - // require strict mode directives - strict: 'off', +const nodeDev = { + // disallow unsupported ECMAScript syntax on the specified version + 'node/no-unsupported-features/es-syntax': ['error', { version: DEV_NODE_VERSIONS }], + // disallow unsupported ECMAScript built-ins on the specified version + 'node/no-unsupported-features/node-builtins': ['error', { version: DEV_NODE_VERSIONS }], + ...disable(forbidES5BuiltIns), + ...disable(forbidES2015BuiltIns), + ...disable(forbidES2016BuiltIns), + ...disable(forbidES2017BuiltIns), + ...disable(forbidES2018BuiltIns), + ...forbidES2019BuiltIns, + ...forbidES2020BuiltIns, + ...forbidES2021BuiltIns, +}; +const tests = { // relax for testing: // enforces return statements in callbacks of array's methods 'array-callback-return': 'off', @@ -598,11 +790,14 @@ module.exports = { ecmaVersion: 2021, }, env: { + // unnececery global builtins disabled by related rules + es2021: true, browser: true, node: true, worker: true, }, plugins: [ + 'es', 'eslint-comments', 'import', 'node', @@ -619,27 +814,55 @@ module.exports = { files: [ 'packages/core-js/**', 'packages/core-js-pure/**', - 'tests/promises-aplus/**', 'tests/compat/**', + 'tests/worker/**', ], parserOptions: { ecmaVersion: 3, }, rules: es3, }, + { + files: [ + 'packages/core-js/**', + 'packages/core-js-pure/**', + 'tests/pure/**', + 'tests/worker/**', + ], + rules: forbidModernESBuiltIns, + }, + { + files: [ + 'packages/core-js/postinstall.js', + 'packages/core-js-pure/postinstall.js', + ], + rules: disable(forbidES5BuiltIns), + }, { files: [ 'tests/helpers/**', 'tests/pure/**', 'tests/tests/**', 'tests/wpt-url-resources/**', - 'tests/commonjs.js', - 'tests/commonjs-entries-content.js', - 'tests/targets-parser.js', ], parserOptions: { sourceType: 'module', }, + rules: transpiledAndPolyfilled, + }, + { + files: [ + 'tests/helpers/**', + 'tests/observables/**', + 'tests/promises-aplus/**', + 'tests/pure/**', + 'tests/tests/**', + 'tests/worker/**', + 'tests/wpt-url-resources/**', + 'tests/commonjs.js', + 'tests/commonjs-entries-content.js', + 'tests/targets-parser.js', + ], rules: tests, }, { @@ -657,7 +880,15 @@ module.exports = { files: [ 'packages/core-js-builder/**', 'packages/core-js-compat/**', + ], + rules: nodePackages, + }, + { + files: [ + 'packages/core-js-compat/src/**', 'scripts/**', + 'tests/observables/**', + 'tests/promises-aplus/**', 'tests/commonjs.js', 'tests/commonjs-entries-content.js', 'tests/targets-parser.js', @@ -666,25 +897,17 @@ module.exports = { 'babel.config.js', 'Gruntfile.js', ], - env: { - es6: true, - }, - rules: node, + rules: nodeDev, }, { files: [ + 'tests/observables/**', 'tests/tests/**', 'tests/compat/**', ], - env: { - es6: true, - }, globals: { compositeKey: true, compositeSymbol: true, - globalThis: true, - queueMicrotask: true, - AggregateError: true, AsyncIterator: true, Iterator: true, Observable: true, diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fbfad75a4544..d86251b63285 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,7 +14,7 @@ jobs: 'macos-latest', ] node: [ - '10.13', + '10.17', '12.13', '14.15', '15', diff --git a/package.json b/package.json index 48b19fe5c8b8..ec7bf451729a 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "david": "^12.0.0", "es-observable": "git+https://github.com/tc39/proposal-observable.git#d3404f06bc70c7c578a5047dfb3dc813730e3319", "eslint": "^7.21.0", + "eslint-plugin-es": "git+https://github.com/mysticatea/eslint-plugin-es.git#00d73851793541dc7b0d07292deb0ca2bc8a25e1", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-node": "^11.1.0", diff --git a/packages/core-js/es/json/index.js b/packages/core-js/es/json/index.js index c16528ad3c0b..5d4034777ec3 100644 --- a/packages/core-js/es/json/index.js +++ b/packages/core-js/es/json/index.js @@ -2,4 +2,5 @@ require('../../modules/es.json.stringify'); require('../../modules/es.json.to-string-tag'); var path = require('../../internals/path'); +// eslint-disable-next-line es/no-json -- safe module.exports = path.JSON || (path.JSON = { stringify: JSON.stringify }); diff --git a/packages/core-js/es/json/stringify.js b/packages/core-js/es/json/stringify.js index 19018139fee7..4051fd2894d2 100644 --- a/packages/core-js/es/json/stringify.js +++ b/packages/core-js/es/json/stringify.js @@ -1,6 +1,7 @@ require('../../modules/es.json.stringify'); var core = require('../../internals/path'); +// eslint-disable-next-line es/no-json -- safe if (!core.JSON) core.JSON = { stringify: JSON.stringify }; // eslint-disable-next-line no-unused-vars -- required for `.length` diff --git a/packages/core-js/internals/array-buffer-native.js b/packages/core-js/internals/array-buffer-native.js index 36da2d744bfe..84c7d5b176c8 100644 --- a/packages/core-js/internals/array-buffer-native.js +++ b/packages/core-js/internals/array-buffer-native.js @@ -1 +1,2 @@ +// eslint-disable-next-line es/no-typed-arrays -- safe module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined'; diff --git a/packages/core-js/internals/array-buffer.js b/packages/core-js/internals/array-buffer.js index 838d03b5d41d..5baef3df7a95 100644 --- a/packages/core-js/internals/array-buffer.js +++ b/packages/core-js/internals/array-buffer.js @@ -206,15 +206,15 @@ if (!NATIVE_ARRAY_BUFFER) { // iOS Safari 7.x bug var testView = new $DataView(new $ArrayBuffer(2)); - var nativeSetInt8 = $DataViewPrototype.setInt8; + var $setInt8 = $DataViewPrototype.setInt8; testView.setInt8(0, 2147483648); testView.setInt8(1, 2147483649); if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, { setInt8: function setInt8(byteOffset, value) { - nativeSetInt8.call(this, byteOffset, value << 24 >> 24); + $setInt8.call(this, byteOffset, value << 24 >> 24); }, setUint8: function setUint8(byteOffset, value) { - nativeSetInt8.call(this, byteOffset, value << 24 >> 24); + $setInt8.call(this, byteOffset, value << 24 >> 24); } }, { unsafe: true }); } diff --git a/packages/core-js/internals/array-copy-within.js b/packages/core-js/internals/array-copy-within.js index 9f3db1c192d1..9303d3888269 100644 --- a/packages/core-js/internals/array-copy-within.js +++ b/packages/core-js/internals/array-copy-within.js @@ -7,6 +7,7 @@ var min = Math.min; // `Array.prototype.copyWithin` method implementation // https://tc39.es/ecma262/#sec-array.prototype.copywithin +// eslint-disable-next-line es/no-array-prototype-copywithin -- safe module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { var O = toObject(this); var len = toLength(O.length); diff --git a/packages/core-js/internals/array-for-each.js b/packages/core-js/internals/array-for-each.js index fe805876363f..22477f47ff28 100644 --- a/packages/core-js/internals/array-for-each.js +++ b/packages/core-js/internals/array-for-each.js @@ -8,4 +8,5 @@ var STRICT_METHOD = arrayMethodIsStrict('forEach'); // https://tc39.es/ecma262/#sec-array.prototype.foreach module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); +// eslint-disable-next-line es/no-array-prototype-foreach -- safe } : [].forEach; diff --git a/packages/core-js/internals/array-last-index-of.js b/packages/core-js/internals/array-last-index-of.js index b6ead9f4d98b..e3a82514300e 100644 --- a/packages/core-js/internals/array-last-index-of.js +++ b/packages/core-js/internals/array-last-index-of.js @@ -1,12 +1,13 @@ 'use strict'; +/* eslint-disable es/no-array-prototype-lastindexof -- safe */ var toIndexedObject = require('../internals/to-indexed-object'); var toInteger = require('../internals/to-integer'); var toLength = require('../internals/to-length'); var arrayMethodIsStrict = require('../internals/array-method-is-strict'); var min = Math.min; -var nativeLastIndexOf = [].lastIndexOf; -var NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; +var $lastIndexOf = [].lastIndexOf; +var NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf'); var FORCED = NEGATIVE_ZERO || !STRICT_METHOD; @@ -14,7 +15,7 @@ var FORCED = NEGATIVE_ZERO || !STRICT_METHOD; // https://tc39.es/ecma262/#sec-array.prototype.lastindexof module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { // convert -0 to +0 - if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0; + if (NEGATIVE_ZERO) return $lastIndexOf.apply(this, arguments) || 0; var O = toIndexedObject(this); var length = toLength(O.length); var index = length - 1; @@ -22,4 +23,4 @@ module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[ if (index < 0) index = length + index; for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0; return -1; -} : nativeLastIndexOf; +} : $lastIndexOf; diff --git a/packages/core-js/internals/check-correctness-of-iteration.js b/packages/core-js/internals/check-correctness-of-iteration.js index 31f063027ab6..c32be226a08c 100644 --- a/packages/core-js/internals/check-correctness-of-iteration.js +++ b/packages/core-js/internals/check-correctness-of-iteration.js @@ -16,7 +16,7 @@ try { iteratorWithReturn[ITERATOR] = function () { return this; }; - // eslint-disable-next-line no-throw-literal -- required for testing + // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing Array.from(iteratorWithReturn, function () { throw 2; }); } catch (error) { /* empty */ } diff --git a/packages/core-js/internals/correct-prototype-getter.js b/packages/core-js/internals/correct-prototype-getter.js index 6cd8f404a45b..6ce05e63608b 100644 --- a/packages/core-js/internals/correct-prototype-getter.js +++ b/packages/core-js/internals/correct-prototype-getter.js @@ -3,5 +3,6 @@ var fails = require('../internals/fails'); module.exports = !fails(function () { function F() { /* empty */ } F.prototype.constructor = null; + // eslint-disable-next-line es/no-object-getprototypeof -- required for testing return Object.getPrototypeOf(new F()) !== F.prototype; }); diff --git a/packages/core-js/internals/descriptors.js b/packages/core-js/internals/descriptors.js index 2880a96d98cf..f93dd4c28ab6 100644 --- a/packages/core-js/internals/descriptors.js +++ b/packages/core-js/internals/descriptors.js @@ -2,5 +2,6 @@ var fails = require('../internals/fails'); // Detect IE8's incomplete defineProperty implementation module.exports = !fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; }); diff --git a/packages/core-js/internals/freezing.js b/packages/core-js/internals/freezing.js index 0ac9fbfb5395..51f25b555f50 100644 --- a/packages/core-js/internals/freezing.js +++ b/packages/core-js/internals/freezing.js @@ -1,5 +1,6 @@ var fails = require('../internals/fails'); module.exports = !fails(function () { + // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing return Object.isExtensible(Object.preventExtensions({})); }); diff --git a/packages/core-js/internals/get-map-iterator.js b/packages/core-js/internals/get-map-iterator.js index 07aeb9154f94..35cc745339c4 100644 --- a/packages/core-js/internals/get-map-iterator.js +++ b/packages/core-js/internals/get-map-iterator.js @@ -2,6 +2,6 @@ var IS_PURE = require('../internals/is-pure'); var getIterator = require('../internals/get-iterator'); module.exports = IS_PURE ? getIterator : function (it) { - // eslint-disable-next-line no-undef -- safe + // eslint-disable-next-line es/no-map -- safe return Map.prototype.entries.call(it); }; diff --git a/packages/core-js/internals/get-set-iterator.js b/packages/core-js/internals/get-set-iterator.js index b1847a4b0bb4..753912eb40c2 100644 --- a/packages/core-js/internals/get-set-iterator.js +++ b/packages/core-js/internals/get-set-iterator.js @@ -2,6 +2,6 @@ var IS_PURE = require('../internals/is-pure'); var getIterator = require('../internals/get-iterator'); module.exports = IS_PURE ? getIterator : function (it) { - // eslint-disable-next-line no-undef -- safe + // eslint-disable-next-line es/no-set -- safe return Set.prototype.values.call(it); }; diff --git a/packages/core-js/internals/global.js b/packages/core-js/internals/global.js index 3e3b6969db8b..143f8788952d 100644 --- a/packages/core-js/internals/global.js +++ b/packages/core-js/internals/global.js @@ -4,7 +4,7 @@ var check = function (it) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 module.exports = - /* global globalThis -- safe */ + // eslint-disable-next-line es/no-global-this -- safe check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || // eslint-disable-next-line no-restricted-globals -- safe diff --git a/packages/core-js/internals/ie8-dom-define.js b/packages/core-js/internals/ie8-dom-define.js index 6696ff9dd5d8..c47bc17536c6 100644 --- a/packages/core-js/internals/ie8-dom-define.js +++ b/packages/core-js/internals/ie8-dom-define.js @@ -4,6 +4,7 @@ var createElement = require('../internals/document-create-element'); // Thank's IE8 for his funny defineProperty module.exports = !DESCRIPTORS && !fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- requied for testing return Object.defineProperty(createElement('div'), 'a', { get: function () { return 7; } }).a != 7; diff --git a/packages/core-js/internals/internal-metadata.js b/packages/core-js/internals/internal-metadata.js index d70c48c3b0b9..b2323c46c2a6 100644 --- a/packages/core-js/internals/internal-metadata.js +++ b/packages/core-js/internals/internal-metadata.js @@ -8,6 +8,7 @@ var FREEZING = require('../internals/freezing'); var METADATA = uid('meta'); var id = 0; +// eslint-disable-next-line es/no-object-isextensible -- safe var isExtensible = Object.isExtensible || function () { return true; }; diff --git a/packages/core-js/internals/is-array.js b/packages/core-js/internals/is-array.js index 3f00b7bc1fca..cfdcb73b056e 100644 --- a/packages/core-js/internals/is-array.js +++ b/packages/core-js/internals/is-array.js @@ -2,6 +2,7 @@ var classof = require('../internals/classof-raw'); // `IsArray` abstract operation // https://tc39.es/ecma262/#sec-isarray +// eslint-disable-next-line es/no-array-isarray -- safe module.exports = Array.isArray || function isArray(arg) { return classof(arg) == 'Array'; }; diff --git a/packages/core-js/internals/iterators-core.js b/packages/core-js/internals/iterators-core.js index 6d5744d10aeb..3ae133285c3c 100644 --- a/packages/core-js/internals/iterators-core.js +++ b/packages/core-js/internals/iterators-core.js @@ -15,6 +15,7 @@ var returnThis = function () { return this; }; // https://tc39.es/ecma262/#sec-%iteratorprototype%-object var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; +/* eslint-disable es/no-array-prototype-keys -- safe */ if ([].keys) { arrayIterator = [].keys(); // Safari 8 has buggy iterators w/o `next` diff --git a/packages/core-js/internals/math-expm1.js b/packages/core-js/internals/math-expm1.js index 9faa5dec3a3e..5e6e36fcd70b 100644 --- a/packages/core-js/internals/math-expm1.js +++ b/packages/core-js/internals/math-expm1.js @@ -1,13 +1,14 @@ -var nativeExpm1 = Math.expm1; +// eslint-disable-next-line es/no-math-expm1 -- safe +var $expm1 = Math.expm1; var exp = Math.exp; // `Math.expm1` method implementation // https://tc39.es/ecma262/#sec-math.expm1 -module.exports = (!nativeExpm1 +module.exports = (!$expm1 // Old FF bug - || nativeExpm1(10) > 22025.465794806719 || nativeExpm1(10) < 22025.4657948067165168 + || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168 // Tor Browser bug - || nativeExpm1(-2e-17) != -2e-17 + || $expm1(-2e-17) != -2e-17 ) ? function expm1(x) { return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1; -} : nativeExpm1; +} : $expm1; diff --git a/packages/core-js/internals/math-fround.js b/packages/core-js/internals/math-fround.js index 39737a7912a0..f7615280e48d 100644 --- a/packages/core-js/internals/math-fround.js +++ b/packages/core-js/internals/math-fround.js @@ -13,6 +13,7 @@ var roundTiesToEven = function (n) { // `Math.fround` method implementation // https://tc39.es/ecma262/#sec-math.fround +// eslint-disable-next-line es/no-math-fround -- safe module.exports = Math.fround || function fround(x) { var $abs = abs(x); var $sign = sign(x); diff --git a/packages/core-js/internals/math-log1p.js b/packages/core-js/internals/math-log1p.js index 1f1a0c935869..438100c09df6 100644 --- a/packages/core-js/internals/math-log1p.js +++ b/packages/core-js/internals/math-log1p.js @@ -2,6 +2,7 @@ var log = Math.log; // `Math.log1p` method implementation // https://tc39.es/ecma262/#sec-math.log1p +// eslint-disable-next-line es/no-math-log1p -- safe module.exports = Math.log1p || function log1p(x) { return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log(1 + x); }; diff --git a/packages/core-js/internals/math-sign.js b/packages/core-js/internals/math-sign.js index 1e5b83e57d4c..c9080bd0f68f 100644 --- a/packages/core-js/internals/math-sign.js +++ b/packages/core-js/internals/math-sign.js @@ -1,5 +1,6 @@ // `Math.sign` method implementation // https://tc39.es/ecma262/#sec-math.sign +// eslint-disable-next-line es/no-math-sign -- safe module.exports = Math.sign || function sign(x) { // eslint-disable-next-line no-self-compare -- NaN check return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; diff --git a/packages/core-js/internals/native-symbol.js b/packages/core-js/internals/native-symbol.js index 86d5f4ee9f5a..03846ade2736 100644 --- a/packages/core-js/internals/native-symbol.js +++ b/packages/core-js/internals/native-symbol.js @@ -2,8 +2,9 @@ var IS_NODE = require('../internals/engine-is-node'); var V8_VERSION = require('../internals/engine-v8-version'); var fails = require('../internals/fails'); +// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing module.exports = !!Object.getOwnPropertySymbols && !fails(function () { - /* global Symbol -- required for testing */ + // eslint-disable-next-line es/no-symbol -- required for testing return !Symbol.sham && // Chrome 38 Symbol has incorrect toString conversion // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances diff --git a/packages/core-js/internals/number-is-finite.js b/packages/core-js/internals/number-is-finite.js index 721f9ab1f120..5a812546d380 100644 --- a/packages/core-js/internals/number-is-finite.js +++ b/packages/core-js/internals/number-is-finite.js @@ -4,6 +4,7 @@ var globalIsFinite = global.isFinite; // `Number.isFinite` method // https://tc39.es/ecma262/#sec-number.isfinite +// eslint-disable-next-line es/no-number-isfinite -- safe module.exports = Number.isFinite || function isFinite(it) { return typeof it == 'number' && globalIsFinite(it); }; diff --git a/packages/core-js/internals/object-assign.js b/packages/core-js/internals/object-assign.js index a3e8b4c8162c..584868464871 100644 --- a/packages/core-js/internals/object-assign.js +++ b/packages/core-js/internals/object-assign.js @@ -7,14 +7,16 @@ var propertyIsEnumerableModule = require('../internals/object-property-is-enumer var toObject = require('../internals/to-object'); var IndexedObject = require('../internals/indexed-object'); -var nativeAssign = Object.assign; +// eslint-disable-next-line es/no-object-assign -- safe +var $assign = Object.assign; +// eslint-disable-next-line es/no-object-defineproperty -- required for testing var defineProperty = Object.defineProperty; // `Object.assign` method // https://tc39.es/ecma262/#sec-object.assign -module.exports = !nativeAssign || fails(function () { +module.exports = !$assign || fails(function () { // should have correct order of operations (Edge bug) - if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', { + if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { enumerable: true, get: function () { defineProperty(this, 'b', { @@ -26,12 +28,12 @@ module.exports = !nativeAssign || fails(function () { // should work with symbols and should have deterministic property order (V8 bug) var A = {}; var B = {}; - /* global Symbol -- required for testing */ + // eslint-disable-next-line es/no-symbol -- safe var symbol = Symbol(); var alphabet = 'abcdefghijklmnopqrst'; A[symbol] = 7; alphabet.split('').forEach(function (chr) { B[chr] = chr; }); - return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; + return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet; }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` var T = toObject(target); var argumentsLength = arguments.length; @@ -49,4 +51,4 @@ module.exports = !nativeAssign || fails(function () { if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key]; } } return T; -} : nativeAssign; +} : $assign; diff --git a/packages/core-js/internals/object-define-properties.js b/packages/core-js/internals/object-define-properties.js index 64c7f5ddf5e1..b6ca89a09609 100644 --- a/packages/core-js/internals/object-define-properties.js +++ b/packages/core-js/internals/object-define-properties.js @@ -5,6 +5,7 @@ var objectKeys = require('../internals/object-keys'); // `Object.defineProperties` method // https://tc39.es/ecma262/#sec-object.defineproperties +// eslint-disable-next-line es/no-object-defineproperties -- safe module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var keys = objectKeys(Properties); diff --git a/packages/core-js/internals/object-define-property.js b/packages/core-js/internals/object-define-property.js index 8cd2b32ff257..52fb7826cc82 100644 --- a/packages/core-js/internals/object-define-property.js +++ b/packages/core-js/internals/object-define-property.js @@ -3,16 +3,17 @@ var IE8_DOM_DEFINE = require('../internals/ie8-dom-define'); var anObject = require('../internals/an-object'); var toPrimitive = require('../internals/to-primitive'); -var nativeDefineProperty = Object.defineProperty; +// eslint-disable-next-line es/no-object-defineproperty -- safe +var $defineProperty = Object.defineProperty; // `Object.defineProperty` method // https://tc39.es/ecma262/#sec-object.defineproperty -exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { +exports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (IE8_DOM_DEFINE) try { - return nativeDefineProperty(O, P, Attributes); + return $defineProperty(O, P, Attributes); } catch (error) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); if ('value' in Attributes) O[P] = Attributes.value; diff --git a/packages/core-js/internals/object-get-own-property-descriptor.js b/packages/core-js/internals/object-get-own-property-descriptor.js index f8d6b3871e76..d15d908a3c10 100644 --- a/packages/core-js/internals/object-get-own-property-descriptor.js +++ b/packages/core-js/internals/object-get-own-property-descriptor.js @@ -6,15 +6,16 @@ var toPrimitive = require('../internals/to-primitive'); var has = require('../internals/has'); var IE8_DOM_DEFINE = require('../internals/ie8-dom-define'); -var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor -exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { +exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPrimitive(P, true); if (IE8_DOM_DEFINE) try { - return nativeGetOwnPropertyDescriptor(O, P); + return $getOwnPropertyDescriptor(O, P); } catch (error) { /* empty */ } if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); }; diff --git a/packages/core-js/internals/object-get-own-property-names-external.js b/packages/core-js/internals/object-get-own-property-names-external.js index dfd94f1b673b..6993e9ec4d3a 100644 --- a/packages/core-js/internals/object-get-own-property-names-external.js +++ b/packages/core-js/internals/object-get-own-property-names-external.js @@ -1,5 +1,6 @@ +/* eslint-disable es/no-object-getownpropertynames -- safe */ var toIndexedObject = require('../internals/to-indexed-object'); -var nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f; +var $getOwnPropertyNames = require('../internals/object-get-own-property-names').f; var toString = {}.toString; @@ -8,7 +9,7 @@ var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNa var getWindowNames = function (it) { try { - return nativeGetOwnPropertyNames(it); + return $getOwnPropertyNames(it); } catch (error) { return windowNames.slice(); } @@ -18,5 +19,5 @@ var getWindowNames = function (it) { module.exports.f = function getOwnPropertyNames(it) { return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) - : nativeGetOwnPropertyNames(toIndexedObject(it)); + : $getOwnPropertyNames(toIndexedObject(it)); }; diff --git a/packages/core-js/internals/object-get-own-property-names.js b/packages/core-js/internals/object-get-own-property-names.js index 9dd23c9b9c8a..b330d1b4252b 100644 --- a/packages/core-js/internals/object-get-own-property-names.js +++ b/packages/core-js/internals/object-get-own-property-names.js @@ -5,6 +5,7 @@ var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method // https://tc39.es/ecma262/#sec-object.getownpropertynames +// eslint-disable-next-line es/no-object-getownpropertynames -- safe exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return internalObjectKeys(O, hiddenKeys); }; diff --git a/packages/core-js/internals/object-get-own-property-symbols.js b/packages/core-js/internals/object-get-own-property-symbols.js index bc0672905641..f55ead06cf14 100644 --- a/packages/core-js/internals/object-get-own-property-symbols.js +++ b/packages/core-js/internals/object-get-own-property-symbols.js @@ -1 +1,2 @@ +// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe exports.f = Object.getOwnPropertySymbols; diff --git a/packages/core-js/internals/object-get-prototype-of.js b/packages/core-js/internals/object-get-prototype-of.js index 73a1715c05e6..8ba3b00b96c9 100644 --- a/packages/core-js/internals/object-get-prototype-of.js +++ b/packages/core-js/internals/object-get-prototype-of.js @@ -8,6 +8,7 @@ var ObjectPrototype = Object.prototype; // `Object.getPrototypeOf` method // https://tc39.es/ecma262/#sec-object.getprototypeof +// eslint-disable-next-line es/no-object-getprototypeof -- safe module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { O = toObject(O); if (has(O, IE_PROTO)) return O[IE_PROTO]; diff --git a/packages/core-js/internals/object-keys.js b/packages/core-js/internals/object-keys.js index 2d5a94629098..bceea8b7a1bc 100644 --- a/packages/core-js/internals/object-keys.js +++ b/packages/core-js/internals/object-keys.js @@ -3,6 +3,7 @@ var enumBugKeys = require('../internals/enum-bug-keys'); // `Object.keys` method // https://tc39.es/ecma262/#sec-object.keys +// eslint-disable-next-line es/no-object-keys -- safe module.exports = Object.keys || function keys(O) { return internalObjectKeys(O, enumBugKeys); }; diff --git a/packages/core-js/internals/object-property-is-enumerable.js b/packages/core-js/internals/object-property-is-enumerable.js index 6b1066165c4a..f262d100ec57 100644 --- a/packages/core-js/internals/object-property-is-enumerable.js +++ b/packages/core-js/internals/object-property-is-enumerable.js @@ -1,13 +1,14 @@ 'use strict'; -var nativePropertyIsEnumerable = {}.propertyIsEnumerable; +var $propertyIsEnumerable = {}.propertyIsEnumerable; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug -var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); +var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); // `Object.prototype.propertyIsEnumerable` method implementation // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { var descriptor = getOwnPropertyDescriptor(this, V); return !!descriptor && descriptor.enumerable; -} : nativePropertyIsEnumerable; +} : $propertyIsEnumerable; diff --git a/packages/core-js/internals/object-set-prototype-of.js b/packages/core-js/internals/object-set-prototype-of.js index de4fc513ad92..49ec9962c28c 100644 --- a/packages/core-js/internals/object-set-prototype-of.js +++ b/packages/core-js/internals/object-set-prototype-of.js @@ -5,11 +5,13 @@ var aPossiblePrototype = require('../internals/a-possible-prototype'); // `Object.setPrototypeOf` method // https://tc39.es/ecma262/#sec-object.setprototypeof // Works with __proto__ only. Old v8 can't work with null proto objects. +// eslint-disable-next-line es/no-object-setprototypeof -- safe module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { var CORRECT_SETTER = false; var test = {}; var setter; try { + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; setter.call(test, []); CORRECT_SETTER = test instanceof Array; diff --git a/packages/core-js/internals/same-value.js b/packages/core-js/internals/same-value.js index 4095601bcd79..f364cdf208e9 100644 --- a/packages/core-js/internals/same-value.js +++ b/packages/core-js/internals/same-value.js @@ -1,5 +1,6 @@ // `SameValue` abstract operation // https://tc39.es/ecma262/#sec-samevalue +// eslint-disable-next-line es/no-object-is -- safe module.exports = Object.is || function is(x, y) { // eslint-disable-next-line no-self-compare -- NaN check return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; diff --git a/packages/core-js/internals/string-repeat.js b/packages/core-js/internals/string-repeat.js index 10795280b007..065be8f821a8 100644 --- a/packages/core-js/internals/string-repeat.js +++ b/packages/core-js/internals/string-repeat.js @@ -4,7 +4,7 @@ var requireObjectCoercible = require('../internals/require-object-coercible'); // `String.prototype.repeat` method implementation // https://tc39.es/ecma262/#sec-string.prototype.repeat -module.exports = ''.repeat || function repeat(count) { +module.exports = function repeat(count) { var str = String(requireObjectCoercible(this)); var result = ''; var n = toInteger(count); diff --git a/packages/core-js/internals/use-symbol-as-uid.js b/packages/core-js/internals/use-symbol-as-uid.js index 402890cf10e5..e2f56dafaad3 100644 --- a/packages/core-js/internals/use-symbol-as-uid.js +++ b/packages/core-js/internals/use-symbol-as-uid.js @@ -1,6 +1,6 @@ +/* eslint-disable es/no-symbol -- required for testing */ var NATIVE_SYMBOL = require('../internals/native-symbol'); module.exports = NATIVE_SYMBOL - /* global Symbol -- safe */ && !Symbol.sham && typeof Symbol.iterator == 'symbol'; diff --git a/packages/core-js/modules/es.array.for-each.js b/packages/core-js/modules/es.array.for-each.js index 0c7203d595cd..55934d03017f 100644 --- a/packages/core-js/modules/es.array.for-each.js +++ b/packages/core-js/modules/es.array.for-each.js @@ -4,6 +4,7 @@ var forEach = require('../internals/array-for-each'); // `Array.prototype.forEach` method // https://tc39.es/ecma262/#sec-array.prototype.foreach +// eslint-disable-next-line es/no-array-prototype-foreach -- safe $({ target: 'Array', proto: true, forced: [].forEach != forEach }, { forEach: forEach }); diff --git a/packages/core-js/modules/es.array.from.js b/packages/core-js/modules/es.array.from.js index b565cda456e0..241f6ac866c3 100644 --- a/packages/core-js/modules/es.array.from.js +++ b/packages/core-js/modules/es.array.from.js @@ -3,6 +3,7 @@ var from = require('../internals/array-from'); var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { + // eslint-disable-next-line es/no-array-from -- required for testing Array.from(iterable); }); diff --git a/packages/core-js/modules/es.array.index-of.js b/packages/core-js/modules/es.array.index-of.js index acd76131995b..85fe91df3508 100644 --- a/packages/core-js/modules/es.array.index-of.js +++ b/packages/core-js/modules/es.array.index-of.js @@ -1,4 +1,5 @@ 'use strict'; +/* eslint-disable es/no-array-prototype-indexof -- required for testing */ var $ = require('../internals/export'); var $indexOf = require('../internals/array-includes').indexOf; var arrayMethodIsStrict = require('../internals/array-method-is-strict'); diff --git a/packages/core-js/modules/es.array.last-index-of.js b/packages/core-js/modules/es.array.last-index-of.js index 95431fb27984..7ee20dfdf1c0 100644 --- a/packages/core-js/modules/es.array.last-index-of.js +++ b/packages/core-js/modules/es.array.last-index-of.js @@ -3,6 +3,7 @@ var lastIndexOf = require('../internals/array-last-index-of'); // `Array.prototype.lastIndexOf` method // https://tc39.es/ecma262/#sec-array.prototype.lastindexof +// eslint-disable-next-line es/no-array-prototype-lastindexof -- required for testing $({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, { lastIndexOf: lastIndexOf }); diff --git a/packages/core-js/modules/es.array.of.js b/packages/core-js/modules/es.array.of.js index 3bbba0f2b38d..a814da5bc299 100644 --- a/packages/core-js/modules/es.array.of.js +++ b/packages/core-js/modules/es.array.of.js @@ -5,6 +5,7 @@ var createProperty = require('../internals/create-property'); var ISNT_GENERIC = fails(function () { function F() { /* empty */ } + // eslint-disable-next-line es/no-array-of -- required for testing return !(Array.of.call(F) instanceof F); }); diff --git a/packages/core-js/modules/es.math.acosh.js b/packages/core-js/modules/es.math.acosh.js index 7e0752760721..33b630be1048 100644 --- a/packages/core-js/modules/es.math.acosh.js +++ b/packages/core-js/modules/es.math.acosh.js @@ -1,16 +1,17 @@ var $ = require('../internals/export'); var log1p = require('../internals/math-log1p'); -var nativeAcosh = Math.acosh; +// eslint-disable-next-line es/no-math-acosh -- required for testing +var $acosh = Math.acosh; var log = Math.log; var sqrt = Math.sqrt; var LN2 = Math.LN2; -var FORCED = !nativeAcosh +var FORCED = !$acosh // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 - || Math.floor(nativeAcosh(Number.MAX_VALUE)) != 710 + || Math.floor($acosh(Number.MAX_VALUE)) != 710 // Tor Browser bug: Math.acosh(Infinity) -> NaN - || nativeAcosh(Infinity) != Infinity; + || $acosh(Infinity) != Infinity; // `Math.acosh` method // https://tc39.es/ecma262/#sec-math.acosh diff --git a/packages/core-js/modules/es.math.asinh.js b/packages/core-js/modules/es.math.asinh.js index a2a6878f25c7..41e803010dcb 100644 --- a/packages/core-js/modules/es.math.asinh.js +++ b/packages/core-js/modules/es.math.asinh.js @@ -1,6 +1,7 @@ var $ = require('../internals/export'); -var nativeAsinh = Math.asinh; +// eslint-disable-next-line es/no-math-asinh -- required for testing +var $asinh = Math.asinh; var log = Math.log; var sqrt = Math.sqrt; @@ -11,6 +12,6 @@ function asinh(x) { // `Math.asinh` method // https://tc39.es/ecma262/#sec-math.asinh // Tor Browser bug: Math.asinh(0) -> -0 -$({ target: 'Math', stat: true, forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) }, { +$({ target: 'Math', stat: true, forced: !($asinh && 1 / $asinh(0) > 0) }, { asinh: asinh }); diff --git a/packages/core-js/modules/es.math.atanh.js b/packages/core-js/modules/es.math.atanh.js index e5a57cae064c..0605c7721441 100644 --- a/packages/core-js/modules/es.math.atanh.js +++ b/packages/core-js/modules/es.math.atanh.js @@ -1,12 +1,13 @@ var $ = require('../internals/export'); -var nativeAtanh = Math.atanh; +// eslint-disable-next-line es/no-math-atanh -- required for testing +var $atanh = Math.atanh; var log = Math.log; // `Math.atanh` method // https://tc39.es/ecma262/#sec-math.atanh // Tor Browser bug: Math.atanh(-0) -> 0 -$({ target: 'Math', stat: true, forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) }, { +$({ target: 'Math', stat: true, forced: !($atanh && 1 / $atanh(-0) < 0) }, { atanh: function atanh(x) { return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2; } diff --git a/packages/core-js/modules/es.math.cosh.js b/packages/core-js/modules/es.math.cosh.js index 5a5eeb50a8ca..4c666c093425 100644 --- a/packages/core-js/modules/es.math.cosh.js +++ b/packages/core-js/modules/es.math.cosh.js @@ -1,13 +1,14 @@ var $ = require('../internals/export'); var expm1 = require('../internals/math-expm1'); -var nativeCosh = Math.cosh; +// eslint-disable-next-line es/no-math-cosh -- required for testing +var $cosh = Math.cosh; var abs = Math.abs; var E = Math.E; // `Math.cosh` method // https://tc39.es/ecma262/#sec-math.cosh -$({ target: 'Math', stat: true, forced: !nativeCosh || nativeCosh(710) === Infinity }, { +$({ target: 'Math', stat: true, forced: !$cosh || $cosh(710) === Infinity }, { cosh: function cosh(x) { var t = expm1(abs(x) - 1) + 1; return (t + 1 / (t * E * E)) * (E / 2); diff --git a/packages/core-js/modules/es.math.expm1.js b/packages/core-js/modules/es.math.expm1.js index 7c755fc8e4c7..1ae920be1a7f 100644 --- a/packages/core-js/modules/es.math.expm1.js +++ b/packages/core-js/modules/es.math.expm1.js @@ -3,4 +3,5 @@ var expm1 = require('../internals/math-expm1'); // `Math.expm1` method // https://tc39.es/ecma262/#sec-math.expm1 +// eslint-disable-next-line es/no-math-expm1 -- required for testing $({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 }); diff --git a/packages/core-js/modules/es.math.hypot.js b/packages/core-js/modules/es.math.hypot.js index 78c92f9e001a..30338d6b1f18 100644 --- a/packages/core-js/modules/es.math.hypot.js +++ b/packages/core-js/modules/es.math.hypot.js @@ -1,5 +1,6 @@ var $ = require('../internals/export'); +// eslint-disable-next-line es/no-math-hypot -- required for testing var $hypot = Math.hypot; var abs = Math.abs; var sqrt = Math.sqrt; diff --git a/packages/core-js/modules/es.math.imul.js b/packages/core-js/modules/es.math.imul.js index 6cfe7179eb56..3ccdfbd79f7f 100644 --- a/packages/core-js/modules/es.math.imul.js +++ b/packages/core-js/modules/es.math.imul.js @@ -1,10 +1,11 @@ var $ = require('../internals/export'); var fails = require('../internals/fails'); -var nativeImul = Math.imul; +// eslint-disable-next-line es/no-math-imul -- required for testing +var $imul = Math.imul; var FORCED = fails(function () { - return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2; + return $imul(0xFFFFFFFF, 5) != -5 || $imul.length != 2; }); // `Math.imul` method diff --git a/packages/core-js/modules/es.math.sinh.js b/packages/core-js/modules/es.math.sinh.js index 95ff8d1289ec..669a905faf91 100644 --- a/packages/core-js/modules/es.math.sinh.js +++ b/packages/core-js/modules/es.math.sinh.js @@ -7,6 +7,7 @@ var exp = Math.exp; var E = Math.E; var FORCED = fails(function () { + // eslint-disable-next-line es/no-math-sinh -- required for testing return Math.sinh(-2e-17) != -2e-17; }); diff --git a/packages/core-js/modules/es.number.parse-float.js b/packages/core-js/modules/es.number.parse-float.js index be91ecfd8430..1c89294b8d02 100644 --- a/packages/core-js/modules/es.number.parse-float.js +++ b/packages/core-js/modules/es.number.parse-float.js @@ -3,6 +3,7 @@ var parseFloat = require('../internals/number-parse-float'); // `Number.parseFloat` method // https://tc39.es/ecma262/#sec-number.parseFloat +// eslint-disable-next-line es/no-number-parsefloat -- required for testing $({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, { parseFloat: parseFloat }); diff --git a/packages/core-js/modules/es.number.parse-int.js b/packages/core-js/modules/es.number.parse-int.js index e965c4258426..7c6773da6287 100644 --- a/packages/core-js/modules/es.number.parse-int.js +++ b/packages/core-js/modules/es.number.parse-int.js @@ -3,6 +3,7 @@ var parseInt = require('../internals/number-parse-int'); // `Number.parseInt` method // https://tc39.es/ecma262/#sec-number.parseint +// eslint-disable-next-line es/no-number-parseint -- required for testing $({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, { parseInt: parseInt }); diff --git a/packages/core-js/modules/es.object.assign.js b/packages/core-js/modules/es.object.assign.js index 0a9f105bdb03..636ca6a94f09 100644 --- a/packages/core-js/modules/es.object.assign.js +++ b/packages/core-js/modules/es.object.assign.js @@ -3,6 +3,7 @@ var assign = require('../internals/object-assign'); // `Object.assign` method // https://tc39.es/ecma262/#sec-object.assign +// eslint-disable-next-line es/no-object-assign -- required for testing $({ target: 'Object', stat: true, forced: Object.assign !== assign }, { assign: assign }); diff --git a/packages/core-js/modules/es.object.freeze.js b/packages/core-js/modules/es.object.freeze.js index 6c5457e4dedd..b9fea85024e5 100644 --- a/packages/core-js/modules/es.object.freeze.js +++ b/packages/core-js/modules/es.object.freeze.js @@ -4,13 +4,14 @@ var fails = require('../internals/fails'); var isObject = require('../internals/is-object'); var onFreeze = require('../internals/internal-metadata').onFreeze; -var nativeFreeze = Object.freeze; -var FAILS_ON_PRIMITIVES = fails(function () { nativeFreeze(1); }); +// eslint-disable-next-line es/no-object-freeze -- safe +var $freeze = Object.freeze; +var FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); }); // `Object.freeze` method // https://tc39.es/ecma262/#sec-object.freeze $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { freeze: function freeze(it) { - return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it; + return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it; } }); diff --git a/packages/core-js/modules/es.object.get-own-property-names.js b/packages/core-js/modules/es.object.get-own-property-names.js index 0c154e2194a4..0bf415221ae5 100644 --- a/packages/core-js/modules/es.object.get-own-property-names.js +++ b/packages/core-js/modules/es.object.get-own-property-names.js @@ -1,11 +1,12 @@ var $ = require('../internals/export'); var fails = require('../internals/fails'); -var nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names-external').f; +var getOwnPropertyNames = require('../internals/object-get-own-property-names-external').f; +// eslint-disable-next-line es/no-object-getownpropertynames -- required for testing var FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); }); // `Object.getOwnPropertyNames` method // https://tc39.es/ecma262/#sec-object.getownpropertynames $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { - getOwnPropertyNames: nativeGetOwnPropertyNames + getOwnPropertyNames: getOwnPropertyNames }); diff --git a/packages/core-js/modules/es.object.is-extensible.js b/packages/core-js/modules/es.object.is-extensible.js index cf0e76c82b6e..fb5122997db0 100644 --- a/packages/core-js/modules/es.object.is-extensible.js +++ b/packages/core-js/modules/es.object.is-extensible.js @@ -2,13 +2,14 @@ var $ = require('../internals/export'); var fails = require('../internals/fails'); var isObject = require('../internals/is-object'); -var nativeIsExtensible = Object.isExtensible; -var FAILS_ON_PRIMITIVES = fails(function () { nativeIsExtensible(1); }); +// eslint-disable-next-line es/no-object-isextensible -- safe +var $isExtensible = Object.isExtensible; +var FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); }); // `Object.isExtensible` method // https://tc39.es/ecma262/#sec-object.isextensible $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { isExtensible: function isExtensible(it) { - return isObject(it) ? nativeIsExtensible ? nativeIsExtensible(it) : true : false; + return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false; } }); diff --git a/packages/core-js/modules/es.object.is-frozen.js b/packages/core-js/modules/es.object.is-frozen.js index 472e5e34e6cb..d292a98aca69 100644 --- a/packages/core-js/modules/es.object.is-frozen.js +++ b/packages/core-js/modules/es.object.is-frozen.js @@ -2,13 +2,14 @@ var $ = require('../internals/export'); var fails = require('../internals/fails'); var isObject = require('../internals/is-object'); -var nativeIsFrozen = Object.isFrozen; -var FAILS_ON_PRIMITIVES = fails(function () { nativeIsFrozen(1); }); +// eslint-disable-next-line es/no-object-isfrozen -- safe +var $isFrozen = Object.isFrozen; +var FAILS_ON_PRIMITIVES = fails(function () { $isFrozen(1); }); // `Object.isFrozen` method // https://tc39.es/ecma262/#sec-object.isfrozen $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { isFrozen: function isFrozen(it) { - return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true; + return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true; } }); diff --git a/packages/core-js/modules/es.object.is-sealed.js b/packages/core-js/modules/es.object.is-sealed.js index c3869e1aeba8..98b1538e8b15 100644 --- a/packages/core-js/modules/es.object.is-sealed.js +++ b/packages/core-js/modules/es.object.is-sealed.js @@ -2,13 +2,14 @@ var $ = require('../internals/export'); var fails = require('../internals/fails'); var isObject = require('../internals/is-object'); -var nativeIsSealed = Object.isSealed; -var FAILS_ON_PRIMITIVES = fails(function () { nativeIsSealed(1); }); +// eslint-disable-next-line es/no-object-issealed -- safe +var $isSealed = Object.isSealed; +var FAILS_ON_PRIMITIVES = fails(function () { $isSealed(1); }); // `Object.isSealed` method // https://tc39.es/ecma262/#sec-object.issealed $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { isSealed: function isSealed(it) { - return isObject(it) ? nativeIsSealed ? nativeIsSealed(it) : false : true; + return isObject(it) ? $isSealed ? $isSealed(it) : false : true; } }); diff --git a/packages/core-js/modules/es.object.prevent-extensions.js b/packages/core-js/modules/es.object.prevent-extensions.js index b1dcda42bc98..fab864e1bebb 100644 --- a/packages/core-js/modules/es.object.prevent-extensions.js +++ b/packages/core-js/modules/es.object.prevent-extensions.js @@ -4,13 +4,14 @@ var onFreeze = require('../internals/internal-metadata').onFreeze; var FREEZING = require('../internals/freezing'); var fails = require('../internals/fails'); -var nativePreventExtensions = Object.preventExtensions; -var FAILS_ON_PRIMITIVES = fails(function () { nativePreventExtensions(1); }); +// eslint-disable-next-line es/no-object-preventextensions -- safe +var $preventExtensions = Object.preventExtensions; +var FAILS_ON_PRIMITIVES = fails(function () { $preventExtensions(1); }); // `Object.preventExtensions` method // https://tc39.es/ecma262/#sec-object.preventextensions $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { preventExtensions: function preventExtensions(it) { - return nativePreventExtensions && isObject(it) ? nativePreventExtensions(onFreeze(it)) : it; + return $preventExtensions && isObject(it) ? $preventExtensions(onFreeze(it)) : it; } }); diff --git a/packages/core-js/modules/es.object.seal.js b/packages/core-js/modules/es.object.seal.js index 87449898fbee..79d3c83d6cdb 100644 --- a/packages/core-js/modules/es.object.seal.js +++ b/packages/core-js/modules/es.object.seal.js @@ -4,13 +4,14 @@ var onFreeze = require('../internals/internal-metadata').onFreeze; var FREEZING = require('../internals/freezing'); var fails = require('../internals/fails'); -var nativeSeal = Object.seal; -var FAILS_ON_PRIMITIVES = fails(function () { nativeSeal(1); }); +// eslint-disable-next-line es/no-object-seal -- safe +var $seal = Object.seal; +var FAILS_ON_PRIMITIVES = fails(function () { $seal(1); }); // `Object.seal` method // https://tc39.es/ecma262/#sec-object.seal $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { seal: function seal(it) { - return nativeSeal && isObject(it) ? nativeSeal(onFreeze(it)) : it; + return $seal && isObject(it) ? $seal(onFreeze(it)) : it; } }); diff --git a/packages/core-js/modules/es.reflect.define-property.js b/packages/core-js/modules/es.reflect.define-property.js index bdf768813d5d..86c6b45ec2fc 100644 --- a/packages/core-js/modules/es.reflect.define-property.js +++ b/packages/core-js/modules/es.reflect.define-property.js @@ -7,7 +7,7 @@ var fails = require('../internals/fails'); // MS Edge has broken Reflect.defineProperty - throwing instead of returning false var ERROR_INSTEAD_OF_FALSE = fails(function () { - /* global Reflect -- required for testing */ + // eslint-disable-next-line es/no-reflect -- required for testing Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 }); }); diff --git a/packages/core-js/modules/es.reflect.is-extensible.js b/packages/core-js/modules/es.reflect.is-extensible.js index 4fc5125b842c..1bf2c9292643 100644 --- a/packages/core-js/modules/es.reflect.is-extensible.js +++ b/packages/core-js/modules/es.reflect.is-extensible.js @@ -1,6 +1,7 @@ var $ = require('../internals/export'); var anObject = require('../internals/an-object'); +// eslint-disable-next-line es/no-object-isextensible -- safe var objectIsExtensible = Object.isExtensible; // `Reflect.isExtensible` method diff --git a/packages/core-js/modules/es.reflect.set.js b/packages/core-js/modules/es.reflect.set.js index 47376efddbd1..ec258d990ab9 100644 --- a/packages/core-js/modules/es.reflect.set.js +++ b/packages/core-js/modules/es.reflect.set.js @@ -37,7 +37,7 @@ function set(target, propertyKey, V /* , receiver */) { var MS_EDGE_BUG = fails(function () { var Constructor = function () { /* empty */ }; var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true }); - /* global Reflect -- required for testing */ + // eslint-disable-next-line es/no-reflect -- required for testing return Reflect.set(Constructor.prototype, 'a', 1, object) !== false; }); diff --git a/packages/core-js/modules/es.regexp.flags.js b/packages/core-js/modules/es.regexp.flags.js index f90605cf8a68..2270ba3140fe 100644 --- a/packages/core-js/modules/es.regexp.flags.js +++ b/packages/core-js/modules/es.regexp.flags.js @@ -5,6 +5,7 @@ var UNSUPPORTED_Y = require('../internals/regexp-sticky-helpers').UNSUPPORTED_Y; // `RegExp.prototype.flags` getter // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags +// eslint-disable-next-line es/no-regexp-prototype-flags -- required for testing if (DESCRIPTORS && (/./g.flags != 'g' || UNSUPPORTED_Y)) { objectDefinePropertyModule.f(RegExp.prototype, 'flags', { configurable: true, diff --git a/packages/core-js/modules/es.string.ends-with.js b/packages/core-js/modules/es.string.ends-with.js index 74d6a278e014..de0ff3e713a9 100644 --- a/packages/core-js/modules/es.string.ends-with.js +++ b/packages/core-js/modules/es.string.ends-with.js @@ -7,7 +7,8 @@ var requireObjectCoercible = require('../internals/require-object-coercible'); var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); var IS_PURE = require('../internals/is-pure'); -var nativeEndsWith = ''.endsWith; +// eslint-disable-next-line es/no-string-prototype-endswith -- safe +var $endsWith = ''.endsWith; var min = Math.min; var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith'); @@ -27,8 +28,8 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE var len = toLength(that.length); var end = endPosition === undefined ? len : min(toLength(endPosition), len); var search = String(searchString); - return nativeEndsWith - ? nativeEndsWith.call(that, search, end) + return $endsWith + ? $endsWith.call(that, search, end) : that.slice(end - search.length, end) === search; } }); diff --git a/packages/core-js/modules/es.string.from-code-point.js b/packages/core-js/modules/es.string.from-code-point.js index 04c27bba4698..ea9206fbf666 100644 --- a/packages/core-js/modules/es.string.from-code-point.js +++ b/packages/core-js/modules/es.string.from-code-point.js @@ -2,10 +2,11 @@ var $ = require('../internals/export'); var toAbsoluteIndex = require('../internals/to-absolute-index'); var fromCharCode = String.fromCharCode; -var nativeFromCodePoint = String.fromCodePoint; +// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing +var $fromCodePoint = String.fromCodePoint; // length should be 1, old FF problem -var INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1; +var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1; // `String.fromCodePoint` method // https://tc39.es/ecma262/#sec-string.fromcodepoint diff --git a/packages/core-js/modules/es.string.match-all.js b/packages/core-js/modules/es.string.match-all.js index fe1e94a8d969..6e7392b39fc6 100644 --- a/packages/core-js/modules/es.string.match-all.js +++ b/packages/core-js/modules/es.string.match-all.js @@ -1,4 +1,5 @@ 'use strict'; +/* eslint-disable es/no-string-prototype-matchall -- safe */ var $ = require('../internals/export'); var createIteratorConstructor = require('../internals/create-iterator-constructor'); var requireObjectCoercible = require('../internals/require-object-coercible'); diff --git a/packages/core-js/modules/es.string.starts-with.js b/packages/core-js/modules/es.string.starts-with.js index e037cc88ba61..3edfd743042d 100644 --- a/packages/core-js/modules/es.string.starts-with.js +++ b/packages/core-js/modules/es.string.starts-with.js @@ -7,7 +7,8 @@ var requireObjectCoercible = require('../internals/require-object-coercible'); var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); var IS_PURE = require('../internals/is-pure'); -var nativeStartsWith = ''.startsWith; +// eslint-disable-next-line es/no-string-prototype-startswith -- safe +var $startsWith = ''.startsWith; var min = Math.min; var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); @@ -25,8 +26,8 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE notARegExp(searchString); var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); var search = String(searchString); - return nativeStartsWith - ? nativeStartsWith.call(that, search, index) + return $startsWith + ? $startsWith.call(that, search, index) : that.slice(index, index + search.length) === search; } }); diff --git a/packages/core-js/modules/es.string.trim-end.js b/packages/core-js/modules/es.string.trim-end.js index 3940fedf4c5f..fdbfcd6e467c 100644 --- a/packages/core-js/modules/es.string.trim-end.js +++ b/packages/core-js/modules/es.string.trim-end.js @@ -7,6 +7,7 @@ var FORCED = forcedStringTrimMethod('trimEnd'); var trimEnd = FORCED ? function trimEnd() { return $trimEnd(this); +// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe } : ''.trimEnd; // `String.prototype.{ trimEnd, trimRight }` methods diff --git a/packages/core-js/modules/es.string.trim-start.js b/packages/core-js/modules/es.string.trim-start.js index 997bd888a92b..8bc4fb82fe11 100644 --- a/packages/core-js/modules/es.string.trim-start.js +++ b/packages/core-js/modules/es.string.trim-start.js @@ -7,6 +7,7 @@ var FORCED = forcedStringTrimMethod('trimStart'); var trimStart = FORCED ? function trimStart() { return $trimStart(this); +// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe } : ''.trimStart; // `String.prototype.{ trimStart, trimLeft }` methods diff --git a/packages/core-js/modules/es.typed-array.set.js b/packages/core-js/modules/es.typed-array.set.js index 1a1e2503f34b..0f2a8ced0426 100644 --- a/packages/core-js/modules/es.typed-array.set.js +++ b/packages/core-js/modules/es.typed-array.set.js @@ -9,7 +9,7 @@ var aTypedArray = ArrayBufferViewCore.aTypedArray; var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; var FORCED = fails(function () { - /* global Int8Array -- safe */ + // eslint-disable-next-line es/no-typed-arrays -- required for testing new Int8Array(1).set({}); }); diff --git a/packages/core-js/modules/es.typed-array.slice.js b/packages/core-js/modules/es.typed-array.slice.js index d7f850faa4e9..b9f5e24af4f3 100644 --- a/packages/core-js/modules/es.typed-array.slice.js +++ b/packages/core-js/modules/es.typed-array.slice.js @@ -9,7 +9,7 @@ var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; var $slice = [].slice; var FORCED = fails(function () { - /* global Int8Array -- safe */ + // eslint-disable-next-line es/no-typed-arrays -- required for testing new Int8Array(1).slice(); }); diff --git a/packages/core-js/modules/es.weak-map.js b/packages/core-js/modules/es.weak-map.js index dd2520841bd0..384de6571d24 100644 --- a/packages/core-js/modules/es.weak-map.js +++ b/packages/core-js/modules/es.weak-map.js @@ -9,6 +9,7 @@ var enforceIternalState = require('../internals/internal-state').enforce; var NATIVE_WEAK_MAP = require('../internals/native-weak-map'); var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; +// eslint-disable-next-line es/no-object-isextensible -- safe var isExtensible = Object.isExtensible; var InternalWeakMap; diff --git a/packages/core-js/modules/esnext.array.is-template-object.js b/packages/core-js/modules/esnext.array.is-template-object.js index a1d84288065d..1aafcbec466f 100644 --- a/packages/core-js/modules/esnext.array.is-template-object.js +++ b/packages/core-js/modules/esnext.array.is-template-object.js @@ -1,6 +1,7 @@ var $ = require('../internals/export'); var isArray = require('../internals/is-array'); +// eslint-disable-next-line es/no-object-isfrozen -- safe var isFrozen = Object.isFrozen; var isFrozenStringArray = function (array, allowUndefined) { diff --git a/packages/core-js/modules/esnext.bigint.range.js b/packages/core-js/modules/esnext.bigint.range.js index 477e0856c8bd..46c0aca54292 100644 --- a/packages/core-js/modules/esnext.bigint.range.js +++ b/packages/core-js/modules/esnext.bigint.range.js @@ -1,4 +1,5 @@ 'use strict'; +/* eslint-disable es/no-bigint -- safe */ var $ = require('../internals/export'); var NumericRangeIterator = require('../internals/numeric-range-iterator'); @@ -7,7 +8,6 @@ var NumericRangeIterator = require('../internals/numeric-range-iterator'); if (typeof BigInt == 'function') { $({ target: 'BigInt', stat: true }, { range: function range(start, end, option) { - /* global BigInt -- safe */ return new NumericRangeIterator(start, end, option, 'bigint', BigInt(0), BigInt(1)); } }); diff --git a/tests/compat/tests.js b/tests/compat/tests.js index 812fdee90bbc..bb29bbc61df0 100644 --- a/tests/compat/tests.js +++ b/tests/compat/tests.js @@ -1153,7 +1153,6 @@ GLOBAL.tests = { return AsyncIterator.prototype.toArray; }, 'esnext.bigint.range': function () { - /* global BigInt -- required for testing */ return BigInt.range; }, 'esnext.composite-key': function () { diff --git a/tests/promises-aplus/adapter.js b/tests/promises-aplus/adapter.js index b3bc0c57fe85..03bb399c740f 100644 --- a/tests/promises-aplus/adapter.js +++ b/tests/promises-aplus/adapter.js @@ -1,28 +1,29 @@ +'use strict'; delete global.Promise; -var Promise = require('core-js').Promise; -var assert = require('assert'); +const { Promise } = require('core-js'); +const assert = require('assert'); module.exports = { - deferred: function () { - var deferred = {}; - deferred.promise = new Promise(function (resolve, reject) { + deferred() { + const deferred = {}; + deferred.promise = new Promise((resolve, reject) => { deferred.resolve = resolve; deferred.reject = reject; }); return deferred; }, - resolved: function (value) { + resolved(value) { return Promise.resolve(value); }, - rejected: function (reason) { + rejected(reason) { return Promise.reject(reason); }, - defineGlobalPromise: function (global) { + defineGlobalPromise(global) { global.Promise = Promise; global.assert = assert; }, - removeGlobalPromise: function () { + removeGlobalPromise() { delete global.Promise; - } + }, }; diff --git a/tests/pure/es.promise.js b/tests/pure/es.promise.js index ed63356f1a32..c46cf80aaf46 100644 --- a/tests/pure/es.promise.js +++ b/tests/pure/es.promise.js @@ -44,6 +44,7 @@ if (DESCRIPTORS) QUnit.test('Promise operations order', assert => { const promise2 = new Promise(r => { resolve2 = r; }); + // eslint-disable-next-line es/no-object-defineproperty -- safe resolve2(Object.defineProperty({}, 'then', { get() { result += 'D'; diff --git a/tests/pure/esnext.bigint.range.js b/tests/pure/esnext.bigint.range.js index 1a7b40ebc110..57bd6c0d2ca6 100644 --- a/tests/pure/esnext.bigint.range.js +++ b/tests/pure/esnext.bigint.range.js @@ -1,4 +1,4 @@ -/* global BigInt -- safe */ +/* eslint-disable es/no-bigint -- safe */ import from from 'core-js-pure/features/array/from'; import range from 'core-js-pure/features/bigint/range'; @@ -48,6 +48,7 @@ if (typeof BigInt == 'function') QUnit.test('BigInt.range', assert => { assert.same(iterator.inclusive, true); iterator = range(BigInt(0), BigInt(5)); + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe assert.throws(() => Object.getOwnPropertyDescriptor(iterator, 'start').call({}), TypeError); assert.throws(() => range(Infinity, BigInt(10), BigInt(0)), TypeError); diff --git a/tests/pure/esnext.number.range.js b/tests/pure/esnext.number.range.js index 6381fa9ba589..5cf040e7aa02 100644 --- a/tests/pure/esnext.number.range.js +++ b/tests/pure/esnext.number.range.js @@ -1,7 +1,7 @@ import from from 'core-js-pure/features/array/from'; import range from 'core-js-pure/features/number/range'; -if (typeof BigInt === 'function') QUnit.test('range', assert => { +QUnit.test('range', assert => { assert.isFunction(range); assert.name(range, 'range'); assert.arity(range, 3); @@ -57,6 +57,7 @@ if (typeof BigInt === 'function') QUnit.test('range', assert => { assert.same(iterator.inclusive, true); iterator = range(0, 5); + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe assert.throws(() => Object.getOwnPropertyDescriptor(iterator, 'start').call({}), TypeError); assert.throws(() => range(Infinity, 10, 0), RangeError); diff --git a/tests/pure/web.url.js b/tests/pure/web.url.js index ab6d5d6f3bb0..70b25b27f5a0 100644 --- a/tests/pure/web.url.js +++ b/tests/pure/web.url.js @@ -1,3 +1,4 @@ +/* eslint-disable es/no-object-getownpropertydescriptor -- safe */ import { DESCRIPTORS } from '../helpers/constants'; import urlTestData from '../wpt-url-resources/urltestdata'; import settersTestData from '../wpt-url-resources/setters'; diff --git a/tests/tests/esnext.bigint.range.js b/tests/tests/esnext.bigint.range.js index 223ee5162c9f..006b95de20f6 100644 --- a/tests/tests/esnext.bigint.range.js +++ b/tests/tests/esnext.bigint.range.js @@ -1,5 +1,4 @@ -/* global BigInt -- safe */ - +/* eslint-disable es/no-bigint -- safe */ if (typeof BigInt == 'function') QUnit.test('BigInt.range', assert => { const { range } = BigInt; const { from } = Array; diff --git a/tests/worker/runner.js b/tests/worker/runner.js index 301e45b30ed2..28fc76b076c3 100644 --- a/tests/worker/runner.js +++ b/tests/worker/runner.js @@ -3,10 +3,11 @@ importScripts('../../packages/core-js-bundle/index.js'); postMessage(typeof core !== 'undefined'); -setImmediate(() => { +setImmediate(function () { postMessage('setImmediate'); }); -Promise.resolve().then(() => { +// eslint-disable-next-line es/no-promise -- safe +Promise.resolve().then(function () { postMessage('Promise.resolve'); }); diff --git a/tests/worker/test.js b/tests/worker/test.js index c3094de0925e..9d4b8dacce29 100644 --- a/tests/worker/test.js +++ b/tests/worker/test.js @@ -1,10 +1,12 @@ 'use strict'; -const worker = new Worker('./worker/runner.js'); -worker.addEventListener('error', e => { +var worker = new Worker('./worker/runner.js'); + +worker.addEventListener('error', function (e) { // eslint-disable-next-line no-console -- output console.error(e); }); -worker.addEventListener('message', message => { + +worker.addEventListener('message', function (message) { // eslint-disable-next-line no-console -- output console.log(message.data); });