{"version":3,"sources":["../../src/components/tsup.ts"],"sourcesContent":["import { type Options } from 'tsup';\nimport { Component } from './component.js';\nimport { SourceCode } from './source-code.js';\nimport type { TypeScriptNpmPackage } from '../projects/npm-package.js';\nimport { merge } from '../utils/merge.js';\n\nexport type TsUpOptions = Options;\n\nexport function legacyEntryPoints() {\n  return {\n    // CJS fall-back for older versions of Node.js\n    entrypoint: 'lib/index.cjs',\n    // Fall-back for older versions of TypeScript\n    entrypointTypes: 'lib/index.d.cts',\n  };\n}\n\nfunction defaultTsUpOptions(): TsUpOptions {\n  return {\n    bundle: false,\n    clean: true,\n    dts: true,\n    entry: ['src/**/*.ts'],\n    format: ['cjs', 'esm'],\n    minify: false,\n    outDir: 'lib',\n    shims: true,\n    sourcemap: true,\n    splitting: false,\n  };\n}\n\nexport class TsUp extends Component {\n  options: TsUpOptions;\n\n  constructor(project: TypeScriptNpmPackage, options?: TsUpOptions) {\n    super(project);\n    this.options = merge(defaultTsUpOptions(), options ?? {});\n    this.addNpmPackages();\n    this.configurePackageJson();\n    this.setCompileTask();\n    this.project.package.addField('type', 'module');\n    this.project.npmignore?.addPatterns('tsup.config.ts');\n  }\n\n  private addNpmPackages() {\n    this.project.addDevDeps('tsup');\n  }\n\n  private setCompileTask() {\n    const compileTask = this.project.tasks.tryFind('compile');\n    if (compileTask) {\n      // Reset the default compile task\n      compileTask.reset(`npx tsup`);\n    }\n  }\n\n  private configurePackageJson() {\n    this.project.package.addField('type', 'module');\n    this.project.package.addField('module', 'lib/index.js');\n    this.project.package.addField('exports', {\n      '.': {\n        // ES Modules entrypoint\n        import: {\n          // Where typescript will look for the types\n          types: './lib/index.d.ts',\n          // Where Node.js will look\n          default: './lib/index.js',\n        },\n        // CommonJS entrypoint\n        require: {\n          // Where typescript will look for the types\n          types: './lib/index.d.cts',\n          // Where Node.js will look\n          default: './lib/index.cjs',\n        },\n      },\n    });\n  }\n\n  preSynthesize(): void {\n    new SourceCode(this.project, 'tsup.config.ts', {\n      codeBlock: `\n        import { defineConfig } from 'tsup';\n\n        export function tsup() {\n          return defineConfig(\n            ${JSON.stringify(this.options, undefined, 2)\n              .split('\\n')\n              .map((line) => `  ${line}`)\n              .join('\\n')}\n          );\n        }\n      `,\n    });\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAA0B;AAC1B,yBAA2B;AAE3B,mBAAsB;AAIf,SAAS,oBAAoB;AAClC,SAAO;AAAA;AAAA,IAEL,YAAY;AAAA;AAAA,IAEZ,iBAAiB;AAAA,EACnB;AACF;AAEA,SAAS,qBAAkC;AACzC,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO,CAAC,aAAa;AAAA,IACrB,QAAQ,CAAC,OAAO,KAAK;AAAA,IACrB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AACF;AAEO,MAAM,aAAa,2BAAU;AAAA,EAClC;AAAA,EAEA,YAAY,SAA+B,SAAuB;AAChE,UAAM,OAAO;AACb,SAAK,cAAU,oBAAM,mBAAmB,GAAG,WAAW,CAAC,CAAC;AACxD,SAAK,eAAe;AACpB,SAAK,qBAAqB;AAC1B,SAAK,eAAe;AACpB,SAAK,QAAQ,QAAQ,SAAS,QAAQ,QAAQ;AAC9C,SAAK,QAAQ,WAAW,YAAY,gBAAgB;AAAA,EACtD;AAAA,EAEQ,iBAAiB;AACvB,SAAK,QAAQ,WAAW,MAAM;AAAA,EAChC;AAAA,EAEQ,iBAAiB;AACvB,UAAM,cAAc,KAAK,QAAQ,MAAM,QAAQ,SAAS;AACxD,QAAI,aAAa;AAEf,kBAAY,MAAM,UAAU;AAAA,IAC9B;AAAA,EACF;AAAA,EAEQ,uBAAuB;AAC7B,SAAK,QAAQ,QAAQ,SAAS,QAAQ,QAAQ;AAC9C,SAAK,QAAQ,QAAQ,SAAS,UAAU,cAAc;AACtD,SAAK,QAAQ,QAAQ,SAAS,WAAW;AAAA,MACvC,KAAK;AAAA;AAAA,QAEH,QAAQ;AAAA;AAAA,UAEN,OAAO;AAAA;AAAA,UAEP,SAAS;AAAA,QACX;AAAA;AAAA,QAEA,SAAS;AAAA;AAAA,UAEP,OAAO;AAAA;AAAA,UAEP,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,gBAAsB;AACpB,QAAI,8BAAW,KAAK,SAAS,kBAAkB;AAAA,MAC7C,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,cAKH,KAAK,UAAU,KAAK,SAAS,QAAW,CAAC,EACxC,MAAM,IAAI,EACV,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,EACzB,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,IAIrB,CAAC;AAAA,EACH;AACF;","names":[]}