{"version":3,"file":"index.cjs","sources":["../../../src/log.js","../../../src/read-json.js","../../../src/find-root.js","../../../src/load-config.js","../../../src/list-deps.js","../../../src/spawn-process.js","../../../src/resolve-deps.js","../../../src/resolve-config.js","../../../src/write-json.js","../src/upgrade-deps.js","../src/is-pattern.js","../src/log.js","../src/cmd-upgrade.js","../src/downgrade-deps.js","../src/cmd-downgrade.js","../../../src/read-pkg.js","../../../src/install-tool.js","../src/cmd-setup.js"],"sourcesContent":["import { relative } from 'path'\n\n// Logs a message with the common prefix of all three packages.\nexport function log(message) {\n  console.log('dep-dev', message)\n}\n\nlet cwd\n\n// Cuts the path to be based on the current process directory.\nexport function shorten(path) {\n  if (!cwd) cwd = process.cwd()\n  return relative(cwd, path)\n}\n","import { readFile } from 'fs/promises'\nimport { log, shorten } from './log.js';\n\n// Reads and parses a JSON file.\nexport default async function readJSON(config, verbose) {\n  if (verbose) log(`reading \"${shorten(config)}\"`)\n  const content = await readFile(config, 'utf8')\n  return JSON.parse(content)\n}\n","import { access } from 'fs/promises'\nimport { join, resolve } from 'path'\nimport { log, shorten } from './log'\n\n// Finds the closest directory with package.json among the current one\n// and its ancestors.\nexport default async function findRoot(curDir, verbose) {\n  // prefer an explicit path of the project root during npm installation\n  const startDir = curDir || process.env.INIT_CWD || process.cwd()\n  let dir = resolve(startDir), prevDir, path\n  do {\n    try {\n      if (verbose) log(`looking for package.json in \"${shorten(dir)}\"`)\n      path = join(dir, 'package.json')\n      await access(path)\n      if (verbose) log(`\"${shorten(path)}\" found`)\n      return dir\n    } catch (err) {\n      if (err.code !== 'ENOENT') throw err\n      if (verbose) log(`\"${shorten(path)}\" not found`)\n    }\n    prevDir = dir\n    dir = resolve(dir, '..') // ensure an absolute path without extra ..\n  } while (prevDir !== dir) // until the root of the file system is reached\n  throw new Error(`package.json not found in ${startDir} and its ancestors`)\n}\n","import { join } from 'path'\nimport { log, shorten } from './log.js'\nimport readJSON from './read-json.js'\n\n// Loads a configuration file, preferably the external one, if it exists,\n// or the project package.json.\nexport default async function loadConfig(type, root, verbose) {\n  const config = join(root, `package-${type}.json`)\n  try {\n    return await readJSON(config, verbose)\n  } catch (err) {\n    if (err.code !== 'ENOENT') throw err\n    if (verbose) log(`\"${shorten(config)}\" not found`)\n    return await readJSON(join(root, 'package.json'), verbose)\n  }\n}\n","// Lists versions or linked paths of specified dependencies.\nexport default function listDeps(deps, links) {\n  console.log()\n  // handle an array of formatted dependency specifications\n  if (Array.isArray(deps)) for (const dep of deps) console.log(`+ ${dep}`)\n  // handle a object with version or target path specifications\n  else for (const name in deps) console.log(`+ ${name}${links ? ' => ' : '@'}${deps[name]}`)\n}\n","import { spawn } from 'child_process'\n\n// Launches a new process relaying its terminal output and waits for its finish.\nexport default function spawnProcess(command, args, { cwd } = {}) {\n  return new Promise((resolve, reject) => {\n    // npm is a batch file on Windows, which needs a shel for launching\n    const child = spawn(command, args, { cwd, shell: true })\n      .on('error', reject)\n      .on('exit', code => code ? reject(new Error(`${command} exited with ${code}`)) : resolve())\n    child.stdout.on('data', data => process.stdout.write(data.toString()))\n    child.stderr.on('data', data => process.stderr.write(data.toString()))\n  });\n}\n","import { join } from 'path'\nimport readJSON from './read-json.js'\nimport { log, shorten } from './log.js'\n\n// Find versions of specified first-level dependencies installed\n// in node_modules of the current project and returns them in the format\n// of the dependency object from package.json.\nexport default async function resolveDeps(deps, root, strict, verbose) {\n  const pkgs = await Promise.all(deps.map(async dep => {\n    // cut off the original version specifier, if the dependency includes it\n    const version = dep.indexOf('@', 1)\n    const name = version > 0 ? dep.slice(0, version) : dep\n    const pkg = join(root, 'node_modules/', name, 'package.json')\n    try {\n      return await readJSON(pkg, verbose)\n    } catch (err) {\n      if (err.code !== 'ENOENT') throw err\n      if (verbose) log(`\"${shorten(pkg)}\" not found`)\n      if (strict) throw err\n      return { name }\n    }\n  }))\n\n  deps = {}\n  for (const { name, version } of pkgs) deps[name] = version\n  return deps\n}\n","import { join } from 'path'\nimport { log, shorten } from './log.js'\nimport readJSON from './read-json.js'\n\n// Infers the name loads the content of the configuration file.\nexport default async function resolveConfig(type, config, root, preferSeparate, checkProperty, verbose) {\n  let pkg\n  // undefined config means trying a separate file first and then package.json\n  if (config === undefined) {\n    config = join(root, `package-${type}.json`)\n    try {\n      pkg = await readJSON(config, verbose)\n    } catch (err) {\n      if (err.code !== 'ENOENT') throw err\n      if (verbose) log(`\"${shorten(config)}\" not found`)\n      const pkgConfig = join(root, 'package.json')\n      pkg = await readJSON(pkgConfig, verbose)\n      // package.json will be used (and created) if it contains\n      // the configuration object or if the separate file is not preferred\n      if (preferSeparate && !pkg[checkProperty]) {\n        pkg = {}\n      } else {\n        config = pkgConfig\n      }\n    }\n  // true config means using a separate file with the default name\n  } else if (config === true) {\n    try {\n      config = join(root, `package-${type}.json`)\n      pkg = await readJSON(config, verbose)\n    } catch (err) {\n      if (err.code !== 'ENOENT') throw err\n      if (verbose) log(`\"${shorten(config)}\" not found`)\n      pkg = {}\n    }\n  // explicit config means using a custom file\n  } else if (config) {\n    try {\n      pkg = await readJSON(config, verbose)\n    } catch (err) {\n      if (err.code !== 'ENOENT') throw err\n      if (verbose) log(`\"${shorten(config)}\" not found`)\n      pkg = {}\n    }\n  // otherwise package.json will be used\n  } else {\n    config = join(root, 'package.json')\n    pkg = await readJSON(config, verbose)\n  }\n  if (verbose) log(`\"choosing \"${shorten(config)}\"`)\n  return { config, pkg }\n}\n","import { writeFile } from 'fs/promises'\nimport { log, shorten } from './log.js'\n\n// Serialises and writes a JSON file.\nexport default async function writeJSON(config, pkg, lineBreak, verbose) {\n  if (verbose) log(`writing \"${shorten(config)}\"`)\n  let contents = JSON.stringify(pkg, undefined, 2)\n  // terminate the file with a line break by default\n  if (lineBreak !== false) contents = `${contents}\\n`\n  await writeFile(config, contents)\n}\n","import resolveConfig from '../../../src/resolve-config.js'\nimport writeJSON from '../../../src/write-json.js'\n\n// Adds the specified dependencies to the list for upgrading.\nexport default async function upgradeDeps(deps, config, root, lineBreak, verbose) {\n  let pkg\n  ({ config, pkg } = await resolveConfig('updates', config, root, undefined, undefined, verbose))\n\n  let { updateDependencies } = pkg\n  if (!updateDependencies) updateDependencies = []\n  // filter out the dependencies that have been already added\n  const newDeps = deps.filter(dep => !updateDependencies.includes(dep))\n  pkg.updateDependencies = updateDependencies.push(...newDeps)\n\n  await writeJSON(config, pkg, lineBreak, verbose)\n}\n","// Detects if the input name is a wildcard pattern or not.\nexport default function isPattern(pattern) {\n  return pattern.includes('*') || pattern.includes('?')\n}\n","// Logs a message with the prefix of this package.\nexport default function log(message) {\n  console.log('dep-update', message)\n}\n","import { join, resolve } from 'path'\nimport picomatch from 'picomatch'\nimport readJSON from '../../../src/read-json.js'\nimport findRoot from '../../../src/find-root.js'\nimport loadConfig from '../../../src/load-config.js'\nimport listDeps from '../../../src/list-deps.js'\nimport spawnProcess from '../../../src/spawn-process.js'\nimport resolveDeps from '../../../src/resolve-deps.js'\nimport upgradeDeps from './upgrade-deps.js'\nimport isPattern from './is-pattern.js'\nimport log from './log.js'\n\n// Collects peer dependencies from the specified packages and traverses them\n// recursively to collect peer dependencies of the collected packages etc.\nasync function deepDeps(root, pending, verbose, visited = new Set()) {\n  await Promise.all(pending.map(async dep => {\n    const pkg = `${root}/node_modules/${dep}/package.json`\n    let { peerDependencies = {} } = await readJSON(pkg, verbose)\n    peerDependencies = Object.keys(peerDependencies)\n    if (peerDependencies.length) {\n      if (verbose) log(`peer dependencies found: ${peerDependencies.join(', ')}`)\n      for (const dep of peerDependencies) visited.add(dep)\n      await deepDeps(root, peerDependencies, verbose, visited)\n    }\n  }))\n  return visited\n}\n\n// Enables upgrading the specified dependencies and upgrades them\n// to the latest compatible semver version.\nexport async function upgradeDependencies(newDeps, { config, cwd, deep, save, lineBreak, progress, list, verbose, dryRun } = {}) {\n  const start = performance.now()\n  if (verbose === undefined) verbose = process.env.npm_config_loglevel === 'verbose'\n\n  // if no deps were specified, install all deps from the config file\n  let deps = newDeps, root\n  if (!(deps && deps.length)) {\n    if (config) {\n      if (config === true) {\n        root = await findRoot(cwd, verbose)\n        config = join(root, 'package-updates.json')\n      } else {\n        config = resolve(config)\n      }\n      deps = await readJSON(config, verbose)\n    } else {\n      root = await findRoot(cwd, verbose)\n      deps = await loadConfig('updates', root, verbose)\n    }\n    deps = deps.updateDependencies\n  }\n  if (!(deps && deps.length)) {\n    return console.log('no dependencies to update')\n  }\n\n  // traverse peer dependencies\n  if (!root) root = await findRoot(cwd, verbose)\n  let { dependencies = {}, devDependencies = {} } = await readJSON(join(root, 'package.json'), verbose)\n  dependencies = Object.keys(dependencies)\n  const peers = deep && deps.some(isPattern) ? await deepDeps(root, dependencies, verbose) : []\n  dependencies = new Set([...dependencies, ...peers, ...Object.keys(devDependencies)])\n\n  // resolve wildcards\n  deps = deps.reduce((result, pattern) => {\n    if (isPattern(pattern)) {\n      if (verbose) log(`looking for dependencies matching ${pattern}`)\n      const match = picomatch(pattern)\n      let updated\n      for (const dep of dependencies) {\n        if (match(dep)) {\n          if (verbose) log(`dependency ${dep} matched`)\n          result.push(dep)\n          updated = true\n        }\n      }\n      if (!updated) throw new Error(`no dependency matched ${pattern}`)\n    } else {\n      if (verbose) log(`dependency ${pattern} included`)\n      result.push(pattern)\n    }\n    return result\n  }, [])\n\n  // collect all arguments for the npm execution\n  const args = ['up', '--no-save', '--no-audit', '--no-update-notifier']\n  if (progress === undefined) progress = !('npm_config_progress' in process.env)\n  if (!progress) args.push('--no-progress')\n  if (verbose) args.push('--verbose')\n  args.push(...deps);\n\n  // update the deps using `npm i --no-save ...`\n  if (verbose) console.log(`> npm ${args.join(' ')}`)\n  if (list === undefined) list = process.env.npm_config_list !== ''\n  if (dryRun === undefined) dryRun = process.env.npm_config_dry_run\n  if (dryRun) {\n    // simulate the npm output\n    const duration = Math.trunc(performance.now() - start)\n    const suffix = deps.length > 1 ? 's' : ''\n    console.log(`\\nupdated ${deps.length} package${suffix} in ${duration}ms`)\n    if (list) listDeps(deps)\n    return\n  }\n  await spawnProcess('npm', args, { cwd })\n\n  // get and print the versions of the updated deps\n  deps = await resolveDeps(deps, root, true, verbose)\n  if (list) listDeps(deps)\n\n  // save the newly added deps to the config file\n  if (save !== false && newDeps && newDeps.length) {\n    await upgradeDeps(newDeps, config, root, lineBreak, verbose)\n  }\n}\n","import resolveConfig from '../../../src/resolve-config.js'\nimport writeJSON from '../../../src/write-json.js'\n\n// Removes the specified dependencies from the list for upgrading.\nexport default async function downgradeDeps(deps, config, root, lineBreak, verbose) {\n  let pkg\n  ({ config, pkg } = await resolveConfig('updates', config, root, undefined, undefined, verbose))\n\n  const { updateDependencies } = pkg\n  // bail out if there are no upgradable dependencies\n  if (!updateDependencies || !updateDependencies.length) return\n  pkg.updateDependencies = updateDependencies.filter(dep => !deps.includes(dep))\n\n  await writeJSON(config, pkg, lineBreak, verbose)\n}\n","import { join } from 'path'\nimport picomatch from 'picomatch'\nimport listDeps from '../../../src/list-deps.js'\nimport readJSON from '../../../src/read-json.js'\nimport spawnProcess from '../../../src/spawn-process.js'\nimport findRoot from '../../../src/find-root.js'\nimport downgradeDeps from './downgrade-deps.js'\nimport isPattern from './is-pattern.js'\nimport log from './log.js'\n\n// Stops upgrading the specified dependencies and downgrades them\n// to the version set in the package lock.\nexport async function downgradeDependencies(depNames, { config, cwd, save, lineBreak, progress, list, verbose, dryRun } = {}) {\n  const start = performance.now()\n  if (verbose === undefined) verbose = process.env.npm_config_loglevel === 'verbose'\n\n  // if no deps were specified, bail out\n  if (!(depNames && depNames.length)) {\n    return console.log('no dependencies to downgrade')\n  }\n\n  // append the version specifiers from the package lock to dependency names\n  const root = await findRoot(cwd, verbose)\n  const { packages } = await readJSON(join(root, 'package-lock.json'), verbose)\n  const deps = depNames.reduce((result, pattern) => {\n    if (isPattern(pattern)) {\n      if (verbose) log(`looking for dependencies matching ${pattern}`)\n      const match = picomatch(pattern)\n      let updated\n      for (const key in packages) {\n        if (key.startsWith('node_modules/')) {\n          const name = key.substring(13)\n          if (match(name)) {\n            const pkg = packages[key]\n            const dep = `${name}@${pkg.version}`\n            if (verbose) log(`dependency ${dep} matched`)\n            result.push(dep)\n            updated = true\n          }\n        }\n      }\n      if (!updated) throw new Error(`no dependency matched ${pattern}`)\n    } else {\n      const pkg = packages[`node_modules/${pattern}`]\n      if (!pkg) throw new Error(`unknown dependency: \"${pattern}`)\n      const dep = `${pattern}@${pkg.version}`\n      if (verbose) log(`dependency ${dep} found`)\n      result.push(dep)\n    }\n    return result\n  }, [])\n\n  // collect all arguments for the npm execution\n  const args = ['i', '--no-save', '--no-audit', '--no-update-notifier']\n  if (progress === undefined) progress = !('npm_config_progress' in process.env)\n  if (!progress) args.push('--no-progress')\n  if (verbose) args.push('--verbose')\n  args.push(...deps);\n\n  // uninstall the extra deps using `npm r --no-save ...`\n  if (verbose) console.log(`> npm ${args.join(' ')}`)\n  if (list === undefined) list = process.env.npm_config_list !== ''\n  if (dryRun === undefined) dryRun = process.env.npm_config_dry_run\n  if (dryRun) {\n    // simulate the npm output\n    const duration = Math.trunc(performance.now() - start)\n    const suffix = deps.length > 1 ? 's' : ''\n    console.log(`\\ndowngraded ${deps.length} package${suffix} in ${duration}ms`)\n    if (list) listDeps(deps)\n    return\n  }\n  await spawnProcess('npm', args, { cwd })\n\n  // get and print downgraded deps\n  if (list) listDeps(deps)\n\n  // remove the downgraded deps from the config file\n  if (save !== false) {\n    await downgradeDeps(depNames, config, root, lineBreak, verbose)\n  }\n}\n","import { fileURLToPath } from 'url'\nimport { dirname, join } from 'path'\nimport readJSON from './read-json.js'\n\n// Reads and parses package.json of this package.\nexport default async function readPkg(verbose) {\n  const __dirname = dirname(fileURLToPath(import.meta.url))\n  return await readJSON(join(__dirname, '../package.json'), verbose)\n}\n","import readPkg from './read-pkg.js'\nimport listDeps from './list-deps.js'\nimport spawnProcess from './spawn-process.js'\nimport resolveDeps from './resolve-deps.js'\n\n// Installs an additional development dependency to the current project.\nexport default async function installTool(name, root, list, progress, verbose, dryRun, start) {\n  const args = ['i', '-D']\n  if (progress === false) args.push('--no-progress')\n  if (verbose) args.push('--verbose')\n  args.push(name);\n\n  if (verbose) console.log(`> npm ${args.join(' ')}`)\n  if (dryRun) {\n    // simulate the npm output\n    const duration = Math.trunc(performance.now() - start)\n    console.log(`\\nadded 1 package in ${duration}ms`)\n    if (list !== false) {\n      const { version } = await readPkg(verbose)\n      listDeps({ [name]: version })\n    }\n  } else {\n    await spawnProcess('npm', args, { cwd })\n    if (list !== false) {\n      const { [name]: version } = await resolveDeps([name], root, true, verbose)\n      listDeps({ [name]: version })\n    }\n  }\n}\n","import { join, resolve } from 'path'\nimport readJSON from '../../../src/read-json.js'\nimport findRoot from '../../../src/find-root.js'\nimport writeJSON from '../../../src/write-json.js'\nimport installTool from '../../../src/install-tool.js'\nimport { shorten } from '../../../src/log.js'\nimport log from './log.js'\n\n// Prepares package.json and other configuration files to automate updates\n// of selected dependencies using this package.\nexport async function setupUpdateDependencies({ config, cwd, lineBreak, progress, list, verbose, dryRun } = {}) {\n  const start = performance.now()\n\n  // find the preferred configuration file\n  const root = await findRoot(cwd, verbose)\n  const pkg = join(root, 'package.json')\n  if (config === true) config = join(root, 'package-updates.json')\n  else if (!config) config = pkg\n  else config = resolve(config)\n  const same = config === pkg\n  if (verbose) log(`expecting configuration in \"${shorten(config)}\"`)\n\n  // load both package.json and the configuration file, the same or separate\n  const proj = await readJSON(pkg, verbose)\n  let deps\n  if (same) {\n    deps = proj\n  } else {\n    try {\n      deps = await readJSON(config, verbose)\n    } catch (err) {\n      if (err.code !== 'ENOENT') throw err\n      if (verbose) log(`\"${shorten(config)}\" not found`)\n    }\n  }\n\n  // make sure that the configuration file contains the dependency list\n  let saveDeps\n  if (!deps) {\n    deps = { updateDependencies: [] }\n    saveDeps = true\n  } else if (!deps.updateDependencies) {\n    deps.updateDependencies = []\n    saveDeps = true\n  }\n  if (saveDeps && verbose) log(`creating empty configuration`)\n\n  // automate the updating in the npm prepare phase as the first step\n  let saveProj\n  const { scripts, dependencies, devDependencies } = proj\n  if (!scripts) {\n    proj.scripts = { prepare: 'dep-update up' }\n    saveProj = true\n  } else {\n    const { prepare } = scripts\n    if (!prepare) {\n      scripts.prepare = 'dep-update up'\n      saveProj = true\n    } else if (!/\\bdep-update\\b/.test(prepare)) {\n      scripts.prepare = `dep-update up && ${prepare}`\n      saveProj = true\n    }\n  }\n  if (saveProj && verbose) log(`setting scripts.prepare to \"${proj.scripts.prepare}\"`)\n\n  // write changes to package.json separate configuration file and .gitignore\n  if (dryRun === undefined) dryRun = process.env.npm_config_dry_run\n  if (!dryRun) {\n    if (same) {\n      if (saveDeps || saveProj) await writeJSON(config, deps, lineBreak, verbose)\n    } else {\n      await Promise.all([\n        saveDeps && await writeJSON(config, deps, lineBreak, verbose),\n        saveProj && await writeJSON(pkg, proj, lineBreak, verbose)\n      ])\n    }\n  }\n\n  // add this package to development dependencies\n  if (!(dependencies && dependencies['@pkgdep/update'] ||\n      devDependencies && devDependencies['@pkgdep/update'])) {\n    await installTool('@pkgdep/update', root, list, progress, verbose, dryRun, start)\n  }\n}\n"],"names":["log","cwd","path","relative","readFile","resolve","join","access","spawn","writeFile","dirname","fileURLToPath"],"mappings":"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"}