{"version":3,"file":"index.mjs","sources":["../../src/helpers/standardiseRelativePath.ts","../../src/handler.ts","../../src/cli.ts"],"sourcesContent":["export const standardiseRelativePath = (path: string): string =>\n  path.startsWith('./') ? path.replace(/^\\.\\//, '') : path;\n","import { log, setVerbose, verboseLog } from '@repodog/cli-utils';\nimport colors from 'ansi-colors';\nimport { glob } from 'glob';\nimport { isError } from 'lodash-es';\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, parse, resolve } from 'node:path';\nimport shelljs from 'shelljs';\nimport { standardiseRelativePath } from './helpers/standardiseRelativePath.ts';\nimport { type HandlerArgs } from './types.ts';\n\nexport const handler = ({ input, output, verbose = false }: HandlerArgs): never => {\n  setVerbose(verbose, 'cts-types');\n  verboseLog('>>>> USER CONFIG START <<<<');\n  verboseLog(`input: ${input}`);\n  verboseLog(`output: ${output ?? 'None'}`);\n  verboseLog('>>>> USER CONFIG END <<<<\\n');\n  log(`Building cts types for: ${input}`);\n\n  try {\n    const standardisedInput = standardiseRelativePath(input);\n    verboseLog(`standardisedInput: ${standardisedInput}`);\n    const files = glob.sync([`${standardisedInput}/**/*.d.ts`, `${standardisedInput}/**/*.d.ts.map`]);\n    verboseLog(`Files to convert:${files.length > 0 ? `\\n${files.join('\\n')}` : ' None'}\\n`);\n\n    if (files.length === 0) {\n      log(`No files to convert for input \"${standardisedInput}\". Please check the input is correct.`);\n      return shelljs.exit(0);\n    }\n\n    for (const file of files) {\n      verboseLog(`Converting: ${file}`);\n      const { dir, ext, name } = parse(file);\n      const renamedFile = ext === '.ts' ? `${dir}/${name}.cts` : `${dir}/${name.replace(/\\.ts$/, '.cts')}.map`;\n      verboseLog(`renamedFile: ${renamedFile}`);\n\n      const outputFile = output\n        ? renamedFile.replace(standardisedInput, () => standardiseRelativePath(output))\n        : renamedFile;\n\n      verboseLog(`outputFile: ${outputFile}`);\n      const content = readFileSync(file, { encoding: 'utf8' });\n      const updatedContent = content.replaceAll('.ts', '.cts');\n      verboseLog(`Outputing ${file} to: ${outputFile}\\n`);\n      const outputDir = resolve(process.cwd(), dirname(outputFile));\n\n      if (!existsSync(outputDir)) {\n        mkdirSync(outputDir, { recursive: true });\n      }\n\n      writeFileSync(outputFile, updatedContent);\n    }\n\n    log(`Finished building cts types for: ${input}`);\n    return shelljs.exit(0);\n  } catch (error) {\n    const confirmedError = isError(error) ? error : new Error('An unexpected error occured.');\n\n    shelljs.echo(\n      `${colors.magenta('cts-types')} ${colors.dim('=>')} ${colors.red(`Error: ${confirmedError.message}`)}`,\n    );\n\n    return shelljs.exit(1);\n  }\n};\n","import yargs, { type Argv } from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { handler } from './handler.ts';\n\nexport const cli = (): void => {\n  // yargs does not provide a way to pass generic to type args.\n  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n  const argv = yargs(hideBin(process.argv)) as Argv<{\n    input: string;\n    output?: string;\n    verbose?: boolean;\n  }>;\n\n  void argv\n    .command(\n      'build <input> <output>',\n      'Build .d.cts type files from .d.ts files to provide types for both esm and cjs outputs.',\n      cmdYargs =>\n        cmdYargs\n          .positional('input', {\n            demandOption: true,\n            desc: 'The directory where the .d.ts files are located, relative to the project root',\n            type: 'string',\n          })\n          .positional('output', {\n            demandOption: false,\n            desc: 'The directory where the .d.cts files should be output, relative to the project root',\n            type: 'string',\n          })\n          .option('verbose', {\n            desc: 'Whether to output verbose logs',\n            type: 'boolean',\n          }),\n      handler,\n    )\n    .help()\n    .parseAsync();\n};\n"],"names":["standardiseRelativePath","path","startsWith","replace","handler","input","output","verbose","setVerbose","verboseLog","log","standardisedInput","files","glob","sync","length","join","shelljs","exit","file","dir","ext","name","parse","renamedFile","outputFile","updatedContent","readFileSync","encoding","replaceAll","outputDir","resolve","process","cwd","dirname","existsSync","mkdirSync","recursive","writeFileSync","error","confirmedError","isError","Error","echo","colors","magenta","dim","red","message","cli","yargs","hideBin","argv","command","cmdYargs","positional","demandOption","desc","type","option","help","parseAsync"],"mappings":"6YAAO,MAAMA,EAA2BC,GACtCA,EAAKC,WAAW,MAAQD,EAAKE,QAAQ,QAAS,IAAMF,ECSzCG,EAAU,EAAGC,QAAOC,SAAQC,WAAU,MACjDC,EAAWD,EAAS,aACpBE,EAAW,+BACXA,EAAW,UAAUJ,KACrBI,EAAW,WAAWH,GAAU,UAChCG,EAAW,+BACXC,EAAI,2BAA2BL,KAE/B,IACE,MAAMM,EAAoBX,EAAwBK,GAClDI,EAAW,sBAAsBE,KACjC,MAAMC,EAAQC,EAAKC,KAAK,CAAC,GAAGH,cAA+B,GAAGA,oBAG9D,GAFAF,EAAW,oBAAoBG,EAAMG,OAAS,EAAI,KAAKH,EAAMI,KAAK,QAAU,aAEvD,IAAjBJ,EAAMG,OAER,OADAL,EAAI,kCAAkCC,0CAC/BM,EAAQC,KAAK,GAGtB,IAAK,MAAMC,KAAQP,EAAO,CACxBH,EAAW,eAAeU,KAC1B,MAAMC,IAAEA,EAAGC,IAAEA,EAAGC,KAAEA,GAASC,EAAMJ,GAC3BK,EAAsB,QAARH,EAAgB,GAAGD,KAAOE,QAAa,GAAGF,KAAOE,EAAKnB,QAAQ,QAAS,cAC3FM,EAAW,gBAAgBe,KAE3B,MAAMC,EAAanB,EACfkB,EAAYrB,QAAQQ,EAAmB,IAAMX,EAAwBM,IACrEkB,EAEJf,EAAW,eAAegB,KAC1B,MACMC,EADUC,EAAaR,EAAM,CAAES,SAAU,SAChBC,WAAW,MAAO,QACjDpB,EAAW,aAAaU,SAAYM,OACpC,MAAMK,EAAYC,EAAQC,QAAQC,MAAOC,EAAQT,IAE5CU,EAAWL,IACdM,EAAUN,EAAW,CAAEO,WAAW,IAGpCC,EAAcb,EAAYC,EAC5B,CAGA,OADAhB,EAAI,oCAAoCL,KACjCY,EAAQC,KAAK,EACtB,CAAE,MAAOqB,GACP,MAAMC,EAAiBC,EAAQF,GAASA,EAAQ,IAAIG,MAAM,gCAM1D,OAJAzB,EAAQ0B,KACN,GAAGC,EAAOC,QAAQ,gBAAgBD,EAAOE,IAAI,SAASF,EAAOG,IAAI,UAAUP,EAAeQ,cAGrF/B,EAAQC,KAAK,EACtB,GC1DW+B,EAAM,KAGJC,EAAMC,EAAQnB,QAAQoB,OAOhCC,QACC,yBACA,0FACAC,GACEA,EACGC,WAAW,QAAS,CACnBC,cAAc,EACdC,KAAM,gFACNC,KAAM,WAEPH,WAAW,SAAU,CACpBC,cAAc,EACdC,KAAM,sFACNC,KAAM,WAEPC,OAAO,UAAW,CACjBF,KAAM,iCACNC,KAAM,YAEZtD,GAEDwD,OACAC"}