@w5s/tsdown-config 1.0.0-alpha.12 → 1.0.0-alpha.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/defaultConfig.ts","../src/defineConfig.ts","../src/defineConfigWith.ts"],"mappings":";;;cAEa,aAAA,EAAe,YAc3B;;;;;AAdD;;;;iBCSgB,YAAA,CAAa,WAAA,EAAa,UAAA,GAAa,UAAU;AAAA,iBACjD,YAAA,CAAa,WAAA,EAAa,YAAA,GAAe,YAAY;;;;;ADVrE;;;;AAcC;;;;ACLD;;;;iBCYgB,gBAAA,CAAiB,UAAA,EAAY,UAAA;EAAA,CAC1C,WAAA,EAAa,UAAA,GAAa,UAAA;EAAA,CAC1B,WAAA,EAAa,YAAA,GAAe,YAAA;AAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/defaultConfig.ts","../src/defineConfig.ts","../src/defineConfigWith.ts"],"mappings":";;;cAEa,aAAA,EAAe,YAc3B;;;;;AAdD;;;;iBCWgB,YAAA,CAAa,WAAA,EAAa,UAAA,GAAa,UAAU;AAAA,iBACjD,YAAA,CAAa,WAAA,EAAa,YAAA,GAAe,YAAY;;;;;ADZrE;;;;AAcC;;;;ACHD;;;;iBCQgB,gBAAA,CAAiB,UAAA,EAAY,UAAA;EAAA,CAC1C,WAAA,EAAa,UAAA,GAAa,UAAA;EAAA,CAC1B,WAAA,EAAa,YAAA,GAAe,YAAA;AAAA"}
package/dist/index.js CHANGED
@@ -3,27 +3,22 @@ import { readFileSync } from "node:fs";
3
3
  import path from "node:path";
4
4
  //#region src/defaultConfig.ts
5
5
  const defaultConfig = {
6
+ dts: true,
6
7
  entry: [
7
8
  "src/index.ts",
8
9
  "!src/**/*.test.*",
9
10
  "!src/**/*.spec.*",
10
11
  "!**/__mocks__/**"
11
12
  ],
12
- sourcemap: true,
13
13
  format: ["esm"],
14
- dts: true,
15
- tsconfig: "tsconfig.build.json",
16
14
  outExtensions({ format }) {
17
15
  return { js: format === "es" ? ".js" : ".cjs" };
18
- }
16
+ },
17
+ sourcemap: true,
18
+ tsconfig: "tsconfig.build.json"
19
19
  };
20
20
  //#endregion
21
21
  //#region src/withPackageDefine.ts
22
- function toInt(value) {
23
- if (value == null) return void 0;
24
- const parsed = Number.parseInt(value);
25
- return Number.isNaN(parsed) ? void 0 : parsed;
26
- }
27
22
  function withPackageDefine(config) {
28
23
  let packageJSON = void 0;
29
24
  const cwd = config.cwd ?? process.cwd();
@@ -43,13 +38,18 @@ function withPackageDefine(config) {
43
38
  ...config,
44
39
  cwd,
45
40
  define: {
41
+ __PACKAGE_BUILD_NUMBER__: jsonSafeStringify(toInt(process.env["npm_package_build_number"]) ?? toInt(process.env["BUILD_NUMBER"]) ?? toInt(process.env["CI_BUILD_NUMBER"]) ?? Date.now()),
46
42
  __PACKAGE_NAME__: jsonSafeStringify(process.env["npm_package_name"] ?? getPackageJSON().name ?? ""),
47
43
  __PACKAGE_VERSION__: jsonSafeStringify(process.env["npm_package_version"] ?? getPackageJSON().version ?? ""),
48
- __PACKAGE_BUILD_NUMBER__: jsonSafeStringify(toInt(process.env["npm_package_build_number"]) ?? toInt(process.env["BUILD_NUMBER"]) ?? toInt(process.env["CI_BUILD_NUMBER"]) ?? Date.now()),
49
44
  ...config.define
50
45
  }
51
46
  };
52
47
  }
