{
  "version": 3,
  "sources": ["../../../../src/packages/exec.build-commands/approveBuilds.ts"],
  "sourcesContent": ["import type { Config } from '../config/index.ts';\nimport { globalInfo } from '../logger/index.ts';\nimport { tryReadProjectManifest } from '../read-project-manifest/index.ts';\nimport { lexCompare } from '../util.lex-comparator/index.ts';\nimport renderHelp from 'render-help';\nimport { prompt } from 'enquirer';\nimport chalk from 'chalk';\nimport {\n  rebuild,\n  type RebuildCommandOpts,\n} from '../plugin-commands-rebuild/index.ts';\nimport { updateWorkspaceManifest } from '../workspace.manifest-writer/index.ts';\nimport { getAutomaticallyIgnoredBuilds } from './getAutomaticallyIgnoredBuilds.ts';\nimport process from 'node:process';\n\nexport type ApproveBuildsCommandOpts = Pick<\n  Config,\n  | 'modulesDir'\n  | 'dir'\n  | 'rootProjectManifest'\n  | 'rootProjectManifestDir'\n  | 'onlyBuiltDependencies'\n  | 'ignoredBuiltDependencies'\n>;\n\nexport const commandNames = ['approve-builds'];\n\nexport function help(): string {\n  return renderHelp({\n    description: 'Approve dependencies for running scripts during installation',\n    usages: [],\n    descriptionLists: [\n      {\n        title: 'Options',\n\n        list: [\n          {\n            description: 'Approve dependencies of global packages',\n            name: '--global',\n            shortAlias: '-g',\n          },\n        ],\n      },\n    ],\n  });\n}\n\nexport function cliOptionsTypes(): Record<string, unknown> {\n  return {\n    global: Boolean,\n  };\n}\n\nexport function rcOptionsTypes(): Record<string, unknown> {\n  return {};\n}\n\nexport async function handler(\n  opts: ApproveBuildsCommandOpts & RebuildCommandOpts\n): Promise<void> {\n  const automaticallyIgnoredBuilds = await getAutomaticallyIgnoredBuilds(opts);\n\n  if (\n    typeof automaticallyIgnoredBuilds?.length === 'undefined' ||\n    automaticallyIgnoredBuilds.length === 0\n  ) {\n    globalInfo('There are no packages awaiting approval');\n\n    return;\n  }\n\n  const { result } = (await prompt({\n    choices: sortUniqueStrings([...automaticallyIgnoredBuilds]),\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    indicator(_state: any, choice: any) {\n      return ` ${choice.enabled === true ? '\u25CF' : '\u25CB'}`;\n    },\n    message: `Choose which packages to build (Press ${chalk.cyan('<space>')} to select, ${chalk.cyan('<a>')} to toggle all, ${chalk.cyan('<i>')} to invert selection)`,\n    name: 'result',\n    pointer: '\u276F',\n    result() {\n      return this.selected;\n    },\n    styles: {\n      dark: chalk.reset,\n      em: chalk.bgBlack.whiteBright,\n      success: chalk.reset,\n    },\n    type: 'multiselect',\n\n    // For Vim users (related: https://github.com/enquirer/enquirer/pull/163)\n    j() {\n      return this.down();\n    },\n    k() {\n      return this.up();\n    },\n    cancel() {\n      // By default, canceling the prompt via Ctrl+c throws an empty string.\n      // The custom cancel function prevents that behavior.\n      // Otherwise, pnpm CLI would print an error and confuse users.\n      // See related issue: https://github.com/enquirer/enquirer/issues/225\n      // eslint-disable-next-line n/no-process-exit\n      process.exit(0);\n    },\n  } as any)) as any; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n  const buildPackages: string[] = result.map(\n    ({ value }: { value: string }): string => value\n  );\n\n  const ignoredPackages = automaticallyIgnoredBuilds.filter(\n    (automaticallyIgnoredBuild) => {\n      return buildPackages.includes(automaticallyIgnoredBuild) !== true;\n    }\n  );\n\n  let updatedIgnoredBuiltDependencies: string[] | undefined;\n\n  if (ignoredPackages.length) {\n    if (opts.ignoredBuiltDependencies == null) {\n      updatedIgnoredBuiltDependencies = sortUniqueStrings(ignoredPackages);\n    } else {\n      updatedIgnoredBuiltDependencies = sortUniqueStrings([\n        ...opts.ignoredBuiltDependencies,\n        ...ignoredPackages,\n      ]);\n    }\n  }\n\n  let updatedOnlyBuiltDependencies: string[] | undefined;\n\n  if (buildPackages.length > 0) {\n    updatedOnlyBuiltDependencies =\n      opts.onlyBuiltDependencies == null\n        ? sortUniqueStrings(buildPackages)\n        : sortUniqueStrings([...opts.onlyBuiltDependencies, ...buildPackages]);\n  }\n\n  if (buildPackages.length) {\n    const confirmed = await prompt<{ build: boolean }>({\n      type: 'confirm',\n      name: 'build',\n      message: `The next packages will now be built: ${buildPackages.join(', ')}.\nDo you approve?`,\n      initial: false,\n    });\n\n    if (!confirmed.build) {\n      return;\n    }\n  }\n\n  let { manifest, writeProjectManifest } = await tryReadProjectManifest(\n    opts.rootProjectManifestDir\n  );\n\n  manifest = manifest ?? {\n    name: '',\n    version: '',\n  };\n\n  if (\n    opts.workspaceDir == null ||\n    Array.isArray(manifest.pnpm?.onlyBuiltDependencies) ||\n    typeof manifest.pnpm?.ignoredBuiltDependencies !== 'undefined'\n  ) {\n    manifest.pnpm ??= {};\n\n    if (typeof updatedOnlyBuiltDependencies !== 'undefined') {\n      manifest.pnpm.onlyBuiltDependencies = updatedOnlyBuiltDependencies;\n    }\n\n    if (updatedIgnoredBuiltDependencies) {\n      manifest.pnpm.ignoredBuiltDependencies = updatedIgnoredBuiltDependencies;\n    }\n\n    await writeProjectManifest(manifest);\n  } else {\n    await updateWorkspaceManifest(opts.workspaceDir, {\n      onlyBuiltDependencies: updatedOnlyBuiltDependencies,\n      ignoredBuiltDependencies: updatedIgnoredBuiltDependencies,\n    });\n  }\n\n  if (buildPackages.length) {\n    return rebuild.handler(\n      {\n        ...opts,\n        onlyBuiltDependencies: updatedOnlyBuiltDependencies ?? [],\n      },\n      buildPackages\n    );\n  }\n}\n\nfunction sortUniqueStrings(array: string[]): string[] {\n  return Array.from(new Set(array)).sort(lexCompare);\n}\n"],
  "mappings": "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",
  "names": []
}
