diff --git a/codemods/array.prototype.find/index.js b/codemods/array.prototype.find/index.js index 8a7ae356..6a8119d0 100644 --- a/codemods/array.prototype.find/index.js +++ b/codemods/array.prototype.find/index.js @@ -36,7 +36,7 @@ export default function (options) { root, identifierName, 'find', - (args) => args.length === 2, + (args) => args.length >= 2, ); for (const imp of imports) { diff --git a/codemods/array.prototype.findindex/index.js b/codemods/array.prototype.findindex/index.js index a5da33d3..fd1a8828 100644 --- a/codemods/array.prototype.findindex/index.js +++ b/codemods/array.prototype.findindex/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.findindex'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.findindex', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.findindex', - 'findIndex', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'findIndex', + (args) => args.length >= 2, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.findlast/index.js b/codemods/array.prototype.findlast/index.js index 6ee24fdb..6aa6b5ae 100644 --- a/codemods/array.prototype.findlast/index.js +++ b/codemods/array.prototype.findlast/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.findlast'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.findlast', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.findlast', - 'findLast', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'findLast', + (args) => args.length >= 2, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.findlastindex/index.js b/codemods/array.prototype.findlastindex/index.js index fbbabd11..748f752b 100644 --- a/codemods/array.prototype.findlastindex/index.js +++ b/codemods/array.prototype.findlastindex/index.js @@ -36,7 +36,7 @@ export default function (options) { root, identifierName, 'findLastIndex', - (args) => args.length === 2, + (args) => args.length >= 2, ); for (const imp of imports) { diff --git a/codemods/array.prototype.flatmap/index.js b/codemods/array.prototype.flatmap/index.js index 78f7bc19..a858ed2b 100644 --- a/codemods/array.prototype.flatmap/index.js +++ b/codemods/array.prototype.flatmap/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.flatmap'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.flatmap', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.flatmap', - 'flatMap', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'flatMap', + (args) => args.length >= 1, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.foreach/index.js b/codemods/array.prototype.foreach/index.js index 47eaf170..f6db6412 100644 --- a/codemods/array.prototype.foreach/index.js +++ b/codemods/array.prototype.foreach/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.foreach'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.foreach', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.foreach', - 'forEach', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'forEach', + (args) => args.length >= 1, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.indexof/index.js b/codemods/array.prototype.indexof/index.js index b187edd2..d409b148 100644 --- a/codemods/array.prototype.indexof/index.js +++ b/codemods/array.prototype.indexof/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.indexof'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.indexof', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.indexof', - 'indexOf', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'indexOf', + (args) => args.length >= 2, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.join/index.js b/codemods/array.prototype.join/index.js index 9e089044..500d6591 100644 --- a/codemods/array.prototype.join/index.js +++ b/codemods/array.prototype.join/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.join'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.join', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.join', - 'join', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'join', + (args) => args.length >= 1, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.keys/index.js b/codemods/array.prototype.keys/index.js index c58e089e..87e8751f 100644 --- a/codemods/array.prototype.keys/index.js +++ b/codemods/array.prototype.keys/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.keys'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.keys', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.keys', - 'keys', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'keys', + (args) => args.length === 1, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.lastindexof/index.js b/codemods/array.prototype.lastindexof/index.js index 2d7b1754..6f38efd5 100644 --- a/codemods/array.prototype.lastindexof/index.js +++ b/codemods/array.prototype.lastindexof/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.lastindexof'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.lastindexof', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.lastindexof', - 'lastIndexOf', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'lastIndexOf', + (args) => args.length >= 2, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.map/index.js b/codemods/array.prototype.map/index.js index 145c5103..6204522a 100644 --- a/codemods/array.prototype.map/index.js +++ b/codemods/array.prototype.map/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.map'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,15 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.map', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); + + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( + root, + identifierName, + 'map', + (args) => args.length >= 1, + ); - const dirty = transformArrayMethod('array.prototype.map', 'map', root, j); + for (const imp of imports) { + edits.push(imp.replace('')); + } - return dirty ? root.toSource(options) : file.source; + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.push/index.js b/codemods/array.prototype.push/index.js index e1155d64..259180b9 100644 --- a/codemods/array.prototype.push/index.js +++ b/codemods/array.prototype.push/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.push'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.push', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.push', - 'push', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'push', + (args) => args.length >= 1, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.reduce/index.js b/codemods/array.prototype.reduce/index.js index 4e6ae41a..fd4b5ef3 100644 --- a/codemods/array.prototype.reduce/index.js +++ b/codemods/array.prototype.reduce/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.reduce'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.reduce', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.reduce', - 'reduce', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'reduce', + (args) => args.length >= 1, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.reduceright/index.js b/codemods/array.prototype.reduceright/index.js index d3e6ef80..54a34a7e 100644 --- a/codemods/array.prototype.reduceright/index.js +++ b/codemods/array.prototype.reduceright/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { removeImport } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.reduceright'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,42 +17,33 @@ import { removeImport } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.reduceright', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); - let dirtyFlag = false; + const ast = ts.parse(file.source); + const root = ast.root(); + + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } - const { identifier } = removeImport( - 'array.prototype.reduceright', + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'reduceRight', + (args) => args.length >= 1, ); - root - .find(j.CallExpression, { - callee: { - type: 'Identifier', - name: identifier, - }, - }) - .forEach((path) => { - const args = path.value.arguments; - if (args.length > 1) { - const [array, ...fnArguments] = args; - - const newExpression = j.callExpression( - //@ts-ignore - j.memberExpression(array, j.identifier('reduceRight')), - [...fnArguments], - ); - j(path).replaceWith(newExpression); - dirtyFlag = true; - } - }); - - return dirtyFlag ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.slice/index.js b/codemods/array.prototype.slice/index.js index 1a34f40f..7715425d 100644 --- a/codemods/array.prototype.slice/index.js +++ b/codemods/array.prototype.slice/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { removeImport } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.slice'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,38 +17,33 @@ import { removeImport } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.slice', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); - let dirtyFlag = false; - - const { identifier } = removeImport('array.prototype.slice', root, j); - - root - .find(j.CallExpression, { - callee: { - type: 'Identifier', - name: identifier, - }, - }) - .forEach((path) => { - const args = path.value.arguments; - if (args.length > 1) { - const [array, ...boundaries] = args; - - const newExpression = j.callExpression( - //@ts-ignore - j.memberExpression(array, j.identifier('slice')), - [...boundaries], - ); - j(path).replaceWith(newExpression); - dirtyFlag = true; - } - }); - - return dirtyFlag ? root.toSource(options) : file.source; + const ast = ts.parse(file.source); + const root = ast.root(); + + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( + root, + identifierName, + 'slice', + (args) => args.length >= 1, + ); + + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.some/index.js b/codemods/array.prototype.some/index.js index a6a84821..fd9062bd 100644 --- a/codemods/array.prototype.some/index.js +++ b/codemods/array.prototype.some/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.some'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.some', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.some', - 'some', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'some', + (args) => args.length >= 2, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.splice/index.js b/codemods/array.prototype.splice/index.js index 5b46a579..5a83bb96 100644 --- a/codemods/array.prototype.splice/index.js +++ b/codemods/array.prototype.splice/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { removeImport } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.splice'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,38 +17,33 @@ import { removeImport } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.splice', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); - let dirtyFlag = false; - - const { identifier } = removeImport('array.prototype.splice', root, j); - - root - .find(j.CallExpression, { - callee: { - type: 'Identifier', - name: identifier, - }, - }) - .forEach((path) => { - const args = path.value.arguments; - if (args.length > 1) { - const [array, ...elements] = args; - - const newExpression = j.callExpression( - //@ts-ignore - j.memberExpression(array, j.identifier('splice')), - [...elements], - ); - j(path).replaceWith(newExpression); - dirtyFlag = true; - } - }); - - return dirtyFlag ? root.toSource(options) : file.source; + const ast = ts.parse(file.source); + const root = ast.root(); + + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( + root, + identifierName, + 'splice', + (args) => args.length >= 1, + ); + + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.toreversed/index.js b/codemods/array.prototype.toreversed/index.js index 4b8aa2ba..afee9259 100644 --- a/codemods/array.prototype.toreversed/index.js +++ b/codemods/array.prototype.toreversed/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.toreversed'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.toreversed', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.toreversed', - 'toReversed', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'toReversed', + (args) => args.length >= 1, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.tosorted/index.js b/codemods/array.prototype.tosorted/index.js index ea9d27d9..ebf7af29 100644 --- a/codemods/array.prototype.tosorted/index.js +++ b/codemods/array.prototype.tosorted/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.tosorted'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.tosorted', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.tosorted', - 'toSorted', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'toSorted', + (args) => args.length >= 1, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.tospliced/index.js b/codemods/array.prototype.tospliced/index.js index 188ee19d..29bd3e3c 100644 --- a/codemods/array.prototype.tospliced/index.js +++ b/codemods/array.prototype.tospliced/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.tospliced'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.tospliced', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.tospliced', - 'toSpliced', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'toSpliced', + (args) => args.length >= 1, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.unshift/index.js b/codemods/array.prototype.unshift/index.js index ba5bb925..87736dc5 100644 --- a/codemods/array.prototype.unshift/index.js +++ b/codemods/array.prototype.unshift/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { removeImport } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.unshift'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,38 +17,33 @@ import { removeImport } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.unshift', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); - let dirtyFlag = false; - - const { identifier } = removeImport('array.prototype.unshift', root, j); - - root - .find(j.CallExpression, { - callee: { - type: 'Identifier', - name: identifier, - }, - }) - .forEach((path) => { - const args = path.value.arguments; - if (args.length > 1) { - const [array, ...elements] = args; - - const newExpression = j.callExpression( - //@ts-ignore - j.memberExpression(array, j.identifier('unshift')), - [...elements], - ); - j(path).replaceWith(newExpression); - dirtyFlag = true; - } - }); - - return dirtyFlag ? root.toSource(options) : file.source; + const ast = ts.parse(file.source); + const root = ast.root(); + + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( + root, + identifierName, + 'unshift', + (args) => args.length >= 1, + ); + + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.values/index.js b/codemods/array.prototype.values/index.js index e41c11c2..d3065fe3 100644 --- a/codemods/array.prototype.values/index.js +++ b/codemods/array.prototype.values/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.values'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.values', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.values', - 'values', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'values', + (args) => args.length === 1, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/array.prototype.with/index.js b/codemods/array.prototype.with/index.js index 06945a86..10932c0d 100644 --- a/codemods/array.prototype.with/index.js +++ b/codemods/array.prototype.with/index.js @@ -1,5 +1,10 @@ -import jscodeshift from 'jscodeshift'; -import { transformArrayMethod } from '../shared.js'; +import { ts } from '@ast-grep/napi'; +import { + computePolyfillMethodCallReplacementEdits, + findDefaultImportIdentifier, +} from '../shared-ast-grep.js'; + +const MODULE_NAME = 'array.prototype.with'; /** * @typedef {import('../../types.js').Codemod} Codemod @@ -12,20 +17,33 @@ import { transformArrayMethod } from '../shared.js'; */ export default function (options) { return { - name: 'array.prototype.with', + name: MODULE_NAME, to: 'native', transform: ({ file }) => { - const j = jscodeshift; - const root = j(file.source); + const ast = ts.parse(file.source); + const root = ast.root(); - const dirty = transformArrayMethod( - 'array.prototype.with', - 'with', + const { imports, identifierName } = findDefaultImportIdentifier( + root, + MODULE_NAME, + ); + + if (!identifierName) { + return file.source; + } + + const edits = computePolyfillMethodCallReplacementEdits( root, - j, + identifierName, + 'with', + (args) => args.length === 3, ); - return dirty ? root.toSource(options) : file.source; + for (const imp of imports) { + edits.push(imp.replace('')); + } + + return edits.length > 0 ? root.commitEdits(edits) : file.source; }, }; } diff --git a/codemods/shared.js b/codemods/shared.js index 13fc694e..0e125c60 100644 --- a/codemods/shared.js +++ b/codemods/shared.js @@ -311,45 +311,6 @@ export function replaceDefaultImport(name, newSpecifier, newName, root, j) { return { identifier }; } -/** - * @param {string} method - e.g. `array.prototype.flatMap` - * @param {string} identifierName - e.g. `flatMap` - * @param {import("jscodeshift").Collection} root - package name to remove import/require calls for - * @param {import("jscodeshift").JSCodeshift} j - jscodeshift instance - * @returns {boolean} - true if the method was found and transformed, false otherwise - */ -export function transformArrayMethod(method, identifierName, root, j) { - const { identifier, dirtyFlag: importDirtyFlag } = removeImport( - method, - root, - j, - ); - - let dirtyFlag = importDirtyFlag; - - root - .find(j.CallExpression, { - callee: { - type: 'Identifier', - name: identifier, - }, - }) - .forEach((path) => { - const [arrayArg, ...otherArgs] = path.node.arguments; - if (j.Identifier.check(arrayArg) || j.ArrayExpression.check(arrayArg)) { - path.replace( - j.callExpression( - j.memberExpression(arrayArg, j.identifier(identifierName)), - otherArgs, - ), - ); - dirtyFlag = true; - } - }); - - return dirtyFlag; -} - /** * @param {import("jscodeshift").ASTPath} path - jscodeshift path * @param {string} instanceName - e.g. `Uint8Array` diff --git a/test/fixtures/array.prototype.findindex/case-1/after.js b/test/fixtures/array.prototype.findindex/case-1/after.js index a6414614..a129804e 100644 --- a/test/fixtures/array.prototype.findindex/case-1/after.js +++ b/test/fixtures/array.prototype.findindex/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.findindex/case-1/result.js b/test/fixtures/array.prototype.findindex/case-1/result.js index a6414614..a129804e 100644 --- a/test/fixtures/array.prototype.findindex/case-1/result.js +++ b/test/fixtures/array.prototype.findindex/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.findindex/case-2/after.js b/test/fixtures/array.prototype.findindex/case-2/after.js index a6414614..a129804e 100644 --- a/test/fixtures/array.prototype.findindex/case-2/after.js +++ b/test/fixtures/array.prototype.findindex/case-2/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.findindex/case-2/result.js b/test/fixtures/array.prototype.findindex/case-2/result.js index a6414614..a129804e 100644 --- a/test/fixtures/array.prototype.findindex/case-2/result.js +++ b/test/fixtures/array.prototype.findindex/case-2/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.findindex/case-3/after.js b/test/fixtures/array.prototype.findindex/case-3/after.js index a6414614..a129804e 100644 --- a/test/fixtures/array.prototype.findindex/case-3/after.js +++ b/test/fixtures/array.prototype.findindex/case-3/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.findindex/case-3/result.js b/test/fixtures/array.prototype.findindex/case-3/result.js index a6414614..a129804e 100644 --- a/test/fixtures/array.prototype.findindex/case-3/result.js +++ b/test/fixtures/array.prototype.findindex/case-3/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.findindex/case-4/after.js b/test/fixtures/array.prototype.findindex/case-4/after.js index a6414614..a129804e 100644 --- a/test/fixtures/array.prototype.findindex/case-4/after.js +++ b/test/fixtures/array.prototype.findindex/case-4/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.findindex/case-4/result.js b/test/fixtures/array.prototype.findindex/case-4/result.js index a6414614..a129804e 100644 --- a/test/fixtures/array.prototype.findindex/case-4/result.js +++ b/test/fixtures/array.prototype.findindex/case-4/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.findlast/case-1/after.js b/test/fixtures/array.prototype.findlast/case-1/after.js index dc95abdc..8d2789f8 100644 --- a/test/fixtures/array.prototype.findlast/case-1/after.js +++ b/test/fixtures/array.prototype.findlast/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var arr = [1, [2], [], 3, [[4]]]; diff --git a/test/fixtures/array.prototype.findlast/case-1/result.js b/test/fixtures/array.prototype.findlast/case-1/result.js index dc95abdc..8d2789f8 100644 --- a/test/fixtures/array.prototype.findlast/case-1/result.js +++ b/test/fixtures/array.prototype.findlast/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var arr = [1, [2], [], 3, [[4]]]; diff --git a/test/fixtures/array.prototype.flatmap/case-1/after.js b/test/fixtures/array.prototype.flatmap/case-1/after.js index 166b9948..56327a45 100644 --- a/test/fixtures/array.prototype.flatmap/case-1/after.js +++ b/test/fixtures/array.prototype.flatmap/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.flatmap/case-1/result.js b/test/fixtures/array.prototype.flatmap/case-1/result.js index 166b9948..56327a45 100644 --- a/test/fixtures/array.prototype.flatmap/case-1/result.js +++ b/test/fixtures/array.prototype.flatmap/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.flatmap/case-2/after.js b/test/fixtures/array.prototype.flatmap/case-2/after.js index 166b9948..56327a45 100644 --- a/test/fixtures/array.prototype.flatmap/case-2/after.js +++ b/test/fixtures/array.prototype.flatmap/case-2/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.flatmap/case-2/result.js b/test/fixtures/array.prototype.flatmap/case-2/result.js index 166b9948..56327a45 100644 --- a/test/fixtures/array.prototype.flatmap/case-2/result.js +++ b/test/fixtures/array.prototype.flatmap/case-2/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.flatmap/case-3/after.js b/test/fixtures/array.prototype.flatmap/case-3/after.js index 166b9948..56327a45 100644 --- a/test/fixtures/array.prototype.flatmap/case-3/after.js +++ b/test/fixtures/array.prototype.flatmap/case-3/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.flatmap/case-3/result.js b/test/fixtures/array.prototype.flatmap/case-3/result.js index 166b9948..56327a45 100644 --- a/test/fixtures/array.prototype.flatmap/case-3/result.js +++ b/test/fixtures/array.prototype.flatmap/case-3/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.flatmap/case-4/after.js b/test/fixtures/array.prototype.flatmap/case-4/after.js index 166b9948..56327a45 100644 --- a/test/fixtures/array.prototype.flatmap/case-4/after.js +++ b/test/fixtures/array.prototype.flatmap/case-4/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.flatmap/case-4/result.js b/test/fixtures/array.prototype.flatmap/case-4/result.js index 166b9948..56327a45 100644 --- a/test/fixtures/array.prototype.flatmap/case-4/result.js +++ b/test/fixtures/array.prototype.flatmap/case-4/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.foreach/case-1/after.js b/test/fixtures/array.prototype.foreach/case-1/after.js index 155d7125..65d13e74 100644 --- a/test/fixtures/array.prototype.foreach/case-1/after.js +++ b/test/fixtures/array.prototype.foreach/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.foreach/case-1/result.js b/test/fixtures/array.prototype.foreach/case-1/result.js index 155d7125..65d13e74 100644 --- a/test/fixtures/array.prototype.foreach/case-1/result.js +++ b/test/fixtures/array.prototype.foreach/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.foreach/case-2/after.js b/test/fixtures/array.prototype.foreach/case-2/after.js index 155d7125..65d13e74 100644 --- a/test/fixtures/array.prototype.foreach/case-2/after.js +++ b/test/fixtures/array.prototype.foreach/case-2/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.foreach/case-2/result.js b/test/fixtures/array.prototype.foreach/case-2/result.js index 155d7125..65d13e74 100644 --- a/test/fixtures/array.prototype.foreach/case-2/result.js +++ b/test/fixtures/array.prototype.foreach/case-2/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.foreach/case-3/after.js b/test/fixtures/array.prototype.foreach/case-3/after.js index 155d7125..65d13e74 100644 --- a/test/fixtures/array.prototype.foreach/case-3/after.js +++ b/test/fixtures/array.prototype.foreach/case-3/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.foreach/case-3/result.js b/test/fixtures/array.prototype.foreach/case-3/result.js index 155d7125..65d13e74 100644 --- a/test/fixtures/array.prototype.foreach/case-3/result.js +++ b/test/fixtures/array.prototype.foreach/case-3/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.foreach/case-4/after.js b/test/fixtures/array.prototype.foreach/case-4/after.js index 155d7125..65d13e74 100644 --- a/test/fixtures/array.prototype.foreach/case-4/after.js +++ b/test/fixtures/array.prototype.foreach/case-4/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.foreach/case-4/result.js b/test/fixtures/array.prototype.foreach/case-4/result.js index 155d7125..65d13e74 100644 --- a/test/fixtures/array.prototype.foreach/case-4/result.js +++ b/test/fixtures/array.prototype.foreach/case-4/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.indexof/case-1/after.js b/test/fixtures/array.prototype.indexof/case-1/after.js index 6da56a9d..18e9251b 100644 --- a/test/fixtures/array.prototype.indexof/case-1/after.js +++ b/test/fixtures/array.prototype.indexof/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); assert.equal([1, 2, 3].indexOf(2), 1); diff --git a/test/fixtures/array.prototype.indexof/case-1/result.js b/test/fixtures/array.prototype.indexof/case-1/result.js index 6da56a9d..18e9251b 100644 --- a/test/fixtures/array.prototype.indexof/case-1/result.js +++ b/test/fixtures/array.prototype.indexof/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); assert.equal([1, 2, 3].indexOf(2), 1); diff --git a/test/fixtures/array.prototype.join/case-1/after.js b/test/fixtures/array.prototype.join/case-1/after.js index b32e669b..b48d1e1c 100644 --- a/test/fixtures/array.prototype.join/case-1/after.js +++ b/test/fixtures/array.prototype.join/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.join/case-1/result.js b/test/fixtures/array.prototype.join/case-1/result.js index b32e669b..b48d1e1c 100644 --- a/test/fixtures/array.prototype.join/case-1/result.js +++ b/test/fixtures/array.prototype.join/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.keys/case-1/after.js b/test/fixtures/array.prototype.keys/case-1/after.js index 012fd830..5939eb10 100644 --- a/test/fixtures/array.prototype.keys/case-1/after.js +++ b/test/fixtures/array.prototype.keys/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); assert.deepStrictEqual(Array.from([1, 2, 3].keys()), [0, 1, 2]); diff --git a/test/fixtures/array.prototype.keys/case-1/result.js b/test/fixtures/array.prototype.keys/case-1/result.js index 012fd830..5939eb10 100644 --- a/test/fixtures/array.prototype.keys/case-1/result.js +++ b/test/fixtures/array.prototype.keys/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); assert.deepStrictEqual(Array.from([1, 2, 3].keys()), [0, 1, 2]); diff --git a/test/fixtures/array.prototype.lastindexof/case-1/after.js b/test/fixtures/array.prototype.lastindexof/case-1/after.js index fa9c18c9..25918ac8 100644 --- a/test/fixtures/array.prototype.lastindexof/case-1/after.js +++ b/test/fixtures/array.prototype.lastindexof/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal([1, 2, 3].lastIndexOf(2), 1); diff --git a/test/fixtures/array.prototype.lastindexof/case-1/result.js b/test/fixtures/array.prototype.lastindexof/case-1/result.js index fa9c18c9..25918ac8 100644 --- a/test/fixtures/array.prototype.lastindexof/case-1/result.js +++ b/test/fixtures/array.prototype.lastindexof/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal([1, 2, 3].lastIndexOf(2), 1); diff --git a/test/fixtures/array.prototype.lastindexof/case-2/after.js b/test/fixtures/array.prototype.lastindexof/case-2/after.js index fa9c18c9..25918ac8 100644 --- a/test/fixtures/array.prototype.lastindexof/case-2/after.js +++ b/test/fixtures/array.prototype.lastindexof/case-2/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal([1, 2, 3].lastIndexOf(2), 1); diff --git a/test/fixtures/array.prototype.lastindexof/case-2/result.js b/test/fixtures/array.prototype.lastindexof/case-2/result.js index fa9c18c9..25918ac8 100644 --- a/test/fixtures/array.prototype.lastindexof/case-2/result.js +++ b/test/fixtures/array.prototype.lastindexof/case-2/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal([1, 2, 3].lastIndexOf(2), 1); diff --git a/test/fixtures/array.prototype.map/case-1/after.js b/test/fixtures/array.prototype.map/case-1/after.js index eb111438..4c6e1e75 100644 --- a/test/fixtures/array.prototype.map/case-1/after.js +++ b/test/fixtures/array.prototype.map/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.map/case-1/result.js b/test/fixtures/array.prototype.map/case-1/result.js index eb111438..4c6e1e75 100644 --- a/test/fixtures/array.prototype.map/case-1/result.js +++ b/test/fixtures/array.prototype.map/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.map/case-2/after.js b/test/fixtures/array.prototype.map/case-2/after.js index eb111438..4c6e1e75 100644 --- a/test/fixtures/array.prototype.map/case-2/after.js +++ b/test/fixtures/array.prototype.map/case-2/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.map/case-2/result.js b/test/fixtures/array.prototype.map/case-2/result.js index eb111438..4c6e1e75 100644 --- a/test/fixtures/array.prototype.map/case-2/result.js +++ b/test/fixtures/array.prototype.map/case-2/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.map/case-3/after.js b/test/fixtures/array.prototype.map/case-3/after.js index eb111438..4c6e1e75 100644 --- a/test/fixtures/array.prototype.map/case-3/after.js +++ b/test/fixtures/array.prototype.map/case-3/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.map/case-3/result.js b/test/fixtures/array.prototype.map/case-3/result.js index eb111438..4c6e1e75 100644 --- a/test/fixtures/array.prototype.map/case-3/result.js +++ b/test/fixtures/array.prototype.map/case-3/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.map/case-4/after.js b/test/fixtures/array.prototype.map/case-4/after.js index eb111438..4c6e1e75 100644 --- a/test/fixtures/array.prototype.map/case-4/after.js +++ b/test/fixtures/array.prototype.map/case-4/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.map/case-4/result.js b/test/fixtures/array.prototype.map/case-4/result.js index eb111438..4c6e1e75 100644 --- a/test/fixtures/array.prototype.map/case-4/result.js +++ b/test/fixtures/array.prototype.map/case-4/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.deepEqual( diff --git a/test/fixtures/array.prototype.push/case-1/after.js b/test/fixtures/array.prototype.push/case-1/after.js index 733b46d3..2b596100 100644 --- a/test/fixtures/array.prototype.push/case-1/after.js +++ b/test/fixtures/array.prototype.push/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.push/case-1/result.js b/test/fixtures/array.prototype.push/case-1/result.js index 733b46d3..2b596100 100644 --- a/test/fixtures/array.prototype.push/case-1/result.js +++ b/test/fixtures/array.prototype.push/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.reduce/case-1/after.js b/test/fixtures/array.prototype.reduce/case-1/after.js index 5c47db61..8e9599cf 100644 --- a/test/fixtures/array.prototype.reduce/case-1/after.js +++ b/test/fixtures/array.prototype.reduce/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); assert.equal( @@ -8,7 +9,7 @@ assert.equal( ); assert.equal( [1, 2, 3].reduce(function (prev, x) { - return prev + x; - }, 1), + return prev + x; + }, 1), 7, ); diff --git a/test/fixtures/array.prototype.reduce/case-1/result.js b/test/fixtures/array.prototype.reduce/case-1/result.js index 5c47db61..8e9599cf 100644 --- a/test/fixtures/array.prototype.reduce/case-1/result.js +++ b/test/fixtures/array.prototype.reduce/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); assert.equal( @@ -8,7 +9,7 @@ assert.equal( ); assert.equal( [1, 2, 3].reduce(function (prev, x) { - return prev + x; - }, 1), + return prev + x; + }, 1), 7, ); diff --git a/test/fixtures/array.prototype.reduceright/case-1/after.js b/test/fixtures/array.prototype.reduceright/case-1/after.js index c73235c5..352b6eb2 100644 --- a/test/fixtures/array.prototype.reduceright/case-1/after.js +++ b/test/fixtures/array.prototype.reduceright/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal( @@ -8,7 +9,7 @@ assert.equal( ); assert.equal( [1, 2, 3].reduceRight(function (prev, x) { - return prev + x; - }, 1), + return prev + x; + }, 1), 7, ); diff --git a/test/fixtures/array.prototype.reduceright/case-1/result.js b/test/fixtures/array.prototype.reduceright/case-1/result.js index c73235c5..352b6eb2 100644 --- a/test/fixtures/array.prototype.reduceright/case-1/result.js +++ b/test/fixtures/array.prototype.reduceright/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal( @@ -8,7 +9,7 @@ assert.equal( ); assert.equal( [1, 2, 3].reduceRight(function (prev, x) { - return prev + x; - }, 1), + return prev + x; + }, 1), 7, ); diff --git a/test/fixtures/array.prototype.reduceright/case-2/after.js b/test/fixtures/array.prototype.reduceright/case-2/after.js index c73235c5..352b6eb2 100644 --- a/test/fixtures/array.prototype.reduceright/case-2/after.js +++ b/test/fixtures/array.prototype.reduceright/case-2/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal( @@ -8,7 +9,7 @@ assert.equal( ); assert.equal( [1, 2, 3].reduceRight(function (prev, x) { - return prev + x; - }, 1), + return prev + x; + }, 1), 7, ); diff --git a/test/fixtures/array.prototype.reduceright/case-2/result.js b/test/fixtures/array.prototype.reduceright/case-2/result.js index c73235c5..352b6eb2 100644 --- a/test/fixtures/array.prototype.reduceright/case-2/result.js +++ b/test/fixtures/array.prototype.reduceright/case-2/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal( @@ -8,7 +9,7 @@ assert.equal( ); assert.equal( [1, 2, 3].reduceRight(function (prev, x) { - return prev + x; - }, 1), + return prev + x; + }, 1), 7, ); diff --git a/test/fixtures/array.prototype.reduceright/case-3/after.js b/test/fixtures/array.prototype.reduceright/case-3/after.js index c73235c5..352b6eb2 100644 --- a/test/fixtures/array.prototype.reduceright/case-3/after.js +++ b/test/fixtures/array.prototype.reduceright/case-3/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal( @@ -8,7 +9,7 @@ assert.equal( ); assert.equal( [1, 2, 3].reduceRight(function (prev, x) { - return prev + x; - }, 1), + return prev + x; + }, 1), 7, ); diff --git a/test/fixtures/array.prototype.reduceright/case-3/result.js b/test/fixtures/array.prototype.reduceright/case-3/result.js index c73235c5..352b6eb2 100644 --- a/test/fixtures/array.prototype.reduceright/case-3/result.js +++ b/test/fixtures/array.prototype.reduceright/case-3/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal( @@ -8,7 +9,7 @@ assert.equal( ); assert.equal( [1, 2, 3].reduceRight(function (prev, x) { - return prev + x; - }, 1), + return prev + x; + }, 1), 7, ); diff --git a/test/fixtures/array.prototype.reduceright/case-4/after.js b/test/fixtures/array.prototype.reduceright/case-4/after.js index c73235c5..352b6eb2 100644 --- a/test/fixtures/array.prototype.reduceright/case-4/after.js +++ b/test/fixtures/array.prototype.reduceright/case-4/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal( @@ -8,7 +9,7 @@ assert.equal( ); assert.equal( [1, 2, 3].reduceRight(function (prev, x) { - return prev + x; - }, 1), + return prev + x; + }, 1), 7, ); diff --git a/test/fixtures/array.prototype.reduceright/case-4/result.js b/test/fixtures/array.prototype.reduceright/case-4/result.js index c73235c5..352b6eb2 100644 --- a/test/fixtures/array.prototype.reduceright/case-4/result.js +++ b/test/fixtures/array.prototype.reduceright/case-4/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); assert.equal( @@ -8,7 +9,7 @@ assert.equal( ); assert.equal( [1, 2, 3].reduceRight(function (prev, x) { - return prev + x; - }, 1), + return prev + x; + }, 1), 7, ); diff --git a/test/fixtures/array.prototype.slice/case-1/after.js b/test/fixtures/array.prototype.slice/case-1/after.js index f55ec8bd..59cbd5b6 100644 --- a/test/fixtures/array.prototype.slice/case-1/after.js +++ b/test/fixtures/array.prototype.slice/case-1/after.js @@ -1,5 +1,7 @@ + var assert = require('assert'); var a = [1, 2, 3]; assert.deepEqual(a.slice(1, 2), [2]); assert.deepEqual(a.slice(-2), [2, 3]); +assert.deepEqual(a.slice(), [1, 2, 3]); diff --git a/test/fixtures/array.prototype.slice/case-1/before.js b/test/fixtures/array.prototype.slice/case-1/before.js index 2a49464b..f38c0810 100644 --- a/test/fixtures/array.prototype.slice/case-1/before.js +++ b/test/fixtures/array.prototype.slice/case-1/before.js @@ -4,3 +4,4 @@ var assert = require('assert'); var a = [1, 2, 3]; assert.deepEqual(slice(a, 1, 2), [2]); assert.deepEqual(slice(a, -2), [2, 3]); +assert.deepEqual(slice(a), [1, 2, 3]); diff --git a/test/fixtures/array.prototype.slice/case-1/result.js b/test/fixtures/array.prototype.slice/case-1/result.js index f55ec8bd..59cbd5b6 100644 --- a/test/fixtures/array.prototype.slice/case-1/result.js +++ b/test/fixtures/array.prototype.slice/case-1/result.js @@ -1,5 +1,7 @@ + var assert = require('assert'); var a = [1, 2, 3]; assert.deepEqual(a.slice(1, 2), [2]); assert.deepEqual(a.slice(-2), [2, 3]); +assert.deepEqual(a.slice(), [1, 2, 3]); diff --git a/test/fixtures/array.prototype.slice/case-2/after.js b/test/fixtures/array.prototype.slice/case-2/after.js index f55ec8bd..f522b2b8 100644 --- a/test/fixtures/array.prototype.slice/case-2/after.js +++ b/test/fixtures/array.prototype.slice/case-2/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.slice/case-2/result.js b/test/fixtures/array.prototype.slice/case-2/result.js index f55ec8bd..f522b2b8 100644 --- a/test/fixtures/array.prototype.slice/case-2/result.js +++ b/test/fixtures/array.prototype.slice/case-2/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.slice/case-3/after.js b/test/fixtures/array.prototype.slice/case-3/after.js index f55ec8bd..f522b2b8 100644 --- a/test/fixtures/array.prototype.slice/case-3/after.js +++ b/test/fixtures/array.prototype.slice/case-3/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.slice/case-3/result.js b/test/fixtures/array.prototype.slice/case-3/result.js index f55ec8bd..f522b2b8 100644 --- a/test/fixtures/array.prototype.slice/case-3/result.js +++ b/test/fixtures/array.prototype.slice/case-3/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.slice/case-4/after.js b/test/fixtures/array.prototype.slice/case-4/after.js index f55ec8bd..f522b2b8 100644 --- a/test/fixtures/array.prototype.slice/case-4/after.js +++ b/test/fixtures/array.prototype.slice/case-4/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.slice/case-4/result.js b/test/fixtures/array.prototype.slice/case-4/result.js index f55ec8bd..f522b2b8 100644 --- a/test/fixtures/array.prototype.slice/case-4/result.js +++ b/test/fixtures/array.prototype.slice/case-4/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.some/case-1/after.js b/test/fixtures/array.prototype.some/case-1/after.js index 35a51cff..22deecb1 100644 --- a/test/fixtures/array.prototype.some/case-1/after.js +++ b/test/fixtures/array.prototype.some/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.some/case-1/result.js b/test/fixtures/array.prototype.some/case-1/result.js index 35a51cff..22deecb1 100644 --- a/test/fixtures/array.prototype.some/case-1/result.js +++ b/test/fixtures/array.prototype.some/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.some/case-2/after.js b/test/fixtures/array.prototype.some/case-2/after.js index 35a51cff..22deecb1 100644 --- a/test/fixtures/array.prototype.some/case-2/after.js +++ b/test/fixtures/array.prototype.some/case-2/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.some/case-2/result.js b/test/fixtures/array.prototype.some/case-2/result.js index 35a51cff..22deecb1 100644 --- a/test/fixtures/array.prototype.some/case-2/result.js +++ b/test/fixtures/array.prototype.some/case-2/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.some/case-3/after.js b/test/fixtures/array.prototype.some/case-3/after.js index 35a51cff..22deecb1 100644 --- a/test/fixtures/array.prototype.some/case-3/after.js +++ b/test/fixtures/array.prototype.some/case-3/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.some/case-3/result.js b/test/fixtures/array.prototype.some/case-3/result.js index 35a51cff..22deecb1 100644 --- a/test/fixtures/array.prototype.some/case-3/result.js +++ b/test/fixtures/array.prototype.some/case-3/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.some/case-4/after.js b/test/fixtures/array.prototype.some/case-4/after.js index 35a51cff..22deecb1 100644 --- a/test/fixtures/array.prototype.some/case-4/after.js +++ b/test/fixtures/array.prototype.some/case-4/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.some/case-4/result.js b/test/fixtures/array.prototype.some/case-4/result.js index 35a51cff..22deecb1 100644 --- a/test/fixtures/array.prototype.some/case-4/result.js +++ b/test/fixtures/array.prototype.some/case-4/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 2, 3]; diff --git a/test/fixtures/array.prototype.splice/case-1/after.js b/test/fixtures/array.prototype.splice/case-1/after.js index 20c8a9e9..2ed9508d 100644 --- a/test/fixtures/array.prototype.splice/case-1/after.js +++ b/test/fixtures/array.prototype.splice/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.splice/case-1/result.js b/test/fixtures/array.prototype.splice/case-1/result.js index 20c8a9e9..2ed9508d 100644 --- a/test/fixtures/array.prototype.splice/case-1/result.js +++ b/test/fixtures/array.prototype.splice/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.splice/case-2/after.js b/test/fixtures/array.prototype.splice/case-2/after.js index 20c8a9e9..2ed9508d 100644 --- a/test/fixtures/array.prototype.splice/case-2/after.js +++ b/test/fixtures/array.prototype.splice/case-2/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.splice/case-2/result.js b/test/fixtures/array.prototype.splice/case-2/result.js index 20c8a9e9..2ed9508d 100644 --- a/test/fixtures/array.prototype.splice/case-2/result.js +++ b/test/fixtures/array.prototype.splice/case-2/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.splice/case-3/after.js b/test/fixtures/array.prototype.splice/case-3/after.js index 20c8a9e9..2ed9508d 100644 --- a/test/fixtures/array.prototype.splice/case-3/after.js +++ b/test/fixtures/array.prototype.splice/case-3/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.splice/case-3/result.js b/test/fixtures/array.prototype.splice/case-3/result.js index 20c8a9e9..2ed9508d 100644 --- a/test/fixtures/array.prototype.splice/case-3/result.js +++ b/test/fixtures/array.prototype.splice/case-3/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.splice/case-4/after.js b/test/fixtures/array.prototype.splice/case-4/after.js index 20c8a9e9..2ed9508d 100644 --- a/test/fixtures/array.prototype.splice/case-4/after.js +++ b/test/fixtures/array.prototype.splice/case-4/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.splice/case-4/result.js b/test/fixtures/array.prototype.splice/case-4/result.js index 20c8a9e9..2ed9508d 100644 --- a/test/fixtures/array.prototype.splice/case-4/result.js +++ b/test/fixtures/array.prototype.splice/case-4/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.toreversed/case-1/after.js b/test/fixtures/array.prototype.toreversed/case-1/after.js index 2fb3feed..437034ac 100644 --- a/test/fixtures/array.prototype.toreversed/case-1/after.js +++ b/test/fixtures/array.prototype.toreversed/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var arr = [0, 1, 2, 3, 4, 5]; diff --git a/test/fixtures/array.prototype.toreversed/case-1/result.js b/test/fixtures/array.prototype.toreversed/case-1/result.js index 2fb3feed..437034ac 100644 --- a/test/fixtures/array.prototype.toreversed/case-1/result.js +++ b/test/fixtures/array.prototype.toreversed/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var arr = [0, 1, 2, 3, 4, 5]; diff --git a/test/fixtures/array.prototype.tosorted/case-1/after.js b/test/fixtures/array.prototype.tosorted/case-1/after.js index 7c097347..bce7c484 100644 --- a/test/fixtures/array.prototype.tosorted/case-1/after.js +++ b/test/fixtures/array.prototype.tosorted/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var input = [5, 4, 3, 2, 1, 0]; diff --git a/test/fixtures/array.prototype.tosorted/case-1/result.js b/test/fixtures/array.prototype.tosorted/case-1/result.js index 7c097347..bce7c484 100644 --- a/test/fixtures/array.prototype.tosorted/case-1/result.js +++ b/test/fixtures/array.prototype.tosorted/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var input = [5, 4, 3, 2, 1, 0]; diff --git a/test/fixtures/array.prototype.tospliced/case-1/after.js b/test/fixtures/array.prototype.tospliced/case-1/after.js index 13ca3aba..99252cfb 100644 --- a/test/fixtures/array.prototype.tospliced/case-1/after.js +++ b/test/fixtures/array.prototype.tospliced/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var input = [5, 4, 3, 2, 1, 0]; diff --git a/test/fixtures/array.prototype.tospliced/case-1/result.js b/test/fixtures/array.prototype.tospliced/case-1/result.js index 13ca3aba..99252cfb 100644 --- a/test/fixtures/array.prototype.tospliced/case-1/result.js +++ b/test/fixtures/array.prototype.tospliced/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var input = [5, 4, 3, 2, 1, 0]; diff --git a/test/fixtures/array.prototype.unshift/case-1/after.js b/test/fixtures/array.prototype.unshift/case-1/after.js index 9874a237..134671e5 100644 --- a/test/fixtures/array.prototype.unshift/case-1/after.js +++ b/test/fixtures/array.prototype.unshift/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.unshift/case-1/result.js b/test/fixtures/array.prototype.unshift/case-1/result.js index 9874a237..134671e5 100644 --- a/test/fixtures/array.prototype.unshift/case-1/result.js +++ b/test/fixtures/array.prototype.unshift/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.unshift/case-2/after.js b/test/fixtures/array.prototype.unshift/case-2/after.js index 9874a237..134671e5 100644 --- a/test/fixtures/array.prototype.unshift/case-2/after.js +++ b/test/fixtures/array.prototype.unshift/case-2/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.unshift/case-2/result.js b/test/fixtures/array.prototype.unshift/case-2/result.js index 9874a237..134671e5 100644 --- a/test/fixtures/array.prototype.unshift/case-2/result.js +++ b/test/fixtures/array.prototype.unshift/case-2/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.unshift/case-3/after.js b/test/fixtures/array.prototype.unshift/case-3/after.js index 9874a237..134671e5 100644 --- a/test/fixtures/array.prototype.unshift/case-3/after.js +++ b/test/fixtures/array.prototype.unshift/case-3/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.unshift/case-3/result.js b/test/fixtures/array.prototype.unshift/case-3/result.js index 9874a237..134671e5 100644 --- a/test/fixtures/array.prototype.unshift/case-3/result.js +++ b/test/fixtures/array.prototype.unshift/case-3/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.unshift/case-4/after.js b/test/fixtures/array.prototype.unshift/case-4/after.js index 9874a237..134671e5 100644 --- a/test/fixtures/array.prototype.unshift/case-4/after.js +++ b/test/fixtures/array.prototype.unshift/case-4/after.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.unshift/case-4/result.js b/test/fixtures/array.prototype.unshift/case-4/result.js index 9874a237..134671e5 100644 --- a/test/fixtures/array.prototype.unshift/case-4/result.js +++ b/test/fixtures/array.prototype.unshift/case-4/result.js @@ -1,3 +1,4 @@ + var assert = require('assert'); var a = [1, 1, 1]; diff --git a/test/fixtures/array.prototype.values/case-1/after.js b/test/fixtures/array.prototype.values/case-1/after.js index a63cb20b..67409e5f 100644 --- a/test/fixtures/array.prototype.values/case-1/after.js +++ b/test/fixtures/array.prototype.values/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); assert.deepStrictEqual(Array.from([1, 2, 3].values()), [1, 2, 3]); diff --git a/test/fixtures/array.prototype.values/case-1/result.js b/test/fixtures/array.prototype.values/case-1/result.js index a63cb20b..67409e5f 100644 --- a/test/fixtures/array.prototype.values/case-1/result.js +++ b/test/fixtures/array.prototype.values/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); assert.deepStrictEqual(Array.from([1, 2, 3].values()), [1, 2, 3]); diff --git a/test/fixtures/array.prototype.with/case-1/after.js b/test/fixtures/array.prototype.with/case-1/after.js index 7a03c518..566a1fa4 100644 --- a/test/fixtures/array.prototype.with/case-1/after.js +++ b/test/fixtures/array.prototype.with/case-1/after.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var arr = [0, 1, 2, 3, 4, 5]; diff --git a/test/fixtures/array.prototype.with/case-1/result.js b/test/fixtures/array.prototype.with/case-1/result.js index 7a03c518..566a1fa4 100644 --- a/test/fixtures/array.prototype.with/case-1/result.js +++ b/test/fixtures/array.prototype.with/case-1/result.js @@ -1,3 +1,4 @@ + var assert = require("assert"); var arr = [0, 1, 2, 3, 4, 5]; diff --git a/types/codemods/shared.d.ts b/types/codemods/shared.d.ts index 4001023b..4f85fe65 100644 --- a/types/codemods/shared.d.ts +++ b/types/codemods/shared.d.ts @@ -61,14 +61,6 @@ export function getImportIdentifierMap(packageName: string, root: import("jscode * @returns {ReplaceDefaultImport} */ export function replaceDefaultImport(name: string, newSpecifier: string, newName: string, root: import("jscodeshift").Collection, j: import("jscodeshift").JSCodeshift): ReplaceDefaultImport; -/** - * @param {string} method - e.g. `array.prototype.flatMap` - * @param {string} identifierName - e.g. `flatMap` - * @param {import("jscodeshift").Collection} root - package name to remove import/require calls for - * @param {import("jscodeshift").JSCodeshift} j - jscodeshift instance - * @returns {boolean} - true if the method was found and transformed, false otherwise - */ -export function transformArrayMethod(method: string, identifierName: string, root: import("jscodeshift").Collection, j: import("jscodeshift").JSCodeshift): boolean; /** * @param {import("jscodeshift").ASTPath} path - jscodeshift path * @param {string} instanceName - e.g. `Uint8Array`