{"version":3,"sources":["../../src/projects/npm-package.ts"],"sourcesContent":["import { javascript, typescript } from 'projen';\nimport { Eslint } from '../components/eslint.js';\nimport { NpmConfig } from '../components/npm.js';\nimport { Nvm } from '../components/nvmrc.js';\nimport { Prettier } from '../components/prettier.js';\nimport { Projen } from '../components/projen.js';\nimport { defaultTsConfig, useTsNodeEsm } from '../components/tsconfig.js';\nimport { TsUp, TsUpOptions, legacyEntryPoints } from '../components/tsup.js';\nimport { Vitest, defaultVitestOptions } from '../components/vitest.js';\nimport { merge } from '../utils/merge.js';\n\nexport interface TypeScriptNpmPackageOptions\n  extends typescript.TypeScriptProjectOptions {\n  tsUpOptions?: TsUpOptions;\n}\n\nexport class TypeScriptNpmPackage extends typescript.TypeScriptProject {\n  private static defaultOptions(\n    name: string,\n    repository?: string,\n  ): typescript.TypeScriptProjectOptions {\n    return {\n      name,\n      ...Prettier.defaultOptions,\n      ...Projen.defaultOptions,\n      ...defaultVitestOptions(),\n      ...legacyEntryPoints(),\n      tsconfig: defaultTsConfig(),\n      releaseToNpm: true,\n      authorName: 'Ally Murray',\n      authorEmail: 'allymurray88@gmail.com',\n      npmAccess: javascript.NpmAccess.PUBLIC,\n      gitignore: ['.DS_Store', '*yalc*', 'test-reports'],\n      repository: repository ? `${repository}.git` : undefined,\n      bugsUrl: repository ? `${repository}/issues` : undefined,\n      homepage: repository ? `${repository}#readme` : undefined,\n      jest: false, // Use vitest instead\n    };\n  }\n\n  constructor(options: TypeScriptNpmPackageOptions) {\n    const { repository, ...opts } = options;\n    super(\n      merge(\n        TypeScriptNpmPackage.defaultOptions(options.name, options.repository),\n        opts,\n      ),\n    );\n    new Eslint(this);\n    new TsUp(this, options.tsUpOptions ?? {});\n    new NpmConfig(this);\n    new Nvm(this);\n    new Vitest(this);\n    useTsNodeEsm(this);\n    this.npmignore?.addPatterns('.projenrc.ts');\n  }\n\n  postSynthesize(): void {\n    super.postSynthesize();\n  }\n}\n\ntype Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\n\nexport function createTypeScriptNpmPackage(\n  options: Optional<TypeScriptNpmPackageOptions, 'defaultReleaseBranch'>,\n) {\n  return new TypeScriptNpmPackage({\n    ...options,\n    defaultReleaseBranch: options.defaultReleaseBranch ?? 'main',\n  });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuC;AACvC,oBAAuB;AACvB,iBAA0B;AAC1B,mBAAoB;AACpB,sBAAyB;AACzB,IAAAA,iBAAuB;AACvB,sBAA8C;AAC9C,kBAAqD;AACrD,oBAA6C;AAC7C,mBAAsB;AAOf,MAAM,6BAA6B,yBAAW,kBAAkB;AAAA,EACrE,OAAe,eACb,MACA,YACqC;AACrC,WAAO;AAAA,MACL;AAAA,MACA,GAAG,yBAAS;AAAA,MACZ,GAAG,sBAAO;AAAA,MACV,OAAG,oCAAqB;AAAA,MACxB,OAAG,+BAAkB;AAAA,MACrB,cAAU,iCAAgB;AAAA,MAC1B,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,WAAW,yBAAW,UAAU;AAAA,MAChC,WAAW,CAAC,aAAa,UAAU,cAAc;AAAA,MACjD,YAAY,aAAa,GAAG,UAAU,SAAS;AAAA,MAC/C,SAAS,aAAa,GAAG,UAAU,YAAY;AAAA,MAC/C,UAAU,aAAa,GAAG,UAAU,YAAY;AAAA,MAChD,MAAM;AAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEA,YAAY,SAAsC;AAChD,UAAM,EAAE,YAAY,GAAG,KAAK,IAAI;AAChC;AAAA,UACE;AAAA,QACE,qBAAqB,eAAe,QAAQ,MAAM,QAAQ,UAAU;AAAA,QACpE;AAAA,MACF;AAAA,IACF;AACA,QAAI,qBAAO,IAAI;AACf,QAAI,iBAAK,MAAM,QAAQ,eAAe,CAAC,CAAC;AACxC,QAAI,qBAAU,IAAI;AAClB,QAAI,iBAAI,IAAI;AACZ,QAAI,qBAAO,IAAI;AACf,sCAAa,IAAI;AACjB,SAAK,WAAW,YAAY,cAAc;AAAA,EAC5C;AAAA,EAEA,iBAAuB;AACrB,UAAM,eAAe;AAAA,EACvB;AACF;AAIO,SAAS,2BACd,SACA;AACA,SAAO,IAAI,qBAAqB;AAAA,IAC9B,GAAG;AAAA,IACH,sBAAsB,QAAQ,wBAAwB;AAAA,EACxD,CAAC;AACH;","names":["import_projen"]}