diff --git a/lib/normalize.js b/lib/normalize.js index c1436a3..cf03e8d 100644 --- a/lib/normalize.js +++ b/lib/normalize.js @@ -40,10 +40,6 @@ const normalize = async (pkg, { strict, steps, root, changes, allowLegacyCase }) const scripts = data.scripts || {} const pkgId = `${data.name ?? ''}@${data.version ?? ''}` - legacyFixer.warn = function () { - changes?.push(legacyMakeWarning.apply(null, arguments)) - } - // name and version are load bearing so we have to clean them up first if (steps.includes('fixNameField') || steps.includes('normalizeData')) { if (!data.name && !strict) { @@ -107,6 +103,7 @@ const normalize = async (pkg, { strict, steps, root, changes, allowLegacyCase }) } // fix bundledDependencies typo + // normalize bundleDependencies if (steps.includes('bundledDependencies')) { if (data.bundleDependencies === undefined && data.bundledDependencies !== undefined) { data.bundleDependencies = data.bundledDependencies @@ -128,7 +125,7 @@ const normalize = async (pkg, { strict, steps, root, changes, allowLegacyCase }) changes?.push(`"bundleDependencies" was changed from an object to an array`) data.bundleDependencies = Object.keys(bd) } - } else { + } else if ('bundleDependencies' in data) { changes?.push(`"bundleDependencies" was removed`) delete data.bundleDependencies } @@ -465,6 +462,10 @@ const normalize = async (pkg, { strict, steps, root, changes, allowLegacyCase }) } if (steps.includes('normalizeData')) { + legacyFixer.warn = function () { + changes?.push(legacyMakeWarning.apply(null, arguments)) + } + const legacySteps = [ 'fixDescriptionField', 'fixModulesField', diff --git a/tap-snapshots/test/fix.js.test.cjs b/tap-snapshots/test/fix.js.test.cjs index e7a5014..1e6ddd3 100644 --- a/tap-snapshots/test/fix.js.test.cjs +++ b/tap-snapshots/test/fix.js.test.cjs @@ -6,6 +6,10 @@ */ 'use strict' exports[`test/fix.js TAP with changes binRefs scoped name > must match snapshot 1`] = ` +Array [] +` + +exports[`test/fix.js TAP with changes bundleDependencies null > must match snapshot 1`] = ` Array [ "\\"bundleDependencies\\" was removed", ] @@ -13,35 +17,30 @@ Array [ exports[`test/fix.js TAP with changes fixDependencies array dependencies > must match snapshot 1`] = ` Array [ - "\\"bundleDependencies\\" was removed", "\\"dependencies\\" was converted from an array into an object", ] ` exports[`test/fix.js TAP with changes fixDependencies false dependencies > must match snapshot 1`] = ` Array [ - "\\"bundleDependencies\\" was removed", "Removed invalid \\"dependencies\\"", ] ` exports[`test/fix.js TAP with changes fixDependencies git dependency > must match snapshot 1`] = ` Array [ - "\\"bundleDependencies\\" was removed", "Normalized git reference to \\"dependencies.npm\\"", ] ` exports[`test/fix.js TAP with changes fixDependencies non-string dependency > must match snapshot 1`] = ` Array [ - "\\"bundleDependencies\\" was removed", "Removed invalid \\"dependencies.npm\\"", ] ` exports[`test/fix.js TAP with changes fixDependencies string dependencies > must match snapshot 1`] = ` Array [ - "\\"bundleDependencies\\" was removed", "\\"dependencies\\" was converted from a string into an object", ] ` @@ -49,34 +48,28 @@ Array [ exports[`test/fix.js TAP with changes fixNameField scoped whitespace > must match snapshot 1`] = ` Array [ "Whitespace was trimmed from \\"name\\"", - "\\"bundleDependencies\\" was removed", ] ` exports[`test/fix.js TAP with changes fixNameField unscoped whitespace > must match snapshot 1`] = ` Array [ "Whitespace was trimmed from \\"name\\"", - "\\"bundleDependencies\\" was removed", ] ` exports[`test/fix.js TAP with changes fixRepositoryField full > must match snapshot 1`] = ` Array [ - "\\"bundleDependencies\\" was removed", "\\"repository\\" was changed from a string to an object", "\\"repository.url\\" was normalized to \\"git+https://github.com/npm/cli.git\\"", ] ` exports[`test/fix.js TAP with changes fixRepositoryField object no url > must match snapshot 1`] = ` -Array [ - "\\"bundleDependencies\\" was removed", -] +Array [] ` exports[`test/fix.js TAP with changes fixRepositoryField repositories array > must match snapshot 1`] = ` Array [ - "\\"bundleDependencies\\" was removed", "\\"repository\\" was set to the first entry in \\"repositories\\" ([object Object])", "\\"repository\\" was changed from a string to an object", ] @@ -84,35 +77,29 @@ Array [ exports[`test/fix.js TAP with changes fixRepositoryField shortcut > must match snapshot 1`] = ` Array [ - "\\"bundleDependencies\\" was removed", "\\"repository\\" was changed from a string to an object", "\\"repository.url\\" was normalized to \\"git+https://github.com/npm/cli.git\\"", ] ` exports[`test/fix.js TAP with changes fixVersionField none > must match snapshot 1`] = ` -Array [ - "\\"bundleDependencies\\" was removed", -] +Array [] ` exports[`test/fix.js TAP with changes fixVersionField unclean > must match snapshot 1`] = ` Array [ "\\"version\\" was cleaned and set to \\"1.0.0\\"", - "\\"bundleDependencies\\" was removed", ] ` exports[`test/fix.js TAP with changes scriptpath non-object script entry > must match snapshot 1`] = ` Array [ - "\\"bundleDependencies\\" was removed", "Invalid scripts.\\"test\\" was removed", ] ` exports[`test/fix.js TAP with changes scriptpath non-object scripts > must match snapshot 1`] = ` Array [ - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", ] ` diff --git a/tap-snapshots/test/normalize.js.test.cjs b/tap-snapshots/test/normalize.js.test.cjs index e0faf97..2fb73b1 100644 --- a/tap-snapshots/test/normalize.js.test.cjs +++ b/tap-snapshots/test/normalize.js.test.cjs @@ -62,7 +62,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes clean up scripts delete non-object scripts > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", ] ` @@ -70,7 +69,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes clean up scripts delete non-string script targets > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Invalid scripts.\\"bar\\" was removed", "Invalid scripts.\\"baz\\" was removed", ] @@ -79,7 +77,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes cleanup bins delete string bin when no name > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", ] ` @@ -87,7 +84,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes cleanup bins handle string when a name is set > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", ] ` @@ -95,7 +91,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes cleanup bins remove non-object bin > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", ] ` @@ -103,7 +98,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes cleanup bins remove non-string bin values > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", ] ` @@ -111,7 +105,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes convert funding string to object > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", "\\"funding\\" was changed to an object with a url attribute", ] @@ -120,7 +113,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes dedupe optional deps out of regular deps choose optional deps in conflict, leaving populated dependencies > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "optionalDependencies.\\"whowins\\" was removed", "Removed invalid \\"scripts\\"", ] @@ -129,7 +121,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes dedupe optional deps out of regular deps choose optional deps in conflict, removing empty dependencies > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "optionalDependencies.\\"whowins\\" was removed", "Empty \\"optionalDependencies\\" was removed", "Removed invalid \\"scripts\\"", @@ -139,7 +130,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes dedupe optional deps out of regular deps do not create regular deps if only optional specified > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", ] ` @@ -147,7 +137,6 @@ Array [ exports[`test/normalize.js TAP @npmcli/package-json - with changes normalize bin > must match snapshot 1`] = ` Array [ "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", ] ` @@ -156,7 +145,6 @@ exports[`test/normalize.js TAP @npmcli/package-json - with changes set _id if na Array [ "\\"_id\\" was set to a@1.2.3", "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", ] ` @@ -170,7 +158,6 @@ Array [ "\\"_lodash\\" was removed", "\\"_id\\" was set to underscore@1.2.3", "Deleted incorrect \\"bundledDependencies\\"", - "\\"bundleDependencies\\" was removed", "Removed invalid \\"scripts\\"", ] ` diff --git a/test/fix.js b/test/fix.js index 5148927..c42b991 100644 --- a/test/fix.js +++ b/test/fix.js @@ -182,6 +182,15 @@ for (const [name, testFix] of Object.entries(testMethods)) { t.strictSame(content.scripts, {}) }) }) + t.test('bundleDependencies', async t => { + t.test('null', async t => { + const testdir = { + 'package.json': pkg({ bundleDependencies: null }), + } + const { content } = await testFix(t, testdir) + t.notHas(content, 'bundleDependencies') + }) + }) t.test('binRefs', async t => { t.test('scoped name', async t => { const testdir = {