{"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/add-deps.js","../src/log.js","../src/cmd-install.js","../src/remove-deps.js","../src/cmd-uninstall.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 extra installation.\nexport default async function addDeps(deps, versions, config, root, lineBreak, verbose) {\n  let pkg\n  ({ config, pkg } = await resolveConfig('extras', config, root, undefined, undefined, verbose))\n\n  let { extraDependencies } = pkg\n  if (!extraDependencies) extraDependencies = pkg.extraDependencies = {}\n  for (const dep of deps) {\n    const version = dep.indexOf('@', 1)\n    const name = version > 0 ? dep.slice(0, version) : dep\n    extraDependencies[name] = versions[name]\n  }\n\n  await writeJSON(config, pkg, lineBreak, verbose)\n}\n","// Logs a message with the prefix of this package.\nexport default function log(message) {\n  console.log('dep-extra', message)\n}\n","import { join, resolve } from 'path'\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 addDeps from './add-deps.js'\nimport log from './log.js'\n\n// Enables installing the extra specified dependencies and performs\n// the installation right away.\nexport async function installExtraDependencies(newDeps, { 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, 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-extras.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('extras', root, verbose)\n    }\n    deps = deps.extraDependencies\n  }\n  if (deps) {\n    if (!Array.isArray(deps)) {\n      deps = Object.keys(deps).map(name => `${name}@${deps[name]}`)\n    } else if (verbose) {\n      log(`requested to install: ${deps.join(', ')}`)\n    }\n  }\n  if (!(deps && deps.length)) {\n    return console.log('no extra dependencies to install')\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  // add only dependencies which exact versions are missing in node_modules\n  if (!root) root = await findRoot(cwd, verbose)\n  const detectedDeps = await resolveDeps(deps, root, false, verbose)\n  const depsToInstall = deps.filter(dep => {\n    const versionIndex = dep.indexOf('@', 1)\n    let name, version\n    if (versionIndex > 0) {\n      name = dep.slice(0, versionIndex)\n      version = dep.slice(versionIndex + 1)\n    } else {\n      name = dep\n    }\n    // either the package was not found or its exact version different\n    return !(version && version === detectedDeps[name])\n  })\n\n  // only if some packages to ninstall were found\n  if (depsToInstall.length) {\n    log(`actually installing: ${depsToInstall.join(', ')}`)\n    args.push(...depsToInstall);\n\n    // install the extra 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 = depsToInstall.length > 1 ? 's' : ''\n      console.log(`\\nadded ${depsToInstall.length} package${suffix} in ${duration}ms`)\n      if (list) listDeps(depsToInstall)\n      return\n    }\n    await spawnProcess('npm', args, { cwd })\n\n    // get and print the versions of the installed extra deps\n    deps = await resolveDeps(depsToInstall, 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 addDeps(newDeps, deps, config, root, lineBreak, verbose)\n    }\n  } else {\n    log('nothing to actually install')\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 extra installation.\nexport default async function removeDeps(deps, config, root, lineBreak, verbose) {\n  let pkg\n  ({ config, pkg } = await resolveConfig('extras', config, root, undefined, undefined, verbose))\n\n  const { extraDependencies } = pkg\n  if (!extraDependencies) return\n  for (const name of deps) delete extraDependencies[name]\n\n  await writeJSON(config, pkg, lineBreak, verbose)\n}\n","import listDeps from '../../../src/list-deps.js'\nimport spawnProcess from '../../../src/spawn-process.js'\nimport findRoot from '../../../src/find-root.js'\nimport removeDeps from './remove-deps.js'\nimport log from './log.js'\n\n// Stops installing the extra specified dependencies and uninstalls them\n// right away.\nexport async function uninstallExtraDependencies(deps, { 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 (!(deps && deps.length)) {\n    return console.log('no extra dependencies to uninstall')\n  }\n  if (verbose) log(`requested to uninstall: ${deps.join(', ')}`)\n\n  // collect all arguments for the npm execution\n  const args = ['r', '--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  // remove only packages found in node_modules\n  const root = await findRoot(cwd, verbose)\n  const detectedDeps = await resolveDeps(deps, root, false, verbose)\n  const depsToRemove = deps.filter(dep => {\n    const version = dep.indexOf('@', 1)\n    const name = version > 0 ? dep.slice(0, version) : dep\n    return detectedDeps[name];\n  })\n\n  // only if some packages to uninstall were found\n  if (depsToRemove.length) {\n    log(`actually uninstalling: ${depsToRemove.join(', ')}`)\n    args.push(...depsToRemove);\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 = depsToRemove.length > 1 ? 's' : ''\n      console.log(`\\nremoved ${depsToRemove.length} package${suffix} in ${duration}ms`)\n      if (list) listDeps(depsToRemove)\n      return\n    }\n    await spawnProcess('npm', args, { cwd })\n\n    // get and print uninstalled extra deps\n    if (list) listDeps(depsToRemove)\n\n    // remove the uninstalled deps from the config file\n    if (save !== false) {\n      await removeDeps(depsToRemove, config, root, lineBreak, verbose)\n    }\n  } else {\n    log('nothing to actually uninstall')\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 installing\n// of extra selected dependencies using this package.\nexport async function setupExtraDependencies({ 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-extras.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 = { extraDependencies: {} }\n    saveDeps = true\n  } else if (!deps.extraDependencies) {\n    deps.extraDependencies = {}\n    saveDeps = true\n  }\n  if (saveDeps && verbose) log(`creating empty configuration`)\n\n  // automate the installation 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-extra i' }\n    saveProj = true\n  } else {\n    const { prepare } = scripts\n    if (!prepare) {\n      scripts.prepare = 'dep-extra i'\n      saveProj = true\n    } else if (!/\\bdep-extra\\b/.test(prepare)) {\n      scripts.prepare = `dep-extra i && ${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/extra'] ||\n      devDependencies && devDependencies['@pkgdep/extra'])) {\n    await installTool('@pkgdep/extra', root, list, progress, verbose, dryRun, start)\n  }\n}\n"],"names":["log","cwd","path","relative","readFile","resolve","join","access","spawn","resolveDeps","writeFile","dirname","fileURLToPath"],"mappings":"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"}