{"version":3,"file":"tsup.mjs","names":["resolveEsbuildEntry","esbuild"],"sources":["../src/tsup.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n                   🗲 Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website:                  https://stormsoftware.com\n Repository:               https://github.com/storm-software/powerlines\n Documentation:            https://docs.stormsoftware.com/projects/powerlines\n Contact:                  https://stormsoftware.com/contact\n\n SPDX-License-Identifier:  Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport {\n  ResolvedEntryFileReference,\n  UnresolvedContext\n} from \"@powerlines/core\";\nimport { AssetGlob, Entry } from \"@storm-software/build-tools/types\";\nimport { resolveOptions as resolveOptionsBase } from \"@storm-software/tsup\";\nimport { DEFAULT_BUILD_OPTIONS } from \"@storm-software/tsup/constants\";\nimport { toArray } from \"@stryke/convert/to-array\";\nimport { getUnique } from \"@stryke/helpers/get-unique\";\nimport { appendPath } from \"@stryke/path/append\";\nimport { relativePath } from \"@stryke/path/file-path-fns\";\nimport defu from \"defu\";\nimport type { Options } from \"tsup\";\nimport esbuild, { resolveEntry as resolveEsbuildEntry } from \"./esbuild\";\n\nexport const DEFAULT_OPTIONS: Partial<Options> = {\n  ...DEFAULT_BUILD_OPTIONS,\n  target: \"esnext\",\n  config: false,\n  minify: true,\n  sourcemap: false,\n  cjsInterop: true,\n  bundle: true,\n  dts: true,\n  shims: true,\n  silent: true,\n  treeshake: true,\n  keepNames: true,\n  splitting: true,\n  banner: {}\n};\n\n/**\n * Resolves the entry options for [tsup](https://github.com/egoist/tsup).\n *\n * @param context - The build context.\n * @param entryPoints - The entry points to resolve.\n * @returns The resolved entry options.\n */\nexport function resolveEntry<TContext extends UnresolvedContext>(\n  context: TContext,\n  entryPoints: ResolvedEntryFileReference[] | string[]\n): Entry {\n  return resolveEsbuildEntry(context, entryPoints) as Entry;\n}\n\ntype TsupEsbuildOptionsHandler = NonNullable<Options[\"esbuildOptions\"]>;\ntype TsupEsbuildOptionsArgs = Parameters<TsupEsbuildOptionsHandler>;\ntype TsupEsbuildOptions = TsupEsbuildOptionsArgs[0];\n\n/**\n * Resolves the options for [tsup](https://github.com/egoist/tsup).\n *\n * @param context - The build context.\n * @returns The resolved options.\n */\nexport function resolveOptions<TContext extends UnresolvedContext>(\n  context: TContext\n): Parameters<typeof resolveOptionsBase>[0] {\n  const result = defu(\n    {\n      entry: Object.fromEntries(\n        Object.entries(resolveEntry(context, context.entry)).map(\n          ([key, value]) => [key, appendPath(value, context.config.root)]\n        )\n      ),\n      esbuildOptions: (options: TsupEsbuildOptions) => {\n        options.alias = {\n          ...context.alias,\n          ...context.builtins.reduce(\n            (ret, id) => {\n              const path = context.fs.paths[id];\n              if (path) {\n                ret[id] = path;\n              }\n\n              return ret;\n            },\n            {} as Record<string, string>\n          ),\n          ...options.alias\n        };\n      },\n      noExternal: context.builtins\n    },\n    {\n      name: context.config.name,\n      root: context.config.root,\n      projectRoot: context.config.root,\n      assets: context.config.output.copy\n        ? (context.config.output.copy.assets as (string | AssetGlob)[])\n        : undefined,\n      resolveExtensions: context.config.resolve.extensions,\n      outputPath: relativePath(\n        appendPath(context.config.root, context.config.cwd),\n        context.config.output.path\n      ),\n      tsconfig: context.tsconfig.tsconfigFilePath,\n      dts: {\n        compilerOptions: context.tsconfig.tsconfigJson.compilerOptions\n      },\n      format: context.config.output.format,\n      mode: context.config.mode,\n      minify: context.config.output.minify,\n      metafile: context.config.mode === \"development\",\n      sourcemap: context.config.output.sourceMap,\n      silent:\n        context.config.logLevel.general === \"silent\" ||\n        context.config.mode === \"production\",\n      verbose:\n        context.config.logLevel.general === \"trace\" ||\n        context.config.mode === \"development\",\n      workspaceConfig: { workspaceRoot: context.config.cwd }\n    },\n    DEFAULT_OPTIONS\n  );\n\n  result.format = getUnique(toArray(result.format));\n  return result as Parameters<typeof resolveOptionsBase>[0];\n}\n\n/**\n * A Tsup configuration function that integrates Powerlines into the build process.\n *\n * @see https://tsup.egoist.dev/#/config\n *\n * @example\n * ```ts\n * // tsup.config.ts\n * import withPowerlines from \"@powerlines/unplugin/tsup\";\n *\n * export default withPowerlines({\n *  entry: [\"src/index.ts\"],\n *  format: [\"cjs\", \"esm\"],\n *  dts: true,\n *  sourcemap: true,\n *  clean: true,\n * });\n *\n * ```\n *\n * @param options - The Tsup options to merge with the Powerlines configuration.\n * @returns The merged Tsup configuration options.\n */\nexport function withPlugin(options: Options): Options {\n  return {\n    ...options,\n    esbuildPlugins: [...(options.esbuildPlugins ?? []), esbuild()]\n  };\n}\n\nexport default withPlugin;\n"],"mappings":";;;;;;;;;AAiCA,MAAa,kBAAoC;CAC/C,GAAG;CACH,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,YAAY;CACZ,QAAQ;CACR,KAAK;CACL,OAAO;CACP,QAAQ;CACR,WAAW;CACX,WAAW;CACX,WAAW;CACX,QAAQ,CAAC;AACX;;;;;;;;AASA,SAAgB,aACd,SACA,aACO;CACP,OAAOA,eAAoB,SAAS,WAAW;AACjD;;;;;;;AAYA,SAAgB,eACd,SAC0C;CAC1C,MAAM,SAAS,KACb;EACE,OAAO,OAAO,YACZ,OAAO,QAAQ,aAAa,SAAS,QAAQ,KAAK,CAAC,CAAC,CAAC,KAClD,CAAC,KAAK,WAAW,CAAC,KAAK,WAAW,OAAO,QAAQ,OAAO,IAAI,CAAC,CAChE,CACF;EACA,iBAAiB,YAAgC;GAC/C,QAAQ,QAAQ;IACd,GAAG,QAAQ;IACX,GAAG,QAAQ,SAAS,QACjB,KAAK,OAAO;KACX,MAAM,OAAO,QAAQ,GAAG,MAAM;KAC9B,IAAI,MACF,IAAI,MAAM;KAGZ,OAAO;IACT,GACA,CAAC,CACH;IACA,GAAG,QAAQ;GACb;EACF;EACA,YAAY,QAAQ;CACtB,GACA;EACE,MAAM,QAAQ,OAAO;EACrB,MAAM,QAAQ,OAAO;EACrB,aAAa,QAAQ,OAAO;EAC5B,QAAQ,QAAQ,OAAO,OAAO,OACzB,QAAQ,OAAO,OAAO,KAAK,SAC5B;EACJ,mBAAmB,QAAQ,OAAO,QAAQ;EAC1C,YAAY,aACV,WAAW,QAAQ,OAAO,MAAM,QAAQ,OAAO,GAAG,GAClD,QAAQ,OAAO,OAAO,IACxB;EACA,UAAU,QAAQ,SAAS;EAC3B,KAAK,EACH,iBAAiB,QAAQ,SAAS,aAAa,gBACjD;EACA,QAAQ,QAAQ,OAAO,OAAO;EAC9B,MAAM,QAAQ,OAAO;EACrB,QAAQ,QAAQ,OAAO,OAAO;EAC9B,UAAU,QAAQ,OAAO,SAAS;EAClC,WAAW,QAAQ,OAAO,OAAO;EACjC,QACE,QAAQ,OAAO,SAAS,YAAY,YACpC,QAAQ,OAAO,SAAS;EAC1B,SACE,QAAQ,OAAO,SAAS,YAAY,WACpC,QAAQ,OAAO,SAAS;EAC1B,iBAAiB,EAAE,eAAe,QAAQ,OAAO,IAAI;CACvD,GACA,eACF;CAEA,OAAO,SAAS,UAAU,QAAQ,OAAO,MAAM,CAAC;CAChD,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,WAAW,SAA2B;CACpD,OAAO;EACL,GAAG;EACH,gBAAgB,CAAC,GAAI,QAAQ,kBAAkB,CAAC,GAAIC,OAAQ,CAAC;CAC/D;AACF"}