| 5 | import type { Options } from './types.js' |
| 6 | |
| 7 | export function mergePackageJSON( |
| 8 | packageJSON: Record<string, unknown>, |
| 9 | overlayPackageJSON?: Record<string, unknown>, |
| 10 | ) { |
| 11 | const packageDependencies = |
| 12 | packageJSON.dependencies && typeof packageJSON.dependencies === 'object' |
| 13 | ? (packageJSON.dependencies as Record<string, string>) |
| 14 | : {} |
| 15 | const overlayDependencies = |
| 16 | overlayPackageJSON?.dependencies && |
| 17 | typeof overlayPackageJSON.dependencies === 'object' |
| 18 | ? (overlayPackageJSON.dependencies as Record<string, string>) |
| 19 | : {} |
| 20 | const packageDevDependencies = |
| 21 | packageJSON.devDependencies && typeof packageJSON.devDependencies === 'object' |
| 22 | ? (packageJSON.devDependencies as Record<string, string>) |
| 23 | : {} |
| 24 | const overlayDevDependencies = |
| 25 | overlayPackageJSON?.devDependencies && |
| 26 | typeof overlayPackageJSON.devDependencies === 'object' |
| 27 | ? (overlayPackageJSON.devDependencies as Record<string, string>) |
| 28 | : {} |
| 29 | const packageScripts = |
| 30 | packageJSON.scripts && typeof packageJSON.scripts === 'object' |
| 31 | ? (packageJSON.scripts as Record<string, string>) |
| 32 | : {} |
| 33 | const overlayScripts = |
| 34 | overlayPackageJSON?.scripts && typeof overlayPackageJSON.scripts === 'object' |
| 35 | ? (overlayPackageJSON.scripts as Record<string, string>) |
| 36 | : {} |
| 37 | |
| 38 | const mergedPackageJSON: Record<string, unknown> = { |
| 39 | ...packageJSON, |
| 40 | ...(overlayPackageJSON || {}), |
| 41 | dependencies: { |
| 42 | ...packageDependencies, |
| 43 | ...overlayDependencies, |
| 44 | }, |
| 45 | devDependencies: { |
| 46 | ...packageDevDependencies, |
| 47 | ...overlayDevDependencies, |
| 48 | }, |
| 49 | scripts: { |
| 50 | ...packageScripts, |
| 51 | ...overlayScripts, |
| 52 | }, |
| 53 | } |
| 54 | |
| 55 | const packagePnpm = |
| 56 | packageJSON.pnpm && typeof packageJSON.pnpm === 'object' |
| 57 | ? (packageJSON.pnpm as Record<string, unknown>) |
| 58 | : undefined |
| 59 | const overlayPnpm = |
| 60 | overlayPackageJSON?.pnpm && typeof overlayPackageJSON.pnpm === 'object' |
| 61 | ? (overlayPackageJSON.pnpm as Record<string, unknown>) |
| 62 | : undefined |
| 63 | |
| 64 | const baseOnlyBuiltDependencies = Array.isArray( |