{
  "version": 3,
  "sources": ["../../../../src/packages/plugin-commands-init/utils.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport { spawnSync } from 'node:child_process';\nimport camelcaseKeys from 'camelcase-keys';\nimport fs from 'node:fs';\n\nexport type Person = {\n  name?: string | undefined;\n  email?: string | undefined;\n  url?: string | undefined;\n  web?: string | undefined;\n  mail?: string | undefined;\n};\n\nexport function personToString(person: Person): string {\n  const name = person.name ?? '';\n\n  const u = person.url ?? person.web;\n\n  const url = typeof u === 'string' ? ` (${u})` : '';\n\n  const e = person.email ?? person.mail;\n\n  const email = typeof e === 'string' ? ` <${e}>` : '';\n\n  return name + email + url;\n}\n\nexport function workWithInitModule(\n  localConfig: Record<string, string>\n): Record<string, string> {\n  const { initModule, ...restConfig } = localConfig;\n\n  if (typeof initModule === 'string') {\n    const filePath = path.resolve(initModule);\n\n    const isFileExist = fs.existsSync(filePath);\n\n    if (['.js', '.cjs'].includes(path.extname(filePath)) && isFileExist) {\n      spawnSync('node', [filePath], {\n        stdio: 'inherit',\n      });\n    }\n  }\n\n  return restConfig;\n}\n\nexport function workWithInitConfig(\n  localConfig: Record<string, string>\n): Record<string, string> {\n  const packageJson: Record<string, string> = {};\n\n  const authorInfo: Record<string, string> = {};\n\n  for (const localConfigKey in localConfig) {\n    if (\n      localConfigKey.startsWith('init') &&\n      localConfigKey !== 'initPackageManager'\n    ) {\n      const pureKey = localConfigKey.replace('init', '');\n\n      const value = localConfig[localConfigKey];\n\n      if (typeof value !== 'string') {\n        continue;\n      }\n\n      if (pureKey.startsWith('Author')) {\n        authorInfo[pureKey.replace('Author', '')] = value;\n      } else {\n        packageJson[pureKey] = value;\n      }\n    }\n  }\n\n  const author = personToString(camelcaseKeys(authorInfo));\n  if (author) {\n    packageJson.author = author;\n  }\n  return camelcaseKeys(packageJson);\n}\n\nexport async function parseRawConfig(\n  rawConfig: Record<string, string>\n): Promise<Record<string, string>> {\n  return workWithInitConfig(workWithInitModule(camelcaseKeys(rawConfig)));\n}\n"],
  "mappings": "AAAA,OAAO,UAAU;AACjB,SAAS,iBAAiB;AAC1B,OAAO,mBAAmB;AAC1B,OAAO,QAAQ;AAUR,SAAS,eAAe,QAAwB;AACrD,QAAM,OAAO,OAAO,QAAQ;AAE5B,QAAM,IAAI,OAAO,OAAO,OAAO;AAE/B,QAAM,MAAM,OAAO,MAAM,WAAW,KAAK,CAAC,MAAM;AAEhD,QAAM,IAAI,OAAO,SAAS,OAAO;AAEjC,QAAM,QAAQ,OAAO,MAAM,WAAW,KAAK,CAAC,MAAM;AAElD,SAAO,OAAO,QAAQ;AACxB;AAEO,SAAS,mBACd,aACwB;AACxB,QAAM,EAAE,YAAY,GAAG,WAAW,IAAI;AAEtC,MAAI,OAAO,eAAe,UAAU;AAClC,UAAM,WAAW,KAAK,QAAQ,UAAU;AAExC,UAAM,cAAc,GAAG,WAAW,QAAQ;AAE1C,QAAI,CAAC,OAAO,MAAM,EAAE,SAAS,KAAK,QAAQ,QAAQ,CAAC,KAAK,aAAa;AACnE,gBAAU,QAAQ,CAAC,QAAQ,GAAG;AAAA,QAC5B,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,mBACd,aACwB;AACxB,QAAM,cAAsC,CAAC;AAE7C,QAAM,aAAqC,CAAC;AAE5C,aAAW,kBAAkB,aAAa;AACxC,QACE,eAAe,WAAW,MAAM,KAChC,mBAAmB,sBACnB;AACA,YAAM,UAAU,eAAe,QAAQ,QAAQ,EAAE;AAEjD,YAAM,QAAQ,YAAY,cAAc;AAExC,UAAI,OAAO,UAAU,UAAU;AAC7B;AAAA,MACF;AAEA,UAAI,QAAQ,WAAW,QAAQ,GAAG;AAChC,mBAAW,QAAQ,QAAQ,UAAU,EAAE,CAAC,IAAI;AAAA,MAC9C,OAAO;AACL,oBAAY,OAAO,IAAI;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,eAAe,cAAc,UAAU,CAAC;AACvD,MAAI,QAAQ;AACV,gBAAY,SAAS;AAAA,EACvB;AACA,SAAO,cAAc,WAAW;AAClC;AAEA,eAAsB,eACpB,WACiC;AACjC,SAAO,mBAAmB,mBAAmB,cAAc,SAAS,CAAC,CAAC;AACxE;",
  "names": []
}