48
+ function toInt(value) {
49
+ if (value == null) return void 0;
50
+ const parsed = Number.parseInt(value);
51
+ return Number.isNaN(parsed) ? void 0 : parsed;
52
+ }
53
53
  //#endregion
54
54
  //#region src/defineConfig.ts
55
55
  function defineConfig(optionsOrFn) {
@@ -57,9 +57,6 @@ function defineConfig(optionsOrFn) {
57
57
  }
58
58
  //#endregion
59
59
  //#region src/defineConfigWith.ts
60
- function mergeConfig(base, extension) {
61
- return TsDown.mergeConfig(base, extension);
62
- }
63
60
  /**
64
61
  * Returns a `defineConfig`-like function that uses a custom base config instead of the package default.
65
62
  * Use this when you have a shared base (e.g. a library preset) and want to reuse it across multiple packages.
@@ -78,6 +75,9 @@ function defineConfigWith(baseConfig) {
78
75
  const resolvedBaseConfig = mergeConfig(defaultConfig, baseConfig);
79
76
  return (optionsOrFn) => TsDown.defineConfig(typeof optionsOrFn === "function" ? (config, context) => withPackageDefine(optionsOrFn(resolvedBaseConfig, context)) : withPackageDefine(mergeConfig(resolvedBaseConfig, optionsOrFn)));
80
77
  }
78
+ function mergeConfig(base, extension) {
79
+ return TsDown.mergeConfig(base, extension);
80
+ }
81
81
  //#endregion
82
82
  export { defaultConfig, defineConfig, defineConfigWith };
83
83
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/defaultConfig.ts","../src/withPackageDefine.ts","../src/defineConfig.ts","../src/defineConfigWith.ts"],"sourcesContent":["import type { UserConfig } from 'tsdown';\n\nexport const defaultConfig: UserConfig = {\n entry: ['src/index.ts', '!src/**/*.test.*', '!src/**/*.spec.*', '!**/__mocks__/**'],\n sourcemap: true,\n format: ['esm'],\n dts: true,\n // clean: true,\n // treeshake: 'recommended',\n // splitting: false,\n tsconfig: 'tsconfig.build.json',\n outExtensions({ format }) {\n return {\n js: format === 'es' ? '.js' : '.cjs',\n };\n },\n};\n","import type * as TsDown from 'tsdown';\nimport { readFileSync } from 'node:fs';\nimport path from 'node:path';\n\ninterface PackageJSON {\n name?: string;\n version?: string;\n}\n\nfunction toInt(value: string | undefined): number | undefined {\n if (value == null) return undefined;\n const parsed = Number.parseInt(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\n\nexport function withPackageDefine<T extends TsDown.UserConfig | TsDown.InlineConfig>(config: T): T {\n let packageJSON: PackageJSON | undefined = undefined;\n const cwd = config.cwd ?? process.cwd();\n\n function getPackageJSON() {\n if (packageJSON) return packageJSON;\n try {\n packageJSON = JSON.parse(readFileSync(path.join(cwd, 'package.json'), 'utf8'));\n return packageJSON as unknown as PackageJSON;\n } catch {\n return {};\n }\n }\n\n // Ensure we do not stringify undefined values\n function jsonSafeStringify(value: string | number): string {\n return JSON.stringify(value);\n }\n\n return {\n ...config,\n cwd,\n define: {\n __PACKAGE_NAME__: jsonSafeStringify(process.env['npm_package_name'] ?? getPackageJSON().name ?? ''),\n __PACKAGE_VERSION__: jsonSafeStringify(process.env['npm_package_version'] ?? getPackageJSON().version ?? ''),\n __PACKAGE_BUILD_NUMBER__: jsonSafeStringify(\n toInt(process.env['npm_package_build_number']) ??\n toInt(process.env['BUILD_NUMBER']) ??\n toInt(process.env['CI_BUILD_NUMBER']) ??\n Date.now(),\n ),\n ...config.define,\n },\n };\n}\n","import * as TsDown from 'tsdown';\nimport type { UserConfig, UserConfigFn } from './types.js';\nimport { defaultConfig } from './defaultConfig.js';\nimport { withPackageDefine } from './withPackageDefine.js';\n\n/**\n * Define a tsdown configuration with the package default (entry, format, dts, package defines, etc.).\n * Accepts either a config object or a function `(config, context) => config`.\n *\n * @param optionsOrFn\n */\nexport function defineConfig(optionsOrFn: UserConfig): UserConfig;\nexport function defineConfig(optionsOrFn: UserConfigFn): UserConfigFn;\nexport function defineConfig(optionsOrFn: UserConfig | UserConfigFn): UserConfig | UserConfigFn {\n // @ts-ignore tsdown's overloads do not narrow cleanly after wrapping function configs.\n return TsDown.defineConfig(\n typeof optionsOrFn === 'function'\n ? (config, context) => optionsOrFn(withPackageDefine(TsDown.mergeConfig(defaultConfig, config)), context)\n : withPackageDefine(TsDown.mergeConfig(defaultConfig, optionsOrFn)),\n );\n}\n","import * as TsDown from 'tsdown';\nimport type { UserConfig, UserConfigFn } from './types.js';\nimport { defaultConfig } from './defaultConfig.js';\nimport { withPackageDefine } from './withPackageDefine.js';\n\nfunction mergeConfig(base: UserConfig, extension: UserConfig): UserConfig {\n return TsDown.mergeConfig(base, extension);\n}\n\n/**\n * Returns a `defineConfig`-like function that uses a custom base config instead of the package default.\n * Use this when you have a shared base (e.g. a library preset) and want to reuse it across multiple packages.\n *\n * @example\n * ```ts\n * // Helper for shared library preset\n * export const defineConfig = defineConfigWith({ format: ['esm', 'cjs'] });\n *\n * // in tsdown.config.ts\n * export default defineConfig({ entry: ['src/index.ts'] });\n * ```\n * @param baseConfig The base configuration to merge with the package default.\n */\nexport function defineConfigWith(baseConfig: UserConfig): {\n (optionsOrFn: UserConfig): UserConfig;\n (optionsOrFn: UserConfigFn): UserConfigFn;\n} {\n const resolvedBaseConfig = mergeConfig(defaultConfig, baseConfig);\n // @ts-ignore tsdown's overloads do not narrow cleanly after wrapping function configs.\n return (optionsOrFn) =>\n TsDown.defineConfig(\n typeof optionsOrFn === 'function'\n ? (config, context) =>\n withPackageDefine(optionsOrFn(resolvedBaseConfig, context) as UserConfig)\n : withPackageDefine(mergeConfig(resolvedBaseConfig, optionsOrFn)),\n ) as UserConfig | UserConfigFn;\n}\n"],"mappings":";;;;AAEA,MAAa,gBAA4B;CACvC,OAAO;EAAC;EAAgB;EAAoB;EAAoB;CAAkB;CAClF,WAAW;CACX,QAAQ,CAAC,KAAK;CACd,KAAK;CAIL,UAAU;CACV,cAAc,EAAE,UAAU;EACxB,OAAO,EACL,IAAI,WAAW,OAAO,QAAQ,OAChC;CACF;AACF;;;ACPA,SAAS,MAAM,OAA+C;CAC5D,IAAI,SAAS,MAAM,OAAO,KAAA;CAC1B,MAAM,SAAS,OAAO,SAAS,KAAK;CACpC,OAAO,OAAO,MAAM,MAAM,IAAI,KAAA,IAAY;AAC5C;AAEA,SAAgB,kBAAqE,QAAc;CACjG,IAAI,cAAuC,KAAA;CAC3C,MAAM,MAAM,OAAO,OAAO,QAAQ,IAAI;CAEtC,SAAS,iBAAiB;EACxB,IAAI,aAAa,OAAO;EACxB,IAAI;GACF,cAAc,KAAK,MAAM,aAAa,KAAK,KAAK,KAAK,cAAc,GAAG,MAAM,CAAC;GAC7E,OAAO;EACT,QAAQ;GACN,OAAO,CAAC;EACV;CACF;CAGA,SAAS,kBAAkB,OAAgC;EACzD,OAAO,KAAK,UAAU,KAAK;CAC7B;CAEA,OAAO;EACL,GAAG;EACH;EACA,QAAQ;GACN,kBAAkB,kBAAkB,QAAQ,IAAI,uBAAuB,eAAe,CAAC,CAAC,QAAQ,EAAE;GAClG,qBAAqB,kBAAkB,QAAQ,IAAI,0BAA0B,eAAe,CAAC,CAAC,WAAW,EAAE;GAC3G,0BAA0B,kBACxB,MAAM,QAAQ,IAAI,2BAA2B,KAC7C,MAAM,QAAQ,IAAI,eAAe,KACjC,MAAM,QAAQ,IAAI,kBAAkB,KACpC,KAAK,IAAI,CACX;GACA,GAAG,OAAO;EACZ;CACF;AACF;;;ACpCA,SAAgB,aAAa,aAAmE;CAE9F,OAAO,OAAO,aACZ,OAAO,gBAAgB,cAClB,QAAQ,YAAY,YAAY,kBAAkB,OAAO,YAAY,eAAe,MAAM,CAAC,GAAG,OAAO,IACtG,kBAAkB,OAAO,YAAY,eAAe,WAAW,CAAC,CACtE;AACF;;;ACfA,SAAS,YAAY,MAAkB,WAAmC;CACxE,OAAO,OAAO,YAAY,MAAM,SAAS;AAC3C;;;;;;;;;;;;;;;AAgBA,SAAgB,iBAAiB,YAG/B;CACA,MAAM,qBAAqB,YAAY,eAAe,UAAU;CAEhE,QAAQ,gBACN,OAAO,aACL,OAAO,gBAAgB,cAClB,QAAQ,YACP,kBAAkB,YAAY,oBAAoB,OAAO,CAAe,IAC1E,kBAAkB,YAAY,oBAAoB,WAAW,CAAC,CACpE;AACJ"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/defaultConfig.ts","../src/withPackageDefine.ts","../src/defineConfig.ts","../src/defineConfigWith.ts"],"sourcesContent":["import type { UserConfig } from 'tsdown';\n\nexport const defaultConfig: UserConfig = {\n dts: true,\n entry: ['src/index.ts', '!src/**/*.test.*', '!src/**/*.spec.*', '!**/__mocks__/**'],\n format: ['esm'],\n outExtensions({ format }) {\n return {\n js: format === 'es' ? '.js' : '.cjs',\n };\n },\n sourcemap: true,\n // clean: true,\n // treeshake: 'recommended',\n // splitting: false,\n tsconfig: 'tsconfig.build.json',\n};\n","import type * as TsDown from 'tsdown';\n\nimport { readFileSync } from 'node:fs';\nimport path from 'node:path';\n\ninterface PackageJSON {\n name?: string;\n version?: string;\n}\n\nexport function withPackageDefine<T extends TsDown.InlineConfig | TsDown.UserConfig>(config: T): T {\n let packageJSON: PackageJSON | undefined = undefined;\n const cwd = config.cwd ?? process.cwd();\n\n function getPackageJSON() {\n if (packageJSON) return packageJSON;\n try {\n packageJSON = JSON.parse(readFileSync(path.join(cwd, 'package.json'), 'utf8'));\n return packageJSON as unknown as PackageJSON;\n } catch {\n return {};\n }\n }\n\n // Ensure we do not stringify undefined values\n function jsonSafeStringify(value: number | string): string {\n return JSON.stringify(value);\n }\n\n return {\n ...config,\n cwd,\n define: {\n __PACKAGE_BUILD_NUMBER__: jsonSafeStringify(\n toInt(process.env['npm_package_build_number']) ??\n toInt(process.env['BUILD_NUMBER']) ??\n toInt(process.env['CI_BUILD_NUMBER']) ??\n Date.now(),\n ),\n __PACKAGE_NAME__: jsonSafeStringify(process.env['npm_package_name'] ?? getPackageJSON().name ?? ''),\n __PACKAGE_VERSION__: jsonSafeStringify(process.env['npm_package_version'] ?? getPackageJSON().version ?? ''),\n ...config.define,\n },\n };\n}\n\nfunction toInt(value: string | undefined): number | undefined {\n if (value == null) return undefined;\n const parsed = Number.parseInt(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\n","import * as TsDown from 'tsdown';\n\nimport type { UserConfig, UserConfigFn } from './types.js';\n\nimport { defaultConfig } from './defaultConfig.js';\nimport { withPackageDefine } from './withPackageDefine.js';\n\n/**\n * Define a tsdown configuration with the package default (entry, format, dts, package defines, etc.).\n * Accepts either a config object or a function `(config, context) => config`.\n *\n * @param optionsOrFn\n */\nexport function defineConfig(optionsOrFn: UserConfig): UserConfig;\nexport function defineConfig(optionsOrFn: UserConfigFn): UserConfigFn;\nexport function defineConfig(optionsOrFn: UserConfig | UserConfigFn): UserConfig | UserConfigFn {\n // @ts-ignore tsdown's overloads do not narrow cleanly after wrapping function configs.\n return TsDown.defineConfig(\n typeof optionsOrFn === 'function'\n ? (config, context) => optionsOrFn(withPackageDefine(TsDown.mergeConfig(defaultConfig, config)), context)\n : withPackageDefine(TsDown.mergeConfig(defaultConfig, optionsOrFn)),\n );\n}\n","import * as TsDown from 'tsdown';\n\nimport type { UserConfig, UserConfigFn } from './types.js';\n\nimport { defaultConfig } from './defaultConfig.js';\nimport { withPackageDefine } from './withPackageDefine.js';\n\n/**\n * Returns a `defineConfig`-like function that uses a custom base config instead of the package default.\n * Use this when you have a shared base (e.g. a library preset) and want to reuse it across multiple packages.\n *\n * @example\n * ```ts\n * // Helper for shared library preset\n * export const defineConfig = defineConfigWith({ format: ['esm', 'cjs'] });\n *\n * // in tsdown.config.ts\n * export default defineConfig({ entry: ['src/index.ts'] });\n * ```\n * @param baseConfig The base configuration to merge with the package default.\n */\nexport function defineConfigWith(baseConfig: UserConfig): {\n (optionsOrFn: UserConfig): UserConfig;\n (optionsOrFn: UserConfigFn): UserConfigFn;\n} {\n const resolvedBaseConfig = mergeConfig(defaultConfig, baseConfig);\n // @ts-ignore tsdown's overloads do not narrow cleanly after wrapping function configs.\n return (optionsOrFn) =>\n TsDown.defineConfig(\n typeof optionsOrFn === 'function'\n ? (config, context) =>\n withPackageDefine(optionsOrFn(resolvedBaseConfig, context) as UserConfig)\n : withPackageDefine(mergeConfig(resolvedBaseConfig, optionsOrFn)),\n ) as UserConfig | UserConfigFn;\n}\n\nfunction mergeConfig(base: UserConfig, extension: UserConfig): UserConfig {\n return TsDown.mergeConfig(base, extension);\n}\n"],"mappings":";;;;AAEA,MAAa,gBAA4B;CACvC,KAAK;CACL,OAAO;EAAC;EAAgB;EAAoB;EAAoB;CAAkB;CAClF,QAAQ,CAAC,KAAK;CACd,cAAc,EAAE,UAAU;EACxB,OAAO,EACL,IAAI,WAAW,OAAO,QAAQ,OAChC;CACF;CACA,WAAW;CAIX,UAAU;AACZ;;;ACNA,SAAgB,kBAAqE,QAAc;CACjG,IAAI,cAAuC,KAAA;CAC3C,MAAM,MAAM,OAAO,OAAO,QAAQ,IAAI;CAEtC,SAAS,iBAAiB;EACxB,IAAI,aAAa,OAAO;EACxB,IAAI;GACF,cAAc,KAAK,MAAM,aAAa,KAAK,KAAK,KAAK,cAAc,GAAG,MAAM,CAAC;GAC7E,OAAO;EACT,QAAQ;GACN,OAAO,CAAC;EACV;CACF;CAGA,SAAS,kBAAkB,OAAgC;EACzD,OAAO,KAAK,UAAU,KAAK;CAC7B;CAEA,OAAO;EACL,GAAG;EACH;EACA,QAAQ;GACN,0BAA0B,kBACxB,MAAM,QAAQ,IAAI,2BAA2B,KAC7C,MAAM,QAAQ,IAAI,eAAe,KACjC,MAAM,QAAQ,IAAI,kBAAkB,KACpC,KAAK,IAAI,CACX;GACA,kBAAkB,kBAAkB,QAAQ,IAAI,uBAAuB,eAAe,CAAC,CAAC,QAAQ,EAAE;GAClG,qBAAqB,kBAAkB,QAAQ,IAAI,0BAA0B,eAAe,CAAC,CAAC,WAAW,EAAE;GAC3G,GAAG,OAAO;EACZ;CACF;AACF;AAEA,SAAS,MAAM,OAA+C;CAC5D,IAAI,SAAS,MAAM,OAAO,KAAA;CAC1B,MAAM,SAAS,OAAO,SAAS,KAAK;CACpC,OAAO,OAAO,MAAM,MAAM,IAAI,KAAA,IAAY;AAC5C;;;ACnCA,SAAgB,aAAa,aAAmE;CAE9F,OAAO,OAAO,aACZ,OAAO,gBAAgB,cAClB,QAAQ,YAAY,YAAY,kBAAkB,OAAO,YAAY,eAAe,MAAM,CAAC,GAAG,OAAO,IACtG,kBAAkB,OAAO,YAAY,eAAe,WAAW,CAAC,CACtE;AACF;;;;;;;;;;;;;;;;;ACDA,SAAgB,iBAAiB,YAG/B;CACA,MAAM,qBAAqB,YAAY,eAAe,UAAU;CAEhE,QAAQ,gBACN,OAAO,aACL,OAAO,gBAAgB,cAClB,QAAQ,YACP,kBAAkB,YAAY,oBAAoB,OAAO,CAAe,IAC1E,kBAAkB,YAAY,oBAAoB,WAAW,CAAC,CACpE;AACJ;AAEA,SAAS,YAAY,MAAkB,WAAmC;CACxE,OAAO,OAAO,YAAY,MAAM,SAAS;AAC3C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@w5s/tsdown-config",
3
- "version": "1.0.0-alpha.12",
3
+ "version": "1.0.0-alpha.14",
4
4
  "description": "Shared tsdown configuration",
5
5
  "keywords": [
6
6
  "typescript",
@@ -51,5 +51,5 @@
51
51
  "access": "public"
52
52
  },
53
53
  "sideEffect": false,
54
- "gitHead": "fcde4af12d29afdb46ed396ef832c36a399ed057"
54
+ "gitHead": "456aac7a7b05abae48365ae944a31c494ed078cf"
55
55
  }
@@ -1,17 +1,17 @@
1
1
  import type { UserConfig } from 'tsdown';
2
2
 
3
3
  export const defaultConfig: UserConfig = {
4
+ dts: true,
4
5
  entry: ['src/index.ts', '!src/**/*.test.*', '!src/**/*.spec.*', '!**/__mocks__/**'],
5
- sourcemap: true,
6
6
  format: ['esm'],
7
- dts: true,
8
- // clean: true,
9
- // treeshake: 'recommended',
10
- // splitting: false,
11
- tsconfig: 'tsconfig.build.json',
12
7
  outExtensions({ format }) {
13
8
  return {
14
9
  js: format === 'es' ? '.js' : '.cjs',
15
10
  };
16
11
  },
12
+ sourcemap: true,
13
+ // clean: true,
14
+ // treeshake: 'recommended',
15
+ // splitting: false,
16
+ tsconfig: 'tsconfig.build.json',
17
17
  };
@@ -1,5 +1,7 @@
1
1
  import * as TsDown from 'tsdown';
2
+
2
3
  import type { UserConfig, UserConfigFn } from './types.js';
4
+
3
5
  import { defaultConfig } from './defaultConfig.js';
4
6
  import { withPackageDefine } from './withPackageDefine.js';
5
7
 
@@ -1,12 +1,10 @@
1
1
  import * as TsDown from 'tsdown';
2
+
2
3
  import type { UserConfig, UserConfigFn } from './types.js';
4
+
3
5
  import { defaultConfig } from './defaultConfig.js';
4
6
  import { withPackageDefine } from './withPackageDefine.js';
5
7
 
6
- function mergeConfig(base: UserConfig, extension: UserConfig): UserConfig {
7
- return TsDown.mergeConfig(base, extension);
8
- }
9
-
10
8
  /**
11
9
  * Returns a `defineConfig`-like function that uses a custom base config instead of the package default.
12
10
  * Use this when you have a shared base (e.g. a library preset) and want to reuse it across multiple packages.
@@ -35,3 +33,7 @@ export function defineConfigWith(baseConfig: UserConfig): {
35
33
  : withPackageDefine(mergeConfig(resolvedBaseConfig, optionsOrFn)),
36
34
  ) as UserConfig | UserConfigFn;
37
35
  }
36
+
37
+ function mergeConfig(base: UserConfig, extension: UserConfig): UserConfig {
38
+ return TsDown.mergeConfig(base, extension);
39
+ }
@@ -1,4 +1,5 @@
1
1
  import type * as TsDown from 'tsdown';
2
+
2
3
  import { readFileSync } from 'node:fs';
3
4
  import path from 'node:path';
4
5
 
@@ -7,13 +8,7 @@ interface PackageJSON {
7
8
  version?: string;
8
9
  }
9
10
 
10
- function toInt(value: string | undefined): number | undefined {
11
- if (value == null) return undefined;
12
- const parsed = Number.parseInt(value);
13
- return Number.isNaN(parsed) ? undefined : parsed;
14
- }
15
-
16
- export function withPackageDefine<T extends TsDown.UserConfig | TsDown.InlineConfig>(config: T): T {
11
+ export function withPackageDefine<T extends TsDown.InlineConfig | TsDown.UserConfig>(config: T): T {
17
12
  let packageJSON: PackageJSON | undefined = undefined;
18
13
  const cwd = config.cwd ?? process.cwd();
19
14
 
@@ -28,7 +23,7 @@ export function withPackageDefine<T extends TsDown.UserConfig | TsDown.InlineCon
28
23
  }
29
24
 
30
25
  // Ensure we do not stringify undefined values
31
- function jsonSafeStringify(value: string | number): string {
26
+ function jsonSafeStringify(value: number | string): string {
32
27
  return JSON.stringify(value);
33
28
  }
34
29
 
@@ -36,15 +31,21 @@ export function withPackageDefine<T extends TsDown.UserConfig | TsDown.InlineCon
36
31
  ...config,
37
32
  cwd,
38
33
  define: {
39
- __PACKAGE_NAME__: jsonSafeStringify(process.env['npm_package_name'] ?? getPackageJSON().name ?? ''),
40
- __PACKAGE_VERSION__: jsonSafeStringify(process.env['npm_package_version'] ?? getPackageJSON().version ?? ''),
41
34
  __PACKAGE_BUILD_NUMBER__: jsonSafeStringify(
42
35
  toInt(process.env['npm_package_build_number']) ??
43
36
  toInt(process.env['BUILD_NUMBER']) ??
44
37
  toInt(process.env['CI_BUILD_NUMBER']) ??
45
38
  Date.now(),
46
39
  ),
40
+ __PACKAGE_NAME__: jsonSafeStringify(process.env['npm_package_name'] ?? getPackageJSON().name ?? ''),
41
+ __PACKAGE_VERSION__: jsonSafeStringify(process.env['npm_package_version'] ?? getPackageJSON().version ?? ''),
47
42
  ...config.define,
48
43
  },
49
44
  };
50
45
  }
46
+
47
+ function toInt(value: string | undefined): number | undefined {
48
+ if (value == null) return undefined;
49
+ const parsed = Number.parseInt(value);
50
+ return Number.isNaN(parsed) ? undefined : parsed;
51
+ }