{
  "version": 3,
  "sources": ["../../../../src/packages/plugin-commands-init/init.ts"],
  "sourcesContent": ["import fs from 'node:fs';\nimport path from 'node:path';\nimport { docsUrl } from '../cli-utils/index.ts';\nimport { packageManager } from '../cli-meta/index.ts';\nimport type { Config, UniversalOptions } from '../config/index.ts';\nimport { PnpmError } from '../error/index.ts';\nimport { sortKeysByPriority } from '../object.key-sorting/index.ts';\nimport type { ProjectManifest } from '../types/index.ts';\nimport { writeProjectManifest } from '../write-project-manifest/index.ts';\nimport renderHelp from 'render-help';\nimport { parseRawConfig } from './utils.ts';\n\nexport const rcOptionsTypes = cliOptionsTypes;\n\nexport function cliOptionsTypes(): Record<string, unknown> {\n  return {};\n}\n\nexport const commandNames = ['init'];\n\nexport function help(): string {\n  return renderHelp({\n    description: 'Create a package.json file',\n    descriptionLists: [],\n    url: docsUrl('init'),\n    usages: ['pnpm init'],\n  });\n}\n\nexport async function handler(\n  opts: Pick<UniversalOptions, 'rawConfig'> &\n    Pick<Config, 'cliOptions'> &\n    Partial<Pick<Config, 'initPackageManager'>>,\n  params?: string[] | undefined\n): Promise<string> {\n  if (typeof params !== 'undefined' && params.length > 0) {\n    throw new PnpmError(\n      'INIT_ARG',\n      'init command does not accept any arguments',\n      {\n        hint: `Maybe you wanted to run \"pnpm create ${params.join(' ')}\"`,\n      }\n    );\n  }\n\n  // Using cwd instead of the dir option because the dir option\n  // is set to the first parent directory that has a package.json file\n  // But --dir option from cliOptions should be respected.\n  const manifestPath = path.join(\n    opts.cliOptions.dir ?? process.cwd(),\n    'package.json'\n  );\n\n  if (fs.existsSync(manifestPath)) {\n    throw new PnpmError('PACKAGE_JSON_EXISTS', 'package.json already exists');\n  }\n\n  const manifest: ProjectManifest = {\n    name: path.basename(process.cwd()),\n    version: '1.0.0',\n    description: '',\n    main: 'index.js',\n    scripts: {\n      test: 'echo \"Error: no test specified\" && exit 1',\n    },\n    keywords: [],\n    author: '',\n    license: 'ISC',\n  };\n\n  const config = await parseRawConfig(opts.rawConfig);\n\n  const packageJson = { ...manifest, ...config };\n\n  if (opts.initPackageManager === true) {\n    packageJson.packageManager = `pnpm@${packageManager.version}`;\n  }\n\n  const priority = Object.fromEntries(\n    [\n      'name',\n      'version',\n      'description',\n      'main',\n      'scripts',\n      'keywords',\n      'author',\n      'license',\n      'packageManager',\n    ].map((key: string, index: number): [string, number] => {\n      return [key, index];\n    })\n  );\n\n  const sortedPackageJson = sortKeysByPriority({ priority }, packageJson);\n  await writeProjectManifest(manifestPath, sortedPackageJson, {\n    indent: 2,\n  });\n  return `Wrote to ${manifestPath}\n\n${JSON.stringify(sortedPackageJson, null, 2)}`;\n}\n"],
  "mappings": "AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,eAAe;AACxB,SAAS,sBAAsB;AAE/B,SAAS,iBAAiB;AAC1B,SAAS,0BAA0B;AAEnC,SAAS,4BAA4B;AACrC,OAAO,gBAAgB;AACvB,SAAS,sBAAsB;AAExB,MAAM,iBAAiB;AAEvB,SAAS,kBAA2C;AACzD,SAAO,CAAC;AACV;AAEO,MAAM,eAAe,CAAC,MAAM;AAE5B,SAAS,OAAe;AAC7B,SAAO,WAAW;AAAA,IAChB,aAAa;AAAA,IACb,kBAAkB,CAAC;AAAA,IACnB,KAAK,QAAQ,MAAM;AAAA,IACnB,QAAQ,CAAC,WAAW;AAAA,EACtB,CAAC;AACH;AAEA,eAAsB,QACpB,MAGA,QACiB;AACjB,MAAI,OAAO,WAAW,eAAe,OAAO,SAAS,GAAG;AACtD,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,QACE,MAAM,wCAAwC,OAAO,KAAK,GAAG,CAAC;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAKA,QAAM,eAAe,KAAK;AAAA,IACxB,KAAK,WAAW,OAAO,QAAQ,IAAI;AAAA,IACnC;AAAA,EACF;AAEA,MAAI,GAAG,WAAW,YAAY,GAAG;AAC/B,UAAM,IAAI,UAAU,uBAAuB,6BAA6B;AAAA,EAC1E;AAEA,QAAM,WAA4B;AAAA,IAChC,MAAM,KAAK,SAAS,QAAQ,IAAI,CAAC;AAAA,IACjC,SAAS;AAAA,IACT,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,UAAU,CAAC;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAEA,QAAM,SAAS,MAAM,eAAe,KAAK,SAAS;AAElD,QAAM,cAAc,EAAE,GAAG,UAAU,GAAG,OAAO;AAE7C,MAAI,KAAK,uBAAuB,MAAM;AACpC,gBAAY,iBAAiB,QAAQ,eAAe,OAAO;AAAA,EAC7D;AAEA,QAAM,WAAW,OAAO;AAAA,IACtB;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,IAAI,CAAC,KAAa,UAAoC;AACtD,aAAO,CAAC,KAAK,KAAK;AAAA,IACpB,CAAC;AAAA,EACH;AAEA,QAAM,oBAAoB,mBAAmB,EAAE,SAAS,GAAG,WAAW;AACtE,QAAM,qBAAqB,cAAc,mBAAmB;AAAA,IAC1D,QAAQ;AAAA,EACV,CAAC;AACD,SAAO,YAAY,YAAY;AAAA;AAAA,EAE/B,KAAK,UAAU,mBAAmB,MAAM,CAAC,CAAC;AAC5C;",
  "names": []
}
